{"id":20446078,"url":"https://github.com/dimacpp/webview-query","last_synced_at":"2026-04-24T20:03:46.842Z","repository":{"id":143928581,"uuid":"117205291","full_name":"dimacpp/webview-query","owner":"dimacpp","description":"Utility node.js library for Chrome Webview traversal and manipulation.","archived":false,"fork":false,"pushed_at":"2020-09-01T09:34:47.000Z","size":52,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-09T01:41:53.041Z","etag":null,"topics":["node-js","node-webkit","nwjs"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimacpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-12T06:56:47.000Z","updated_at":"2020-09-01T09:33:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"477b37c4-5042-4042-9c0a-89b208cd9160","html_url":"https://github.com/dimacpp/webview-query","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/dimacpp/webview-query","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimacpp%2Fwebview-query","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimacpp%2Fwebview-query/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimacpp%2Fwebview-query/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimacpp%2Fwebview-query/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimacpp","download_url":"https://codeload.github.com/dimacpp/webview-query/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimacpp%2Fwebview-query/sbom","scorecard":{"id":343130,"data":{"date":"2025-08-11","repo":{"name":"github.com/dimacpp/webview-query","commit":"d3937b28a5ead4691b15bc11eb178eca63922683"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/dimacpp/webview-query/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/dimacpp/webview-query/publish.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-18T06:25:20.637Z","repository_id":143928581,"created_at":"2025-08-18T06:25:20.637Z","updated_at":"2025-08-18T06:25:20.637Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32238748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["node-js","node-webkit","nwjs"],"created_at":"2024-11-15T10:17:27.473Z","updated_at":"2026-04-24T20:03:46.826Z","avatar_url":"https://github.com/dimacpp.png","language":"JavaScript","readme":"﻿# webview-query\nUtility node.js library for [Chrome Webview](https://developer.chrome.com/apps/tags/webview) traversal and manipulation.\n\n[![no dependencies](https://img.shields.io/badge/dependencies-none-green.svg)]()\n\n## Install\n`npm install webview-query --save`\n\n## Example\n\nFor example, you have NW.js app with webview tag within.\n\n`html:`\n\n    \u003cwebview id=\"view1\"\u003e\u003c/webview\u003e\n\n`js:`\n\n    const { Webview } = require('webview-query');\n    const webview = new Webview(view1);\n\n    // inside async function:\n\n    await webview.location('https://github.com');\n    console.log(await webview.title());\n    // -\u003e \"The world's leading software development platform · GitHub\"\n\n    console.log(await webview.text('.jumbotron h1'));\n    // -\u003e \"Built for developers\"\n\n    webview.val('form.home-hero-signup input[id=\"user[login]\"]', 'Hello GitHub!');\n\n## Classes\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#Webview\"\u003eWebview\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003c/dd\u003e\n\u003c/dl\u003e\n\n## External\n\n\u003cdl\u003e\n\u003cdt\u003e\u003ca href=\"#external_webview\"\u003ewebview\u003c/a\u003e\u003c/dt\u003e\n\u003cdd\u003e\u003cp\u003eChrome webview element\u003c/p\u003e\n\u003c/dd\u003e\n\u003c/dl\u003e\n\n\u003ca name=\"Webview\"\u003e\u003c/a\u003e\n\n## Webview\n**Kind**: global class  \n\n* [Webview](#Webview)\n    * [new Webview(webview)](#new_Webview_new)\n    * [.webview](#Webview+webview) : [\u003ccode\u003ewebview\u003c/code\u003e](#external_webview)\n    * [.runJs(code)](#Webview+runJs) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.title(value)](#Webview+title) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.location(value)](#Webview+location) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.exists(selector)](#Webview+exists) ⇒ \u003ccode\u003ePromise.\u0026lt;boolean\u0026gt;\u003c/code\u003e\n    * [.length(selector)](#Webview+length) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\n    * [.val(selector, value)](#Webview+val) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.attr(selector, attribute, value)](#Webview+attr) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.text(selector, value)](#Webview+text) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.html(selector, value, [options])](#Webview+html) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n    * [.click(selector)](#Webview+click) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\n\n\u003ca name=\"new_Webview_new\"\u003e\u003c/a\u003e\n\n### new Webview(webview)\nWebview is a class for Chrome webview promise-based traversal and manipulation.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| webview | [\u003ccode\u003ewebview\u003c/code\u003e](#external_webview) | Chrome webview element. |\n\n\u003ca name=\"Webview+webview\"\u003e\u003c/a\u003e\n\n### webview.webview : [\u003ccode\u003ewebview\u003c/code\u003e](#external_webview)\n**Kind**: instance property of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\u003ca name=\"Webview+runJs\"\u003e\u003c/a\u003e\n\n### webview.runJs(code) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nRun arbitrary javascript code inside webview context.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n**Returns**: \u003ccode\u003ePromise\u003c/code\u003e - Promise object represents the result of the script.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| code | \u003ccode\u003estring\u003c/code\u003e | Javascript code. |\n\n\u003ca name=\"Webview+title\"\u003e\u003c/a\u003e\n\n### webview.title(value) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet webview document new title.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | \u003ccode\u003estring\u003c/code\u003e | New document title. |\n\n\u003ca name=\"Webview+location\"\u003e\u003c/a\u003e\n\n### webview.location(value) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet webview new location.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | \u003ccode\u003estring\u003c/code\u003e | URL or path to local file. |\n\n\u003ca name=\"Webview+exists\"\u003e\u003c/a\u003e\n\n### webview.exists(selector) ⇒ \u003ccode\u003ePromise.\u0026lt;boolean\u0026gt;\u003c/code\u003e\nCheck the existence of an element(s).\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;boolean\u0026gt;\u003c/code\u003e - Promise object represents the element(s) existence.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n\n\u003ca name=\"Webview+length\"\u003e\u003c/a\u003e\n\n### webview.length(selector) ⇒ \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e\nReturn number of elements matched by selector.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n**Returns**: \u003ccode\u003ePromise.\u0026lt;number\u0026gt;\u003c/code\u003e - Promise object represents the number of elements currently matched..  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n\n\u003ca name=\"Webview+val\"\u003e\u003c/a\u003e\n\n### webview.val(selector, value) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet the value of every matched element.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n| value | \u003ccode\u003estring\u003c/code\u003e | Value to set. |\n\n\u003ca name=\"Webview+attr\"\u003e\u003c/a\u003e\n\n### webview.attr(selector, attribute, value) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet an attribute for every matched element.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n| attribute | \u003ccode\u003estring\u003c/code\u003e | The name of the attribute to set. |\n| value | \u003ccode\u003estring\u003c/code\u003e | A value to set for the attribute.. |\n\n\u003ca name=\"Webview+text\"\u003e\u003c/a\u003e\n\n### webview.text(selector, value) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet the text contents of the matched elements.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n| value | \u003ccode\u003estring\u003c/code\u003e | The text to set as the content of each matched element. |\n\n\u003ca name=\"Webview+html\"\u003e\u003c/a\u003e\n\n### webview.html(selector, value, [options]) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nSet the HTML contents of every matched element.\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n| value | \u003ccode\u003estring\u003c/code\u003e | A string of HTML to set as the content of each matched element. |\n| [options] | \u003ccode\u003eobject\u003c/code\u003e | Options. |\n| [options.outer] | \u003ccode\u003eboolean\u003c/code\u003e | If true the result will be outer HTML, inner HTML otherwise. |\n\n\u003ca name=\"Webview+click\"\u003e\u003c/a\u003e\n\n### webview.click(selector) ⇒ \u003ccode\u003ePromise\u003c/code\u003e\nExecute click action for the matched element(s).\n\n**Kind**: instance method of [\u003ccode\u003eWebview\u003c/code\u003e](#Webview)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| selector | \u003ccode\u003estring\u003c/code\u003e | CSS selector. |\n\n\u003ca name=\"external_webview\"\u003e\u003c/a\u003e\n\n## webview\nChrome webview element\n\n**Kind**: global external  \n**See**: [https://developer.chrome.com/apps/tags/webview](https://developer.chrome.com/apps/tags/webview)  \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimacpp%2Fwebview-query","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimacpp%2Fwebview-query","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimacpp%2Fwebview-query/lists"}