agora-appbuilder-core 2.2.0 → 2.3.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +389 -82
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +32214 -3080
  6. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
  7. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
  8. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
  9. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  10. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
  11. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
  12. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
  13. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
  14. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
  15. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
  16. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
  17. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
  20. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
  21. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
  23. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
  24. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
  25. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
  26. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
  27. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
  28. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
  30. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
  31. package/template/agora-rn-uikit/src/Rtc/Create.tsx +22 -3
  32. package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
  33. package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
  34. package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
  35. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
  36. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
  37. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
  38. package/template/agora-rn-uikit/src/index.ts +12 -12
  39. package/template/babel.config.js +17 -1
  40. package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
  41. package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
  42. package/template/bridge/rtc/webNg/Types.ts +14 -0
  43. package/template/bridge/rtc/webNg/index.ts +5 -2
  44. package/template/bridge/rtm/web/index.ts +13 -7
  45. package/template/electron-builder.js +3 -2
  46. package/template/esbuild.rsdk.go +240 -0
  47. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  48. package/template/fpe-api/components.ts +43 -0
  49. package/template/fpe-api/context.ts +45 -0
  50. package/template/fpe-api/fpeEvents.ts +9 -0
  51. package/template/fpe-api/index.ts +21 -0
  52. package/template/fpe-api/install.ts +138 -0
  53. package/template/fpe-api/typeDefinition.ts +144 -0
  54. package/template/fpe-api/useFpe.tsx +35 -0
  55. package/template/fpe-api/utils.ts +61 -0
  56. package/template/fpe-implementation/createHook.ts +33 -0
  57. package/template/fpe-implementation/dummyFpe.ts +17 -0
  58. package/template/fpe-implementation/index.ts +1 -0
  59. package/template/fpe-todo.txt +14 -0
  60. package/template/fpe.config.js +29 -0
  61. package/template/global.d.ts +4 -0
  62. package/template/index.rsdk.tsx +27 -0
  63. package/template/index.wsdk.tsx +27 -0
  64. package/template/package.json +30 -13
  65. package/template/react-native-toast-message/src/index.js +9 -10
  66. package/template/react-native-toast-message/src/index.wsdk.js +419 -0
  67. package/template/src/App.tsx +97 -65
  68. package/template/src/AppWrapper.tsx +79 -0
  69. package/template/src/SDKAppWrapper.tsx +67 -0
  70. package/template/src/atoms/PrimaryButton.tsx +14 -8
  71. package/template/src/atoms/TextInput.tsx +13 -5
  72. package/template/src/components/Chat.tsx +178 -137
  73. package/template/src/components/ChatContext.ts +18 -22
  74. package/template/src/components/ColorConfigure.tsx +2 -2
  75. package/template/src/components/Controls.native.tsx +72 -62
  76. package/template/src/components/Controls.tsx +90 -69
  77. package/template/src/components/DeviceConfigure.tsx +1 -1
  78. package/template/src/components/DeviceContext.tsx +14 -7
  79. package/template/src/components/GraphQLProvider.tsx +9 -2
  80. package/template/src/components/GridVideo.tsx +20 -159
  81. package/template/src/components/HostControlView.tsx +54 -15
  82. package/template/src/components/Navbar.tsx +408 -157
  83. package/template/src/components/NetworkQualityContext.tsx +29 -22
  84. package/template/src/components/ParticipantsView.tsx +91 -115
  85. package/template/src/components/PinnedVideo.tsx +41 -188
  86. package/template/src/components/Precall.native.tsx +131 -97
  87. package/template/src/components/Precall.tsx +193 -158
  88. package/template/src/components/RTMConfigure.tsx +309 -415
  89. package/template/src/components/Router.sdk.ts +20 -0
  90. package/template/src/components/SessionContext.tsx +6 -3
  91. package/template/src/components/Settings.native.tsx +3 -0
  92. package/template/src/components/Settings.tsx +65 -31
  93. package/template/src/components/SettingsView.tsx +14 -8
  94. package/template/src/components/Share.tsx +188 -220
  95. package/template/src/components/StorageContext.tsx +5 -5
  96. package/template/src/components/StoreToken.tsx +5 -1
  97. package/template/src/components/chat-messages/useChatMessages.tsx +208 -0
  98. package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
  99. package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
  100. package/template/src/components/common/Error.tsx +54 -0
  101. package/template/src/components/common/Logo.tsx +35 -0
  102. package/template/src/components/common/index.tsx +8 -0
  103. package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
  104. package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
  105. package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
  106. package/template/src/components/dimension/DimensionContext.ts +27 -0
  107. package/template/src/components/dimension/DimensionProvider.tsx +34 -0
  108. package/template/src/components/livestream/LiveStreamContext.tsx +297 -273
  109. package/template/src/components/livestream/Types.ts +26 -7
  110. package/template/src/components/livestream/index.ts +13 -2
  111. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
  112. package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
  113. package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
  114. package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
  115. package/template/src/components/participants/AllHostParticipants.tsx +41 -53
  116. package/template/src/components/participants/MeParticipant.tsx +9 -10
  117. package/template/src/components/participants/ParticipantName.tsx +2 -1
  118. package/template/src/components/participants/RemoteParticipants.tsx +3 -3
  119. package/template/src/components/precall/LocalMute.native.tsx +91 -0
  120. package/template/src/components/precall/LocalMute.tsx +90 -0
  121. package/template/src/components/precall/VideoPreview.native.tsx +35 -0
  122. package/template/src/components/precall/VideoPreview.tsx +33 -0
  123. package/template/src/components/precall/index.tsx +28 -0
  124. package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
  125. package/template/src/components/precall/joinCallBtn.tsx +91 -0
  126. package/template/src/components/precall/meetingTitle.tsx +26 -0
  127. package/template/src/components/precall/selectDevice.tsx +46 -0
  128. package/template/src/components/precall/textInput.tsx +43 -0
  129. package/template/src/components/precall/usePreCall.tsx +41 -0
  130. package/template/src/components/styles.ts +20 -3
  131. package/template/src/components/useShareLink.tsx +237 -0
  132. package/template/src/components/useUserPreference.tsx +125 -0
  133. package/template/src/components/useWakeLock.tsx +3 -3
  134. package/template/src/custom-events/CustomEvents.ts +238 -0
  135. package/template/src/custom-events/index.tsx +4 -0
  136. package/template/src/custom-events/types.ts +51 -0
  137. package/template/src/language/default-labels/commonLabels.ts +21 -0
  138. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  139. package/template/src/language/default-labels/index.ts +38 -0
  140. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  141. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  142. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  143. package/template/src/language/default-labels/videoCallScreenLabels.ts +191 -0
  144. package/template/src/language/i18nTypes.ts +10 -0
  145. package/template/src/language/index.ts +18 -0
  146. package/template/src/language/useLanguage.tsx +92 -0
  147. package/template/src/pages/Authenticate.tsx +21 -15
  148. package/template/src/pages/Create.tsx +180 -159
  149. package/template/src/pages/Join.tsx +47 -32
  150. package/template/src/pages/VideoCall.tsx +138 -407
  151. package/template/src/pages/create/useCreate.tsx +37 -0
  152. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  153. package/template/src/pages/video-call/CustomUserContextHolder.tsx +20 -0
  154. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  155. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  156. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  157. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  158. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  159. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  160. package/template/src/pages/video-call/index.ts +20 -0
  161. package/template/src/rtm/RTMEngine.ts +58 -0
  162. package/template/src/rtm/utils.ts +44 -0
  163. package/template/src/rtm-events/EventUtils.ts +267 -0
  164. package/template/src/rtm-events/EventsQueue.ts +38 -0
  165. package/template/src/rtm-events/constants.ts +42 -0
  166. package/template/src/rtm-events/index.tsx +8 -0
  167. package/template/src/rtm-events/types.ts +7 -0
  168. package/template/src/subComponents/ChatBubble.tsx +21 -12
  169. package/template/src/subComponents/ChatContainer.tsx +79 -30
  170. package/template/src/subComponents/ChatInput.tsx +146 -70
  171. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  172. package/template/src/subComponents/Error.tsx +35 -24
  173. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  174. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  175. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  176. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  177. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  178. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  179. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  180. package/template/src/subComponents/LogoutButton.tsx +20 -5
  181. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  182. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  183. package/template/src/subComponents/Recording.tsx +46 -138
  184. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  185. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  186. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  187. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  188. package/template/src/subComponents/SelectDevice.tsx +88 -45
  189. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  190. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  191. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  192. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  193. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  194. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  195. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  196. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  197. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  198. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  199. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  200. package/template/src/subComponents/livestream/index.ts +10 -2
  201. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  202. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  203. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  204. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +61 -31
  205. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  206. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +104 -144
  207. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  208. package/template/src/subComponents/toastConfig.tsx +25 -20
  209. package/template/src/utils/IsAttendeeUser.ts +34 -0
  210. package/template/src/utils/SdkEvents.ts +68 -0
  211. package/template/src/utils/common.tsx +40 -0
  212. package/template/src/utils/eventEmitter.ts +29 -0
  213. package/template/src/utils/getMeetingInvite.ts +53 -0
  214. package/template/src/utils/index.tsx +11 -2
  215. package/template/src/utils/isAudioEnabled.ts +29 -0
  216. package/template/src/utils/isHostUser.ts +33 -0
  217. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  218. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  219. package/template/src/utils/isPSTNUser.ts +30 -0
  220. package/template/src/utils/isSDK.sdk.ts +5 -0
  221. package/template/src/utils/isSDK.ts +5 -0
  222. package/template/src/utils/isScreenShareUser.ts +31 -0
  223. package/template/src/utils/isVideoEnabled.ts +29 -0
  224. package/template/src/utils/useButtonTemplate.tsx +43 -0
  225. package/template/src/utils/useCreateMeeting.ts +74 -0
  226. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  227. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  228. package/template/src/utils/useGetName.ts +19 -0
  229. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  230. package/template/src/utils/useJoinMeeting.ts +128 -0
  231. package/template/src/utils/useLayout.tsx +40 -0
  232. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  233. package/template/src/utils/useLocalShareScreenUid.ts +19 -0
  234. package/template/src/utils/useMutePSTN.ts +43 -0
  235. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  236. package/template/src/utils/useNavParams.ts +6 -0
  237. package/template/src/utils/useNavigateTo.ts +8 -0
  238. package/template/src/utils/usePrivateMessages.ts +33 -0
  239. package/template/src/utils/useRemoteEndCall.ts +27 -0
  240. package/template/src/utils/useRemoteMute.ts +64 -0
  241. package/template/src/utils/useSendControlMessage.ts +51 -0
  242. package/template/src/utils/useSendMessage.ts +40 -0
  243. package/template/src/utils/useSetName.ts +18 -0
  244. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  245. package/template/src/utils/useSidePanel.tsx +41 -0
  246. package/template/src/utils/useString.ts +61 -0
  247. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  248. package/template/src/utils/useUserList.ts +26 -0
  249. package/template/tsconfig.json +4 -4
  250. package/template/tsconfig_fpeApi.json +103 -0
  251. package/template/tsconfig_rsdk_index.json +105 -0
  252. package/template/tsconfig_wsdk_index.json +104 -0
  253. package/template/webpack.commons.js +40 -16
  254. package/template/webpack.main.config.js +2 -1
  255. package/template/webpack.renderer.config.js +1 -1
  256. package/template/webpack.rsdk.config.js +33 -0
  257. package/template/webpack.ts.config.js +89 -0
  258. package/template/webpack.web.config.js +8 -1
  259. package/template/webpack.wsdk.config.js +34 -0
  260. package/template/agora-rn-uikit/.git/HEAD +0 -1
  261. package/template/agora-rn-uikit/.git/config +0 -16
  262. package/template/agora-rn-uikit/.git/description +0 -1
  263. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  264. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  265. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -173
  266. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  267. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  268. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  269. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  270. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  271. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  272. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  273. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  274. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  275. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  276. package/template/agora-rn-uikit/.git/index +0 -0
  277. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  278. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  279. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  280. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  281. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  282. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  283. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.pack +0 -0
  284. package/template/agora-rn-uikit/.git/packed-refs +0 -24
  285. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  286. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  287. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  288. package/template/agora-rn-uikit/.gitignore +0 -63
  289. package/template/agora-rn-uikit/package-lock.json +0 -7612
  290. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  291. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  292. package/template/package-lock.json +0 -22923
  293. package/template/react-native-toast-message/.gitignore +0 -5
  294. package/template/react-native-toast-message/.npmignore +0 -5
  295. package/template/react-native-toast-message/package-lock.json +0 -10553
  296. package/template/src/.DS_Store +0 -0
  297. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  298. package/template/src/subComponents/.DS_Store +0 -0
  299. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  300. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  301. package/template/src/utils/hasBrandLogo.tsx +0 -3
  302. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  303. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -0,0 +1,138 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import {FpeApiInterface} from './typeDefinition';
13
+ import ReactIs from 'react-is';
14
+ /**
15
+ *
16
+ * @param config FPE options to override the UI components and customize the application
17
+ * @returns config options
18
+ */
19
+
20
+ function isString(data: any) {
21
+ if (data && typeof data === 'string') {
22
+ return true;
23
+ }
24
+ return false;
25
+ }
26
+
27
+ function isFunction(data: any) {
28
+ if (data && typeof data === 'function') {
29
+ return true;
30
+ }
31
+ return false;
32
+ }
33
+
34
+ function isObject(data: any) {
35
+ if (data && typeof data === 'object') {
36
+ return true;
37
+ }
38
+ return false;
39
+ }
40
+
41
+ function isComponent(data: any) {
42
+ if (data && ReactIs.isValidElementType(data)) {
43
+ return true;
44
+ }
45
+ return false;
46
+ }
47
+
48
+ //These keys value are not react component. so doing indexOf and checking whether its function or not
49
+ const ignoreTheseKeys = ['customLayout', 'useUserContext'];
50
+
51
+ function validateComponents(components: any) {
52
+ for (const key in components) {
53
+ if (ignoreTheseKeys.indexOf(key) === -1) {
54
+ let comp = components[key];
55
+ if (comp) {
56
+ if (isComponent(comp) || isObject(comp)) {
57
+ if (isObject(comp)) {
58
+ validateComponents(comp);
59
+ }
60
+ } else {
61
+ console.error(
62
+ `InstallFPE:Error ${key} should be a react component or object`,
63
+ );
64
+ }
65
+ }
66
+ } else {
67
+ let comp = components[key];
68
+ if (comp && !isFunction(comp)) {
69
+ console.error(`InstallFPE:Error ${key} should be an function`);
70
+ }
71
+ }
72
+ }
73
+ }
74
+
75
+ function validateLifecycle(data: any) {
76
+ for (const key in data) {
77
+ const callback = data[key];
78
+ if (callback && !isFunction(callback)) {
79
+ console.error(
80
+ `InstallFPE:Error ${key} should be a function that return async function`,
81
+ );
82
+ }
83
+ }
84
+ }
85
+
86
+ function validateCustomRoutes(routes: any) {
87
+ if (routes && !Array.isArray(routes)) {
88
+ console.error(`InstallFPE:Error customRoutes should be an array`);
89
+ }
90
+ }
91
+
92
+ function validateAppRoot(data: any) {
93
+ if (data && !isComponent(data)) {
94
+ console.error(`InstallFPE:Error appRoot should be a react component`);
95
+ }
96
+ }
97
+
98
+ function validatei18n(data: any) {
99
+ if (data) {
100
+ if (!Array.isArray(data)) {
101
+ console.error(`InstallFPE:Error i18n should be an array`);
102
+ } else {
103
+ data.map((item) => {
104
+ const langData = item.data;
105
+ for (const key in langData) {
106
+ const value = langData[key];
107
+ if (value) {
108
+ if (!(isString(value) || isFunction(value))) {
109
+ console.error(
110
+ `InstallFPE:Error ${item.locale} ${key} should be a string or function`,
111
+ );
112
+ }
113
+ }
114
+ }
115
+ });
116
+ }
117
+ }
118
+ }
119
+ export const installFPE = (config: FpeApiInterface) => {
120
+ //validating the components
121
+ config?.components && validateComponents(config.components);
122
+
123
+ //validating the custom routes
124
+ //commented for v1 release
125
+ //config?.customRoutes && validateCustomRoutes(config.customRoutes);
126
+
127
+ //validating the app root
128
+ config?.appRoot && validateAppRoot(config.appRoot);
129
+
130
+ //validating the i18n
131
+ config?.i18n && validatei18n(config.i18n);
132
+
133
+ //validating the lifecycle
134
+ //commented for v1 release
135
+ //config?.lifecycle && validateLifecycle(config?.lifecycle);
136
+
137
+ return config;
138
+ };
@@ -0,0 +1,144 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React from 'react';
13
+ export type {ChatBubbleProps} from '../src/components/ChatContext';
14
+ import {ChatBubbleProps} from '../src/components/ChatContext';
15
+ import {
16
+ RenderInterface,
17
+ RenderStateInterface,
18
+ UidType,
19
+ } from '../agora-rn-uikit';
20
+ import {i18nInterface} from '../src/language/i18nTypes';
21
+ import {IconsInterface} from '../agora-rn-uikit/src/Controls/Icons';
22
+ export type {
23
+ ChatTextInputProps,
24
+ ChatSendButtonProps,
25
+ } from '../src/subComponents/ChatInput';
26
+ import {
27
+ ChatTextInputProps,
28
+ ChatSendButtonProps,
29
+ } from '../src/subComponents/ChatInput';
30
+
31
+ export const CUSTOM_ROUTES_PREFIX = '/r/';
32
+
33
+ interface BeforeAndAfterInterface {
34
+ // commented for v1 release
35
+ // before?: React.ComponentType;
36
+ // after?: React.ComponentType;
37
+ }
38
+
39
+ export interface PreCallInterface extends BeforeAndAfterInterface {
40
+ preview?: React.ComponentType;
41
+ audioMute?: React.ComponentType;
42
+ videoMute?: React.ComponentType;
43
+ meetingName?: React.ComponentType;
44
+ deviceSelect?: React.ComponentType;
45
+ joinButton?: React.ComponentType;
46
+ textBox?: React.ComponentType;
47
+ }
48
+ export interface ChatCmpInterface {
49
+ //commented for v1 release
50
+ //extends BeforeAndAfterInterface
51
+ chatBubble?: React.ComponentType<ChatBubbleProps>;
52
+ //commented for v1 release
53
+ //chatInput?: React.ComponentType<ChatTextInputProps>;
54
+ //chatSentButton?: React.ComponentType<ChatSendButtonProps>;
55
+ }
56
+
57
+ export interface renderComponentInterface {
58
+ user: RenderInterface;
59
+ }
60
+
61
+ export interface renderComponentObjectInterface {
62
+ [key: string]: React.ComponentType<renderComponentInterface>;
63
+ }
64
+
65
+ export type layoutComponent = React.ComponentType<{
66
+ renderData: RenderStateInterface['renderPosition'];
67
+ }>;
68
+
69
+ export interface layoutObjectBase {
70
+ name: string;
71
+ label: string;
72
+ component: layoutComponent;
73
+ }
74
+
75
+ export interface layoutObjectWithIcon extends layoutObjectBase {
76
+ icon: string;
77
+ iconName?: never;
78
+ }
79
+ export interface layoutObjectWithIconName extends layoutObjectBase {
80
+ icon?: never;
81
+ iconName: keyof IconsInterface;
82
+ }
83
+ export type layoutObjectType = layoutObjectWithIcon | layoutObjectWithIconName;
84
+
85
+ export interface VideoCallInterface extends BeforeAndAfterInterface {
86
+ // commented for v1 release
87
+ //topBar?: React.ComponentType;
88
+ //settingsPanel?: React.ComponentType;
89
+ participantsPanel?: React.ComponentType;
90
+ bottomBar?: React.ComponentType;
91
+ chat?: ChatCmpInterface;
92
+ customContent?: renderComponentObjectInterface;
93
+ customLayout?: (layouts: layoutObjectType[]) => layoutObjectType[];
94
+ useUserContext?: () => void;
95
+ }
96
+
97
+ export type ComponentsInterface = {
98
+ // commented for v1 release
99
+ //precall?: PreCallInterface | React.ComponentType;
100
+ //create?: React.ComponentType;
101
+ //share?: React.ComponentType;
102
+ //join?: React.ComponentType;
103
+ videoCall?: VideoCallInterface | React.ComponentType;
104
+ };
105
+
106
+ export interface CustomRoutesInterface {
107
+ path: string;
108
+ component: React.ComponentType;
109
+ exact?: boolean;
110
+ componentProps?: object;
111
+ isPrivateRoute?: boolean;
112
+ routeProps?: object;
113
+ failureRedirectTo?: string;
114
+ }
115
+
116
+ export type CustomHookType = () => () => Promise<void>;
117
+
118
+ export interface FpeApiInterface {
119
+ /**
120
+ * components used to replace whole screen or subcomponents
121
+ */
122
+ components?: ComponentsInterface;
123
+ /**
124
+ * custom routes used to add new page/routes
125
+ */
126
+ // commented for v1 release
127
+ //customRoutes?: CustomRoutesInterface[];
128
+ /**
129
+ * Custom context/api provider wrapped in root level
130
+ */
131
+ appRoot?: React.ComponentType;
132
+ /**
133
+ * Internationlization
134
+ */
135
+ i18n?: i18nInterface[];
136
+ /**
137
+ * Life cycle events
138
+ */
139
+ // commented for v1 release
140
+ // lifecycle?: {
141
+ // useBeforeJoin?: CustomHookType;
142
+ // useBeforeCreate?: CustomHookType;
143
+ // };
144
+ }
@@ -0,0 +1,35 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React from 'react';
13
+ import fpeConfig from 'test-fpe';
14
+ import {FpeApiInterface} from './typeDefinition';
15
+ import {createHook} from 'fpe-implementation';
16
+
17
+ const FpeContext: React.Context<FpeApiInterface> =
18
+ React.createContext(fpeConfig);
19
+
20
+ export interface FpeProviderInterface {
21
+ children: React.ReactNode;
22
+ value: FpeApiInterface;
23
+ }
24
+
25
+ const FpeProvider = (props: FpeProviderInterface) => {
26
+ return (
27
+ <FpeContext.Provider value={props.value}>
28
+ {props.children}
29
+ </FpeContext.Provider>
30
+ );
31
+ };
32
+
33
+ const useFpe = createHook(FpeContext);
34
+
35
+ export {useFpe, FpeProvider};
@@ -0,0 +1,61 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ // commented for v1 release
13
+ //export {default as useIsScreenShare} from '../src/utils/isScreenShareUser';
14
+ export {default as useIsHost} from '../src/utils/isHostUser';
15
+ export {default as useIsAttendee} from '../src/utils/IsAttendeeUser';
16
+ export {default as useIsPSTN} from '../src/utils/isPSTNUser';
17
+ export {default as useUserList} from '../src/utils/useUserList';
18
+ // commented for v1 release
19
+ //export {default as useGroupMessages} from '../src/utils/useGroupMessages';
20
+ //export {default as usePrivateMessages} from '../src/utils/usePrivateMessages';
21
+ export {default as useIsAudioEnabled} from '../src/utils/isAudioEnabled';
22
+ export {default as useIsVideoEnabled} from '../src/utils/isVideoEnabled';
23
+ export {default as useSetName} from '../src/utils/useSetName';
24
+ export {default as useGetName} from '../src/utils/useGetName';
25
+ export {useSidePanel} from '../src/utils/useSidePanel';
26
+ // commented for v1 release
27
+ // export {
28
+ // default as useUnreadMessageCount,
29
+ // UNREAD_MESSAGE_COUNT_TYPE,
30
+ // } from '../src/utils/useUnreadMessageCount';
31
+ // export {
32
+ // default as useSetUnreadMessageCount,
33
+ // SET_UNREAD_MESSAGE_COUNT_TYPE,
34
+ // } from '../src/utils/useSetUnreadMessageCount';
35
+ export {default as useNavigateTo} from '../src/utils/useNavigateTo';
36
+ export {default as useNavParams} from '../src/utils/useNavParams';
37
+ export {default as useCreateMeeting} from '../src/utils/useCreateMeeting';
38
+ export {default as useJoinMeeting} from '../src/utils/useJoinMeeting';
39
+ // commented for v1 release
40
+ // export {
41
+ // default as useSendMessage,
42
+ // MESSAGE_TYPE,
43
+ // } from '../src/utils/useSendMessage';
44
+ // export {controlMessageEnum} from '../src/components/ChatContext';
45
+ // export {
46
+ // default as useSendControlMessage,
47
+ // CONTROL_MESSAGE_TYPE,
48
+ // } from '../src/utils/useSendControlMessage';
49
+ export {
50
+ MUTE_LOCAL_TYPE,
51
+ default as useMuteToggleLocal,
52
+ } from '../src/utils/useMuteToggleLocal';
53
+ export {default as useRemoteEndcall} from '../src/utils/useRemoteEndCall';
54
+ export {
55
+ default as useRemoteMute,
56
+ MUTE_REMOTE_TYPE,
57
+ } from '../src/utils/useRemoteMute';
58
+ export {ToggleState} from '../agora-rn-uikit/src/Contexts/PropsContext';
59
+
60
+ //export common function
61
+ export * from '../src/utils/common';
@@ -0,0 +1,33 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React, { useContext } from 'react';
13
+ /**
14
+ *
15
+ * @param context - any context data which we want to extract the data.
16
+ * @returns useContextWithSelector in which we can pass selector function to extract data from the context that we passed.
17
+ */
18
+ function createHook<T>(context: React.Context<T>) {
19
+
20
+ function useContextWithSelector<U>(contextSelector: (data: T) => U): U;
21
+ function useContextWithSelector(): T;
22
+ /**
23
+ *
24
+ * @param contextSelector is used to pass callback function used to select data from the context data
25
+ * @returns the data selected from the context
26
+ */
27
+ function useContextWithSelector<U>(contextSelector?: (data: T) => U): U | T {
28
+ const data = useContext(context);
29
+ return contextSelector ? contextSelector(data) : data
30
+ }
31
+ return useContextWithSelector;
32
+ }
33
+ export default createHook;
@@ -0,0 +1,17 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import { installFPE } from "fpe-api/install";
13
+ /**
14
+ * Dummy FPE used to load when project doesn't have the FPE.
15
+ */
16
+ const data = installFPE({});
17
+ export default data;
@@ -0,0 +1 @@
1
+ export { default as createHook } from './createHook';
@@ -0,0 +1,14 @@
1
+ 1. test-fpe name should be changed
2
+ - template/_gitignore
3
+ - babel.config.js
4
+ - webpack.config.js
5
+ - fpe.config.js
6
+ - fpe-api index.ts
7
+ - fpe-api useFPE
8
+ 2. What if user called custom context without wrapping provider
9
+ - useContext will return the default vaule. so we can't identify whether is wrapped with the provider or not.
10
+ 3. CustomUserContext
11
+ 4. Add sibling into view without overriding
12
+ 5. Translation labels
13
+ - some of keys
14
+ 6.Layout dropdown implementation
@@ -0,0 +1,29 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+
13
+ /*
14
+ getFpePath - will return test-fpe if exists otherwise it will return the dummy fpe path
15
+ */
16
+ const fs = require('fs');
17
+ const FpePathTs = './test-fpe/index.ts';
18
+ const FpePathTsx = './test-fpe/index.tsx';
19
+ const FpeDummyPath = './fpe-implementation/dummyFpe.ts';
20
+ const getFpePath = () => {
21
+ if (fs.existsSync(FpePathTs)) {
22
+ return FpePathTs;
23
+ }
24
+ if (fs.existsSync(FpePathTsx)) {
25
+ return FpePathTsx;
26
+ }
27
+ return FpeDummyPath;
28
+ };
29
+ module.exports = getFpePath;
@@ -77,3 +77,7 @@ interface ConfigInterface {
77
77
  LOG_ENABLED: boolean;
78
78
  }
79
79
  declare var $config: ConfigInterface;
80
+ declare module 'test-fpe'{
81
+ const data:{}
82
+ export default data;
83
+ }
@@ -0,0 +1,27 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ /**
13
+ * @format
14
+ */
15
+ import SDKAppWrapper,{AppBuilderSdkApi,AppBuilderSdkApiInterface} from './src/SDKAppWrapper';
16
+ import React from 'react';
17
+ export * from 'fpe-api';
18
+
19
+ interface AppBuilderReactSdkInterface extends AppBuilderSdkApiInterface {
20
+ View: React.FC;
21
+ }
22
+
23
+ const AppBuilderReactSdkApi: AppBuilderReactSdkInterface = {
24
+ ...AppBuilderSdkApi,
25
+ View: SDKAppWrapper,
26
+ }
27
+ export default AppBuilderReactSdkApi;
@@ -0,0 +1,27 @@
1
+ import {AppRegistry} from 'react-native';
2
+ import SDKAppWrapper,{AppBuilderSdkApi,AppBuilderSdkApiInterface} from './src/SDKAppWrapper';
3
+ export * from 'fpe-api';
4
+
5
+ interface AppBuilderWebSdkInterface extends AppBuilderSdkApiInterface {
6
+ }
7
+
8
+ const AppBuilderWebSdkApi: AppBuilderWebSdkInterface = AppBuilderSdkApi;
9
+
10
+ // init code
11
+ class AppBuilder extends HTMLElement {
12
+ connectedCallback() {
13
+ this.style.height = '100%';
14
+ this.style.width = '100%';
15
+ this.style.display = 'flex';
16
+ this.style.flex = '1';
17
+ AppRegistry.registerComponent('App', () => SDKAppWrapper);
18
+ AppRegistry.runApplication('App', {
19
+ // initialProps: {passphrase: this.getAttribute('passphrase')},
20
+ rootTag: this,
21
+ });
22
+ }
23
+ }
24
+
25
+ customElements.define('app-builder', AppBuilder);
26
+
27
+ export default AppBuilderWebSdkApi;
@@ -6,15 +6,20 @@
6
6
  "scripts": {
7
7
  "android": "react-native run-android",
8
8
  "android:build": "npm run android:build:unix",
9
- "android:build:unix": "cd android && ./gradlew assembleRelease",
10
- "android:build:windows": "cd android && gradlew.bat assembleRelease",
9
+ "android:build:unix": "cross-env TARGET=android gulp androidUnix",
10
+ "android:build:windows": "cross-env TARGET=android gulp androidWin",
11
11
  "ios": "cd ios && ls | grep .xcworkspace | xargs open",
12
12
  "ios:build": "cd ios && ls | grep .xcworkspace | xargs open",
13
13
  "start": "react-native start",
14
14
  "web": "cross-env TARGET=web NODE_ENV=development webpack-dev-server --hot --open --config webpack.web.config.js",
15
+ "ts": "cross-env TARGET=web NODE_ENV=production webpack --config webpack.ts.config.js",
15
16
  "web:build": "cross-env TARGET=web NODE_ENV=production webpack --config webpack.web.config.js",
16
- "electron:start": "cross-env NODE_ENV=development gulp development",
17
- "electron:build": "cross-env NODE_ENV=production gulp build",
17
+ "web-sdk": "cross-env TARGET=wsdk NODE_ENV=development gulp webSdk",
18
+ "web-sdk:build": "cross-env TARGET=wsdk NODE_ENV=production gulp webSdk",
19
+ "react-sdk": "cross-env TARGET=rsdk NODE_ENV=development gulp reactSdk",
20
+ "react-sdk:build": "cross-env TARGET=rsdk NODE_ENV=production gulp reactSdk",
21
+ "electron:start": "cross-env NODE_ENV=development gulp electron_development",
22
+ "electron:build": "cross-env NODE_ENV=production gulp electron_build",
18
23
  "windows": "cross-env TARGET=windows npm run electron:start",
19
24
  "windows:build": "cross-env TARGET=windows npm run electron:build",
20
25
  "mac": "cross-env TARGET=mac npm run electron:start",
@@ -26,7 +31,9 @@
26
31
  "icons:android": "react-native set-icon --path ./build/icon.png",
27
32
  "icons:ios": "react-native set-icon --path ./build/icon.png",
28
33
  "package:mac": "npm run mac:build && electron-builder --publish=always",
29
- "release": "electron-builder --mac --windows --linux --publish always --config ./electron-builder.js "
34
+ "release": "electron-builder --mac --windows --linux --publish always --config ./electron-builder.js ",
35
+ "make-rsdk-ts-defs": "cross-env TARGET=rsdk NODE_ENV=production gulp makeRsdkTsDefs",
36
+ "make-wsdk-ts-defs": "cross-env TARGET=wsdk NODE_ENV=production gulp makeWsdkTsDefs"
30
37
  },
31
38
  "publish": [
32
39
  {
@@ -58,6 +65,7 @@
58
65
  "nosleep.js": "0.12.0",
59
66
  "react": "16.13.1",
60
67
  "react-dom": "16.13.1",
68
+ "react-is": "18.0.0",
61
69
  "react-native": "0.63.3",
62
70
  "react-native-agora": "3.4.2",
63
71
  "react-native-hyperlink": "0.0.19",
@@ -78,20 +86,23 @@
78
86
  "@babel/preset-typescript": "7.13.0",
79
87
  "@babel/runtime": "7.14.0",
80
88
  "@bam.tech/react-native-make": "3.0.3",
81
- "@pmmmwh/react-refresh-webpack-plugin": "0.3.3",
89
+ "@pmmmwh/react-refresh-webpack-plugin": "0.5.5",
82
90
  "@react-native-community/eslint-config": "1.1.0",
83
91
  "@types/jest": "25.2.3",
92
+ "@types/react-is": "17.0.3",
84
93
  "@types/react-native": "0.67.6",
85
94
  "@types/react-native-keep-awake": "2.0.2",
86
95
  "@types/react-router-dom": "5.1.7",
87
96
  "@types/react-router-native": "5.1.0",
88
97
  "@types/react-test-renderer": "16.9.5",
89
98
  "@types/webpack-dev-server": "3.11.4",
99
+ "@types/webpack-env": "^1.16.4",
90
100
  "@typescript-eslint/eslint-plugin": "2.34.0",
91
101
  "@typescript-eslint/parser": "2.34.0",
92
- "babel-jest": "25.5.1",
93
- "babel-loader": "8.2.2",
94
- "babel-plugin-transform-define": "2.0.0",
102
+ "babel-jest": "27.5.1",
103
+ "babel-loader": "8.2.4",
104
+ "babel-plugin-module-resolver": "4.1.0",
105
+ "babel-plugin-transform-define": "2.0.1",
95
106
  "cross-env": "7.0.3",
96
107
  "del": "5.1.0",
97
108
  "electron": "16.0.1",
@@ -100,18 +111,24 @@
100
111
  "eslint": "6.8.0",
101
112
  "file-loader": "6.2.0",
102
113
  "gulp": "4.0.2",
114
+ "gulp-concat": "^2.6.1",
115
+ "gulp-header": "^2.0.9",
116
+ "gulp-replace": "^1.1.3",
103
117
  "html-webpack-plugin": "4.5.2",
118
+ "ignore-loader": "^0.1.2",
104
119
  "jest": "25.5.4",
105
120
  "metro-react-native-babel-preset": "0.59.0",
106
121
  "prettier": "2.3.1",
107
122
  "react-devtools-electron": "4.7.0",
108
- "react-refresh": "0.8.3",
123
+ "react-refresh": "0.12.0",
109
124
  "react-test-renderer": "16.13.1",
125
+ "ts-loader": "^8.3.0",
110
126
  "typescript": "3.9.9",
111
- "webpack": "4.46.0",
112
- "webpack-cli": "3.3.12",
113
- "webpack-dev-server": "3.11.2",
127
+ "webpack": "5.72.0",
128
+ "webpack-cli": "^4.10.0",
129
+ "webpack-dev-server": "4.8.1",
114
130
  "webpack-merge": "5.8.0",
131
+ "webpack-node-externals": "3.0.0",
115
132
  "yargs": "15.4.1"
116
133
  },
117
134
  "jest": {