flipper-frontend-core 0.0.1-security → 0.1.0

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 (74) hide show
  1. package/README.md +2 -4
  2. package/lib/AbstractClient.d.ts +65 -0
  3. package/lib/AbstractClient.d.ts.map +1 -0
  4. package/lib/AbstractClient.js +334 -0
  5. package/lib/AbstractClient.js.map +1 -0
  6. package/lib/RenderHost.d.ts +84 -0
  7. package/lib/RenderHost.d.ts.map +1 -0
  8. package/lib/RenderHost.js +11 -0
  9. package/lib/RenderHost.js.map +1 -0
  10. package/lib/client/FlipperServerClient.d.ts +10 -0
  11. package/lib/client/FlipperServerClient.d.ts.map +1 -0
  12. package/lib/client/FlipperServerClient.js +140 -0
  13. package/lib/client/FlipperServerClient.js.map +1 -0
  14. package/lib/devices/ArchivedDevice.d.ts +21 -0
  15. package/lib/devices/ArchivedDevice.d.ts.map +1 -0
  16. package/lib/devices/ArchivedDevice.js +49 -0
  17. package/lib/devices/ArchivedDevice.js.map +1 -0
  18. package/lib/devices/BaseDevice.d.ts +71 -0
  19. package/lib/devices/BaseDevice.d.ts.map +1 -0
  20. package/lib/devices/BaseDevice.js +245 -0
  21. package/lib/devices/BaseDevice.js.map +1 -0
  22. package/lib/devices/TestDevice.d.ts +8 -0
  23. package/lib/devices/TestDevice.d.ts.map +1 -0
  24. package/lib/devices/TestDevice.js +27 -0
  25. package/lib/devices/TestDevice.js.map +1 -0
  26. package/lib/fb/constants.d.ts +5 -0
  27. package/lib/fb/constants.d.ts.map +1 -0
  28. package/lib/fb/constants.js +6 -0
  29. package/lib/fb/constants.js.map +1 -0
  30. package/lib/fb-stubs/constants.d.ts +5 -0
  31. package/lib/fb-stubs/constants.d.ts.map +1 -0
  32. package/lib/fb-stubs/constants.js +6 -0
  33. package/lib/fb-stubs/constants.js.map +1 -0
  34. package/lib/flipperLibImplementation/downloadFile.d.ts +4 -0
  35. package/lib/flipperLibImplementation/downloadFile.d.ts.map +1 -0
  36. package/lib/flipperLibImplementation/downloadFile.js +40 -0
  37. package/lib/flipperLibImplementation/downloadFile.js.map +1 -0
  38. package/lib/flipperLibImplementation/index.d.ts +5 -0
  39. package/lib/flipperLibImplementation/index.d.ts.map +1 -0
  40. package/lib/flipperLibImplementation/index.js +61 -0
  41. package/lib/flipperLibImplementation/index.js.map +1 -0
  42. package/lib/globalObject.d.ts +16 -0
  43. package/lib/globalObject.d.ts.map +1 -0
  44. package/lib/globalObject.js +10 -0
  45. package/lib/globalObject.js.map +1 -0
  46. package/lib/index.d.ts +12 -0
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +39 -0
  49. package/lib/index.js.map +1 -0
  50. package/lib/plugins.d.ts +31 -0
  51. package/lib/plugins.d.ts.map +1 -0
  52. package/lib/plugins.js +181 -0
  53. package/lib/plugins.js.map +1 -0
  54. package/lib/utils/createServerAddOnControls.d.ts +3 -0
  55. package/lib/utils/createServerAddOnControls.d.ts.map +1 -0
  56. package/lib/utils/createServerAddOnControls.js +60 -0
  57. package/lib/utils/createServerAddOnControls.js.map +1 -0
  58. package/lib/utils/isPluginCompatible.d.ts +4 -0
  59. package/lib/utils/isPluginCompatible.d.ts.map +1 -0
  60. package/lib/utils/isPluginCompatible.js +18 -0
  61. package/lib/utils/isPluginCompatible.js.map +1 -0
  62. package/lib/utils/isPluginVersionMoreRecent.d.ts +4 -0
  63. package/lib/utils/isPluginVersionMoreRecent.d.ts.map +1 -0
  64. package/lib/utils/isPluginVersionMoreRecent.js +28 -0
  65. package/lib/utils/isPluginVersionMoreRecent.js.map +1 -0
  66. package/lib/utils/isProduction.d.ts +2 -0
  67. package/lib/utils/isProduction.d.ts.map +1 -0
  68. package/lib/utils/isProduction.js +8 -0
  69. package/lib/utils/isProduction.js.map +1 -0
  70. package/lib/utils/pluginKey.d.ts +5 -0
  71. package/lib/utils/pluginKey.d.ts.map +1 -0
  72. package/lib/utils/pluginKey.js +18 -0
  73. package/lib/utils/pluginKey.js.map +1 -0
  74. package/package.json +35 -3
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createFlipperServerWithSocket = exports.createFlipperServer = exports.FlipperServerState = void 0;
7
+ const eventemitter3_1 = __importDefault(require("eventemitter3"));
8
+ const reconnecting_websocket_1 = __importDefault(require("reconnecting-websocket"));
9
+ const CONNECTION_TIMEOUT = 30 * 1000;
10
+ const EXEC_TIMEOUT = 45 * 1000;
11
+ var FlipperServerState;
12
+ (function (FlipperServerState) {
13
+ FlipperServerState[FlipperServerState["CONNECTING"] = 0] = "CONNECTING";
14
+ FlipperServerState[FlipperServerState["CONNECTED"] = 1] = "CONNECTED";
15
+ FlipperServerState[FlipperServerState["DISCONNECTED"] = 2] = "DISCONNECTED";
16
+ })(FlipperServerState = exports.FlipperServerState || (exports.FlipperServerState = {}));
17
+ function createFlipperServer(host, port, onStateChange) {
18
+ const socket = new reconnecting_websocket_1.default(`ws://${host}:${port}`);
19
+ return createFlipperServerWithSocket(socket, onStateChange);
20
+ }
21
+ exports.createFlipperServer = createFlipperServer;
22
+ function createFlipperServerWithSocket(socket, onStateChange) {
23
+ onStateChange(FlipperServerState.CONNECTING);
24
+ return new Promise((resolve, reject) => {
25
+ let initialConnectionTimeout = window.setTimeout(() => {
26
+ reject(new Error('Failed to connect to flipper-server in a timely manner'));
27
+ }, CONNECTION_TIMEOUT);
28
+ const eventEmitter = new eventemitter3_1.default();
29
+ const pendingRequests = new Map();
30
+ let requestId = 0;
31
+ let connected = false;
32
+ socket.addEventListener('open', () => {
33
+ if (initialConnectionTimeout) {
34
+ resolve(flipperServer);
35
+ clearTimeout(initialConnectionTimeout);
36
+ initialConnectionTimeout = undefined;
37
+ }
38
+ onStateChange(FlipperServerState.CONNECTED);
39
+ connected = true;
40
+ });
41
+ socket.addEventListener('close', () => {
42
+ onStateChange(FlipperServerState.DISCONNECTED);
43
+ connected = false;
44
+ pendingRequests.forEach((r) => r.reject(new Error('flipper-server disconnected')));
45
+ pendingRequests.clear();
46
+ });
47
+ socket.addEventListener('message', ({ data }) => {
48
+ const { event, payload } = JSON.parse(data.toString());
49
+ switch (event) {
50
+ case 'exec-response': {
51
+ console.debug('flipper-server: exec <<<', payload);
52
+ const entry = pendingRequests.get(payload.id);
53
+ if (!entry) {
54
+ console.warn(`Unknown request id `, payload.id);
55
+ }
56
+ else {
57
+ pendingRequests.delete(payload.id);
58
+ clearTimeout(entry.timeout);
59
+ entry.resolve(payload.data);
60
+ }
61
+ break;
62
+ }
63
+ case 'exec-response-error': {
64
+ console.debug('flipper-server: exec <<< [SERVER ERROR]', payload.id, payload.data);
65
+ const entry = pendingRequests.get(payload.id);
66
+ if (!entry) {
67
+ console.warn(`flipper-server: Unknown request id `, payload.id);
68
+ }
69
+ else {
70
+ pendingRequests.delete(payload.id);
71
+ clearTimeout(entry.timeout);
72
+ entry.reject(payload.data);
73
+ }
74
+ break;
75
+ }
76
+ case 'server-event': {
77
+ eventEmitter.emit(payload.event, payload.data);
78
+ break;
79
+ }
80
+ default: {
81
+ console.warn('flipper-server: received unknown message type', data.toString());
82
+ }
83
+ }
84
+ });
85
+ const commandOrOptionsIsOptions = (commandOrOptions) => typeof commandOrOptions === 'object';
86
+ const flipperServer = {
87
+ async connect() { },
88
+ close() { },
89
+ exec(commandOrOptions, ...argsAmbiguous) {
90
+ let timeout;
91
+ let command;
92
+ let args;
93
+ if (commandOrOptionsIsOptions(commandOrOptions)) {
94
+ timeout = commandOrOptions.timeout;
95
+ command = argsAmbiguous[0];
96
+ args = argsAmbiguous.slice(1);
97
+ }
98
+ else {
99
+ timeout = EXEC_TIMEOUT;
100
+ command = commandOrOptions;
101
+ args = argsAmbiguous;
102
+ }
103
+ if (connected) {
104
+ const id = ++requestId;
105
+ return new Promise((resolve, reject) => {
106
+ console.debug('flipper-server: exec >>>', id, command, args);
107
+ pendingRequests.set(id, {
108
+ resolve,
109
+ reject,
110
+ timeout: setInterval(() => {
111
+ pendingRequests.delete(id);
112
+ reject(new Error(`flipper-server: timeout for command '${command}'`));
113
+ }, timeout),
114
+ });
115
+ const execMessage = {
116
+ event: 'exec',
117
+ payload: {
118
+ id,
119
+ command,
120
+ args,
121
+ },
122
+ };
123
+ socket.send(JSON.stringify(execMessage));
124
+ });
125
+ }
126
+ else {
127
+ throw new Error('Not connected to Flipper server');
128
+ }
129
+ },
130
+ on(event, callback) {
131
+ eventEmitter.on(event, callback);
132
+ },
133
+ off(event, callback) {
134
+ eventEmitter.off(event, callback);
135
+ },
136
+ };
137
+ });
138
+ }
139
+ exports.createFlipperServerWithSocket = createFlipperServerWithSocket;
140
+ //# sourceMappingURL=FlipperServerClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlipperServerClient.js","sourceRoot":"","sources":["../../src/client/FlipperServerClient.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import BaseDevice from './BaseDevice';
2
+ import type { DeviceOS, DeviceType } from 'flipper-plugin-core';
3
+ export default class ArchivedDevice extends BaseDevice {
4
+ isArchived: boolean;
5
+ constructor(options: {
6
+ serial: string;
7
+ deviceType: DeviceType;
8
+ title: string;
9
+ os: DeviceOS;
10
+ screenshotHandle?: string | null;
11
+ source?: string;
12
+ supportRequestDetails?: object;
13
+ });
14
+ archivedScreenshotHandle: string | null;
15
+ displayTitle(): string;
16
+ supportRequestDetails?: object;
17
+ getArchivedScreenshotHandle(): string | null;
18
+ startLogging(): Promise<void>;
19
+ stopLogging(): Promise<void>;
20
+ }
21
+ //# sourceMappingURL=ArchivedDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivedDevice.d.ts","sourceRoot":"","sources":["../../src/devices/ArchivedDevice.tsx"],"names":[],"mappings":"AASA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IACpD,UAAU,UAAQ;gBAEN,OAAO,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,QAAQ,CAAC;QACb,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,qBAAqB,CAAC,EAAE,MAAM,CAAC;KAChC;IAmCD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,YAAY,IAAI,MAAM;IAItB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,2BAA2B,IAAI,MAAM,GAAG,IAAI;IAOtC,YAAY;IAOZ,WAAW;CAGlB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const BaseDevice_1 = __importDefault(require("./BaseDevice"));
7
+ class ArchivedDevice extends BaseDevice_1.default {
8
+ constructor(options) {
9
+ var _a;
10
+ super({
11
+ async connect() { },
12
+ close() { },
13
+ exec(command, ..._args) {
14
+ throw new Error(`[Archived device] Cannot invoke command ${command} on an archived device`);
15
+ },
16
+ on(event) {
17
+ console.warn(`Cannot subscribe to server events from an Archived device: ${event}`);
18
+ },
19
+ off() { },
20
+ }, {
21
+ deviceType: options.deviceType,
22
+ title: options.title,
23
+ os: options.os,
24
+ serial: options.serial,
25
+ icon: 'box',
26
+ features: {
27
+ screenCaptureAvailable: false,
28
+ screenshotAvailable: false,
29
+ },
30
+ });
31
+ this.isArchived = true;
32
+ this.connected.set(false);
33
+ this.source = options.source || '';
34
+ this.supportRequestDetails = options.supportRequestDetails;
35
+ this.archivedScreenshotHandle = (_a = options.screenshotHandle) !== null && _a !== void 0 ? _a : null;
36
+ }
37
+ displayTitle() {
38
+ return `${this.title} ${this.source ? '(Imported)' : '(Offline)'}`;
39
+ }
40
+ getArchivedScreenshotHandle() {
41
+ return this.archivedScreenshotHandle;
42
+ }
43
+ async startLogging() {
44
+ }
45
+ async stopLogging() {
46
+ }
47
+ }
48
+ exports.default = ArchivedDevice;
49
+ //# sourceMappingURL=ArchivedDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchivedDevice.js","sourceRoot":"","sources":["../../src/devices/ArchivedDevice.tsx"],"names":[],"mappings":";;;;;AASA,8DAAsC;AAGtC,MAAqB,cAAe,SAAQ,oBAAU;IAGpD,YAAY,OAQX;;QACC,KAAK,CACH;YACE,KAAK,CAAC,OAAO,KAAI,CAAC;YAClB,KAAK,KAAI,CAAC;YACV,IAAI,CAAC,OAAO,EAAE,GAAG,KAAY;gBAC3B,MAAM,IAAI,KAAK,CACb,2CAA2C,OAAO,wBAAwB,CAC3E,CAAC;YACJ,CAAC;YACD,EAAE,CAAC,KAAK;gBACN,OAAO,CAAC,IAAI,CACV,8DAA8D,KAAK,EAAE,CACtE,CAAC;YACJ,CAAC;YACD,GAAG,KAAI,CAAC;SACT,EACD;YACE,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE;gBACR,sBAAsB,EAAE,KAAK;gBAC7B,mBAAmB,EAAE,KAAK;aAC3B;SACF,CACF,CAAC;QAtCJ,eAAU,GAAG,IAAI,CAAC;QAuChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,wBAAwB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,IAAI,CAAC;IACnE,CAAC;IAID,YAAY;QACV,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAID,2BAA2B;QACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAKD,KAAK,CAAC,YAAY;IAElB,CAAC;IAKD,KAAK,CAAC,WAAW;IAEjB,CAAC;CACF;AAvED,iCAuEC"}
@@ -0,0 +1,71 @@
1
+ import { Device, _SandyDevicePluginInstance, _SandyPluginDefinition, DeviceLogListener, Idler, CrashLogListener } from 'flipper-plugin-core';
2
+ import { DeviceLogEntry, DeviceOS, DeviceType, DeviceDescription, FlipperServer, CrashLog } from 'flipper-common';
3
+ import { DeviceSpec, PluginDetails } from 'flipper-common';
4
+ declare type PluginDefinition = _SandyPluginDefinition;
5
+ declare type PluginMap = Map<string, PluginDefinition>;
6
+ export declare type DeviceExport = {
7
+ os: DeviceOS;
8
+ title: string;
9
+ deviceType: DeviceType;
10
+ serial: string;
11
+ pluginStates: Record<string, any>;
12
+ };
13
+ export default class BaseDevice implements Device {
14
+ private pluginErrorHandler?;
15
+ description: DeviceDescription;
16
+ flipperServer: FlipperServer;
17
+ isArchived: boolean;
18
+ hasDevicePlugins: boolean;
19
+ private readonly serverAddOnControls;
20
+ constructor(flipperServer: FlipperServer, description: DeviceDescription, pluginErrorHandler?: ((msg: string) => void) | undefined);
21
+ get isConnected(): boolean;
22
+ get os(): import("flipper-common").OS;
23
+ get title(): string;
24
+ get deviceType(): DeviceType;
25
+ get serial(): string;
26
+ get specs(): DeviceSpec[];
27
+ get icon(): string | undefined;
28
+ logListeners: Map<Symbol, DeviceLogListener>;
29
+ crashListeners: Map<Symbol, CrashLogListener>;
30
+ readonly connected: import("flipper-plugin-core").Atom<boolean>;
31
+ source: string;
32
+ sandyPluginStates: Map<string, _SandyDevicePluginInstance>;
33
+ supportsOS(os: DeviceOS): boolean;
34
+ displayTitle(): string;
35
+ exportState(idler: Idler, onStatusMessage: (msg: string) => void, selectedPlugins: string[]): Promise<Record<string, any>>;
36
+ toJSON(): {
37
+ os: import("flipper-common").OS;
38
+ title: string;
39
+ deviceType: DeviceType;
40
+ serial: string;
41
+ };
42
+ private deviceLogEventHandler;
43
+ addLogEntry(entry: DeviceLogEntry): void;
44
+ startLogging(): Promise<void>;
45
+ stopLogging(): void;
46
+ addLogListener(callback: DeviceLogListener): Symbol;
47
+ removeLogListener(id: Symbol): void;
48
+ private crashLogEventHandler;
49
+ addCrashEntry(entry: CrashLog): void;
50
+ startCrashWatcher(): Promise<void>;
51
+ stopCrashWatcher(): void;
52
+ addCrashListener(callback: CrashLogListener): Symbol;
53
+ removeCrashListener(id: Symbol): void;
54
+ navigateToLocation(location: string): Promise<void>;
55
+ installApp(appBundlePath: string, timeout?: number): Promise<void>;
56
+ screenshot(): Promise<Uint8Array | undefined>;
57
+ startScreenCapture(destination: string): Promise<void>;
58
+ stopScreenCapture(): Promise<string | null>;
59
+ executeShell(command: string): Promise<string>;
60
+ sendMetroCommand(command: string): Promise<void>;
61
+ forwardPort(local: string, remote: string): Promise<boolean>;
62
+ clearLogs(): Promise<void>;
63
+ supportsPlugin(plugin: PluginDefinition | PluginDetails): any;
64
+ loadDevicePlugins(devicePlugins: PluginMap, enabledDevicePlugins: Set<string>, pluginStates?: Record<string, any>): void;
65
+ loadDevicePlugin(plugin: PluginDefinition, initialState?: any): void;
66
+ unloadDevicePlugin(pluginId: string): void;
67
+ disconnect(): void;
68
+ destroy(): void;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=BaseDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDevice.d.ts","sourceRoot":"","sources":["../../src/devices/BaseDevice.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const flipper_plugin_core_1 = require("flipper-plugin-core");
4
+ const pluginKey_1 = require("../utils/pluginKey");
5
+ const js_base64_1 = require("js-base64");
6
+ const createServerAddOnControls_1 = require("../utils/createServerAddOnControls");
7
+ class BaseDevice {
8
+ constructor(flipperServer, description, pluginErrorHandler) {
9
+ this.pluginErrorHandler = pluginErrorHandler;
10
+ this.isArchived = false;
11
+ this.hasDevicePlugins = false;
12
+ this.logListeners = new Map();
13
+ this.crashListeners = new Map();
14
+ this.connected = (0, flipper_plugin_core_1.createState)(true);
15
+ this.source = '';
16
+ this.sandyPluginStates = new Map();
17
+ this.deviceLogEventHandler = (payload) => {
18
+ if (payload.serial === this.serial && this.logListeners.size > 0) {
19
+ this.addLogEntry(payload.entry);
20
+ }
21
+ };
22
+ this.crashLogEventHandler = (payload) => {
23
+ if (payload.serial === this.serial && this.crashListeners.size > 0) {
24
+ this.addCrashEntry(payload.crash);
25
+ }
26
+ };
27
+ this.flipperServer = flipperServer;
28
+ this.description = description;
29
+ this.serverAddOnControls = (0, createServerAddOnControls_1.createServerAddOnControls)(this.flipperServer);
30
+ }
31
+ get isConnected() {
32
+ return this.connected.get();
33
+ }
34
+ get os() {
35
+ return this.description.os;
36
+ }
37
+ get title() {
38
+ return this.description.title;
39
+ }
40
+ get deviceType() {
41
+ return this.description.deviceType;
42
+ }
43
+ get serial() {
44
+ return this.description.serial;
45
+ }
46
+ get specs() {
47
+ var _a;
48
+ return (_a = this.description.specs) !== null && _a !== void 0 ? _a : [];
49
+ }
50
+ get icon() {
51
+ return this.description.icon;
52
+ }
53
+ supportsOS(os) {
54
+ return os.toLowerCase() === this.os.toLowerCase();
55
+ }
56
+ displayTitle() {
57
+ return this.connected.get() ? this.title : `${this.title} (Offline)`;
58
+ }
59
+ async exportState(idler, onStatusMessage, selectedPlugins) {
60
+ const pluginStates = {};
61
+ for (const instance of this.sandyPluginStates.values()) {
62
+ if (selectedPlugins.includes(instance.definition.id) &&
63
+ instance.isPersistable()) {
64
+ pluginStates[instance.definition.id] = await instance.exportState(idler, onStatusMessage);
65
+ }
66
+ }
67
+ return pluginStates;
68
+ }
69
+ toJSON() {
70
+ return {
71
+ os: this.os,
72
+ title: this.title,
73
+ deviceType: this.deviceType,
74
+ serial: this.serial,
75
+ };
76
+ }
77
+ addLogEntry(entry) {
78
+ this.logListeners.forEach((listener) => {
79
+ try {
80
+ listener(entry);
81
+ }
82
+ catch (e) {
83
+ console.error(`Log listener exception:`, e);
84
+ }
85
+ });
86
+ }
87
+ async startLogging() {
88
+ this.flipperServer.on('device-log', this.deviceLogEventHandler);
89
+ }
90
+ stopLogging() {
91
+ this.flipperServer.off('device-log', this.deviceLogEventHandler);
92
+ }
93
+ addLogListener(callback) {
94
+ if (this.logListeners.size === 0) {
95
+ this.startLogging();
96
+ }
97
+ const id = Symbol();
98
+ this.logListeners.set(id, callback);
99
+ return id;
100
+ }
101
+ removeLogListener(id) {
102
+ this.logListeners.delete(id);
103
+ if (this.logListeners.size === 0) {
104
+ this.stopLogging();
105
+ }
106
+ }
107
+ addCrashEntry(entry) {
108
+ this.crashListeners.forEach((listener) => {
109
+ try {
110
+ listener(entry);
111
+ }
112
+ catch (e) {
113
+ console.error(`Crash listener exception:`, e);
114
+ }
115
+ });
116
+ }
117
+ async startCrashWatcher() {
118
+ this.flipperServer.on('device-crash', this.crashLogEventHandler);
119
+ }
120
+ stopCrashWatcher() {
121
+ this.flipperServer.off('device-crash', this.crashLogEventHandler);
122
+ }
123
+ addCrashListener(callback) {
124
+ if (this.crashListeners.size === 0) {
125
+ this.startCrashWatcher();
126
+ }
127
+ const id = Symbol();
128
+ this.crashListeners.set(id, callback);
129
+ return id;
130
+ }
131
+ removeCrashListener(id) {
132
+ this.crashListeners.delete(id);
133
+ if (this.crashListeners.size === 0) {
134
+ this.stopCrashWatcher();
135
+ }
136
+ }
137
+ async navigateToLocation(location) {
138
+ return this.flipperServer.exec('device-navigate', this.serial, location);
139
+ }
140
+ async installApp(appBundlePath, timeout) {
141
+ return timeout
142
+ ? this.flipperServer.exec({ timeout }, 'device-install-app', this.serial, appBundlePath)
143
+ : this.flipperServer.exec('device-install-app', this.serial, appBundlePath);
144
+ }
145
+ async screenshot() {
146
+ if (!this.description.features.screenshotAvailable || this.isArchived) {
147
+ return;
148
+ }
149
+ return js_base64_1.Base64.toUint8Array(await this.flipperServer.exec('device-take-screenshot', this.serial));
150
+ }
151
+ async startScreenCapture(destination) {
152
+ return this.flipperServer.exec('device-start-screencapture', this.serial, destination);
153
+ }
154
+ async stopScreenCapture() {
155
+ return this.flipperServer.exec('device-stop-screencapture', this.serial);
156
+ }
157
+ async executeShell(command) {
158
+ return this.flipperServer.exec('device-shell-exec', this.serial, command);
159
+ }
160
+ async sendMetroCommand(command) {
161
+ return this.flipperServer.exec('metro-command', this.serial, command);
162
+ }
163
+ async forwardPort(local, remote) {
164
+ return this.flipperServer.exec('device-forward-port', this.serial, local, remote);
165
+ }
166
+ async clearLogs() {
167
+ return this.flipperServer.exec('device-clear-logs', this.serial);
168
+ }
169
+ supportsPlugin(plugin) {
170
+ var _a, _b, _c, _d;
171
+ let pluginDetails;
172
+ if (plugin instanceof flipper_plugin_core_1._SandyPluginDefinition) {
173
+ pluginDetails = plugin.details;
174
+ if (!pluginDetails.pluginType && !pluginDetails.supportedDevices) {
175
+ if (plugin instanceof flipper_plugin_core_1._SandyPluginDefinition) {
176
+ return (plugin.isDevicePlugin &&
177
+ ((_c = (_b = (_a = plugin.asDevicePluginModule()).supportsDevice) === null || _b === void 0 ? void 0 : _b.call(_a, this)) !== null && _c !== void 0 ? _c : false));
178
+ }
179
+ else {
180
+ return plugin.supportsDevice(this);
181
+ }
182
+ }
183
+ }
184
+ else {
185
+ pluginDetails = plugin;
186
+ }
187
+ return (pluginDetails.pluginType === 'device' &&
188
+ (!pluginDetails.supportedDevices ||
189
+ ((_d = pluginDetails.supportedDevices) === null || _d === void 0 ? void 0 : _d.some((d) => (!d.os || d.os === this.os) &&
190
+ (!d.type || d.type === this.deviceType) &&
191
+ (d.archived === undefined || d.archived === this.isArchived) &&
192
+ (!d.specs || d.specs.every((spec) => this.specs.includes(spec)))))));
193
+ }
194
+ loadDevicePlugins(devicePlugins, enabledDevicePlugins, pluginStates) {
195
+ if (!devicePlugins) {
196
+ return;
197
+ }
198
+ const plugins = Array.from(devicePlugins.values()).filter((p) => enabledDevicePlugins === null || enabledDevicePlugins === void 0 ? void 0 : enabledDevicePlugins.has(p.id));
199
+ for (const plugin of plugins) {
200
+ this.loadDevicePlugin(plugin, pluginStates === null || pluginStates === void 0 ? void 0 : pluginStates[plugin.id]);
201
+ }
202
+ }
203
+ loadDevicePlugin(plugin, initialState) {
204
+ if (!this.supportsPlugin(plugin)) {
205
+ return;
206
+ }
207
+ this.hasDevicePlugins = true;
208
+ if (plugin instanceof flipper_plugin_core_1._SandyPluginDefinition) {
209
+ try {
210
+ const pluginInstance = new flipper_plugin_core_1._SandyDevicePluginInstance(this.serverAddOnControls, (0, flipper_plugin_core_1.getFlipperLib)(), plugin, this, (0, pluginKey_1.getPluginKey)(undefined, { serial: this.serial }, plugin.id), initialState);
211
+ if (this.pluginErrorHandler) {
212
+ pluginInstance.events.on('error', this.pluginErrorHandler);
213
+ }
214
+ this.sandyPluginStates.set(plugin.id, pluginInstance);
215
+ }
216
+ catch (e) {
217
+ console.error(`Failed to start device plugin '${plugin.id}': `, e);
218
+ }
219
+ }
220
+ }
221
+ unloadDevicePlugin(pluginId) {
222
+ const instance = this.sandyPluginStates.get(pluginId);
223
+ if (instance) {
224
+ instance.destroy();
225
+ this.sandyPluginStates.delete(pluginId);
226
+ }
227
+ }
228
+ disconnect() {
229
+ this.logListeners.clear();
230
+ this.stopLogging();
231
+ this.crashListeners.clear();
232
+ this.stopCrashWatcher();
233
+ this.connected.set(false);
234
+ }
235
+ destroy() {
236
+ this.disconnect();
237
+ this.sandyPluginStates.forEach((instance) => {
238
+ instance.destroy();
239
+ });
240
+ this.sandyPluginStates.clear();
241
+ this.serverAddOnControls.unsubscribe();
242
+ }
243
+ }
244
+ exports.default = BaseDevice;
245
+ //# sourceMappingURL=BaseDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseDevice.js","sourceRoot":"","sources":["../../src/devices/BaseDevice.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DeviceOS, DeviceType } from 'flipper-plugin-core';
2
+ import { DeviceSpec } from 'flipper-common';
3
+ import BaseDevice from './BaseDevice';
4
+ export declare class TestDevice extends BaseDevice {
5
+ constructor(serial: string, deviceType: DeviceType, title: string, os: DeviceOS, specs?: DeviceSpec[]);
6
+ startLogging(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=TestDevice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestDevice.d.ts","sourceRoot":"","sources":["../../src/devices/TestDevice.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC1C,OAAO,UAAU,MAAM,cAAc,CAAC;AAGtC,qBAAa,UAAW,SAAQ,UAAU;gBAEtC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,QAAQ,EACZ,KAAK,CAAC,EAAE,UAAU,EAAE;IAehB,YAAY;CAGnB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TestDevice = void 0;
7
+ const BaseDevice_1 = __importDefault(require("./BaseDevice"));
8
+ const RenderHost_1 = require("../RenderHost");
9
+ class TestDevice extends BaseDevice_1.default {
10
+ constructor(serial, deviceType, title, os, specs) {
11
+ super((0, RenderHost_1.getRenderHostInstance)().flipperServer, {
12
+ serial,
13
+ deviceType,
14
+ title,
15
+ os,
16
+ specs,
17
+ features: {
18
+ screenCaptureAvailable: false,
19
+ screenshotAvailable: false,
20
+ },
21
+ });
22
+ }
23
+ async startLogging() {
24
+ }
25
+ }
26
+ exports.TestDevice = TestDevice;
27
+ //# sourceMappingURL=TestDevice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestDevice.js","sourceRoot":"","sources":["../../src/devices/TestDevice.tsx"],"names":[],"mappings":";;;;;;AAWA,8DAAsC;AACtC,8CAAoD;AAEpD,MAAa,UAAW,SAAQ,oBAAU;IACxC,YACE,MAAc,EACd,UAAsB,EACtB,KAAa,EACb,EAAY,EACZ,KAAoB;QAEpB,KAAK,CAAC,IAAA,kCAAqB,GAAE,CAAC,aAAa,EAAE;YAC3C,MAAM;YACN,UAAU;YACV,KAAK;YACL,EAAE;YACF,KAAK;YACL,QAAQ,EAAE;gBACR,sBAAsB,EAAE,KAAK;gBAC7B,mBAAmB,EAAE,KAAK;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;IAElB,CAAC;CACF;AAxBD,gCAwBC"}
@@ -0,0 +1,5 @@
1
+ declare const _default: Readonly<{
2
+ IS_PUBLIC_BUILD: boolean;
3
+ }>;
4
+ export default _default;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/fb/constants.tsx"],"names":[],"mappings":";;;AAMA,wBAEG"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = Object.freeze({
4
+ IS_PUBLIC_BUILD: false,
5
+ });
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/fb/constants.tsx"],"names":[],"mappings":";;AAMA,kBAAe,MAAM,CAAC,MAAM,CAAC;IAC3B,eAAe,EAAE,KAAK;CACvB,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ declare const _default: Readonly<{
2
+ IS_PUBLIC_BUILD: boolean;
3
+ }>;
4
+ export default _default;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/fb-stubs/constants.tsx"],"names":[],"mappings":";;;AASA,wBAEG"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = Object.freeze({
4
+ IS_PUBLIC_BUILD: true,
5
+ });
6
+ //# sourceMappingURL=constants.js.map