sparkling-method 2.0.0-rc.0 → 2.0.0-rc.1

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 (290) hide show
  1. package/README.md +39 -0
  2. package/android/build.gradle.kts +153 -0
  3. package/android/gradle.properties +1 -0
  4. package/android/proguard-rules.pro +21 -0
  5. package/android/src/androidTest/java/com/tiktok/sparkling/sparkling/methods/ExampleInstrumentedTest.kt +27 -0
  6. package/android/src/main/AndroidManifest.xml +5 -0
  7. package/android/src/main/java/com/tiktok/sparkling/method/protocol/BridgeContext.kt +74 -0
  8. package/android/src/main/java/com/tiktok/sparkling/method/protocol/DefaultBridgeClientImp.kt +47 -0
  9. package/android/src/main/java/com/tiktok/sparkling/method/protocol/DefaultBridgeLifeClientImp.kt +233 -0
  10. package/android/src/main/java/com/tiktok/sparkling/method/protocol/InnerBridge.kt +134 -0
  11. package/android/src/main/java/com/tiktok/sparkling/method/protocol/entity/BridgeCall.kt +79 -0
  12. package/android/src/main/java/com/tiktok/sparkling/method/protocol/entity/BridgeResult.kt +68 -0
  13. package/android/src/main/java/com/tiktok/sparkling/method/protocol/handler/BridgeDispatcher.kt +198 -0
  14. package/android/src/main/java/com/tiktok/sparkling/method/protocol/handler/BridgeFactoryManager.kt +16 -0
  15. package/android/src/main/java/com/tiktok/sparkling/method/protocol/handler/BridgeThreadDispatcher.kt +56 -0
  16. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/errors/JSBErrorReportModel.kt +144 -0
  17. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/interceptor/BridgeMockInterceptor.kt +30 -0
  18. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lifecycle/fe/FeCallMonitorModel.kt +66 -0
  19. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxBridgeDelegateModule.kt +31 -0
  20. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxBridgeProtol.kt +69 -0
  21. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxRuntimeBridgeDelegateModule.kt +31 -0
  22. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxViewImpl.kt +29 -0
  23. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/lynx/RealLynxBridgeDelegate.kt +147 -0
  24. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/monitor/BridgeSDKMonitor.kt +239 -0
  25. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/monitor/IBridgeMonitor.kt +17 -0
  26. package/android/src/main/java/com/tiktok/sparkling/method/protocol/impl/monitor/MonitorEntity.kt +22 -0
  27. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeCallback.kt +14 -0
  28. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeClient.kt +19 -0
  29. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeHandler.kt +23 -0
  30. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeLifeClient.kt +45 -0
  31. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeMethodCallback.kt +10 -0
  32. package/android/src/main/java/com/tiktok/sparkling/method/protocol/interfaces/IBridgeProtocol.kt +22 -0
  33. package/android/src/main/java/com/tiktok/sparkling/method/protocol/utils/BridgeConstants.kt +13 -0
  34. package/android/src/main/java/com/tiktok/sparkling/method/protocol/utils/BridgeConverter.kt +147 -0
  35. package/android/src/main/java/com/tiktok/sparkling/method/protocol/utils/LogUtils.kt +37 -0
  36. package/android/src/main/java/com/tiktok/sparkling/method/protocol/utils/MonitorUtils.kt +41 -0
  37. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/BridgeLocalPool.kt +70 -0
  38. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/BridgeSettings.kt +19 -0
  39. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/BusinessCallHandler.kt +100 -0
  40. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/CancelCallbackConfig.kt +13 -0
  41. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/DefaultCallHandler.kt +106 -0
  42. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/IBridgeMethod.kt +118 -0
  43. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/PiperDataExt.kt +71 -0
  44. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/SparklingBridge.kt +374 -0
  45. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/Utils.kt +89 -0
  46. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/interfaces/IBridgeNotFound.kt +11 -0
  47. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/processor/LynxDataProcessorForMap.kt +204 -0
  48. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/processor/LynxPlatformDataProcessor.kt +239 -0
  49. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/processor/WebPlatformDataProcessor.kt +307 -0
  50. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/processor/WebProcessorForMap.kt +227 -0
  51. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/BridgeMethodCallbackHelper.kt +29 -0
  52. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/BridgeProtocolConstants.kt +12 -0
  53. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/DataConvertUtils.kt +684 -0
  54. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/IConvertUtils.kt +44 -0
  55. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/LogHelper.kt +30 -0
  56. package/android/src/main/java/com/tiktok/sparkling/method/registry/api/util/ThreadPool.kt +73 -0
  57. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/BridgeCollections.kt +194 -0
  58. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/BridgePlatformType.kt +13 -0
  59. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IBridgeContext.kt +137 -0
  60. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLBridgeMethod.kt +100 -0
  61. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLMethodProvider.kt +13 -0
  62. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLMethodRegistry.kt +132 -0
  63. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLMethodRegistryCache.kt +150 -0
  64. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLMethodRegistryCacheManager.kt +34 -0
  65. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IDLProxyClient.kt +28 -0
  66. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/IRegister.kt +21 -0
  67. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/LocalBridge.kt +70 -0
  68. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/ReadableMapImpl.kt +227 -0
  69. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/RegistryCache.kt +77 -0
  70. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/SparklingBridgeManager.kt +50 -0
  71. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodIntEnum.kt +15 -0
  72. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodName.kt +17 -0
  73. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodParamField.kt +42 -0
  74. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodParamModel.kt +13 -0
  75. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodResultModel.kt +13 -0
  76. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/annotation/IDLMethodStringEnum.kt +15 -0
  77. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/base/AbsSparklingIDLMethod.kt +276 -0
  78. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/exception/IDLMethodException.kt +10 -0
  79. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/exception/IllegalInputParamException.kt +12 -0
  80. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/exception/IllegalOperationException.kt +12 -0
  81. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/exception/IllegalOutputParamException.kt +13 -0
  82. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/interfaces/IContainerIDProvider.kt +13 -0
  83. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/interfaces/INameSpaceProvider.kt +13 -0
  84. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/interfaces/IPlatformDataProcessor.kt +19 -0
  85. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/interfaces/IReleasable.kt +13 -0
  86. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/context/BridgeCallThreadTypeConfig.kt +44 -0
  87. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/context/ContextProviderFactory.kt +133 -0
  88. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/idl/CompletionBlock.kt +26 -0
  89. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/idl/IDLDynamic.kt +97 -0
  90. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/idl/IDLMethodBaseModel.kt +37 -0
  91. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/idl/IDLMethodBaseParamModel.kt +62 -0
  92. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/model/idl/IDLMethodBaseResultModel.kt +18 -0
  93. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/BridgeKTX.kt +37 -0
  94. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/IAssignDir.kt +25 -0
  95. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/IDLMethodHelper.kt +44 -0
  96. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/IDLMethodResultModelArguments.kt +264 -0
  97. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/IDLMethodResultModelHelper.kt +194 -0
  98. package/android/src/main/java/com/tiktok/sparkling/method/registry/core/utils/JsonUtils.kt +200 -0
  99. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/BridgeBaseRuntime.kt +11 -0
  100. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/CommonDependsProvider.kt +14 -0
  101. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/common/IHostNetworkDepend.kt +19 -0
  102. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/common/IHostPermissionDepend.kt +34 -0
  103. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/common/IHostThreadPoolExecutorDepend.kt +12 -0
  104. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/network/AbsStreamConnection.kt +36 -0
  105. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/network/AbsStringConnection.kt +30 -0
  106. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/network/HttpRequest.kt +134 -0
  107. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/network/NetworkRequestImpl.kt +28 -0
  108. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/network/RequestJsonFormatOptionConstants.kt +10 -0
  109. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/utils/BridgeAPIRequestUtils.kt +365 -0
  110. package/android/src/main/java/com/tiktok/sparkling/method/runtime/depend/utils/HttpUrlBuilder.kt +97 -0
  111. package/android/src/main/res/drawable/ic_launcher_background.xml +170 -0
  112. package/android/src/main/res/drawable/ic_launcher_foreground.xml +30 -0
  113. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +6 -0
  114. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +6 -0
  115. package/android/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  116. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  117. package/android/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  118. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  119. package/android/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  120. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  121. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  122. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  123. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  124. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  125. package/android/src/main/res/values/colors.xml +10 -0
  126. package/android/src/main/res/values/strings.xml +3 -0
  127. package/android/src/test/java/com/tiktok/sparkling/method/TestApplication.kt +19 -0
  128. package/android/src/test/java/com/tiktok/sparkling/method/protocol/BridgeContextTest.kt +89 -0
  129. package/android/src/test/java/com/tiktok/sparkling/method/protocol/DefaultBridgeClientImpTest.kt +78 -0
  130. package/android/src/test/java/com/tiktok/sparkling/method/protocol/DefaultBridgeLifeClientImpTest.kt +97 -0
  131. package/android/src/test/java/com/tiktok/sparkling/method/protocol/InnerBridgeTest.kt +105 -0
  132. package/android/src/test/java/com/tiktok/sparkling/method/protocol/entity/BridgeCallTest.kt +61 -0
  133. package/android/src/test/java/com/tiktok/sparkling/method/protocol/entity/BridgeResultTest.kt +74 -0
  134. package/android/src/test/java/com/tiktok/sparkling/method/protocol/handler/BridgeDispatcherTest.kt +96 -0
  135. package/android/src/test/java/com/tiktok/sparkling/method/protocol/handler/BridgeFactoryManagerTest.kt +21 -0
  136. package/android/src/test/java/com/tiktok/sparkling/method/protocol/handler/BridgeThreadDispatcherTest.kt +34 -0
  137. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/errors/JSBErrorReportModelTest.kt +60 -0
  138. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/interceptor/BridgeMockInterceptorTest.kt +51 -0
  139. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/lifecycle/fe/FeCallMonitorModelTest.kt +65 -0
  140. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxBridgeDelegateModuleTest.kt +57 -0
  141. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxBridgeProtocolTest.kt +10 -0
  142. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/lynx/LynxRuntimeBridgeDelegateModuleTest.kt +37 -0
  143. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/lynx/RealLynxBridgeDelegateTest.kt +10 -0
  144. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/monitor/BridgeSDKMonitorTest.kt +10 -0
  145. package/android/src/test/java/com/tiktok/sparkling/method/protocol/impl/monitor/MonitorEntityTest.kt +43 -0
  146. package/android/src/test/java/com/tiktok/sparkling/method/registry/api/SparklingBridgeTest.kt +444 -0
  147. package/android/src/test/java/com/tiktok/sparkling/method/registry/api/util/DataConvertUtilsTest.kt +236 -0
  148. package/android/src/test/java/com/tiktok/sparkling/method/registry/core/IDLMethodRegistryTest.kt +331 -0
  149. package/android/src/test/java/com/tiktok/sparkling/method/registry/core/LocalBridgeTest.kt +299 -0
  150. package/android/src/test/java/com/tiktok/sparkling/method/registry/core/SparklingBridgeManagerTest.kt +213 -0
  151. package/android/src/test/java/com/tiktok/sparkling/method/registry/core/base/AbsSparklingIDLMethodTest.kt +307 -0
  152. package/android/src/test/java/com/tiktok/sparkling/method/registry/core/exception/IDLMethodExceptionTest.kt +311 -0
  153. package/android/src/test/java/com/tiktok/sparkling/method/runtime/depend/BridgeBaseRuntimeTest.kt +54 -0
  154. package/android/src/test/resources/robolectric.properties +5 -0
  155. package/dist/index.d.ts +55 -2
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +181 -52
  158. package/dist/index.js.map +1 -1
  159. package/dist/types.d.ts +37 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +5 -0
  162. package/dist/types.js.map +1 -0
  163. package/dist/typing.d.ts +44 -0
  164. package/ios/Sources/Core/DI/DIContainerProtocol.swift +27 -0
  165. package/ios/Sources/Core/DI/DIContainerProvider.swift +10 -0
  166. package/ios/Sources/Core/DI/DIProviderRegistry.swift +21 -0
  167. package/ios/Sources/Core/Definitions/CommonDefines.swift +17 -0
  168. package/ios/Sources/Core/Examples/SampleMethod+impl.swift +24 -0
  169. package/ios/Sources/Core/Examples/SampleMethod.swift +58 -0
  170. package/ios/Sources/Core/Models/MethodContext.swift +53 -0
  171. package/ios/Sources/Core/Models/MethodStatus.swift +146 -0
  172. package/ios/Sources/Core/Models/SPKAutoRegisteringMethod.swift +7 -0
  173. package/ios/Sources/Core/Pipe/MethodPipe+Internal.swift +90 -0
  174. package/ios/Sources/Core/Pipe/MethodPipe.swift +45 -0
  175. package/ios/Sources/Core/Pipe/MethodRegistry.swift +97 -0
  176. package/ios/Sources/Core/Protocols/DictionaryCodable.swift +10 -0
  177. package/ios/Sources/Core/Protocols/MethodModel.swift +143 -0
  178. package/ios/Sources/Core/Protocols/MethodPipeFacade.swift +16 -0
  179. package/ios/Sources/Core/Protocols/PipeContainer.swift +21 -0
  180. package/ios/Sources/Core/Protocols/PipeEngine.swift +10 -0
  181. package/ios/Sources/Core/Protocols/PipeMethod.swift +83 -0
  182. package/ios/Sources/Core/Protocols/PipeRuntime.swift +9 -0
  183. package/ios/Sources/Core/Utils/AnyCodableValue.swift +128 -0
  184. package/ios/Sources/Core/Utils/CoreUtils.swift +17 -0
  185. package/ios/Sources/Core/Utils/NSString+SPKBridgeAdditions.swift +35 -0
  186. package/ios/Sources/Core/Utils/ReadWriteLock.swift +33 -0
  187. package/ios/Sources/Core/Utils/SPKHttpResponseChromium.swift +24 -0
  188. package/ios/Sources/Core/Utils/SPKNetworkManager.swift +200 -0
  189. package/ios/Sources/Core/Utils/SPKReachability.swift +46 -0
  190. package/ios/Sources/DIProvider/DIContainer.swift +80 -0
  191. package/ios/Sources/DIProvider/DefaultDIContainerProvider.swift +21 -0
  192. package/ios/Sources/Debug/MethodPipe+Debug.swift +36 -0
  193. package/ios/Sources/Lynx/Definitions/LynxConstants.swift +19 -0
  194. package/ios/Sources/Lynx/Definitions/LynxPipeStatusCode.swift +26 -0
  195. package/ios/Sources/Lynx/Definitions/LynxTypealiases.swift +7 -0
  196. package/ios/Sources/Lynx/Engine/LynxConfig+SPKPipe.swift +31 -0
  197. package/ios/Sources/Lynx/Engine/LynxContext+SPKPipe.swift +21 -0
  198. package/ios/Sources/Lynx/Engine/LynxPipeEngine.swift +52 -0
  199. package/ios/Sources/Lynx/Engine/LynxPipeEnginePool.swift +41 -0
  200. package/ios/Sources/Lynx/Engine/LynxView+SPKPipe.swift +64 -0
  201. package/ios/Sources/Lynx/Engine/SPKLynxModuleService.swift +23 -0
  202. package/ios/Sources/Lynx/Models/LynxRecvMessage.swift +31 -0
  203. package/ios/Sources/Lynx/Models/LynxSendMessage.swift +55 -0
  204. package/ios/Sources/Lynx/Module/SPKLynxNativeModule.swift +41 -0
  205. package/ios/Sources/Lynx/Pipe/MethodPipe+Lynx.swift +53 -0
  206. package/ios/SparklingMethod.podspec +65 -0
  207. package/package.json +11 -29
  208. package/src/index.ts +240 -0
  209. package/src/types.ts +44 -0
  210. package/src/typing.d.ts +44 -0
  211. package/tsconfig.json +15 -0
  212. package/dist/codegen/definition-parser.d.ts +0 -5
  213. package/dist/codegen/definition-parser.d.ts.map +0 -1
  214. package/dist/codegen/definition-parser.js +0 -376
  215. package/dist/codegen/definition-parser.js.map +0 -1
  216. package/dist/codegen/index.d.ts +0 -3
  217. package/dist/codegen/index.d.ts.map +0 -1
  218. package/dist/codegen/index.js +0 -99
  219. package/dist/codegen/index.js.map +0 -1
  220. package/dist/codegen/kotlin.d.ts +0 -4
  221. package/dist/codegen/kotlin.d.ts.map +0 -1
  222. package/dist/codegen/kotlin.js +0 -273
  223. package/dist/codegen/kotlin.js.map +0 -1
  224. package/dist/codegen/metadata.d.ts +0 -4
  225. package/dist/codegen/metadata.d.ts.map +0 -1
  226. package/dist/codegen/metadata.js +0 -78
  227. package/dist/codegen/metadata.js.map +0 -1
  228. package/dist/codegen/swift.d.ts +0 -4
  229. package/dist/codegen/swift.d.ts.map +0 -1
  230. package/dist/codegen/swift.js +0 -145
  231. package/dist/codegen/swift.js.map +0 -1
  232. package/dist/codegen/template/android/kotlin-idl-template +0 -119
  233. package/dist/codegen/template/android/kotlin-impl-template +0 -0
  234. package/dist/codegen/template/ios/oc-idl-template +0 -0
  235. package/dist/codegen/template/ios/oc-impl-template +0 -0
  236. package/dist/codegen/template/ios/swift-idl-template +0 -83
  237. package/dist/codegen/template/ios/swift-impl-template +0 -0
  238. package/dist/codegen/template/ts/call-template +0 -0
  239. package/dist/codegen/template/ts/ts-idl-template +0 -66
  240. package/dist/codegen/template/ts/ts-impl-template +0 -78
  241. package/dist/codegen/template/ts/ts-index-template +0 -13
  242. package/dist/codegen/types.d.ts +0 -157
  243. package/dist/codegen/types.d.ts.map +0 -1
  244. package/dist/codegen/types.js +0 -3
  245. package/dist/codegen/types.js.map +0 -1
  246. package/dist/codegen/typescript.d.ts +0 -8
  247. package/dist/codegen/typescript.d.ts.map +0 -1
  248. package/dist/codegen/typescript.js +0 -232
  249. package/dist/codegen/typescript.js.map +0 -1
  250. package/dist/codegen/utils.d.ts +0 -10
  251. package/dist/codegen/utils.d.ts.map +0 -1
  252. package/dist/codegen/utils.js +0 -83
  253. package/dist/codegen/utils.js.map +0 -1
  254. package/dist/create/index.d.ts +0 -3
  255. package/dist/create/index.d.ts.map +0 -1
  256. package/dist/create/index.js +0 -44
  257. package/dist/create/index.js.map +0 -1
  258. package/dist/create/prompts.d.ts +0 -7
  259. package/dist/create/prompts.d.ts.map +0 -1
  260. package/dist/create/prompts.js +0 -61
  261. package/dist/create/prompts.js.map +0 -1
  262. package/dist/create/scaffold.d.ts +0 -9
  263. package/dist/create/scaffold.d.ts.map +0 -1
  264. package/dist/create/scaffold.js +0 -131
  265. package/dist/create/scaffold.js.map +0 -1
  266. package/dist/create/template/README.md +0 -17
  267. package/dist/create/template/android/.gitkeep +0 -1
  268. package/dist/create/template/ios/.gitkeep +0 -1
  269. package/dist/create/template/src/method.d.ts +0 -17
  270. package/dist/create/templates.d.ts +0 -5
  271. package/dist/create/templates.d.ts.map +0 -1
  272. package/dist/create/templates.js +0 -75
  273. package/dist/create/templates.js.map +0 -1
  274. package/dist/create/types.d.ts +0 -12
  275. package/dist/create/types.d.ts.map +0 -1
  276. package/dist/create/types.js +0 -3
  277. package/dist/create/types.js.map +0 -1
  278. package/dist/create/utils.d.ts +0 -3
  279. package/dist/create/utils.d.ts.map +0 -1
  280. package/dist/create/utils.js +0 -19
  281. package/dist/create/utils.js.map +0 -1
  282. package/dist/ui.d.ts +0 -13
  283. package/dist/ui.d.ts.map +0 -1
  284. package/dist/ui.js +0 -82
  285. package/dist/ui.js.map +0 -1
  286. package/dist/verbose.d.ts +0 -4
  287. package/dist/verbose.d.ts.map +0 -1
  288. package/dist/verbose.js +0 -25
  289. package/dist/verbose.js.map +0 -1
  290. package/templates/sparkling-app-template-android-groovy/android/sparkling-method-media/build.gradle +0 -44
@@ -0,0 +1,684 @@
1
+ // Copyright (c) 2022 TikTok Pte. Ltd.
2
+ // Licensed under the Apache License Version 2.0 that can be found in the
3
+ // LICENSE file in the root directory of this source tree.
4
+ package com.tiktok.sparkling.method.registry.api.util
5
+
6
+ import com.tiktok.sparkling.method.registry.api.stringify
7
+ import com.lynx.jsbridge.Arguments
8
+ import com.lynx.react.bridge.Dynamic
9
+ import com.lynx.react.bridge.JavaOnlyArray
10
+ import com.lynx.react.bridge.JavaOnlyMap
11
+ import com.lynx.react.bridge.PiperData
12
+ import com.lynx.react.bridge.ReadableArray
13
+ import com.lynx.react.bridge.ReadableMap
14
+ import com.lynx.react.bridge.ReadableType
15
+ import com.lynx.react.bridge.WritableArray
16
+ import com.lynx.react.bridge.WritableMap
17
+ import com.tiktok.sparkling.method.registry.core.XReadableArray
18
+ import com.tiktok.sparkling.method.registry.core.XReadableMap
19
+ import com.tiktok.sparkling.method.registry.core.XReadableType
20
+ import org.json.JSONArray
21
+ import org.json.JSONObject
22
+
23
+ object DataConvertUtils : IConvertUtils {
24
+
25
+ var disableLongToDouble = false
26
+ var newInputTypeChange = false
27
+
28
+ override fun toStringOrJson(data: Any?): String {
29
+ if (data == null) {
30
+ return ""
31
+ }
32
+ return when (data) {
33
+ is Map<*, *> -> JSONObject(data).toString()
34
+ is List<*> -> JSONArray(data).toString()
35
+ else -> data.toString()
36
+ }
37
+ }
38
+
39
+ override fun mapSupportPiperdataToJSON(map: Map<String, Any?>): JSONObject {
40
+ val jsonObject = JSONObject()
41
+ map.forEach {
42
+ val key = it.key
43
+ when (val value = it.value) {
44
+ is Long -> {
45
+ if (disableLongToDouble) {
46
+ jsonObject.put(key, value)
47
+ } else {
48
+ jsonObject.put(key, value.toDouble())
49
+ }
50
+ }
51
+
52
+ is Float -> jsonObject.put(key, value.toDouble())
53
+ is Int -> jsonObject.put(key, value)
54
+ is Double -> jsonObject.put(key, value)
55
+ is String -> jsonObject.put(key, value)
56
+ is Boolean -> jsonObject.put(key, value)
57
+ is JSONObject -> jsonObject.put(key, value)
58
+ is JSONArray -> jsonObject.put(key, value)
59
+ is PiperData -> jsonObject.put(key, value)
60
+ is Map<*, *> -> {
61
+ try {
62
+ jsonObject.put(key, mapSupportPiperdataToJSON(value as Map<String, Any>))
63
+ } catch (e: Exception) {
64
+ //ignore
65
+ }
66
+ }
67
+
68
+ is List<*> -> {
69
+ try {
70
+ jsonObject.put(key, listSupportPiperdataToJSON(value as List<Any>))
71
+ } catch (e: Exception) {
72
+ //ignore
73
+ }
74
+ }
75
+ }
76
+ }
77
+ return jsonObject
78
+ }
79
+
80
+ override fun listSupportPiperdataToJSON(list: List<Any>): JSONArray {
81
+ val jsonArray = JSONArray()
82
+ list.forEach {
83
+ when (it) {
84
+ is Float -> jsonArray.put(it.toDouble())
85
+ is Long -> {
86
+ if (disableLongToDouble) {
87
+ jsonArray.put(it)
88
+ } else {
89
+ jsonArray.put(it.toDouble())
90
+ }
91
+ }
92
+
93
+ is Int -> jsonArray.put(it)
94
+ is Double -> jsonArray.put(it)
95
+ is String -> jsonArray.put(it)
96
+ is Boolean -> jsonArray.put(it)
97
+ is PiperData -> jsonArray.put(it)
98
+ is Map<*, *> -> {
99
+ try {
100
+ jsonArray.put(mapSupportPiperdataToJSON(it as Map<String, Any>))
101
+ } catch (e: Exception) {
102
+ //ignore
103
+ }
104
+ }
105
+
106
+ is List<*> -> {
107
+ try {
108
+ jsonArray.put(listSupportPiperdataToJSON(it as List<Any>))
109
+ } catch (e: Exception) {
110
+ //ignore
111
+ }
112
+ }
113
+ }
114
+ }
115
+ return jsonArray
116
+ }
117
+
118
+ override fun mapToJSON(map: Map<String, Any?>): JSONObject {
119
+ val jsonObject = JSONObject()
120
+ map.forEach {
121
+ val key = it.key
122
+ when (val value = it.value) {
123
+ is Long -> {
124
+ if (disableLongToDouble) {
125
+ jsonObject.put(key, value)
126
+ } else {
127
+ jsonObject.put(key, value.toDouble())
128
+ }
129
+ }
130
+
131
+ is Float -> jsonObject.put(key, value.toDouble())
132
+ is Int -> jsonObject.put(key, value)
133
+ is Double -> jsonObject.put(key, value)
134
+ is String -> jsonObject.put(key, value)
135
+ is Boolean -> jsonObject.put(key, value)
136
+ is JSONObject -> jsonObject.put(key, value)
137
+ is JSONArray -> jsonObject.put(key, value)
138
+ is PiperData -> jsonObject.put(key, value.stringify())
139
+ is Map<*, *> -> {
140
+ try {
141
+ jsonObject.put(key, mapToJSON(value as Map<String, Any>))
142
+ } catch (e: Exception) {
143
+ //ignore
144
+ }
145
+ }
146
+
147
+ is List<*> -> {
148
+ try {
149
+ jsonObject.put(key, listToJSON(value as List<Any>))
150
+ } catch (e: Exception) {
151
+ //ignore
152
+ }
153
+ }
154
+ }
155
+ }
156
+ return jsonObject
157
+ }
158
+
159
+ override fun listToJSON(list: List<Any>): JSONArray {
160
+ val jsonArray = JSONArray()
161
+ list.forEach {
162
+ when (it) {
163
+ is Float -> jsonArray.put(it.toDouble())
164
+ is Long -> {
165
+ if (disableLongToDouble) {
166
+ jsonArray.put(it)
167
+ } else {
168
+ jsonArray.put(it.toDouble())
169
+ }
170
+ }
171
+
172
+ is Int -> jsonArray.put(it)
173
+ is Double -> jsonArray.put(it)
174
+ is String -> jsonArray.put(it)
175
+ is Boolean -> jsonArray.put(it)
176
+ is PiperData -> jsonArray.put(it.stringify())
177
+ is Map<*, *> -> {
178
+ try {
179
+ jsonArray.put(mapToJSON(it as Map<String, Any>))
180
+ } catch (e: Exception) {
181
+ //ignore
182
+ }
183
+ }
184
+
185
+ is List<*> -> {
186
+ try {
187
+ jsonArray.put(listToJSON(it as List<Any>))
188
+ } catch (e: Exception) {
189
+ //ignore
190
+ }
191
+ }
192
+ }
193
+ }
194
+ return jsonArray
195
+ }
196
+
197
+ override fun jsonToMap(json: JSONObject): Map<String, Any?> {
198
+ return mutableMapOf<String, Any?>().apply {
199
+ val iterator = json.keys()
200
+ while (iterator.hasNext()) {
201
+ val key = iterator.next()
202
+ when (json.opt(key)) {
203
+ is Long -> put(key, json.optLong(key))
204
+ is Double -> put(key, json.optDouble(key))
205
+ is Int -> put(key, json.optInt(key))
206
+ is String -> put(key, json.optString(key))
207
+ is JSONObject -> put(key, jsonToMap(json.optJSONObject(key)))
208
+ is JSONArray -> put(key, jsonToList(json.optJSONArray(key)))
209
+ is Boolean -> put(key, json.optBoolean(key))
210
+ else -> put(key, null)
211
+ }
212
+ }
213
+ }
214
+ }
215
+
216
+ override fun jsonToList(json: JSONArray): List<Any?> {
217
+ return mutableListOf<Any?>().apply {
218
+ val len = json.length()
219
+ for (index in 0 until len) {
220
+ when (json.opt(index)) {
221
+ is Long -> add(json.optLong(index))
222
+ is Double -> add(json.optDouble(index))
223
+ is Int -> add(json.getInt(index))
224
+ is String -> add(json.optString(index))
225
+ is JSONObject -> add(jsonToMap(json.optJSONObject(index)))
226
+ is JSONArray -> add(jsonToList(json.optJSONArray(index)))
227
+ is Boolean -> add(json.optBoolean(index))
228
+ else -> add(null)
229
+ }
230
+ }
231
+ }
232
+ }
233
+
234
+ override fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
235
+ val map = JavaOnlyMap()
236
+ val iterator = jsonObject.keys()
237
+ while (iterator.hasNext()) {
238
+ val key: String = iterator.next()
239
+ when (val value = jsonObject.get(key)) {
240
+ is JSONObject -> {
241
+ map.putMap(key, convertJsonToMap(value))
242
+ }
243
+
244
+ is JSONArray -> {
245
+ map.putArray(key, convertJsonToArray(value))
246
+ }
247
+
248
+ is Boolean -> {
249
+ map.putBoolean(key, value)
250
+ }
251
+
252
+ is Int -> {
253
+ map.putInt(key, value)
254
+ }
255
+
256
+ is Long -> {
257
+ if (disableLongToDouble) {
258
+ map.putLong(key, value)
259
+ } else {
260
+ map.putDouble(key, value.toDouble())
261
+ }
262
+ }
263
+
264
+ is Float -> {
265
+ map.putDouble(key, value.toDouble())
266
+ }
267
+
268
+ is Double -> {
269
+ map.putDouble(key, value)
270
+ }
271
+
272
+ is String -> {
273
+ map.putString(key, value)
274
+ }
275
+
276
+ JSONObject.NULL -> {
277
+ map.putMap(key, null)
278
+ }
279
+
280
+ else -> {
281
+ map.putString(key, value.toString())
282
+ }
283
+ }
284
+ }
285
+
286
+ return map
287
+ }
288
+
289
+ override fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
290
+ val array = JavaOnlyArray()
291
+
292
+ for (idx in 0 until jsonArray.length()) {
293
+ when (val value = jsonArray.get(idx)) {
294
+ is JSONObject -> {
295
+ array.pushMap(convertJsonToMap(value))
296
+ }
297
+
298
+ is JSONArray -> {
299
+ array.pushArray(convertJsonToArray(value))
300
+ }
301
+
302
+ is Boolean -> {
303
+ array.pushBoolean(value)
304
+ }
305
+
306
+ is Int -> {
307
+ array.pushInt(value)
308
+ }
309
+
310
+ is Long -> {
311
+ if (disableLongToDouble) {
312
+ array.pushLong(value)
313
+ } else {
314
+ array.pushDouble(value.toDouble())
315
+ }
316
+ }
317
+
318
+ is Float -> {
319
+ array.pushDouble(value.toDouble())
320
+ }
321
+
322
+ is Double -> {
323
+ array.pushDouble(value)
324
+ }
325
+
326
+ is String -> {
327
+ array.pushString(value)
328
+ }
329
+
330
+ else -> {
331
+ if (JSONObject.NULL == value || null == value) {
332
+ array.pushNull()
333
+ } else {
334
+ array.pushString(value.toString())
335
+ }
336
+ }
337
+ }
338
+ }
339
+
340
+ return array
341
+ }
342
+
343
+ override fun convertMapToReadableMap(source: Map<String, Any?>): WritableMap {
344
+ val map = JavaOnlyMap()
345
+ source.forEach {
346
+ val key = it.key
347
+ when (val value = it.value) {
348
+ is Map<*, *> -> {
349
+ try {
350
+ map.putMap(key, convertMapToReadableMap(value as Map<String, Any>))
351
+ } catch (e: Exception) {
352
+ //ignore
353
+ }
354
+ }
355
+
356
+ is List<*> -> {
357
+ try {
358
+ map.putArray(key, convertArrayToWritableArray(value as List<Any>))
359
+ } catch (e: Exception) {
360
+ //ignore
361
+ }
362
+ }
363
+
364
+ is Array<*> -> {
365
+ try {
366
+ map.putArray(key, convertRealArrayToWritableArray(value as Array<Any>))
367
+ } catch (e: Exception) {
368
+ //ignore
369
+ }
370
+ }
371
+
372
+ is Boolean -> {
373
+ map.putBoolean(key, value)
374
+ }
375
+
376
+ is Int -> {
377
+ map.putInt(key, value)
378
+ }
379
+
380
+ is Long -> {
381
+ if (disableLongToDouble) {
382
+ map.putLong(key, value)
383
+ } else {
384
+ map.putDouble(key, value.toDouble())
385
+ }
386
+ }
387
+
388
+ is Float -> {
389
+ map.putDouble(key, value.toDouble())
390
+ }
391
+
392
+ is Double -> {
393
+ map.putDouble(key, value)
394
+ }
395
+
396
+ is String -> {
397
+ map.putString(key, value)
398
+ }
399
+
400
+ is JSONObject -> {
401
+ map.putMap(key, convertJsonToMap(value))
402
+ }
403
+
404
+ is JSONArray -> {
405
+ map.putArray(key, convertJsonToArray(value))
406
+ }
407
+
408
+ is PiperData -> {
409
+ map.putPiperData(key, value)
410
+ }
411
+
412
+ else -> {
413
+ if (value == null || value == JSONObject.NULL) {
414
+ map.putNull(key)
415
+ } else {
416
+ map.putString(key, value.toString())
417
+ }
418
+ }
419
+ }
420
+ }
421
+ return map
422
+ }
423
+
424
+ private fun convertRealArrayToWritableArray(sourceArray: Array<Any>): WritableArray {
425
+ val ret = Arguments.createArray()
426
+ sourceArray.forEach { item ->
427
+ when (item) {
428
+ is Float, is Double -> ret.pushDouble(item as Double)
429
+ is Long -> ret.pushLong(item as Long)
430
+ is Number -> ret.pushInt(item as Int)
431
+ is String -> ret.pushString(item as String)
432
+ is Boolean -> ret.pushBoolean(item as Boolean)
433
+ is Map<*, *> -> ret.pushMap(convertMapToReadableMap(item as Map<String, Any?>))
434
+ is List<*> -> ret.pushArray(convertArrayToWritableArray(item as List<Any>))
435
+ is Array<*> -> ret.pushArray(convertRealArrayToWritableArray(item as Array<Any>))
436
+ is JSONArray -> ret.pushArray(convertJsonToArray(item))
437
+ is JSONObject -> ret.pushMap(convertJsonToMap(item))
438
+ is PiperData -> ret.pushPiperData(item)
439
+ else -> {}
440
+ }
441
+ }
442
+ return ret
443
+ }
444
+
445
+ override fun convertArrayToWritableArray(sourceArray: List<Any>): WritableArray {
446
+ val array = JavaOnlyArray()
447
+
448
+ for (idx in sourceArray.indices) {
449
+ when (val value = sourceArray[idx]) {
450
+ is Map<*, *> -> {
451
+ try {
452
+ array.pushMap(convertMapToReadableMap(value as Map<String, Any>))
453
+ } catch (e: Exception) {
454
+ //ignore
455
+ }
456
+ }
457
+
458
+ is List<*> -> {
459
+ try {
460
+ array.pushArray(convertArrayToWritableArray(value as List<Any>))
461
+ } catch (e: Exception) {
462
+ //ignore
463
+ }
464
+ }
465
+
466
+ is Boolean -> {
467
+ array.pushBoolean(value)
468
+ }
469
+
470
+ is Int -> {
471
+ array.pushInt(value)
472
+ }
473
+
474
+ is Long -> {
475
+ if (disableLongToDouble) {
476
+ array.pushLong(value)
477
+ } else {
478
+ array.pushDouble(value.toDouble())
479
+ }
480
+ }
481
+
482
+ is Float -> {
483
+ array.pushDouble(value.toDouble())
484
+ }
485
+
486
+ is Double -> {
487
+ array.pushDouble(value)
488
+ }
489
+
490
+ is String -> {
491
+ array.pushString(value)
492
+ }
493
+
494
+ is PiperData -> {
495
+ array.pushPiperData(value)
496
+ }
497
+
498
+ else -> {
499
+ array.pushString(value.toString())
500
+ }
501
+ }
502
+ }
503
+
504
+ return array
505
+ }
506
+
507
+ override fun convertXReadableMapToReadableMap(source: XReadableMap): WritableMap {
508
+ val map = JavaOnlyMap()
509
+ val keyIterator = source.keyIterator()
510
+ while (keyIterator.hasNextKey()) {
511
+ val key = keyIterator.nextKey()
512
+ val value = source.get(key)
513
+ when (value.getType()) {
514
+ XReadableType.String -> map[key] = value.asString()
515
+ XReadableType.Int -> map[key] = value.asInt()
516
+ XReadableType.Number -> map[key] = value.asDouble()
517
+ XReadableType.Boolean -> map[key] = value.asBoolean()
518
+ XReadableType.Array -> map[key] =
519
+ value.asArray()?.let { map[key] = convertXReadableArrayToReadableArray(it) }
520
+
521
+ XReadableType.Map -> map[key] =
522
+ value.asMap()?.let { map[key] = convertXReadableMapToReadableMap(it) }
523
+
524
+ else -> {
525
+
526
+ }
527
+ }
528
+ }
529
+
530
+ return map
531
+ }
532
+
533
+ override fun convertXReadableArrayToReadableArray(source: XReadableArray): WritableArray {
534
+ val array = JavaOnlyArray()
535
+
536
+ for (idx in 0 until source.size()) {
537
+ when (source.get(idx).getType()) {
538
+ XReadableType.Boolean -> array.pushBoolean(source.getBoolean(idx))
539
+ XReadableType.Int -> array.pushInt(source.getInt(idx))
540
+ XReadableType.Number -> array.pushDouble(source.getDouble(idx))
541
+ XReadableType.String -> array.pushString(source.getString(idx))
542
+ XReadableType.Array -> array.pushArray(
543
+ source.getArray(idx)?.let {
544
+ convertXReadableArrayToReadableArray(
545
+ it
546
+ )
547
+ }
548
+ )
549
+
550
+ XReadableType.Map -> array.pushMap(
551
+ source.getMap(idx)?.let {
552
+ convertXReadableMapToReadableMap(
553
+ it
554
+ )
555
+ }
556
+ )
557
+
558
+ else -> {
559
+
560
+ }
561
+ }
562
+ }
563
+
564
+ return array
565
+ }
566
+
567
+ override fun getValue(value: Any?): Any? {
568
+ return when (value) {
569
+ is ReadableArray -> {
570
+ val size = value.size()
571
+ val list = ArrayList<Any?>()
572
+ for (i in 0 until size) {
573
+ list.add(getValue(value.getDynamic(i).getValue()))
574
+ }
575
+ list
576
+ }
577
+
578
+ is ReadableMap -> {
579
+ val keyIterator = value.keySetIterator()
580
+ val map = hashMapOf<String, Any?>()
581
+ while (keyIterator.hasNextKey()) {
582
+ val key = keyIterator.nextKey()
583
+ map[key] = getValue(value.getDynamic(key).getValue())
584
+ }
585
+ map
586
+ }
587
+
588
+ is Number -> {
589
+ if (!newInputTypeChange) {
590
+ val doubleValue = value.toDouble()
591
+ val intValue = value.toInt()
592
+ if (doubleValue == intValue.toDouble()) {
593
+ intValue
594
+ } else {
595
+ doubleValue
596
+ }
597
+ } else {
598
+ when (value) {
599
+ is Long -> {
600
+ value
601
+ }
602
+
603
+ else -> {
604
+ val doubleValue = value.toDouble()
605
+ val intValue = value.toInt()
606
+ if (doubleValue == intValue.toDouble()) {
607
+ intValue
608
+ } else {
609
+ doubleValue
610
+ }
611
+ }
612
+ }
613
+ }
614
+ }
615
+
616
+ else -> {
617
+ value
618
+ }
619
+ }
620
+
621
+ }
622
+
623
+ /**
624
+ *
625
+ */
626
+ fun Dynamic.getValue(): Any? {
627
+ return when (type) {
628
+ ReadableType.String -> {
629
+ asString()
630
+ }
631
+
632
+ ReadableType.Number -> {
633
+ val asDouble = asDouble()
634
+ val asInt = asInt()
635
+ return if (asInt.toDouble() == asDouble) {
636
+ asInt
637
+ } else {
638
+ asDouble
639
+ }
640
+ }
641
+
642
+ ReadableType.Boolean -> {
643
+ asBoolean()
644
+ }
645
+
646
+ ReadableType.Map -> {
647
+ asMap()
648
+ }
649
+
650
+ ReadableType.Array -> {
651
+ asArray()
652
+ }
653
+
654
+ ReadableType.Null -> {
655
+ null
656
+ }
657
+
658
+ else -> {
659
+ if (!newInputTypeChange) {
660
+ null
661
+ } else {
662
+ when (type) {
663
+ ReadableType.Long -> {
664
+ asLong()
665
+ }
666
+
667
+ else -> {
668
+ null
669
+ }
670
+ }
671
+ }
672
+
673
+ }
674
+ }
675
+ }
676
+ }
677
+
678
+ internal fun <T> JSONArray.map(cb: (item: Any) -> T): List<T> {
679
+ val result = mutableListOf<T>()
680
+ for (i in 0 until this.length()) {
681
+ result.add(cb(opt(i)))
682
+ }
683
+ return result
684
+ }