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

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 (301) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +306 -87
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +32186 -3078
  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 +14 -2
  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 +226 -0
  47. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  48. package/template/fpe-api/components.ts +42 -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 +128 -0
  53. package/template/fpe-api/typeDefinition.ts +143 -0
  54. package/template/fpe-api/useFpe.tsx +35 -0
  55. package/template/fpe-api/utils.ts +62 -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 +28 -12
  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 +171 -139
  73. package/template/src/components/ChatContext.ts +14 -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 +328 -416
  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 +293 -272
  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 +239 -0
  132. package/template/src/components/useWakeLock.tsx +3 -3
  133. package/template/src/custom-events/CustomEvents.ts +221 -0
  134. package/template/src/custom-events/index.tsx +4 -0
  135. package/template/src/custom-events/types.ts +51 -0
  136. package/template/src/language/default-labels/commonLabels.ts +21 -0
  137. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  138. package/template/src/language/default-labels/index.ts +38 -0
  139. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  140. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  141. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  142. package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
  143. package/template/src/language/i18nTypes.ts +10 -0
  144. package/template/src/language/index.ts +18 -0
  145. package/template/src/language/useLanguage.tsx +92 -0
  146. package/template/src/pages/Authenticate.tsx +21 -15
  147. package/template/src/pages/Create.tsx +176 -159
  148. package/template/src/pages/Join.tsx +44 -32
  149. package/template/src/pages/VideoCall.tsx +134 -406
  150. package/template/src/pages/create/useCreate.tsx +37 -0
  151. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  152. package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
  153. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  154. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  155. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  156. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  157. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  158. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  159. package/template/src/pages/video-call/index.ts +20 -0
  160. package/template/src/rtm/RTMEngine.ts +58 -0
  161. package/template/src/rtm/utils.ts +44 -0
  162. package/template/src/rtm-events/EventUtils.ts +267 -0
  163. package/template/src/rtm-events/EventsQueue.ts +38 -0
  164. package/template/src/rtm-events/constants.ts +40 -0
  165. package/template/src/rtm-events/index.tsx +8 -0
  166. package/template/src/rtm-events/types.ts +7 -0
  167. package/template/src/subComponents/ChatBubble.tsx +18 -11
  168. package/template/src/subComponents/ChatContainer.tsx +79 -30
  169. package/template/src/subComponents/ChatInput.tsx +146 -70
  170. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  171. package/template/src/subComponents/Error.tsx +35 -24
  172. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  173. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  174. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  175. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  176. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  177. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  178. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  179. package/template/src/subComponents/LogoutButton.tsx +20 -5
  180. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  181. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  182. package/template/src/subComponents/Recording.tsx +46 -138
  183. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  184. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  185. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  186. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  187. package/template/src/subComponents/SelectDevice.tsx +88 -45
  188. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  189. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  190. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  191. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  192. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  193. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  194. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  195. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  196. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  197. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  198. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  199. package/template/src/subComponents/livestream/index.ts +10 -2
  200. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  201. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  202. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  203. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +61 -31
  204. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  205. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +102 -143
  206. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  207. package/template/src/subComponents/toastConfig.tsx +25 -20
  208. package/template/src/utils/IsAttendeeUser.ts +34 -0
  209. package/template/src/utils/SdkEvents.ts +68 -0
  210. package/template/src/utils/common.tsx +40 -0
  211. package/template/src/utils/eventEmitter.ts +29 -0
  212. package/template/src/utils/getMeetingInvite.ts +30 -0
  213. package/template/src/utils/index.tsx +11 -2
  214. package/template/src/utils/isAudioEnabled.ts +29 -0
  215. package/template/src/utils/isHostUser.ts +33 -0
  216. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  217. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  218. package/template/src/utils/isPSTNUser.ts +30 -0
  219. package/template/src/utils/isSDK.sdk.ts +5 -0
  220. package/template/src/utils/isSDK.ts +5 -0
  221. package/template/src/utils/isScreenShareUser.ts +31 -0
  222. package/template/src/utils/isVideoEnabled.ts +29 -0
  223. package/template/src/utils/useButtonTemplate.tsx +43 -0
  224. package/template/src/utils/useCreateMeeting.ts +74 -0
  225. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  226. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  227. package/template/src/utils/useGetName.ts +20 -0
  228. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  229. package/template/src/utils/useJoinMeeting.ts +120 -0
  230. package/template/src/utils/useLayout.tsx +40 -0
  231. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  232. package/template/src/utils/useMutePSTN.ts +43 -0
  233. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  234. package/template/src/utils/useNavParams.ts +6 -0
  235. package/template/src/utils/useNavigateTo.ts +8 -0
  236. package/template/src/utils/usePrivateMessages.ts +33 -0
  237. package/template/src/utils/useRemoteEndCall.ts +27 -0
  238. package/template/src/utils/useRemoteMute.ts +64 -0
  239. package/template/src/utils/useSendControlMessage.ts +51 -0
  240. package/template/src/utils/useSendMessage.ts +40 -0
  241. package/template/src/utils/useSetName.ts +20 -0
  242. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  243. package/template/src/utils/useSidePanel.tsx +41 -0
  244. package/template/src/utils/useString.ts +61 -0
  245. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  246. package/template/src/utils/useUserList.ts +26 -0
  247. package/template/tsconfig.json +4 -4
  248. package/template/tsconfig_fpeApi.json +103 -0
  249. package/template/tsconfig_rsdk_index.json +105 -0
  250. package/template/tsconfig_wsdk_index.json +104 -0
  251. package/template/webpack.commons.js +40 -16
  252. package/template/webpack.main.config.js +2 -1
  253. package/template/webpack.renderer.config.js +1 -1
  254. package/template/webpack.rsdk.config.js +33 -0
  255. package/template/webpack.ts.config.js +89 -0
  256. package/template/webpack.web.config.js +8 -1
  257. package/template/webpack.wsdk.config.js +34 -0
  258. package/template/agora-rn-uikit/.git/HEAD +0 -1
  259. package/template/agora-rn-uikit/.git/config +0 -16
  260. package/template/agora-rn-uikit/.git/description +0 -1
  261. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  262. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  263. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -173
  264. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  265. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  266. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  267. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  268. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  269. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  270. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  271. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  272. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  273. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  274. package/template/agora-rn-uikit/.git/index +0 -0
  275. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  276. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  277. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  278. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  279. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  280. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  281. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.pack +0 -0
  282. package/template/agora-rn-uikit/.git/packed-refs +0 -24
  283. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  284. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  285. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  286. package/template/agora-rn-uikit/.gitignore +0 -63
  287. package/template/agora-rn-uikit/package-lock.json +0 -7612
  288. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  289. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  290. package/template/package-lock.json +0 -22923
  291. package/template/react-native-toast-message/.gitignore +0 -5
  292. package/template/react-native-toast-message/.npmignore +0 -5
  293. package/template/react-native-toast-message/package-lock.json +0 -10553
  294. package/template/src/.DS_Store +0 -0
  295. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  296. package/template/src/subComponents/.DS_Store +0 -0
  297. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  298. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  299. package/template/src/utils/hasBrandLogo.tsx +0 -3
  300. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  301. package/template/src/utils/shouldAuthenticate.tsx +0 -7
package/Readme.md CHANGED
@@ -9,4 +9,10 @@ This repository is a part of [RTE app builder](https://appbuilder.agora.io).
9
9
  npm run dev-setup -- meeting
10
10
  npm run dev-setup -- live-streaming
11
11
  ```
12
- This command will automatically set everything up for development
12
+ This command will automatically set everything up for development
13
+
14
+ To build react sdk using esbuild,
15
+ 1. Install the go compiler from https://go.dev/doc/install
16
+ 2. Run `go mod tidy` to download dependencies
17
+
18
+ You can now build react sdk using esbuild through npm script
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agora-appbuilder-core",
3
- "version": "2.2.0",
3
+ "version": "2.3.0-beta.2",
4
4
  "description": "React Native template for RTE app builder",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -8,11 +8,12 @@
8
8
  "template.config.js"
9
9
  ],
10
10
  "scripts": {
11
- "uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/ReactNative-UIKit template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout ab-dev-auto",
11
+ "vercel-build": "npm run dev-setup && cd template && npm run web:build && cd .. && npm run copy-vercel",
12
+ "uikit": "rm -rf template/agora-rn-uikit && git clone https://github.com/AgoraIO-Community/ReactNative-UIKit.git template/agora-rn-uikit && cd template/agora-rn-uikit && git checkout release/fpe-1.0.0",
12
13
  "deps": "cd template && npm i",
13
14
  "dev-setup": "npm run uikit && npm run deps && node devSetup.js",
14
15
  "web-build": "cd template && npm run web:build && cd .. && npm run copy-vercel",
15
- "copy-vercel": "cp vercel.json template/dist",
16
+ "copy-vercel": "cp vercel.json Builds/web",
16
17
  "pre-release": "cd template && cp package-lock.json _package-lock.json"
17
18
  },
18
19
  "author": {
@@ -9,19 +9,31 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- const {series, parallel} = require('gulp');
12
+ const {series, parallel, src, dest} = require('gulp');
13
13
  const {spawn} = require('child_process');
14
14
  const fs = require('fs').promises;
15
15
  const path = require('path');
16
16
  const del = require('del');
17
- const args = require('yargs').argv;
17
+ const config = require('./config.json');
18
+ const replace = require('gulp-replace');
19
+ const concat = require('gulp-concat');
20
+ const header = require('gulp-header');
18
21
 
19
22
  const webpack = require('webpack');
20
23
  const WebpackDevServer = require('webpack-dev-server');
21
24
  const webpackConfig = require('./webpack.renderer.config');
25
+ const webpackRsdkConfig = require('./webpack.rsdk.config');
22
26
 
23
- const log = (x) => console.log(x);
24
- const BUILD_PATH = path.join(__dirname, '.electron');
27
+ const BUILD_PATH =
28
+ process.env.TARGET === 'wsdk'
29
+ ? path.join(__dirname, '../Builds/web-sdk')
30
+ : process.env.TARGET === 'rsdk'
31
+ ? path.join(__dirname, '../Builds/react-sdk')
32
+ : process.env.TARGET === 'android'
33
+ ? path.join(__dirname, '../Builds/android')
34
+ : path.join(__dirname, '../Builds/.electron');
35
+
36
+ let PRODUCT_NAME;
25
37
 
26
38
  const runCli = (cmd, cb) => {
27
39
  const [arg1, ...arg2] = cmd.split(' ');
@@ -32,94 +44,301 @@ const runCli = (cmd, cb) => {
32
44
  proc.on('exit', cb);
33
45
  };
34
46
 
35
- function clean() {
36
- return del([`${BUILD_PATH}/**/*`]);
37
- }
38
-
39
- function renderer(cb) {
40
- runCli('webpack --config webpack.renderer.config.js', cb);
41
- }
42
-
43
- function main(cb) {
44
- runCli('webpack --config ./webpack.main.config.js', cb);
45
- }
46
-
47
- async function packageJson(cb) {
48
- let package = JSON.parse(
49
- await fs.readFile(path.join(__dirname, 'package.json')),
50
- );
51
- let {
52
- name,
53
- version,
54
- private,
55
- author,
56
- description,
57
- dependencies,
58
- optionalDependencies,
59
- } = package;
60
- let nativeDeps = require('./nativeDeps').default;
61
- let natives = {};
62
- let searchDeps = {
63
- ...dependencies,
64
- ...optionalDependencies,
65
- };
66
- nativeDeps.map((k) => {
67
- natives[k] = searchDeps[k];
68
- });
47
+ const general = {
48
+ clean: () => {
49
+ return del([`${BUILD_PATH}/**/*`], {force: true});
50
+ },
51
+ packageJson: async (cb) => {
52
+ let package = JSON.parse(
53
+ await fs.readFile(path.join(__dirname, 'package.json')),
54
+ );
55
+ let {
56
+ name,
57
+ version,
58
+ private,
59
+ author,
60
+ description,
61
+ dependencies,
62
+ optionalDependencies,
63
+ } = package;
64
+ PRODUCT_NAME = name;
65
+ let nativeDeps = require('./nativeDeps').default;
66
+ let natives = {};
67
+ let searchDeps = {
68
+ ...dependencies,
69
+ ...optionalDependencies,
70
+ };
71
+ nativeDeps.map((k) => {
72
+ natives[k] = searchDeps[k];
73
+ });
74
+
75
+ let newPackage = {
76
+ name: 'agora-app-builder-sdk',
77
+ version,
78
+ private,
79
+ author,
80
+ description,
81
+ // dependencies: natives,
82
+ // agora_electron: {
83
+ // electron_version: '5.0.8',
84
+ // prebuilt: true,
85
+ // },
86
+ };
87
+
88
+ // Target specific changes
69
89
 
70
- let newPackage = {
71
- name,
72
- version,
73
- private,
74
- author,
75
- description,
76
- // dependencies: natives,
77
- // agora_electron: {
78
- // electron_version: '5.0.8',
79
- // prebuilt: true,
80
- // },
81
- };
82
- await fs.writeFile(
83
- path.join(BUILD_PATH, 'package.json'),
84
- JSON.stringify(newPackage, null, 2),
85
- );
86
- return;
87
- }
88
-
89
- function build(cb) {
90
- runCli('electron-builder build --config ./electron-builder.js', cb);
91
- }
92
-
93
- function electronDevServer(cb) {
94
- const config = webpack(webpackConfig);
95
- new WebpackDevServer(config, {
96
- hot: true,
97
- }).listen(webpackConfig.devServer.port, 'localhost', (err) => {
98
- if (err) {
99
- console.error(err);
100
- } else {
101
- cb();
90
+ if (process.env.TARGET === 'rsdk') {
91
+ newPackage.main = 'index.js';
92
+ newPackage.types = 'index.d.ts';
93
+
94
+ // Takes externals from the webpack config and applies them
95
+ // to react-sdk package as peer dependencies
96
+ newPackage.peerDependencies = Object.keys(dependencies)
97
+ .filter((key) => Object.keys(webpackRsdkConfig.externals).includes(key))
98
+ .reduce((peerDependencies, key) => {
99
+ peerDependencies[key] = `^${dependencies[key].split('.')[0]}`;
100
+ return peerDependencies;
101
+ }, {});
102
+ }
103
+
104
+ if (process.env.TARGET === 'wsdk') {
105
+ newPackage.main = 'app-builder-web-sdk.umd2.js';
106
+ newPackage.types = 'index.d.ts';
102
107
  }
103
- });
104
- }
105
108
 
106
- function directory(){
107
- return fs.mkdir(BUILD_PATH, {recursive: true});
108
- }
109
+ await fs.writeFile(
110
+ path.join(BUILD_PATH, 'package.json'),
111
+ JSON.stringify(newPackage, null, 2),
112
+ );
113
+ return;
114
+ },
115
+ createBuildDirectory: () => {
116
+ return fs.mkdir(BUILD_PATH, {recursive: true});
117
+ },
118
+ typescript: (cb) => {
119
+ runCli(
120
+ 'npx -p typescript tsc --project tsconfig_fpeApi.json --outFile ../Builds/fpe-api.d.ts',
121
+ () => cb(),
122
+ );
123
+ },
124
+ typescriptFix: () => {
125
+ return src('../Builds/fpe-api.d.ts')
126
+ .pipe(replace('"agora-rn-uikit"', '"agora-rn-uikit/src/index"'))
127
+ .pipe(dest('../Builds/'));
128
+ },
129
+ typescriptClean: () => {
130
+ return del([`${path.join(BUILD_PATH, '../', '/')}*.d.ts`], {force: true});
131
+ },
132
+ };
133
+
134
+ const electron = {
135
+ webpack_renderer: (cb) => {
136
+ runCli('webpack --config webpack.renderer.config.js', cb);
137
+ },
138
+
139
+ webpack_main: (cb) => {
140
+ runCli('webpack --config ./webpack.main.config.js', cb);
141
+ },
142
+
143
+ build: (cb) => {
144
+ runCli('electron-builder build --config ./electron-builder.js', cb);
145
+ },
109
146
 
110
- function mainDev(cb) {
111
- runCli('webpack --config ./webpack.main.config.js', cb);
112
- }
147
+ devServer: (cb) => {
148
+ const config = webpack(webpackConfig);
149
+ new WebpackDevServer(config, {
150
+ hot: true,
151
+ }).listen(webpackConfig.devServer.port, 'localhost', (err) => {
152
+ if (err) {
153
+ console.error(err);
154
+ } else {
155
+ cb();
156
+ }
157
+ });
158
+ },
113
159
 
114
- function start(cb) {
115
- runCli('electron .', cb);
116
- }
160
+ start: (cb) => {
161
+ runCli('electron .', cb);
162
+ },
163
+ };
164
+
165
+ const reactSdk = {
166
+ webpack: (cb) => {
167
+ runCli('webpack --config ./webpack.rsdk.config.js', cb);
168
+ },
169
+ esbuild: (cb) => {
170
+ runCli('go build -o ../esbuild-bin/rsdk ./esbuild.rsdk.go && ../esbuild-bin/rsdk', cb);
171
+ },
172
+ typescript: (cb) => {
173
+ runCli(
174
+ //'npx -p typescript tsc index.rsdk.tsx --declaration --emitDeclarationOnly --noResolve --outFile ../Builds/temp.d.ts',
175
+ 'npx -p typescript tsc --project tsconfig_rsdk_index.json --outFile ../Builds/reactSdk.d.ts',
176
+ () => cb(),
177
+ );
178
+ },
179
+ typescriptFix: () => {
180
+ return src(['../Builds/fpe-api.d.ts', '../Builds/reactSdk.d.ts'])
181
+ .pipe(concat('index.d.ts'))
182
+ .pipe(
183
+ replace(
184
+ 'declare module "index.rsdk"',
185
+ 'declare module "agora-app-builder-sdk"',
186
+ ),
187
+ )
188
+ .pipe(replace("'fpe-api'", "'fpe-api/index'"))
189
+ .pipe(replace('"fpe-api"', '"fpe-api/index"'))
190
+ .pipe(header('// @ts-nocheck\n'))
191
+ .pipe(dest(BUILD_PATH));
192
+ },
193
+ npmPack: (cb) => {
194
+ runCli('cd ../Builds/react-sdk && npm pack',cb)
195
+ }
196
+ };
117
197
 
118
- module.exports.build = series(
119
- clean,
120
- directory,
121
- parallel(renderer, main, packageJson),
122
- build,
198
+ const webSdk = {
199
+ webpack: (cb) => {
200
+ runCli('webpack --config ./webpack.wsdk.config.js', cb);
201
+ },
202
+ typescript: (cb) => {
203
+ runCli(
204
+ 'npx -p typescript tsc --project tsconfig_wsdk_index.json --outFile ../Builds/webSdk.d.ts',
205
+ () => cb(),
206
+ );
207
+ },
208
+ typescriptFix: () => {
209
+ return src(['../Builds/fpe-api.d.ts', '../Builds/webSdk.d.ts'])
210
+ .pipe(concat('index.d.ts'))
211
+ .pipe(
212
+ replace(
213
+ 'declare module "index.wsdk"',
214
+ 'declare module "agora-app-builder-sdk"',
215
+ ),
216
+ )
217
+ .pipe(replace("'fpe-api'", "'fpe-api/index'"))
218
+ .pipe(replace('"fpe-api"', '"fpe-api/index"'))
219
+ .pipe(header('// @ts-nocheck\n'))
220
+ .pipe(dest(BUILD_PATH));
221
+ },
222
+ npmPack: (cb) => {
223
+ runCli('cd ../Builds/web-sdk && npm pack',cb)
224
+ }
225
+ };
226
+
227
+ const android = {
228
+ gradleBuildUnix: (cb) => {
229
+ runCli('cd android && ./gradlew assembleRelease', cb);
230
+ },
231
+ gradleBuildWin: (cb) => {
232
+ runCli('cd android && gradlew.bat assembleRelease', cb);
233
+ },
234
+ copyBuild: (cb) => {
235
+ fs.copyFile(
236
+ path.resolve(
237
+ 'android',
238
+ 'app',
239
+ 'build',
240
+ 'outputs',
241
+ 'apk',
242
+ 'release',
243
+ 'app-release.apk',
244
+ ),
245
+ path.resolve(BUILD_PATH, `${config.PRODUCT_ID}.apk`),
246
+ )
247
+ .then(() => {
248
+ cb();
249
+ })
250
+ .catch((err) => {
251
+ cb(new Error('Error in copying build', err));
252
+ });
253
+ },
254
+ };
255
+
256
+ // electron
257
+ module.exports.electron_build = series(
258
+ general.clean,
259
+ general.createBuildDirectory,
260
+ parallel(
261
+ electron.webpack_renderer,
262
+ electron.webpack_main,
263
+ general.packageJson,
264
+ ),
265
+ electron.build,
266
+ );
267
+
268
+ module.exports.electron_development = series(
269
+ general.clean,
270
+ general.createBuildDirectory,
271
+ electron.devServer,
272
+ electron.webpack_main,
273
+ electron.start,
274
+ );
275
+
276
+ // react-sdk
277
+ module.exports.reactSdk = series(
278
+ general.clean,
279
+ general.createBuildDirectory,
280
+ general.packageJson,
281
+ reactSdk.webpack,
282
+ general.typescript,
283
+ general.typescriptFix,
284
+ reactSdk.typescript,
285
+ reactSdk.typescriptFix,
286
+ general.typescriptClean,
287
+ reactSdk.npmPack,
123
288
  );
124
289
 
125
- module.exports.development = series(clean, directory , electronDevServer, mainDev, start);
290
+ // react-sdk-esbuild
291
+ module.exports.reactSdkEsbuild = series (
292
+ general.clean,
293
+ general.createBuildDirectory,
294
+ general.packageJson,
295
+ reactSdk.esbuild,
296
+ general.typescript,
297
+ general.typescriptFix,
298
+ reactSdk.typescript,
299
+ reactSdk.typescriptFix,
300
+ general.typescriptClean,
301
+ reactSdk.npmPack,
302
+ )
303
+
304
+ // web-sdk
305
+ module.exports.webSdk = series(
306
+ general.clean,
307
+ general.createBuildDirectory,
308
+ general.packageJson,
309
+ parallel(
310
+ webSdk.webpack,
311
+ series(
312
+ general.typescript,
313
+ general.typescriptFix,
314
+ webSdk.typescript,
315
+ webSdk.typescriptFix,
316
+ general.typescriptClean,
317
+ ),
318
+ ),
319
+ webSdk.npmPack,
320
+ );
321
+
322
+ module.exports.androidUnix = series(
323
+ general.clean,
324
+ general.createBuildDirectory,
325
+ // android.gradleBuildUnix,
326
+ android.copyBuild,
327
+ );
328
+
329
+ module.exports.androidWin = series(
330
+ general.clean,
331
+ general.createBuildDirectory,
332
+ android.gradleBuildWin,
333
+ android.copyBuild,
334
+ );
335
+
336
+ module.exports.test = series(
337
+ reactSdk.npmPack,
338
+ // general.typescript,
339
+ // general.typescriptFix,
340
+ // reactSdk.typescript,
341
+ // reactSdk.typescriptFix,
342
+ // webSdk.typescript,
343
+ // webSdk.typescriptFix,
344
+ );
@@ -71,4 +71,7 @@ dist/
71
71
  #Electron cache
72
72
  .electron/
73
73
  .webpack/
74
- out/
74
+ out/
75
+
76
+ #FPE plugin folder
77
+ template/test-fpe/*