@momo-kits/native-kits 0.157.1-beta.9-debug → 0.157.1-com.1-debug

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 (369) hide show
  1. package/compose/build.gradle.kts +1 -1
  2. package/compose/compose.podspec +1 -1
  3. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Avatar.kt +157 -0
  4. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Carousel.kt +123 -0
  5. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Collapse.kt +224 -0
  6. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Loader.kt +108 -0
  7. package/compose/src/commonMain/kotlin/vn/momo/kits/components/ProgressInfo.kt +350 -0
  8. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Rating.kt +87 -0
  9. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Slider.kt +360 -0
  10. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Stepper.kt +256 -0
  11. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Steps.kt +494 -0
  12. package/compose/src/commonMain/kotlin/vn/momo/kits/components/SuggestAction.kt +131 -0
  13. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Swipe.kt +215 -0
  14. package/compose/src/commonMain/kotlin/vn/momo/kits/components/TabView.kt +449 -0
  15. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Tooltip.kt +21 -7
  16. package/compose/src/commonMain/kotlin/vn/momo/kits/components/Uploader.kt +192 -0
  17. package/gradle.properties +1 -1
  18. package/ios/Input/Input.swift +4 -0
  19. package/local.properties +2 -2
  20. package/package.json +1 -1
  21. package/src/doctor/README.md +73 -0
  22. package/src/doctor/package-lock.json +885 -0
  23. package/src/doctor/package.json +44 -0
  24. package/src/doctor/publish.sh +27 -0
  25. package/src/doctor/src/Users.json +112 -0
  26. package/src/doctor/src/Whitelist.json +6 -0
  27. package/src/doctor/src/commands/check.ts +81 -0
  28. package/src/doctor/src/commands/doctor.ts +193 -0
  29. package/src/doctor/src/index.ts +35 -0
  30. package/src/doctor/src/logger.ts +84 -0
  31. package/src/doctor/src/task/native.ts +21 -0
  32. package/src/doctor/src/task/utils.ts +20 -0
  33. package/src/doctor/src/utils/checkCoreDependencies.ts +138 -0
  34. package/src/doctor/src/utils/checkDeletedPackage.ts +53 -0
  35. package/src/doctor/src/utils/checkDeprecatedPackages.ts +168 -0
  36. package/src/doctor/src/utils/checkDeprecatedVersion.ts +60 -0
  37. package/src/doctor/src/utils/checkShareDependencies.ts +251 -0
  38. package/src/doctor/src/utils/checkWrongVersionCommunityPackage.ts +64 -0
  39. package/src/doctor/src/utils/getErrorMessage.ts +84 -0
  40. package/src/doctor/src/utils/scanComponentUsage.ts +206 -0
  41. package/src/doctor/src/utils/scanFoundationImports.ts +169 -0
  42. package/src/doctor/src/utils/scanMaxApiUsage.ts +86 -0
  43. package/src/doctor/src/utils/scanNativeModulesUsage.ts +78 -0
  44. package/src/doctor/src/utils/sendMessage.ts +28 -0
  45. package/src/doctor/tsconfig.json +14 -0
  46. package/src/doctor/yarn.lock +492 -0
  47. package/src/foundations/Application/BottomSheet.tsx +358 -0
  48. package/src/foundations/Application/BottomTab/BottomTabBar.tsx +320 -0
  49. package/src/foundations/Application/BottomTab/CustomBottomTabItem.tsx +155 -0
  50. package/src/foundations/Application/BottomTab/TabBarIcon.tsx +113 -0
  51. package/src/foundations/Application/BottomTab/index.tsx +449 -0
  52. package/src/foundations/Application/Components/BackgroundImageView.tsx +126 -0
  53. package/src/foundations/Application/Components/HeaderAnimated.tsx +69 -0
  54. package/src/foundations/Application/Components/HeaderBackground.tsx +83 -0
  55. package/src/foundations/Application/Components/HeaderExtendHeader.tsx +225 -0
  56. package/src/foundations/Application/Components/HeaderLeft.tsx +93 -0
  57. package/src/foundations/Application/Components/HeaderRight.tsx +444 -0
  58. package/src/foundations/Application/Components/HeaderTitle.tsx +596 -0
  59. package/src/foundations/Application/Components/NavigationButton.tsx +76 -0
  60. package/src/foundations/Application/Components/SearchHeader.tsx +127 -0
  61. package/src/foundations/Application/Localize.ts +44 -0
  62. package/src/foundations/Application/ModalScreen.tsx +148 -0
  63. package/src/foundations/Application/Navigation.ts +63 -0
  64. package/src/foundations/Application/NavigationContainer.tsx +245 -0
  65. package/src/foundations/Application/Navigator.ts +171 -0
  66. package/src/foundations/Application/ScaleSizeProvider.tsx +16 -0
  67. package/src/foundations/Application/StackScreen.tsx +420 -0
  68. package/src/foundations/Application/TooltipPortal.tsx +127 -0
  69. package/src/foundations/Application/WidgetContainer.tsx +162 -0
  70. package/src/foundations/Application/index.ts +34 -0
  71. package/src/foundations/Application/types.ts +350 -0
  72. package/src/foundations/Application/utils.tsx +239 -0
  73. package/src/foundations/Assets/DotAnimation.json +256 -0
  74. package/src/foundations/Assets/SpinnerAnimation.json +1027 -0
  75. package/src/foundations/Assets/icon.json +4052 -0
  76. package/src/foundations/Assets/icon_bank.json +506 -0
  77. package/src/foundations/Assets/language.json +208 -0
  78. package/src/foundations/Assets/lottie_circle_loader.json +1 -0
  79. package/src/foundations/Assets/pinAnimation.json +1 -0
  80. package/src/foundations/Assets/unpinAnimation.json +1 -0
  81. package/src/foundations/Badge/Badge.tsx +104 -0
  82. package/src/foundations/Badge/BadgeDot.tsx +35 -0
  83. package/src/foundations/Badge/BadgeDotAnimation.tsx +95 -0
  84. package/src/foundations/Badge/BadgeRibbon.tsx +112 -0
  85. package/src/foundations/Badge/Shape.tsx +29 -0
  86. package/src/foundations/Badge/index.tsx +8 -0
  87. package/src/foundations/Badge/styles.ts +125 -0
  88. package/src/foundations/Badge/types.ts +68 -0
  89. package/src/foundations/Button/index.tsx +371 -0
  90. package/src/foundations/Button/styles.ts +65 -0
  91. package/src/foundations/CheckBox/index.tsx +104 -0
  92. package/src/foundations/CheckBox/styles.ts +17 -0
  93. package/src/foundations/CheckBox/types.ts +37 -0
  94. package/src/foundations/Consts/colors+spacing+radius.ts +232 -0
  95. package/src/foundations/Consts/index.ts +4 -0
  96. package/src/foundations/Consts/styles.ts +52 -0
  97. package/src/foundations/Consts/theme.ts +121 -0
  98. package/src/foundations/Context/index.ts +27 -0
  99. package/src/foundations/Divider/DashDivider.tsx +46 -0
  100. package/src/foundations/Divider/index.tsx +45 -0
  101. package/src/foundations/FoundationList/index.tsx +12 -0
  102. package/src/foundations/FoundationList/types.ts +7 -0
  103. package/src/foundations/Icon/index.tsx +57 -0
  104. package/src/foundations/Icon/types.ts +32 -0
  105. package/src/foundations/IconButton/index.tsx +144 -0
  106. package/src/foundations/IconButton/styles.ts +20 -0
  107. package/src/foundations/Image/index.tsx +115 -0
  108. package/src/foundations/Image/styles.ts +7 -0
  109. package/src/foundations/Image/types.ts +7 -0
  110. package/src/foundations/Input/Input.tsx +280 -0
  111. package/src/foundations/Input/InputDropDown.tsx +161 -0
  112. package/src/foundations/Input/InputMoney.tsx +325 -0
  113. package/src/foundations/Input/InputOTP.tsx +299 -0
  114. package/src/foundations/Input/InputPhoneNumber.tsx +287 -0
  115. package/src/foundations/Input/InputSearch.tsx +351 -0
  116. package/src/foundations/Input/InputTextArea.tsx +218 -0
  117. package/src/foundations/Input/SystemTextInput.tsx +44 -0
  118. package/src/foundations/Input/TextTyping.tsx +115 -0
  119. package/src/foundations/Input/common.tsx +243 -0
  120. package/src/foundations/Input/index.tsx +373 -0
  121. package/src/foundations/Input/styles.ts +226 -0
  122. package/src/foundations/Input/utils.ts +97 -0
  123. package/src/foundations/Layout/Card.tsx +108 -0
  124. package/src/foundations/Layout/FloatingButton.tsx +179 -0
  125. package/src/foundations/Layout/GridSystem.tsx +137 -0
  126. package/src/foundations/Layout/Item.tsx +59 -0
  127. package/src/foundations/Layout/ItemList.tsx +66 -0
  128. package/src/foundations/Layout/ItemSectionList.tsx +40 -0
  129. package/src/foundations/Layout/Screen.tsx +644 -0
  130. package/src/foundations/Layout/Section.tsx +103 -0
  131. package/src/foundations/Layout/TrackingScope.tsx +18 -0
  132. package/src/foundations/Layout/index.ts +34 -0
  133. package/src/foundations/Layout/styles.ts +95 -0
  134. package/src/foundations/Layout/types.ts +40 -0
  135. package/src/foundations/Layout/utils.ts +47 -0
  136. package/src/foundations/Loader/DotLoader.tsx +37 -0
  137. package/src/foundations/Loader/Loader.tsx +13 -0
  138. package/src/foundations/Loader/ProgressBar.tsx +45 -0
  139. package/src/foundations/Loader/Spinner.tsx +29 -0
  140. package/src/foundations/Loader/index.tsx +6 -0
  141. package/src/foundations/Loader/styles.ts +10 -0
  142. package/src/foundations/Loader/types.ts +35 -0
  143. package/src/foundations/Loader/utils.ts +25 -0
  144. package/src/foundations/Pagination/Dot.tsx +19 -0
  145. package/src/foundations/Pagination/PaginationDot.tsx +44 -0
  146. package/src/foundations/Pagination/PaginationNumber.tsx +31 -0
  147. package/src/foundations/Pagination/PaginationScroll.tsx +99 -0
  148. package/src/foundations/Pagination/PaginationWhiteDot.tsx +43 -0
  149. package/src/foundations/Pagination/index.tsx +25 -0
  150. package/src/foundations/Pagination/styles.ts +51 -0
  151. package/src/foundations/Pagination/types.ts +40 -0
  152. package/src/foundations/Popup/PopupNotify.tsx +276 -0
  153. package/src/foundations/Popup/PopupPromotion.tsx +118 -0
  154. package/src/foundations/Popup/index.tsx +4 -0
  155. package/src/foundations/Popup/types.ts +96 -0
  156. package/src/foundations/Radio/index.tsx +108 -0
  157. package/src/foundations/Radio/styles.ts +15 -0
  158. package/src/foundations/Radio/types.ts +31 -0
  159. package/src/foundations/Skeleton/index.tsx +118 -0
  160. package/src/foundations/Skeleton/styles.ts +5 -0
  161. package/src/foundations/Skeleton/types.ts +6 -0
  162. package/src/foundations/Switch/index.tsx +68 -0
  163. package/src/foundations/Switch/styles.ts +25 -0
  164. package/src/foundations/Switch/types.ts +19 -0
  165. package/src/foundations/Tag/index.tsx +128 -0
  166. package/src/foundations/Tag/types.ts +41 -0
  167. package/src/foundations/Text/index.tsx +241 -0
  168. package/src/foundations/Text/styles.ts +78 -0
  169. package/src/foundations/Text/types.ts +53 -0
  170. package/src/foundations/Text/utils.ts +63 -0
  171. package/src/foundations/Title/index.tsx +285 -0
  172. package/src/foundations/Title/styles.ts +55 -0
  173. package/src/foundations/Title/types.ts +21 -0
  174. package/src/foundations/index.ts +50 -0
  175. package/src/foundations/package.json +35 -0
  176. package/src/foundations/publish.sh +17 -0
  177. package/src/libs/AutoComplete/index.tsx +88 -0
  178. package/src/libs/AutoComplete/package.json +16 -0
  179. package/src/libs/AutoComplete/publish.sh +16 -0
  180. package/src/libs/AutoComplete/styles.ts +15 -0
  181. package/src/libs/AutoComplete/types.ts +60 -0
  182. package/src/libs/Avatar/index.tsx +146 -0
  183. package/src/libs/Avatar/package.json +16 -0
  184. package/src/libs/Avatar/publish.sh +20 -0
  185. package/src/libs/Avatar/styles.ts +18 -0
  186. package/src/libs/Avatar/types.ts +57 -0
  187. package/src/libs/Badge/Badge.tsx +70 -0
  188. package/src/libs/Badge/BadgeDot.tsx +11 -0
  189. package/src/libs/Badge/BadgeRibbon.tsx +122 -0
  190. package/src/libs/Badge/Shape.tsx +29 -0
  191. package/src/libs/Badge/index.tsx +7 -0
  192. package/src/libs/Badge/package.json +16 -0
  193. package/src/libs/Badge/publish.sh +18 -0
  194. package/src/libs/Badge/styles.ts +55 -0
  195. package/src/libs/Badge/types.ts +63 -0
  196. package/src/libs/Calendar/CalendarPro.tsx +307 -0
  197. package/src/libs/Calendar/Day.tsx +150 -0
  198. package/src/libs/Calendar/HeaderControl.tsx +55 -0
  199. package/src/libs/Calendar/LunarDateConverter.ts +228 -0
  200. package/src/libs/Calendar/LunarService.ts +206 -0
  201. package/src/libs/Calendar/Month.tsx +118 -0
  202. package/src/libs/Calendar/MonthList.tsx +226 -0
  203. package/src/libs/Calendar/TabHeader.tsx +91 -0
  204. package/src/libs/Calendar/Util.ts +288 -0
  205. package/src/libs/Calendar/holidayData.ts +118 -0
  206. package/src/libs/Calendar/index.tsx +383 -0
  207. package/src/libs/Calendar/package.json +18 -0
  208. package/src/libs/Calendar/publish.sh +18 -0
  209. package/src/libs/Calendar/styles.ts +122 -0
  210. package/src/libs/Calendar/types.ts +212 -0
  211. package/src/libs/Carousel/animation.ts +62 -0
  212. package/src/libs/Carousel/index.tsx +517 -0
  213. package/src/libs/Carousel/package.json +18 -0
  214. package/src/libs/Carousel/publish.sh +16 -0
  215. package/src/libs/Carousel/types.ts +71 -0
  216. package/src/libs/Chip/index.tsx +164 -0
  217. package/src/libs/Chip/package.json +16 -0
  218. package/src/libs/Chip/publish.sh +16 -0
  219. package/src/libs/Chip/styles.ts +20 -0
  220. package/src/libs/Chip/types.ts +72 -0
  221. package/src/libs/Collapse/index.tsx +305 -0
  222. package/src/libs/Collapse/package.json +16 -0
  223. package/src/libs/Collapse/publish.sh +18 -0
  224. package/src/libs/Collapse/styles.ts +37 -0
  225. package/src/libs/Collapse/types.ts +84 -0
  226. package/src/libs/DateTimePicker/WheelPicker.tsx +163 -0
  227. package/src/libs/DateTimePicker/WheelPickerItem.tsx +58 -0
  228. package/src/libs/DateTimePicker/index.tsx +188 -0
  229. package/src/libs/DateTimePicker/package.json +16 -0
  230. package/src/libs/DateTimePicker/publish.sh +17 -0
  231. package/src/libs/DateTimePicker/styles.ts +31 -0
  232. package/src/libs/DateTimePicker/types.ts +102 -0
  233. package/src/libs/DateTimePicker/utils.ts +114 -0
  234. package/src/libs/Information/index.tsx +129 -0
  235. package/src/libs/Information/package.json +16 -0
  236. package/src/libs/Information/publish.sh +18 -0
  237. package/src/libs/Information/styles.ts +34 -0
  238. package/src/libs/Information/types.ts +79 -0
  239. package/src/libs/Logo/index.tsx +39 -0
  240. package/src/libs/Logo/package.json +17 -0
  241. package/src/libs/Logo/publish.sh +16 -0
  242. package/src/libs/Logo/styles.ts +25 -0
  243. package/src/libs/Logo/types.ts +13 -0
  244. package/src/libs/ProgressInfo/ProgressInfoHorizontal.tsx +128 -0
  245. package/src/libs/ProgressInfo/ProgressInfoIcon.tsx +88 -0
  246. package/src/libs/ProgressInfo/ProgressInfoVertical.tsx +85 -0
  247. package/src/libs/ProgressInfo/index.tsx +22 -0
  248. package/src/libs/ProgressInfo/package.json +16 -0
  249. package/src/libs/ProgressInfo/publish.sh +16 -0
  250. package/src/libs/ProgressInfo/styles.ts +46 -0
  251. package/src/libs/ProgressInfo/types.ts +60 -0
  252. package/src/libs/ProgressInfo/yarn.lock +8 -0
  253. package/src/libs/Rating/index.tsx +74 -0
  254. package/src/libs/Rating/package.json +16 -0
  255. package/src/libs/Rating/publish.sh +18 -0
  256. package/src/libs/Rating/type.ts +25 -0
  257. package/src/libs/Slider/Label.tsx +33 -0
  258. package/src/libs/Slider/helpers.ts +35 -0
  259. package/src/libs/Slider/hooks.tsx +218 -0
  260. package/src/libs/Slider/index.tsx +453 -0
  261. package/src/libs/Slider/package.json +16 -0
  262. package/src/libs/Slider/publish.sh +18 -0
  263. package/src/libs/Slider/styles.ts +36 -0
  264. package/src/libs/Stepper/NumberView.tsx +64 -0
  265. package/src/libs/Stepper/StepperButton.tsx +37 -0
  266. package/src/libs/Stepper/index.tsx +139 -0
  267. package/src/libs/Stepper/package.json +16 -0
  268. package/src/libs/Stepper/publish.sh +17 -0
  269. package/src/libs/Stepper/styles.ts +44 -0
  270. package/src/libs/Stepper/types.ts +154 -0
  271. package/src/libs/Steps/StepIcon.tsx +86 -0
  272. package/src/libs/Steps/StepsHorizontal.tsx +189 -0
  273. package/src/libs/Steps/StepsVertical.tsx +133 -0
  274. package/src/libs/Steps/index.tsx +20 -0
  275. package/src/libs/Steps/package.json +16 -0
  276. package/src/libs/Steps/publish.sh +16 -0
  277. package/src/libs/Steps/styles.ts +46 -0
  278. package/src/libs/Steps/types.ts +159 -0
  279. package/src/libs/Steps/utils.ts +175 -0
  280. package/src/libs/SuggestAction/SuggestActionView.tsx +124 -0
  281. package/src/libs/SuggestAction/index.tsx +3 -0
  282. package/src/libs/SuggestAction/package.json +16 -0
  283. package/src/libs/SuggestAction/publish.sh +16 -0
  284. package/src/libs/SuggestAction/styles.ts +30 -0
  285. package/src/libs/SuggestAction/types.ts +36 -0
  286. package/src/libs/Swipe/SwipeView.tsx +151 -0
  287. package/src/libs/Swipe/index.tsx +5 -0
  288. package/src/libs/Swipe/package.json +16 -0
  289. package/src/libs/Swipe/publish.sh +16 -0
  290. package/src/libs/Swipe/styles.ts +16 -0
  291. package/src/libs/Swipe/types.ts +109 -0
  292. package/src/libs/TabView/assets/Path.tsx +29 -0
  293. package/src/libs/TabView/index.tsx +184 -0
  294. package/src/libs/TabView/package.json +16 -0
  295. package/src/libs/TabView/publish.sh +16 -0
  296. package/src/libs/TabView/styles.ts +96 -0
  297. package/src/libs/TabView/tabBar/CardTabBar.tsx +137 -0
  298. package/src/libs/TabView/tabBar/SrollableTabBar.tsx +218 -0
  299. package/src/libs/TabView/tabBar/TabBar.tsx +67 -0
  300. package/src/libs/TabView/tabItem/CardTabItem.tsx +118 -0
  301. package/src/libs/TabView/tabItem/TabItem.tsx +180 -0
  302. package/src/libs/TabView/types.ts +166 -0
  303. package/src/libs/Template/HeaderSliderBanner/index.tsx +86 -0
  304. package/src/libs/Template/HeaderSliderBanner/types.ts +16 -0
  305. package/src/libs/Template/TrustBanner/CustomAvatar.tsx +39 -0
  306. package/src/libs/Template/TrustBanner/index.tsx +161 -0
  307. package/src/libs/Template/TrustBanner/styles.ts +48 -0
  308. package/src/libs/Template/TrustBanner/types.ts +50 -0
  309. package/src/libs/Template/index.tsx +4 -0
  310. package/src/libs/Template/package.json +18 -0
  311. package/src/libs/Template/publish.sh +17 -0
  312. package/src/libs/Title/index.tsx +284 -0
  313. package/src/libs/Title/package.json +17 -0
  314. package/src/libs/Title/publish.sh +16 -0
  315. package/src/libs/Title/styles.ts +54 -0
  316. package/src/libs/Title/types.ts +21 -0
  317. package/src/libs/Tooltip/TooltipButtons.tsx +54 -0
  318. package/src/libs/Tooltip/index.tsx +608 -0
  319. package/src/libs/Tooltip/package.json +16 -0
  320. package/src/libs/Tooltip/publish.sh +18 -0
  321. package/src/libs/Tooltip/styles.ts +70 -0
  322. package/src/libs/Tooltip/types.ts +61 -0
  323. package/src/libs/Uploader/index.tsx +87 -0
  324. package/src/libs/Uploader/package.json +17 -0
  325. package/src/libs/Uploader/publish.sh +18 -0
  326. package/src/libs/Uploader/styles.ts +30 -0
  327. package/src/libs/Uploader/types.ts +69 -0
  328. package/src/native/MoMoNative.podspec +18 -0
  329. package/src/native/calculator/android/build.gradle +61 -0
  330. package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  331. package/src/native/calculator/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  332. package/src/native/calculator/android/gradlew +172 -0
  333. package/src/native/calculator/android/gradlew.bat +84 -0
  334. package/src/native/calculator/android/src/main/AndroidManifest.xml +5 -0
  335. package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewModule.java +22 -0
  336. package/src/native/calculator/android/src/main/java/com/calculator/KeyboardViewPackage.java +35 -0
  337. package/src/native/calculator/android/src/main/java/com/calculator/modules/CalculatorKeyboardModule.java +157 -0
  338. package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/CalculatorEditText.java +36 -0
  339. package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/FixedRelativeLayout.java +45 -0
  340. package/src/native/calculator/android/src/main/java/com/calculator/views/calculatorkeyboard/MomoTextInputCalculatorManager.java +173 -0
  341. package/src/native/calculator/android/src/main/java/com/calculator/views/customkeyboard/RNCustomKeyboardModule.java +417 -0
  342. package/src/native/calculator/ios/Helper/MomoHelper.swift +16 -0
  343. package/src/native/calculator/ios/KeyboardView-Bridging-Header.h +60 -0
  344. package/src/native/calculator/ios/KeyboardView.h +19 -0
  345. package/src/native/calculator/ios/KeyboardView.m +56 -0
  346. package/src/native/calculator/ios/MomoTextInputCalculator.swift +144 -0
  347. package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.h +6 -0
  348. package/src/native/calculator/ios/RNCustomKeyboard/RNCustomKeyboard.m +143 -0
  349. package/src/native/package.json +14 -0
  350. package/src/native/publish.sh +29 -0
  351. package/src/native/resource/android/build.gradle +57 -0
  352. package/src/native/resource/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  353. package/src/native/resource/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  354. package/src/native/resource/android/src/main/AndroidManifest.xml +6 -0
  355. package/src/native/resource/android/src/main/java/com/resource/RNResourceModule.java +90 -0
  356. package/src/native/resource/android/src/main/java/com/resource/RNResourcePackage.java +22 -0
  357. package/src/native/resource/ios/RNResouce.m +71 -0
  358. package/src/native/resource/ios/RNResource.h +5 -0
  359. package/example/ios/Example.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  360. package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  361. package/example/ios/Example.xcworkspace/xcuserdata/sophia.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +0 -6
  362. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/MoMoUIKits.xcscheme +0 -58
  363. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/Pods-Example.xcscheme +0 -58
  364. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImage.xcscheme +0 -58
  365. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SDWebImageSwiftUI.xcscheme +0 -58
  366. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/SkeletonUI.xcscheme +0 -58
  367. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios-LottiePrivacyInfo.xcscheme +0 -58
  368. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/lottie-ios.xcscheme +0 -58
  369. package/example/ios/Pods/Pods.xcodeproj/xcuserdata/sophia.xcuserdatad/xcschemes/xcschememanagement.plist +0 -46
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@momo-kits/doctor",
3
+ "version": "0.1.27-beta.1",
4
+ "description": "Momo-kits doctor tool",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "momo-kits": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "node ./node_modules/.bin/tsc",
11
+ "dev": "node ./node_modules/.bin/ts-node src/index.ts",
12
+ "start": "node dist/index.js",
13
+ "prepublishOnly": "npm run build",
14
+ "test": "echo \"No tests configured yet\" && exit 0"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "keywords": [
20
+ "cli",
21
+ "doctor",
22
+ "development",
23
+ "momo-kits"
24
+ ],
25
+ "author": "",
26
+ "license": "MIT",
27
+ "dependencies": {
28
+ "@yarnpkg/lockfile": "^1.1.0",
29
+ "chalk": "^4.1.2",
30
+ "commander": "^13.1.0",
31
+ "inquirer": "^8.2.5",
32
+ "react-scanner": "^1.2.0",
33
+ "semver": "^7.7.1",
34
+ "yaml": "^2.7.1"
35
+ },
36
+ "devDependencies": {
37
+ "@types/inquirer": "^8.2.5",
38
+ "@types/node": "^22.15.3",
39
+ "@types/semver": "^7.7.0",
40
+ "@types/yarnpkg__lockfile": "^1.1.9",
41
+ "ts-node": "^10.9.2",
42
+ "typescript": "^5.8.3"
43
+ }
44
+ }
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+
3
+ # Prepare dist files
4
+ rm -rf dist
5
+ mkdir dist
6
+ rsync -r --exclude=/dist ./* dist
7
+ cd dist
8
+
9
+
10
+ if [ "$1" == "stable" ]; then
11
+ npm version $(npm view @momo-kits/foundation@stable version)
12
+ npm version patch
13
+ npm publish --tag stable --access=public
14
+ elif [ "$1" == "latest" ]; then
15
+ npm version $(npm view @momo-kits/foundation@latest version)
16
+ npm publish --tag latest --access=public
17
+ else
18
+ npm version $(npm view @momo-kits/title@beta version)
19
+ npm publish --tag beta --access=public
20
+ fi
21
+
22
+ PACKAGE_NAME=$(npm pkg get name)
23
+ NEW_PACKAGE_VERSION=$(npm pkg get version)
24
+
25
+ # Clean up
26
+ cd ..
27
+ rm -rf dist
@@ -0,0 +1,112 @@
1
+ {
2
+ "vn.momo.addressbook": "users/106279817887758076140",
3
+ "vn.momo.agent": "users/106628491269004268394",
4
+ "vn.momo.ahamove": "users/107190697037501170364",
5
+ "vn.momo.ar": "users/107521286127966359664",
6
+ "vn.momo.authentication": "users/107888482176648859974",
7
+ "vn.momo.autodebit": "users/105366138186365879004",
8
+ "vn.momo.bnpl": "users/116481528213656200740",
9
+ "vn.momo.butta": "users/100079072934789639578",
10
+ "vn.momo.chatbot": "users/107521286127966359664",
11
+ "vn.momo.coinhoarding": "users/118351315569818729535",
12
+ "vn.momo.collaborators": "users/108669803684152254594",
13
+ "vn.momo.devtool": "users/117350096144600649875",
14
+ "vn.momo.edu": "users/103058152793362725873",
15
+ "vn.momo.gamihub": "users/118351315569818729535",
16
+ "vn.momo.healthcenter": "users/103058152793362725873",
17
+ "vn.momo.hlc": "users/107190697037501170364",
18
+ "vn.momo.intro": "users/118174864419592894302",
19
+ "vn.momo.lending_marketplace": "users/106628491269004268394",
20
+ "vn.momo.luckywheel": "users/100079072934789639578",
21
+ "vn.momo.mega2022client": "users/100079072934789639578",
22
+ "vn.momo.merchantsolutions": "users/106628491269004268394",
23
+ "vn.momo.merchanttemplate": "users/103541070063349578162",
24
+ "vn.momo.my_paylater": "users/116481528213656200740",
25
+ "vn.momo.oauthorize": "users/107190697037501170364",
26
+ "vn.momo.openplatform": "users/105787665677771730192",
27
+ "vn.momo.platinummembership": "users/108669803684152254594",
28
+ "vn.momo.progressionhoarding": "users/118351315569818729535",
29
+ "vn.momo.promotion": "users/100079072934789639578",
30
+ "vn.momo.referralcampaign": "users/100079072934789639578",
31
+ "vn.momo.referraltelco": "users/105366138186365879004",
32
+ "vn.momo.school": "users/100079072934789639578",
33
+ "vn.momo.soundbox": "users/107190697037501170364",
34
+ "vn.momo.tigger": "users/103541070063349578162",
35
+ "vn.momo.transfer": "users/111719399439871502655",
36
+ "vn.momo.transport": "users/105007322106342197859",
37
+ "vn.momo.utilities": "users/103058152793362725873",
38
+ "vn.momo.webapp": "users/107190697037501170364",
39
+ "vn.momo.webpaymentsdk": "users/107190697037501170364",
40
+ "vn.momo.bank": "users/101637889640502392681",
41
+ "vn.momo.coopbank": "users/101637889640502392681",
42
+ "vn.momo.ekyc": "users/101637889640502392681",
43
+ "vn.momo.medicarehub": "users/103830993282116768799",
44
+ "vn.momo.studentpass": "users/100079072934789639578",
45
+ "vn.momo.uikits": "users/106969299012781134893",
46
+ "vn.momo.airline": "users/107050213009971342413",
47
+ "vn.momo.appx": "users/102072943552797596818",
48
+ "vn.momo.billpay": "users/103826907742095830390",
49
+ "vn.momo.bookingplatform": "users/105007322106342197859",
50
+ "vn.momo.bus": "users/108790536799198663846",
51
+ "vn.momo.businesspage": "users/107190697037501170364",
52
+ "vn.momo.charitywallet": "users/100079072934789639578",
53
+ "vn.momo.cinema": "users/107050213009971342413",
54
+ "vn.momo.cornerstone": "users/100079072934789639578",
55
+ "vn.momo.expense": "users/102462794947249241785",
56
+ "vn.momo.experiences": "users/105007322106342197859",
57
+ "vn.momo.flight": "users/105007322106342197859",
58
+ "vn.momo.giftselection": "users/100079072934789639578",
59
+ "vn.momo.helpcenter": "users/102072943552797596818",
60
+ "vn.momo.heodat": "users/100079072934789639578",
61
+ "vn.momo.hotel": "users/107268811571346968186",
62
+ "vn.momo.iris": "users/116481528213656200740",
63
+ "vn.momo.mobilecenter": "users/105366138186365879004",
64
+ "vn.momo.momoreward": "users/100079072934789639578",
65
+ "vn.momo.mypocket": "users/100079072934789639578",
66
+ "vn.momo.nikepromotion": "users/100079072934789639578",
67
+ "vn.momo.oa": "users/107190697037501170364",
68
+ "vn.momo.oaportal": "users/107190697037501170364",
69
+ "vn.momo.paymentoffline": "users/106279817887758076140",
70
+ "vn.momo.paymentsdk": "users/106279817887758076140",
71
+ "vn.momo.pigwalking": "users/100079072934789639578",
72
+ "vn.momo.platinum": "users/107190697037501170364",
73
+ "vn.momo.promotionhub": "users/100079072934789639578",
74
+ "vn.momo.publicservice": "users/103058152793362725873",
75
+ "vn.momo.referral": "users/100079072934789639578",
76
+ "vn.momo.securitycenter": "users/102072943552797596818",
77
+ "vn.momo.shakenearby": "users/100079072934789639578",
78
+ "vn.momo.stock": "users/112479860052989960404",
79
+ "vn.momo.train": "users/107268811571346968186",
80
+ "vn.momo.transactionhistory": "users/102462794947249241785",
81
+ "vn.momo.transportcenter": "users/103058152793362725873",
82
+ "vn.momo.travel": "users/105007322106342197859",
83
+ "vn.momo.vietlottsms": "users/103541070063349578162",
84
+ "vn.momo.monorepo": "users/106955297172340348357",
85
+ "vn.momo.credit_newton": "users/108810883556893760938",
86
+ "vn.momo.creditcardmarketplace": "users/106628491269004268394",
87
+ "vn.momo.finance": "users/106628491269004268394",
88
+ "vn.momo.finance_remittance": "users/116481528213656200740",
89
+ "vn.momo.ins_car_damage": "users/106628491269004268394",
90
+ "vn.momo.ins_collection": "users/101833565227113239870",
91
+ "vn.momo.ins_marketplace": "users/116481528213656200740",
92
+ "vn.momo.ins_medical_social": "users/106628491269004268394",
93
+ "vn.momo.investment": "users/116481528213656200740",
94
+ "vn.momo.investmentplatform": "users/106628491269004268394",
95
+ "vn.momo.kratos": "users/106303658937136180468",
96
+ "vn.momo.lending_platform": "users/116481528213656200740",
97
+ "vn.momo.loan_fastmoney": "users/116481528213656200740",
98
+ "vn.momo.paylaterverse": "users/116481528213656200740",
99
+ "vn.momo.user_investment": "users/116481528213656200740",
100
+ "vn.momo.user_score": "users/116481528213656200740",
101
+ "vn.momo.vaynhanh": "users/101520379279578068463",
102
+ "vn.momo.chat": "users/104660424091381270425",
103
+ "vn.momo.profile": "users/100978890687314684768",
104
+ "vn.momo.newsfeed": "users/117721701937816754788",
105
+ "vn.momo.reviewplatform": "users/117721701937816754788",
106
+ "vn.momo.reels": "users/117721701937816754788",
107
+ "vn.momo.receivemoney": "users/111719399439871502655",
108
+ "vn.momo.requestmoney": "users/111719399439871502655",
109
+ "vn.momo.groupfund": "users/111719399439871502655",
110
+ "vn.momo.p2p": "users/111719399439871502655",
111
+ "vn.momo.p2m": "users/111719399439871502655"
112
+ }
@@ -0,0 +1,6 @@
1
+ [
2
+ "vn.momo.securitycenter",
3
+ "vn.momo.helpcenter",
4
+ "vn.momo.bank",
5
+ "vn.momo.ekyc"
6
+ ]
@@ -0,0 +1,81 @@
1
+ import inquirer from 'inquirer';
2
+ import {checkCoreDependencies} from '../utils/checkCoreDependencies';
3
+ import {checkNativeModuleUsage} from '../task/native';
4
+ import {getLogger, logger} from '../logger';
5
+ import {scanMaxApiUsage} from '../utils/scanMaxApiUsage';
6
+ import scanComponentUsage from '../utils/scanComponentUsage';
7
+ import { checkDeprecatedPackages } from '../utils/checkDeprecatedPackages';
8
+ import { checkDeprecatedVersion } from '../utils/checkDeprecatedVersion';
9
+ import {scanFoundationImports} from '../utils/scanFoundationImports';
10
+
11
+ // Contextual loggers for tasks
12
+ const coreLog = getLogger('CORE_DEP');
13
+ const nativeLog = getLogger('NATIVE_MOD');
14
+ const maxApiLog = getLogger('MAX_API');
15
+ const adoptionLog = getLogger('ADOPTION_RATE');
16
+ const deprecatedPkgLog = getLogger('DEPRECATED_PKG');
17
+ const deprecatedVerLog = getLogger('DEPRECATED_VER');
18
+ const foundationLog = getLogger('FOUNDATION_IMPORTS');
19
+
20
+ export async function checkCommand() {
21
+ const {task} = await inquirer.prompt([
22
+ {
23
+ type: 'list',
24
+ name: 'task',
25
+ message: 'What would you like to check?',
26
+ choices: [
27
+ 'Check Mini App using @momo-kits/core or package contain dependency @momo-kits/core',
28
+ 'Check Mini App using NativeModule',
29
+ 'Calculate miniapp adoption rate',
30
+ 'Check Mini App using MaxApi functions will be removed or deprecated',
31
+ 'Check Mini App for deprecated @momo-kits packages',
32
+ 'Check Mini App for deprecated 0.x.x dependency versions (<0.80.x)',
33
+ 'Check Mini App using invalid @momo-kits/foundation imports',
34
+ ],
35
+ },
36
+ ]);
37
+
38
+ switch (task) {
39
+ case 'Check Mini App using @momo-kits/core or package contain dependency @momo-kits/core':
40
+ coreLog.info('Running core dependency check');
41
+ checkCoreDependencies();
42
+ break;
43
+ case 'Check Mini App using NativeModule':
44
+ nativeLog.info('Scanning for native module usage');
45
+ await checkNativeModuleUsage();
46
+ break;
47
+ case 'Calculate miniapp adoption rate':
48
+ adoptionLog.info('Calculating component adoption rate');
49
+ await scanComponentUsage();
50
+ break;
51
+ case 'Check Mini App using MaxApi functions will be removed or deprecated':
52
+ maxApiLog.info('Scanning for deprecated MaxAPI usage');
53
+ await scanMaxApiUsage();
54
+ break;
55
+ case 'Check Mini App for deprecated @momo-kits packages':
56
+ deprecatedPkgLog.info('Scanning for deprecated @momo-kits packages');
57
+ checkDeprecatedPackages();
58
+ break;
59
+ case 'Check Mini App for deprecated 0.x.x dependency versions (<0.80.x)':
60
+ deprecatedVerLog.info('Scanning for deprecated 0.x.x dependency versions (<0.80.x)');
61
+ checkDeprecatedVersion();
62
+ break;
63
+ case 'Check Mini App using invalid @momo-kits/foundation imports':
64
+ foundationLog.info('Scanning for invalid foundation imports');
65
+ const results = scanFoundationImports();
66
+ const files = Object.keys(results);
67
+ if (files.length === 0) {
68
+ foundationLog.success('✅ No invalid foundation imports found.');
69
+ } else {
70
+ foundationLog.error(`⚠️ Found invalid foundation imports in ${files.length} file(s):`);
71
+ for (const file of files) {
72
+ foundationLog.info(` ${file}: ${results[file].join(', ')}`);
73
+ }
74
+ foundationLog.info('Only imports from @momo-kits/foundation are allowed, not from internal paths.');
75
+ }
76
+ break;
77
+ default:
78
+ logger.error('Invalid task');
79
+ break;
80
+ }
81
+ }
@@ -0,0 +1,193 @@
1
+ import {logger} from '../logger';
2
+ import {
3
+ checkCoreDependencies,
4
+ scanCoreNodeModule,
5
+ } from '../utils/checkCoreDependencies';
6
+ import {checkNativeModuleUsage} from '../task/native';
7
+ import scanComponentUsage from '../utils/scanComponentUsage';
8
+ import {scanNativeModulesUsage} from '../utils/scanNativeModulesUsage';
9
+ import {scanMaxApiUsage} from '../utils/scanMaxApiUsage';
10
+ import {checkDeprecatedPackages} from '../utils/checkDeprecatedPackages';
11
+ import {checkDeprecatedVersion} from '../utils/checkDeprecatedVersion';
12
+ import {sendMessage} from '../utils/sendMessage';
13
+ import {getErrorMessage} from '../utils/getErrorMessage';
14
+ import {checkWrongVersionCommunityPackage} from '../utils/checkWrongVersionCommunityPackage';
15
+ import {
16
+ scanFoundationImports,
17
+ scanInternalImportsBuckets,
18
+ } from '../utils/scanFoundationImports';
19
+ import {checkDeletedPackages} from '../utils/checkDeletedPackage';
20
+ import checkShareDependencies from '../utils/checkShareDependencies';
21
+
22
+ /**
23
+ * Runs all health checks: core dependencies, native modules, deprecated MaxAPI usage, and foundation imports.
24
+ * Logs results and outputs a final app health summary.
25
+ */
26
+ export async function doctorCommand(appIdArg?: string): Promise<void> {
27
+ logger.info('🧰 Running doctor: performing all checks...');
28
+
29
+ const BranchOwners: {[key: string]: string} = await fetch(
30
+ 'https://static.momocdn.net/app/json/component-kits/Users.json'
31
+ )
32
+ .then(res => res.json())
33
+ .catch(e => {
34
+ console.log(e);
35
+ return;
36
+ });
37
+
38
+ const WhiteListAppId: string[] = await fetch(
39
+ 'https://static.momocdn.net/app/json/component-kits/Whitelist.json'
40
+ )
41
+ .then(res => res.json())
42
+ .catch(e => {
43
+ console.log(e);
44
+ return;
45
+ });
46
+
47
+ const isWhitelist = WhiteListAppId.includes(appIdArg || 'vn.momo');
48
+
49
+ let allHealthy = true;
50
+
51
+ // Core dependency check
52
+ const coreHealthy = checkCoreDependencies();
53
+ const nodeModuleHaveCore = scanCoreNodeModule();
54
+ if (!coreHealthy || !nodeModuleHaveCore) {
55
+ if (isWhitelist) {
56
+ allHealthy = false;
57
+ } else {
58
+ throw new Error(
59
+ 'Core dependencies check failed. Please ensure all required dependencies are installed and up-to-date.'
60
+ );
61
+ }
62
+ }
63
+
64
+ // Native modules usage check
65
+ const nativeResults = scanNativeModulesUsage();
66
+ const nativeHealthy = await checkNativeModuleUsage();
67
+ const nativeUsageCount = Object.keys(nativeResults).length;
68
+ if (!nativeHealthy) {
69
+ if (isWhitelist) {
70
+ allHealthy = false;
71
+ } else {
72
+ throw new Error(
73
+ 'Native module usage check failed. Please ensure all native modules are correctly implemented.'
74
+ );
75
+ }
76
+ }
77
+
78
+ const deletedPackages = checkDeletedPackages();
79
+ if (deletedPackages.found.length > 0) {
80
+ if (isWhitelist) {
81
+ allHealthy = false;
82
+ } else {
83
+ throw new Error(
84
+ `Deleted packages found: ${deletedPackages.found.join(
85
+ ', '
86
+ )}. Please remove them from your package.json.`
87
+ );
88
+ }
89
+ }
90
+
91
+ // Component usage scan
92
+ logger.info('🔍 Scanning component usage...');
93
+ let componentRate: number = 0;
94
+ try {
95
+ const {rate = 0} = await scanComponentUsage();
96
+ componentRate = rate;
97
+ if (rate < 0.5) {
98
+ allHealthy = false;
99
+ }
100
+ } catch (error) {
101
+ logger.error(`Component scan failed: ${error}`);
102
+ allHealthy = false;
103
+ }
104
+
105
+ // Deprecated MaxAPI usage check
106
+ const maxApiResults = scanMaxApiUsage();
107
+ const maxApiHealthy = Object.keys(maxApiResults).length === 0;
108
+ if (maxApiHealthy) {
109
+ logger.success('✅ No deprecated MaxAPI usage found.');
110
+ } else {
111
+ allHealthy = false;
112
+ }
113
+
114
+ // Deprecated packages check
115
+ const {healthy: deprecatedPkgHealthy, found: deprecatedPkgList} =
116
+ checkDeprecatedPackages();
117
+ if (!deprecatedPkgHealthy) {
118
+ allHealthy = false;
119
+ }
120
+
121
+ // Deprecated version check
122
+ const {healthy: deprecatedVerHealthy, found: deprecatedVerList} =
123
+ checkDeprecatedVersion();
124
+ if (!deprecatedVerHealthy) {
125
+ allHealthy = false;
126
+ }
127
+
128
+ // Wrong version check
129
+ const {healthy: wrongVersionHealthy, found: wrongVersionList} =
130
+ checkWrongVersionCommunityPackage();
131
+ if (!wrongVersionHealthy) {
132
+ allHealthy = false;
133
+ }
134
+
135
+ const sharedDependenciesResult = checkShareDependencies();
136
+ if (!sharedDependenciesResult.healthy) {
137
+ allHealthy = false;
138
+ }
139
+
140
+ // Foundation imports check
141
+ logger.info('🔍 Scanning foundation imports...');
142
+ const foundationResults = scanFoundationImports();
143
+ const {foundations: foundationInternalImports, momoKitsOthers} =
144
+ scanInternalImportsBuckets();
145
+ const foundationHealthy =
146
+ foundationInternalImports.length === 0 && momoKitsOthers.length === 0;
147
+ if (foundationHealthy) {
148
+ logger.success('✅ No invalid foundation imports found.');
149
+ } else {
150
+ logger.error(
151
+ `⚠️ Found invalid foundation imports in ${
152
+ Object.keys(foundationResults).length
153
+ } file(s). Only imports from @momo-kits/foundation are allowed, not from internal paths.`
154
+ );
155
+ throw new Error(
156
+ 'Invalid nested imports found. Please import from entry only'
157
+ );
158
+ }
159
+
160
+ // Final app health summary
161
+ if (allHealthy) {
162
+ logger.success('🎉 App health is good! All checks passed.');
163
+ } else {
164
+ logger.error(
165
+ '⚠️ App health issues detected. Please review the above errors.'
166
+ );
167
+ }
168
+
169
+ const appId = appIdArg || 'vn.momo';
170
+ const url =
171
+ 'https://chat.googleapis.com/v1/spaces/AAAAbP8987c/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=UGSFRvk_oYb9uGsAgs31bVvMm6jDkmD8zihGm3eyaQA';
172
+
173
+ const messageTest = getErrorMessage(
174
+ coreHealthy,
175
+ nativeHealthy,
176
+ nativeUsageCount,
177
+ componentRate,
178
+ maxApiHealthy,
179
+ maxApiResults,
180
+ deprecatedPkgList,
181
+ deprecatedVerList,
182
+ wrongVersionList,
183
+ sharedDependenciesResult.issues,
184
+ foundationResults
185
+ );
186
+ const userId = BranchOwners[appId];
187
+
188
+ console.log('Doctor check output:\n', appId, messageTest);
189
+
190
+ if (appId && userId && messageTest) {
191
+ sendMessage(url, messageTest, userId, appId);
192
+ }
193
+ }
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {program} from 'commander';
4
+ import {logger} from './logger';
5
+
6
+ // Import commands
7
+ import {checkCommand} from './commands/check';
8
+ import {doctorCommand} from './commands/doctor';
9
+
10
+ // Set up CLI
11
+ program.name('momo-kits').description('MoMo Kits doctor CLI').version('0.1.0');
12
+
13
+ // Add check command
14
+ program
15
+ .command('check')
16
+ .description(
17
+ 'Run check mini app with common rule and compatible with MoMo Platform App'
18
+ )
19
+ .action(checkCommand);
20
+
21
+ // Add doctor command to run all checks
22
+ program
23
+ .command('doctor [appId]')
24
+ .description('Run all checks and log app health summary')
25
+ .action((appId?: string) => doctorCommand(appId));
26
+
27
+ // Handle when no command is specified
28
+ if (process.argv.length <= 2) {
29
+ logger.info('🧰 Welcome to Momo-kits doctor CLI!');
30
+ logger.info('Run `momo-kits --help` to see available commands');
31
+ program.help();
32
+ }
33
+
34
+ // Parse args
35
+ program.parse();
@@ -0,0 +1,84 @@
1
+ import chalk from 'chalk';
2
+
3
+ // Define log levels
4
+ export enum LogLevel {
5
+ DEBUG = 0,
6
+ INFO = 1,
7
+ WARN = 2,
8
+ ERROR = 3,
9
+ }
10
+
11
+ // String identifiers for log levels, used for environment variable lookup and tagging
12
+ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'] as const;
13
+ type LogLevelName = typeof LOG_LEVELS[number];
14
+
15
+ // Determine current log level from environment (default to INFO)
16
+ const envLevel = (process.env.LOG_LEVEL || 'info').toLowerCase() as LogLevelName;
17
+ const currentLevel: LogLevel =
18
+ LOG_LEVELS.includes(envLevel)
19
+ ? (LOG_LEVELS.indexOf(envLevel) as LogLevel)
20
+ : LogLevel.INFO;
21
+
22
+ // Check if a message at the given level should be logged
23
+ function shouldLog(level: LogLevel): boolean {
24
+ return level >= currentLevel;
25
+ }
26
+
27
+ // Format the message with a level tag and color
28
+ function formatMessage(level: LogLevel, message: string): string {
29
+ const tag = `[${LOG_LEVELS[level].toUpperCase()}]`;
30
+ switch (level) {
31
+ case LogLevel.DEBUG:
32
+ return chalk.gray(`${tag} ${message}`);
33
+ case LogLevel.INFO:
34
+ return chalk.blue(`${tag} ${message}`);
35
+ case LogLevel.WARN:
36
+ return chalk.yellow(`${tag} ${message}`);
37
+ case LogLevel.ERROR:
38
+ return chalk.red(`${tag} ${message}`);
39
+ default:
40
+ return message;
41
+ }
42
+ }
43
+
44
+ // Common logger with methods for each level
45
+ export const logger = {
46
+ debug: (message: string) => {
47
+ if (shouldLog(LogLevel.DEBUG)) {
48
+ console.log(formatMessage(LogLevel.DEBUG, message));
49
+ }
50
+ },
51
+ info: (message: string) => {
52
+ if (shouldLog(LogLevel.INFO)) {
53
+ console.log(formatMessage(LogLevel.INFO, message));
54
+ }
55
+ },
56
+ warn: (message: string) => {
57
+ if (shouldLog(LogLevel.WARN)) {
58
+ console.warn(formatMessage(LogLevel.WARN, message));
59
+ }
60
+ },
61
+ error: (message: string) => {
62
+ if (shouldLog(LogLevel.ERROR)) {
63
+ console.error(formatMessage(LogLevel.ERROR, message));
64
+ }
65
+ },
66
+ // Shortcut for success messages (green)
67
+ success: (message: string) => {
68
+ if (shouldLog(LogLevel.INFO)) {
69
+ console.log(chalk.green(`[SUCCESS] ${message}`));
70
+ }
71
+ },
72
+ };
73
+
74
+ // Factory to create a logger with a context tag prefix
75
+ export function getLogger(context: string) {
76
+ const prefix = `[${context}] `;
77
+ return {
78
+ debug: (message: string) => logger.debug(prefix + message),
79
+ info: (message: string) => logger.info(prefix + message),
80
+ warn: (message: string) => logger.warn(prefix + message),
81
+ error: (message: string) => logger.error(prefix + message),
82
+ success: (message: string) => logger.success(prefix + message),
83
+ };
84
+ }
@@ -0,0 +1,21 @@
1
+ import { logger } from '../logger';
2
+ import {scanNativeModulesUsage, ScanResult} from '../utils/scanNativeModulesUsage';
3
+
4
+ /**
5
+ * Checks for Native Modules usage in code directories and logs results.
6
+ */
7
+ export async function checkNativeModuleUsage(): Promise<boolean> {
8
+ logger.info('Scanning for Native modules usage...');
9
+ const results: ScanResult = scanNativeModulesUsage();
10
+ const files = Object.keys(results);
11
+ if (files.length === 0) {
12
+ logger.success('✅ No native modules usage found.');
13
+ return true;
14
+ } else {
15
+ logger.error(`⚠️ Found native modules usage in ${files.length} file(s):`);
16
+ for (const file of files) {
17
+ logger.info(` ${file}: ${results[file].join(', ')}`);
18
+ }
19
+ return false;
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ import {clearInterval} from 'node:timers';
2
+
3
+ /**
4
+ * Displays an animated loading indicator
5
+ * @returns Promise that resolves when loading completes
6
+ */
7
+ export function simulateLoading() {
8
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
9
+ let i = 0;
10
+
11
+ process.stdout.write('\r');
12
+ const interval = setInterval(() => {
13
+ process.stdout.write(`\r${frames[i]} Processing...`);
14
+ i = (i + 1) % frames.length;
15
+ }, 80);
16
+
17
+ return () => {
18
+ clearInterval(interval);
19
+ };
20
+ }