@yume-chan/adb 0.0.17 → 0.0.19

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 (177) hide show
  1. package/CHANGELOG.json +27 -0
  2. package/CHANGELOG.md +16 -1
  3. package/LICENSE +1 -1
  4. package/esm/adb.d.ts +63 -60
  5. package/esm/adb.d.ts.map +1 -1
  6. package/esm/adb.js +257 -229
  7. package/esm/adb.js.map +1 -1
  8. package/esm/auth.d.ts +51 -51
  9. package/esm/auth.d.ts.map +1 -1
  10. package/esm/auth.js +95 -96
  11. package/esm/auth.js.map +1 -1
  12. package/esm/backend.d.ts +8 -8
  13. package/esm/backend.d.ts.map +1 -1
  14. package/esm/backend.js +1 -1
  15. package/esm/commands/base.d.ts +6 -6
  16. package/esm/commands/base.js +8 -8
  17. package/esm/commands/framebuffer.d.ts +53 -53
  18. package/esm/commands/framebuffer.d.ts.map +1 -1
  19. package/esm/commands/framebuffer.js +46 -47
  20. package/esm/commands/framebuffer.js.map +1 -1
  21. package/esm/commands/index.d.ts +7 -8
  22. package/esm/commands/index.d.ts.map +1 -1
  23. package/esm/commands/index.js +7 -8
  24. package/esm/commands/index.js.map +1 -1
  25. package/esm/commands/install.d.ts +9 -3
  26. package/esm/commands/install.d.ts.map +1 -1
  27. package/esm/commands/install.js +27 -21
  28. package/esm/commands/install.js.map +1 -1
  29. package/esm/commands/power.d.ts +22 -22
  30. package/esm/commands/power.d.ts.map +1 -1
  31. package/esm/commands/power.js +48 -44
  32. package/esm/commands/power.js.map +1 -1
  33. package/esm/commands/reverse.d.ts +41 -28
  34. package/esm/commands/reverse.d.ts.map +1 -1
  35. package/esm/commands/reverse.js +125 -98
  36. package/esm/commands/reverse.js.map +1 -1
  37. package/esm/commands/subprocess/command.d.ts +57 -51
  38. package/esm/commands/subprocess/command.d.ts.map +1 -1
  39. package/esm/commands/subprocess/command.js +86 -82
  40. package/esm/commands/subprocess/command.js.map +1 -1
  41. package/esm/commands/subprocess/index.d.ts +3 -3
  42. package/esm/commands/subprocess/index.js +3 -3
  43. package/esm/commands/subprocess/protocols/index.d.ts +3 -3
  44. package/esm/commands/subprocess/protocols/index.js +3 -3
  45. package/esm/commands/subprocess/protocols/none.d.ts +35 -35
  46. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -1
  47. package/esm/commands/subprocess/protocols/none.js +65 -55
  48. package/esm/commands/subprocess/protocols/none.js.map +1 -1
  49. package/esm/commands/subprocess/protocols/shell.d.ts +39 -38
  50. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -1
  51. package/esm/commands/subprocess/protocols/shell.js +166 -154
  52. package/esm/commands/subprocess/protocols/shell.js.map +1 -1
  53. package/esm/commands/subprocess/protocols/types.d.ts +49 -49
  54. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -1
  55. package/esm/commands/subprocess/protocols/types.js +1 -1
  56. package/esm/commands/subprocess/utils.d.ts +1 -1
  57. package/esm/commands/subprocess/utils.js +18 -18
  58. package/esm/commands/sync/index.d.ts +8 -7
  59. package/esm/commands/sync/index.d.ts.map +1 -1
  60. package/esm/commands/sync/index.js +8 -7
  61. package/esm/commands/sync/index.js.map +1 -1
  62. package/esm/commands/sync/list.d.ts +42 -40
  63. package/esm/commands/sync/list.d.ts.map +1 -1
  64. package/esm/commands/sync/list.js +67 -35
  65. package/esm/commands/sync/list.js.map +1 -1
  66. package/esm/commands/sync/pull.d.ts +13 -11
  67. package/esm/commands/sync/pull.d.ts.map +1 -1
  68. package/esm/commands/sync/pull.js +35 -36
  69. package/esm/commands/sync/pull.js.map +1 -1
  70. package/esm/commands/sync/push.d.ts +46 -7
  71. package/esm/commands/sync/push.d.ts.map +1 -1
  72. package/esm/commands/sync/push.js +89 -23
  73. package/esm/commands/sync/push.js.map +1 -1
  74. package/esm/commands/sync/request.d.ts +26 -23
  75. package/esm/commands/sync/request.d.ts.map +1 -1
  76. package/esm/commands/sync/request.js +40 -42
  77. package/esm/commands/sync/request.js.map +1 -1
  78. package/esm/commands/sync/response.d.ts +19 -19
  79. package/esm/commands/sync/response.d.ts.map +1 -1
  80. package/esm/commands/sync/response.js +54 -54
  81. package/esm/commands/sync/response.js.map +1 -1
  82. package/esm/commands/sync/socket.d.ts +27 -0
  83. package/esm/commands/sync/socket.d.ts.map +1 -0
  84. package/esm/commands/sync/socket.js +66 -0
  85. package/esm/commands/sync/socket.js.map +1 -0
  86. package/esm/commands/sync/stat.d.ts +72 -72
  87. package/esm/commands/sync/stat.d.ts.map +1 -1
  88. package/esm/commands/sync/stat.js +116 -94
  89. package/esm/commands/sync/stat.js.map +1 -1
  90. package/esm/commands/sync/sync.d.ts +72 -60
  91. package/esm/commands/sync/sync.d.ts.map +1 -1
  92. package/esm/commands/sync/sync.js +127 -148
  93. package/esm/commands/sync/sync.js.map +1 -1
  94. package/esm/commands/tcpip.d.ts +5 -5
  95. package/esm/commands/tcpip.js +18 -18
  96. package/esm/crypto.d.ts +36 -36
  97. package/esm/crypto.d.ts.map +1 -1
  98. package/esm/crypto.js +248 -238
  99. package/esm/crypto.js.map +1 -1
  100. package/esm/features.d.ts +10 -7
  101. package/esm/features.d.ts.map +1 -1
  102. package/esm/features.js +13 -10
  103. package/esm/features.js.map +1 -1
  104. package/esm/index.d.ts +9 -9
  105. package/esm/index.d.ts.map +1 -1
  106. package/esm/index.js +9 -9
  107. package/esm/index.js.map +1 -1
  108. package/esm/packet.d.ts +45 -46
  109. package/esm/packet.d.ts.map +1 -1
  110. package/esm/packet.js +43 -46
  111. package/esm/packet.js.map +1 -1
  112. package/esm/socket/dispatcher.d.ts +59 -59
  113. package/esm/socket/dispatcher.d.ts.map +1 -1
  114. package/esm/socket/dispatcher.js +223 -231
  115. package/esm/socket/dispatcher.js.map +1 -1
  116. package/esm/socket/index.d.ts +2 -2
  117. package/esm/socket/index.js +2 -2
  118. package/esm/socket/socket.d.ts +59 -59
  119. package/esm/socket/socket.d.ts.map +1 -1
  120. package/esm/socket/socket.js +118 -98
  121. package/esm/socket/socket.js.map +1 -1
  122. package/esm/utils/auto-reset-event.d.ts +9 -9
  123. package/esm/utils/auto-reset-event.d.ts.map +1 -1
  124. package/esm/utils/auto-reset-event.js +33 -33
  125. package/esm/utils/auto-reset-event.js.map +1 -1
  126. package/esm/utils/base64.d.ts +27 -27
  127. package/esm/utils/base64.d.ts.map +1 -1
  128. package/esm/utils/base64.js +246 -245
  129. package/esm/utils/base64.js.map +1 -1
  130. package/esm/utils/conditional-variable.d.ts +9 -0
  131. package/esm/utils/conditional-variable.d.ts.map +1 -0
  132. package/esm/utils/conditional-variable.js +34 -0
  133. package/esm/utils/conditional-variable.js.map +1 -0
  134. package/esm/utils/index.d.ts +4 -3
  135. package/esm/utils/index.d.ts.map +1 -1
  136. package/esm/utils/index.js +4 -3
  137. package/esm/utils/index.js.map +1 -1
  138. package/package.json +17 -13
  139. package/src/adb.ts +160 -101
  140. package/src/auth.ts +31 -22
  141. package/src/backend.ts +6 -4
  142. package/src/commands/base.ts +2 -2
  143. package/src/commands/framebuffer.ts +37 -41
  144. package/src/commands/index.ts +7 -8
  145. package/src/commands/power.ts +15 -11
  146. package/src/commands/reverse.ts +74 -30
  147. package/src/commands/subprocess/command.ts +34 -23
  148. package/src/commands/subprocess/index.ts +3 -3
  149. package/src/commands/subprocess/protocols/index.ts +3 -3
  150. package/src/commands/subprocess/protocols/none.ts +26 -11
  151. package/src/commands/subprocess/protocols/shell.ts +110 -56
  152. package/src/commands/subprocess/protocols/types.ts +10 -6
  153. package/src/commands/subprocess/utils.ts +1 -1
  154. package/src/commands/sync/index.ts +8 -7
  155. package/src/commands/sync/list.ts +74 -28
  156. package/src/commands/sync/pull.ts +49 -37
  157. package/src/commands/sync/push.ts +153 -32
  158. package/src/commands/sync/request.ts +37 -34
  159. package/src/commands/sync/response.ts +34 -27
  160. package/src/commands/sync/socket.ts +97 -0
  161. package/src/commands/sync/stat.ts +98 -70
  162. package/src/commands/sync/sync.ts +78 -97
  163. package/src/commands/tcpip.ts +5 -5
  164. package/src/crypto.ts +60 -32
  165. package/src/features.ts +9 -6
  166. package/src/index.ts +9 -10
  167. package/src/packet.ts +41 -46
  168. package/src/socket/dispatcher.ts +130 -108
  169. package/src/socket/index.ts +2 -2
  170. package/src/socket/socket.ts +84 -34
  171. package/src/utils/auto-reset-event.ts +16 -17
  172. package/src/utils/base64.ts +51 -41
  173. package/src/utils/conditional-variable.ts +45 -0
  174. package/src/utils/index.ts +4 -3
  175. package/tsconfig.build.json +1 -1
  176. package/tsconfig.build.tsbuildinfo +1 -1
  177. package/src/commands/install.ts +0 -32
package/esm/auth.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG7D,oBAAY,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC;CACjC;AAED,oBAAY,WAAW;IACnB,KAAK,IAAI;IACT,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;;;OAUG;IACH,CACI,eAAe,EAAE,kBAAkB,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAC7C,aAAa,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAmBvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAwCvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAGxD,CAAC;AAEF,qBAAa,0BAA2B,YAAW,UAAU;IACzD,SAAgB,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,QAAQ,CAAuD;gBAGnE,cAAc,EAAE,SAAS,gBAAgB,EAAE,EAC3C,eAAe,EAAE,kBAAkB;IAMvC,OAAO,CAAC,cAAc,CAEpB;YAEa,mBAAmB;IAgBrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5D,OAAO;CAGjB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC;CACjC;AAED,oBAAY,WAAW;IACnB,KAAK,IAAI;IACT,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;;;OAUG;IACH,CACI,eAAe,EAAE,kBAAkB,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAC7C,aAAa,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAmBvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAqCvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAGxD,CAAC;AAEF,qBAAa,0BAA2B,YAAW,UAAU;IACzD,SAAgB,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,QAAQ,CAAuD;gBAGnE,cAAc,EAAE,SAAS,gBAAgB,EAAE,EAC3C,eAAe,EAAE,kBAAkB;IAMvC,OAAO,CAAC,cAAc,CAEpB;YAEa,mBAAmB;IAuBrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5D,OAAO;CAGjB"}
package/esm/auth.js CHANGED
@@ -1,97 +1,96 @@
1
- import { PromiseResolver } from '@yume-chan/async';
2
- import { calculatePublicKey, calculatePublicKeyLength, sign } from './crypto.js';
3
- import { AdbCommand } from './packet.js';
4
- import { calculateBase64EncodedLength, encodeBase64 } from './utils/index.js';
5
- export var AdbAuthType;
6
- (function (AdbAuthType) {
7
- AdbAuthType[AdbAuthType["Token"] = 1] = "Token";
8
- AdbAuthType[AdbAuthType["Signature"] = 2] = "Signature";
9
- AdbAuthType[AdbAuthType["PublicKey"] = 3] = "PublicKey";
10
- })(AdbAuthType = AdbAuthType || (AdbAuthType = {}));
11
- export const AdbSignatureAuthenticator = async function* (credentialStore, getNextRequest) {
12
- for await (const key of credentialStore.iterateKeys()) {
13
- const packet = await getNextRequest();
14
- if (packet.arg0 !== AdbAuthType.Token) {
15
- return;
16
- }
17
- const signature = sign(key, packet.payload);
18
- yield {
19
- command: AdbCommand.Auth,
20
- arg0: AdbAuthType.Signature,
21
- arg1: 0,
22
- payload: new Uint8Array(signature),
23
- };
24
- }
25
- };
26
- export const AdbPublicKeyAuthenticator = async function* (credentialStore, getNextRequest) {
27
- const packet = await getNextRequest();
28
- if (packet.arg0 !== AdbAuthType.Token) {
29
- return;
30
- }
31
- let privateKey;
32
- for await (const key of credentialStore.iterateKeys()) {
33
- privateKey = key;
34
- break;
35
- }
36
- if (!privateKey) {
37
- privateKey = await credentialStore.generateKey();
38
- }
39
- const publicKeyLength = calculatePublicKeyLength();
40
- const [publicKeyBase64Length] = calculateBase64EncodedLength(publicKeyLength);
41
- // The public key is null terminated,
42
- // So we allocate the buffer with one extra byte.
43
- const publicKeyBuffer = new Uint8Array(publicKeyBase64Length + 1);
44
- calculatePublicKey(privateKey, publicKeyBuffer);
45
- encodeBase64(publicKeyBuffer.subarray(0, publicKeyLength), publicKeyBuffer);
46
- yield {
47
- command: AdbCommand.Auth,
48
- arg0: AdbAuthType.PublicKey,
49
- arg1: 0,
50
- payload: publicKeyBuffer,
51
- };
52
- };
53
- export const ADB_DEFAULT_AUTHENTICATORS = [
54
- AdbSignatureAuthenticator,
55
- AdbPublicKeyAuthenticator,
56
- ];
57
- export class AdbAuthenticationProcessor {
58
- authenticators;
59
- credentialStore;
60
- pendingRequest = new PromiseResolver();
61
- iterator;
62
- constructor(authenticators, credentialStore) {
63
- this.authenticators = authenticators;
64
- this.credentialStore = credentialStore;
65
- }
66
- getNextRequest = () => {
67
- return this.pendingRequest.promise;
68
- };
69
- async *invokeAuthenticator() {
70
- for (const authenticator of this.authenticators) {
71
- for await (const packet of authenticator(this.credentialStore, this.getNextRequest)) {
72
- // If the authenticator yielded a response
73
- // Prepare `nextRequest` for next authentication request
74
- this.pendingRequest = new PromiseResolver();
75
- // Yield the response to outer layer
76
- yield packet;
77
- }
78
- // If the authenticator returned,
79
- // Next authenticator will be given the same `pendingRequest`
80
- }
81
- }
82
- async process(packet) {
83
- if (!this.iterator) {
84
- this.iterator = this.invokeAuthenticator();
85
- }
86
- this.pendingRequest.resolve(packet);
87
- const result = await this.iterator.next();
88
- if (result.done) {
89
- throw new Error('No authenticator can handle the request');
90
- }
91
- return result.value;
92
- }
93
- dispose() {
94
- this.iterator?.return?.();
95
- }
96
- }
1
+ import { PromiseResolver } from "@yume-chan/async";
2
+ import { calculatePublicKey, calculatePublicKeyLength, sign, } from "./crypto.js";
3
+ import { AdbCommand } from "./packet.js";
4
+ import { calculateBase64EncodedLength, encodeBase64 } from "./utils/index.js";
5
+ export var AdbAuthType;
6
+ (function (AdbAuthType) {
7
+ AdbAuthType[AdbAuthType["Token"] = 1] = "Token";
8
+ AdbAuthType[AdbAuthType["Signature"] = 2] = "Signature";
9
+ AdbAuthType[AdbAuthType["PublicKey"] = 3] = "PublicKey";
10
+ })(AdbAuthType = AdbAuthType || (AdbAuthType = {}));
11
+ export const AdbSignatureAuthenticator = async function* (credentialStore, getNextRequest) {
12
+ for await (const key of credentialStore.iterateKeys()) {
13
+ const packet = await getNextRequest();
14
+ if (packet.arg0 !== AdbAuthType.Token) {
15
+ return;
16
+ }
17
+ const signature = sign(key, packet.payload);
18
+ yield {
19
+ command: AdbCommand.Auth,
20
+ arg0: AdbAuthType.Signature,
21
+ arg1: 0,
22
+ payload: new Uint8Array(signature),
23
+ };
24
+ }
25
+ };
26
+ export const AdbPublicKeyAuthenticator = async function* (credentialStore, getNextRequest) {
27
+ const packet = await getNextRequest();
28
+ if (packet.arg0 !== AdbAuthType.Token) {
29
+ return;
30
+ }
31
+ let privateKey;
32
+ for await (const key of credentialStore.iterateKeys()) {
33
+ privateKey = key;
34
+ break;
35
+ }
36
+ if (!privateKey) {
37
+ privateKey = await credentialStore.generateKey();
38
+ }
39
+ const publicKeyLength = calculatePublicKeyLength();
40
+ const [publicKeyBase64Length] = calculateBase64EncodedLength(publicKeyLength);
41
+ const publicKeyBuffer = new Uint8Array(publicKeyBase64Length + 1 // Null character
42
+ );
43
+ calculatePublicKey(privateKey, publicKeyBuffer);
44
+ encodeBase64(publicKeyBuffer.subarray(0, publicKeyLength), publicKeyBuffer);
45
+ yield {
46
+ command: AdbCommand.Auth,
47
+ arg0: AdbAuthType.PublicKey,
48
+ arg1: 0,
49
+ payload: publicKeyBuffer,
50
+ };
51
+ };
52
+ export const ADB_DEFAULT_AUTHENTICATORS = [
53
+ AdbSignatureAuthenticator,
54
+ AdbPublicKeyAuthenticator,
55
+ ];
56
+ export class AdbAuthenticationProcessor {
57
+ authenticators;
58
+ credentialStore;
59
+ pendingRequest = new PromiseResolver();
60
+ iterator;
61
+ constructor(authenticators, credentialStore) {
62
+ this.authenticators = authenticators;
63
+ this.credentialStore = credentialStore;
64
+ }
65
+ getNextRequest = () => {
66
+ return this.pendingRequest.promise;
67
+ };
68
+ async *invokeAuthenticator() {
69
+ for (const authenticator of this.authenticators) {
70
+ for await (const packet of authenticator(this.credentialStore, this.getNextRequest)) {
71
+ // If the authenticator yielded a response
72
+ // Prepare `nextRequest` for next authentication request
73
+ this.pendingRequest = new PromiseResolver();
74
+ // Yield the response to outer layer
75
+ yield packet;
76
+ }
77
+ // If the authenticator returned,
78
+ // Next authenticator will be given the same `pendingRequest`
79
+ }
80
+ }
81
+ async process(packet) {
82
+ if (!this.iterator) {
83
+ this.iterator = this.invokeAuthenticator();
84
+ }
85
+ this.pendingRequest.resolve(packet);
86
+ const result = await this.iterator.next();
87
+ if (result.done) {
88
+ throw new Error("No authenticator can handle the request");
89
+ }
90
+ return result.value;
91
+ }
92
+ dispose() {
93
+ void this.iterator?.return?.();
94
+ }
95
+ }
97
96
  //# sourceMappingURL=auth.js.map
package/esm/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/esm/backend.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import type { ReadableWritablePair } from '@yume-chan/stream-extra';
2
- import type { ValueOrPromise } from '@yume-chan/struct';
3
- import type { AdbPacketData, AdbPacketInit } from './packet.js';
4
- export interface AdbBackend {
5
- readonly serial: string;
6
- readonly name: string | undefined;
7
- connect(): ValueOrPromise<ReadableWritablePair<AdbPacketData, AdbPacketInit>>;
8
- }
1
+ import type { Consumable, ReadableWritablePair } from "@yume-chan/stream-extra";
2
+ import type { ValueOrPromise } from "@yume-chan/struct";
3
+ import type { AdbPacketData, AdbPacketInit } from "./packet.js";
4
+ export interface AdbBackend {
5
+ readonly serial: string;
6
+ readonly name: string | undefined;
7
+ connect(): ValueOrPromise<ReadableWritablePair<AdbPacketData, Consumable<AdbPacketInit>>>;
8
+ }
9
9
  //# sourceMappingURL=backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,OAAO,IAAI,cAAc,CAAC,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;CACjF"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,OAAO,IAAI,cAAc,CACrB,oBAAoB,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CACjE,CAAC;CACL"}
package/esm/backend.js CHANGED
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=backend.js.map
@@ -1,7 +1,7 @@
1
- import { AutoDisposable } from '@yume-chan/event';
2
- import type { Adb } from '../adb.js';
3
- export declare class AdbCommandBase extends AutoDisposable {
4
- protected adb: Adb;
5
- constructor(adb: Adb);
6
- }
1
+ import { AutoDisposable } from "@yume-chan/event";
2
+ import type { Adb } from "../adb.js";
3
+ export declare class AdbCommandBase extends AutoDisposable {
4
+ protected adb: Adb;
5
+ constructor(adb: Adb);
6
+ }
7
7
  //# sourceMappingURL=base.d.ts.map
@@ -1,9 +1,9 @@
1
- import { AutoDisposable } from '@yume-chan/event';
2
- export class AdbCommandBase extends AutoDisposable {
3
- adb;
4
- constructor(adb) {
5
- super();
6
- this.adb = adb;
7
- }
8
- }
1
+ import { AutoDisposable } from "@yume-chan/event";
2
+ export class AdbCommandBase extends AutoDisposable {
3
+ adb;
4
+ constructor(adb) {
5
+ super();
6
+ this.adb = adb;
7
+ }
8
+ }
9
9
  //# sourceMappingURL=base.js.map
@@ -1,54 +1,54 @@
1
- import Struct from '@yume-chan/struct';
2
- import type { Adb } from '../adb.js';
3
- export declare const AdbFrameBufferV1: Struct<{
4
- bpp: number;
5
- size: number;
6
- width: number;
7
- height: number;
8
- red_offset: number;
9
- red_length: number;
10
- blue_offset: number;
11
- blue_length: number;
12
- green_offset: number;
13
- green_length: number;
14
- alpha_offset: number;
15
- alpha_length: number;
16
- data: Uint8Array;
17
- }, "size", {}, undefined>;
18
- export declare type AdbFrameBufferV1 = typeof AdbFrameBufferV1['TDeserializeResult'];
19
- export declare const AdbFrameBufferV2: Struct<{
20
- bpp: number;
21
- colorSpace: number;
22
- size: number;
23
- width: number;
24
- height: number;
25
- red_offset: number;
26
- red_length: number;
27
- blue_offset: number;
28
- blue_length: number;
29
- green_offset: number;
30
- green_length: number;
31
- alpha_offset: number;
32
- alpha_length: number;
33
- data: Uint8Array;
34
- }, "size", {}, undefined>;
35
- export declare type AdbFrameBufferV2 = typeof AdbFrameBufferV2['TDeserializeResult'];
36
- /**
37
- * ADB uses 8 int32 fields to describe bit depths
38
- *
39
- * The only combination I have seen is RGBA8888, which is
40
- *
41
- * red_offset: 0
42
- * red_length: 8
43
- * blue_offset: 16
44
- * blue_length: 8
45
- * green_offset: 8
46
- * green_length: 8
47
- * alpha_offset: 24
48
- * alpha_length: 8
49
- *
50
- * But it doesn't mean that other combinations are not possible.
51
- */
52
- export declare type AdbFrameBuffer = AdbFrameBufferV1 | AdbFrameBufferV2;
53
- export declare function framebuffer(adb: Adb): Promise<AdbFrameBuffer>;
1
+ import Struct from "@yume-chan/struct";
2
+ import type { Adb } from "../adb.js";
3
+ export declare const AdbFrameBufferV1: Struct<{
4
+ bpp: number;
5
+ size: number;
6
+ width: number;
7
+ height: number;
8
+ red_offset: number;
9
+ red_length: number;
10
+ blue_offset: number;
11
+ blue_length: number;
12
+ green_offset: number;
13
+ green_length: number;
14
+ alpha_offset: number;
15
+ alpha_length: number;
16
+ data: Uint8Array;
17
+ }, "size", Record<never, never>, undefined>;
18
+ export type AdbFrameBufferV1 = (typeof AdbFrameBufferV1)["TDeserializeResult"];
19
+ export declare const AdbFrameBufferV2: Struct<{
20
+ bpp: number;
21
+ colorSpace: number;
22
+ size: number;
23
+ width: number;
24
+ height: number;
25
+ red_offset: number;
26
+ red_length: number;
27
+ blue_offset: number;
28
+ blue_length: number;
29
+ green_offset: number;
30
+ green_length: number;
31
+ alpha_offset: number;
32
+ alpha_length: number;
33
+ data: Uint8Array;
34
+ }, "size", Record<never, never>, undefined>;
35
+ export type AdbFrameBufferV2 = (typeof AdbFrameBufferV2)["TDeserializeResult"];
36
+ /**
37
+ * ADB uses 8 int32 fields to describe bit depths
38
+ *
39
+ * The only combination I have seen is RGBA8888, which is
40
+ *
41
+ * red_offset: 0
42
+ * red_length: 8
43
+ * blue_offset: 16
44
+ * blue_length: 8
45
+ * green_offset: 8
46
+ * green_length: 8
47
+ * alpha_offset: 24
48
+ * alpha_length: 8
49
+ *
50
+ * But it doesn't mean that other combinations are not possible.
51
+ */
52
+ export type AdbFrameBuffer = AdbFrameBufferV1 | AdbFrameBufferV2;
53
+ export declare function framebuffer(adb: Adb): Promise<AdbFrameBuffer>;
54
54
  //# sourceMappingURL=framebuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMrC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;yBAcuB,CAAC;AAErD,oBAAY,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AAE7E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;yBAeuB,CAAC;AAErD,oBAAY,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAanE"}
1
+ {"version":3,"file":"framebuffer.d.ts","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;2CAamB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAE/E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;2CAcmB,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAE/E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAanE"}
@@ -1,48 +1,47 @@
1
- import { BufferedReadableStream } from '@yume-chan/stream-extra';
2
- import Struct from '@yume-chan/struct';
3
- const Version = new Struct({ littleEndian: true })
4
- .uint32('version');
5
- export const AdbFrameBufferV1 = new Struct({ littleEndian: true })
6
- .uint32('bpp')
7
- .uint32('size')
8
- .uint32('width')
9
- .uint32('height')
10
- .uint32('red_offset')
11
- .uint32('red_length')
12
- .uint32('blue_offset')
13
- .uint32('blue_length')
14
- .uint32('green_offset')
15
- .uint32('green_length')
16
- .uint32('alpha_offset')
17
- .uint32('alpha_length')
18
- .uint8Array('data', { lengthField: 'size' });
19
- export const AdbFrameBufferV2 = new Struct({ littleEndian: true })
20
- .uint32('bpp')
21
- .uint32('colorSpace')
22
- .uint32('size')
23
- .uint32('width')
24
- .uint32('height')
25
- .uint32('red_offset')
26
- .uint32('red_length')
27
- .uint32('blue_offset')
28
- .uint32('blue_length')
29
- .uint32('green_offset')
30
- .uint32('green_length')
31
- .uint32('alpha_offset')
32
- .uint32('alpha_length')
33
- .uint8Array('data', { lengthField: 'size' });
34
- export async function framebuffer(adb) {
35
- const socket = await adb.createSocket('framebuffer:');
36
- const stream = new BufferedReadableStream(socket.readable);
37
- const { version } = await Version.deserialize(stream);
38
- switch (version) {
39
- case 1:
40
- // TODO: AdbFrameBuffer: does all v1 responses uses the same color space? Add it so the command returns same format for all versions.
41
- return AdbFrameBufferV1.deserialize(stream);
42
- case 2:
43
- return AdbFrameBufferV2.deserialize(stream);
44
- default:
45
- throw new Error('Unknown FrameBuffer version');
46
- }
47
- }
1
+ import { BufferedReadableStream } from "@yume-chan/stream-extra";
2
+ import Struct from "@yume-chan/struct";
3
+ const Version = new Struct({ littleEndian: true }).uint32("version");
4
+ export const AdbFrameBufferV1 = new Struct({ littleEndian: true })
5
+ .uint32("bpp")
6
+ .uint32("size")
7
+ .uint32("width")
8
+ .uint32("height")
9
+ .uint32("red_offset")
10
+ .uint32("red_length")
11
+ .uint32("blue_offset")
12
+ .uint32("blue_length")
13
+ .uint32("green_offset")
14
+ .uint32("green_length")
15
+ .uint32("alpha_offset")
16
+ .uint32("alpha_length")
17
+ .uint8Array("data", { lengthField: "size" });
18
+ export const AdbFrameBufferV2 = new Struct({ littleEndian: true })
19
+ .uint32("bpp")
20
+ .uint32("colorSpace")
21
+ .uint32("size")
22
+ .uint32("width")
23
+ .uint32("height")
24
+ .uint32("red_offset")
25
+ .uint32("red_length")
26
+ .uint32("blue_offset")
27
+ .uint32("blue_length")
28
+ .uint32("green_offset")
29
+ .uint32("green_length")
30
+ .uint32("alpha_offset")
31
+ .uint32("alpha_length")
32
+ .uint8Array("data", { lengthField: "size" });
33
+ export async function framebuffer(adb) {
34
+ const socket = await adb.createSocket("framebuffer:");
35
+ const stream = new BufferedReadableStream(socket.readable);
36
+ const { version } = await Version.deserialize(stream);
37
+ switch (version) {
38
+ case 1:
39
+ // TODO: AdbFrameBuffer: does all v1 responses uses the same color space? Add it so the command returns same format for all versions.
40
+ return AdbFrameBufferV1.deserialize(stream);
41
+ case 2:
42
+ return AdbFrameBufferV2.deserialize(stream);
43
+ default:
44
+ throw new Error("Unsupported FrameBuffer version");
45
+ }
46
+ }
48
47
  //# sourceMappingURL=framebuffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"framebuffer.js","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAIvC,MAAM,OAAO,GACT,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,SAAS,CAAC,CAAC;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GACzB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,KAAK,CAAC;KACb,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,OAAO,CAAC;KACf,MAAM,CAAC,QAAQ,CAAC;KAChB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAIrD,MAAM,CAAC,MAAM,gBAAgB,GACzB,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7B,MAAM,CAAC,KAAK,CAAC;KACb,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,OAAO,CAAC;KACf,MAAM,CAAC,QAAQ,CAAC;KAChB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAsBrD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ;IACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,OAAO,EAAE;QACb,KAAK,CAAC;YACF,qIAAqI;YACrI,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,CAAC;YACF,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD;YACI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KACtD;AACL,CAAC"}
1
+ {"version":3,"file":"framebuffer.js","sourceRoot":"","sources":["../../src/commands/framebuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAIvC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7D,MAAM,CAAC,KAAK,CAAC;KACb,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,OAAO,CAAC;KACf,MAAM,CAAC,QAAQ,CAAC;KAChB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAIjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7D,MAAM,CAAC,KAAK,CAAC;KACb,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,MAAM,CAAC;KACd,MAAM,CAAC,OAAO,CAAC;KACf,MAAM,CAAC,QAAQ,CAAC;KAChB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,MAAM,CAAC,cAAc,CAAC;KACtB,UAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;AAsBjD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ;IACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,QAAQ,OAAO,EAAE;QACb,KAAK,CAAC;YACF,qIAAqI;YACrI,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,CAAC;YACF,OAAO,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD;YACI,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KAC1D;AACL,CAAC"}
@@ -1,9 +1,8 @@
1
- export * from './base.js';
2
- export * from './framebuffer.js';
3
- export * from './install.js';
4
- export * from './power.js';
5
- export * from './reverse.js';
6
- export * from './subprocess/index.js';
7
- export * from './sync/index.js';
8
- export * from './tcpip.js';
1
+ export * from "./base.js";
2
+ export * from "./framebuffer.js";
3
+ export * from "./power.js";
4
+ export * from "./reverse.js";
5
+ export * from "./subprocess/index.js";
6
+ export * from "./sync/index.js";
7
+ export * from "./tcpip.js";
9
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -1,9 +1,8 @@
1
- export * from './base.js';
2
- export * from './framebuffer.js';
3
- export * from './install.js';
4
- export * from './power.js';
5
- export * from './reverse.js';
6
- export * from './subprocess/index.js';
7
- export * from './sync/index.js';
8
- export * from './tcpip.js';
1
+ export * from "./base.js";
2
+ export * from "./framebuffer.js";
3
+ export * from "./power.js";
4
+ export * from "./reverse.js";
5
+ export * from "./subprocess/index.js";
6
+ export * from "./sync/index.js";
7
+ export * from "./tcpip.js";
9
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
@@ -1,4 +1,10 @@
1
- import { WritableStream } from '@yume-chan/stream-extra';
2
- import type { Adb } from '../adb.js';
3
- export declare function install(adb: Adb): WritableStream<Uint8Array>;
1
+ import type { ReadableStream } from "@yume-chan/stream-extra";
2
+ import type { Adb } from "../adb.js";
3
+ /**
4
+ * Install an apk file to the device.
5
+ * @param adb An Adb instance
6
+ * @returns A writable stream that accepts an APK file
7
+ * @deprecated Use `PackageManager#installStream` from `@yume-chan/android-bin` package instead.
8
+ */
9
+ export declare function install(adb: Adb, file: ReadableStream<Uint8Array>): Promise<void>;
4
10
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE7E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC,wBAAgB,OAAO,CACnB,GAAG,EAAE,GAAG,GACT,cAAc,CAAC,UAAU,CAAC,CAuB5B"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIrC;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,iBAoBvE"}
@@ -1,23 +1,29 @@
1
- import { WrapWritableStream } from '@yume-chan/stream-extra';
2
- import { escapeArg } from './subprocess/index.js';
3
- export function install(adb) {
4
- const filename = `/data/local/tmp/${Math.random().toString().substring(2)}.apk`;
5
- let sync;
6
- return new WrapWritableStream({
7
- async start() {
8
- // TODO: install: support other install apk methods (streaming, etc.)
9
- // TODO: install: support split apk formats (`adb install-multiple`)
10
- // Upload apk file to tmp folder
11
- sync = await adb.sync();
12
- return sync.write(filename, undefined, undefined);
13
- },
14
- async close() {
15
- sync.dispose();
16
- // Invoke `pm install` to install it
17
- await adb.subprocess.spawnAndWaitLegacy(['pm', 'install', escapeArg(filename)]);
18
- // Remove the temp file
19
- await adb.rm(filename);
20
- }
21
- });
1
+ import { escapeArg } from "./subprocess/index.js";
2
+ /**
3
+ * Install an apk file to the device.
4
+ * @param adb An Adb instance
5
+ * @returns A writable stream that accepts an APK file
6
+ * @deprecated Use `PackageManager#installStream` from `@yume-chan/android-bin` package instead.
7
+ */
8
+ export async function install(adb, file) {
9
+ const fileName = Math.random().toString().substring(2);
10
+ const filePath = `/data/local/tmp/${fileName}.apk`;
11
+ const sync = await adb.sync();
12
+ try {
13
+ await sync.write(filePath, file, undefined, undefined);
14
+ }
15
+ finally {
16
+ await sync.dispose();
17
+ }
18
+ try {
19
+ await adb.subprocess.spawnAndWaitLegacy([
20
+ "pm",
21
+ "install",
22
+ escapeArg(filePath),
23
+ ]);
24
+ }
25
+ finally {
26
+ await adb.rm(filePath);
27
+ }
22
28
  }
23
29
  //# sourceMappingURL=install.js.map