@adminide-stack/yantra-mobile 12.0.54-alpha.10 → 12.0.54-alpha.12
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/lib/components/NavigationHeader/NavigationHeader.js +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/compute.js +57 -7
- package/lib/compute.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +10 -0
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/apps/mobileAppCatalog.js +7 -0
- package/lib/features/apps/mobileAppCatalog.js.map +1 -1
- package/lib/features/travel/nativeTravelRegistry.js +15 -0
- package/lib/features/travel/nativeTravelRegistry.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/routes.json +58 -3
- package/lib/screens/CanvasBoard/index.js +6 -1
- package/lib/screens/CanvasBoard/index.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +23 -13
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/TravelNative/index.js +70 -0
- package/lib/screens/TravelNative/index.js.map +1 -0
- package/lib/screens/TravelNative/useTravelHostChat.js +66 -0
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -0
- package/lib/utils/drawerNavigation.js +7 -1
- package/lib/utils/drawerNavigation.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/screens/TravelNative/index.tsx"],"sourcesContent":["/**\n * Native Travel screen — host route for the federated travel storefront.\n *\n * Same delivery contract as Shop Native: the App registers the federated\n * component; this screen only reads the registry and hands over a token the\n * travel connectors accept plus the surface-index endpoint.\n */\nimport React, { useCallback, useMemo } from 'react';\nimport { StyleSheet, Text, View, useColorScheme } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { getNativeTravelExperience } from '../../features/travel/nativeTravelRegistry';\nimport { useCanvasSession } from '../../features/canvas/useCanvasSession';\nimport { useTravelHostChat } from './useTravelHostChat';\n\nexport default function TravelNativeScreen() {\n const isDark = useColorScheme() === 'dark';\n const navigation = useNavigation<any>();\n const route = useRoute<any>();\n const Experience = getNativeTravelExperience();\n const { token, indexUrl, error, ready } = useCanvasSession();\n const hostChat = useTravelHostChat();\n const seed = useMemo(() => {\n const query = typeof route.params?.initialAgentQuery === 'string' ? route.params.initialAgentQuery.trim() : '';\n const files = Array.isArray(route.params?.initialAgentAttachments)\n ? route.params.initialAgentAttachments\n : undefined;\n if (!query && !files?.length) return null;\n return { text: query, files };\n }, [route.params?.initialAgentQuery, route.params?.initialAgentAttachments]);\n\n const onAgentVisibleChange = useCallback(\n (open: boolean) => {\n if (!navigation.isFocused?.()) return;\n navigation.setParams({ hideNavigationHeader: open || undefined });\n },\n [navigation],\n );\n\n if (!Experience) {\n return (\n <SafeAreaView style={[styles.fill, isDark && styles.fillDark]}>\n <View style={styles.center}>\n <Text style={[styles.title, isDark && styles.textLight]}>Native travel unavailable</Text>\n <Text style={[styles.detail, isDark && styles.textMuted]}>\n This build does not carry the federation host runtime.\n </Text>\n </View>\n </SafeAreaView>\n );\n }\n\n return (\n <SafeAreaView style={[styles.fill, isDark && styles.fillDark]} edges={['left', 'right']}>\n <Experience\n token={token}\n indexUrl={indexUrl}\n sessionError={ready ? error : null}\n hostChat={hostChat}\n onAgentVisibleChange={onAgentVisibleChange}\n initialAgentSeed={seed}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1, backgroundColor: '#f8fafc' },\n fillDark: { backgroundColor: '#0f172a' },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },\n title: { fontSize: 15, fontWeight: '600', color: '#0f172a', marginBottom: 6 },\n detail: { fontSize: 13, color: '#64748b', textAlign: 'center' },\n textLight: { color: '#f8fafc' },\n textMuted: { color: '#94a3b8' },\n});\n"],"names":["_a","_b"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {useState,useRef,useEffect,useMemo,useCallback}from'react';import {useRoute}from'@react-navigation/native';import {v4}from'uuid';import {useCdecliConnection}from'../../contexts/CdecliConnectionContext.js';import {useChatMutations}from'../../hooks/useChatApi.js';import {useChatStream}from'../../hooks/useChatStream.js';import {usePrerequisiteIds}from'../../hooks/usePrerequisiteIds.js';const TESTING_PROJECT_UUID = "9a8ac704-1040-4836-9b72-48b771ca91b1";
|
|
2
|
+
function useTravelHostChat() {
|
|
3
|
+
var _a, _b;
|
|
4
|
+
const route = useRoute();
|
|
5
|
+
const routeOrg = typeof ((_a = route == null ? void 0 : route.params) == null ? void 0 : _a.orgName) === "string" ? route.params.orgName.trim() : "";
|
|
6
|
+
const {
|
|
7
|
+
orgName,
|
|
8
|
+
projectId
|
|
9
|
+
} = usePrerequisiteIds();
|
|
10
|
+
const effectiveOrg = routeOrg || orgName || "";
|
|
11
|
+
const submitProjectId = projectId || TESTING_PROJECT_UUID;
|
|
12
|
+
const [channelId] = useState(() => v4());
|
|
13
|
+
const createdRef = useRef(false);
|
|
14
|
+
const {
|
|
15
|
+
createChannel
|
|
16
|
+
} = useChatMutations();
|
|
17
|
+
const cdecli = useCdecliConnection();
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
cdecli.setActiveChannelId(channelId);
|
|
20
|
+
return void 0;
|
|
21
|
+
}, [channelId, cdecli.setActiveChannelId]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (createdRef.current || !effectiveOrg) return;
|
|
24
|
+
createdRef.current = true;
|
|
25
|
+
void createChannel({
|
|
26
|
+
id: channelId,
|
|
27
|
+
title: `chat-channel-${channelId}`,
|
|
28
|
+
isShared: false,
|
|
29
|
+
sharedSlug: null,
|
|
30
|
+
isArchived: false,
|
|
31
|
+
isPinned: false,
|
|
32
|
+
model: null,
|
|
33
|
+
systemPrompt: null,
|
|
34
|
+
orgName: effectiveOrg,
|
|
35
|
+
projectId: submitProjectId
|
|
36
|
+
}).catch((err) => {
|
|
37
|
+
console.error("[TravelNative] createChannel failed:", err);
|
|
38
|
+
});
|
|
39
|
+
}, [channelId, createChannel, effectiveOrg, submitProjectId]);
|
|
40
|
+
const persistenceMode = (_b = cdecli.persistenceMode) != null ? _b : "backend";
|
|
41
|
+
const chatRouting = useMemo(() => ({
|
|
42
|
+
channelConnected: cdecli.channelConnected,
|
|
43
|
+
accountId: cdecli.accountId,
|
|
44
|
+
persistenceMode,
|
|
45
|
+
recoverAgentAuth: cdecli.recoverAgentAuth
|
|
46
|
+
}), [cdecli.channelConnected, cdecli.accountId, cdecli.recoverAgentAuth, persistenceMode]);
|
|
47
|
+
const chat = useChatStream(channelId, chatRouting);
|
|
48
|
+
const messages = useMemo(() => chat.messages.map((m, index) => ({
|
|
49
|
+
id: `${m.role}-${index}`,
|
|
50
|
+
role: m.role,
|
|
51
|
+
content: m.content,
|
|
52
|
+
attachments: m.attachments
|
|
53
|
+
})), [chat.messages]);
|
|
54
|
+
const send = useCallback((text, attachments) => {
|
|
55
|
+
void chat.sendMessage(text, attachments, channelId);
|
|
56
|
+
}, [chat, channelId]);
|
|
57
|
+
return useMemo(() => ({
|
|
58
|
+
messages,
|
|
59
|
+
streaming: chat.response || null,
|
|
60
|
+
busy: chat.isLoading || chat.isStreaming,
|
|
61
|
+
error: chat.error,
|
|
62
|
+
connected: cdecli.channelConnected,
|
|
63
|
+
send,
|
|
64
|
+
clear: chat.clearMessages
|
|
65
|
+
}), [messages, chat.response, chat.isLoading, chat.isStreaming, chat.error, cdecli.channelConnected, send, chat.clearMessages]);
|
|
66
|
+
}export{useTravelHostChat};//# sourceMappingURL=useTravelHostChat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTravelHostChat.js","sources":["../../../src/screens/TravelNative/useTravelHostChat.ts"],"sourcesContent":["/**\n * Host chat lane for native Travel Agent — same role as web `services.hostChat`.\n * Lives on the Travel screen (MF host), not in the travel remote.\n */\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useRoute } from '@react-navigation/native';\nimport { v4 as uuidv4 } from 'uuid';\nimport { useCdecliConnection } from '../../contexts/CdecliConnectionContext';\nimport { useChatMutations } from '../../hooks/useChatApi';\nimport { useChatStream, type MessageAttachment, type UseChatStreamRouting } from '../../hooks/useChatStream';\nimport { usePrerequisiteIds } from '../../hooks/usePrerequisiteIds';\nimport type { AgentChatMessage } from '../../features/agent-chat';\nimport type { TravelHostChat } from '../../features/travel/hostChat';\n\nconst TESTING_PROJECT_UUID = '9a8ac704-1040-4836-9b72-48b771ca91b1';\n\nexport function useTravelHostChat(): TravelHostChat {\n const route = useRoute<any>();\n const routeOrg = typeof route?.params?.orgName === 'string' ? route.params.orgName.trim() : '';\n const { orgName, projectId } = usePrerequisiteIds();\n const effectiveOrg = routeOrg || orgName || '';\n const submitProjectId = projectId || TESTING_PROJECT_UUID;\n\n const [channelId] = useState(() => uuidv4());\n const createdRef = useRef(false);\n const { createChannel } = useChatMutations();\n\n const cdecli = useCdecliConnection();\n useEffect(() => {\n cdecli.setActiveChannelId(channelId);\n return undefined;\n }, [channelId, cdecli.setActiveChannelId]);\n\n useEffect(() => {\n if (createdRef.current || !effectiveOrg) return;\n createdRef.current = true;\n void createChannel({\n id: channelId,\n title: `chat-channel-${channelId}`,\n isShared: false,\n sharedSlug: null,\n isArchived: false,\n isPinned: false,\n model: null,\n systemPrompt: null,\n orgName: effectiveOrg,\n projectId: submitProjectId,\n } as never).catch((err) => {\n console.error('[TravelNative] createChannel failed:', err);\n });\n }, [channelId, createChannel, effectiveOrg, submitProjectId]);\n\n const persistenceMode = cdecli.persistenceMode ?? 'backend';\n const chatRouting: UseChatStreamRouting = useMemo(\n () => ({\n channelConnected: cdecli.channelConnected,\n accountId: cdecli.accountId,\n persistenceMode,\n recoverAgentAuth: cdecli.recoverAgentAuth,\n }),\n [cdecli.channelConnected, cdecli.accountId, cdecli.recoverAgentAuth, persistenceMode],\n );\n\n const chat = useChatStream(channelId, chatRouting);\n\n const messages: AgentChatMessage[] = useMemo(\n () =>\n chat.messages.map((m, index) => ({\n id: `${m.role}-${index}`,\n role: m.role,\n content: m.content,\n attachments: m.attachments,\n })),\n [chat.messages],\n );\n\n const send = useCallback(\n (text: string, attachments?: MessageAttachment[]) => {\n void chat.sendMessage(text, attachments, channelId);\n },\n [chat, channelId],\n );\n\n return useMemo(\n () => ({\n messages,\n streaming: chat.response || null,\n busy: chat.isLoading || chat.isStreaming,\n error: chat.error,\n connected: cdecli.channelConnected,\n send,\n clear: chat.clearMessages,\n }),\n [\n messages,\n chat.response,\n chat.isLoading,\n chat.isStreaming,\n chat.error,\n cdecli.channelConnected,\n send,\n chat.clearMessages,\n ],\n );\n}\n"],"names":["uuidv4"],"mappings":"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"}
|
|
@@ -29,8 +29,14 @@ function dispatchDrawerAction(navigation, action) {
|
|
|
29
29
|
const creator = action === "open" ? DrawerActions.openDrawer : action === "close" ? DrawerActions.closeDrawer : DrawerActions.toggleDrawer;
|
|
30
30
|
(_c = drawer.dispatch) == null ? void 0 : _c.call(drawer, creator());
|
|
31
31
|
}
|
|
32
|
+
function resetDrawerClosed(navigation) {
|
|
33
|
+
dispatchDrawerAction(navigation, "close");
|
|
34
|
+
requestAnimationFrame(() => {
|
|
35
|
+
dispatchDrawerAction(navigation, "close");
|
|
36
|
+
});
|
|
37
|
+
}
|
|
32
38
|
function afterNativeModalClose(run) {
|
|
33
39
|
requestAnimationFrame(() => {
|
|
34
40
|
setTimeout(run, 40);
|
|
35
41
|
});
|
|
36
|
-
}export{afterNativeModalClose,dispatchDrawerAction,findDrawerNavigation};//# sourceMappingURL=drawerNavigation.js.map
|
|
42
|
+
}export{afterNativeModalClose,dispatchDrawerAction,findDrawerNavigation,resetDrawerClosed};//# sourceMappingURL=drawerNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawerNavigation.js","sources":["../../src/utils/drawerNavigation.ts"],"sourcesContent":["import { DrawerActions } from '@react-navigation/native';\n\ntype NavLike = {\n openDrawer?: () => void;\n closeDrawer?: () => void;\n toggleDrawer?: () => void;\n getState?: () => { type?: string } | undefined;\n getParent?: () => NavLike | undefined;\n dispatch?: (action: unknown) => void;\n};\n\nexport type DrawerAction = 'open' | 'close' | 'toggle';\n\n/**\n * Home / Chat live inside the workspace drawer; Canvas, Apps, and Shop are\n * nested (or sibling) routes. After those screens, `DrawerActions.openDrawer()`\n * on the focused navigator is a no-op, and a half-closed drawer leaves a\n * left-edge overlay that eats hamburger taps.\n */\nexport function findDrawerNavigation(navigation: NavLike | null | undefined): NavLike | null {\n let current: NavLike | null | undefined = navigation;\n for (let i = 0; i < 12 && current; i += 1) {\n if (typeof current.openDrawer === 'function' || current.getState?.()?.type === 'drawer') {\n return current;\n }\n current = current.getParent?.();\n }\n return null;\n}\n\nexport function dispatchDrawerAction(navigation: NavLike | null | undefined, action: DrawerAction): void {\n const drawer = findDrawerNavigation(navigation);\n // Apps / Canvas / Shop sit on the root stack (`/:orgName/apps`), not inside\n // `main_drawer`. Dispatching CLOSE_DRAWER there logs \"not handled by any\n // navigator\" and does not reset the leftover overlay.\n if (!drawer) return;\n if (action === 'open' && typeof drawer.openDrawer === 'function') {\n drawer.openDrawer();\n return;\n }\n if (action === 'close' && typeof drawer.closeDrawer === 'function') {\n drawer.closeDrawer();\n return;\n }\n if (action === 'toggle' && typeof drawer.toggleDrawer === 'function') {\n drawer.toggleDrawer();\n return;\n }\n if (drawer.getState?.()?.type !== 'drawer') return;\n const creator =\n action === 'open'\n ? DrawerActions.openDrawer\n : action === 'close'\n ? DrawerActions.closeDrawer\n : DrawerActions.toggleDrawer;\n drawer.dispatch?.(creator());\n}\n\n/** Navigate after RN Modal `visible` has gone false (avoids iOS overlay leaks). */\nexport function afterNativeModalClose(run: () => void): void {\n requestAnimationFrame(() => {\n setTimeout(run, 40);\n });\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drawerNavigation.js","sources":["../../src/utils/drawerNavigation.ts"],"sourcesContent":["import { DrawerActions } from '@react-navigation/native';\n\ntype NavLike = {\n openDrawer?: () => void;\n closeDrawer?: () => void;\n toggleDrawer?: () => void;\n getState?: () => { type?: string; history?: Array<{ type?: string }> } | undefined;\n getParent?: () => NavLike | undefined;\n dispatch?: (action: unknown) => void;\n};\n\nexport type DrawerAction = 'open' | 'close' | 'toggle';\n\n/**\n * Home / Chat live inside the workspace drawer; Canvas, Apps, and Shop are\n * nested (or sibling) routes. After those screens, `DrawerActions.openDrawer()`\n * on the focused navigator is a no-op, and a half-closed drawer leaves a\n * left-edge overlay that eats hamburger taps.\n */\nexport function findDrawerNavigation(navigation: NavLike | null | undefined): NavLike | null {\n let current: NavLike | null | undefined = navigation;\n for (let i = 0; i < 12 && current; i += 1) {\n if (typeof current.openDrawer === 'function' || current.getState?.()?.type === 'drawer') {\n return current;\n }\n current = current.getParent?.();\n }\n return null;\n}\n\n/** React Navigation records an open drawer as `{ type: 'drawer' }` in history. */\nexport function isDrawerOpen(navigation: NavLike | null | undefined): boolean {\n const history = findDrawerNavigation(navigation)?.getState?.()?.history;\n return Array.isArray(history) && history.some((entry) => entry?.type === 'drawer');\n}\n\nexport function dispatchDrawerAction(navigation: NavLike | null | undefined, action: DrawerAction): void {\n const drawer = findDrawerNavigation(navigation);\n // Apps / Canvas / Shop sit on the root stack (`/:orgName/apps`), not inside\n // `main_drawer`. Dispatching CLOSE_DRAWER there logs \"not handled by any\n // navigator\" and does not reset the leftover overlay.\n if (!drawer) return;\n if (action === 'open' && typeof drawer.openDrawer === 'function') {\n drawer.openDrawer();\n return;\n }\n if (action === 'close' && typeof drawer.closeDrawer === 'function') {\n drawer.closeDrawer();\n return;\n }\n if (action === 'toggle' && typeof drawer.toggleDrawer === 'function') {\n drawer.toggleDrawer();\n return;\n }\n if (drawer.getState?.()?.type !== 'drawer') return;\n const creator =\n action === 'open'\n ? DrawerActions.openDrawer\n : action === 'close'\n ? DrawerActions.closeDrawer\n : DrawerActions.toggleDrawer;\n drawer.dispatch?.(creator());\n}\n\n/**\n * Close twice: once now, once after the current frame. Interrupted drawer\n * animations (Canvas / video editor on top of the drawer) often leave a\n * sliver overlay that a single closeDrawer() does not clear.\n */\nexport function resetDrawerClosed(navigation: NavLike | null | undefined): void {\n dispatchDrawerAction(navigation, 'close');\n requestAnimationFrame(() => {\n dispatchDrawerAction(navigation, 'close');\n });\n}\n\n/** Navigate after RN Modal `visible` has gone false (avoids iOS overlay leaks). */\nexport function afterNativeModalClose(run: () => void): void {\n requestAnimationFrame(() => {\n setTimeout(run, 40);\n });\n}\n"],"names":[],"mappings":"qDAsBO,SAAS,qBAAqB,UAAwD,EAAA;AAtB7F,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAuBE,EAAA,IAAI,OAAsC,GAAA,UAAA;AAC1C,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,EAAM,IAAA,OAAA,EAAS,KAAK,CAAG,EAAA;AACzC,IAAI,IAAA,OAAO,QAAQ,UAAe,KAAA,UAAA,IAAA,CAAA,CAAc,mBAAQ,QAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,UAAS,QAAU,EAAA;AACvF,MAAO,OAAA,OAAA;AAAA;AAET,IAAA,OAAA,GAAA,CAAU,aAAQ,SAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAA;AAAA;AAEZ,EAAO,OAAA,IAAA;AACT;AAOgB,SAAA,oBAAA,CAAqB,YAAwC,MAA4B,EAAA;AAtCzG,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAuCE,EAAM,MAAA,MAAA,GAAS,qBAAqB,UAAU,CAAA;AAI9C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACb,EAAA,IAAI,MAAW,KAAA,MAAA,IAAU,OAAO,MAAA,CAAO,eAAe,UAAY,EAAA;AAChE,IAAA,MAAA,CAAO,UAAW,EAAA;AAClB,IAAA;AAAA;AAEF,EAAA,IAAI,MAAW,KAAA,OAAA,IAAW,OAAO,MAAA,CAAO,gBAAgB,UAAY,EAAA;AAClE,IAAA,MAAA,CAAO,WAAY,EAAA;AACnB,IAAA;AAAA;AAEF,EAAA,IAAI,MAAW,KAAA,QAAA,IAAY,OAAO,MAAA,CAAO,iBAAiB,UAAY,EAAA;AACpE,IAAA,MAAA,CAAO,YAAa,EAAA;AACpB,IAAA;AAAA;AAEF,EAAA,IAAA,CAAA,CAAI,EAAO,GAAA,CAAA,EAAA,GAAA,MAAA,CAAA,QAAA,KAAP,IAAqB,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,MAAS,QAAU,EAAA;AAC5C,EAAM,MAAA,OAAA,GAAU,WAAW,MAAS,GAAA,aAAA,CAAc,aAAa,MAAW,KAAA,OAAA,GAAU,aAAc,CAAA,WAAA,GAAc,aAAc,CAAA,YAAA;AAC9H,EAAO,CAAA,EAAA,GAAA,MAAA,CAAA,QAAA,KAAP,gCAAkB,OAAQ,EAAA,CAAA;AAC5B;AAOO,SAAS,kBAAkB,UAA8C,EAAA;AAC9E,EAAA,oBAAA,CAAqB,YAAY,OAAO,CAAA;AACxC,EAAA,qBAAA,CAAsB,MAAM;AAC1B,IAAA,oBAAA,CAAqB,YAAY,OAAO,CAAA;AAAA,GACzC,CAAA;AACH;AAGO,SAAS,sBAAsB,GAAuB,EAAA;AAC3D,EAAA,qBAAA,CAAsB,MAAM;AAC1B,IAAA,UAAA,CAAW,KAAK,EAAE,CAAA;AAAA,GACnB,CAAA;AACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adminide-stack/yantra-mobile",
|
|
3
|
-
"version": "12.0.54-alpha.
|
|
3
|
+
"version": "12.0.54-alpha.12",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"uuid": "^9.0.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"common": "12.0.54-alpha.
|
|
28
|
+
"common": "12.0.54-alpha.11"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"@admin-layout/gluestack-ui-mobile": "*",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@messenger-box/platform-mobile": "*",
|
|
42
42
|
"@react-native-async-storage/async-storage": "*",
|
|
43
43
|
"@react-navigation/native": "*",
|
|
44
|
-
"common": "12.0.54-alpha.
|
|
44
|
+
"common": "12.0.54-alpha.11",
|
|
45
45
|
"expo-constants": "*",
|
|
46
46
|
"expo-secure-store": "*",
|
|
47
47
|
"lodash": "*",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"typescript": {
|
|
58
58
|
"definition": "lib/index.d.ts"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "8c1d75f6a7871a0812b58b9f67d5f3557d81ec2e"
|
|
61
61
|
}
|