@liforma/client 0.2.1 → 0.3.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/CHANGELOG.md +14 -0
  2. package/README.md +28 -1
  3. package/dist/next/index.js +2086 -1429
  4. package/dist/next/index.js.map +1 -1
  5. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  6. package/dist/next/thumbnail/index.d.ts +2 -1
  7. package/dist/next/thumbnail/index.d.ts.map +1 -1
  8. package/dist/next/thumbnail/lazyLoad.d.ts +2 -0
  9. package/dist/next/thumbnail/lazyLoad.d.ts.map +1 -1
  10. package/dist/next/thumbnail/lazyLoad.test.d.ts +2 -0
  11. package/dist/next/thumbnail/lazyLoad.test.d.ts.map +1 -0
  12. package/dist/next/thumbnail/scrollParallax.d.ts +6 -1
  13. package/dist/next/thumbnail/scrollParallax.d.ts.map +1 -1
  14. package/dist/next/thumbnail/styles.d.ts.map +1 -1
  15. package/dist/next/thumbnail/thumbLoadScheduler.d.ts +14 -0
  16. package/dist/next/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  17. package/dist/next/v2/embed/iframeHost.d.ts +33 -2
  18. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  19. package/dist/next/v2/embed/playerReachability.d.ts +1 -1
  20. package/dist/next/v2/embed/playerReachability.d.ts.map +1 -1
  21. package/dist/next/v2/embed/protocol.d.ts +53 -0
  22. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  23. package/dist/next/v2/experience.d.ts +7 -3
  24. package/dist/next/v2/experience.d.ts.map +1 -1
  25. package/dist/next/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  26. package/dist/next/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  27. package/dist/next/v2/speech/index.d.ts +4 -0
  28. package/dist/next/v2/speech/index.d.ts.map +1 -0
  29. package/dist/next/v2/speech/speechController.d.ts +16 -0
  30. package/dist/next/v2/speech/speechController.d.ts.map +1 -0
  31. package/dist/next/v2/speech/types.d.ts +176 -0
  32. package/dist/next/v2/speech/types.d.ts.map +1 -0
  33. package/dist/next/v2/types/sessionInteraction.d.ts +6 -3
  34. package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -1
  35. package/dist/npm/index.js +1835 -1178
  36. package/dist/npm/index.js.map +1 -1
  37. package/dist/npm/thumbnail/index.d.ts +2 -1
  38. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  39. package/dist/npm/thumbnail/lazyLoad.d.ts +2 -0
  40. package/dist/npm/thumbnail/lazyLoad.d.ts.map +1 -1
  41. package/dist/npm/thumbnail/scrollParallax.d.ts +6 -1
  42. package/dist/npm/thumbnail/scrollParallax.d.ts.map +1 -1
  43. package/dist/npm/thumbnail/styles.d.ts.map +1 -1
  44. package/dist/npm/thumbnail/thumbLoadScheduler.d.ts +14 -0
  45. package/dist/npm/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  46. package/dist/npm/v2/embed/iframeHost.d.ts +33 -2
  47. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  48. package/dist/npm/v2/embed/playerReachability.d.ts +1 -1
  49. package/dist/npm/v2/embed/playerReachability.d.ts.map +1 -1
  50. package/dist/npm/v2/embed/protocol.d.ts +53 -0
  51. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  52. package/dist/npm/v2/experience.d.ts +7 -3
  53. package/dist/npm/v2/experience.d.ts.map +1 -1
  54. package/dist/npm/v2/index.d.ts +4 -1
  55. package/dist/npm/v2/index.d.ts.map +1 -1
  56. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  57. package/dist/npm/v2/npm.d.ts +4 -2
  58. package/dist/npm/v2/npm.d.ts.map +1 -1
  59. package/dist/npm/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  60. package/dist/npm/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  61. package/dist/npm/v2/speech/index.d.ts +4 -0
  62. package/dist/npm/v2/speech/index.d.ts.map +1 -0
  63. package/dist/npm/v2/speech/speechController.d.ts +16 -0
  64. package/dist/npm/v2/speech/speechController.d.ts.map +1 -0
  65. package/dist/npm/v2/speech/types.d.ts +176 -0
  66. package/dist/npm/v2/speech/types.d.ts.map +1 -0
  67. package/dist/npm/v2/types/sessionInteraction.d.ts +6 -3
  68. package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -1
  69. package/dist/react/component/experienceComponentTypes.d.ts +2 -2
  70. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  71. package/dist/react/index.js +2127 -1461
  72. package/dist/react/index.js.map +1 -1
  73. package/dist/react/react/Experience.d.ts.map +1 -1
  74. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  75. package/dist/react/thumbnail/index.d.ts +2 -1
  76. package/dist/react/thumbnail/index.d.ts.map +1 -1
  77. package/dist/react/thumbnail/lazyLoad.d.ts +2 -0
  78. package/dist/react/thumbnail/lazyLoad.d.ts.map +1 -1
  79. package/dist/react/thumbnail/lazyLoad.test.d.ts +2 -0
  80. package/dist/react/thumbnail/lazyLoad.test.d.ts.map +1 -0
  81. package/dist/react/thumbnail/scrollParallax.d.ts +6 -1
  82. package/dist/react/thumbnail/scrollParallax.d.ts.map +1 -1
  83. package/dist/react/thumbnail/styles.d.ts.map +1 -1
  84. package/dist/react/thumbnail/thumbLoadScheduler.d.ts +14 -0
  85. package/dist/react/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  86. package/dist/react/v2/embed/iframeHost.d.ts +33 -2
  87. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  88. package/dist/react/v2/embed/playerReachability.d.ts +1 -1
  89. package/dist/react/v2/embed/playerReachability.d.ts.map +1 -1
  90. package/dist/react/v2/embed/protocol.d.ts +53 -0
  91. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  92. package/dist/react/v2/experience.d.ts +7 -3
  93. package/dist/react/v2/experience.d.ts.map +1 -1
  94. package/dist/react/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  95. package/dist/react/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  96. package/dist/react/v2/speech/index.d.ts +4 -0
  97. package/dist/react/v2/speech/index.d.ts.map +1 -0
  98. package/dist/react/v2/speech/speechController.d.ts +16 -0
  99. package/dist/react/v2/speech/speechController.d.ts.map +1 -0
  100. package/dist/react/v2/speech/types.d.ts +176 -0
  101. package/dist/react/v2/speech/types.d.ts.map +1 -0
  102. package/dist/react/v2/types/sessionInteraction.d.ts +6 -3
  103. package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -1
  104. package/dist/react/v2/types/sessionManifestSchema.d.ts +1 -1
  105. package/dist/sdk/v2/client.js +14 -10
  106. package/dist/sdk/v2/client.js.map +1 -1
  107. package/dist/svelte/Experience.svelte +18 -5
  108. package/dist/svelte/Experience.svelte.d.ts +7 -2
  109. package/dist/svelte/ExperienceThumbnail.svelte +3 -6
  110. package/package.json +4 -2
@@ -12,8 +12,6 @@
12
12
  type ExperienceSession,
13
13
  type ListenOnceOptions,
14
14
  type SessionManifest,
15
- type SpeakOptions,
16
- type SpeechResult,
17
15
  type StartSessionOptions,
18
16
  type UtteranceResult
19
17
  } from '@liforma/client';
@@ -408,9 +406,24 @@
408
406
  return requireGeneration().started.promise;
409
407
  }
410
408
 
411
- export function speak(options: SpeakOptions): Promise<SpeechResult> {
412
- return withSession((session) => session.speak(options));
413
- }
409
+ /** Public speech API (`speak` / `play` / `createUtterance` / `interrupt`). */
410
+ export const speech = {
411
+ speak: (options: Parameters<ExperienceSession['speech']['speak']>[0]) =>
412
+ withSession((session) => session.speech.speak(options)),
413
+ play: (options: Parameters<ExperienceSession['speech']['play']>[0]) =>
414
+ withSession((session) => session.speech.play(options)),
415
+ createUtterance: (options: Parameters<ExperienceSession['speech']['createUtterance']>[0]) => {
416
+ const session = activeGeneration?.instance;
417
+ if (!session) {
418
+ throw new Error(
419
+ 'Session has not started. Wait for the player start button and the started event before using speech APIs.'
420
+ );
421
+ }
422
+ return session.speech.createUtterance(options);
423
+ },
424
+ interrupt: (options?: Parameters<ExperienceSession['speech']['interrupt']>[0]) =>
425
+ withSession((session) => session.speech.interrupt(options))
426
+ };
414
427
 
415
428
  export function startListening(): Promise<void> {
416
429
  return withSession((session) => session.startListening());
@@ -1,9 +1,14 @@
1
- import { type ExperienceEvents, type ExperienceSession, type ListenOnceOptions, type SessionManifest, type SpeakOptions, type SpeechResult, type UtteranceResult } from '@liforma/client';
1
+ import { type ExperienceEvents, type ExperienceSession, type ListenOnceOptions, type SessionManifest, type UtteranceResult } from '@liforma/client';
2
2
  import type { ExperienceProps } from './types';
3
3
  declare const Experience: import("svelte").Component<ExperienceProps, {
4
4
  ready: () => Promise<ExperienceEvents["ready"]>;
5
5
  started: () => Promise<ExperienceEvents["started"]>;
6
- speak: (options: SpeakOptions) => Promise<SpeechResult>;
6
+ /** Public speech API (`speak` / `play` / `createUtterance` / `interrupt`). */ speech: {
7
+ speak: (options: Parameters<ExperienceSession["speech"]["speak"]>[0]) => Promise<import("@liforma/client").SpeechResult>;
8
+ play: (options: Parameters<ExperienceSession["speech"]["play"]>[0]) => Promise<import("@liforma/client").SpeechResult>;
9
+ createUtterance: (options: Parameters<ExperienceSession["speech"]["createUtterance"]>[0]) => import("@liforma/client").SpeechUtterance;
10
+ interrupt: (options?: Parameters<ExperienceSession["speech"]["interrupt"]>[0]) => Promise<readonly import("@liforma/client").SpeechResult[]>;
11
+ };
7
12
  startListening: () => Promise<void>;
8
13
  stopListening: () => Promise<UtteranceResult>;
9
14
  listenOnce: (options?: ListenOnceOptions) => Promise<UtteranceResult>;
@@ -94,13 +94,10 @@
94
94
  : layers.avatarImage
95
95
  : ''
96
96
  );
97
- const sceneLayersReady = $derived(
98
- Boolean(layers) &&
99
- (!layers?.backgroundImage || backgroundReady) &&
100
- avatarReady &&
101
- (!layers?.foregroundImage || foregroundReady)
97
+ /** Fade placeholder as soon as any layer can paint — don't wait for the slowest plate. */
98
+ const revealThumb = $derived(
99
+ shouldLoad && (avatarReady || backgroundReady || foregroundReady)
102
100
  );
103
- const revealThumb = $derived(shouldLoad && sceneLayersReady);
104
101
 
105
102
  $effect(() => {
106
103
  if (lazy === false) shouldLoad = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liforma/client",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Liforma browser SDK — Experience sessions, speech API, and Svelte embed component.",
6
6
  "license": "MIT",
@@ -115,7 +115,9 @@
115
115
  "fetch:face-landmarker": "node scripts/fetch-face-landmarker.mjs",
116
116
  "fetch:anime-face-detector": "node scripts/fetch-anime-face-detector.mjs",
117
117
  "fetch:face-parsing": "node scripts/fetch-face-parsing.mjs",
118
- "fetch:models": "npm run fetch:depth-anything-v2 && npm run fetch:video-depth-anything && npm run fetch:depth-pro && npm run fetch:face-landmarker && npm run fetch:anime-face-detector && npm run fetch:face-parsing",
118
+ "fetch:wav2vec-phoneme-ctc": "node scripts/fetch-wav2vec-phoneme-ctc.mjs",
119
+ "fetch:supertonic-3": "node scripts/fetch-supertonic-3.mjs",
120
+ "fetch:models": "npm run fetch:depth-anything-v2 && npm run fetch:video-depth-anything && npm run fetch:depth-pro && npm run fetch:face-landmarker && npm run fetch:anime-face-detector && npm run fetch:face-parsing && npm run fetch:wav2vec-phoneme-ctc && npm run fetch:supertonic-3",
119
121
  "locations": "npm run catalogue:locations && npm run build:locations",
120
122
  "configure:cors": "node scripts/configure-r2-cors.mjs",
121
123
  "verify:cors": "node scripts/verify-cdn-cors.mjs",