react-native-executorch 0.5.6 → 0.5.8

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 (237) hide show
  1. package/android/libs/classes.jar +0 -0
  2. package/android/src/main/cpp/CMakeLists.txt +23 -14
  3. package/common/rnexecutorch/RnExecutorchInstaller.cpp +4 -21
  4. package/common/rnexecutorch/host_objects/ModelHostObject.h +67 -51
  5. package/common/rnexecutorch/models/llm/LLM.cpp +24 -1
  6. package/common/rnexecutorch/models/llm/LLM.h +4 -1
  7. package/common/rnexecutorch/threads/GlobalThreadPool.h +79 -0
  8. package/common/rnexecutorch/threads/HighPerformanceThreadPool.h +364 -0
  9. package/common/rnexecutorch/threads/utils/ThreadUtils.h +29 -0
  10. package/common/runner/runner.cpp +9 -3
  11. package/common/runner/runner.h +4 -3
  12. package/common/runner/text_token_generator.h +28 -10
  13. package/lib/Error.js +53 -0
  14. package/lib/ThreadPool.d.ts +10 -0
  15. package/lib/ThreadPool.js +28 -0
  16. package/lib/common/Logger.d.ts +8 -0
  17. package/lib/common/Logger.js +19 -0
  18. package/lib/constants/directories.js +2 -0
  19. package/lib/constants/llmDefaults.d.ts +6 -0
  20. package/lib/constants/llmDefaults.js +16 -0
  21. package/lib/constants/modelUrls.d.ts +223 -0
  22. package/lib/constants/modelUrls.js +322 -0
  23. package/lib/constants/ocr/models.d.ts +882 -0
  24. package/lib/constants/ocr/models.js +182 -0
  25. package/lib/constants/ocr/symbols.js +139 -0
  26. package/lib/constants/sttDefaults.d.ts +28 -0
  27. package/lib/constants/sttDefaults.js +68 -0
  28. package/lib/controllers/LLMController.d.ts +47 -0
  29. package/lib/controllers/LLMController.js +213 -0
  30. package/lib/controllers/OCRController.js +67 -0
  31. package/lib/controllers/SpeechToTextController.d.ts +56 -0
  32. package/lib/controllers/SpeechToTextController.js +349 -0
  33. package/lib/controllers/VerticalOCRController.js +70 -0
  34. package/lib/hooks/computer_vision/useClassification.d.ts +15 -0
  35. package/lib/hooks/computer_vision/useClassification.js +7 -0
  36. package/lib/hooks/computer_vision/useImageEmbeddings.d.ts +15 -0
  37. package/lib/hooks/computer_vision/useImageEmbeddings.js +7 -0
  38. package/lib/hooks/computer_vision/useImageSegmentation.d.ts +38 -0
  39. package/lib/hooks/computer_vision/useImageSegmentation.js +7 -0
  40. package/lib/hooks/computer_vision/useOCR.d.ts +20 -0
  41. package/lib/hooks/computer_vision/useOCR.js +41 -0
  42. package/lib/hooks/computer_vision/useObjectDetection.d.ts +15 -0
  43. package/lib/hooks/computer_vision/useObjectDetection.js +7 -0
  44. package/lib/hooks/computer_vision/useStyleTransfer.d.ts +15 -0
  45. package/lib/hooks/computer_vision/useStyleTransfer.js +7 -0
  46. package/lib/hooks/computer_vision/useVerticalOCR.d.ts +21 -0
  47. package/lib/hooks/computer_vision/useVerticalOCR.js +43 -0
  48. package/lib/hooks/general/useExecutorchModule.d.ts +13 -0
  49. package/lib/hooks/general/useExecutorchModule.js +7 -0
  50. package/lib/hooks/natural_language_processing/useLLM.d.ts +10 -0
  51. package/lib/hooks/natural_language_processing/useLLM.js +78 -0
  52. package/lib/hooks/natural_language_processing/useSpeechToText.d.ts +27 -0
  53. package/lib/hooks/natural_language_processing/useSpeechToText.js +49 -0
  54. package/lib/hooks/natural_language_processing/useTextEmbeddings.d.ts +16 -0
  55. package/lib/hooks/natural_language_processing/useTextEmbeddings.js +7 -0
  56. package/lib/hooks/natural_language_processing/useTokenizer.d.ts +17 -0
  57. package/lib/hooks/natural_language_processing/useTokenizer.js +52 -0
  58. package/lib/hooks/useModule.js +45 -0
  59. package/lib/hooks/useNonStaticModule.d.ts +20 -0
  60. package/lib/hooks/useNonStaticModule.js +49 -0
  61. package/lib/index.d.ts +48 -0
  62. package/lib/index.js +58 -0
  63. package/lib/module/controllers/LLMController.js +21 -2
  64. package/lib/module/controllers/LLMController.js.map +1 -1
  65. package/lib/module/hooks/natural_language_processing/useLLM.js +6 -2
  66. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  67. package/lib/module/modules/natural_language_processing/LLMModule.js +7 -2
  68. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  69. package/lib/module/types/llm.js.map +1 -1
  70. package/lib/modules/BaseModule.js +25 -0
  71. package/lib/modules/BaseNonStaticModule.js +14 -0
  72. package/lib/modules/computer_vision/ClassificationModule.d.ts +8 -0
  73. package/lib/modules/computer_vision/ClassificationModule.js +17 -0
  74. package/lib/modules/computer_vision/ImageEmbeddingsModule.d.ts +8 -0
  75. package/lib/modules/computer_vision/ImageEmbeddingsModule.js +17 -0
  76. package/lib/modules/computer_vision/ImageSegmentationModule.d.ts +11 -0
  77. package/lib/modules/computer_vision/ImageSegmentationModule.js +27 -0
  78. package/lib/modules/computer_vision/OCRModule.d.ts +14 -0
  79. package/lib/modules/computer_vision/OCRModule.js +17 -0
  80. package/lib/modules/computer_vision/ObjectDetectionModule.d.ts +9 -0
  81. package/lib/modules/computer_vision/ObjectDetectionModule.js +17 -0
  82. package/lib/modules/computer_vision/StyleTransferModule.d.ts +8 -0
  83. package/lib/modules/computer_vision/StyleTransferModule.js +17 -0
  84. package/lib/modules/computer_vision/VerticalOCRModule.d.ts +14 -0
  85. package/lib/modules/computer_vision/VerticalOCRModule.js +19 -0
  86. package/lib/modules/general/ExecutorchModule.d.ts +7 -0
  87. package/lib/modules/general/ExecutorchModule.js +14 -0
  88. package/lib/modules/natural_language_processing/LLMModule.d.ts +28 -0
  89. package/lib/modules/natural_language_processing/LLMModule.js +45 -0
  90. package/lib/modules/natural_language_processing/SpeechToTextModule.d.ts +24 -0
  91. package/lib/modules/natural_language_processing/SpeechToTextModule.js +36 -0
  92. package/lib/modules/natural_language_processing/TextEmbeddingsModule.d.ts +9 -0
  93. package/lib/modules/natural_language_processing/TextEmbeddingsModule.js +21 -0
  94. package/lib/modules/natural_language_processing/TokenizerModule.d.ts +12 -0
  95. package/lib/modules/natural_language_processing/TokenizerModule.js +30 -0
  96. package/lib/native/NativeETInstaller.js +2 -0
  97. package/lib/native/NativeOCR.js +2 -0
  98. package/lib/native/NativeVerticalOCR.js +2 -0
  99. package/lib/native/RnExecutorchModules.d.ts +7 -0
  100. package/lib/native/RnExecutorchModules.js +18 -0
  101. package/lib/tsconfig.tsbuildinfo +1 -0
  102. package/lib/types/common.d.ts +32 -0
  103. package/lib/types/common.js +25 -0
  104. package/lib/types/imageSegmentation.js +26 -0
  105. package/lib/types/llm.d.ts +46 -0
  106. package/lib/types/llm.js +9 -0
  107. package/lib/types/objectDetection.js +94 -0
  108. package/lib/types/ocr.js +1 -0
  109. package/lib/types/stt.d.ts +94 -0
  110. package/lib/types/stt.js +85 -0
  111. package/lib/typescript/controllers/LLMController.d.ts +4 -2
  112. package/lib/typescript/controllers/LLMController.d.ts.map +1 -1
  113. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  114. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +4 -2
  115. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  116. package/lib/typescript/types/llm.d.ts +7 -1
  117. package/lib/typescript/types/llm.d.ts.map +1 -1
  118. package/lib/utils/ResourceFetcher.d.ts +24 -0
  119. package/lib/utils/ResourceFetcher.js +305 -0
  120. package/lib/utils/ResourceFetcherUtils.d.ts +54 -0
  121. package/lib/utils/ResourceFetcherUtils.js +127 -0
  122. package/lib/utils/llm.d.ts +6 -0
  123. package/lib/utils/llm.js +72 -0
  124. package/lib/utils/stt.js +21 -0
  125. package/package.json +3 -1
  126. package/react-native-executorch.podspec +12 -31
  127. package/src/controllers/LLMController.ts +29 -5
  128. package/src/hooks/natural_language_processing/useLLM.ts +15 -1
  129. package/src/modules/natural_language_processing/LLMModule.ts +14 -2
  130. package/src/types/llm.ts +8 -0
  131. package/third-party/android/libs/cpuinfo/arm64-v8a/libcpuinfo.so +0 -0
  132. package/third-party/android/libs/executorch/arm64-v8a/libexecutorch.so +0 -0
  133. package/third-party/android/libs/executorch/x86_64/libexecutorch.so +0 -0
  134. package/third-party/android/libs/pthreadpool/arm64-v8a/libpthreadpool.so +0 -0
  135. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libsentencepiece.a +0 -0
  136. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_c.a +0 -0
  137. package/third-party/android/libs/tokenizers-cpp/arm64-v8a/libtokenizers_cpp.a +0 -0
  138. package/third-party/android/libs/tokenizers-cpp/x86_64/libsentencepiece.a +0 -0
  139. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_c.a +0 -0
  140. package/third-party/android/libs/tokenizers-cpp/x86_64/libtokenizers_cpp.a +0 -0
  141. package/third-party/include/c10/macros/Export.h +2 -86
  142. package/third-party/include/c10/macros/Macros.h +28 -5
  143. package/third-party/include/c10/util/BFloat16-inl.h +1 -4
  144. package/third-party/include/c10/util/BFloat16.h +5 -8
  145. package/third-party/include/c10/util/Half.h +5 -0
  146. package/third-party/include/c10/util/bit_cast.h +1 -1
  147. package/third-party/include/c10/util/complex.h +639 -0
  148. package/third-party/include/c10/util/complex_math.h +399 -0
  149. package/third-party/include/c10/util/complex_utils.h +41 -0
  150. package/third-party/include/c10/util/irange.h +2 -2
  151. package/third-party/include/c10/util/overflows.h +95 -0
  152. package/third-party/include/executorch/ExecuTorchError.h +75 -0
  153. package/third-party/include/executorch/ExecuTorchModule.h +115 -11
  154. package/third-party/include/executorch/ExecuTorchTensor.h +731 -51
  155. package/third-party/include/executorch/ExecuTorchValue.h +61 -9
  156. package/third-party/include/executorch/extension/kernel_util/make_boxed_from_unboxed_functor.h +181 -0
  157. package/third-party/include/executorch/extension/kernel_util/meta_programming.h +108 -0
  158. package/third-party/include/executorch/extension/kernel_util/type_list.h +137 -0
  159. package/third-party/include/executorch/extension/module/bundled_module.h +131 -0
  160. package/third-party/include/executorch/extension/module/module.h +46 -20
  161. package/third-party/include/executorch/extension/threadpool/cpuinfo_utils.h +1 -3
  162. package/third-party/include/executorch/extension/threadpool/threadpool.h +1 -3
  163. package/third-party/include/executorch/extension/threadpool/threadpool_guard.h +35 -0
  164. package/third-party/include/executorch/runtime/backend/backend_execution_context.h +3 -3
  165. package/third-party/include/executorch/runtime/backend/backend_init_context.h +12 -6
  166. package/third-party/include/executorch/runtime/backend/backend_option_context.h +34 -0
  167. package/third-party/include/executorch/runtime/backend/interface.h +70 -9
  168. package/third-party/include/executorch/runtime/backend/options.h +206 -0
  169. package/third-party/include/executorch/runtime/core/evalue.h +19 -25
  170. package/third-party/include/executorch/runtime/core/event_tracer.h +32 -17
  171. package/third-party/include/executorch/runtime/core/event_tracer_hooks.h +23 -14
  172. package/third-party/include/executorch/runtime/core/exec_aten/exec_aten.h +32 -9
  173. package/third-party/include/executorch/runtime/core/exec_aten/util/dim_order_util.h +3 -2
  174. package/third-party/include/executorch/runtime/core/exec_aten/util/scalar_type_util.h +43 -75
  175. package/third-party/include/executorch/runtime/core/exec_aten/util/tensor_util.h +88 -87
  176. package/third-party/include/executorch/runtime/core/function_ref.h +100 -0
  177. package/third-party/include/executorch/runtime/core/named_data_map.h +14 -14
  178. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Export.h +2 -86
  179. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h +28 -5
  180. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16-inl.h +1 -4
  181. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/BFloat16.h +5 -8
  182. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/Half.h +5 -0
  183. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/bit_cast.h +1 -1
  184. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex.h +639 -0
  185. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_math.h +399 -0
  186. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/complex_utils.h +41 -0
  187. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/irange.h +2 -2
  188. package/third-party/include/executorch/runtime/core/portable_type/c10/c10/util/overflows.h +95 -0
  189. package/third-party/include/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h +88 -0
  190. package/third-party/include/executorch/runtime/core/portable_type/complex.h +6 -29
  191. package/third-party/include/executorch/runtime/core/portable_type/tensor_impl.h +20 -0
  192. package/third-party/include/executorch/runtime/core/span.h +4 -0
  193. package/third-party/include/executorch/runtime/core/tag.h +19 -0
  194. package/third-party/include/executorch/runtime/core/tensor_layout.h +2 -2
  195. package/third-party/include/executorch/runtime/executor/method.h +15 -3
  196. package/third-party/include/executorch/runtime/executor/method_meta.h +34 -5
  197. package/third-party/include/executorch/runtime/executor/program.h +3 -4
  198. package/third-party/include/executorch/runtime/executor/pte_data_map.h +9 -8
  199. package/third-party/include/executorch/runtime/executor/tensor_parser.h +14 -13
  200. package/third-party/include/executorch/runtime/kernel/kernel_runtime_context.h +5 -5
  201. package/third-party/include/executorch/runtime/kernel/operator_registry.h +21 -19
  202. package/third-party/include/executorch/runtime/platform/compiler.h +8 -0
  203. package/third-party/include/executorch/runtime/platform/platform.h +126 -0
  204. package/third-party/include/headeronly/macros/Export.h +88 -0
  205. package/third-party/include/tokenizers-cpp/tokenizers_c.h +61 -0
  206. package/third-party/include/torch/headeronly/macros/Export.h +88 -0
  207. package/third-party/ios/ExecutorchLib.xcframework/Info.plist +43 -0
  208. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  209. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  210. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  211. package/third-party/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  212. package/third-party/ios/libs/cpuinfo/libcpuinfo.a +0 -0
  213. package/third-party/ios/libs/pthreadpool/physical-arm64-release/libpthreadpool.a +0 -0
  214. package/third-party/ios/libs/pthreadpool/simulator-arm64-debug/libpthreadpool.a +0 -0
  215. package/ios/libs/executorch/libbackend_coreml_ios.a +0 -0
  216. package/ios/libs/executorch/libbackend_coreml_simulator.a +0 -0
  217. package/ios/libs/executorch/libbackend_mps_ios.a +0 -0
  218. package/ios/libs/executorch/libbackend_mps_simulator.a +0 -0
  219. package/ios/libs/executorch/libbackend_xnnpack_ios.a +0 -0
  220. package/ios/libs/executorch/libbackend_xnnpack_simulator.a +0 -0
  221. package/ios/libs/executorch/libexecutorch_ios.a +0 -0
  222. package/ios/libs/executorch/libexecutorch_simulator.a +0 -0
  223. package/ios/libs/executorch/libkernels_custom_ios.a +0 -0
  224. package/ios/libs/executorch/libkernels_custom_simulator.a +0 -0
  225. package/ios/libs/executorch/libkernels_optimized_ios.a +0 -0
  226. package/ios/libs/executorch/libkernels_optimized_simulator.a +0 -0
  227. package/ios/libs/executorch/libkernels_portable_ios.a +0 -0
  228. package/ios/libs/executorch/libkernels_portable_simulator.a +0 -0
  229. package/ios/libs/executorch/libkernels_quantized_ios.a +0 -0
  230. package/ios/libs/executorch/libkernels_quantized_simulator.a +0 -0
  231. package/third-party/ios/ios.toolchain.cmake +0 -1122
  232. /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libsentencepiece.a +0 -0
  233. /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_c.a +0 -0
  234. /package/{ios → third-party/ios}/libs/tokenizers-cpp/physical-arm64-release/libtokenizers_cpp.a +0 -0
  235. /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libsentencepiece.a +0 -0
  236. /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_c.a +0 -0
  237. /package/{ios → third-party/ios}/libs/tokenizers-cpp/simulator-arm64-debug/libtokenizers_cpp.a +0 -0
@@ -0,0 +1,70 @@
1
+ import { symbols } from '../constants/ocr/symbols';
2
+ import { ETError, getError } from '../Error';
3
+ import { VerticalOCRNativeModule } from '../native/RnExecutorchModules';
4
+ import { ResourceFetcher } from '../utils/ResourceFetcher';
5
+ export class VerticalOCRController {
6
+ ocrNativeModule;
7
+ isReady = false;
8
+ isGenerating = false;
9
+ error = null;
10
+ modelDownloadProgressCallback;
11
+ isReadyCallback;
12
+ isGeneratingCallback;
13
+ errorCallback;
14
+ constructor({ modelDownloadProgressCallback = (_downloadProgress) => { }, isReadyCallback = (_isReady) => { }, isGeneratingCallback = (_isGenerating) => { }, errorCallback = (_error) => { }, }) {
15
+ this.ocrNativeModule = VerticalOCRNativeModule;
16
+ this.modelDownloadProgressCallback = modelDownloadProgressCallback;
17
+ this.isReadyCallback = isReadyCallback;
18
+ this.isGeneratingCallback = isGeneratingCallback;
19
+ this.errorCallback = errorCallback;
20
+ }
21
+ loadModel = async (detectorSources, recognizerSources, language, independentCharacters) => {
22
+ try {
23
+ if (Object.keys(detectorSources).length !== 2 ||
24
+ Object.keys(recognizerSources).length !== 2)
25
+ return;
26
+ if (!symbols[language]) {
27
+ throw new Error(getError(ETError.LanguageNotSupported));
28
+ }
29
+ this.isReady = false;
30
+ this.isReadyCallback(this.isReady);
31
+ const paths = await ResourceFetcher.fetch(this.modelDownloadProgressCallback, detectorSources.detectorLarge, detectorSources.detectorNarrow, independentCharacters
32
+ ? recognizerSources.recognizerSmall
33
+ : recognizerSources.recognizerLarge);
34
+ if (paths === null || paths.length < 3) {
35
+ throw new Error('Download interrupted');
36
+ }
37
+ await this.ocrNativeModule.loadModule(paths[0], paths[1], paths[2], symbols[language], independentCharacters);
38
+ this.isReady = true;
39
+ this.isReadyCallback(this.isReady);
40
+ }
41
+ catch (e) {
42
+ if (this.errorCallback) {
43
+ this.errorCallback(getError(e));
44
+ }
45
+ else {
46
+ throw new Error(getError(e));
47
+ }
48
+ }
49
+ };
50
+ forward = async (input) => {
51
+ if (!this.isReady) {
52
+ throw new Error(getError(ETError.ModuleNotLoaded));
53
+ }
54
+ if (this.isGenerating) {
55
+ throw new Error(getError(ETError.ModelGenerating));
56
+ }
57
+ try {
58
+ this.isGenerating = true;
59
+ this.isGeneratingCallback(this.isGenerating);
60
+ return await this.ocrNativeModule.forward(input);
61
+ }
62
+ catch (e) {
63
+ throw new Error(getError(e));
64
+ }
65
+ finally {
66
+ this.isGenerating = false;
67
+ this.isGeneratingCallback(this.isGenerating);
68
+ }
69
+ };
70
+ }
@@ -0,0 +1,15 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }
8
+ export declare const useClassification: ({ model, preventLoad }: Props) => {
9
+ error: string | null;
10
+ isReady: boolean;
11
+ isGenerating: boolean;
12
+ downloadProgress: number;
13
+ forward: (imageSource: string) => Promise<any>;
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { useNonStaticModule } from '../useNonStaticModule';
2
+ import { ClassificationModule } from '../../modules/computer_vision/ClassificationModule';
3
+ export const useClassification = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: ClassificationModule,
5
+ model,
6
+ preventLoad: preventLoad,
7
+ });
@@ -0,0 +1,15 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }
8
+ export declare const useImageEmbeddings: ({ model, preventLoad }: Props) => {
9
+ error: string | null;
10
+ isReady: boolean;
11
+ isGenerating: boolean;
12
+ downloadProgress: number;
13
+ forward: (imageSource: string) => Promise<Float32Array<ArrayBufferLike>>;
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ImageEmbeddingsModule } from '../../modules/computer_vision/ImageEmbeddingsModule';
2
+ import { useNonStaticModule } from '../useNonStaticModule';
3
+ export const useImageEmbeddings = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: ImageEmbeddingsModule,
5
+ model,
6
+ preventLoad,
7
+ });
@@ -0,0 +1,38 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }
8
+ export declare const useImageSegmentation: ({ model, preventLoad }: Props) => {
9
+ error: string | null;
10
+ isReady: boolean;
11
+ isGenerating: boolean;
12
+ downloadProgress: number;
13
+ forward: (imageSource: string, classesOfInterest?: import("../..").DeeplabLabel[] | undefined, resize?: boolean | undefined) => Promise<{
14
+ 0?: number[] | undefined;
15
+ 1?: number[] | undefined;
16
+ 2?: number[] | undefined;
17
+ 3?: number[] | undefined;
18
+ 4?: number[] | undefined;
19
+ 5?: number[] | undefined;
20
+ 6?: number[] | undefined;
21
+ 7?: number[] | undefined;
22
+ 8?: number[] | undefined;
23
+ 9?: number[] | undefined;
24
+ 10?: number[] | undefined;
25
+ 11?: number[] | undefined;
26
+ 12?: number[] | undefined;
27
+ 13?: number[] | undefined;
28
+ 14?: number[] | undefined;
29
+ 15?: number[] | undefined;
30
+ 16?: number[] | undefined;
31
+ 17?: number[] | undefined;
32
+ 18?: number[] | undefined;
33
+ 19?: number[] | undefined;
34
+ 20?: number[] | undefined;
35
+ 21?: number[] | undefined;
36
+ }>;
37
+ };
38
+ export {};
@@ -0,0 +1,7 @@
1
+ import { useNonStaticModule } from '../useNonStaticModule';
2
+ import { ImageSegmentationModule } from '../../modules/computer_vision/ImageSegmentationModule';
3
+ export const useImageSegmentation = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: ImageSegmentationModule,
5
+ model,
6
+ preventLoad,
7
+ });
@@ -0,0 +1,20 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ import { OCRDetection, OCRLanguage } from '../../types/ocr';
3
+ interface OCRModule {
4
+ error: string | null;
5
+ isReady: boolean;
6
+ isGenerating: boolean;
7
+ forward: (input: string) => Promise<OCRDetection[]>;
8
+ downloadProgress: number;
9
+ }
10
+ export declare const useOCR: ({ model, preventLoad, }: {
11
+ model: {
12
+ detectorSource: ResourceSource;
13
+ recognizerLarge: ResourceSource;
14
+ recognizerMedium: ResourceSource;
15
+ recognizerSmall: ResourceSource;
16
+ language: OCRLanguage;
17
+ };
18
+ preventLoad?: boolean;
19
+ }) => OCRModule;
20
+ export {};
@@ -0,0 +1,41 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { OCRController } from '../../controllers/OCRController';
3
+ export const useOCR = ({ model, preventLoad = false, }) => {
4
+ const [error, setError] = useState(null);
5
+ const [isReady, setIsReady] = useState(false);
6
+ const [isGenerating, setIsGenerating] = useState(false);
7
+ const [downloadProgress, setDownloadProgress] = useState(0);
8
+ const controllerInstance = useMemo(() => new OCRController({
9
+ modelDownloadProgressCallback: setDownloadProgress,
10
+ isReadyCallback: setIsReady,
11
+ isGeneratingCallback: setIsGenerating,
12
+ errorCallback: setError,
13
+ }), []);
14
+ useEffect(() => {
15
+ const loadModel = async () => {
16
+ await controllerInstance.loadModel(model.detectorSource, {
17
+ recognizerLarge: model.recognizerLarge,
18
+ recognizerMedium: model.recognizerMedium,
19
+ recognizerSmall: model.recognizerSmall,
20
+ }, model.language);
21
+ };
22
+ if (!preventLoad) {
23
+ loadModel();
24
+ }
25
+ }, [
26
+ controllerInstance,
27
+ model.detectorSource,
28
+ model.recognizerLarge,
29
+ model.recognizerMedium,
30
+ model.recognizerSmall,
31
+ model.language,
32
+ preventLoad,
33
+ ]);
34
+ return {
35
+ error,
36
+ isReady,
37
+ isGenerating,
38
+ forward: controllerInstance.forward,
39
+ downloadProgress,
40
+ };
41
+ };
@@ -0,0 +1,15 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }
8
+ export declare const useObjectDetection: ({ model, preventLoad }: Props) => {
9
+ error: string | null;
10
+ isReady: boolean;
11
+ isGenerating: boolean;
12
+ downloadProgress: number;
13
+ forward: (imageSource: string, detectionThreshold?: number | undefined) => Promise<import("../..").Detection[]>;
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { useNonStaticModule } from '../useNonStaticModule';
2
+ import { ObjectDetectionModule } from '../../modules/computer_vision/ObjectDetectionModule';
3
+ export const useObjectDetection = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: ObjectDetectionModule,
5
+ model,
6
+ preventLoad: preventLoad,
7
+ });
@@ -0,0 +1,15 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }
8
+ export declare const useStyleTransfer: ({ model, preventLoad }: Props) => {
9
+ error: string | null;
10
+ isReady: boolean;
11
+ isGenerating: boolean;
12
+ downloadProgress: number;
13
+ forward: (imageSource: string) => Promise<string>;
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { useNonStaticModule } from '../useNonStaticModule';
2
+ import { StyleTransferModule } from '../../modules/computer_vision/StyleTransferModule';
3
+ export const useStyleTransfer = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: StyleTransferModule,
5
+ model,
6
+ preventLoad: preventLoad,
7
+ });
@@ -0,0 +1,21 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ import { OCRDetection, OCRLanguage } from '../../types/ocr';
3
+ interface OCRModule {
4
+ error: string | null;
5
+ isReady: boolean;
6
+ isGenerating: boolean;
7
+ forward: (input: string) => Promise<OCRDetection[]>;
8
+ downloadProgress: number;
9
+ }
10
+ export declare const useVerticalOCR: ({ model, independentCharacters, preventLoad, }: {
11
+ model: {
12
+ detectorLarge: ResourceSource;
13
+ detectorNarrow: ResourceSource;
14
+ recognizerLarge: ResourceSource;
15
+ recognizerSmall: ResourceSource;
16
+ language: OCRLanguage;
17
+ };
18
+ independentCharacters?: boolean;
19
+ preventLoad?: boolean;
20
+ }) => OCRModule;
21
+ export {};
@@ -0,0 +1,43 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { VerticalOCRController } from '../../controllers/VerticalOCRController';
3
+ export const useVerticalOCR = ({ model, independentCharacters = false, preventLoad = false, }) => {
4
+ const [error, setError] = useState(null);
5
+ const [isReady, setIsReady] = useState(false);
6
+ const [isGenerating, setIsGenerating] = useState(false);
7
+ const [downloadProgress, setDownloadProgress] = useState(0);
8
+ const controllerInstance = useMemo(() => new VerticalOCRController({
9
+ modelDownloadProgressCallback: setDownloadProgress,
10
+ isReadyCallback: setIsReady,
11
+ isGeneratingCallback: setIsGenerating,
12
+ errorCallback: setError,
13
+ }), []);
14
+ useEffect(() => {
15
+ if (preventLoad)
16
+ return;
17
+ (async () => {
18
+ await controllerInstance.loadModel({
19
+ detectorLarge: model.detectorLarge,
20
+ detectorNarrow: model.detectorNarrow,
21
+ }, {
22
+ recognizerLarge: model.recognizerLarge,
23
+ recognizerSmall: model.recognizerSmall,
24
+ }, model.language, independentCharacters);
25
+ })();
26
+ }, [
27
+ controllerInstance,
28
+ model.detectorLarge,
29
+ model.detectorNarrow,
30
+ model.recognizerLarge,
31
+ model.recognizerSmall,
32
+ model.language,
33
+ independentCharacters,
34
+ preventLoad,
35
+ ]);
36
+ return {
37
+ error,
38
+ isReady,
39
+ isGenerating,
40
+ forward: controllerInstance.forward,
41
+ downloadProgress,
42
+ };
43
+ };
@@ -0,0 +1,13 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ modelSource: ResourceSource;
4
+ preventLoad?: boolean;
5
+ }
6
+ export declare const useExecutorchModule: ({ modelSource, preventLoad, }: Props) => {
7
+ error: string | null;
8
+ isReady: boolean;
9
+ isGenerating: boolean;
10
+ downloadProgress: number;
11
+ forward: (inputTensor: import("../../types/common").TensorPtr[]) => Promise<import("../../types/common").TensorPtr[]>;
12
+ };
13
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ExecutorchModule } from '../../modules/general/ExecutorchModule';
2
+ import { useNonStaticModule } from '../useNonStaticModule';
3
+ export const useExecutorchModule = ({ modelSource, preventLoad = false, }) => useNonStaticModule({
4
+ module: ExecutorchModule,
5
+ model: { modelSource },
6
+ preventLoad,
7
+ });
@@ -0,0 +1,10 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ import { LLMType } from '../../types/llm';
3
+ export declare const useLLM: ({ model, preventLoad, }: {
4
+ model: {
5
+ modelSource: ResourceSource;
6
+ tokenizerSource: ResourceSource;
7
+ tokenizerConfigSource: ResourceSource;
8
+ };
9
+ preventLoad?: boolean;
10
+ }) => LLMType;
@@ -0,0 +1,78 @@
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { LLMController } from '../../controllers/LLMController';
3
+ /*
4
+ Hook version of LLMModule
5
+ */
6
+ export const useLLM = ({ model, preventLoad = false, }) => {
7
+ const [token, setToken] = useState('');
8
+ const [response, setResponse] = useState('');
9
+ const [messageHistory, setMessageHistory] = useState([]);
10
+ const [isReady, setIsReady] = useState(false);
11
+ const [isGenerating, setIsGenerating] = useState(false);
12
+ const [downloadProgress, setDownloadProgress] = useState(0);
13
+ const [error, setError] = useState(null);
14
+ const tokenCallback = useCallback((newToken) => {
15
+ setToken(newToken);
16
+ setResponse((prevResponse) => prevResponse + newToken);
17
+ }, []);
18
+ const controllerInstance = useMemo(() => new LLMController({
19
+ tokenCallback: tokenCallback,
20
+ messageHistoryCallback: setMessageHistory,
21
+ isReadyCallback: setIsReady,
22
+ isGeneratingCallback: setIsGenerating,
23
+ }), [tokenCallback]);
24
+ useEffect(() => {
25
+ setDownloadProgress(0);
26
+ setError(null);
27
+ if (preventLoad)
28
+ return;
29
+ (async () => {
30
+ try {
31
+ await controllerInstance.load({
32
+ modelSource: model.modelSource,
33
+ tokenizerSource: model.tokenizerSource,
34
+ tokenizerConfigSource: model.tokenizerConfigSource,
35
+ onDownloadProgressCallback: setDownloadProgress,
36
+ });
37
+ }
38
+ catch (e) {
39
+ setError(e);
40
+ }
41
+ })();
42
+ return () => {
43
+ controllerInstance.delete();
44
+ };
45
+ }, [
46
+ controllerInstance,
47
+ model.modelSource,
48
+ model.tokenizerSource,
49
+ model.tokenizerConfigSource,
50
+ preventLoad,
51
+ ]);
52
+ // memoization of returned functions
53
+ const configure = useCallback(({ chatConfig, toolsConfig, }) => controllerInstance.configure({ chatConfig, toolsConfig }), [controllerInstance]);
54
+ const generate = useCallback((messages, tools) => {
55
+ setResponse('');
56
+ return controllerInstance.generate(messages, tools);
57
+ }, [controllerInstance]);
58
+ const sendMessage = useCallback((message) => {
59
+ setResponse('');
60
+ return controllerInstance.sendMessage(message);
61
+ }, [controllerInstance]);
62
+ const deleteMessage = useCallback((index) => controllerInstance.deleteMessage(index), [controllerInstance]);
63
+ const interrupt = useCallback(() => controllerInstance.interrupt(), [controllerInstance]);
64
+ return {
65
+ messageHistory,
66
+ response,
67
+ token,
68
+ isReady,
69
+ isGenerating,
70
+ downloadProgress,
71
+ error,
72
+ configure: configure,
73
+ generate: generate,
74
+ sendMessage: sendMessage,
75
+ deleteMessage: deleteMessage,
76
+ interrupt: interrupt,
77
+ };
78
+ };
@@ -0,0 +1,27 @@
1
+ import { SpeechToTextController } from '../../controllers/SpeechToTextController';
2
+ import { ResourceSource } from '../../types/common';
3
+ import { STREAMING_ACTION } from '../../constants/sttDefaults';
4
+ import { AvailableModels, SpeechToTextLanguage } from '../../types/stt';
5
+ interface SpeechToTextModule {
6
+ isReady: boolean;
7
+ isGenerating: boolean;
8
+ sequence: string;
9
+ downloadProgress: number;
10
+ configureStreaming: SpeechToTextController['configureStreaming'];
11
+ error: Error | undefined;
12
+ transcribe: (input: number[], audioLanguage?: SpeechToTextLanguage) => ReturnType<SpeechToTextController['transcribe']>;
13
+ streamingTranscribe: (streamAction: STREAMING_ACTION, input?: number[], audioLanguage?: SpeechToTextLanguage) => ReturnType<SpeechToTextController['streamingTranscribe']>;
14
+ }
15
+ export declare const useSpeechToText: ({ model, overlapSeconds, windowSize, streamingConfig, preventLoad, }: {
16
+ model: {
17
+ modelName: AvailableModels;
18
+ encoderSource: ResourceSource;
19
+ decoderSource: ResourceSource;
20
+ tokenizerSource: ResourceSource;
21
+ };
22
+ overlapSeconds?: ConstructorParameters<typeof SpeechToTextController>["0"]["overlapSeconds"];
23
+ windowSize?: ConstructorParameters<typeof SpeechToTextController>["0"]["windowSize"];
24
+ streamingConfig?: ConstructorParameters<typeof SpeechToTextController>["0"]["streamingConfig"];
25
+ preventLoad?: boolean;
26
+ }) => SpeechToTextModule;
27
+ export {};
@@ -0,0 +1,49 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { SpeechToTextController } from '../../controllers/SpeechToTextController';
3
+ export const useSpeechToText = ({ model, overlapSeconds, windowSize, streamingConfig, preventLoad = false, }) => {
4
+ const [sequence, setSequence] = useState('');
5
+ const [isReady, setIsReady] = useState(false);
6
+ const [downloadProgress, setDownloadProgress] = useState(0);
7
+ const [isGenerating, setIsGenerating] = useState(false);
8
+ const [error, setError] = useState();
9
+ const controllerInstance = useMemo(() => new SpeechToTextController({
10
+ transcribeCallback: setSequence,
11
+ isReadyCallback: setIsReady,
12
+ isGeneratingCallback: setIsGenerating,
13
+ onErrorCallback: setError,
14
+ }), []);
15
+ useEffect(() => {
16
+ controllerInstance.configureStreaming(overlapSeconds, windowSize, streamingConfig);
17
+ }, [controllerInstance, overlapSeconds, windowSize, streamingConfig]);
18
+ useEffect(() => {
19
+ const loadModel = async () => {
20
+ await controllerInstance.load({
21
+ modelName: model.modelName,
22
+ encoderSource: model.encoderSource,
23
+ decoderSource: model.decoderSource,
24
+ tokenizerSource: model.tokenizerSource,
25
+ onDownloadProgressCallback: setDownloadProgress,
26
+ });
27
+ };
28
+ if (!preventLoad) {
29
+ loadModel();
30
+ }
31
+ }, [
32
+ controllerInstance,
33
+ model.modelName,
34
+ model.encoderSource,
35
+ model.decoderSource,
36
+ model.tokenizerSource,
37
+ preventLoad,
38
+ ]);
39
+ return {
40
+ isReady,
41
+ isGenerating,
42
+ downloadProgress,
43
+ configureStreaming: controllerInstance.configureStreaming,
44
+ sequence,
45
+ error,
46
+ transcribe: (waveform, audioLanguage) => controllerInstance.transcribe(waveform, audioLanguage),
47
+ streamingTranscribe: (streamAction, waveform, audioLanguage) => controllerInstance.streamingTranscribe(streamAction, waveform, audioLanguage),
48
+ };
49
+ };
@@ -0,0 +1,16 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ interface Props {
3
+ model: {
4
+ modelSource: ResourceSource;
5
+ tokenizerSource: ResourceSource;
6
+ };
7
+ preventLoad?: boolean;
8
+ }
9
+ export declare const useTextEmbeddings: ({ model, preventLoad }: Props) => {
10
+ error: string | null;
11
+ isReady: boolean;
12
+ isGenerating: boolean;
13
+ downloadProgress: number;
14
+ forward: (input: string) => Promise<Float32Array<ArrayBufferLike>>;
15
+ };
16
+ export {};
@@ -0,0 +1,7 @@
1
+ import { TextEmbeddingsModule } from '../../modules/natural_language_processing/TextEmbeddingsModule';
2
+ import { useNonStaticModule } from '../useNonStaticModule';
3
+ export const useTextEmbeddings = ({ model, preventLoad = false }) => useNonStaticModule({
4
+ module: TextEmbeddingsModule,
5
+ model,
6
+ preventLoad,
7
+ });
@@ -0,0 +1,17 @@
1
+ import { ResourceSource } from '../../types/common';
2
+ export declare const useTokenizer: ({ tokenizer, preventLoad, }: {
3
+ tokenizer: {
4
+ tokenizerSource: ResourceSource;
5
+ };
6
+ preventLoad?: boolean;
7
+ }) => {
8
+ error: string | null;
9
+ isReady: boolean;
10
+ isGenerating: boolean;
11
+ downloadProgress: number;
12
+ decode: (tokens: number[], skipSpecialTokens?: boolean | undefined) => Promise<Promise<any>>;
13
+ encode: (s: string) => Promise<Promise<any>>;
14
+ getVocabSize: () => Promise<Promise<number>>;
15
+ idToToken: (tokenId: number) => Promise<Promise<string>>;
16
+ tokenToId: (token: string) => Promise<Promise<number>>;
17
+ };
@@ -0,0 +1,52 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { TokenizerModule } from '../../modules/natural_language_processing/TokenizerModule';
3
+ import { ETError, getError } from '../../Error';
4
+ export const useTokenizer = ({ tokenizer, preventLoad = false, }) => {
5
+ const [error, setError] = useState(null);
6
+ const [isReady, setIsReady] = useState(false);
7
+ const [isGenerating, setIsGenerating] = useState(false);
8
+ const [downloadProgress, setDownloadProgress] = useState(0);
9
+ const _tokenizer = useMemo(() => new TokenizerModule(), []);
10
+ useEffect(() => {
11
+ if (preventLoad)
12
+ return;
13
+ (async () => {
14
+ setDownloadProgress(0);
15
+ setError(null);
16
+ try {
17
+ setIsReady(false);
18
+ await _tokenizer.load({ tokenizerSource: tokenizer.tokenizerSource }, setDownloadProgress);
19
+ setIsReady(true);
20
+ }
21
+ catch (err) {
22
+ setError(err.message);
23
+ }
24
+ })();
25
+ }, [_tokenizer, tokenizer.tokenizerSource, preventLoad]);
26
+ const stateWrapper = (fn) => {
27
+ return (...args) => {
28
+ if (!isReady)
29
+ throw new Error(getError(ETError.ModuleNotLoaded));
30
+ if (isGenerating)
31
+ throw new Error(getError(ETError.ModelGenerating));
32
+ try {
33
+ setIsGenerating(true);
34
+ return fn.apply(_tokenizer, args);
35
+ }
36
+ finally {
37
+ setIsGenerating(false);
38
+ }
39
+ };
40
+ };
41
+ return {
42
+ error,
43
+ isReady,
44
+ isGenerating,
45
+ downloadProgress,
46
+ decode: stateWrapper(TokenizerModule.prototype.decode),
47
+ encode: stateWrapper(TokenizerModule.prototype.encode),
48
+ getVocabSize: stateWrapper(TokenizerModule.prototype.getVocabSize),
49
+ idToToken: stateWrapper(TokenizerModule.prototype.idToToken),
50
+ tokenToId: stateWrapper(TokenizerModule.prototype.tokenToId),
51
+ };
52
+ };