react-native-web-serial-api 0.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.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +147 -0
  3. package/android/build.gradle +62 -0
  4. package/android/gradle.properties +6 -0
  5. package/android/src/main/AndroidManifest.xml +21 -0
  6. package/android/src/main/java/dev/webserialapi/NativeUsbSerialModule.java +704 -0
  7. package/android/src/main/java/dev/webserialapi/NativeUsbSerialPackage.java +46 -0
  8. package/android/src/main/java/dev/webserialapi/PortPickerActivity.java +235 -0
  9. package/android/src/main/java/dev/webserialapi/UsbDetachReceiver.java +37 -0
  10. package/android/src/main/res/xml/device_filter.xml +13 -0
  11. package/babel.config.js +3 -0
  12. package/biome.json +35 -0
  13. package/example/.watchmanconfig +1 -0
  14. package/example/App.tsx +71 -0
  15. package/example/__tests__/App.test.tsx +16 -0
  16. package/example/android/app/build.gradle +120 -0
  17. package/example/android/app/debug.keystore +0 -0
  18. package/example/android/app/proguard-rules.pro +10 -0
  19. package/example/android/app/src/debug/AndroidManifest.xml +9 -0
  20. package/example/android/app/src/main/AndroidManifest.xml +38 -0
  21. package/example/android/app/src/main/java/dev/uzlopak/MainActivity.kt +22 -0
  22. package/example/android/app/src/main/java/dev/uzlopak/MainApplication.kt +41 -0
  23. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +37 -0
  24. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  25. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  26. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  27. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  28. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  29. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  30. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  31. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  32. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  33. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  34. package/example/android/app/src/main/res/values/strings.xml +3 -0
  35. package/example/android/app/src/main/res/values/styles.xml +9 -0
  36. package/example/android/build.gradle +22 -0
  37. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  38. package/example/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  39. package/example/android/gradle.properties +47 -0
  40. package/example/android/gradlew +252 -0
  41. package/example/android/gradlew.bat +94 -0
  42. package/example/android/settings.gradle +6 -0
  43. package/example/app.json +4 -0
  44. package/example/babel.config.js +21 -0
  45. package/example/biome.json +47 -0
  46. package/example/deploy.sh +11 -0
  47. package/example/index.html +26 -0
  48. package/example/index.js +9 -0
  49. package/example/index.web.js +8 -0
  50. package/example/jest.config.js +12 -0
  51. package/example/metro.config.js +58 -0
  52. package/example/package-lock.json +14510 -0
  53. package/example/package.json +48 -0
  54. package/example/react-native.config.js +17 -0
  55. package/example/src/components/AppBar.tsx +73 -0
  56. package/example/src/components/Menu.tsx +90 -0
  57. package/example/src/components/SingleChoiceDialog.tsx +120 -0
  58. package/example/src/screens/ConnectScreen.tsx +195 -0
  59. package/example/src/screens/DevicesScreen.tsx +141 -0
  60. package/example/src/screens/TerminalScreen.tsx +564 -0
  61. package/example/src/settings.ts +43 -0
  62. package/example/src/theme.ts +19 -0
  63. package/example/src/util/TextUtil.ts +129 -0
  64. package/example/tsconfig.json +10 -0
  65. package/example/vite.config.mjs +55 -0
  66. package/lib/commonjs/NativeUsbSerial.js +11 -0
  67. package/lib/commonjs/NativeUsbSerial.js.map +1 -0
  68. package/lib/commonjs/NativeUsbSerial.web.js +12 -0
  69. package/lib/commonjs/NativeUsbSerial.web.js.map +1 -0
  70. package/lib/commonjs/UsbSerial.js +149 -0
  71. package/lib/commonjs/UsbSerial.js.map +1 -0
  72. package/lib/commonjs/WebSerial.js +852 -0
  73. package/lib/commonjs/WebSerial.js.map +1 -0
  74. package/lib/commonjs/index.js +44 -0
  75. package/lib/commonjs/index.js.map +1 -0
  76. package/lib/commonjs/package.json +1 -0
  77. package/lib/commonjs/serial.android.js +13 -0
  78. package/lib/commonjs/serial.android.js.map +1 -0
  79. package/lib/commonjs/serial.js +13 -0
  80. package/lib/commonjs/serial.js.map +1 -0
  81. package/lib/commonjs/serial.web.js +11 -0
  82. package/lib/commonjs/serial.web.js.map +1 -0
  83. package/lib/typescript/src/NativeUsbSerial.d.ts +51 -0
  84. package/lib/typescript/src/NativeUsbSerial.d.ts.map +1 -0
  85. package/lib/typescript/src/NativeUsbSerial.web.d.ts +3 -0
  86. package/lib/typescript/src/NativeUsbSerial.web.d.ts.map +1 -0
  87. package/lib/typescript/src/UsbSerial.d.ts +97 -0
  88. package/lib/typescript/src/UsbSerial.d.ts.map +1 -0
  89. package/lib/typescript/src/WebSerial.d.ts +236 -0
  90. package/lib/typescript/src/WebSerial.d.ts.map +1 -0
  91. package/lib/typescript/src/index.d.ts +7 -0
  92. package/lib/typescript/src/index.d.ts.map +1 -0
  93. package/lib/typescript/src/serial.android.d.ts +2 -0
  94. package/lib/typescript/src/serial.android.d.ts.map +1 -0
  95. package/lib/typescript/src/serial.d.ts +2 -0
  96. package/lib/typescript/src/serial.d.ts.map +1 -0
  97. package/lib/typescript/src/serial.web.d.ts +4 -0
  98. package/lib/typescript/src/serial.web.d.ts.map +1 -0
  99. package/package.json +78 -0
  100. package/react-native.config.js +9 -0
  101. package/scripts/deploy-release.sh +127 -0
  102. package/src/NativeUsbSerial.ts +124 -0
  103. package/src/NativeUsbSerial.web.ts +5 -0
  104. package/src/UsbSerial.ts +305 -0
  105. package/src/WebSerial.ts +1084 -0
  106. package/src/index.ts +23 -0
  107. package/src/lib/dom-exception.ts +161 -0
  108. package/src/lib/event-target.ts +170 -0
  109. package/src/lib/promise.ts +19 -0
  110. package/src/serial.android.ts +1 -0
  111. package/src/serial.ts +1 -0
  112. package/src/serial.web.ts +6 -0
  113. package/tsconfig.build.json +7 -0
  114. package/tsconfig.json +20 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @format
3
+ */
4
+
5
+ import {AppRegistry} from 'react-native';
6
+ import App from './App';
7
+ import {name as appName} from './app.json';
8
+
9
+ AppRegistry.registerComponent(appName, () => App);
@@ -0,0 +1,8 @@
1
+ import {AppRegistry} from 'react-native';
2
+ import App from './App';
3
+ import {name as appName} from './app.json';
4
+
5
+ AppRegistry.registerComponent(appName, () => App);
6
+ AppRegistry.runApplication(appName, {
7
+ rootTag: document.getElementById('root'),
8
+ });
@@ -0,0 +1,12 @@
1
+ module.exports = {
2
+ // RN 0.85 moved the Jest preset out of `react-native` into its own package.
3
+ preset: '@react-native/jest-preset',
4
+ // The library is consumed from ../src (via the babel module-resolver alias),
5
+ // which physically lives outside this folder and would otherwise resolve a
6
+ // second, un-mocked copy of react-native / react from the repo root. Pin both
7
+ // to the example's copy so the RN jest preset's native mocks apply everywhere.
8
+ moduleNameMapper: {
9
+ '^react-native$': '<rootDir>/node_modules/react-native',
10
+ '^react$': '<rootDir>/node_modules/react',
11
+ },
12
+ };
@@ -0,0 +1,58 @@
1
+ const path = require('node:path');
2
+ const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
3
+
4
+ const pkg = require('../package.json');
5
+
6
+ const root = path.resolve(__dirname, '..');
7
+ const modules = Object.keys({...pkg.peerDependencies});
8
+
9
+ // Absolute paths to the example's single copy of each peer dependency.
10
+ const peerModulePaths = modules.reduce((acc, name) => {
11
+ acc[name] = path.resolve(__dirname, 'node_modules', name);
12
+ return acc;
13
+ }, {});
14
+
15
+ /**
16
+ * Metro configuration for the example app inside the library monorepo.
17
+ *
18
+ * - watch the repo root so edits to the library's `src/` hot-reload here
19
+ * - force the library's peer deps (react / react-native) to resolve to the
20
+ * example's single copy. This is critical: the library source lives at the
21
+ * repo root (above this folder) and there is ALSO a react-native installed at
22
+ * the repo root (the library's own devDependency). Without forcing a single
23
+ * copy, `src/WebSerial.ts` resolves the root react-native while the app uses
24
+ * the example's copy — two separate RCTDeviceEventEmitter singletons, so
25
+ * native 'data' events are emitted into one and listened for on the other,
26
+ * and nothing is received. extraNodeModules alone does NOT fix this because
27
+ * the importing file is outside the project root, so we also intercept via
28
+ * resolveRequest.
29
+ *
30
+ * https://reactnative.dev/docs/metro
31
+ */
32
+ const config = {
33
+ watchFolders: [root],
34
+ resolver: {
35
+ nodeModulesPaths: [
36
+ path.resolve(__dirname, 'node_modules'),
37
+ path.resolve(root, 'node_modules'),
38
+ ],
39
+ extraNodeModules: peerModulePaths,
40
+ resolveRequest: (context, moduleName, platform) => {
41
+ // Pin every peer dependency (and its subpaths) to the example's copy,
42
+ // regardless of which file imports it.
43
+ for (const name of modules) {
44
+ if (moduleName === name || moduleName.startsWith(`${name}/`)) {
45
+ const rest = moduleName.slice(name.length); // '' or '/subpath'
46
+ return context.resolveRequest(
47
+ context,
48
+ peerModulePaths[name] + rest,
49
+ platform,
50
+ );
51
+ }
52
+ }
53
+ return context.resolveRequest(context, moduleName, platform);
54
+ },
55
+ },
56
+ };
57
+
58
+ module.exports = mergeConfig(getDefaultConfig(__dirname), config);