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
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.10",
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 -r Builds/web template/dist && cp vercel.json template/dist",
16
17
  "pre-release": "cd template && cp package-lock.json _package-lock.json"
17
18
  },
18
19
  "author": {
@@ -9,19 +9,50 @@
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 outPathArg = process.argv.indexOf('--outpath')
28
+ getBuildPath = () => {
29
+ if (outPathArg == -1) {
30
+ return process.env.TARGET === 'wsdk'
31
+ ? path.join(__dirname, '../Builds/web-sdk')
32
+ : process.env.TARGET === 'rsdk'
33
+ ? path.join(__dirname, '../Builds/react-sdk')
34
+ : process.env.TARGET === 'android'
35
+ ? path.join(__dirname, '../Builds/android')
36
+ : path.join(__dirname, '../Builds/.electron');
37
+ } else {
38
+ return process.argv[outPathArg+1].split('/').slice(0, -1).join('/')
39
+ }
40
+ }
41
+ const BUILD_PATH = getBuildPath();
42
+ const TS_DEFS_BUILD_PATH = process.env.TARGET === 'wsdk'
43
+ ? path.join(__dirname, '../Builds/ts-defs/web-sdk')
44
+ : process.env.TARGET === 'rsdk'
45
+ ? path.join(__dirname, '../Builds/ts-defs/react-sdk')
46
+ : process.env.TARGET === 'android'
47
+ ? path.join(__dirname, '../Builds/ts-defs/android')
48
+ : path.join(__dirname, '../Builds/ts-defs/.electron');
49
+
50
+ const pkgNameArg = process.argv.indexOf('--pkgname')
51
+ const PACKAGE_NAME = pkgNameArg == -1
52
+ ? 'agora-app-builder-sdk'
53
+ : process.argv[pkgNameArg+1]
54
+
55
+ let PRODUCT_NAME;
25
56
 
26
57
  const runCli = (cmd, cb) => {
27
58
  const [arg1, ...arg2] = cmd.split(' ');
@@ -32,94 +63,370 @@ const runCli = (cmd, cb) => {
32
63
  proc.on('exit', cb);
33
64
  };
34
65
 
35
- function clean() {
36
- return del([`${BUILD_PATH}/**/*`]);
37
- }
66
+ const general = {
67
+ clean: () => {
68
+ return del([`${BUILD_PATH}/**/*`], {force: true});
69
+ },
70
+ packageJson: async (cb) => {
71
+ let package = JSON.parse(
72
+ await fs.readFile(path.join(__dirname, 'package.json')),
73
+ );
74
+ let {
75
+ name,
76
+ version,
77
+ private,
78
+ author,
79
+ description,
80
+ dependencies,
81
+ optionalDependencies,
82
+ } = package;
83
+ PRODUCT_NAME = name;
84
+ let nativeDeps = require('./nativeDeps').default;
85
+ let natives = {};
86
+ let searchDeps = {
87
+ ...dependencies,
88
+ ...optionalDependencies,
89
+ };
90
+ nativeDeps.map((k) => {
91
+ natives[k] = searchDeps[k];
92
+ });
38
93
 
39
- function renderer(cb) {
40
- runCli('webpack --config webpack.renderer.config.js', cb);
41
- }
94
+ let newPackage = {
95
+ name: PACKAGE_NAME,
96
+ version,
97
+ private,
98
+ author,
99
+ description,
100
+ // dependencies: natives,
101
+ // agora_electron: {
102
+ // electron_version: '5.0.8',
103
+ // prebuilt: true,
104
+ // },
105
+ };
42
106
 
43
- function main(cb) {
44
- runCli('webpack --config ./webpack.main.config.js', cb);
45
- }
107
+ // Target specific changes
46
108
 
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
- });
109
+ if (process.env.TARGET === 'rsdk') {
110
+ newPackage.main = 'index.js';
111
+ newPackage.types = 'index.d.ts';
69
112
 
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
- }
113
+ // Takes externals from the webpack config and applies them
114
+ // to react-sdk package as peer dependencies
115
+ newPackage.peerDependencies = Object.keys(dependencies)
116
+ .filter((key) => Object.keys(webpackRsdkConfig.externals).includes(key))
117
+ .reduce((peerDependencies, key) => {
118
+ peerDependencies[key] = `^${dependencies[key].split('.')[0]}`;
119
+ return peerDependencies;
120
+ }, {});
121
+ }
88
122
 
89
- function build(cb) {
90
- runCli('electron-builder build --config ./electron-builder.js', cb);
91
- }
123
+ if (process.env.TARGET === 'wsdk') {
124
+ newPackage.main = 'app-builder-web-sdk.umd2.js';
125
+ newPackage.types = 'index.d.ts';
126
+ }
92
127
 
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();
128
+ await fs.writeFile(
129
+ path.join(BUILD_PATH, 'package.json'),
130
+ JSON.stringify(newPackage, null, 2),
131
+ );
132
+ return;
133
+ },
134
+ createBuildDirectory: () => {
135
+ return fs.mkdir(BUILD_PATH, {recursive: true});
136
+ },
137
+ typescript: (cb) => {
138
+ runCli(
139
+ 'npx -p typescript tsc --project tsconfig_fpeApi.json --outFile ../Builds/fpe-api.d.ts',
140
+ () => cb(),
141
+ );
142
+ },
143
+ typescriptFix: () => {
144
+ return src('../Builds/fpe-api.d.ts')
145
+ .pipe(replace('"agora-rn-uikit"', '"agora-rn-uikit/src/index"'))
146
+ .pipe(dest('../Builds/'));
147
+ },
148
+ typescriptClean: () => {
149
+ return del([`${path.join(BUILD_PATH, '../', '/')}*.d.ts`], {force: true});
150
+ },
151
+ genTsDefs: (cb) => {
152
+ runCli(`mkdir -p ${TS_DEFS_BUILD_PATH} && cp ${BUILD_PATH}/index.d.ts ${TS_DEFS_BUILD_PATH}/index.d.ts`, cb);
153
+ },
154
+ useTsDefs: (cb) => {
155
+ runCli(`cp ${TS_DEFS_BUILD_PATH}/index.d.ts ${BUILD_PATH}/index.d.ts`, cb)
156
+ },
157
+ npmPack: (cb) => {
158
+ runCli(`cd ${BUILD_PATH} && npm pack`, cb)
159
+ }
160
+ };
161
+
162
+ const electron = {
163
+ webpack_renderer: (cb) => {
164
+ runCli('webpack --config webpack.renderer.config.js', cb);
165
+ },
166
+
167
+ webpack_main: (cb) => {
168
+ runCli('webpack --config ./webpack.main.config.js', cb);
169
+ },
170
+
171
+ build: (cb) => {
172
+ runCli('electron-builder build --config ./electron-builder.js', cb);
173
+ },
174
+
175
+ devServer: (cb) => {
176
+ const config = webpack(webpackConfig);
177
+ new WebpackDevServer(config, {
178
+ hot: true,
179
+ }).listen(webpackConfig.devServer.port, 'localhost', (err) => {
180
+ if (err) {
181
+ console.error(err);
182
+ } else {
183
+ cb();
184
+ }
185
+ });
186
+ },
187
+
188
+ start: (cb) => {
189
+ runCli('electron .', cb);
190
+ },
191
+ };
192
+
193
+ const reactSdk = {
194
+ webpack: (cb) => {
195
+ runCli('webpack --config ./webpack.rsdk.config.js', cb);
196
+ },
197
+ esbuild: (cb) => {
198
+ let outPath = '';
199
+ if (outPathArg != -1) {
200
+ outPath = ` --outpath ${process.argv[outPathArg+1]}`
102
201
  }
103
- });
104
- }
202
+ let configTransformerPath = '';
203
+ const configTransformerPathArg = process.argv.indexOf('--configtransformerpath')
204
+ if (configTransformerPathArg != -1) {
205
+ configTransformerPath = ` --configtransformerpath ${process.argv[configTransformerPathArg+1]}`
206
+ }
207
+ let esbuildCmd = `go build -o ../esbuild-bin/rsdk ./esbuild.rsdk.go && ../esbuild-bin/rsdk${outPath}${configTransformerPath}`
208
+ console.log(esbuildCmd)
209
+ runCli(esbuildCmd, cb);
210
+ },
211
+ typescript: (cb) => {
212
+ runCli(
213
+ //'npx -p typescript tsc index.rsdk.tsx --declaration --emitDeclarationOnly --noResolve --outFile ../Builds/temp.d.ts',
214
+ 'npx -p typescript tsc --project tsconfig_rsdk_index.json --outFile ../Builds/reactSdk.d.ts',
215
+ () => cb(),
216
+ );
217
+ },
218
+ typescriptFix: () => {
219
+ return src(['../Builds/fpe-api.d.ts', '../Builds/reactSdk.d.ts'])
220
+ .pipe(concat('index.d.ts'))
221
+ .pipe(
222
+ replace(
223
+ 'declare module "index.rsdk"',
224
+ 'declare module "agora-app-builder-sdk"',
225
+ ),
226
+ )
227
+ .pipe(replace("'fpe-api'", "'fpe-api/index'"))
228
+ .pipe(replace('"fpe-api"', '"fpe-api/index"'))
229
+ .pipe(header('// @ts-nocheck\n'))
230
+ .pipe(dest(BUILD_PATH));
231
+ }
232
+ };
105
233
 
106
- function directory(){
107
- return fs.mkdir(BUILD_PATH, {recursive: true});
108
- }
234
+ const webSdk = {
235
+ webpack: (cb) => {
236
+ runCli('webpack --config ./webpack.wsdk.config.js', cb);
237
+ },
238
+ typescript: (cb) => {
239
+ runCli(
240
+ 'npx -p typescript tsc --project tsconfig_wsdk_index.json --outFile ../Builds/webSdk.d.ts',
241
+ () => cb(),
242
+ );
243
+ },
244
+ typescriptFix: () => {
245
+ return src(['../Builds/fpe-api.d.ts', '../Builds/webSdk.d.ts'])
246
+ .pipe(concat('index.d.ts'))
247
+ .pipe(
248
+ replace(
249
+ 'declare module "index.wsdk"',
250
+ 'declare module "agora-app-builder-sdk"',
251
+ ),
252
+ )
253
+ .pipe(replace("'fpe-api'", "'fpe-api/index'"))
254
+ .pipe(replace('"fpe-api"', '"fpe-api/index"'))
255
+ .pipe(header('// @ts-nocheck\n'))
256
+ .pipe(dest(BUILD_PATH));
257
+ },
258
+ npmPack: (cb) => {
259
+ runCli('cd ../Builds/web-sdk && npm pack',cb)
260
+ }
261
+ };
109
262
 
110
- function mainDev(cb) {
111
- runCli('webpack --config ./webpack.main.config.js', cb);
112
- }
263
+ const android = {
264
+ gradleBuildUnix: (cb) => {
265
+ runCli('cd android && ./gradlew assembleRelease', cb);
266
+ },
267
+ gradleBuildWin: (cb) => {
268
+ runCli('cd android && gradlew.bat assembleRelease', cb);
269
+ },
270
+ copyBuild: (cb) => {
271
+ fs.copyFile(
272
+ path.resolve(
273
+ 'android',
274
+ 'app',
275
+ 'build',
276
+ 'outputs',
277
+ 'apk',
278
+ 'release',
279
+ 'app-release.apk',
280
+ ),
281
+ path.resolve(BUILD_PATH, `${config.PRODUCT_ID}.apk`),
282
+ )
283
+ .then(() => {
284
+ cb();
285
+ })
286
+ .catch((err) => {
287
+ cb(new Error('Error in copying build', err));
288
+ });
289
+ },
290
+ };
113
291
 
114
- function start(cb) {
115
- runCli('electron .', cb);
116
- }
292
+ // electron
293
+ module.exports.electron_build = series(
294
+ general.clean,
295
+ general.createBuildDirectory,
296
+ parallel(
297
+ electron.webpack_renderer,
298
+ electron.webpack_main,
299
+ general.packageJson,
300
+ ),
301
+ electron.build,
302
+ );
303
+
304
+ module.exports.electron_development = series(
305
+ general.clean,
306
+ general.createBuildDirectory,
307
+ electron.devServer,
308
+ electron.webpack_main,
309
+ electron.start,
310
+ );
311
+
312
+ // react-sdk
313
+ module.exports.reactSdk = series(
314
+ general.clean,
315
+ general.createBuildDirectory,
316
+ general.packageJson,
317
+ reactSdk.webpack,
318
+ general.typescript,
319
+ general.typescriptFix,
320
+ reactSdk.typescript,
321
+ reactSdk.typescriptFix,
322
+ general.typescriptClean,
323
+ general.npmPack,
324
+ );
325
+
326
+ // react-sdk-esbuild
327
+ module.exports.reactSdkEsbuild = series (
328
+ general.clean,
329
+ general.createBuildDirectory,
330
+ general.packageJson,
331
+ reactSdk.esbuild,
332
+ general.typescript,
333
+ general.typescriptFix,
334
+ reactSdk.typescript,
335
+ reactSdk.typescriptFix,
336
+ general.typescriptClean,
337
+ general.npmPack,
338
+ )
117
339
 
118
- module.exports.build = series(
119
- clean,
120
- directory,
121
- parallel(renderer, main, packageJson),
122
- build,
340
+ // generate typescript definitions
341
+ module.exports.makeRsdkTsDefs = series (
342
+ general.clean,
343
+ general.createBuildDirectory,
344
+ general.packageJson,
345
+ reactSdk.esbuild,
346
+ general.typescript,
347
+ general.typescriptFix,
348
+ reactSdk.typescript,
349
+ reactSdk.typescriptFix,
350
+ general.typescriptClean,
351
+ general.genTsDefs,
352
+ )
353
+
354
+ // react-sdk-esbuild with cached type definitions
355
+ module.exports.reactSdkEsbuildCachedTsc = series (
356
+ general.clean,
357
+ general.createBuildDirectory,
358
+ general.packageJson,
359
+ reactSdk.esbuild,
360
+ general.useTsDefs,
361
+ general.npmPack,
362
+ )
363
+
364
+ // web-sdk
365
+ module.exports.webSdk = series(
366
+ general.clean,
367
+ general.createBuildDirectory,
368
+ general.packageJson,
369
+ parallel(
370
+ webSdk.webpack,
371
+ series(
372
+ general.typescript,
373
+ general.typescriptFix,
374
+ webSdk.typescript,
375
+ webSdk.typescriptFix,
376
+ general.typescriptClean,
377
+ ),
378
+ ),
379
+ general.npmPack,
380
+ );
381
+
382
+ module.exports.makeWsdkTsDefs = series(
383
+ general.clean,
384
+ general.createBuildDirectory,
385
+ general.packageJson,
386
+ parallel(
387
+ webSdk.webpack,
388
+ series(
389
+ general.typescript,
390
+ general.typescriptFix,
391
+ webSdk.typescript,
392
+ webSdk.typescriptFix,
393
+ general.typescriptClean,
394
+ ),
395
+ ),
396
+ general.genTsDefs,
397
+ );
398
+
399
+ module.exports.webSdkCachedTsc = series(
400
+ general.clean,
401
+ general.createBuildDirectory,
402
+ general.packageJson,
403
+ parallel(
404
+ webSdk.webpack,
405
+ general.useTsDefs,
406
+ ),
407
+ general.npmPack,
123
408
  );
124
409
 
125
- module.exports.development = series(clean, directory , electronDevServer, mainDev, start);
410
+ module.exports.androidUnix = series(
411
+ general.clean,
412
+ general.createBuildDirectory,
413
+ android.gradleBuildUnix,
414
+ android.copyBuild,
415
+ );
416
+
417
+ module.exports.androidWin = series(
418
+ general.clean,
419
+ general.createBuildDirectory,
420
+ android.gradleBuildWin,
421
+ android.copyBuild,
422
+ );
423
+
424
+ module.exports.test = series(
425
+ general.npmPack,
426
+ // general.typescript,
427
+ // general.typescriptFix,
428
+ // reactSdk.typescript,
429
+ // reactSdk.typescriptFix,
430
+ // webSdk.typescript,
431
+ // webSdk.typescriptFix,
432
+ );
@@ -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/*