feat(app): 新增主入口和公共上下文

- 新增 AppProvider、AuthContext、CommonContext等上下文组件
- 实现用户认证和公共信息的本地存储和管理
- 添加主路由和导航容器组件
- 新增主视图屏幕组件
- 更新资源文件引用
这个提交包含在:
xuqm 2025-07-22 15:16:47 +08:00
父节点 329020448f
当前提交 b1f82a5d78
共有 62 个文件被更改,包括 2589 次插入187 次删除

查看文件

@ -7,10 +7,10 @@ module.exports = {
root: ['.'],
alias: {
'@': './src',
'@ywx': './src/ywq',
'@app': './src/app',
'@hospital': './src/hospital',
'@common': './src/common',
'@app': './src/app',
'@ywx': './src/miniapp/ywq',
'@hospital': './src/miniapp/hospital',
},
},
],

查看文件

@ -1,7 +1,7 @@
__d(function(g,r,i,a,m,e,d){r(d[0]),r(d[1])},10000000,[10000001,10000003]);
__d(function(g,r,i,a,m,e,d){var n=r(d[0]),t=r(d[1]),p=n(r(d[2]));t.AppRegistry.registerComponent(r(d[3]).Apps.Ywq,function(){return p.default})},10000001,[1,2,10000002,492]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=r(d[1]),o=t(r(d[2])),s=r(d[3]);var l=n.StyleSheet.create({container:{flex:1}});e.default=function(){var t='dark'===(0,n.useColorScheme)();return(0,s.jsxs)(n.View,{style:l.container,children:[(0,s.jsx)(n.StatusBar,{barStyle:t?'light-content':'dark-content'}),(0,s.jsx)(n.View,{style:{height:100}}),(0,s.jsx)(n.Button,{title:'onConfirm',onPress:function(){}}),(0,s.jsx)(n.View,{style:{height:15}}),(0,s.jsx)(n.Button,{title:'Toast',onPress:function(){(0,r(d[4]).showMessage)('\u533b\u7f51\u7b7e\u5f39\u51fatoast-error','error')}}),(0,s.jsx)(o.default,{})]})}},10000002,[1,2,511,243,538]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),p=t(r(d[2]));n.AppRegistry.registerComponent(r(d[3]).Apps.Hospital,function(){return p.default})},10000003,[1,2,10000004,492]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),p=t(r(d[2]));n.AppRegistry.registerComponent(r(d[3]).Apps.HospitalMain,function(){return p.default})},10000003,[1,2,10000004,492]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=r(d[1]),o=t(r(d[2])),s=r(d[3]);var l=n.StyleSheet.create({container:{flex:1}});e.default=function(){var t='dark'===(0,n.useColorScheme)();return(0,s.jsxs)(n.View,{style:l.container,children:[(0,s.jsx)(n.StatusBar,{barStyle:t?'light-content':'dark-content'}),(0,s.jsx)(n.View,{style:{height:100}}),(0,s.jsx)(n.Text,{children:"\u4e92\u8054\u7f51\u533b\u9662"}),(0,s.jsx)(n.Button,{title:'\u8fd4\u56de',onPress:function(){(0,r(d[4]).pop)()}}),(0,s.jsx)(n.View,{style:{height:15}}),(0,s.jsx)(n.Button,{title:'Toast',onPress:function(){(0,r(d[5]).showMessage)('\u4e92\u8054\u7f51\u533b\u9662\u5f39\u51fatoast','info','common\u5411\u4e0b\u517c\u5bb9')}}),(0,s.jsx)(o.default,{})]})}},10000004,[1,2,511,243,492,538]);
__r(108);
__r(10000000);

文件差异因一行或多行过长而隐藏

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 100 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 653 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 220 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 141 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 258 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 459 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 134 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 334 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 201 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 483 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 975 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 167 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 502 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 266 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 728 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 1.4 KiB

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 207 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 645 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 332 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 928 B

查看文件

@ -1 +1 @@
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/src_app_resource_images_icon_sign_scan" />
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/src_common_assets_images_common_arrow_back,@drawable/node_modules_reactnavigation_elements_lib_module_assets_searchicon,@drawable/node_modules_reactnavigation_elements_lib_module_assets_backicon,@drawable/node_modules_reactnavigation_elements_lib_module_assets_backiconmask,@drawable/node_modules_reactnavigation_elements_lib_module_assets_clearicon,@drawable/node_modules_reactnavigation_elements_lib_module_assets_closeicon" />

文件差异因一行或多行过长而隐藏

查看文件

@ -1,4 +1,4 @@
__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),p=t(r(d[2]));n.AppRegistry.registerComponent(r(d[3]).Apps.Hospital,function(){return p.default})},10000000,[5,3,10000001,488]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]),n=r(d[1]),p=t(r(d[2]));n.AppRegistry.registerComponent(r(d[3]).Apps.HospitalMain,function(){return p.default})},10000000,[5,3,10000001,488]);
__d(function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=r(d[1]),o=t(r(d[2])),s=r(d[3]);var l=n.StyleSheet.create({container:{flex:1}});e.default=function(){var t='dark'===(0,n.useColorScheme)();return(0,s.jsxs)(n.View,{style:l.container,children:[(0,s.jsx)(n.StatusBar,{barStyle:t?'light-content':'dark-content'}),(0,s.jsx)(n.View,{style:{height:100}}),(0,s.jsx)(n.Text,{children:"\u4e92\u8054\u7f51\u533b\u9662"}),(0,s.jsx)(n.Button,{title:'\u8fd4\u56de',onPress:function(){(0,r(d[4]).pop)()}}),(0,s.jsx)(n.View,{style:{height:15}}),(0,s.jsx)(n.Button,{title:'Toast',onPress:function(){(0,r(d[5]).showMessage)('\u4e92\u8054\u7f51\u533b\u9662\u5f39\u51fatoast','info','common\u5411\u4e0b\u517c\u5bb9')}}),(0,s.jsx)(o.default,{})]})}},10000001,[5,3,500,246,488,499]);
__r(108);
__r(10000000);

文件差异因一行或多行过长而隐藏

查看文件

@ -1,3 +1,3 @@
import './src/app/app';
import './src/ywq/ywq';
import './src/hospital/hospital';
import '@ywx/ywq.ts';
import '@hospital/hospital.ts';

查看文件

@ -11,12 +11,11 @@
"test": "jest",
"build-android-common": "react-native bundle --platform android --dev false --entry-file src/app/app.ts --bundle-output bundle/android/common.android.bundle --assets-dest ./bundle/android --config metro.common.config.js --minify true --reset-cache",
"build-android-buz": "react-native bundle --platform android --dev false --entry-file src/buz.ts --bundle-output ./bundle/android/buz.android.bundle --assets-dest ./bundle/android --config metro.main.config.js --minify true --reset-cache",
"build-android-ywq": "react-native bundle --platform android --dev false --entry-file src/ywq/ywq.ts --bundle-output ./bundle/android/ywq.android.bundle --assets-dest ./bundle/android --config metro.main.config.js --minify true --reset-cache",
"build-android-hospital": "react-native bundle --platform android --dev false --entry-file src/hospital/hospital.ts --bundle-output bundle/android/hospital.android.bundle --assets-dest ./bundle/android --config metro.main.config.js --minify true --reset-cache",
"build-android-ywq": "react-native bundle --platform android --dev false --entry-file src/miniapp/ywq/ywq.ts --bundle-output ./bundle/android/ywq.android.bundle --assets-dest ./bundle/android --config metro.main.config.js --minify true --reset-cache",
"build-android-hospital": "react-native bundle --platform android --dev false --entry-file src/miniapp/hospital/hospital.ts --bundle-output bundle/android/hospital.android.bundle --assets-dest ./bundle/android --config metro.main.config.js --minify true --reset-cache",
"build-ios-common": "react-native bundle --platform ios --dev false --entry-file src/app/app.ts --bundle-output bundle/ios/common.ios.bundle --assets-dest ./bundle/ios --config metro.common.config.js --minify true --reset-cache",
"build-ios-ywq": "react-native bundle --platform ios --dev false --entry-file src/ywq/ywq.ts --bundle-output ./bundle/ios/ywq.ios.bundle --assets-dest ./bundle/ios --config metro.main.config.js --minify true --reset-cache",
"build-ios-hospital": "react-native bundle --platform ios --dev false --entry-file src/hospital/hospital.ts --bundle-output bundle/ios/hospital.ios.bundle --assets-dest ./bundle/ios --config metro.main.config.js --minify true --reset-cache"
"build-ios-ywq": "react-native bundle --platform ios --dev false --entry-file src/miniapp/ywq/ywq.ts --bundle-output ./bundle/ios/ywq.ios.bundle --assets-dest ./bundle/ios --config metro.main.config.js --minify true --reset-cache",
"build-ios-hospital": "react-native bundle --platform ios --dev false --entry-file src/miniapp/hospital/hospital.ts --bundle-output bundle/ios/hospital.ios.bundle --assets-dest ./bundle/ios --config metro.main.config.js --minify true --reset-cache"
},
"codegenConfig": {
"name": "SpecManager",
@ -29,10 +28,17 @@
"dependencies": {
"@react-native-async-storage/async-storage": "^2.2.0",
"@react-native/new-app-screen": "0.80.1",
"@react-navigation/native": "^7.1.14",
"@react-navigation/stack": "^7.4.2",
"babel-plugin-module-resolver": "^5.0.2",
"react": "19.1.0",
"react-native": "0.80.1",
"react-native-bundle-splitter": "^3.0.1",
"react-native-copilot": "^3.3.3",
"react-native-device-info": "^14.0.4",
"react-native-gesture-handler": "^2.27.2",
"react-native-root-siblings": "^5.0.1",
"react-native-safe-area-context": "^5.5.2",
"react-native-storage": "^1.0.1",
"react-native-toast-message": "^2.3.3"
},

查看文件

@ -1,81 +1,40 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
*/
import {
Animated,
Button,
Image,
StatusBar,
StyleSheet,
useColorScheme,
View,
} from 'react-native';
import * as navigation from '@common/NavigationHelper.ts';
import { Apps } from '@common/NavigationHelper.ts';
import ScrollView = Animated.ScrollView;
import TestNativeInfo from '@app/TestNativeInfo';
import { showMessage } from '@common/ToastHelper.ts';
import { StatusBar, StyleSheet, useColorScheme } from 'react-native';
import Toast from 'react-native-toast-message';
import { AppProvider } from '@app/contexts/AppProvider.tsx';
import { RootSiblingParent } from 'react-native-root-siblings';
import NavigationContainer from '@app/routes/NavigationContainer';
import BottomSheet from '@common/components/BottomSheet.tsx';
import Alert from '@common/components/Alert.tsx';
function App() {
const isDarkMode = useColorScheme() === 'dark';
return (
<View style={styles.container}>
<>
<StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
<View style={{ height: 100 }} />
<Button
title={'进入互联网医院'}
onPress={() => {
navigation.pushByName('hospital', {});
}}
/>
<View style={{ height: 15 }} />
<Button
title={'进入医网签'}
onPress={() => {
navigation.pushByName(Apps.Ywq, {});
}}
/>
<View style={{ height: 15 }} />
<Button
title={'Toast'}
onPress={() => {
showMessage('APP页面弹出toast')
}}
/>
<ScrollView style={styles.flatContainer}>
<View style={styles.imgView}>
<Image
resizeMethod="resize"
resizeMode="contain"
source={require('@app/resource/images/icon_sign_scan.png')}
/>
<TestNativeInfo />
</View>
</ScrollView>
<AppProvider>
<RootSiblingParent>
{/*<CopilotProvider*/}
{/* backdropColor="rgba(0, 0, 0, 0.7)"*/}
{/* stepNumberComponent={() => null}*/}
{/* arrowSize={0}*/}
{/* tooltipStyle={styles.tooltip}*/}
{/* tooltipComponent={TooltipComponent}*/}
{/*>*/}
<NavigationContainer />
{/*</CopilotProvider>*/}
</RootSiblingParent>
<BottomSheet ref={ref => BottomSheet.setRef(ref)} />
<Alert ref={ref => Alert.setRef(ref)} />
<Toast />
</View>
</AppProvider>
</>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
imgView: {
width: "100%",
},
img: {
width: "100%",
height: 600,
},
flatContainer: {
flex: 1,
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
});

查看文件

@ -0,0 +1,2 @@
export * from './values';
export * from './types';

53
src/app/constants/types.ts 普通文件
查看文件

@ -0,0 +1,53 @@
// 存储一般信息
export type CommonInfo = {
env: 'production' | 'acceptance' | 'testing' | 'development'; // 环境
guidePagesVersion: string; // 欢迎页版本号
policyAccepted: boolean; // 是否已经接受用户协议与隐私政策
appTourVersion: string; // 版本引导版本号
lastLoginPhoneNumber: string; // 最近一次登录使用的手机号
deviceInfo: string; // 根据 innerModule 中的 initNativeInfo() 获取到的一些设备信息,使用时需要JSON.parse()进行解析
// ...
};
// 登录用户信息
export type UserInfo = {
// 以下为登录/注册时获得,不可为空
userId: string; // 用户id
phone: string; // 用户手机号
userType: 'guanxin' | 'general' | 'generalandguanxin'; // 用户类型
realNameStatus:
| 'unverified' // 实名状态 0 未认证
| 'success' // 1 认证成功
| 'failure' // 2 认证失败
| 'inexistent' // 3 证件号不存在
| 'registered'; // 4 证件号被其他用户使用
currentUserType: 'guanxin' | 'general'; // 当前选择的用户
enableCert: boolean; // 是否可以下证
hasBindFirm: boolean; // 是否绑定厂商
hasFaceDetect: boolean; // 是否进行了人脸识别
gxLeader: boolean; // 冠心leader
// 1、开屏
// 2、工作台-banner
// 3、热点资讯-列表
// 4、热点资讯-详情
// 5、我的页面
// 6、医信课堂-banner
// 7、消息-列表
// 8、消息-详情
// 9、热点资讯-图片菜单
moduleList: number[] | undefined; // 是否允许显示广告
isFirstLogin: boolean; // 是否第一次登录(第一次登录不允许显示广告)
// ...
// 以下为用户信息接口获得,允许为空
nickname: string | undefined; // 昵称
picUrl: string | undefined; // 头像
userIdCardNum: string | undefined; // 身份证号
faceDetectFirms:
| {
clientId: string; // 厂商id
firmName: string; // 厂商名
}[]
| undefined; // 人脸识别厂商?
// ...
};

62
src/app/constants/values.ts 普通文件
查看文件

@ -0,0 +1,62 @@
const KEY_PREFIX = 'cn.org.bjca.trust.yiwangxin';
// 本地缓存key
// 所有的 key 按照 cn.org.bjca.trust.yiwangxin.module.xxx 来命名
// IMPORTANT: 本地缓存key增加时一定注意v1/app中的ValueHelper.ts中有个 removeAll 方法,在里面讲新增的key忽略掉,不然可能会被清除掉;同时 v2/app/hooks/useLogout.ts中也有类似内容
export const COMMONINFO_KEY = KEY_PREFIX + '.app.commoninfo';
export const TOKEN_KEY = KEY_PREFIX + '.app.token';
export const USERINFO_KEY = KEY_PREFIX + '.app.userinfo';
// 通知key
// 所有的 key 按照 cn.org.bjca.trust.yiwangxin.module.event.xxx 来命名
export const DEVICE_ENENT_LOGOUT_KEY = KEY_PREFIX + '.app.event.logout'; // 退出登录通知
export const DEVICE_ENENT_SWITCH_ROLE_KEY =
KEY_PREFIX + '.app.event.switchrole'; // 角色切换通知
export const DEVICE_ENENT_UPDATE_USERINFO_KEY =
KEY_PREFIX + '.app.event.updateuserinfo'; // 更新用户信息通知
export const DEVICE_ENENT_UPDATE_HOME_FEATURE_LIST_KEY =
KEY_PREFIX + '.app.event.updatehomefeaturelist'; // 更新首页精品服务列表
export const DEVICCE_ENENT_NAVIGATE_MODULE_KEY =
KEY_PREFIX + '.app.event.navigatemodule'; // 准备路由至其他模块的通知
export const DEVICCE_ENENT_RECEIVE_PUSH_NOTIFICATION =
KEY_PREFIX + '.app.event.receivepushnotification'; // 收到推送通知
// IM通知key
export const PLATFORM_NOTIFICATION = 'noticePlatform'; // 系统公告
export const PERSONAL_NOTIFICATION = 'noticePerson'; // 站内信消息
export const AUTO_SIGN_REQUEST = 'requestSelfSign'; // 自动签名开启推送
export const AUTO_SIGN_REQUEST_1 = 'requestSelfSign1'; // 自动签名开启推送
export const CONFIRM_GRANT_REQUEST = 'confirmGrant'; // 监听授权请求推送
// 其他key
export const COUNTDOWN_REGISTER_KEY = KEY_PREFIX + '.app.countdown.register'; // 注册页面倒计时key
export const COUNTDOWN_CHANGE_PHONE_KEY =
KEY_PREFIX + '.app.countdown.changephone'; // 修改手机号页面倒计时key
// 常量
export const THEME_COLOR = '#0E84FA'; // 主题色
export const THEME_COLOR_DISABLED = 'rgba(14, 132, 250, 0.3)'; // 主题色(禁用按钮)
export const HEADER_TINT_COLOR = '#11102C'; // 导航栏标题颜色
export const HEADER_TITLE_FONT_SIZE = 18; // 导航栏标题字号
export const HEADER_TITLE_FONT_WEIGHT = '500'; // 导航栏标题字号
export const TAB_BAR_ACTIVE_TINT_COLOR = THEME_COLOR; // 标签栏选中颜色
export const TAB_BAR_INACTIVE_TINT_COLOR = '#333333'; // 标签栏未选中颜色
export const TAB_BAR_ICON_SIZE = 20; // 标签栏图标宽高值,最大为25
// 配置
export const MD5_KEY = 'YwqMain!@#'; // 医网信进行md5运算的key
export const CLIENT_ID = '2000111111110002'; // 厂商唯一标识,这个值是为医网信app分配的
export const GUIDE_PAGES_VERSION = '7.0'; // 引导页版本号 - 只有当设计了全新的引导页时,才修改这里
export const APP_TOUR_VERSION = '7.0'; // 版本引导版本号 - 只有当设计了全新的版本引导时,才修改这里
export const IM_SDK_APPID = 1600023023; // 腾讯
export const IM_SDK_APPID_TEST = 1600088801; // 腾讯
export const IM_SDK_APP_KEY =
'KxSNEvbudoGZ3WooQdiBhcaiYWQnaKSgxSybpeZJ4gRjv1Q2zgsXcQCBcrrNAWQp'; // 腾讯
export const IM_SDK_APP_KEY_TEST =
'0Eh996NDppMBQuHuSgccdNi60Ngieaf0yBIg3Ddfw4pgw1wZ9KtM88YtHzwva3aT'; // 腾讯
// 正则表达式
export const PHONE_PATTERN = /^1[0-9]{10}$/; // 登录手机号
export const PASSWORD_PATTERN =
/^(?=.*[a-zA-Z])(?=.*\d)[A-Za-z\d!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]{8,12}$/; // 登录密码
export const ID_CARD_PATTERN = /(^\d{18}$)|(^\d{17}(\d|X|x)$)/; // 身份证号

查看文件

@ -0,0 +1,11 @@
import React, { ReactNode } from 'react';
import { CommonProvider } from './CommonContext';
import { AuthProvider } from './AuthContext';
export const AppProvider = ({ children }: { children: ReactNode }) => {
return (
<CommonProvider>
<AuthProvider>{children}</AuthProvider>
</CommonProvider>
);
};

查看文件

@ -0,0 +1,118 @@
import React, { createContext, ReactNode, useEffect, useReducer } from 'react';
import { TOKEN_KEY, UserInfo, USERINFO_KEY } from '@app/constants';
import { getAllItems, storageApp } from '@common/StorageHelper.ts';
type RequiredUserInfo = Required<UserInfo>;
type AuthState = {
loading: boolean;
token?: string; // token
userInfo?: RequiredUserInfo; // 用户信息
};
type ActionMap = {
retrieve: { token: string; userInfo: RequiredUserInfo } | undefined; // 应用启动取回本地缓存
login: { token: string; userInfo: RequiredUserInfo }; // 登录
logout: undefined; // 退出登录
update: RequiredUserInfo; // 更新用户信息
};
type Action = {
[Key in keyof ActionMap]: {
type: Key;
payload: ActionMap[Key];
};
}[keyof ActionMap];
function reducer(state: AuthState, action: Action): AuthState {
switch (action.type) {
case 'retrieve':
return {
...state,
loading: false,
token: action.payload?.token,
userInfo: action.payload?.userInfo,
};
case 'login':
return {
...state,
loading: false,
token: action.payload.token,
userInfo: action.payload.userInfo,
};
case 'logout':
return {
...state,
loading: false,
token: undefined,
userInfo: undefined,
};
case 'update':
return {
...state,
loading: false,
userInfo: action.payload,
};
}
}
const initialState = {
loading: true,
token: undefined,
userInfo: undefined,
};
const AuthContext = createContext<
| {
state: AuthState;
dispatch: React.Dispatch<Action>;
}
| undefined
>(undefined);
const AuthProvider = ({ children }: { children: ReactNode }) => {
const [state, dispatch] = useReducer(reducer, initialState);
useEffect(() => {
async function retrieve() {
try {
const values = await getAllItems([
{ key: TOKEN_KEY },
{ key: USERINFO_KEY },
]);
if (values[0][1] && values[1][1]) {
const tokenValue = values[0][1];
const userInfoValue = JSON.parse(values[1][1]);
dispatch({
type: 'retrieve',
payload: {
token: tokenValue,
userInfo: { ...userInfoValue, isFirstLogin: false },
},
});
} else {
dispatch({
type: 'retrieve',
payload: undefined,
});
}
} catch {
dispatch({
type: 'retrieve',
payload: undefined,
});
}
}
retrieve();
}, []);
return (
<AuthContext.Provider value={{ state, dispatch }}>
{children}
</AuthContext.Provider>
);
};
export type { AuthState, RequiredUserInfo };
export { AuthContext, AuthProvider };

查看文件

@ -0,0 +1,86 @@
import React, { createContext, ReactNode, useEffect, useReducer } from 'react';
import { CommonInfo, COMMONINFO_KEY } from '@app/constants';
import { getItem } from '@common/StorageHelper.ts';
type PartialCommonInfo = Partial<CommonInfo>;
type RequiredCommonInfo = Required<CommonInfo>;
type CommonState = {
loading: boolean;
info: PartialCommonInfo;
};
type ActionMap = {
retrieve: PartialCommonInfo; // 应用启动取回本地缓存
save: PartialCommonInfo; // 保存/清除
};
type Action = {
[Key in keyof ActionMap]: {
type: Key;
payload: ActionMap[Key];
};
}[keyof ActionMap];
function reducer(state: CommonState, action: Action) {
switch (action.type) {
case 'retrieve':
return {
...state,
loading: false,
info: action.payload,
};
case 'save':
return {
...state,
loading: false,
info: action.payload,
};
}
}
const initialState = {
loading: true,
info: {},
};
const CommonContext = createContext<
| {
state: CommonState;
dispatch: React.Dispatch<Action>;
}
| undefined
>(undefined);
const CommonProvider = ({ children }: { children: ReactNode }) => {
const [state, dispatch] = useReducer(reducer, initialState);
useEffect(() => {
async function retrieve() {
try {
const value = await getItem(COMMONINFO_KEY);
const parsedValue: PartialCommonInfo = value ? JSON.parse(value) : {};
dispatch({
type: 'retrieve',
payload: parsedValue,
});
} catch {
dispatch({
type: 'retrieve',
payload: {},
});
}
}
retrieve();
}, []);
return (
<CommonContext.Provider value={{ state, dispatch }}>
{children}
</CommonContext.Provider>
);
};
export type { CommonState, PartialCommonInfo, RequiredCommonInfo };
export { CommonContext, CommonProvider };

65
src/app/contexts/useAuth.ts 普通文件
查看文件

@ -0,0 +1,65 @@
import { useContext, useEffect, useMemo, useRef } from 'react';
import {
AuthContext,
AuthState,
RequiredUserInfo,
} from '@app/contexts/AuthContext';
import { TOKEN_KEY, USERINFO_KEY } from '@app/constants';
import {
removeAllItems,
saveAllItems,
saveItem,
} from '@common/StorageHelper.ts';
const useAuth = (): {
state: AuthState;
actions: {
login: (token: string, userInfo: RequiredUserInfo) => Promise<void>;
logout: () => Promise<void>;
update: (userInfo: RequiredUserInfo) => Promise<void>;
};
} => {
const context = useContext(AuthContext);
if (!context) {
throw new Error('useAuth must be used in AuthProvider!');
}
const contextRef = useRef(context);
useEffect(() => {
contextRef.current = context;
}, [context]);
const authActions = useMemo(
() => ({
login: async (token: string, userInfo: RequiredUserInfo) => {
await saveAllItems([
{ key: TOKEN_KEY, data: token },
{ key: USERINFO_KEY, data: JSON.stringify(userInfo) },
]);
contextRef.current.dispatch({
type: 'login',
payload: {
token: token,
userInfo: userInfo,
},
});
},
logout: async () => {
await removeAllItems([TOKEN_KEY, USERINFO_KEY]);
contextRef.current.dispatch({
type: 'logout',
payload: undefined,
});
},
update: async (userInfo: RequiredUserInfo) => {
await saveItem(USERINFO_KEY, JSON.stringify(userInfo));
contextRef.current.dispatch({ type: 'update', payload: userInfo });
},
}),
[],
);
return { state: context.state, actions: authActions };
};
export { useAuth };

查看文件

@ -0,0 +1,62 @@
import {useContext, useEffect, useMemo, useRef} from 'react';
import {
CommonContext,
CommonState,
PartialCommonInfo,
} from '@app/contexts/CommonContext';
import {COMMONINFO_KEY} from '@app/constants';
import { getItem, saveItem } from '@common/StorageHelper.ts';
const useCommon = (): {
state: CommonState;
actions: {
save: <T extends keyof PartialCommonInfo>(
key: T,
value: PartialCommonInfo[T],
) => Promise<void>;
};
} => {
const context = useContext(CommonContext);
if (!context) {
throw new Error('useCommon must be used in CommonProvider!');
}
const contextRef = useRef(context);
useEffect(() => {
contextRef.current = context;
}, [context]);
const authActions = useMemo(
() => ({
save: async <T extends keyof PartialCommonInfo>(
key: T,
value: PartialCommonInfo[T],
) => {
const commonValue = await getItem(COMMONINFO_KEY);
const parsedValue: PartialCommonInfo = commonValue
? JSON.parse(commonValue)
: {};
const mergedValue = {
...parsedValue,
[key]: value,
};
await saveItem(
COMMONINFO_KEY,
JSON.stringify({
...parsedValue,
[key]: value,
}),
);
contextRef.current.dispatch({
type: 'save',
payload: mergedValue,
});
},
}),
[],
);
return {state: context.state, actions: authActions};
};
export {useCommon};

查看文件

@ -0,0 +1,3 @@
export type MainParamList = {
MainView: undefined;
};

查看文件

@ -0,0 +1,56 @@
import React from 'react';
import { register } from 'react-native-bundle-splitter';
import {
createStackNavigator,
TransitionPresets,
} from '@react-navigation/stack';
import { MainParamList } from '@app/routes/MainParamList.ts';
import {
HEADER_TINT_COLOR,
HEADER_TITLE_FONT_SIZE,
HEADER_TITLE_FONT_WEIGHT,
} from '@app/constants';
import HeaderBackImage from '@common/components/HeaderBackImage.tsx';
const MainViewScreen = register({
loader: () => import('@app/screens/main/MainViewScreen'),
});
const Stack = createStackNavigator<MainParamList>();
export function MainStack() {
// const navigation = useNavigation<NavigationProp<MainParamList>>();
return (
<Stack.Navigator
screenOptions={{
headerTitleAlign: 'center', // 安卓标题居中
headerShadowVisible: false,
headerTintColor: HEADER_TINT_COLOR,
headerTitleStyle: {
fontSize: HEADER_TITLE_FONT_SIZE,
fontWeight: HEADER_TITLE_FONT_WEIGHT,
},
headerBackImage: HeaderBackImage,
}}
initialRouteName="MainView"
>
<Stack.Group
screenOptions={{
...TransitionPresets.SlideFromRightIOS,
}}
>
<Stack.Screen name="MainView" component={MainViewScreen} />
{/* 普通栈路由 --> 写这里 */}
</Stack.Group>
<Stack.Group
screenOptions={{
presentation: 'transparentModal',
headerShown: false,
}}
>
{/* 对话框形式路由 --> 写这里 */}
</Stack.Group>
</Stack.Navigator>
);
}

查看文件

@ -0,0 +1,11 @@
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { MainStack } from '@app/routes/MainStack.tsx';
export default function Container() {
return (
<NavigationContainer>
<MainStack />
</NavigationContainer>
);
}

查看文件

@ -0,0 +1,16 @@
import React from 'react';
import { StyleSheet, View } from 'react-native';
import { StackScreenProps } from '@react-navigation/stack';
import { MainParamList } from '@app/routes/MainParamList';
type Props = StackScreenProps<MainParamList, 'MainView'>;
export default function WebViewScreen(props: Props) {
return <View style={styles.container}></View>;
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});

查看文件

@ -1,2 +1,2 @@
import '@ywx/ywq.ts';
import '@hospital/hospital.ts';
import '@/miniapp/hospital/hospital.ts';

查看文件

@ -1,25 +1,19 @@
import { storageApp } from './StorageHelper.ts';
import { getItem, saveItem } from './StorageHelper.ts';
import NavigationManager from '../../specs/NativeNavigationManager.ts';
export enum Apps {
App='app',
Hospital='hospital',
Ywq='ywq',
App = 'app',
Hospital = 'hospital',
Ywq = 'ywq',
}
export const pushByName = (name: string, params: any) => {
storageApp
.save({
key: `MessageActivity-${name}`,
data: params,
expires: 1000 * 3600,
})
.finally(() => {
saveItem(`MessageActivity-${name}`, params).finally(() => {
NavigationManager.navigate(name);
});
};
export const pop = () => {
NavigationManager.pop();
};
export const getDataFromName = (name: string) =>
getItem(`MessageActivity-${name}`);

查看文件

@ -1,9 +1,44 @@
import Storage from 'react-native-storage';
import Storage, { LoadParams } from 'react-native-storage';
import AsyncStorage from '@react-native-async-storage/async-storage';
export const storageApp = new Storage({
size: 1000,
storageBackend: AsyncStorage,
defaultExpires: 1000 * 3600 * 24,
defaultExpires: 1000 * 3600 * 24 * 60,
enableCache: true,
});
/**
*
* @param key
* @param value
*/
export const saveItem = (key: string, value: any) =>
storageApp.save({ key, data: value });
/**
*
* @param key
*/
export const getItem = (key: string) =>
storageApp.load({ key, autoSync: true, syncInBackground: true });
/**
*
* @param key
*/
export const removeItem = (key: string) => storageApp.remove({ key });
/**
*
* @param params
*/
export const getAllItems = (params: LoadParams[]) =>
storageApp.getBatchData(params);
export const saveAllItems = (
params: {
key: string;
id?: string;
data: any;
expires?: number | null;
}[],
) => Promise.all([params.map(item => storageApp.save(item))]);
export const removeAllItems = (params: string[]) =>
Promise.all([params.map(item => storageApp.remove({ key: item }))]);

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 459 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 975 B

二进制文件未显示。

之后

宽度:  |  高度:  |  大小: 1.4 KiB

查看文件

@ -1,4 +1,16 @@
import 'react';
import 'react-native';
import '@react-navigation/native';
import 'react-native-gesture-handler';
import '@react-navigation/stack';
// 路由懒加载已经内存管理等,提高加载效率
import 'react-native-bundle-splitter';
// 获取设备信息
import 'react-native-device-info';
// 应用间路由工具
import '@common/NavigationHelper';
// 弹出相关
import '@common/ToastHelper.ts';
import '@common/components/Alert.tsx';
import '@common/components/BottomSheet.tsx';
import '@common/components/HeaderBackImage.tsx';

查看文件

@ -0,0 +1,473 @@
import React, { Component, JSX } from 'react';
import {
Animated,
BackHandler,
LayoutChangeEvent,
NativeEventSubscription,
StyleSheet,
Text,
TextStyle,
TouchableOpacity,
View,
} from 'react-native';
// 等待 popup 库完成之后,将会被替换掉
const POPUP_ANIMATION_DURATION = 300;
const POPUP_BACKGROUND_COLOR = '#000000';
const POPUP_BACKGROUND_OPACITY = 0.2;
const POPUP_VERTICAL_OFFSET = 0;
type PopupOptions = {
duration?: number;
backgroundColor?: string;
backgroundOpacity?: number;
verticalOffset?: number;
};
type PopupType = 'top' | 'bottom' | 'alert';
interface PopupProps {
content: JSX.Element;
type: PopupType;
options?: PopupOptions;
onShown?: () => void;
onPressBackground?: () => void;
}
interface PopupState {
backgroundOpacity: Animated.Value;
top: Animated.Value;
bottom: Animated.Value;
contentOpacity: Animated.Value;
}
class Popup extends Component<PopupProps, PopupState> {
private contentHeight = 0;
constructor(props: PopupProps) {
super(props);
this.state = {
backgroundOpacity: new Animated.Value(0),
top: new Animated.Value(0),
bottom: new Animated.Value(0),
contentOpacity: new Animated.Value(0),
};
}
backHandler?: NativeEventSubscription;
backAction = () => {
return true;
};
componentDidMount() {
this.backHandler = BackHandler.addEventListener(
'hardwareBackPress',
this.backAction,
);
}
componentWillUnmount() {
this.backHandler?.remove();
}
show(): void {
Animated.parallel([
Animated.timing(this.state.backgroundOpacity, {
toValue:
this.props.options?.backgroundOpacity ?? POPUP_BACKGROUND_OPACITY,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
this.props.type === 'top'
? Animated.timing(this.state.top, {
toValue:
this.props.options?.verticalOffset ?? POPUP_VERTICAL_OFFSET,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: this.props.type === 'bottom'
? Animated.timing(this.state.bottom, {
toValue: -(
this.props.options?.verticalOffset ?? POPUP_VERTICAL_OFFSET
),
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: Animated.timing(this.state.contentOpacity, {
toValue: 1,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
]).start(finished => {
if (finished) {
this.props.onShown && this.props.onShown();
}
});
}
hide(callback?: () => void): void {
Animated.parallel([
Animated.timing(this.state.backgroundOpacity, {
toValue: 0,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
this.props.type === 'top'
? Animated.timing(this.state.top, {
toValue: -this.contentHeight,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: this.props.type === 'bottom'
? Animated.timing(this.state.bottom, {
toValue: -this.contentHeight,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: Animated.timing(this.state.contentOpacity, {
toValue: 0,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
]).start(finished => {
if (finished) {
callback && callback();
}
});
}
onLayout(event: LayoutChangeEvent): void {
const height = event.nativeEvent.layout.height;
if (height > 0 && this.contentHeight === 0) {
this.contentHeight = height;
this.state.top.setValue(-height);
this.state.bottom.setValue(-height);
this.show();
}
}
render(): JSX.Element {
return (
<View
style={
this.props.type === 'alert'
? popupStyles.containerAlert
: popupStyles.container
}>
<Animated.View
style={[
popupStyles.background,
{
opacity: this.state.backgroundOpacity,
backgroundColor:
this.props.options?.backgroundColor ?? POPUP_BACKGROUND_COLOR,
},
]}>
<TouchableOpacity
style={popupStyles.backgroundTouch}
onPress={() => {
this.props.onPressBackground && this.props.onPressBackground();
}}
/>
</Animated.View>
<Animated.View
style={
this.props.type === 'top'
? [popupStyles.content, {top: this.state.top}]
: this.props.type === 'bottom'
? [popupStyles.content, {bottom: this.state.bottom}]
: [
popupStyles.contentAlert,
{
opacity: this.state.contentOpacity,
top:
this.props.options?.verticalOffset ??
POPUP_VERTICAL_OFFSET,
},
]
}
onLayout={this.onLayout.bind(this)}>
{this.props.content}
</Animated.View>
</View>
);
}
}
const popupStyles = StyleSheet.create({
container: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
},
containerAlert: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
justifyContent: 'center',
alignItems: 'center',
},
background: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
},
backgroundTouch: {
flex: 1,
},
content: {
position: 'absolute',
left: 0,
right: 0,
},
contentAlert: {
justifyContent: 'center',
alignItems: 'center',
},
});
interface State {
title?: string;
content?: JSX.Element;
confirm?: {
title?: string;
noHide?: boolean;
titleStyle?: TextStyle;
action?: () => void;
};
cancel?: {
title?: string;
titleStyle?: TextStyle;
action?: () => void;
};
}
class Alert extends Component<object, State> {
private static _ref: Alert | null = null;
public static setRef(ref: Alert | null): void {
Alert._ref = ref;
}
public static show(
title: string,
content?: JSX.Element,
confirm?: {
title?: string;
noHide?: boolean;
titleStyle?: TextStyle;
action?: () => void;
},
cancel?: {
title?: string;
titleStyle?: TextStyle;
action?: () => void;
},
): void {
if (Alert._ref) {
Alert._ref.show(title, content, confirm, cancel);
}
}
public static hide(callback?: () => void): void {
if (Alert._ref) {
Alert._ref.hide(callback);
}
}
private readonly popupRef: React.RefObject<Popup | null>;
constructor(props: object) {
super(props);
this.popupRef = React.createRef();
this.state = {
title: undefined,
content: undefined,
confirm: undefined,
cancel: undefined,
};
}
public show(
title: string,
content?: JSX.Element,
confirm?: {
title?: string;
noHide?: boolean;
titleStyle?: TextStyle;
action?: () => void;
},
cancel?: {
title?: string;
titleStyle?: TextStyle;
action?: () => void;
},
): void {
if (this.state.title) {
this.hide(() => {
this.show(title, content, confirm, cancel);
});
return;
}
this.setState({
title: title,
content: content,
confirm: confirm,
cancel: cancel,
});
}
public hide(callback?: () => void): void {
if (!this.state.title) {
return;
}
this.popupRef.current?.hide(() => {
this.setState(
{
title: undefined,
content: undefined,
},
() => {
callback && callback();
},
);
});
}
render(): JSX.Element {
return (
<>
{this.state.title && (
<Popup
ref={this.popupRef}
content={
<View style={styles.container}>
<View style={styles.title}>
<Text style={styles.titleText} numberOfLines={8}>
{this.state.title}
</Text>
</View>
{this.state.content && (
<View style={styles.content}>{this.state.content}</View>
)}
<View style={styles.bottom}>
{this.state.cancel && (
<TouchableOpacity
style={styles.cancel}
onPress={() => {
this.hide(() => {
this.state.cancel?.action &&
this.state.cancel.action();
});
}}>
<Text
style={
this.state.cancel.titleStyle ?? styles.cancelText
}>
{this.state.cancel.title ?? '取消'}
</Text>
</TouchableOpacity>
)}
<TouchableOpacity
style={styles.confirm}
onPress={() => {
if (this.state.confirm?.noHide) {
this.state.confirm?.action &&
this.state.confirm.action();
} else {
this.hide(() => {
this.state.confirm?.action &&
this.state.confirm.action();
});
}
}}>
<Text
style={
this.state.confirm?.titleStyle ?? styles.confirmText
}>
{this.state.confirm?.title ?? '确定'}
</Text>
</TouchableOpacity>
</View>
</View>
}
type={'alert'}
options={{}}
/>
)}
</>
);
}
}
const styles = StyleSheet.create({
container: {
backgroundColor: '#FFFFFF',
borderRadius: 10,
width: 250,
},
title: {
borderTopLeftRadius: 10,
borderTopRightRadius: 10,
backgroundColor: '#FFFFFF',
alignItems: 'center',
justifyContent: 'center',
padding: 20,
},
titleText: {
fontSize: 16,
color: '#222222',
fontWeight: '500',
textAlign: 'justify',
lineHeight: 22,
},
content: {
marginHorizontal: 16,
marginBottom: 20,
},
bottom: {
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
backgroundColor: '#FFFFFF',
height: 50,
borderTopWidth: 0.5,
borderTopColor: '#E4E4E4',
flexDirection: 'row',
justifyContent: 'space-evenly',
},
cancel: {
flex: 1,
borderBottomLeftRadius: 10,
backgroundColor: '#FFFFFF',
alignItems: 'center',
justifyContent: 'center',
borderRightWidth: 0.5,
borderRightColor: '#E4E4E4',
},
cancelText: {
fontSize: 16,
color: '#B2B2B2',
fontWeight: '400',
},
confirm: {
flex: 1,
borderBottomLeftRadius: 10,
borderBottomRightRadius: 10,
backgroundColor: '#FFFFFF',
alignItems: 'center',
justifyContent: 'center',
},
confirmText: {
fontSize: 16,
color: '#4C81F7',
fontWeight: '500',
},
});
export default Alert;

查看文件

@ -0,0 +1,408 @@
import React, { Component, JSX } from 'react';
import {
StyleSheet,
Text,
TouchableOpacity,
View,
Animated,
LayoutChangeEvent,
BackHandler,
NativeEventSubscription,
} from 'react-native';
import {SafeAreaView} from 'react-native-safe-area-context';
// 等待 popup 库完成之后,将会被替换掉
const POPUP_ANIMATION_DURATION = 300;
const POPUP_BACKGROUND_COLOR = '#000000';
const POPUP_BACKGROUND_OPACITY = 0.2;
const POPUP_VERTICAL_OFFSET = 0;
type PopupOptions = {
duration?: number;
backgroundColor?: string;
backgroundOpacity?: number;
verticalOffset?: number;
};
type PopupType = 'top' | 'bottom' | 'alert';
interface PopupProps {
content: JSX.Element;
type: PopupType;
options?: PopupOptions;
onShown?: () => void;
onPressBackground?: () => void;
}
interface PopupState {
backgroundOpacity: Animated.Value;
top: Animated.Value;
bottom: Animated.Value;
contentOpacity: Animated.Value;
}
class Popup extends Component<PopupProps, PopupState> {
private contentHeight = 0;
constructor(props: PopupProps) {
super(props);
this.state = {
backgroundOpacity: new Animated.Value(0),
top: new Animated.Value(0),
bottom: new Animated.Value(0),
contentOpacity: new Animated.Value(0),
};
}
backHandler?: NativeEventSubscription;
backAction = () => {
return true;
};
componentDidMount() {
this.backHandler = BackHandler.addEventListener(
'hardwareBackPress',
this.backAction,
);
}
componentWillUnmount() {
this.backHandler?.remove();
}
show(): void {
Animated.parallel([
Animated.timing(this.state.backgroundOpacity, {
toValue:
this.props.options?.backgroundOpacity ?? POPUP_BACKGROUND_OPACITY,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
this.props.type === 'top'
? Animated.timing(this.state.top, {
toValue:
this.props.options?.verticalOffset ?? POPUP_VERTICAL_OFFSET,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: this.props.type === 'bottom'
? Animated.timing(this.state.bottom, {
toValue: -(
this.props.options?.verticalOffset ?? POPUP_VERTICAL_OFFSET
),
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: Animated.timing(this.state.contentOpacity, {
toValue: 1,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
]).start(finished => {
if (finished) {
this.props.onShown && this.props.onShown();
}
});
}
hide(callback?: () => void): void {
Animated.parallel([
Animated.timing(this.state.backgroundOpacity, {
toValue: 0,
duration: this.props.options?.duration ?? POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
this.props.type === 'top'
? Animated.timing(this.state.top, {
toValue: -this.contentHeight,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: this.props.type === 'bottom'
? Animated.timing(this.state.bottom, {
toValue: -this.contentHeight,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
})
: Animated.timing(this.state.contentOpacity, {
toValue: 0,
duration: POPUP_ANIMATION_DURATION,
useNativeDriver: false,
}),
]).start(finished => {
if (finished) {
callback && callback();
}
});
}
onLayout(event: LayoutChangeEvent): void {
const height = event.nativeEvent.layout.height;
if (height > 0 && this.contentHeight === 0) {
this.contentHeight = height;
this.state.top.setValue(-height);
this.state.bottom.setValue(-height);
this.show();
}
}
render(): JSX.Element {
return (
<View
style={
this.props.type === 'alert'
? popupStyles.containerAlert
: popupStyles.container
}>
<Animated.View
style={[
popupStyles.background,
{
opacity: this.state.backgroundOpacity,
backgroundColor:
this.props.options?.backgroundColor ?? POPUP_BACKGROUND_COLOR,
},
]}>
<TouchableOpacity
style={popupStyles.backgroundTouch}
onPress={() => {
this.props.onPressBackground && this.props.onPressBackground();
}}
/>
</Animated.View>
<Animated.View
style={
this.props.type === 'top'
? [popupStyles.content, {top: this.state.top}]
: this.props.type === 'bottom'
? [popupStyles.content, {bottom: this.state.bottom}]
: [
popupStyles.contentAlert,
{
opacity: this.state.contentOpacity,
top:
this.props.options?.verticalOffset ??
POPUP_VERTICAL_OFFSET,
},
]
}
onLayout={this.onLayout.bind(this)}>
{this.props.content}
</Animated.View>
</View>
);
}
}
const popupStyles = StyleSheet.create({
container: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
},
containerAlert: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
justifyContent: 'center',
alignItems: 'center',
},
background: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
},
backgroundTouch: {
flex: 1,
},
content: {
position: 'absolute',
left: 0,
right: 0,
},
contentAlert: {
justifyContent: 'center',
alignItems: 'center',
},
});
type BottomSheetItem = {
text: string;
};
interface State {
items?: BottomSheetItem[];
title?: string;
onSelected?: (item: BottomSheetItem) => void;
}
class BottomSheet extends Component<object, State> {
private static _ref: BottomSheet | null = null;
public static setRef(ref: BottomSheet | null): void {
BottomSheet._ref = ref;
}
public static show<T extends BottomSheetItem>(
items: T[],
title?: string,
onSelected?: (item: T) => void,
): void {
if (BottomSheet._ref) {
BottomSheet._ref.show(
items,
title,
onSelected as (item: BottomSheetItem) => void,
);
}
}
public static hide(callback?: () => void): void {
if (BottomSheet._ref) {
BottomSheet._ref.hide(callback);
}
}
private readonly popupRef: React.RefObject<Popup | null>;
constructor(props: object) {
super(props);
this.popupRef = React.createRef();
this.state = {
items: undefined,
title: undefined,
onSelected: undefined,
};
}
private show(
items: BottomSheetItem[],
title?: string,
onSelected?: (item: BottomSheetItem) => void,
): void {
if (this.state.title) {
this.hide(() => {
this.show(items, title, onSelected);
});
return;
}
this.setState({
items: items,
title: title,
onSelected: onSelected,
});
}
private hide(callback?: () => void): void {
if (!this.state.items) {
return;
}
this.popupRef.current?.hide(() => {
this.setState(
{
items: undefined,
title: undefined,
},
() => {
callback && callback();
},
);
});
}
render(): JSX.Element {
return (
<>
{this.state.items && (
<Popup
ref={this.popupRef}
content={
<SafeAreaView style={styles.content} edges={['bottom']}>
{this.state.title && (
<View style={styles.title}>
<Text style={styles.titleText}>{this.state.title}</Text>
</View>
)}
{this.state.items.map((item, index) => {
return (
<TouchableOpacity
key={index}
style={styles.item}
onPress={() => {
this.hide(() => {
this.state.onSelected && this.state.onSelected(item);
});
}}>
<Text style={styles.itemText}>{item.text}</Text>
</TouchableOpacity>
);
})}
<TouchableOpacity
style={styles.cancel}
onPress={() => {
this.hide();
}}>
<Text style={styles.cancelText}></Text>
</TouchableOpacity>
</SafeAreaView>
}
type={'bottom'}
options={{}}
onPressBackground={() => {
this.hide();
}}
/>
)}
</>
);
}
}
const styles = StyleSheet.create({
content: {
backgroundColor: '#F2F2F2',
},
title: {
backgroundColor: '#FFFFFF',
height: 50,
alignItems: 'center',
justifyContent: 'center',
},
titleText: {
fontSize: 16,
color: '#222222',
fontWeight: '500',
},
item: {
backgroundColor: '#FFFFFF',
height: 50,
alignItems: 'center',
justifyContent: 'center',
marginTop: 0.5,
},
itemText: {
fontSize: 14,
color: '#333333',
fontWeight: '400',
},
cancel: {
backgroundColor: '#FFFFFF',
height: 50,
alignItems: 'center',
justifyContent: 'center',
marginTop: 6,
},
cancelText: {
fontSize: 14,
color: '#666666',
fontWeight: '400',
},
});
export default BottomSheet;

查看文件

@ -0,0 +1,18 @@
import React from 'react';
import {Image, StyleSheet} from 'react-native';
export default function HeaderBackImage() {
return (
<Image
style={styles.backImage}
source={require('@common/assets/images/common_arrow_back.png')}
/>
);
}
const styles = StyleSheet.create({
backImage: {
marginHorizontal: 16,
marginVertical: 10,
},
});

查看文件

@ -1,5 +0,0 @@
import { AppRegistry } from 'react-native';
import Hospital from './Hospital.tsx';
import { Apps } from '@common/NavigationHelper.ts';
AppRegistry.registerComponent(Apps.Hospital, () => Hospital);

查看文件

@ -13,11 +13,11 @@ import {
useColorScheme,
View,
} from 'react-native';
import { pop } from '../common/NavigationHelper.ts';
import { pop } from '@common/NavigationHelper.ts';
import { showMessage } from '@common/ToastHelper.ts';
import Toast from 'react-native-toast-message';
function Hospital() {
function HospitalMain() {
const isDarkMode = useColorScheme() === 'dark';
return (
@ -49,4 +49,4 @@ const styles = StyleSheet.create({
},
});
export default Hospital;
export default HospitalMain;

查看文件

@ -0,0 +1,5 @@
import { AppRegistry } from 'react-native';
import { Apps } from '@common/NavigationHelper.ts';
import HospitalMain from './HospitalMain.tsx';
AppRegistry.registerComponent(Apps.Hospital, () => HospitalMain);

查看文件

@ -15,7 +15,7 @@ import {
import { showMessage } from '@common/ToastHelper.ts';
import Toast from 'react-native-toast-message';
function YWQ() {
function YwqMain() {
const isDarkMode = useColorScheme() === 'dark';
return (
@ -41,4 +41,4 @@ const styles = StyleSheet.create({
},
});
export default YWQ;
export default YwqMain;

5
src/miniapp/ywq/ywq.ts 普通文件
查看文件

@ -0,0 +1,5 @@
import { AppRegistry } from 'react-native';
import YwqMain from './YwqMain.tsx';
import { Apps } from '@common/NavigationHelper';
AppRegistry.registerComponent(Apps.Ywq, () => YwqMain);

查看文件

@ -1,5 +0,0 @@
import { AppRegistry } from 'react-native';
import YWQ from '@ywx/Ywq.tsx';
import { Apps } from '@common/NavigationHelper.ts';
AppRegistry.registerComponent(Apps.Ywq, () => YWQ);

查看文件

@ -6,17 +6,17 @@
"@/*": [
"src/*"
],
"@ywx/*": [
"src/ywq/*"
"@common/*": [
"src/common/*"
],
"@app/*": [
"src/app/*"
],
"@hospital/*": [
"src/hospital/*"
"@ywx/*": [
"src/miniapp/ywq/*"
],
"@common/*": [
"src/common/*"
"@hospital/*": [
"src/miniapp/hospital/*"
],
},
"experimentalDecorators": true,

622
yarn.lock
查看文件

@ -974,7 +974,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
"@babel/runtime@^7.25.0":
"@babel/runtime@^7.25.0", "@babel/runtime@^7.5.5":
version "7.27.6"
resolved "https://nexus-inner.51trust.com/repository/npm/@babel/runtime/-/runtime-7.27.6.tgz"
integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==
@ -1027,6 +1027,226 @@
resolved "https://nexus-inner.51trust.com/repository/npm/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@changesets/apply-release-plan@^7.0.12":
version "7.0.12"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz#8413977f117fa95f6e2db6f0c35479a2eba6960a"
integrity sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==
dependencies:
"@changesets/config" "^3.1.1"
"@changesets/get-version-range-type" "^0.4.0"
"@changesets/git" "^3.0.4"
"@changesets/should-skip-package" "^0.1.2"
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
detect-indent "^6.0.0"
fs-extra "^7.0.1"
lodash.startcase "^4.4.0"
outdent "^0.5.0"
prettier "^2.7.1"
resolve-from "^5.0.0"
semver "^7.5.3"
"@changesets/assemble-release-plan@^6.0.9":
version "6.0.9"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz#8aa5baf0037a85812e320172e83b92ca31e85fd6"
integrity sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==
dependencies:
"@changesets/errors" "^0.2.0"
"@changesets/get-dependents-graph" "^2.1.3"
"@changesets/should-skip-package" "^0.1.2"
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
semver "^7.5.3"
"@changesets/changelog-git@^0.2.1":
version "0.2.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/changelog-git/-/changelog-git-0.2.1.tgz#7f311f3dc11eae1235aa7fd2c1807112962b409b"
integrity sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==
dependencies:
"@changesets/types" "^6.1.0"
"@changesets/changelog-github@^0.5.0":
version "0.5.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/changelog-github/-/changelog-github-0.5.1.tgz#58870f77cdfd6d59c73cc046a61e55e82d606d24"
integrity sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==
dependencies:
"@changesets/get-github-info" "^0.6.0"
"@changesets/types" "^6.1.0"
dotenv "^8.1.0"
"@changesets/cli@^2.27.1":
version "2.29.5"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/cli/-/cli-2.29.5.tgz#7ff589686b5a16b6790962ac09182c7462db4899"
integrity sha512-0j0cPq3fgxt2dPdFsg4XvO+6L66RC0pZybT9F4dG5TBrLA3jA/1pNkdTXH9IBBVHkgsKrNKenI3n1mPyPlIydg==
dependencies:
"@changesets/apply-release-plan" "^7.0.12"
"@changesets/assemble-release-plan" "^6.0.9"
"@changesets/changelog-git" "^0.2.1"
"@changesets/config" "^3.1.1"
"@changesets/errors" "^0.2.0"
"@changesets/get-dependents-graph" "^2.1.3"
"@changesets/get-release-plan" "^4.0.13"
"@changesets/git" "^3.0.4"
"@changesets/logger" "^0.1.1"
"@changesets/pre" "^2.0.2"
"@changesets/read" "^0.6.5"
"@changesets/should-skip-package" "^0.1.2"
"@changesets/types" "^6.1.0"
"@changesets/write" "^0.4.0"
"@manypkg/get-packages" "^1.1.3"
ansi-colors "^4.1.3"
ci-info "^3.7.0"
enquirer "^2.4.1"
external-editor "^3.1.0"
fs-extra "^7.0.1"
mri "^1.2.0"
p-limit "^2.2.0"
package-manager-detector "^0.2.0"
picocolors "^1.1.0"
resolve-from "^5.0.0"
semver "^7.5.3"
spawndamnit "^3.0.1"
term-size "^2.1.0"
"@changesets/config@^3.1.1":
version "3.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/config/-/config-3.1.1.tgz#3e5b1f74236a4552c5f4eddf2bd05a43a0b71160"
integrity sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==
dependencies:
"@changesets/errors" "^0.2.0"
"@changesets/get-dependents-graph" "^2.1.3"
"@changesets/logger" "^0.1.1"
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
fs-extra "^7.0.1"
micromatch "^4.0.8"
"@changesets/errors@^0.2.0":
version "0.2.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/errors/-/errors-0.2.0.tgz#3c545e802b0f053389cadcf0ed54e5636ff9026a"
integrity sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==
dependencies:
extendable-error "^0.1.5"
"@changesets/get-dependents-graph@^2.1.3":
version "2.1.3"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz#cd31b39daab7102921fb65acdcb51b4658502eee"
integrity sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==
dependencies:
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
picocolors "^1.1.0"
semver "^7.5.3"
"@changesets/get-github-info@^0.6.0":
version "0.6.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/get-github-info/-/get-github-info-0.6.0.tgz#faba66a20a3a5a0cbabea28efd43c9ede7429f11"
integrity sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==
dependencies:
dataloader "^1.4.0"
node-fetch "^2.5.0"
"@changesets/get-release-plan@^4.0.13":
version "4.0.13"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz#02e2d9b89a3911bfc4bf1dafe237098b4b7454e9"
integrity sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==
dependencies:
"@changesets/assemble-release-plan" "^6.0.9"
"@changesets/config" "^3.1.1"
"@changesets/pre" "^2.0.2"
"@changesets/read" "^0.6.5"
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
"@changesets/get-version-range-type@^0.4.0":
version "0.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz#429a90410eefef4368502c41c63413e291740bf5"
integrity sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==
"@changesets/git@^3.0.4":
version "3.0.4"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/git/-/git-3.0.4.tgz#75e3811ab407ec010beb51131ceb5c6b3975c914"
integrity sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==
dependencies:
"@changesets/errors" "^0.2.0"
"@manypkg/get-packages" "^1.1.3"
is-subdir "^1.1.1"
micromatch "^4.0.8"
spawndamnit "^3.0.1"
"@changesets/logger@^0.1.1":
version "0.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/logger/-/logger-0.1.1.tgz#9926ac4dc8fb00472fe1711603b6b4755d64b435"
integrity sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==
dependencies:
picocolors "^1.1.0"
"@changesets/parse@^0.4.1":
version "0.4.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/parse/-/parse-0.4.1.tgz#18ba51d2eb784d27469034f06344f8fdcba586df"
integrity sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==
dependencies:
"@changesets/types" "^6.1.0"
js-yaml "^3.13.1"
"@changesets/pre@^2.0.2":
version "2.0.2"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/pre/-/pre-2.0.2.tgz#b35e84d25fca8b970340642ca04ce76c7fc34ced"
integrity sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==
dependencies:
"@changesets/errors" "^0.2.0"
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
fs-extra "^7.0.1"
"@changesets/read@^0.6.5":
version "0.6.5"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/read/-/read-0.6.5.tgz#7a68457e6356d3df187aa18e388f1b8dba3d2156"
integrity sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==
dependencies:
"@changesets/git" "^3.0.4"
"@changesets/logger" "^0.1.1"
"@changesets/parse" "^0.4.1"
"@changesets/types" "^6.1.0"
fs-extra "^7.0.1"
p-filter "^2.1.0"
picocolors "^1.1.0"
"@changesets/should-skip-package@^0.1.2":
version "0.1.2"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz#c018e1e05eab3d97afa4c4590f2b0db7486ae488"
integrity sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==
dependencies:
"@changesets/types" "^6.1.0"
"@manypkg/get-packages" "^1.1.3"
"@changesets/types@^4.0.1":
version "4.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/types/-/types-4.1.0.tgz#fb8f7ca2324fd54954824e864f9a61a82cb78fe0"
integrity sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==
"@changesets/types@^6.1.0":
version "6.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/types/-/types-6.1.0.tgz#12a4c8490827d26bc6fbf97a151499be2fb6d2f5"
integrity sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==
"@changesets/write@^0.4.0":
version "0.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@changesets/write/-/write-0.4.0.tgz#ec903cbd8aa9b6da6fa09ef19fb609eedd115ed6"
integrity sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==
dependencies:
"@changesets/types" "^6.1.0"
fs-extra "^7.0.1"
human-id "^4.1.1"
prettier "^2.7.1"
"@egjs/hammerjs@^2.0.17":
version "2.0.17"
resolved "https://nexus-inner.51trust.com/repository/npm/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124"
integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==
dependencies:
"@types/hammerjs" "^2.0.36"
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.7.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz"
@ -1355,6 +1575,28 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@manypkg/find-root@^1.1.0":
version "1.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@manypkg/find-root/-/find-root-1.1.0.tgz#a62d8ed1cd7e7d4c11d9d52a8397460b5d4ad29f"
integrity sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==
dependencies:
"@babel/runtime" "^7.5.5"
"@types/node" "^12.7.1"
find-up "^4.1.0"
fs-extra "^8.1.0"
"@manypkg/get-packages@^1.1.3":
version "1.1.3"
resolved "https://nexus-inner.51trust.com/repository/npm/@manypkg/get-packages/-/get-packages-1.1.3.tgz#e184db9bba792fa4693de4658cfb1463ac2c9c47"
integrity sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==
dependencies:
"@babel/runtime" "^7.5.5"
"@changesets/types" "^4.0.1"
"@manypkg/find-root" "^1.1.0"
fs-extra "^8.1.0"
globby "^11.0.0"
read-yaml-file "^1.1.0"
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://nexus-inner.51trust.com/repository/npm/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz"
@ -1729,6 +1971,54 @@
invariant "^2.2.4"
nullthrows "^1.1.1"
"@react-navigation/core@^7.12.1":
version "7.12.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@react-navigation/core/-/core-7.12.1.tgz#aed4ad5fe88f3304c9ab2ac0c97d7014e8f6c3c5"
integrity sha512-ir6s25CDkReufi0vQhSIAe+AAHHJN9zTgGlS6iDS1yqbwgl2MiBAZzpaOL1T5llYujie2jF/bODeLz2j4k80zw==
dependencies:
"@react-navigation/routers" "^7.4.1"
escape-string-regexp "^4.0.0"
nanoid "^3.3.11"
query-string "^7.1.3"
react-is "^19.1.0"
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
"@react-navigation/elements@^2.5.2":
version "2.5.2"
resolved "https://nexus-inner.51trust.com/repository/npm/@react-navigation/elements/-/elements-2.5.2.tgz#e74aed3671f280773b0066c308f679a0e9e679ab"
integrity sha512-aGC3ukF5+lXuiF5bK7bJyRuWCE+Tk4MZ3GoQpAb7u7+m0KmsquliDhj4UCWEUU5kUoCeoRAUvv+1lKcYKf+WTQ==
dependencies:
color "^4.2.3"
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
"@react-navigation/native@^7.1.14":
version "7.1.14"
resolved "https://nexus-inner.51trust.com/repository/npm/@react-navigation/native/-/native-7.1.14.tgz#6b5b57bba4c5f45bfc9961da2f921aba5215dfad"
integrity sha512-X233/CNx41FpshlWe4uEAUN8CNem3ju4t5pnVKcdhDR0cTQT1rK6P0ZwjSylD9zXdnHvJttFjBhKTot6TcvSqA==
dependencies:
"@react-navigation/core" "^7.12.1"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.3.11"
use-latest-callback "^0.2.4"
"@react-navigation/routers@^7.4.1":
version "7.4.1"
resolved "https://nexus-inner.51trust.com/repository/npm/@react-navigation/routers/-/routers-7.4.1.tgz#8bbce1cfc7080a8aa3588910a934ee11c3a72406"
integrity sha512-42mZrMzQ0LfKxUb5OHIurYrPYyRsXFLolucILrvm21f0O40Sw0Ufh1bnn/jRqnxZZu7wvpUGIGYM8nS9zVE1Aw==
dependencies:
nanoid "^3.3.11"
"@react-navigation/stack@^7.4.2":
version "7.4.2"
resolved "https://nexus-inner.51trust.com/repository/npm/@react-navigation/stack/-/stack-7.4.2.tgz#55f64bc1131eb86528a3509f77779a0c2fb2e327"
integrity sha512-QlqBxKBfKVx/XRH04pRRGQ92tO1fV0RL7YEw5G4pew6CNY26102dVQl5A39ZztvlvEDQbCQkatyDS7i2xR1QiA==
dependencies:
"@react-navigation/elements" "^2.5.2"
color "^4.2.3"
"@sideway/address@^4.1.5":
version "4.1.5"
resolved "https://nexus-inner.51trust.com/repository/npm/@sideway/address/-/address-4.1.5.tgz"
@ -1805,6 +2095,11 @@
dependencies:
"@types/node" "*"
"@types/hammerjs@^2.0.36":
version "2.0.46"
resolved "https://nexus-inner.51trust.com/repository/npm/@types/hammerjs/-/hammerjs-2.0.46.tgz#381daaca1360ff8a7c8dff63f32e69745b9fb1e1"
integrity sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.6"
resolved "https://nexus-inner.51trust.com/repository/npm/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz"
@ -1844,6 +2139,11 @@
dependencies:
undici-types "~7.8.0"
"@types/node@^12.7.1":
version "12.20.55"
resolved "https://nexus-inner.51trust.com/repository/npm/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240"
integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==
"@types/react-test-renderer@^19.1.0":
version "19.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz"
@ -2071,6 +2371,11 @@ anser@^1.4.9:
resolved "https://nexus-inner.51trust.com/repository/npm/anser/-/anser-1.4.10.tgz"
integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==
ansi-colors@^4.1.1, ansi-colors@^4.1.3:
version "4.1.3"
resolved "https://nexus-inner.51trust.com/repository/npm/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/ansi-escapes/-/ansi-escapes-1.4.0.tgz"
@ -2410,6 +2715,13 @@ base64-js@^1.3.1, base64-js@^1.5.1:
resolved "https://nexus-inner.51trust.com/repository/npm/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
better-path-resolve@1.0.0:
version "1.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/better-path-resolve/-/better-path-resolve-1.0.0.tgz#13a35a1104cdd48a7b74bf8758f96a1ee613f99d"
integrity sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==
dependencies:
is-windows "^1.0.0"
bl@^4.1.0:
version "4.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/bl/-/bl-4.1.0.tgz"
@ -2588,6 +2900,11 @@ chardet@^0.4.0:
resolved "https://nexus-inner.51trust.com/repository/npm/chardet/-/chardet-0.4.2.tgz"
integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==
chardet@^0.7.0:
version "0.7.0"
resolved "https://nexus-inner.51trust.com/repository/npm/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
chrome-launcher@^0.15.2:
version "0.15.2"
resolved "https://nexus-inner.51trust.com/repository/npm/chrome-launcher/-/chrome-launcher-0.15.2.tgz"
@ -2615,7 +2932,7 @@ ci-info@^2.0.0:
resolved "https://nexus-inner.51trust.com/repository/npm/ci-info/-/ci-info-2.0.0.tgz"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
ci-info@^3.2.0:
ci-info@^3.2.0, ci-info@^3.7.0:
version "3.9.0"
resolved "https://nexus-inner.51trust.com/repository/npm/ci-info/-/ci-info-3.9.0.tgz"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
@ -2701,11 +3018,27 @@ color-name@1.1.3:
resolved "https://nexus-inner.51trust.com/repository/npm/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://nexus-inner.51trust.com/repository/npm/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.9.0:
version "1.9.1"
resolved "https://nexus-inner.51trust.com/repository/npm/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
color@^4.2.3:
version "4.2.3"
resolved "https://nexus-inner.51trust.com/repository/npm/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
dependencies:
color-convert "^2.0.1"
color-string "^1.9.0"
colorette@^1.0.7:
version "1.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/colorette/-/colorette-1.4.0.tgz"
@ -2821,7 +3154,7 @@ create-jest@^29.7.0:
jest-util "^29.7.0"
prompts "^2.0.1"
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5:
version "7.0.6"
resolved "https://nexus-inner.51trust.com/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz"
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
@ -2862,6 +3195,11 @@ data-view-byte-offset@^1.0.1:
es-errors "^1.3.0"
is-data-view "^1.0.1"
dataloader@^1.4.0:
version "1.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8"
integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==
dayjs@^1.8.15:
version "1.11.13"
resolved "https://nexus-inner.51trust.com/repository/npm/dayjs/-/dayjs-1.11.13.tgz"
@ -2886,6 +3224,11 @@ decamelize@^1.2.0:
resolved "https://nexus-inner.51trust.com/repository/npm/decamelize/-/decamelize-1.2.0.tgz"
integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
decode-uri-component@^0.2.2:
version "0.2.2"
resolved "https://nexus-inner.51trust.com/repository/npm/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
dedent@^1.0.0:
version "1.6.0"
resolved "https://nexus-inner.51trust.com/repository/npm/dedent/-/dedent-1.6.0.tgz"
@ -2936,6 +3279,11 @@ destroy@1.2.0:
resolved "https://nexus-inner.51trust.com/repository/npm/destroy/-/destroy-1.2.0.tgz"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
detect-indent@^6.0.0:
version "6.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
detect-newline@^3.0.0:
version "3.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/detect-newline/-/detect-newline-3.1.0.tgz"
@ -2967,6 +3315,11 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
dotenv@^8.1.0:
version "8.6.0"
resolved "https://nexus-inner.51trust.com/repository/npm/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
dunder-proto@^1.0.0, dunder-proto@^1.0.1:
version "1.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz"
@ -3013,6 +3366,14 @@ encoding@^0.1.11:
dependencies:
iconv-lite "^0.6.2"
enquirer@^2.4.1:
version "2.4.1"
resolved "https://nexus-inner.51trust.com/repository/npm/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
dependencies:
ansi-colors "^4.1.1"
strip-ansi "^6.0.1"
env-paths@^2.2.1:
version "2.2.1"
resolved "https://nexus-inner.51trust.com/repository/npm/env-paths/-/env-paths-2.2.1.tgz"
@ -3423,6 +3784,11 @@ exponential-backoff@^3.1.1:
resolved "https://nexus-inner.51trust.com/repository/npm/exponential-backoff/-/exponential-backoff-3.1.2.tgz"
integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==
extendable-error@^0.1.5:
version "0.1.7"
resolved "https://nexus-inner.51trust.com/repository/npm/extendable-error/-/extendable-error-0.1.7.tgz#60b9adf206264ac920058a7395685ae4670c2b96"
integrity sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==
external-editor@^2.0.1:
version "2.2.0"
resolved "https://nexus-inner.51trust.com/repository/npm/external-editor/-/external-editor-2.2.0.tgz"
@ -3432,6 +3798,15 @@ external-editor@^2.0.1:
iconv-lite "^0.4.17"
tmp "^0.0.33"
external-editor@^3.1.0:
version "3.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
dependencies:
chardet "^0.7.0"
iconv-lite "^0.4.24"
tmp "^0.0.33"
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://nexus-inner.51trust.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@ -3500,6 +3875,11 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
filter-obj@^1.1.0:
version "1.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
finalhandler@1.1.2:
version "1.1.2"
resolved "https://nexus-inner.51trust.com/repository/npm/finalhandler/-/finalhandler-1.1.2.tgz"
@ -3574,6 +3954,15 @@ fresh@0.5.2:
resolved "https://nexus-inner.51trust.com/repository/npm/fresh/-/fresh-0.5.2.tgz"
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
fs-extra@^7.0.1:
version "7.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/fs-extra/-/fs-extra-8.1.0.tgz"
@ -3719,7 +4108,7 @@ globalthis@^1.0.4:
define-properties "^1.2.1"
gopd "^1.0.1"
globby@^11.1.0:
globby@^11.0.0, globby@^11.1.0:
version "11.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/globby/-/globby-11.1.0.tgz"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@ -3736,7 +4125,7 @@ gopd@^1.0.1, gopd@^1.2.0:
resolved "https://nexus-inner.51trust.com/repository/npm/gopd/-/gopd-1.2.0.tgz"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://nexus-inner.51trust.com/repository/npm/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@ -3820,6 +4209,13 @@ hermes-parser@0.29.1:
dependencies:
hermes-estree "0.29.1"
hoist-non-react-statics@^3.3.0:
version "3.3.2"
resolved "https://nexus-inner.51trust.com/repository/npm/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
dependencies:
react-is "^16.7.0"
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://nexus-inner.51trust.com/repository/npm/html-escaper/-/html-escaper-2.0.2.tgz"
@ -3844,12 +4240,17 @@ https-proxy-agent@^7.0.5:
agent-base "^7.1.2"
debug "4"
human-id@^4.1.1:
version "4.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/human-id/-/human-id-4.1.1.tgz#2801fbd61b9a5c1c9170f332802db6408a39a4b0"
integrity sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==
human-signals@^2.1.0:
version "2.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
iconv-lite@0.4.24, iconv-lite@^0.4.17:
iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24:
version "0.4.24"
resolved "https://nexus-inner.51trust.com/repository/npm/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@ -3971,6 +4372,11 @@ is-arrayish@^0.2.1:
resolved "https://nexus-inner.51trust.com/repository/npm/is-arrayish/-/is-arrayish-0.2.1.tgz"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://nexus-inner.51trust.com/repository/npm/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-async-function@^2.0.0:
version "2.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/is-async-function/-/is-async-function-2.1.1.tgz"
@ -4158,6 +4564,13 @@ is-string@^1.1.1:
call-bound "^1.0.3"
has-tostringtag "^1.0.2"
is-subdir@^1.1.1:
version "1.2.0"
resolved "https://nexus-inner.51trust.com/repository/npm/is-subdir/-/is-subdir-1.2.0.tgz#b791cd28fab5202e91a08280d51d9d7254fd20d4"
integrity sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==
dependencies:
better-path-resolve "1.0.0"
is-symbol@^1.0.4, is-symbol@^1.1.1:
version "1.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/is-symbol/-/is-symbol-1.1.1.tgz"
@ -4199,6 +4612,11 @@ is-weakset@^2.0.3:
call-bound "^1.0.3"
get-intrinsic "^1.2.6"
is-windows@^1.0.0:
version "1.0.2"
resolved "https://nexus-inner.51trust.com/repository/npm/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
is-wsl@^1.1.0:
version "1.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/is-wsl/-/is-wsl-1.1.0.tgz"
@ -4660,7 +5078,7 @@ joi@^17.2.1:
resolved "https://nexus-inner.51trust.com/repository/npm/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
js-yaml@^3.13.1, js-yaml@^3.6.1:
version "3.14.1"
resolved "https://nexus-inner.51trust.com/repository/npm/js-yaml/-/js-yaml-3.14.1.tgz"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
@ -4815,6 +5233,11 @@ lodash.merge@^4.6.2:
resolved "https://nexus-inner.51trust.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.startcase@^4.4.0:
version "4.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
@ -5186,11 +5609,21 @@ minipass@^4.2.4:
resolved "https://nexus-inner.51trust.com/repository/npm/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
mitt@^3.0.1:
version "3.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mkdirp@^1.0.4:
version "1.0.4"
resolved "https://nexus-inner.51trust.com/repository/npm/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mri@^1.2.0:
version "1.2.0"
resolved "https://nexus-inner.51trust.com/repository/npm/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
ms@2.0.0:
version "2.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/ms/-/ms-2.0.0.tgz"
@ -5206,6 +5639,11 @@ mute-stream@0.0.7:
resolved "https://nexus-inner.51trust.com/repository/npm/mute-stream/-/mute-stream-0.0.7.tgz"
integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==
nanoid@^3.3.11:
version "3.3.11"
resolved "https://nexus-inner.51trust.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz"
@ -5234,6 +5672,13 @@ node-fetch@1.6.3:
encoding "^0.1.11"
is-stream "^1.0.1"
node-fetch@^2.5.0:
version "2.7.0"
resolved "https://nexus-inner.51trust.com/repository/npm/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
dependencies:
whatwg-url "^5.0.0"
node-int64@^0.4.0:
version "0.4.0"
resolved "https://nexus-inner.51trust.com/repository/npm/node-int64/-/node-int64-0.4.0.tgz"
@ -5442,6 +5887,11 @@ os-tmpdir@~1.0.2:
resolved "https://nexus-inner.51trust.com/repository/npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
outdent@^0.5.0:
version "0.5.0"
resolved "https://nexus-inner.51trust.com/repository/npm/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff"
integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==
own-keys@^1.0.1:
version "1.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/own-keys/-/own-keys-1.0.1.tgz"
@ -5451,6 +5901,13 @@ own-keys@^1.0.1:
object-keys "^1.1.1"
safe-push-apply "^1.0.0"
p-filter@^2.1.0:
version "2.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c"
integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==
dependencies:
p-map "^2.0.0"
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
resolved "https://nexus-inner.51trust.com/repository/npm/p-limit/-/p-limit-2.3.0.tgz"
@ -5486,11 +5943,23 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
p-map@^2.0.0:
version "2.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
p-try@^2.0.0:
version "2.2.0"
resolved "https://nexus-inner.51trust.com/repository/npm/p-try/-/p-try-2.2.0.tgz"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
package-manager-detector@^0.2.0:
version "0.2.11"
resolved "https://nexus-inner.51trust.com/repository/npm/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c"
integrity sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==
dependencies:
quansync "^0.2.7"
parent-module@^1.0.0:
version "1.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/parent-module/-/parent-module-1.0.1.tgz"
@ -5559,7 +6028,7 @@ path-type@^4.0.0:
resolved "https://nexus-inner.51trust.com/repository/npm/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
picocolors@^1.0.0, picocolors@^1.1.1:
picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@ -5569,6 +6038,11 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
resolved "https://nexus-inner.51trust.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^4.0.1:
version "4.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pinkie-promise@^2.0.0:
version "2.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
@ -5610,7 +6084,7 @@ prelude-ls@^1.2.1:
resolved "https://nexus-inner.51trust.com/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier@2.8.8:
prettier@2.8.8, prettier@^2.7.1:
version "2.8.8"
resolved "https://nexus-inner.51trust.com/repository/npm/prettier/-/prettier-2.8.8.tgz"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
@ -5675,6 +6149,21 @@ qs@6.13.0:
dependencies:
side-channel "^1.0.6"
quansync@^0.2.7:
version "0.2.10"
resolved "https://nexus-inner.51trust.com/repository/npm/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1"
integrity sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==
query-string@^7.1.3:
version "7.1.3"
resolved "https://nexus-inner.51trust.com/repository/npm/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==
dependencies:
decode-uri-component "^0.2.2"
filter-obj "^1.1.0"
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://nexus-inner.51trust.com/repository/npm/queue-microtask/-/queue-microtask-1.2.3.tgz"
@ -5710,7 +6199,7 @@ react-devtools-core@^6.1.1:
shell-quote "^1.6.1"
ws "^7"
react-is@^16.13.1:
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://nexus-inner.51trust.com/repository/npm/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@ -5730,11 +6219,44 @@ react-is@^19.1.0:
resolved "https://nexus-inner.51trust.com/repository/npm/react-is/-/react-is-19.1.0.tgz"
integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==
react-native-bundle-splitter@^3.0.1:
version "3.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-bundle-splitter/-/react-native-bundle-splitter-3.0.1.tgz#54792e6adbe6a156c986c7e7e8d4ca8c5753c115"
integrity sha512-YvG30oL+3uhPoYisRzMJLHjs5+X7NK8yLHqLKxLIvqZ9wGAvIJ+sJG09iQpLK+UCjEAEVP5he0F0vnzuokHyBw==
react-native-copilot@^3.3.3:
version "3.3.3"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-copilot/-/react-native-copilot-3.3.3.tgz#05f8b2a33c177e39d9c61fa7f4ea7e1020d91e5d"
integrity sha512-/LX70DSqVhjOsbSGC3r3RYg+FtovUUudqWKby2agbXb0PsIWaEvjoH5SNQRkBCW8DHbDlZoPMv6oGKSJm3BPrQ==
dependencies:
"@changesets/changelog-github" "^0.5.0"
"@changesets/cli" "^2.27.1"
mitt "^3.0.1"
react-native-device-info@^14.0.4:
version "14.0.4"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-device-info/-/react-native-device-info-14.0.4.tgz#56b24ace9ff29a66bdfc667209086421ed6cfdce"
integrity sha512-NX0wMAknSDBeFnEnSFQ8kkAcQrFHrG4Cl0mVjoD+0++iaKrOupiGpBXqs8xR0SeJyPC5zpdPl4h/SaBGly6UxA==
react-native-gesture-handler@^2.27.2:
version "2.27.2"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-gesture-handler/-/react-native-gesture-handler-2.27.2.tgz#d52e839e9cb225e75c9b6fce7438979ca6917512"
integrity sha512-+kNaY2m7uQu5+5ls8os6z92DTk9expsEAYsaPv30n08mrqX2r64G8iVGDwNWzZcId54+P7RlDnhyszTql0sQ0w==
dependencies:
"@egjs/hammerjs" "^2.0.17"
hoist-non-react-statics "^3.3.0"
invariant "^2.2.4"
react-native-root-siblings@^5.0.1:
version "5.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-root-siblings/-/react-native-root-siblings-5.0.1.tgz#97e050e5155228f65810fb1c466ff8e769c5272c"
integrity sha512-Ay3k/fBj6ReUkWX5WNS+oEAcgPLEGOK8n7K/L7D85mf3xvd8rm/b4spsv26E4HlFzluVx5HKbxEt9cl0wQ1u3g==
react-native-safe-area-context@^5.5.2:
version "5.5.2"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-safe-area-context/-/react-native-safe-area-context-5.5.2.tgz#a3c0e99385a45e31ef24d24358aa622cc9e1a069"
integrity sha512-t4YVbHa9uAGf+pHMabGrb0uHrD5ogAusSu842oikJ3YKXcYp6iB4PTGl0EZNkUIR3pCnw/CXKn42OCfhsS0JIw==
react-native-storage@^1.0.1:
version "1.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/react-native-storage/-/react-native-storage-1.0.1.tgz"
@ -5807,6 +6329,16 @@ react@19.1.0:
resolved "https://nexus-inner.51trust.com/repository/npm/react/-/react-19.1.0.tgz"
integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
read-yaml-file@^1.1.0:
version "1.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/read-yaml-file/-/read-yaml-file-1.1.0.tgz#9362bbcbdc77007cc8ea4519fe1c0b821a7ce0d8"
integrity sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==
dependencies:
graceful-fs "^4.1.5"
js-yaml "^3.6.1"
pify "^4.0.1"
strip-bom "^3.0.0"
readable-stream@^3.4.0:
version "3.6.2"
resolved "https://nexus-inner.51trust.com/repository/npm/readable-stream/-/readable-stream-3.6.2.tgz"
@ -6188,6 +6720,18 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
resolved "https://nexus-inner.51trust.com/repository/npm/signal-exit/-/signal-exit-3.0.7.tgz"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
signal-exit@^4.0.1:
version "4.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://nexus-inner.51trust.com/repository/npm/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
dependencies:
is-arrayish "^0.3.1"
sisteransi@^1.0.5:
version "1.0.5"
resolved "https://nexus-inner.51trust.com/repository/npm/sisteransi/-/sisteransi-1.0.5.tgz"
@ -6233,6 +6777,19 @@ source-map@^0.6.0, source-map@^0.6.1:
resolved "https://nexus-inner.51trust.com/repository/npm/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
spawndamnit@^3.0.1:
version "3.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/spawndamnit/-/spawndamnit-3.0.1.tgz#44410235d3dc4e21f8e4f740ae3266e4486c2aed"
integrity sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==
dependencies:
cross-spawn "^7.0.5"
signal-exit "^4.0.1"
split-on-first@^1.0.0:
version "1.1.0"
resolved "https://nexus-inner.51trust.com/repository/npm/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://nexus-inner.51trust.com/repository/npm/sprintf-js/-/sprintf-js-1.0.3.tgz"
@ -6275,6 +6832,11 @@ stop-iteration-iterator@^1.1.0:
es-errors "^1.3.0"
internal-slot "^1.1.0"
strict-uri-encode@^2.0.0:
version "2.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
string-length@^4.0.1:
version "4.0.2"
resolved "https://nexus-inner.51trust.com/repository/npm/string-length/-/string-length-4.0.2.tgz"
@ -6399,6 +6961,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
strip-bom@^3.0.0:
version "3.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
strip-bom@^4.0.0:
version "4.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/strip-bom/-/strip-bom-4.0.0.tgz"
@ -6443,6 +7010,11 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://nexus-inner.51trust.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
term-size@^2.1.0:
version "2.2.1"
resolved "https://nexus-inner.51trust.com/repository/npm/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
terser@^5.15.0:
version "5.43.1"
resolved "https://nexus-inner.51trust.com/repository/npm/terser/-/terser-5.43.1.tgz"
@ -6501,6 +7073,11 @@ toidentifier@1.0.1:
resolved "https://nexus-inner.51trust.com/repository/npm/toidentifier/-/toidentifier-1.0.1.tgz"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
tr46@~0.0.3:
version "0.0.3"
resolved "https://nexus-inner.51trust.com/repository/npm/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
ts-api-utils@^1.3.0:
version "1.4.3"
resolved "https://nexus-inner.51trust.com/repository/npm/ts-api-utils/-/ts-api-utils-1.4.3.tgz"
@ -6666,6 +7243,16 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
use-latest-callback@^0.2.4:
version "0.2.4"
resolved "https://nexus-inner.51trust.com/repository/npm/use-latest-callback/-/use-latest-callback-0.2.4.tgz#35c0f028f85a3f4cf025b06011110e87cc18f57e"
integrity sha512-LS2s2n1usUUnDq4oVh1ca6JFX9uSqUncTfAm44WMg0v6TxL7POUTk1B044NH8TeLkFbNajIsgDHcgNpNzZucdg==
use-sync-external-store@^1.5.0:
version "1.5.0"
resolved "https://nexus-inner.51trust.com/repository/npm/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0"
integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==
util-deprecate@^1.0.1:
version "1.0.2"
resolved "https://nexus-inner.51trust.com/repository/npm/util-deprecate/-/util-deprecate-1.0.2.tgz"
@ -6709,11 +7296,24 @@ wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://nexus-inner.51trust.com/repository/npm/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-fetch@^3.0.0:
version "3.6.20"
resolved "https://nexus-inner.51trust.com/repository/npm/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz"
integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://nexus-inner.51trust.com/repository/npm/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
version "1.1.1"
resolved "https://nexus-inner.51trust.com/repository/npm/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz"