Revert "get rid of polyfill since this is just chrome anyway."

This reverts commit a935a8c026.
This commit is contained in:
fiatjaf
2022-12-18 14:42:18 -03:00
parent 166f8a39bb
commit 6911f4b25b
10 changed files with 55 additions and 53 deletions

View File

@@ -1,6 +1,5 @@
{
"root": true,
"parserOptions": {
"ecmaVersion": 2020,
"ecmaFeatures": {
@@ -15,10 +14,12 @@
"node": true
},
"plugins": ["react", "babel"],
"plugins": [
"react",
"babel"
],
"globals": {
"chrome": false,
"document": false,
"navigator": false,
"window": false,
@@ -36,23 +37,23 @@
"react/jsx-no-undef": 2,
"react/jsx-uses-react": 2,
"accessor-pairs": 2,
"arrow-spacing": [2, {"before": true, "after": true}],
"arrow-spacing": [2, { "before": true, "after": true }],
"block-spacing": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"brace-style": [2, "1tbs", { "allowSingleLine": true }],
"comma-dangle": 0,
"comma-spacing": [2, {"before": false, "after": true}],
"comma-spacing": [2, { "before": false, "after": true }],
"comma-style": [2, "last"],
"constructor-super": 2,
"curly": [0, "multi-line"],
"dot-location": [2, "property"],
"eol-last": 2,
"eqeqeq": [2, "allow-null"],
"generator-star-spacing": [2, {"before": true, "after": true}],
"handle-callback-err": [2, "^(err|error)$"],
"generator-star-spacing": [2, { "before": true, "after": true }],
"handle-callback-err": [2, "^(err|error)$" ],
"indent": 0,
"jsx-quotes": [2, "prefer-double"],
"key-spacing": [2, {"beforeColon": false, "afterColon": true}],
"keyword-spacing": [2, {"before": true, "after": true}],
"key-spacing": [2, { "beforeColon": false, "afterColon": true }],
"keyword-spacing": [2, { "before": true, "after": true }],
"new-cap": 0,
"new-parens": 0,
"no-array-constructor": 2,
@@ -84,12 +85,12 @@
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-label-var": 2,
"no-labels": [2, {"allowLoop": false, "allowSwitch": false}],
"no-labels": [2, { "allowLoop": false, "allowSwitch": false }],
"no-lone-blocks": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-multiple-empty-lines": [2, {"max": 2}],
"no-multiple-empty-lines": [2, { "max": 2 }],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-new": 0,
@@ -118,34 +119,23 @@
"no-undef": 2,
"no-undef-init": 2,
"no-unexpected-multiline": 2,
"no-unneeded-ternary": [2, {"defaultAssignment": false}],
"no-unneeded-ternary": [2, { "defaultAssignment": false }],
"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-constructor": 2,
"no-with": 2,
"one-var": [0, {"initialized": "never"}],
"operator-linebreak": [
2,
"after",
{"overrides": {"?": "before", ":": "before"}}
],
"one-var": [0, { "initialized": "never" }],
"operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }],
"padded-blocks": [2, "never"],
"quotes": [
2,
"single",
{"avoidEscape": true, "allowTemplateLiterals": true}
],
"quotes": [2, "single", { "avoidEscape": true, "allowTemplateLiterals": true }],
"semi": [2, "never"],
"semi-spacing": [2, {"before": false, "after": true}],
"semi-spacing": [2, { "before": false, "after": true }],
"space-before-blocks": [2, "always"],
"space-before-function-paren": 0,
"space-in-parens": [2, "never"],
"space-infix-ops": 2,
"space-unary-ops": [2, {"words": true, "nonwords": false}],
"space-unary-ops": [2, { "words": true, "nonwords": false }],
"spaced-comment": 0,
"template-curly-spacing": [2, "never"],
"use-isnan": 2,

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
{
"name": "nos2x",
"description": "Nostr Signer Extension",
"version": "1.6.0",
"version": "1.6.1",
"homepage_url": "https://github.com/fiatjaf/nos2x",
"manifest_version": 3,
"icons": {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1499,6 +1499,11 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
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:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"