@rtva/react-native 0.2.0-beta.1

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.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @rtva/react-native
2
+
3
+ React Native hook and lifecycle adapter for `@rtva/core`.
@@ -0,0 +1,3 @@
1
+ import type { LifecycleAdapter } from '@rtva/core';
2
+ export declare function createAppStateLifecycleAdapter(): LifecycleAdapter;
3
+ //# sourceMappingURL=app-state-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state-lifecycle.d.ts","sourceRoot":"","sources":["../src/app-state-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AAKvE,wBAAgB,8BAA8B,IAAI,gBAAgB,CA6BjE"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAppStateLifecycleAdapter = createAppStateLifecycleAdapter;
4
+ const react_native_1 = require("react-native");
5
+ function createAppStateLifecycleAdapter() {
6
+ let lastState = (react_native_1.AppState.currentState ?? 'active');
7
+ let subscription = null;
8
+ return {
9
+ start(callbacks) {
10
+ if (subscription)
11
+ return;
12
+ subscription = react_native_1.AppState.addEventListener('change', (nextState) => {
13
+ const previous = lastState;
14
+ lastState = nextState;
15
+ if (previous === 'active' && (nextState === 'background' || nextState === 'inactive')) {
16
+ callbacks.onBackground();
17
+ return;
18
+ }
19
+ if ((previous === 'background' || previous === 'inactive') && nextState === 'active') {
20
+ callbacks.onForeground();
21
+ }
22
+ });
23
+ },
24
+ stop() {
25
+ subscription?.remove();
26
+ subscription = null;
27
+ lastState = (react_native_1.AppState.currentState ?? 'active');
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=app-state-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-state-lifecycle.js","sourceRoot":"","sources":["../src/app-state-lifecycle.ts"],"names":[],"mappings":";;AAKA,wEA6BC;AAjCD,+CAAwC;AAIxC,SAAgB,8BAA8B;IAC5C,IAAI,SAAS,GAAG,CAAC,uBAAQ,CAAC,YAAY,IAAI,QAAQ,CAAmB,CAAC;IACtE,IAAI,YAAY,GAA8B,IAAI,CAAC;IAEnD,OAAO;QACL,KAAK,CAAC,SAA6B;YACjC,IAAI,YAAY;gBAAE,OAAO;YAEzB,YAAY,GAAG,uBAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,SAAyB,EAAE,EAAE;gBAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC;gBAC3B,SAAS,GAAG,SAAS,CAAC;gBAEtB,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC;oBACtF,SAAS,CAAC,YAAY,EAAE,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBACrF,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAuB,CAAC;QAC3B,CAAC;QAED,IAAI;YACF,YAAY,EAAE,MAAM,EAAE,CAAC;YACvB,YAAY,GAAG,IAAI,CAAC;YACpB,SAAS,GAAG,CAAC,uBAAQ,CAAC,YAAY,IAAI,QAAQ,CAAmB,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createAppStateLifecycleAdapter } from './app-state-lifecycle';
2
+ export { useRealtimeSession } from './use-realtime-session';
3
+ export type { UseRealtimeSessionReturn } from './use-realtime-session';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRealtimeSession = exports.createAppStateLifecycleAdapter = void 0;
4
+ var app_state_lifecycle_1 = require("./app-state-lifecycle");
5
+ Object.defineProperty(exports, "createAppStateLifecycleAdapter", { enumerable: true, get: function () { return app_state_lifecycle_1.createAppStateLifecycleAdapter; } });
6
+ var use_realtime_session_1 = require("./use-realtime-session");
7
+ Object.defineProperty(exports, "useRealtimeSession", { enumerable: true, get: function () { return use_realtime_session_1.useRealtimeSession; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAAuE;AAA9D,qIAAA,8BAA8B,OAAA;AACvC,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
@@ -0,0 +1,13 @@
1
+ import type { ConversationMessage, RealtimeSession, SessionState } from '@rtva/core';
2
+ export interface UseRealtimeSessionReturn {
3
+ state: SessionState;
4
+ messages: ConversationMessage[];
5
+ currentVolume: number;
6
+ start(): Promise<void>;
7
+ stop(): void;
8
+ sendText(text: string): void;
9
+ cancelResponse(): void;
10
+ toggleSession(): void;
11
+ }
12
+ export declare function useRealtimeSession(session: RealtimeSession): UseRealtimeSessionReturn;
13
+ //# sourceMappingURL=use-realtime-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-realtime-session.d.ts","sourceRoot":"","sources":["../src/use-realtime-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAiB,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpG,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,IAAI,IAAI,CAAC;IACvB,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,wBAAwB,CAiDrF"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRealtimeSession = useRealtimeSession;
4
+ const react_1 = require("react");
5
+ function useRealtimeSession(session) {
6
+ const [state, setState] = (0, react_1.useState)(session.getState());
7
+ const [messages, setMessages] = (0, react_1.useState)(session.getMessages());
8
+ const [currentVolume, setCurrentVolume] = (0, react_1.useState)(session.getCurrentVolume());
9
+ (0, react_1.useEffect)(() => {
10
+ setState(session.getState());
11
+ setMessages(session.getMessages());
12
+ setCurrentVolume(session.getCurrentVolume());
13
+ const unsubscribeState = session.on('state.changed', (event) => {
14
+ const typedEvent = event;
15
+ setState(typedEvent.state);
16
+ });
17
+ const unsubscribeConversation = session.on('conversation.updated', (event) => {
18
+ const typedEvent = event;
19
+ setMessages(typedEvent.messages);
20
+ });
21
+ const unsubscribeVolume = session.on('volume.changed', (event) => {
22
+ const typedEvent = event;
23
+ setCurrentVolume(typedEvent.level);
24
+ });
25
+ return () => {
26
+ unsubscribeState();
27
+ unsubscribeConversation();
28
+ unsubscribeVolume();
29
+ };
30
+ }, [session]);
31
+ return {
32
+ state,
33
+ messages,
34
+ currentVolume,
35
+ start: () => session.start(),
36
+ stop: () => session.stop(),
37
+ sendText: (text) => session.sendText(text),
38
+ cancelResponse: () => session.cancelResponse(),
39
+ toggleSession: () => {
40
+ if (state === 'connected') {
41
+ session.stop();
42
+ return;
43
+ }
44
+ if (state === 'idle' || state === 'stopped' || state === 'error') {
45
+ void session.start();
46
+ }
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=use-realtime-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-realtime-session.js","sourceRoot":"","sources":["../src/use-realtime-session.ts"],"names":[],"mappings":";;AAcA,gDAiDC;AA/DD,iCAA4C;AAc5C,SAAgB,kBAAkB,CAAC,OAAwB;IACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAe,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAwB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE/E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7B,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACnC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAE7C,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAoB,EAAE,EAAE;YAC5E,MAAM,UAAU,GAAG,KAA0D,CAAC;YAC9E,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,uBAAuB,GAAG,OAAO,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,KAAoB,EAAE,EAAE;YAC1F,MAAM,UAAU,GAAG,KAAiE,CAAC;YACrF,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAoB,EAAE,EAAE;YAC9E,MAAM,UAAU,GAAG,KAA2D,CAAC;YAC/E,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,gBAAgB,EAAE,CAAC;YACnB,uBAAuB,EAAE,CAAC;YAC1B,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO;QACL,KAAK;QACL,QAAQ;QACR,aAAa;QACb,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;QAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE;QAC1B,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE;QAC9C,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACjE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@rtva/react-native",
3
+ "version": "0.2.0-beta.1",
4
+ "description": "React Native adapter for RTVA sessions",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc -b",
21
+ "typecheck": "tsc -b --pretty false",
22
+ "test": "vitest run -c vitest.config.ts",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "@rtva/core": "0.2.0-beta.1"
30
+ },
31
+ "peerDependencies": {
32
+ "react": ">=18.0.0",
33
+ "react-native": ">=0.72.0"
34
+ },
35
+ "license": "MIT"
36
+ }