react-native-kookit 0.1.8 → 0.1.9
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/package.json +14 -2
- package/.eslintrc.js +0 -5
- package/app.json +0 -5
- package/package-with-plugin.json +0 -51
- package/plugin/package-lock.json +0 -763
- package/plugin/src/withVolumeKeyIntercept.ts +0 -184
- package/plugin/tsconfig.json +0 -18
- package/plugin/tsconfig.tsbuildinfo +0 -1
- package/src/ReactNativeKookit.types.ts +0 -24
- package/src/ReactNativeKookitModule.ts +0 -36
- package/src/ReactNativeKookitModule.web.ts +0 -48
- package/src/ReactNativeKookitView.tsx +0 -11
- package/src/ReactNativeKookitView.web.tsx +0 -15
- package/src/index.ts +0 -5
- package/test-volume-keys.sh +0 -25
- package/tsconfig.json +0 -9
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-kookit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "React Native module for intercepting volume button presses on iOS and Android",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "expo-module build",
|
|
9
9
|
"build-plugin": "cd plugin && npm install && npm run build",
|
|
10
|
+
"clean-plugin-deps": "rm -rf plugin/node_modules plugin/package-lock.json",
|
|
10
11
|
"clean": "expo-module clean",
|
|
11
12
|
"lint": "expo-module lint",
|
|
12
13
|
"test": "expo-module test",
|
|
13
14
|
"prepare": "expo-module prepare",
|
|
14
|
-
"prepublishOnly": "expo-module prepublishOnly && npm run build-plugin",
|
|
15
|
+
"prepublishOnly": "expo-module prepublishOnly && npm run build-plugin && npm run clean-plugin-deps",
|
|
15
16
|
"expo-module": "expo-module",
|
|
16
17
|
"open:ios": "xed example/ios",
|
|
17
18
|
"open:android": "open -a \"Android Studio\" example/android",
|
|
@@ -34,6 +35,17 @@
|
|
|
34
35
|
"author": "troyeguo <13820674+troyeguo@users.noreply.github.com> (https://github.com/troyeguo)",
|
|
35
36
|
"license": "MIT",
|
|
36
37
|
"homepage": "https://github.com/troyeguo/react-native-kookit#readme",
|
|
38
|
+
"files": [
|
|
39
|
+
"build",
|
|
40
|
+
"android/src",
|
|
41
|
+
"android/build.gradle",
|
|
42
|
+
"ios",
|
|
43
|
+
"app.plugin.js",
|
|
44
|
+
"expo-module.config.json",
|
|
45
|
+
"plugin/build",
|
|
46
|
+
"plugin/package.json",
|
|
47
|
+
"*.md"
|
|
48
|
+
],
|
|
37
49
|
"dependencies": {
|
|
38
50
|
"@expo/config-plugins": "^8.0.0",
|
|
39
51
|
"expo": "~53.0.20",
|
package/.eslintrc.js
DELETED
package/app.json
DELETED
package/package-with-plugin.json
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "react-native-kookit",
|
|
3
|
-
"version": "0.1.2",
|
|
4
|
-
"description": "React Native module for intercepting volume button presses on iOS and Android",
|
|
5
|
-
"main": "build/index.js",
|
|
6
|
-
"types": "build/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "expo-module build",
|
|
9
|
-
"clean": "expo-module clean",
|
|
10
|
-
"lint": "expo-module lint",
|
|
11
|
-
"test": "expo-module test",
|
|
12
|
-
"prepare": "expo-module prepare",
|
|
13
|
-
"prepublishOnly": "expo-module prepublishOnly",
|
|
14
|
-
"expo-module": "expo-module",
|
|
15
|
-
"open:ios": "xed example/ios",
|
|
16
|
-
"open:android": "open -a \"Android Studio\" example/android"
|
|
17
|
-
},
|
|
18
|
-
"keywords": [
|
|
19
|
-
"react-native",
|
|
20
|
-
"expo",
|
|
21
|
-
"volume-keys",
|
|
22
|
-
"volume-buttons",
|
|
23
|
-
"key-interception",
|
|
24
|
-
"react-native-kookit",
|
|
25
|
-
"ReactNativeKookit"
|
|
26
|
-
],
|
|
27
|
-
"repository": "https://github.com/troyeguo/react-native-kookit",
|
|
28
|
-
"bugs": {
|
|
29
|
-
"url": "https://github.com/troyeguo/react-native-kookit/issues"
|
|
30
|
-
},
|
|
31
|
-
"author": "troyeguo <13820674+troyeguo@users.noreply.github.com> (https://github.com/troyeguo)",
|
|
32
|
-
"license": "MIT",
|
|
33
|
-
"homepage": "https://github.com/troyeguo/react-native-kookit#readme",
|
|
34
|
-
"dependencies": {},
|
|
35
|
-
"devDependencies": {
|
|
36
|
-
"@types/react": "~19.0.0",
|
|
37
|
-
"expo-module-scripts": "^4.1.10",
|
|
38
|
-
"expo": "~53.0.0",
|
|
39
|
-
"react-native": "0.79.1"
|
|
40
|
-
},
|
|
41
|
-
"peerDependencies": {
|
|
42
|
-
"expo": "*",
|
|
43
|
-
"react": "*",
|
|
44
|
-
"react-native": "*"
|
|
45
|
-
},
|
|
46
|
-
"expo": {
|
|
47
|
-
"android": {
|
|
48
|
-
"configPlugins": ["./plugin/build/withVolumeKeyIntercept.js"]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
package/plugin/package-lock.json
DELETED
|
@@ -1,763 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "react-native-kookit-plugin",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"lockfileVersion": 3,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"packages": {
|
|
7
|
-
"": {
|
|
8
|
-
"name": "react-native-kookit-plugin",
|
|
9
|
-
"version": "1.0.0",
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@expo/config-plugins": "^8.0.0"
|
|
12
|
-
},
|
|
13
|
-
"devDependencies": {
|
|
14
|
-
"@types/node": "^20.0.0",
|
|
15
|
-
"typescript": "^5.0.0"
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"node_modules/@babel/code-frame": {
|
|
19
|
-
"version": "7.10.4",
|
|
20
|
-
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
|
|
21
|
-
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
|
|
22
|
-
"license": "MIT",
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"@babel/highlight": "^7.10.4"
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
"node_modules/@babel/helper-validator-identifier": {
|
|
28
|
-
"version": "7.27.1",
|
|
29
|
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
30
|
-
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
|
31
|
-
"license": "MIT",
|
|
32
|
-
"engines": {
|
|
33
|
-
"node": ">=6.9.0"
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"node_modules/@babel/highlight": {
|
|
37
|
-
"version": "7.25.9",
|
|
38
|
-
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz",
|
|
39
|
-
"integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==",
|
|
40
|
-
"license": "MIT",
|
|
41
|
-
"dependencies": {
|
|
42
|
-
"@babel/helper-validator-identifier": "^7.25.9",
|
|
43
|
-
"chalk": "^2.4.2",
|
|
44
|
-
"js-tokens": "^4.0.0",
|
|
45
|
-
"picocolors": "^1.0.0"
|
|
46
|
-
},
|
|
47
|
-
"engines": {
|
|
48
|
-
"node": ">=6.9.0"
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"node_modules/@babel/highlight/node_modules/ansi-styles": {
|
|
52
|
-
"version": "3.2.1",
|
|
53
|
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
|
54
|
-
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
|
55
|
-
"license": "MIT",
|
|
56
|
-
"dependencies": {
|
|
57
|
-
"color-convert": "^1.9.0"
|
|
58
|
-
},
|
|
59
|
-
"engines": {
|
|
60
|
-
"node": ">=4"
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"node_modules/@babel/highlight/node_modules/chalk": {
|
|
64
|
-
"version": "2.4.2",
|
|
65
|
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
|
66
|
-
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
|
67
|
-
"license": "MIT",
|
|
68
|
-
"dependencies": {
|
|
69
|
-
"ansi-styles": "^3.2.1",
|
|
70
|
-
"escape-string-regexp": "^1.0.5",
|
|
71
|
-
"supports-color": "^5.3.0"
|
|
72
|
-
},
|
|
73
|
-
"engines": {
|
|
74
|
-
"node": ">=4"
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
"node_modules/@babel/highlight/node_modules/color-convert": {
|
|
78
|
-
"version": "1.9.3",
|
|
79
|
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
|
80
|
-
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
|
81
|
-
"license": "MIT",
|
|
82
|
-
"dependencies": {
|
|
83
|
-
"color-name": "1.1.3"
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
"node_modules/@babel/highlight/node_modules/color-name": {
|
|
87
|
-
"version": "1.1.3",
|
|
88
|
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
|
89
|
-
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
|
90
|
-
"license": "MIT"
|
|
91
|
-
},
|
|
92
|
-
"node_modules/@babel/highlight/node_modules/has-flag": {
|
|
93
|
-
"version": "3.0.0",
|
|
94
|
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
|
95
|
-
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
|
96
|
-
"license": "MIT",
|
|
97
|
-
"engines": {
|
|
98
|
-
"node": ">=4"
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
"node_modules/@babel/highlight/node_modules/supports-color": {
|
|
102
|
-
"version": "5.5.0",
|
|
103
|
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
|
104
|
-
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
|
105
|
-
"license": "MIT",
|
|
106
|
-
"dependencies": {
|
|
107
|
-
"has-flag": "^3.0.0"
|
|
108
|
-
},
|
|
109
|
-
"engines": {
|
|
110
|
-
"node": ">=4"
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
"node_modules/@expo/config-plugins": {
|
|
114
|
-
"version": "8.0.11",
|
|
115
|
-
"resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-8.0.11.tgz",
|
|
116
|
-
"integrity": "sha512-oALE1HwnLFthrobAcC9ocnR9KXLzfWEjgIe4CPe+rDsfC6GDs8dGYCXfRFoCEzoLN4TGYs9RdZ8r0KoCcNrm2A==",
|
|
117
|
-
"license": "MIT",
|
|
118
|
-
"dependencies": {
|
|
119
|
-
"@expo/config-types": "^51.0.3",
|
|
120
|
-
"@expo/json-file": "~8.3.0",
|
|
121
|
-
"@expo/plist": "^0.1.0",
|
|
122
|
-
"@expo/sdk-runtime-versions": "^1.0.0",
|
|
123
|
-
"chalk": "^4.1.2",
|
|
124
|
-
"debug": "^4.3.1",
|
|
125
|
-
"find-up": "~5.0.0",
|
|
126
|
-
"getenv": "^1.0.0",
|
|
127
|
-
"glob": "7.1.6",
|
|
128
|
-
"resolve-from": "^5.0.0",
|
|
129
|
-
"semver": "^7.5.4",
|
|
130
|
-
"slash": "^3.0.0",
|
|
131
|
-
"slugify": "^1.6.6",
|
|
132
|
-
"xcode": "^3.0.1",
|
|
133
|
-
"xml2js": "0.6.0"
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
"node_modules/@expo/config-types": {
|
|
137
|
-
"version": "51.0.3",
|
|
138
|
-
"resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-51.0.3.tgz",
|
|
139
|
-
"integrity": "sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA==",
|
|
140
|
-
"license": "MIT"
|
|
141
|
-
},
|
|
142
|
-
"node_modules/@expo/json-file": {
|
|
143
|
-
"version": "8.3.3",
|
|
144
|
-
"resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.3.3.tgz",
|
|
145
|
-
"integrity": "sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==",
|
|
146
|
-
"license": "MIT",
|
|
147
|
-
"dependencies": {
|
|
148
|
-
"@babel/code-frame": "~7.10.4",
|
|
149
|
-
"json5": "^2.2.2",
|
|
150
|
-
"write-file-atomic": "^2.3.0"
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
"node_modules/@expo/plist": {
|
|
154
|
-
"version": "0.1.3",
|
|
155
|
-
"resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.1.3.tgz",
|
|
156
|
-
"integrity": "sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==",
|
|
157
|
-
"license": "MIT",
|
|
158
|
-
"dependencies": {
|
|
159
|
-
"@xmldom/xmldom": "~0.7.7",
|
|
160
|
-
"base64-js": "^1.2.3",
|
|
161
|
-
"xmlbuilder": "^14.0.0"
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
"node_modules/@expo/sdk-runtime-versions": {
|
|
165
|
-
"version": "1.0.0",
|
|
166
|
-
"resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
|
|
167
|
-
"integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==",
|
|
168
|
-
"license": "MIT"
|
|
169
|
-
},
|
|
170
|
-
"node_modules/@types/node": {
|
|
171
|
-
"version": "20.19.10",
|
|
172
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.10.tgz",
|
|
173
|
-
"integrity": "sha512-iAFpG6DokED3roLSP0K+ybeDdIX6Bc0Vd3mLW5uDqThPWtNos3E+EqOM11mPQHKzfWHqEBuLjIlsBQQ8CsISmQ==",
|
|
174
|
-
"dev": true,
|
|
175
|
-
"license": "MIT",
|
|
176
|
-
"dependencies": {
|
|
177
|
-
"undici-types": "~6.21.0"
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
"node_modules/@xmldom/xmldom": {
|
|
181
|
-
"version": "0.7.13",
|
|
182
|
-
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz",
|
|
183
|
-
"integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==",
|
|
184
|
-
"deprecated": "this version is no longer supported, please update to at least 0.8.*",
|
|
185
|
-
"license": "MIT",
|
|
186
|
-
"engines": {
|
|
187
|
-
"node": ">=10.0.0"
|
|
188
|
-
}
|
|
189
|
-
},
|
|
190
|
-
"node_modules/ansi-styles": {
|
|
191
|
-
"version": "4.3.0",
|
|
192
|
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
193
|
-
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
194
|
-
"license": "MIT",
|
|
195
|
-
"dependencies": {
|
|
196
|
-
"color-convert": "^2.0.1"
|
|
197
|
-
},
|
|
198
|
-
"engines": {
|
|
199
|
-
"node": ">=8"
|
|
200
|
-
},
|
|
201
|
-
"funding": {
|
|
202
|
-
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
"node_modules/balanced-match": {
|
|
206
|
-
"version": "1.0.2",
|
|
207
|
-
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
208
|
-
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
|
209
|
-
"license": "MIT"
|
|
210
|
-
},
|
|
211
|
-
"node_modules/base64-js": {
|
|
212
|
-
"version": "1.5.1",
|
|
213
|
-
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
|
214
|
-
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
|
215
|
-
"funding": [
|
|
216
|
-
{
|
|
217
|
-
"type": "github",
|
|
218
|
-
"url": "https://github.com/sponsors/feross"
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
"type": "patreon",
|
|
222
|
-
"url": "https://www.patreon.com/feross"
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
"type": "consulting",
|
|
226
|
-
"url": "https://feross.org/support"
|
|
227
|
-
}
|
|
228
|
-
],
|
|
229
|
-
"license": "MIT"
|
|
230
|
-
},
|
|
231
|
-
"node_modules/big-integer": {
|
|
232
|
-
"version": "1.6.52",
|
|
233
|
-
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
|
|
234
|
-
"integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
|
|
235
|
-
"license": "Unlicense",
|
|
236
|
-
"engines": {
|
|
237
|
-
"node": ">=0.6"
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
"node_modules/bplist-creator": {
|
|
241
|
-
"version": "0.1.0",
|
|
242
|
-
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
|
|
243
|
-
"integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
|
|
244
|
-
"license": "MIT",
|
|
245
|
-
"dependencies": {
|
|
246
|
-
"stream-buffers": "2.2.x"
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
"node_modules/bplist-parser": {
|
|
250
|
-
"version": "0.3.1",
|
|
251
|
-
"resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
|
|
252
|
-
"integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==",
|
|
253
|
-
"license": "MIT",
|
|
254
|
-
"dependencies": {
|
|
255
|
-
"big-integer": "1.6.x"
|
|
256
|
-
},
|
|
257
|
-
"engines": {
|
|
258
|
-
"node": ">= 5.10.0"
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
"node_modules/brace-expansion": {
|
|
262
|
-
"version": "1.1.12",
|
|
263
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
|
264
|
-
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
|
265
|
-
"license": "MIT",
|
|
266
|
-
"dependencies": {
|
|
267
|
-
"balanced-match": "^1.0.0",
|
|
268
|
-
"concat-map": "0.0.1"
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
"node_modules/chalk": {
|
|
272
|
-
"version": "4.1.2",
|
|
273
|
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
|
274
|
-
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
275
|
-
"license": "MIT",
|
|
276
|
-
"dependencies": {
|
|
277
|
-
"ansi-styles": "^4.1.0",
|
|
278
|
-
"supports-color": "^7.1.0"
|
|
279
|
-
},
|
|
280
|
-
"engines": {
|
|
281
|
-
"node": ">=10"
|
|
282
|
-
},
|
|
283
|
-
"funding": {
|
|
284
|
-
"url": "https://github.com/chalk/chalk?sponsor=1"
|
|
285
|
-
}
|
|
286
|
-
},
|
|
287
|
-
"node_modules/color-convert": {
|
|
288
|
-
"version": "2.0.1",
|
|
289
|
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
290
|
-
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
291
|
-
"license": "MIT",
|
|
292
|
-
"dependencies": {
|
|
293
|
-
"color-name": "~1.1.4"
|
|
294
|
-
},
|
|
295
|
-
"engines": {
|
|
296
|
-
"node": ">=7.0.0"
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
"node_modules/color-name": {
|
|
300
|
-
"version": "1.1.4",
|
|
301
|
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
302
|
-
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
303
|
-
"license": "MIT"
|
|
304
|
-
},
|
|
305
|
-
"node_modules/concat-map": {
|
|
306
|
-
"version": "0.0.1",
|
|
307
|
-
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
|
308
|
-
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
|
309
|
-
"license": "MIT"
|
|
310
|
-
},
|
|
311
|
-
"node_modules/debug": {
|
|
312
|
-
"version": "4.4.1",
|
|
313
|
-
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
|
|
314
|
-
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
|
|
315
|
-
"license": "MIT",
|
|
316
|
-
"dependencies": {
|
|
317
|
-
"ms": "^2.1.3"
|
|
318
|
-
},
|
|
319
|
-
"engines": {
|
|
320
|
-
"node": ">=6.0"
|
|
321
|
-
},
|
|
322
|
-
"peerDependenciesMeta": {
|
|
323
|
-
"supports-color": {
|
|
324
|
-
"optional": true
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
"node_modules/escape-string-regexp": {
|
|
329
|
-
"version": "1.0.5",
|
|
330
|
-
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
|
331
|
-
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
|
|
332
|
-
"license": "MIT",
|
|
333
|
-
"engines": {
|
|
334
|
-
"node": ">=0.8.0"
|
|
335
|
-
}
|
|
336
|
-
},
|
|
337
|
-
"node_modules/find-up": {
|
|
338
|
-
"version": "5.0.0",
|
|
339
|
-
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
|
340
|
-
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
|
341
|
-
"license": "MIT",
|
|
342
|
-
"dependencies": {
|
|
343
|
-
"locate-path": "^6.0.0",
|
|
344
|
-
"path-exists": "^4.0.0"
|
|
345
|
-
},
|
|
346
|
-
"engines": {
|
|
347
|
-
"node": ">=10"
|
|
348
|
-
},
|
|
349
|
-
"funding": {
|
|
350
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
351
|
-
}
|
|
352
|
-
},
|
|
353
|
-
"node_modules/fs.realpath": {
|
|
354
|
-
"version": "1.0.0",
|
|
355
|
-
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
|
356
|
-
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
|
357
|
-
"license": "ISC"
|
|
358
|
-
},
|
|
359
|
-
"node_modules/getenv": {
|
|
360
|
-
"version": "1.0.0",
|
|
361
|
-
"resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz",
|
|
362
|
-
"integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==",
|
|
363
|
-
"license": "MIT",
|
|
364
|
-
"engines": {
|
|
365
|
-
"node": ">=6"
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
"node_modules/glob": {
|
|
369
|
-
"version": "7.1.6",
|
|
370
|
-
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
|
371
|
-
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
|
372
|
-
"deprecated": "Glob versions prior to v9 are no longer supported",
|
|
373
|
-
"license": "ISC",
|
|
374
|
-
"dependencies": {
|
|
375
|
-
"fs.realpath": "^1.0.0",
|
|
376
|
-
"inflight": "^1.0.4",
|
|
377
|
-
"inherits": "2",
|
|
378
|
-
"minimatch": "^3.0.4",
|
|
379
|
-
"once": "^1.3.0",
|
|
380
|
-
"path-is-absolute": "^1.0.0"
|
|
381
|
-
},
|
|
382
|
-
"engines": {
|
|
383
|
-
"node": "*"
|
|
384
|
-
},
|
|
385
|
-
"funding": {
|
|
386
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
387
|
-
}
|
|
388
|
-
},
|
|
389
|
-
"node_modules/graceful-fs": {
|
|
390
|
-
"version": "4.2.11",
|
|
391
|
-
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
|
392
|
-
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
|
|
393
|
-
"license": "ISC"
|
|
394
|
-
},
|
|
395
|
-
"node_modules/has-flag": {
|
|
396
|
-
"version": "4.0.0",
|
|
397
|
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
|
398
|
-
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
399
|
-
"license": "MIT",
|
|
400
|
-
"engines": {
|
|
401
|
-
"node": ">=8"
|
|
402
|
-
}
|
|
403
|
-
},
|
|
404
|
-
"node_modules/imurmurhash": {
|
|
405
|
-
"version": "0.1.4",
|
|
406
|
-
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
|
407
|
-
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
|
|
408
|
-
"license": "MIT",
|
|
409
|
-
"engines": {
|
|
410
|
-
"node": ">=0.8.19"
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
"node_modules/inflight": {
|
|
414
|
-
"version": "1.0.6",
|
|
415
|
-
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
|
416
|
-
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
|
417
|
-
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
|
418
|
-
"license": "ISC",
|
|
419
|
-
"dependencies": {
|
|
420
|
-
"once": "^1.3.0",
|
|
421
|
-
"wrappy": "1"
|
|
422
|
-
}
|
|
423
|
-
},
|
|
424
|
-
"node_modules/inherits": {
|
|
425
|
-
"version": "2.0.4",
|
|
426
|
-
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
|
427
|
-
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
428
|
-
"license": "ISC"
|
|
429
|
-
},
|
|
430
|
-
"node_modules/js-tokens": {
|
|
431
|
-
"version": "4.0.0",
|
|
432
|
-
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
|
433
|
-
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
|
434
|
-
"license": "MIT"
|
|
435
|
-
},
|
|
436
|
-
"node_modules/json5": {
|
|
437
|
-
"version": "2.2.3",
|
|
438
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
439
|
-
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
440
|
-
"license": "MIT",
|
|
441
|
-
"bin": {
|
|
442
|
-
"json5": "lib/cli.js"
|
|
443
|
-
},
|
|
444
|
-
"engines": {
|
|
445
|
-
"node": ">=6"
|
|
446
|
-
}
|
|
447
|
-
},
|
|
448
|
-
"node_modules/locate-path": {
|
|
449
|
-
"version": "6.0.0",
|
|
450
|
-
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
|
451
|
-
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
|
452
|
-
"license": "MIT",
|
|
453
|
-
"dependencies": {
|
|
454
|
-
"p-locate": "^5.0.0"
|
|
455
|
-
},
|
|
456
|
-
"engines": {
|
|
457
|
-
"node": ">=10"
|
|
458
|
-
},
|
|
459
|
-
"funding": {
|
|
460
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
461
|
-
}
|
|
462
|
-
},
|
|
463
|
-
"node_modules/minimatch": {
|
|
464
|
-
"version": "3.1.2",
|
|
465
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
466
|
-
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
467
|
-
"license": "ISC",
|
|
468
|
-
"dependencies": {
|
|
469
|
-
"brace-expansion": "^1.1.7"
|
|
470
|
-
},
|
|
471
|
-
"engines": {
|
|
472
|
-
"node": "*"
|
|
473
|
-
}
|
|
474
|
-
},
|
|
475
|
-
"node_modules/ms": {
|
|
476
|
-
"version": "2.1.3",
|
|
477
|
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
|
478
|
-
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
|
479
|
-
"license": "MIT"
|
|
480
|
-
},
|
|
481
|
-
"node_modules/once": {
|
|
482
|
-
"version": "1.4.0",
|
|
483
|
-
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
|
484
|
-
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
|
485
|
-
"license": "ISC",
|
|
486
|
-
"dependencies": {
|
|
487
|
-
"wrappy": "1"
|
|
488
|
-
}
|
|
489
|
-
},
|
|
490
|
-
"node_modules/p-limit": {
|
|
491
|
-
"version": "3.1.0",
|
|
492
|
-
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
|
493
|
-
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
|
494
|
-
"license": "MIT",
|
|
495
|
-
"dependencies": {
|
|
496
|
-
"yocto-queue": "^0.1.0"
|
|
497
|
-
},
|
|
498
|
-
"engines": {
|
|
499
|
-
"node": ">=10"
|
|
500
|
-
},
|
|
501
|
-
"funding": {
|
|
502
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
503
|
-
}
|
|
504
|
-
},
|
|
505
|
-
"node_modules/p-locate": {
|
|
506
|
-
"version": "5.0.0",
|
|
507
|
-
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
|
508
|
-
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
|
509
|
-
"license": "MIT",
|
|
510
|
-
"dependencies": {
|
|
511
|
-
"p-limit": "^3.0.2"
|
|
512
|
-
},
|
|
513
|
-
"engines": {
|
|
514
|
-
"node": ">=10"
|
|
515
|
-
},
|
|
516
|
-
"funding": {
|
|
517
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
518
|
-
}
|
|
519
|
-
},
|
|
520
|
-
"node_modules/path-exists": {
|
|
521
|
-
"version": "4.0.0",
|
|
522
|
-
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
523
|
-
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
|
524
|
-
"license": "MIT",
|
|
525
|
-
"engines": {
|
|
526
|
-
"node": ">=8"
|
|
527
|
-
}
|
|
528
|
-
},
|
|
529
|
-
"node_modules/path-is-absolute": {
|
|
530
|
-
"version": "1.0.1",
|
|
531
|
-
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
|
532
|
-
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
|
533
|
-
"license": "MIT",
|
|
534
|
-
"engines": {
|
|
535
|
-
"node": ">=0.10.0"
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
"node_modules/picocolors": {
|
|
539
|
-
"version": "1.1.1",
|
|
540
|
-
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
541
|
-
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
|
542
|
-
"license": "ISC"
|
|
543
|
-
},
|
|
544
|
-
"node_modules/plist": {
|
|
545
|
-
"version": "3.1.0",
|
|
546
|
-
"resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
|
|
547
|
-
"integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==",
|
|
548
|
-
"license": "MIT",
|
|
549
|
-
"dependencies": {
|
|
550
|
-
"@xmldom/xmldom": "^0.8.8",
|
|
551
|
-
"base64-js": "^1.5.1",
|
|
552
|
-
"xmlbuilder": "^15.1.1"
|
|
553
|
-
},
|
|
554
|
-
"engines": {
|
|
555
|
-
"node": ">=10.4.0"
|
|
556
|
-
}
|
|
557
|
-
},
|
|
558
|
-
"node_modules/plist/node_modules/@xmldom/xmldom": {
|
|
559
|
-
"version": "0.8.10",
|
|
560
|
-
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
|
|
561
|
-
"integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
|
|
562
|
-
"license": "MIT",
|
|
563
|
-
"engines": {
|
|
564
|
-
"node": ">=10.0.0"
|
|
565
|
-
}
|
|
566
|
-
},
|
|
567
|
-
"node_modules/plist/node_modules/xmlbuilder": {
|
|
568
|
-
"version": "15.1.1",
|
|
569
|
-
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
|
|
570
|
-
"integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
|
|
571
|
-
"license": "MIT",
|
|
572
|
-
"engines": {
|
|
573
|
-
"node": ">=8.0"
|
|
574
|
-
}
|
|
575
|
-
},
|
|
576
|
-
"node_modules/resolve-from": {
|
|
577
|
-
"version": "5.0.0",
|
|
578
|
-
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
|
|
579
|
-
"integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
|
|
580
|
-
"license": "MIT",
|
|
581
|
-
"engines": {
|
|
582
|
-
"node": ">=8"
|
|
583
|
-
}
|
|
584
|
-
},
|
|
585
|
-
"node_modules/sax": {
|
|
586
|
-
"version": "1.4.1",
|
|
587
|
-
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
|
|
588
|
-
"integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
|
|
589
|
-
"license": "ISC"
|
|
590
|
-
},
|
|
591
|
-
"node_modules/semver": {
|
|
592
|
-
"version": "7.7.2",
|
|
593
|
-
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
|
594
|
-
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
|
595
|
-
"license": "ISC",
|
|
596
|
-
"bin": {
|
|
597
|
-
"semver": "bin/semver.js"
|
|
598
|
-
},
|
|
599
|
-
"engines": {
|
|
600
|
-
"node": ">=10"
|
|
601
|
-
}
|
|
602
|
-
},
|
|
603
|
-
"node_modules/signal-exit": {
|
|
604
|
-
"version": "3.0.7",
|
|
605
|
-
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
|
|
606
|
-
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
|
607
|
-
"license": "ISC"
|
|
608
|
-
},
|
|
609
|
-
"node_modules/simple-plist": {
|
|
610
|
-
"version": "1.3.1",
|
|
611
|
-
"resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz",
|
|
612
|
-
"integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==",
|
|
613
|
-
"license": "MIT",
|
|
614
|
-
"dependencies": {
|
|
615
|
-
"bplist-creator": "0.1.0",
|
|
616
|
-
"bplist-parser": "0.3.1",
|
|
617
|
-
"plist": "^3.0.5"
|
|
618
|
-
}
|
|
619
|
-
},
|
|
620
|
-
"node_modules/slash": {
|
|
621
|
-
"version": "3.0.0",
|
|
622
|
-
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
|
623
|
-
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
|
624
|
-
"license": "MIT",
|
|
625
|
-
"engines": {
|
|
626
|
-
"node": ">=8"
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
"node_modules/slugify": {
|
|
630
|
-
"version": "1.6.6",
|
|
631
|
-
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz",
|
|
632
|
-
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
|
|
633
|
-
"license": "MIT",
|
|
634
|
-
"engines": {
|
|
635
|
-
"node": ">=8.0.0"
|
|
636
|
-
}
|
|
637
|
-
},
|
|
638
|
-
"node_modules/stream-buffers": {
|
|
639
|
-
"version": "2.2.0",
|
|
640
|
-
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
|
|
641
|
-
"integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
|
|
642
|
-
"license": "Unlicense",
|
|
643
|
-
"engines": {
|
|
644
|
-
"node": ">= 0.10.0"
|
|
645
|
-
}
|
|
646
|
-
},
|
|
647
|
-
"node_modules/supports-color": {
|
|
648
|
-
"version": "7.2.0",
|
|
649
|
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
650
|
-
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
|
651
|
-
"license": "MIT",
|
|
652
|
-
"dependencies": {
|
|
653
|
-
"has-flag": "^4.0.0"
|
|
654
|
-
},
|
|
655
|
-
"engines": {
|
|
656
|
-
"node": ">=8"
|
|
657
|
-
}
|
|
658
|
-
},
|
|
659
|
-
"node_modules/typescript": {
|
|
660
|
-
"version": "5.9.2",
|
|
661
|
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
|
|
662
|
-
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
|
|
663
|
-
"dev": true,
|
|
664
|
-
"license": "Apache-2.0",
|
|
665
|
-
"bin": {
|
|
666
|
-
"tsc": "bin/tsc",
|
|
667
|
-
"tsserver": "bin/tsserver"
|
|
668
|
-
},
|
|
669
|
-
"engines": {
|
|
670
|
-
"node": ">=14.17"
|
|
671
|
-
}
|
|
672
|
-
},
|
|
673
|
-
"node_modules/undici-types": {
|
|
674
|
-
"version": "6.21.0",
|
|
675
|
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
|
|
676
|
-
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
|
|
677
|
-
"dev": true,
|
|
678
|
-
"license": "MIT"
|
|
679
|
-
},
|
|
680
|
-
"node_modules/uuid": {
|
|
681
|
-
"version": "7.0.3",
|
|
682
|
-
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
|
|
683
|
-
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
|
|
684
|
-
"license": "MIT",
|
|
685
|
-
"bin": {
|
|
686
|
-
"uuid": "dist/bin/uuid"
|
|
687
|
-
}
|
|
688
|
-
},
|
|
689
|
-
"node_modules/wrappy": {
|
|
690
|
-
"version": "1.0.2",
|
|
691
|
-
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
692
|
-
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
|
693
|
-
"license": "ISC"
|
|
694
|
-
},
|
|
695
|
-
"node_modules/write-file-atomic": {
|
|
696
|
-
"version": "2.4.3",
|
|
697
|
-
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
|
|
698
|
-
"integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
|
|
699
|
-
"license": "ISC",
|
|
700
|
-
"dependencies": {
|
|
701
|
-
"graceful-fs": "^4.1.11",
|
|
702
|
-
"imurmurhash": "^0.1.4",
|
|
703
|
-
"signal-exit": "^3.0.2"
|
|
704
|
-
}
|
|
705
|
-
},
|
|
706
|
-
"node_modules/xcode": {
|
|
707
|
-
"version": "3.0.1",
|
|
708
|
-
"resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
|
|
709
|
-
"integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
|
|
710
|
-
"license": "Apache-2.0",
|
|
711
|
-
"dependencies": {
|
|
712
|
-
"simple-plist": "^1.1.0",
|
|
713
|
-
"uuid": "^7.0.3"
|
|
714
|
-
},
|
|
715
|
-
"engines": {
|
|
716
|
-
"node": ">=10.0.0"
|
|
717
|
-
}
|
|
718
|
-
},
|
|
719
|
-
"node_modules/xml2js": {
|
|
720
|
-
"version": "0.6.0",
|
|
721
|
-
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz",
|
|
722
|
-
"integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==",
|
|
723
|
-
"license": "MIT",
|
|
724
|
-
"dependencies": {
|
|
725
|
-
"sax": ">=0.6.0",
|
|
726
|
-
"xmlbuilder": "~11.0.0"
|
|
727
|
-
},
|
|
728
|
-
"engines": {
|
|
729
|
-
"node": ">=4.0.0"
|
|
730
|
-
}
|
|
731
|
-
},
|
|
732
|
-
"node_modules/xml2js/node_modules/xmlbuilder": {
|
|
733
|
-
"version": "11.0.1",
|
|
734
|
-
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
|
735
|
-
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
|
|
736
|
-
"license": "MIT",
|
|
737
|
-
"engines": {
|
|
738
|
-
"node": ">=4.0"
|
|
739
|
-
}
|
|
740
|
-
},
|
|
741
|
-
"node_modules/xmlbuilder": {
|
|
742
|
-
"version": "14.0.0",
|
|
743
|
-
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz",
|
|
744
|
-
"integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==",
|
|
745
|
-
"license": "MIT",
|
|
746
|
-
"engines": {
|
|
747
|
-
"node": ">=8.0"
|
|
748
|
-
}
|
|
749
|
-
},
|
|
750
|
-
"node_modules/yocto-queue": {
|
|
751
|
-
"version": "0.1.0",
|
|
752
|
-
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
|
753
|
-
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
|
754
|
-
"license": "MIT",
|
|
755
|
-
"engines": {
|
|
756
|
-
"node": ">=10"
|
|
757
|
-
},
|
|
758
|
-
"funding": {
|
|
759
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
760
|
-
}
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ConfigPlugin,
|
|
3
|
-
withMainActivity,
|
|
4
|
-
AndroidConfig,
|
|
5
|
-
} from "@expo/config-plugins";
|
|
6
|
-
import * as fs from "fs";
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Expo config plugin to automatically modify MainActivity for volume key interception
|
|
11
|
-
*/
|
|
12
|
-
const withVolumeKeyIntercept: ConfigPlugin = (config) => {
|
|
13
|
-
return withMainActivity(config, (config) => {
|
|
14
|
-
config.modResults = addVolumeKeyInterceptionToMainActivity(
|
|
15
|
-
config.modResults
|
|
16
|
-
);
|
|
17
|
-
return config;
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
function addVolumeKeyInterceptionToMainActivity(
|
|
22
|
-
mainActivity: AndroidConfig.Paths.ApplicationProjectFile
|
|
23
|
-
): AndroidConfig.Paths.ApplicationProjectFile {
|
|
24
|
-
const { language, contents } = mainActivity;
|
|
25
|
-
|
|
26
|
-
if (language === "java") {
|
|
27
|
-
mainActivity.contents = addVolumeKeyInterceptionJava(contents);
|
|
28
|
-
} else if (language === "kt") {
|
|
29
|
-
mainActivity.contents = addVolumeKeyInterceptionKotlin(contents);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return mainActivity;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function addVolumeKeyInterceptionKotlin(contents: string): string {
|
|
36
|
-
// Check if already implemented
|
|
37
|
-
if (contents.includes("VolumeKeyInterceptActivity")) {
|
|
38
|
-
return contents;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Add imports
|
|
42
|
-
const imports = [
|
|
43
|
-
"import android.view.KeyEvent",
|
|
44
|
-
"import expo.modules.kookit.VolumeKeyInterceptActivity",
|
|
45
|
-
"import expo.modules.kookit.handleVolumeKeyEvent",
|
|
46
|
-
];
|
|
47
|
-
|
|
48
|
-
let modifiedContents = contents;
|
|
49
|
-
|
|
50
|
-
// Add imports after existing imports
|
|
51
|
-
const lastImportMatch = modifiedContents.match(/import\s+[^\n]+\n(?!import)/);
|
|
52
|
-
if (lastImportMatch) {
|
|
53
|
-
const importInsertIndex =
|
|
54
|
-
lastImportMatch.index! + lastImportMatch[0].length;
|
|
55
|
-
const importsToAdd = imports.filter(
|
|
56
|
-
(imp) => !modifiedContents.includes(imp)
|
|
57
|
-
);
|
|
58
|
-
if (importsToAdd.length > 0) {
|
|
59
|
-
modifiedContents =
|
|
60
|
-
modifiedContents.slice(0, importInsertIndex) +
|
|
61
|
-
importsToAdd.join("\n") +
|
|
62
|
-
"\n" +
|
|
63
|
-
modifiedContents.slice(importInsertIndex);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Add interface to class declaration
|
|
68
|
-
modifiedContents = modifiedContents.replace(
|
|
69
|
-
/class MainActivity\s*:\s*ReactActivity\(\)/,
|
|
70
|
-
"class MainActivity : ReactActivity(), VolumeKeyInterceptActivity"
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
// Add properties and methods
|
|
74
|
-
const volumeKeyMethods = `
|
|
75
|
-
// Volume key interception properties and methods - Added by react-native-kookit
|
|
76
|
-
private var volumeKeyListener: ((Int) -> Unit)? = null
|
|
77
|
-
private var isVolumeKeyInterceptEnabled = false
|
|
78
|
-
|
|
79
|
-
override fun setVolumeKeyListener(listener: ((Int) -> Unit)?) {
|
|
80
|
-
volumeKeyListener = listener
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
override fun setVolumeKeyInterceptEnabled(enabled: Boolean) {
|
|
84
|
-
isVolumeKeyInterceptEnabled = enabled
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
|
88
|
-
if (isVolumeKeyInterceptEnabled && handleVolumeKeyEvent(event)) {
|
|
89
|
-
return true
|
|
90
|
-
}
|
|
91
|
-
return super.dispatchKeyEvent(event)
|
|
92
|
-
}
|
|
93
|
-
`;
|
|
94
|
-
|
|
95
|
-
// Insert before the last closing brace
|
|
96
|
-
const lastBraceIndex = modifiedContents.lastIndexOf("}");
|
|
97
|
-
modifiedContents =
|
|
98
|
-
modifiedContents.slice(0, lastBraceIndex) +
|
|
99
|
-
volumeKeyMethods +
|
|
100
|
-
"\n" +
|
|
101
|
-
modifiedContents.slice(lastBraceIndex);
|
|
102
|
-
|
|
103
|
-
return modifiedContents;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
function addVolumeKeyInterceptionJava(contents: string): string {
|
|
107
|
-
// Check if already implemented
|
|
108
|
-
if (contents.includes("VolumeKeyInterceptActivity")) {
|
|
109
|
-
return contents;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Add imports
|
|
113
|
-
const imports = [
|
|
114
|
-
"import android.view.KeyEvent;",
|
|
115
|
-
"import expo.modules.kookit.VolumeKeyInterceptActivity;",
|
|
116
|
-
"import expo.modules.kookit.VolumeKeyInterceptActivityKt;",
|
|
117
|
-
"import kotlin.Unit;",
|
|
118
|
-
"import kotlin.jvm.functions.Function1;",
|
|
119
|
-
];
|
|
120
|
-
|
|
121
|
-
let modifiedContents = contents;
|
|
122
|
-
|
|
123
|
-
// Add imports after existing imports
|
|
124
|
-
const lastImportMatch = modifiedContents.match(
|
|
125
|
-
/import\s+[^;]+;(?!\s*import)/
|
|
126
|
-
);
|
|
127
|
-
if (lastImportMatch) {
|
|
128
|
-
const importInsertIndex =
|
|
129
|
-
lastImportMatch.index! + lastImportMatch[0].length;
|
|
130
|
-
const importsToAdd = imports.filter(
|
|
131
|
-
(imp) => !modifiedContents.includes(imp)
|
|
132
|
-
);
|
|
133
|
-
if (importsToAdd.length > 0) {
|
|
134
|
-
modifiedContents =
|
|
135
|
-
modifiedContents.slice(0, importInsertIndex) +
|
|
136
|
-
"\n" +
|
|
137
|
-
importsToAdd.join("\n") +
|
|
138
|
-
modifiedContents.slice(importInsertIndex);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// Add interface to class declaration
|
|
143
|
-
modifiedContents = modifiedContents.replace(
|
|
144
|
-
/public\s+class\s+MainActivity\s+extends\s+ReactActivity/,
|
|
145
|
-
"public class MainActivity extends ReactActivity implements VolumeKeyInterceptActivity"
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
// Add properties and methods
|
|
149
|
-
const volumeKeyMethods = `
|
|
150
|
-
// Volume key interception properties and methods - Added by react-native-kookit
|
|
151
|
-
private Function1<Integer, Unit> volumeKeyListener;
|
|
152
|
-
private boolean isVolumeKeyInterceptEnabled = false;
|
|
153
|
-
|
|
154
|
-
@Override
|
|
155
|
-
public void setVolumeKeyListener(Function1<Integer, Unit> listener) {
|
|
156
|
-
this.volumeKeyListener = listener;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
@Override
|
|
160
|
-
public void setVolumeKeyInterceptEnabled(boolean enabled) {
|
|
161
|
-
this.isVolumeKeyInterceptEnabled = enabled;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
@Override
|
|
165
|
-
public boolean dispatchKeyEvent(KeyEvent event) {
|
|
166
|
-
if (isVolumeKeyInterceptEnabled && VolumeKeyInterceptActivityKt.handleVolumeKeyEvent(this, event)) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
return super.dispatchKeyEvent(event);
|
|
170
|
-
}
|
|
171
|
-
`;
|
|
172
|
-
|
|
173
|
-
// Insert before the last closing brace
|
|
174
|
-
const lastBraceIndex = modifiedContents.lastIndexOf("}");
|
|
175
|
-
modifiedContents =
|
|
176
|
-
modifiedContents.slice(0, lastBraceIndex) +
|
|
177
|
-
volumeKeyMethods +
|
|
178
|
-
"\n" +
|
|
179
|
-
modifiedContents.slice(lastBraceIndex);
|
|
180
|
-
|
|
181
|
-
return modifiedContents;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export default withVolumeKeyIntercept;
|
package/plugin/tsconfig.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"lib": ["ES2020"],
|
|
6
|
-
"outDir": "./build",
|
|
7
|
-
"rootDir": "./src",
|
|
8
|
-
"strict": true,
|
|
9
|
-
"esModuleInterop": true,
|
|
10
|
-
"skipLibCheck": true,
|
|
11
|
-
"forceConsistentCasingInFileNames": true,
|
|
12
|
-
"declaration": true,
|
|
13
|
-
"declarationMap": true,
|
|
14
|
-
"sourceMap": true
|
|
15
|
-
},
|
|
16
|
-
"include": ["src/**/*"],
|
|
17
|
-
"exclude": ["node_modules", "build"]
|
|
18
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["./src/withvolumekeyintercept.ts"],"version":"5.9.2"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { StyleProp, ViewStyle } from "react-native";
|
|
2
|
-
|
|
3
|
-
export type OnLoadEventPayload = {
|
|
4
|
-
url: string;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
export type VolumeKeyEventPayload = {
|
|
8
|
-
key: "up" | "down";
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type ReactNativeKookitModuleEvents = {
|
|
12
|
-
onChange: (params: ChangeEventPayload) => void;
|
|
13
|
-
onVolumeButtonPressed: (params: VolumeKeyEventPayload) => void;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type ChangeEventPayload = {
|
|
17
|
-
value: string;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export type ReactNativeKookitViewProps = {
|
|
21
|
-
url: string;
|
|
22
|
-
onLoad: (event: { nativeEvent: OnLoadEventPayload }) => void;
|
|
23
|
-
style?: StyleProp<ViewStyle>;
|
|
24
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { NativeModule, requireNativeModule } from "expo";
|
|
2
|
-
|
|
3
|
-
import { ReactNativeKookitModuleEvents } from "./ReactNativeKookit.types";
|
|
4
|
-
|
|
5
|
-
declare class ReactNativeKookitModule extends NativeModule<ReactNativeKookitModuleEvents> {
|
|
6
|
-
PI: number;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Returns a hello world string
|
|
10
|
-
*/
|
|
11
|
-
hello(): string;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Test async function that sends a change event
|
|
15
|
-
*/
|
|
16
|
-
setValueAsync(value: string): Promise<void>;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Enables volume key interception.
|
|
20
|
-
* On Android, your MainActivity must implement VolumeKeyInterceptActivity interface.
|
|
21
|
-
* On iOS, this works automatically.
|
|
22
|
-
*
|
|
23
|
-
* @throws Error if MainActivity doesn't implement VolumeKeyInterceptActivity on Android
|
|
24
|
-
*/
|
|
25
|
-
enableVolumeKeyInterception(): void;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Disables volume key interception
|
|
29
|
-
*/
|
|
30
|
-
disableVolumeKeyInterception(): void;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// This call loads the native module object from the JSI.
|
|
34
|
-
export default requireNativeModule<ReactNativeKookitModule>(
|
|
35
|
-
"ReactNativeKookit"
|
|
36
|
-
);
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { registerWebModule, NativeModule } from "expo";
|
|
2
|
-
|
|
3
|
-
import { ReactNativeKookitModuleEvents } from "./ReactNativeKookit.types";
|
|
4
|
-
|
|
5
|
-
class ReactNativeKookitModule extends NativeModule<ReactNativeKookitModuleEvents> {
|
|
6
|
-
PI = Math.PI;
|
|
7
|
-
async setValueAsync(value: string): Promise<void> {
|
|
8
|
-
this.emit("onChange", { value });
|
|
9
|
-
}
|
|
10
|
-
hello() {
|
|
11
|
-
return "Hello world! 👋";
|
|
12
|
-
}
|
|
13
|
-
enableVolumeKeyInterception() {
|
|
14
|
-
// Web implementation - listen for keyboard events
|
|
15
|
-
if (typeof window !== "undefined") {
|
|
16
|
-
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
17
|
-
window.addEventListener("keydown", this.handleKeyDown);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
disableVolumeKeyInterception() {
|
|
21
|
-
// Web implementation - remove keyboard event listeners
|
|
22
|
-
if (typeof window !== "undefined" && this.handleKeyDown) {
|
|
23
|
-
window.removeEventListener("keydown", this.handleKeyDown);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
private handleKeyDown(event: KeyboardEvent) {
|
|
28
|
-
// On web, we can simulate volume key detection using specific keys
|
|
29
|
-
// This is a fallback since web doesn't have direct access to volume keys
|
|
30
|
-
let keyType: "up" | "down" | null = null;
|
|
31
|
-
|
|
32
|
-
if (event.code === "ArrowUp" && event.altKey) {
|
|
33
|
-
keyType = "up";
|
|
34
|
-
} else if (event.code === "ArrowDown" && event.altKey) {
|
|
35
|
-
keyType = "down";
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (keyType) {
|
|
39
|
-
event.preventDefault();
|
|
40
|
-
this.emit("onVolumeButtonPressed", { key: keyType });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export default registerWebModule(
|
|
46
|
-
ReactNativeKookitModule,
|
|
47
|
-
"ReactNativeKookitModule"
|
|
48
|
-
);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { requireNativeView } from 'expo';
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
|
|
4
|
-
import { ReactNativeKookitViewProps } from './ReactNativeKookit.types';
|
|
5
|
-
|
|
6
|
-
const NativeView: React.ComponentType<ReactNativeKookitViewProps> =
|
|
7
|
-
requireNativeView('ReactNativeKookit');
|
|
8
|
-
|
|
9
|
-
export default function ReactNativeKookitView(props: ReactNativeKookitViewProps) {
|
|
10
|
-
return <NativeView {...props} />;
|
|
11
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
import { ReactNativeKookitViewProps } from './ReactNativeKookit.types';
|
|
4
|
-
|
|
5
|
-
export default function ReactNativeKookitView(props: ReactNativeKookitViewProps) {
|
|
6
|
-
return (
|
|
7
|
-
<div>
|
|
8
|
-
<iframe
|
|
9
|
-
style={{ flex: 1 }}
|
|
10
|
-
src={props.url}
|
|
11
|
-
onLoad={() => props.onLoad({ nativeEvent: { url: props.url } })}
|
|
12
|
-
/>
|
|
13
|
-
</div>
|
|
14
|
-
);
|
|
15
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// Reexport the native module. On web, it will be resolved to ReactNativeKookitModule.web.ts
|
|
2
|
-
// and on native platforms to ReactNativeKookitModule.ts
|
|
3
|
-
export { default } from './ReactNativeKookitModule';
|
|
4
|
-
export { default as ReactNativeKookitView } from './ReactNativeKookitView';
|
|
5
|
-
export * from './ReactNativeKookit.types';
|
package/test-volume-keys.sh
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
echo "🔧 Building React Native Kookit Module..."
|
|
4
|
-
|
|
5
|
-
# Build the module
|
|
6
|
-
npm run build
|
|
7
|
-
|
|
8
|
-
if [ $? -eq 0 ]; then
|
|
9
|
-
echo "✅ Module built successfully!"
|
|
10
|
-
echo ""
|
|
11
|
-
echo "📱 To test volume key interception:"
|
|
12
|
-
echo "1. Make sure your MainActivity implements VolumeKeyInterceptActivity (see VOLUME_KEYS.md)"
|
|
13
|
-
echo "2. Run the example app: cd example && npm run android"
|
|
14
|
-
echo "3. Enable volume interception in the app"
|
|
15
|
-
echo "4. Press physical volume keys to test"
|
|
16
|
-
echo ""
|
|
17
|
-
echo "📋 Expected behavior:"
|
|
18
|
-
echo "- Volume HUD should NOT appear"
|
|
19
|
-
echo "- System volume should NOT change"
|
|
20
|
-
echo "- App should show alert with 'up' or 'down' key events"
|
|
21
|
-
echo ""
|
|
22
|
-
echo "📖 See VOLUME_KEYS.md for detailed implementation guide"
|
|
23
|
-
else
|
|
24
|
-
echo "❌ Build failed. Please check errors above."
|
|
25
|
-
fi
|
package/tsconfig.json
DELETED