From 15f3d882d9ae592b9c9a46ab0cb0a79a50567e13 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Sun, 25 Oct 2020 18:16:32 -0700 Subject: [PATCH] fix(ios): devtools inspector_modules --- .../debugger/InspectorBackendCommands.ios.ts | 8 ++++ .../core/debugger/devtools-elements.common.ts | 2 +- packages/core/debugger/dom-node.d.ts | 4 +- packages/core/debugger/dom-node.ts | 2 +- packages/core/debugger/tsconfig.debugger.json | 19 +++++++++ .../core/debugger/webinspector-css.ios.ts | 1 + .../core/debugger/webinspector-dom.ios.ts | 1 + .../core/debugger/webinspector-network.ios.ts | 2 + packages/core/inspector_modules.ios.ts | 40 +++++++++++++++++-- 9 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 packages/core/debugger/tsconfig.debugger.json diff --git a/packages/core/debugger/InspectorBackendCommands.ios.ts b/packages/core/debugger/InspectorBackendCommands.ios.ts index 6fde5b794..2f3c070c6 100644 --- a/packages/core/debugger/InspectorBackendCommands.ios.ts +++ b/packages/core/debugger/InspectorBackendCommands.ios.ts @@ -50,6 +50,7 @@ export namespace HeapDomain { // Returns the strongly referenced Runtime.RemoteObject for a Heap.HeapObjectId. getRemoteObject(params: GetRemoteObjectMethodArguments): { result: RuntimeDomain.RemoteObject }; } + @NativeClass() export class HeapFrontend { // Information about the garbage collection. garbageCollected(collection: GarbageCollection): void { @@ -325,6 +326,7 @@ export namespace DebuggerDomain { // Sets overlay message. setOverlayMessage(params: SetOverlayMessageMethodArguments): void; } + @NativeClass() export class DebuggerFrontend { // Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload. globalObjectCleared(): void { @@ -758,6 +760,7 @@ export namespace RuntimeDomain { // Returns a list of basic blocks for the given sourceID with information about their text ranges and whether or not they have executed. getBasicBlocks(params: GetBasicBlocksMethodArguments): { basicBlocks: BasicBlock[] }; } + @NativeClass() export class RuntimeFrontend { // Issued when new execution context is created. executionContextCreated(context: ExecutionContextDescription): void { @@ -832,6 +835,7 @@ export namespace ConsoleDomain { // Enables console to refer to the node with given id via $0 (see Command Line API for more details). addInspectedNode(params: AddInspectedNodeMethodArguments): void; } + @NativeClass() export class ConsoleFrontend { // Issued when new console message is added. messageAdded(message: ConsoleMessage): void { @@ -1130,6 +1134,7 @@ export namespace PageDomain { // Grab an archive of the page. archive(): { data: string }; } + @NativeClass() export class PageFrontend { domContentEventFired(timestamp: number): void { __inspectorSendEvent( @@ -1377,6 +1382,7 @@ export namespace NetworkDomain { // Loads a resource in the context of a frame on the inspected page without cross origin checks. loadResource(params: LoadResourceMethodArguments): { content: string; mimeType: string; status: number }; } + @NativeClass() export class NetworkFrontend { // Fired when page is about to send HTTP request. requestWillBeSent(requestId: RequestId, frameId: FrameId, loaderId: LoaderId, documentURL: string, request: Request, timestamp: Timestamp, initiator: Initiator, redirectResponse?: Response, type?: PageDomain.ResourceType): void { @@ -1750,6 +1756,7 @@ export namespace DOMDomain { // Resolves JavaScript node object for given node id. resolveNode(params: ResolveNodeMethodArguments): { object: RuntimeDomain.RemoteObject }; } + @NativeClass() export class DOMFrontend { // Fired when Document has been totally updated. Node ids are no longer valid. documentUpdated(): void { @@ -2133,6 +2140,7 @@ export namespace CSSDomain { // Returns the current textual content and the URL for a stylesheet. getStyleSheetText(params: GetStyleSheetTextMethodArguments): { text: string }; } + @NativeClass() export class CSSFrontend { // Fires whenever a MediaQuery result changes (for example, after a browser window has been resized.) The current implementation considers only viewport-dependent media features. mediaQueryResultChanged(): void { diff --git a/packages/core/debugger/devtools-elements.common.ts b/packages/core/debugger/devtools-elements.common.ts index c1e9f00b7..9ded50a01 100644 --- a/packages/core/debugger/devtools-elements.common.ts +++ b/packages/core/debugger/devtools-elements.common.ts @@ -1,5 +1,5 @@ // Types -import { ViewBase } from '../ui/core/view-base'; +import type { ViewBase } from '../ui/core/view-base'; //Requires import { getNodeById } from './dom-node'; diff --git a/packages/core/debugger/dom-node.d.ts b/packages/core/debugger/dom-node.d.ts index dbbe4e070..39fe817d2 100644 --- a/packages/core/debugger/dom-node.d.ts +++ b/packages/core/debugger/dom-node.d.ts @@ -1,5 +1,5 @@ -import { ViewBase } from '../ui/core/view-base'; -import { CSSComputedStyleProperty } from './css-agent'; +import type { ViewBase } from '../ui/core/view-base'; +import type { CSSComputedStyleProperty } from './css-agent'; export declare function getNodeById(id: number): DOMNode; declare class WeakRef { constructor(obj: T); diff --git a/packages/core/debugger/dom-node.ts b/packages/core/debugger/dom-node.ts index 6c167c775..6ad46fcd1 100644 --- a/packages/core/debugger/dom-node.ts +++ b/packages/core/debugger/dom-node.ts @@ -2,7 +2,7 @@ import { CSSComputedStyleProperty } from './css-agent'; import { InspectorEvents } from './devtools-elements-interfaces'; // Needed for typings only -import { ViewBase } from '../ui/core/view-base'; +import type { ViewBase } from '../ui/core/view-base'; const registeredDomNodes = {}; const ELEMENT_NODE_TYPE = 1; diff --git a/packages/core/debugger/tsconfig.debugger.json b/packages/core/debugger/tsconfig.debugger.json new file mode 100644 index 000000000..5fd9d166f --- /dev/null +++ b/packages/core/debugger/tsconfig.debugger.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "outDir": "../../../dist/packages/core/debugger", + "rootDirs": ["."], + "module": "commonjs", + "target": "es5", + "moduleResolution": "node", + "declaration": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "noEmitHelpers": false, + "noEmitOnError": true, + "removeComments": true, + "skipLibCheck": true, + "baseUrl": "." + }, + "include": ["../references.d.ts", "./devtools-elements-interfaces.ts"], + "files": ["index.ts", "devtools-elements.common.ts", "devtools-elements.android.ts", "devtools-elements.ios.ts", "dom-node.ts", "InspectorBackendCommands.ios.ts", "webinspector-css.ios.ts", "webinspector-dom.ios.ts", "webinspector-network.ios.ts"] +} diff --git a/packages/core/debugger/webinspector-css.ios.ts b/packages/core/debugger/webinspector-css.ios.ts index bd02bde6b..08e8d5cfc 100644 --- a/packages/core/debugger/webinspector-css.ios.ts +++ b/packages/core/debugger/webinspector-css.ios.ts @@ -5,6 +5,7 @@ import * as debuggerDomains from '.'; import { attachCSSInspectorCommandCallbacks } from './devtools-elements'; +@NativeClass() @inspectorCommands.DomainDispatcher('CSS') export class CSSDomainDebugger implements inspectorCommandTypes.CSSDomain.CSSDomainDispatcher { private _enabled: boolean; diff --git a/packages/core/debugger/webinspector-dom.ios.ts b/packages/core/debugger/webinspector-dom.ios.ts index 302d67a3b..ab0123211 100644 --- a/packages/core/debugger/webinspector-dom.ios.ts +++ b/packages/core/debugger/webinspector-dom.ios.ts @@ -5,6 +5,7 @@ import * as debuggerDomains from '.'; import { attachDOMInspectorEventCallbacks, attachDOMInspectorCommandCallbacks } from './devtools-elements'; +@NativeClass() @inspectorCommands.DomainDispatcher('DOM') export class DOMDomainDebugger implements inspectorCommandTypes.DOMDomain.DOMDomainDispatcher { private _enabled: boolean; diff --git a/packages/core/debugger/webinspector-network.ios.ts b/packages/core/debugger/webinspector-network.ios.ts index 21d27bce9..653cee8fb 100644 --- a/packages/core/debugger/webinspector-network.ios.ts +++ b/packages/core/debugger/webinspector-network.ios.ts @@ -31,6 +31,7 @@ const documentTypeByMimeType = { 'text/typescript': 'Script', }; +@NativeClass() export class Request { private _resourceType: string; private _data: any; @@ -118,6 +119,7 @@ export class Request { } } +@NativeClass() @inspectorCommands.DomainDispatcher('Network') export class NetworkDomainDebugger implements inspectorCommandTypes.NetworkDomain.NetworkDomainDispatcher { private _enabled: boolean; diff --git a/packages/core/inspector_modules.ios.ts b/packages/core/inspector_modules.ios.ts index b228c93d4..cf4c0bddb 100644 --- a/packages/core/inspector_modules.ios.ts +++ b/packages/core/inspector_modules.ios.ts @@ -1,6 +1,38 @@ console.log('Loading inspector modules...'); -import './globals'; -require('./debugger/webinspector-network'); -require('./debugger/webinspector-dom'); -require('./debugger/webinspector-css'); +// ts-helpers +// Required by V8 snapshot generator +if (!(global).__extends) { + (global).__extends = function (d, b) { + for (let p in b) { + if (b.hasOwnProperty(p)) { + d[p] = b[p]; + } + } + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __()); + }; +} + +import * as tslib from 'tslib'; + +// Bind the tslib helpers to global scope. +// This is needed when we don't use importHelpers, which +// breaks extending native-classes +for (const fnName of Object.keys(tslib)) { + if (typeof tslib[fnName] !== 'function') { + continue; + } + + if (fnName in global) { + // Don't override globals that are already defined (ex. __extends) + continue; + } + + global[fnName] = tslib[fnName]; +} +import './debugger/webinspector-network'; +import './debugger/webinspector-dom'; +import './debugger/webinspector-css'; console.log('Finished loading inspector modules.');