get rid of polyfill since this is just chrome anyway.

This commit is contained in:
fiatjaf
2022-12-18 06:59:49 -03:00
committed by fiatjaf
parent 546a6d35ef
commit a935a8c026
9 changed files with 52 additions and 54 deletions

View File

@@ -1,5 +1,6 @@
{ {
"root": true, "root": true,
"parserOptions": { "parserOptions": {
"ecmaVersion": 2020, "ecmaVersion": 2020,
"ecmaFeatures": { "ecmaFeatures": {
@@ -14,12 +15,10 @@
"node": true "node": true
}, },
"plugins": [ "plugins": ["react", "babel"],
"react",
"babel"
],
"globals": { "globals": {
"chrome": false,
"document": false, "document": false,
"navigator": false, "navigator": false,
"window": false, "window": false,
@@ -121,14 +120,25 @@
"no-unexpected-multiline": 2, "no-unexpected-multiline": 2,
"no-unneeded-ternary": [2, {"defaultAssignment": false}], "no-unneeded-ternary": [2, {"defaultAssignment": false}],
"no-unreachable": 2, "no-unreachable": 2,
"no-unused-vars": [2, { "vars": "local", "args": "none", "varsIgnorePattern": "^_"}], "no-unused-vars": [
2,
{"vars": "local", "args": "none", "varsIgnorePattern": "^_"}
],
"no-useless-call": 2, "no-useless-call": 2,
"no-useless-constructor": 2, "no-useless-constructor": 2,
"no-with": 2, "no-with": 2,
"one-var": [0, {"initialized": "never"}], "one-var": [0, {"initialized": "never"}],
"operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }], "operator-linebreak": [
2,
"after",
{"overrides": {"?": "before", ":": "before"}}
],
"padded-blocks": [2, "never"], "padded-blocks": [2, "never"],
"quotes": [2, "single", { "avoidEscape": true, "allowTemplateLiterals": true }], "quotes": [
2,
"single",
{"avoidEscape": true, "allowTemplateLiterals": true}
],
"semi": [2, "never"], "semi": [2, "never"],
"semi-spacing": [2, {"before": false, "after": true}], "semi-spacing": [2, {"before": false, "after": true}],
"space-before-blocks": [2, "always"], "space-before-blocks": [2, "always"],

View File

@@ -1,4 +1,3 @@
import browser from 'webextension-polyfill'
import {validateEvent, signEvent, getEventHash, getPublicKey} from 'nostr-tools' import {validateEvent, signEvent, getEventHash, getPublicKey} from 'nostr-tools'
import {encrypt, decrypt} from 'nostr-tools/nip04' import {encrypt, decrypt} from 'nostr-tools/nip04'
import {Mutex} from 'async-mutex' import {Mutex} from 'async-mutex'
@@ -13,11 +12,11 @@ let openPrompt = null
let promptMutex = new Mutex() let promptMutex = new Mutex()
let releasePromptMutex = () => {} let releasePromptMutex = () => {}
browser.runtime.onInstalled.addListener((_, __, reason) => { chrome.runtime.onInstalled.addListener((_, __, reason) => {
if (reason === 'install') browser.runtime.openOptionsPage() if (reason === 'install') chrome.runtime.openOptionsPage()
}) })
browser.runtime.onMessage.addListener(async (req, sender) => { chrome.runtime.onMessage.addListener(async (req, sender) => {
let {prompt} = req let {prompt} = req
if (prompt) { if (prompt) {
@@ -27,14 +26,14 @@ browser.runtime.onMessage.addListener(async (req, sender) => {
} }
}) })
browser.runtime.onMessageExternal.addListener( chrome.runtime.onMessageExternal.addListener(
async ({type, params}, sender) => { async ({type, params}, sender) => {
let extensionId = new URL(sender.url).host let extensionId = new URL(sender.url).host
return handleContentScriptMessage({type, params, host: extensionId}) return handleContentScriptMessage({type, params, host: extensionId})
} }
) )
browser.windows.onRemoved.addListener(windowId => { chrome.windows.onRemoved.addListener(windowId => {
if (openPrompt) { if (openPrompt) {
handlePromptMessage({condition: 'no'}, null) handlePromptMessage({condition: 'no'}, null)
} }
@@ -58,7 +57,7 @@ async function handleContentScriptMessage({type, params, host}) {
} }
} }
let results = await browser.storage.local.get('private_key') let results = await chrome.storage.local.get('private_key')
if (!results || !results.private_key) { if (!results || !results.private_key) {
return {error: 'no private key found'} return {error: 'no private key found'}
} }
@@ -71,7 +70,7 @@ async function handleContentScriptMessage({type, params, host}) {
return getPublicKey(sk) return getPublicKey(sk)
} }
case 'getRelays': { case 'getRelays': {
let results = await browser.storage.local.get('relays') let results = await chrome.storage.local.get('relays')
return results.relays || {} return results.relays || {}
} }
case 'signEvent': { case 'signEvent': {
@@ -120,7 +119,7 @@ function handlePromptMessage({id, condition, host, level}, sender) {
releasePromptMutex() releasePromptMutex()
if (sender) { if (sender) {
browser.windows.remove(sender.tab.windowId) chrome.windows.remove(sender.tab.windowId)
} }
} }
@@ -138,8 +137,8 @@ async function promptPermission(host, level, params) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
openPrompt = {resolve, reject} openPrompt = {resolve, reject}
browser.windows.create({ chrome.windows.create({
url: `${browser.runtime.getURL('prompt.html')}?${qs.toString()}`, url: `${chrome.runtime.getURL('prompt.html')}?${qs.toString()}`,
type: 'popup', type: 'popup',
width: 340, width: 340,
height: 330 height: 330

View File

@@ -1,4 +1,3 @@
import browser from 'webextension-polyfill'
export const PERMISSIONS_REQUIRED = { export const PERMISSIONS_REQUIRED = {
getPublicKey: 1, getPublicKey: 1,
@@ -51,7 +50,7 @@ export function getPermissionsString(permission) {
} }
export async function readPermissions() { export async function readPermissions() {
let {permissions = {}} = await browser.storage.local.get('permissions') let {permissions = {}} = await chrome.storage.local.get('permissions')
// delete expired // delete expired
var needsUpdate = false var needsUpdate = false
@@ -64,7 +63,7 @@ export async function readPermissions() {
needsUpdate = true needsUpdate = true
} }
} }
if (needsUpdate) browser.storage.local.set({permissions}) if (needsUpdate) chrome.storage.local.set({permissions})
return permissions return permissions
} }
@@ -74,10 +73,10 @@ export async function readPermissionLevel(host) {
} }
export async function updatePermission(host, permission) { export async function updatePermission(host, permission) {
let {permissions = {}} = await browser.storage.local.get('permissions') let {permissions = {}} = await chrome.storage.local.get('permissions')
permissions[host] = { permissions[host] = {
...permission, ...permission,
created_at: Math.round(Date.now() / 1000) created_at: Math.round(Date.now() / 1000)
} }
browser.storage.local.set({permissions}) chrome.storage.local.set({permissions})
} }

View File

@@ -1,10 +1,9 @@
import browser from 'webextension-polyfill'
// inject the script that will provide window.nostr // inject the script that will provide window.nostr
let script = document.createElement('script') let script = document.createElement('script')
script.setAttribute('async', 'false') script.setAttribute('async', 'false')
script.setAttribute('type', 'text/javascript') script.setAttribute('type', 'text/javascript')
script.setAttribute('src', browser.runtime.getURL('nostr-provider.js')) script.setAttribute('src', chrome.runtime.getURL('nostr-provider.js'))
document.head.appendChild(script) document.head.appendChild(script)
// listen for messages from that script // listen for messages from that script
@@ -17,7 +16,7 @@ window.addEventListener('message', async message => {
// pass on to background // pass on to background
var response var response
try { try {
response = await browser.runtime.sendMessage({ response = await chrome.runtime.sendMessage({
type: message.data.type, type: message.data.type,
params: message.data.params, params: message.data.params,
host: location.host host: location.host

View File

@@ -1,4 +1,3 @@
import browser from 'webextension-polyfill'
import React, {useState, useCallback, useEffect} from 'react' import React, {useState, useCallback, useEffect} from 'react'
import {render} from 'react-dom' import {render} from 'react-dom'
import {normalizeRelayURL} from 'nostr-tools/relay' import {normalizeRelayURL} from 'nostr-tools/relay'
@@ -19,7 +18,7 @@ function Options() {
}) })
useEffect(() => { useEffect(() => {
browser.storage.local.get(['private_key', 'relays']).then(results => { chrome.storage.local.get(['private_key', 'relays']).then(results => {
if (results.private_key) setKey(results.private_key) if (results.private_key) setKey(results.private_key)
if (results.relays) { if (results.relays) {
let relaysList = [] let relaysList = []
@@ -161,7 +160,7 @@ function Options() {
} }
async function saveKey() { async function saveKey() {
await browser.storage.local.set({ await chrome.storage.local.set({
private_key: key private_key: key
}) })
showMessage('saved private key!') showMessage('saved private key!')
@@ -196,7 +195,7 @@ function Options() {
} }
async function saveRelays() { async function saveRelays() {
await browser.storage.local.set({ await chrome.storage.local.set({
relays: Object.fromEntries( relays: Object.fromEntries(
relays relays
.filter(({url}) => url.trim() !== '') .filter(({url}) => url.trim() !== '')

View File

@@ -1,4 +1,3 @@
import browser from 'webextension-polyfill'
import {render} from 'react-dom' import {render} from 'react-dom'
import {getPublicKey} from 'nostr-tools' import {getPublicKey} from 'nostr-tools'
import {bech32} from 'bech32' import {bech32} from 'bech32'
@@ -9,7 +8,7 @@ function Popup() {
let keys = useRef([]) let keys = useRef([])
useEffect(() => { useEffect(() => {
browser.storage.local.get('private_key').then(results => { chrome.storage.local.get('private_key').then(results => {
if (results.private_key) { if (results.private_key) {
let hexKey = getPublicKey(results.private_key) let hexKey = getPublicKey(results.private_key)
let npubKey = bech32.encode( let npubKey = bech32.encode(

View File

@@ -1,4 +1,3 @@
import browser from 'webextension-polyfill'
import {render} from 'react-dom' import {render} from 'react-dom'
import React from 'react' import React from 'react'
@@ -72,7 +71,7 @@ function Prompt() {
function authorizeHandler(condition) { function authorizeHandler(condition) {
return function (ev) { return function (ev) {
ev.preventDefault() ev.preventDefault()
browser.runtime.sendMessage({ chrome.runtime.sendMessage({
prompt: true, prompt: true,
id, id,
host, host,

View File

@@ -14,8 +14,7 @@
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"use-boolean-state": "^1.0.2", "use-boolean-state": "^1.0.2",
"use-debounce": "^7.0.1", "use-debounce": "^7.0.1"
"webextension-polyfill": "^0.8.0"
}, },
"scripts": { "scripts": {
"build": "./build.js prod", "build": "./build.js prod",

View File

@@ -1499,11 +1499,6 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
webextension-polyfill@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.8.0.tgz#f80e9f4b7f81820c420abd6ffbebfa838c60e041"
integrity sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==
webidl-conversions@^3.0.0: webidl-conversions@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"