Skip to content

Commit

Permalink
chore: add devtools-protocol ts definition
Browse files Browse the repository at this point in the history
  • Loading branch information
surunzi committed Aug 9, 2024
1 parent 4365260 commit 0dfc49b
Show file tree
Hide file tree
Showing 14 changed files with 167 additions and 68 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@
"dependencies": {
"axios": "^0.27.2",
"core-js": "^3.26.1",
"devtools-protocol": "^0.0.1339468",
"html2canvas": "^1.4.1",
"licia": "^1.38.0",
"licia": "^1.41.1",
"luna-dom-highlighter": "^1.0.2"
},
"devDependencies": {
Expand Down
26 changes: 20 additions & 6 deletions src/domains/CSS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import escapeRegExp from 'licia/escapeRegExp'
import connector from '../lib/connector'
import mutationObserver from '../lib/mutationObserver'
import { MAIN_FRAME_ID } from '../lib/constants'
import Protocol from 'devtools-protocol'
import CSS = Protocol.CSS

let proxy = ''
export function setProxy(params: any) {
Expand All @@ -36,7 +38,9 @@ export function enable() {
})
}

export function getComputedStyleForNode(params: any) {
export function getComputedStyleForNode(
params: CSS.GetComputedStyleForNodeRequest
): CSS.GetComputedStyleForNodeResponse {
const node = getNode(params.nodeId)

const computedStyle: any = stylesheet.formatStyle(
Expand All @@ -48,7 +52,9 @@ export function getComputedStyleForNode(params: any) {
}
}

export function getInlineStylesForNode(params: any) {
export function getInlineStylesForNode(
params: CSS.GetInlineStylesForNodeRequest
) {
const { nodeId } = params
const node = getNode(nodeId)
const { style } = node
Expand Down Expand Up @@ -105,7 +111,9 @@ export function getInlineStylesForNode(params: any) {
}
}

export function getMatchedStylesForNode(params: any) {
export function getMatchedStylesForNode(
params: CSS.GetMatchedStylesForNodeRequest
): CSS.GetMatchedStylesForNodeResponse {
const node = getNode(params.nodeId)
const matchedCSSRules = stylesheet.getMatchedCssRules(node)

Expand All @@ -117,7 +125,9 @@ export function getMatchedStylesForNode(params: any) {
}
}

export function getBackgroundColors(params: any) {
export function getBackgroundColors(
params: CSS.GetBackgroundColorsRequest
): CSS.GetBackgroundColorsResponse {
const node = getNode(params.nodeId)

const computedStyle: any = stylesheet.formatStyle(
Expand All @@ -131,7 +141,9 @@ export function getBackgroundColors(params: any) {
}
}

export async function getStyleSheetText(params: any) {
export async function getStyleSheetText(
params: CSS.GetStyleSheetTextRequest
): Promise<CSS.GetStyleSheetTextResponse> {
const { styleSheetId } = params

const nodeId = stylesheet.getInlineStyleNodeId(styleSheetId)
Expand All @@ -148,7 +160,9 @@ export async function getStyleSheetText(params: any) {
}
}

export function setStyleTexts(params: any) {
export function setStyleTexts(
params: CSS.SetStyleTextsRequest
): CSS.SetStyleTextsResponse {
const { edits } = params
const styles = map(edits, (edit: any) => {
const { styleSheetId, text, range } = edit
Expand Down
5 changes: 4 additions & 1 deletion src/domains/CacheStorage.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
export function requestCacheNames() {
import Protocol from 'devtools-protocol'
import CacheStorage = Protocol.CacheStorage

export function requestCacheNames(): CacheStorage.RequestCacheNamesResponse {
return {
caches: [],
}
Expand Down
69 changes: 49 additions & 20 deletions src/domains/DOM.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@ import xpath from 'licia/xpath'
import concat from 'licia/concat'
import { setGlobal } from '../lib/evaluate'
import { createId } from '../lib/util'
import Protocol from 'devtools-protocol'
import DOM = Protocol.DOM

export function collectClassNamesFromSubtree(params: any) {
export function collectClassNamesFromSubtree(
params: DOM.CollectClassNamesFromSubtreeRequest
): DOM.CollectClassNamesFromSubtreeResponse {
const node = getNode(params.nodeId)

const classNames: string[] = []
Expand All @@ -38,14 +42,18 @@ export function collectClassNamesFromSubtree(params: any) {
}
}

export function copyTo(params: any) {
export function copyTo(params: DOM.CopyToRequest): DOM.CopyToResponse {
const { nodeId, targetNodeId } = params

const node = getNode(nodeId)
const targetNode = getNode(targetNodeId)

const cloneNode = node.cloneNode(true)
targetNode.appendChild(cloneNode)

return {
nodeId: getNodeId(cloneNode),
}
}

export function enable() {
Expand All @@ -61,26 +69,39 @@ export function getDocument() {
}
}

export function getOuterHTML(params: any) {
const node = getNode(params.nodeId)
export function getOuterHTML(
params: DOM.GetOuterHTMLRequest
): DOM.GetOuterHTMLResponse {
let outerHTML = ''

if (params.nodeId) {
const node = getNode(params.nodeId)
outerHTML = node.outerHTML
}

return {
outerHTML: node.outerHTML,
outerHTML,
}
}

export function moveTo(params: any) {
export function moveTo(params: DOM.MoveToRequest): DOM.MoveToResponse {
const { nodeId, targetNodeId } = params

const node = getNode(nodeId)
const targetNode = getNode(targetNodeId)

targetNode.appendChild(node)

return {
nodeId: getNodeId(node),
}
}

const searchResults = new Map()

export function performSearch(params: any) {
export function performSearch(
params: DOM.PerformSearchRequest
): DOM.PerformSearchResponse {
const query = lowerCase(params.query)
let result: any[] = []

Expand Down Expand Up @@ -130,7 +151,9 @@ export function performSearch(params: any) {
}
}

export function getSearchResults(params: any) {
export function getSearchResults(
params: DOM.GetSearchResultsRequest
): DOM.GetSearchResultsResponse {
const { searchId, fromIndex, toIndex } = params

const searchResult = searchResults.get(searchId)
Expand Down Expand Up @@ -175,23 +198,25 @@ export function pushNodesToFrontend(node: any) {
return getNodeId(node)
}

export function discardSearchResults(params: any) {
export function discardSearchResults(params: DOM.DiscardSearchResultsRequest) {
searchResults.delete(params.searchId)
}

export function pushNodesByBackendIdsToFrontend(params: any) {
export function pushNodesByBackendIdsToFrontend(
params: DOM.PushNodesByBackendIdsToFrontendRequest
): DOM.PushNodesByBackendIdsToFrontendResponse {
return {
nodeIds: params.backendNodeIds,
}
}

export function removeNode(params: any) {
export function removeNode(params: DOM.RemoveNodeRequest) {
const node = getNode(params.nodeId)

$(node).remove()
}

export function requestChildNodes(params: any) {
export function requestChildNodes(params: DOM.RequestChildNodesRequest) {
const { nodeId, depth = 1 } = params
const node = getNode(nodeId)

Expand All @@ -201,23 +226,27 @@ export function requestChildNodes(params: any) {
})
}

export function requestNode(params: any) {
export function requestNode(
params: DOM.RequestNodeRequest
): DOM.RequestNodeResponse {
const node = objManager.getObj(params.objectId)

return {
nodeId: getNodeId(node),
}
}

export function resolveNode(params: any) {
const node = getNode(params.nodeId)
export function resolveNode(
params: DOM.ResolveNodeRequest
): DOM.ResolveNodeResponse {
const node = getNode(params.nodeId as number)

return {
object: objManager.wrap(node),
}
}

export function setAttributesAsText(params: any) {
export function setAttributesAsText(params: DOM.SetAttributesAsTextRequest) {
const { name, text, nodeId } = params

const node = getNode(nodeId)
Expand All @@ -227,15 +256,15 @@ export function setAttributesAsText(params: any) {
$(node).attr(parseAttributes(text))
}

export function setAttributeValue(params: any) {
export function setAttributeValue(params: DOM.SetAttributeValueRequest) {
const { nodeId, name, value } = params
const node = getNode(nodeId)
node.setAttribute(name, value)
}

const history: any[] = []

export function setInspectedNode(params: any) {
export function setInspectedNode(params: DOM.SetInspectedNodeRequest) {
const node = getNode(params.nodeId)
history.unshift(node)
if (history.length > 5) history.pop()
Expand All @@ -244,13 +273,13 @@ export function setInspectedNode(params: any) {
}
}

export function setNodeValue(params: any) {
export function setNodeValue(params: DOM.SetNodeValueRequest) {
const { nodeId, value } = params
const node = getNode(nodeId)
node.nodeValue = value
}

export function setOuterHTML(params: any) {
export function setOuterHTML(params: DOM.SetOuterHTMLRequest) {
const { nodeId, outerHTML } = params

const node = getNode(nodeId)
Expand Down
6 changes: 5 additions & 1 deletion src/domains/DOMDebugger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@ import each from 'licia/each'
import defaults from 'licia/defaults'
import isObj from 'licia/isObj'
import * as objManager from '../lib/objManager'
import Protocol from 'devtools-protocol'
import DOMDebugger = Protocol.DOMDebugger

export function getEventListeners(params: any) {
export function getEventListeners(
params: DOMDebugger.GetEventListenersRequest
): DOMDebugger.GetEventListenersResponse {
const obj = objManager.getObj(params.objectId)

const events = obj.chobitsuEvents || []
Expand Down
14 changes: 10 additions & 4 deletions src/domains/DOMStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,22 @@ import once from 'licia/once'
import jsonClone from 'licia/jsonClone'
import connector from '../lib/connector'
import detectBrowser from 'licia/detectBrowser'
import Protocol from 'devtools-protocol'
import DOMStorage = Protocol.DOMStorage

const localStore = safeStorage('local')
const sessionStore = safeStorage('session')
const browser = detectBrowser()

export function clear(params: any) {
export function clear(params: DOMStorage.ClearRequest) {
const store = getStore(params.storageId)

store.clear()
}

export function getDOMStorageItems(params: any) {
export function getDOMStorageItems(
params: DOMStorage.GetDOMStorageItemsRequest
): DOMStorage.GetDOMStorageItemsResponse {
const store = getStore(params.storageId)

const entries: string[][] = []
Expand All @@ -32,15 +36,17 @@ export function getDOMStorageItems(params: any) {
}
}

export function removeDOMStorageItem(params: any) {
export function removeDOMStorageItem(
params: DOMStorage.RemoveDOMStorageItemRequest
) {
const { key, storageId } = params

const store = getStore(storageId)

store.removeItem(key)
}

export function setDOMStorageItem(params: any) {
export function setDOMStorageItem(params: DOMStorage.SetDOMStorageItemRequest) {
const { key, value, storageId } = params

const store = getStore(storageId)
Expand Down
6 changes: 5 additions & 1 deletion src/domains/Debugger.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import connector from '../lib/connector'
import * as scriptMananger from '../lib/scriptMananger'
import each from 'licia/each'
import Protocol from 'devtools-protocol'
import Debugger = Protocol.Debugger

let proxy = ''

Expand All @@ -14,7 +16,9 @@ export function enable() {
})
}

export async function getScriptSource(params: any) {
export async function getScriptSource(
params: Debugger.GetScriptSourceRequest
): Promise<Debugger.GetScriptSourceResponse> {
return {
scriptSource: await scriptMananger.getScriptSource(params.scriptId, proxy),
}
Expand Down
Loading

0 comments on commit 0dfc49b

Please sign in to comment.