@salve-software/mako-react-native 1.0.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.
- package/LICENSE +21 -0
- package/NitroMako.podspec +31 -0
- package/README.md +90 -0
- package/android/CMakeLists.txt +32 -0
- package/android/build.gradle +148 -0
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/cpp-adapter.cpp +9 -0
- package/android/src/main/java/com/margelo/nitro/mako/HybridMako.kt +235 -0
- package/android/src/main/java/com/margelo/nitro/mako/MakoPackage.kt +18 -0
- package/android/src/main/java/com/margelo/nitro/mako/PerformanceMonitor.kt +260 -0
- package/ios/Bridge.h +8 -0
- package/ios/HybridMako.swift +245 -0
- package/ios/PerformanceMonitor.swift +223 -0
- package/lib/commonjs/index.js +17 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/library/client/constants.js +34 -0
- package/lib/commonjs/library/client/constants.js.map +1 -0
- package/lib/commonjs/library/client/index.js +28 -0
- package/lib/commonjs/library/client/index.js.map +1 -0
- package/lib/commonjs/library/client/mako-client.js +419 -0
- package/lib/commonjs/library/client/mako-client.js.map +1 -0
- package/lib/commonjs/library/component-handler/component-handler.js +158 -0
- package/lib/commonjs/library/component-handler/component-handler.js.map +1 -0
- package/lib/commonjs/library/component-handler/index.js +39 -0
- package/lib/commonjs/library/component-handler/index.js.map +1 -0
- package/lib/commonjs/library/component-handler/types.js +6 -0
- package/lib/commonjs/library/component-handler/types.js.map +1 -0
- package/lib/commonjs/library/component-handler/utils/index.js +26 -0
- package/lib/commonjs/library/component-handler/utils/index.js.map +1 -0
- package/lib/commonjs/library/device/device-handler.js +80 -0
- package/lib/commonjs/library/device/device-handler.js.map +1 -0
- package/lib/commonjs/library/device/index.js +9 -0
- package/lib/commonjs/library/device/index.js.map +1 -0
- package/lib/commonjs/library/device/types.js +2 -0
- package/lib/commonjs/library/device/types.js.map +1 -0
- package/lib/commonjs/library/device/utils/generate-uuid.js +14 -0
- package/lib/commonjs/library/device/utils/generate-uuid.js.map +1 -0
- package/lib/commonjs/library/index.js +156 -0
- package/lib/commonjs/library/index.js.map +1 -0
- package/lib/commonjs/library/interceptors/index.js +13 -0
- package/lib/commonjs/library/interceptors/index.js.map +1 -0
- package/lib/commonjs/library/interceptors/js-console.js +88 -0
- package/lib/commonjs/library/interceptors/js-console.js.map +1 -0
- package/lib/commonjs/library/interceptors/react-devtools.js +219 -0
- package/lib/commonjs/library/interceptors/react-devtools.js.map +1 -0
- package/lib/commonjs/library/interceptors/xhr.js +74 -0
- package/lib/commonjs/library/interceptors/xhr.js.map +1 -0
- package/lib/commonjs/library/network-handler/index.js +17 -0
- package/lib/commonjs/library/network-handler/index.js.map +1 -0
- package/lib/commonjs/library/network-handler/network-handler.js +103 -0
- package/lib/commonjs/library/network-handler/network-handler.js.map +1 -0
- package/lib/commonjs/library/network-handler/types.js +6 -0
- package/lib/commonjs/library/network-handler/types.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/generate-request-id.js +13 -0
- package/lib/commonjs/library/network-handler/utils/generate-request-id.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/index.js +41 -0
- package/lib/commonjs/library/network-handler/utils/index.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/parse-response-headers.js +26 -0
- package/lib/commonjs/library/network-handler/utils/parse-response-headers.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js +18 -0
- package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/response-to-string.js +35 -0
- package/lib/commonjs/library/network-handler/utils/response-to-string.js.map +1 -0
- package/lib/commonjs/library/network-handler/utils/should-ignore-url.js +13 -0
- package/lib/commonjs/library/network-handler/utils/should-ignore-url.js.map +1 -0
- package/lib/commonjs/library/performance-handler/index.js +13 -0
- package/lib/commonjs/library/performance-handler/index.js.map +1 -0
- package/lib/commonjs/library/performance-handler/performance-handler.js +94 -0
- package/lib/commonjs/library/performance-handler/performance-handler.js.map +1 -0
- package/lib/commonjs/library/performance-handler/types.js +6 -0
- package/lib/commonjs/library/performance-handler/types.js.map +1 -0
- package/lib/commonjs/library/project/index.js +15 -0
- package/lib/commonjs/library/project/index.js.map +1 -0
- package/lib/commonjs/library/project/project-handler.js +31 -0
- package/lib/commonjs/library/project/project-handler.js.map +1 -0
- package/lib/commonjs/library/types.js +2 -0
- package/lib/commonjs/library/types.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/specs/mako.nitro.js +6 -0
- package/lib/commonjs/specs/mako.nitro.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/library/client/constants.js +30 -0
- package/lib/module/library/client/constants.js.map +1 -0
- package/lib/module/library/client/index.js +6 -0
- package/lib/module/library/client/index.js.map +1 -0
- package/lib/module/library/client/mako-client.js +415 -0
- package/lib/module/library/client/mako-client.js.map +1 -0
- package/lib/module/library/component-handler/component-handler.js +153 -0
- package/lib/module/library/component-handler/component-handler.js.map +1 -0
- package/lib/module/library/component-handler/index.js +6 -0
- package/lib/module/library/component-handler/index.js.map +1 -0
- package/lib/module/library/component-handler/types.js +4 -0
- package/lib/module/library/component-handler/types.js.map +1 -0
- package/lib/module/library/component-handler/utils/index.js +21 -0
- package/lib/module/library/component-handler/utils/index.js.map +1 -0
- package/lib/module/library/device/device-handler.js +75 -0
- package/lib/module/library/device/device-handler.js.map +1 -0
- package/lib/module/library/device/index.js +5 -0
- package/lib/module/library/device/index.js.map +1 -0
- package/lib/module/library/device/types.js +2 -0
- package/lib/module/library/device/types.js.map +1 -0
- package/lib/module/library/device/utils/generate-uuid.js +10 -0
- package/lib/module/library/device/utils/generate-uuid.js.map +1 -0
- package/lib/module/library/index.js +155 -0
- package/lib/module/library/index.js.map +1 -0
- package/lib/module/library/interceptors/index.js +9 -0
- package/lib/module/library/interceptors/index.js.map +1 -0
- package/lib/module/library/interceptors/js-console.js +83 -0
- package/lib/module/library/interceptors/js-console.js.map +1 -0
- package/lib/module/library/interceptors/react-devtools.js +214 -0
- package/lib/module/library/interceptors/react-devtools.js.map +1 -0
- package/lib/module/library/interceptors/xhr.js +69 -0
- package/lib/module/library/interceptors/xhr.js.map +1 -0
- package/lib/module/library/network-handler/index.js +4 -0
- package/lib/module/library/network-handler/index.js.map +1 -0
- package/lib/module/library/network-handler/network-handler.js +98 -0
- package/lib/module/library/network-handler/network-handler.js.map +1 -0
- package/lib/module/library/network-handler/types.js +4 -0
- package/lib/module/library/network-handler/types.js.map +1 -0
- package/lib/module/library/network-handler/utils/generate-request-id.js +9 -0
- package/lib/module/library/network-handler/utils/generate-request-id.js.map +1 -0
- package/lib/module/library/network-handler/utils/index.js +8 -0
- package/lib/module/library/network-handler/utils/index.js.map +1 -0
- package/lib/module/library/network-handler/utils/parse-response-headers.js +22 -0
- package/lib/module/library/network-handler/utils/parse-response-headers.js.map +1 -0
- package/lib/module/library/network-handler/utils/read-blob-as-text.js +14 -0
- package/lib/module/library/network-handler/utils/read-blob-as-text.js.map +1 -0
- package/lib/module/library/network-handler/utils/response-to-string.js +31 -0
- package/lib/module/library/network-handler/utils/response-to-string.js.map +1 -0
- package/lib/module/library/network-handler/utils/should-ignore-url.js +9 -0
- package/lib/module/library/network-handler/utils/should-ignore-url.js.map +1 -0
- package/lib/module/library/performance-handler/index.js +4 -0
- package/lib/module/library/performance-handler/index.js.map +1 -0
- package/lib/module/library/performance-handler/performance-handler.js +89 -0
- package/lib/module/library/performance-handler/performance-handler.js.map +1 -0
- package/lib/module/library/performance-handler/types.js +4 -0
- package/lib/module/library/performance-handler/types.js.map +1 -0
- package/lib/module/library/project/index.js +6 -0
- package/lib/module/library/project/index.js.map +1 -0
- package/lib/module/library/project/project-handler.js +26 -0
- package/lib/module/library/project/project-handler.js.map +1 -0
- package/lib/module/library/types.js +2 -0
- package/lib/module/library/types.js.map +1 -0
- package/lib/module/specs/mako.nitro.js +4 -0
- package/lib/module/specs/mako.nitro.js.map +1 -0
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/library/client/constants.d.ts +24 -0
- package/lib/typescript/src/library/client/constants.d.ts.map +1 -0
- package/lib/typescript/src/library/client/index.d.ts +4 -0
- package/lib/typescript/src/library/client/index.d.ts.map +1 -0
- package/lib/typescript/src/library/client/mako-client.d.ts +87 -0
- package/lib/typescript/src/library/client/mako-client.d.ts.map +1 -0
- package/lib/typescript/src/library/component-handler/component-handler.d.ts +21 -0
- package/lib/typescript/src/library/component-handler/component-handler.d.ts.map +1 -0
- package/lib/typescript/src/library/component-handler/index.d.ts +4 -0
- package/lib/typescript/src/library/component-handler/index.d.ts.map +1 -0
- package/lib/typescript/src/library/component-handler/types.d.ts +22 -0
- package/lib/typescript/src/library/component-handler/types.d.ts.map +1 -0
- package/lib/typescript/src/library/component-handler/utils/index.d.ts +13 -0
- package/lib/typescript/src/library/component-handler/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts +2 -0
- package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts.map +1 -0
- package/lib/typescript/src/library/device/device-handler.d.ts +11 -0
- package/lib/typescript/src/library/device/device-handler.d.ts.map +1 -0
- package/lib/typescript/src/library/device/index.d.ts +3 -0
- package/lib/typescript/src/library/device/index.d.ts.map +1 -0
- package/lib/typescript/src/library/device/types.d.ts +8 -0
- package/lib/typescript/src/library/device/types.d.ts.map +1 -0
- package/lib/typescript/src/library/device/utils/generate-uuid.d.ts +2 -0
- package/lib/typescript/src/library/device/utils/generate-uuid.d.ts.map +1 -0
- package/lib/typescript/src/library/index.d.ts +120 -0
- package/lib/typescript/src/library/index.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts +2 -0
- package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/__tests__/react-devtools.test.d.ts +2 -0
- package/lib/typescript/src/library/interceptors/__tests__/react-devtools.test.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts +2 -0
- package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/index.d.ts +7 -0
- package/lib/typescript/src/library/interceptors/index.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/js-console.d.ts +17 -0
- package/lib/typescript/src/library/interceptors/js-console.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/react-devtools.d.ts +54 -0
- package/lib/typescript/src/library/interceptors/react-devtools.d.ts.map +1 -0
- package/lib/typescript/src/library/interceptors/xhr.d.ts +14 -0
- package/lib/typescript/src/library/interceptors/xhr.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/index.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/index.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/network-handler.d.ts +19 -0
- package/lib/typescript/src/library/network-handler/network-handler.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/types.d.ts +6 -0
- package/lib/typescript/src/library/network-handler/types.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts +2 -0
- package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts +5 -0
- package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/index.d.ts +6 -0
- package/lib/typescript/src/library/network-handler/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts +5 -0
- package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts +5 -0
- package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts +5 -0
- package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts.map +1 -0
- package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts +5 -0
- package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts.map +1 -0
- package/lib/typescript/src/library/performance-handler/index.d.ts +3 -0
- package/lib/typescript/src/library/performance-handler/index.d.ts.map +1 -0
- package/lib/typescript/src/library/performance-handler/performance-handler.d.ts +27 -0
- package/lib/typescript/src/library/performance-handler/performance-handler.d.ts.map +1 -0
- package/lib/typescript/src/library/performance-handler/types.d.ts +20 -0
- package/lib/typescript/src/library/performance-handler/types.d.ts.map +1 -0
- package/lib/typescript/src/library/project/index.d.ts +4 -0
- package/lib/typescript/src/library/project/index.d.ts.map +1 -0
- package/lib/typescript/src/library/project/project-handler.d.ts +7 -0
- package/lib/typescript/src/library/project/project-handler.d.ts.map +1 -0
- package/lib/typescript/src/library/types.d.ts +41 -0
- package/lib/typescript/src/library/types.d.ts.map +1 -0
- package/lib/typescript/src/specs/mako.nitro.d.ts +100 -0
- package/lib/typescript/src/specs/mako.nitro.d.ts.map +1 -0
- package/nitro.json +24 -0
- package/nitrogen/generated/.gitattributes +1 -0
- package/nitrogen/generated/android/NitroMako+autolinking.cmake +81 -0
- package/nitrogen/generated/android/NitroMako+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroMakoOnLoad.cpp +58 -0
- package/nitrogen/generated/android/NitroMakoOnLoad.hpp +34 -0
- package/nitrogen/generated/android/c++/JDeviceInfoResult.hpp +69 -0
- package/nitrogen/generated/android/c++/JFunc_void_NativeLogEntry.hpp +80 -0
- package/nitrogen/generated/android/c++/JFunc_void_PerformanceMetrics.hpp +77 -0
- package/nitrogen/generated/android/c++/JHybridNitroMakoSpec.cpp +124 -0
- package/nitrogen/generated/android/c++/JHybridNitroMakoSpec.hpp +74 -0
- package/nitrogen/generated/android/c++/JNativeLogEntry.hpp +71 -0
- package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +64 -0
- package/nitrogen/generated/android/c++/JPerformanceMetrics.hpp +69 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/DeviceInfoResult.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/Func_void_NativeLogEntry.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/Func_void_PerformanceMetrics.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/HybridNitroMakoSpec.kt +108 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NativeLogEntry.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NativeLogLevel.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NitroMakoOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/PerformanceMetrics.kt +47 -0
- package/nitrogen/generated/ios/NitroMako+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Bridge.cpp +49 -0
- package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Bridge.hpp +185 -0
- package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Umbrella.hpp +58 -0
- package/nitrogen/generated/ios/NitroMakoAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroMakoAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridNitroMakoSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroMakoSpecSwift.hpp +175 -0
- package/nitrogen/generated/ios/swift/DeviceInfoResult.swift +44 -0
- package/nitrogen/generated/ios/swift/Func_void_NativeLogEntry.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_PerformanceMetrics.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNitroMakoSpec.swift +66 -0
- package/nitrogen/generated/ios/swift/HybridNitroMakoSpec_cxx.swift +289 -0
- package/nitrogen/generated/ios/swift/NativeLogEntry.swift +44 -0
- package/nitrogen/generated/ios/swift/NativeLogLevel.swift +48 -0
- package/nitrogen/generated/ios/swift/PerformanceMetrics.swift +44 -0
- package/nitrogen/generated/shared/c++/DeviceInfoResult.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridNitroMakoSpec.cpp +32 -0
- package/nitrogen/generated/shared/c++/HybridNitroMakoSpec.hpp +83 -0
- package/nitrogen/generated/shared/c++/NativeLogEntry.hpp +97 -0
- package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +84 -0
- package/nitrogen/generated/shared/c++/PerformanceMetrics.hpp +95 -0
- package/package.json +128 -0
- package/react-native.config.js +16 -0
- package/src/index.ts +7 -0
- package/src/library/client/constants.ts +36 -0
- package/src/library/client/index.ts +9 -0
- package/src/library/client/mako-client.ts +494 -0
- package/src/library/component-handler/component-handler.ts +162 -0
- package/src/library/component-handler/index.ts +3 -0
- package/src/library/component-handler/types.ts +24 -0
- package/src/library/component-handler/utils/index.ts +23 -0
- package/src/library/device/__tests__/device-handler.test.ts +86 -0
- package/src/library/device/device-handler.ts +85 -0
- package/src/library/device/index.ts +3 -0
- package/src/library/device/types.ts +7 -0
- package/src/library/device/utils/generate-uuid.ts +7 -0
- package/src/library/index.ts +183 -0
- package/src/library/interceptors/__tests__/js-console.test.ts +186 -0
- package/src/library/interceptors/__tests__/react-devtools.test.ts +848 -0
- package/src/library/interceptors/__tests__/xhr.test.ts +313 -0
- package/src/library/interceptors/index.ts +7 -0
- package/src/library/interceptors/js-console.ts +93 -0
- package/src/library/interceptors/react-devtools.ts +268 -0
- package/src/library/interceptors/xhr.ts +123 -0
- package/src/library/network-handler/__tests__/network-handler.test.ts +265 -0
- package/src/library/network-handler/index.ts +1 -0
- package/src/library/network-handler/network-handler.ts +141 -0
- package/src/library/network-handler/types.ts +6 -0
- package/src/library/network-handler/utils/__tests__/generate-request-id.test.ts +22 -0
- package/src/library/network-handler/utils/__tests__/parse-response-headers.test.ts +71 -0
- package/src/library/network-handler/utils/__tests__/read-blob-as-text.test.ts +79 -0
- package/src/library/network-handler/utils/__tests__/response-to-string.test.ts +85 -0
- package/src/library/network-handler/utils/__tests__/should-ignore-url.test.ts +45 -0
- package/src/library/network-handler/utils/generate-request-id.ts +6 -0
- package/src/library/network-handler/utils/index.ts +5 -0
- package/src/library/network-handler/utils/parse-response-headers.ts +20 -0
- package/src/library/network-handler/utils/read-blob-as-text.ts +11 -0
- package/src/library/network-handler/utils/response-to-string.ts +32 -0
- package/src/library/network-handler/utils/should-ignore-url.ts +6 -0
- package/src/library/performance-handler/index.ts +2 -0
- package/src/library/performance-handler/performance-handler.ts +104 -0
- package/src/library/performance-handler/types.ts +22 -0
- package/src/library/project/index.ts +4 -0
- package/src/library/project/project-handler.ts +28 -0
- package/src/library/types.ts +82 -0
- package/src/specs/mako.nitro.ts +114 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { responseToString } from '../response-to-string'
|
|
2
|
+
|
|
3
|
+
describe('responseToString', () => {
|
|
4
|
+
it('should return xhr.responseText when available', () => {
|
|
5
|
+
const xhr = {
|
|
6
|
+
responseText: 'xhr response',
|
|
7
|
+
} as XMLHttpRequest
|
|
8
|
+
|
|
9
|
+
const result = responseToString('fallback', xhr)
|
|
10
|
+
|
|
11
|
+
expect(result).toBe('xhr response')
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it('should fallback to response string when responseText is empty', () => {
|
|
15
|
+
const xhr = {
|
|
16
|
+
responseText: '',
|
|
17
|
+
} as XMLHttpRequest
|
|
18
|
+
|
|
19
|
+
const result = responseToString('response body', xhr)
|
|
20
|
+
|
|
21
|
+
expect(result).toBe('response body')
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('should stringify object responses', () => {
|
|
25
|
+
const xhr = {
|
|
26
|
+
responseText: '',
|
|
27
|
+
} as XMLHttpRequest
|
|
28
|
+
|
|
29
|
+
const response = {
|
|
30
|
+
name: 'Gabriel',
|
|
31
|
+
age: 25,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const result = responseToString(response, xhr)
|
|
35
|
+
|
|
36
|
+
expect(result).toBe(JSON.stringify(response, null, 2))
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it('should return String(response) when JSON.stringify throws', () => {
|
|
40
|
+
const xhr = {
|
|
41
|
+
responseText: '',
|
|
42
|
+
} as XMLHttpRequest
|
|
43
|
+
|
|
44
|
+
const circular: any = {}
|
|
45
|
+
circular.self = circular
|
|
46
|
+
|
|
47
|
+
const result = responseToString(circular, xhr)
|
|
48
|
+
|
|
49
|
+
expect(result).toBe('[object Object]')
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
it('should return undefined when response is null', () => {
|
|
53
|
+
const xhr = {
|
|
54
|
+
responseText: '',
|
|
55
|
+
} as XMLHttpRequest
|
|
56
|
+
|
|
57
|
+
const result = responseToString(null, xhr)
|
|
58
|
+
|
|
59
|
+
expect(result).toBeUndefined()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('should return undefined when response is undefined', () => {
|
|
63
|
+
const xhr = {
|
|
64
|
+
responseText: '',
|
|
65
|
+
} as XMLHttpRequest
|
|
66
|
+
|
|
67
|
+
const result = responseToString(undefined, xhr)
|
|
68
|
+
|
|
69
|
+
expect(result).toBeUndefined()
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
it('should fallback when accessing responseText throws', () => {
|
|
73
|
+
const xhr = {} as XMLHttpRequest
|
|
74
|
+
|
|
75
|
+
Object.defineProperty(xhr, 'responseText', {
|
|
76
|
+
get() {
|
|
77
|
+
throw new Error('Invalid responseType')
|
|
78
|
+
},
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
const result = responseToString('fallback response', xhr)
|
|
82
|
+
|
|
83
|
+
expect(result).toBe('fallback response')
|
|
84
|
+
})
|
|
85
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { shouldIgnoreUrl } from '../should-ignore-url'
|
|
2
|
+
|
|
3
|
+
describe('shouldIgnoreUrl', () => {
|
|
4
|
+
it('should return true when url matches a pattern', () => {
|
|
5
|
+
const patterns = [/google\.com/, /facebook\.com/]
|
|
6
|
+
|
|
7
|
+
const result = shouldIgnoreUrl('https://google.com/search', patterns)
|
|
8
|
+
|
|
9
|
+
expect(result).toBe(true)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('should return false when url does not match any pattern', () => {
|
|
13
|
+
const patterns = [/google\.com/, /facebook\.com/]
|
|
14
|
+
|
|
15
|
+
const result = shouldIgnoreUrl('https://github.com', patterns)
|
|
16
|
+
|
|
17
|
+
expect(result).toBe(false)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('should return false when patterns array is empty', () => {
|
|
21
|
+
const result = shouldIgnoreUrl('https://google.com', [])
|
|
22
|
+
|
|
23
|
+
expect(result).toBe(false)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('should stop checking after first matching pattern', () => {
|
|
27
|
+
const firstPattern = {
|
|
28
|
+
test: jest.fn().mockReturnValue(true),
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const secondPattern = {
|
|
32
|
+
test: jest.fn(),
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const result = shouldIgnoreUrl('https://example.com', [
|
|
36
|
+
firstPattern as unknown as RegExp,
|
|
37
|
+
secondPattern as unknown as RegExp,
|
|
38
|
+
])
|
|
39
|
+
|
|
40
|
+
expect(result).toBe(true)
|
|
41
|
+
|
|
42
|
+
expect(firstPattern.test).toHaveBeenCalled()
|
|
43
|
+
expect(secondPattern.test).not.toHaveBeenCalled()
|
|
44
|
+
})
|
|
45
|
+
})
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { generateRequestId } from './generate-request-id';
|
|
2
|
+
export { parseResponseHeaders } from './parse-response-headers';
|
|
3
|
+
export { shouldIgnoreUrl } from './should-ignore-url';
|
|
4
|
+
export { readBlobAsText } from './read-blob-as-text';
|
|
5
|
+
export { responseToString } from './response-to-string';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse HTTP response headers string into object
|
|
3
|
+
*/
|
|
4
|
+
export function parseResponseHeaders(headersString: string): Record<string, string> {
|
|
5
|
+
const headers: Record<string, string> = {};
|
|
6
|
+
if (!headersString) return headers;
|
|
7
|
+
|
|
8
|
+
const lines = headersString.trim().split(/[\r\n]+/);
|
|
9
|
+
for (const line of lines) {
|
|
10
|
+
const colonIndex = line.indexOf(':');
|
|
11
|
+
if (colonIndex > 0) {
|
|
12
|
+
const key = line.substring(0, colonIndex).trim();
|
|
13
|
+
const value = line.substring(colonIndex + 1).trim();
|
|
14
|
+
if (key) {
|
|
15
|
+
headers[key] = value;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return headers;
|
|
20
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read Blob as text using FileReader
|
|
3
|
+
*/
|
|
4
|
+
export function readBlobAsText(blob: Blob): Promise<string | undefined> {
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
const reader = new FileReader();
|
|
7
|
+
reader.onloadend = () => resolve(reader.result as string);
|
|
8
|
+
reader.onerror = () => resolve(undefined);
|
|
9
|
+
reader.readAsText(blob);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert response body to string
|
|
3
|
+
*/
|
|
4
|
+
export function responseToString(
|
|
5
|
+
response: unknown,
|
|
6
|
+
xhr: XMLHttpRequest
|
|
7
|
+
): string | undefined {
|
|
8
|
+
// Try xhr.responseText first (most reliable)
|
|
9
|
+
try {
|
|
10
|
+
if (xhr.responseText) {
|
|
11
|
+
return xhr.responseText;
|
|
12
|
+
}
|
|
13
|
+
} catch {
|
|
14
|
+
// responseText may throw if responseType is not '' or 'text'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Fallback: convert response parameter
|
|
18
|
+
if (response !== null && response !== undefined) {
|
|
19
|
+
if (typeof response === 'string') {
|
|
20
|
+
return response;
|
|
21
|
+
}
|
|
22
|
+
if (typeof response === 'object') {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.stringify(response, null, 2);
|
|
25
|
+
} catch {
|
|
26
|
+
return String(response);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance monitoring handler
|
|
3
|
+
* Tracks JS thread responsiveness and forwards native performance metrics
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { NitroMako as NitroMakoSpec } from '../../specs/mako.nitro'
|
|
7
|
+
import type { PerformanceHandlerConfig, PerformanceMetricsEvent } from './types'
|
|
8
|
+
|
|
9
|
+
export class PerformanceHandler {
|
|
10
|
+
private nitroMako: NitroMakoSpec
|
|
11
|
+
private onEvent: (event: PerformanceMetricsEvent) => void
|
|
12
|
+
private intervalMs: number
|
|
13
|
+
private isMonitoring = false
|
|
14
|
+
private jsFrameInterval: ReturnType<typeof setInterval> | null = null
|
|
15
|
+
|
|
16
|
+
constructor(config: PerformanceHandlerConfig) {
|
|
17
|
+
this.nitroMako = config.nitroMako
|
|
18
|
+
this.onEvent = config.onEvent
|
|
19
|
+
this.intervalMs = config.intervalMs ?? 1000
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Start monitoring performance metrics
|
|
24
|
+
*/
|
|
25
|
+
start(): boolean {
|
|
26
|
+
if (this.isMonitoring) {
|
|
27
|
+
console.warn('[Mako] Performance monitoring already enabled')
|
|
28
|
+
return false
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
try {
|
|
32
|
+
// Start native performance monitoring
|
|
33
|
+
const success = this.nitroMako.startPerformanceMonitoring((metrics) => {
|
|
34
|
+
this.handleMetrics(metrics)
|
|
35
|
+
}, this.intervalMs)
|
|
36
|
+
|
|
37
|
+
if (success) {
|
|
38
|
+
this.isMonitoring = true
|
|
39
|
+
|
|
40
|
+
// Start JS frame tracking - call recordJsFrame every 16ms (~60fps)
|
|
41
|
+
this.jsFrameInterval = setInterval(() => {
|
|
42
|
+
try {
|
|
43
|
+
this.nitroMako.recordJsFrame()
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('[Mako] Failed to record JS frame:', error)
|
|
46
|
+
}
|
|
47
|
+
}, 16)
|
|
48
|
+
|
|
49
|
+
console.log('[Mako] Performance monitoring enabled')
|
|
50
|
+
}
|
|
51
|
+
return success
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('[Mako] Failed to start performance monitoring:', error)
|
|
54
|
+
return false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Stop monitoring performance metrics
|
|
60
|
+
*/
|
|
61
|
+
stop(): void {
|
|
62
|
+
if (!this.isMonitoring) return
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
// Stop JS frame tracking
|
|
66
|
+
if (this.jsFrameInterval) {
|
|
67
|
+
clearInterval(this.jsFrameInterval)
|
|
68
|
+
this.jsFrameInterval = null
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Stop native monitoring
|
|
72
|
+
this.nitroMako.stopPerformanceMonitoring()
|
|
73
|
+
this.isMonitoring = false
|
|
74
|
+
console.log('[Mako] Performance monitoring disabled')
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error('[Mako] Failed to stop performance monitoring:', error)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Check if performance monitoring is active
|
|
82
|
+
*/
|
|
83
|
+
isActive(): boolean {
|
|
84
|
+
return this.isMonitoring
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
private handleMetrics(metrics: {
|
|
88
|
+
uiFps: number
|
|
89
|
+
jsFps: number
|
|
90
|
+
memoryUsageMB: number
|
|
91
|
+
cpuUsagePercent: number
|
|
92
|
+
}): void {
|
|
93
|
+
const event: PerformanceMetricsEvent = {
|
|
94
|
+
type: 'performance_metrics',
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
uiFps: metrics.uiFps,
|
|
97
|
+
jsFps: metrics.jsFps,
|
|
98
|
+
memoryUsage: metrics.memoryUsageMB,
|
|
99
|
+
cpuUsage: metrics.cpuUsagePercent,
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
this.onEvent(event)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance handler types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { NitroMako as NitroMakoSpec } from '../../specs/mako.nitro'
|
|
6
|
+
|
|
7
|
+
export interface PerformanceHandlerConfig {
|
|
8
|
+
nitroMako: NitroMakoSpec
|
|
9
|
+
onEvent: (event: PerformanceMetricsEvent) => void
|
|
10
|
+
intervalMs?: number
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface PerformanceMetricsEvent {
|
|
14
|
+
type: 'performance_metrics'
|
|
15
|
+
timestamp: number
|
|
16
|
+
deviceId?: string
|
|
17
|
+
projectId?: string
|
|
18
|
+
uiFps: number
|
|
19
|
+
jsFps: number
|
|
20
|
+
memoryUsage: number
|
|
21
|
+
cpuUsage: number
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { deviceHandler } from '../device'
|
|
2
|
+
import type { ProjectInfoEvent } from '../types'
|
|
3
|
+
|
|
4
|
+
export class ProjectHandler {
|
|
5
|
+
private cachedProjectId: string | null = null
|
|
6
|
+
|
|
7
|
+
getProjectId(): string {
|
|
8
|
+
if (this.cachedProjectId) {
|
|
9
|
+
return this.cachedProjectId
|
|
10
|
+
}
|
|
11
|
+
// Use bundleId as projectId - it's already unique per app
|
|
12
|
+
const bundleId = deviceHandler.getBundleId()
|
|
13
|
+
this.cachedProjectId = bundleId
|
|
14
|
+
return bundleId
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getProjectInfo(): Omit<ProjectInfoEvent, 'type'> {
|
|
18
|
+
const projectId = this.getProjectId()
|
|
19
|
+
const appName = deviceHandler.getAppName()
|
|
20
|
+
const bundleId = deviceHandler.getBundleId()
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
projectId,
|
|
24
|
+
appName,
|
|
25
|
+
bundleId,
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mako SDK Types
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Re-export shared event types from @mako/types
|
|
6
|
+
export type {
|
|
7
|
+
LogLevel,
|
|
8
|
+
LogSource,
|
|
9
|
+
NativeLogSource,
|
|
10
|
+
LogEvent,
|
|
11
|
+
NativeLogEvent,
|
|
12
|
+
NetworkStage,
|
|
13
|
+
NetworkRequestEvent,
|
|
14
|
+
NetworkResponseEvent,
|
|
15
|
+
NetworkEvent,
|
|
16
|
+
DeviceInfoEvent,
|
|
17
|
+
ProjectInfoEvent,
|
|
18
|
+
ComponentRenderEvent,
|
|
19
|
+
ComponentTreeEvent,
|
|
20
|
+
PerformanceMetricsEvent,
|
|
21
|
+
EventType,
|
|
22
|
+
MakoEvent,
|
|
23
|
+
} from '@salve-software/mako-types';
|
|
24
|
+
|
|
25
|
+
// ============================================
|
|
26
|
+
// SDK Configuration (SDK-specific)
|
|
27
|
+
// ============================================
|
|
28
|
+
|
|
29
|
+
export interface MakoConfig {
|
|
30
|
+
/** Host IP/hostname of the Mako macOS app (default: 'localhost') */
|
|
31
|
+
host?: string;
|
|
32
|
+
/** WebSocket port (default: 8765) */
|
|
33
|
+
port?: number;
|
|
34
|
+
/** Enable network request/response capture (default: true) */
|
|
35
|
+
enableNetworkCapture?: boolean;
|
|
36
|
+
/** Enable component inspector for React render tracking (default: false) */
|
|
37
|
+
enableComponentInspector?: boolean;
|
|
38
|
+
/** Enable performance monitoring for FPS, memory, and CPU tracking (default: false) */
|
|
39
|
+
enablePerformanceMonitoring?: boolean;
|
|
40
|
+
/** URL patterns to ignore (default includes Metro bundler URLs) */
|
|
41
|
+
ignoredUrls?: RegExp[];
|
|
42
|
+
/** Callback when connected to Mako */
|
|
43
|
+
onConnect?: () => void;
|
|
44
|
+
/** Callback when disconnected from Mako */
|
|
45
|
+
onDisconnect?: () => void;
|
|
46
|
+
/** Callback on connection error */
|
|
47
|
+
onError?: (error: Error) => void;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ============================================
|
|
51
|
+
// Internal Types (SDK-specific)
|
|
52
|
+
// ============================================
|
|
53
|
+
|
|
54
|
+
export interface PendingRequest {
|
|
55
|
+
id: string;
|
|
56
|
+
method: string;
|
|
57
|
+
url: string;
|
|
58
|
+
headers: Record<string, string>;
|
|
59
|
+
body?: string;
|
|
60
|
+
startTime: number;
|
|
61
|
+
responseHeaders?: Record<string, string>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface NetworkCallbacks {
|
|
65
|
+
onOpen: (method: string, url: string, xhr: XMLHttpRequest) => void;
|
|
66
|
+
onSend: (data: unknown, xhr: XMLHttpRequest) => void;
|
|
67
|
+
onRequestHeader: (header: string, value: string, xhr: XMLHttpRequest) => void;
|
|
68
|
+
onHeaderReceived: (
|
|
69
|
+
responseContentType: string | undefined,
|
|
70
|
+
responseSize: number | undefined,
|
|
71
|
+
responseHeaders: string,
|
|
72
|
+
xhr: XMLHttpRequest
|
|
73
|
+
) => void;
|
|
74
|
+
onResponse: (
|
|
75
|
+
status: number,
|
|
76
|
+
timeout: boolean,
|
|
77
|
+
response: unknown,
|
|
78
|
+
responseURL: string,
|
|
79
|
+
responseType: string,
|
|
80
|
+
xhr: XMLHttpRequest
|
|
81
|
+
) => void;
|
|
82
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { HybridObject } from 'react-native-nitro-modules'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Log level for native logs
|
|
5
|
+
* Note: Using 'verbose' instead of 'debug' to avoid conflict with iOS DEBUG preprocessor macro
|
|
6
|
+
*/
|
|
7
|
+
export type NativeLogLevel = 'verbose' | 'info' | 'warn' | 'error'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Native log entry received from iOS/Android
|
|
11
|
+
*/
|
|
12
|
+
export interface NativeLogEntry {
|
|
13
|
+
level: NativeLogLevel
|
|
14
|
+
message: string
|
|
15
|
+
tag: string
|
|
16
|
+
timestamp: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Callback type for receiving native logs
|
|
21
|
+
*/
|
|
22
|
+
export type NativeLogCallback = (log: NativeLogEntry) => void
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Device information result from native APIs
|
|
26
|
+
*/
|
|
27
|
+
export interface DeviceInfoResult {
|
|
28
|
+
deviceId: string
|
|
29
|
+
deviceName: string
|
|
30
|
+
appName: string
|
|
31
|
+
bundleId: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Performance metrics snapshot from native APIs
|
|
36
|
+
*/
|
|
37
|
+
export interface PerformanceMetrics {
|
|
38
|
+
uiFps: number
|
|
39
|
+
jsFps: number
|
|
40
|
+
memoryUsageMB: number
|
|
41
|
+
cpuUsagePercent: number
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Callback type for receiving performance metrics
|
|
46
|
+
*/
|
|
47
|
+
export type PerformanceMetricsCallback = (metrics: PerformanceMetrics) => void
|
|
48
|
+
|
|
49
|
+
export interface NitroMako extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
|
|
50
|
+
sum(num1: number, num2: number): number
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Start capturing native platform logs (NSLog/print on iOS, Logcat on Android)
|
|
54
|
+
* @param onLog Callback invoked for each captured log entry
|
|
55
|
+
* @returns true if capture started successfully
|
|
56
|
+
*/
|
|
57
|
+
startLogCapture(onLog: NativeLogCallback): boolean
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Stop capturing native platform logs
|
|
61
|
+
*/
|
|
62
|
+
stopLogCapture(): void
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Check if log capture is currently active
|
|
66
|
+
*/
|
|
67
|
+
isCapturing(): boolean
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get device information using native APIs
|
|
71
|
+
* @returns Device info including deviceId, deviceName, appName, and bundleId
|
|
72
|
+
*/
|
|
73
|
+
getDeviceInfo(): DeviceInfoResult
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get stored device ID from native storage (UserDefaults/SharedPreferences)
|
|
77
|
+
* @returns The stored device ID or undefined if not found
|
|
78
|
+
*/
|
|
79
|
+
getStoredDeviceId(): string | undefined
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Store device ID in native storage (UserDefaults/SharedPreferences)
|
|
83
|
+
* @param deviceId The device ID to store
|
|
84
|
+
*/
|
|
85
|
+
storeDeviceId(deviceId: string): void
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Start monitoring performance metrics (FPS, memory, CPU)
|
|
89
|
+
* @param onMetrics Callback invoked with performance snapshot
|
|
90
|
+
* @param intervalMs How often to report metrics (in milliseconds, default 1000)
|
|
91
|
+
* @returns true if monitoring started successfully
|
|
92
|
+
*/
|
|
93
|
+
startPerformanceMonitoring(onMetrics: PerformanceMetricsCallback, intervalMs?: number): boolean
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Stop monitoring performance metrics
|
|
97
|
+
*/
|
|
98
|
+
stopPerformanceMonitoring(): void
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Check if performance monitoring is currently active
|
|
102
|
+
*/
|
|
103
|
+
isPerformanceMonitoring(): boolean
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get current performance metrics snapshot (without starting monitoring)
|
|
107
|
+
*/
|
|
108
|
+
getPerformanceSnapshot(): PerformanceMetrics
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Record a JS frame tick (called from JS to track JS thread responsiveness)
|
|
112
|
+
*/
|
|
113
|
+
recordJsFrame(): void
|
|
114
|
+
}
|