Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MV3 Collector Branch #1182

Merged
merged 54 commits into from
Sep 15, 2023
Merged

MV3 Collector Branch #1182

merged 54 commits into from
Sep 15, 2023

Conversation

whizzzkid
Copy link
Contributor

@whizzzkid whizzzkid commented Mar 24, 2023

This is the Collector PR for MV3 Work

Closes: #666

This PR:

* feat(mv3): ✨ MV3 Manifest Migration

* fix(mv3): 🗑️ No longer needed

* fix(mv3): 🔧 Corresponding MV3 Changes

* feat(mv3): 📦 Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): ♻️ Init Telemetry away from background service_worker.

* feat(telemetry): ♻️ Track metrics from page context instead of service_worker context

* feat(mv3): 🩹 Patch @protobufjs/inquire to not have eval

* fix(mv3): 👽 Fixing contextMenus API changes (#1177)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* feat(mv3): ♻️ Implementing a non-windowed companion instance

* fix(mv3): 🗑️ Removing calls to background page.

* fix: 🗑️ Unneeded debug statement

* fix(mv3): 🛂 Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

---------

Co-authored-by: Russell Dempsey <[email protected]>
whizzzkid and others added 7 commits March 24, 2023 00:40
* fix(mv3): 🩹 package.json

* fix(mv3): 🚨 Fix Lint

* fix(mv3): 💚 Manifest version

* feat: 🩹 temporary building from rc-branch
* feat(mv3): ✨ MV3 Manifest Migration

* fix(mv3): 🗑️ No longer needed

* fix(mv3): 🔧 Corresponding MV3 Changes

* feat(mv3): 📦 Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): ♻️ Init Telemetry away from background service_worker.

* feat(telemetry): ♻️ Track metrics from page context instead of service_worker context

* feat(mv3): 🩹 Patch @protobufjs/inquire to not have eval

* fix(mv3): 👽 Fixing contextMenus API changes (#1177)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* feat(mv3): ♻️ Implementing a non-windowed companion instance

* fix(mv3): 🗑️ Removing calls to background page.

* fix: 🗑️ Unneeded debug statement

* fix(mv3): 🛂 Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): 🏷️ Refactoring existing type declaration

* fix(types): 🏷️ Moving to new types path

* feat(types): ✨ Adding typescript support for transpilation

* feat(mv3): ✨ Adding blocking request tester

* fix(mv3): 🩹 package.json

* fix(mv3): 🚨 Fix Lint

* fix: 🚨 fix lint

* fix(mv3): 🩹 temp fix to build background context

* fix(mv3): 👔 Detection Logic for MV3 world.

* feat(mv3): ✨ Dynamic RegexSubstitution

* fix(types): ⬆️ Adding .mocharc.json to fix mocha for TS.

* fix: 🚨 Lint Fix

* fix(mv3): ♻️ refactor background.service_worker

* feat(mv3): ✨ Passing state to BlockOrObserve

* fix(recovery): 🐛 conditional for recovery

* fix: 🗑️ unneeded @ts-ignore

* fix: 💡 Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

---------

Co-authored-by: Russell Dempsey <[email protected]>
…ox Builds (#1186)

* feat(mv3): ✨ MV3 Manifest Migration

* fix(mv3): 🗑️ No longer needed

* fix(mv3): 🔧 Corresponding MV3 Changes

* feat(mv3): 📦 Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): ♻️ Init Telemetry away from background service_worker.

* feat(telemetry): ♻️ Track metrics from page context instead of service_worker context

* feat(mv3): 🩹 Patch @protobufjs/inquire to not have eval

* fix(mv3): 👽 Fixing contextMenus API changes (#1177)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* feat(mv3): ♻️ Implementing a non-windowed companion instance

* fix(mv3): 🗑️ Removing calls to background page.

* fix: 🗑️ Unneeded debug statement

* fix(mv3): 🛂 Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): 🏷️ Refactoring existing type declaration

* fix(types): 🏷️ Moving to new types path

* feat(types): ✨ Adding typescript support for transpilation

* feat(mv3): ✨ Adding blocking request tester

* fix(mv3): 🩹 package.json

* fix(mv3): 🚨 Fix Lint

* fix: 🚨 fix lint

* fix(mv3): 🩹 temp fix to build background context

* fix(mv3): 👔 Detection Logic for MV3 world.

* feat(mv3): ✨ Dynamic RegexSubstitution

* fix(types): ⬆️ Adding .mocharc.json to fix mocha for TS.

* fix: 🚨 Lint Fix

* fix(mv3): ♻️ refactor background.service_worker

* feat(mv3): ✨ Passing state to BlockOrObserve

* fix(recovery): 🐛 conditional for recovery

* fix: 🗑️ unneeded @ts-ignore

* fix: 💡 Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

* no longer needed

* fix(mv3): ♻️ Refactor

* feat(mv3): ✨ Adding rule-recon logic

* saving state

* fix(mv3): 🔧 Manifest

* fix(mv3): 🔧 Fixing firefox webpack config

* fix(mv3): 🩹 Patching debug to use in memory store instead of browser.storage.local

* fix: 🚨 fixing lint and moving from record type to map type.

* fix: 📝 Adding docstrings.

* fix(mv3): 💩 web-ext making things harder than it needs to be.

* fix(mv3): ⏪ no more debug patching

* fix(mv3): 💩 improved recon logic

* fix: 📝 adding comments regarding debug.

* fix: 🚨 Fix lint

* fix(mv3): 🛂 manifest perms

* fix: 🗑️ unnecessary blank line

* feat(mv3): 🧪 Adding initial tests

* feat(mv3): 🤡 Adding Mock DeclarativeNetRequest Implementation

* nits

* fix: adding more test examples

* fix: self-documenting code.

* fix: unneeded comment

* Update test/functional/lib/redirect-handler/blockOrObserve.test.ts

---------

Co-authored-by: Russell Dempsey <[email protected]>
* feat(mv3): ✨ MV3 Manifest Migration

* fix(mv3): 🗑️ No longer needed

* fix(mv3): 🔧 Corresponding MV3 Changes

* feat(mv3): 📦 Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): ♻️ Init Telemetry away from background service_worker.

* feat(telemetry): ♻️ Track metrics from page context instead of service_worker context

* feat(mv3): 🩹 Patch @protobufjs/inquire to not have eval

* fix(mv3): 👽 Fixing contextMenus API changes (#1177)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): 👽 Fixing contextMenus API changes

* fix(mv3): 🩹 Fixing the browser.action api

* fix(mv3): 🔧 Fixing webpack config

* fix(mv3): 🩹 Patching debug package and making background sw work.

* feat(mv3): ✨ XMLHttpRequest => fetch

* fix(mv3): 🚧 Related changes to ipfs-path

* fix(mv3): 🚧 Other Related changes

* fix(mv3): 🚧 Changes to companion

* fix(mv3): ✅ Fixing tests to account for async code.

* feat(mv3): ♻️ Implementing a non-windowed companion instance

* fix(mv3): 🗑️ Removing calls to background page.

* fix: 🗑️ Unneeded debug statement

* fix(mv3): 🛂 Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): 🏷️ Refactoring existing type declaration

* fix(types): 🏷️ Moving to new types path

* feat(types): ✨ Adding typescript support for transpilation

* feat(mv3): ✨ Adding blocking request tester

* fix(mv3): 🩹 package.json

* fix(mv3): 🚨 Fix Lint

* fix: 🚨 fix lint

* fix(mv3): 🩹 temp fix to build background context

* fix(mv3): 👔 Detection Logic for MV3 world.

* feat(mv3): ✨ Dynamic RegexSubstitution

* fix(types): ⬆️ Adding .mocharc.json to fix mocha for TS.

* fix: 🚨 Lint Fix

* fix(mv3): ♻️ refactor background.service_worker

* feat(mv3): ✨ Passing state to BlockOrObserve

* fix(recovery): 🐛 conditional for recovery

* fix: 🗑️ unneeded @ts-ignore

* fix: 💡 Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

* no longer needed

* fix(mv3): ♻️ Refactor

* feat(mv3): ✨ Adding rule-recon logic

* saving state

* fix(mv3): 🔧 Manifest

* fix(mv3): 🔧 Fixing firefox webpack config

* fix(mv3): 🩹 Patching debug to use in memory store instead of browser.storage.local

* fix: 🚨 fixing lint and moving from record type to map type.

* fix: 📝 Adding docstrings.

* fix(mv3): 💩 web-ext making things harder than it needs to be.

* fix(mv3): ⏪ no more debug patching

* fix(mv3): 💩 improved recon logic

* fix: 📝 adding comments regarding debug.

* fix: 🚨 Fix lint

* fix(mv3): 🛂 manifest perms

* fix: 🗑️ unnecessary blank line

* feat(mv3): 🧪 Adding initial tests

* feat(mv3): 🤡 Adding Mock DeclarativeNetRequest Implementation

* nits

* fix: adding more test examples

* fix: self-documenting code.

* fix: unneeded comment

* Creating RC Releases

---------

Co-authored-by: Russell Dempsey <[email protected]>
* fix(mv3): ref_name

* fix: this is hard to test
@SgtPooki
Copy link
Member

FYI, with the latest companion beta release, I tested going to https://ipfs.io/ipns/en.wikipedia-on-ipfs.org/wiki/, and it stayed on the page without refresh. When I reloaded, it's indefinitely loading and not redirecting the the companion set gateway:
image

@SgtPooki
Copy link
Member

https://explore.ipld.io/#/explore/QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D also results in an infinite spinner. (and doesn't without companion enabled)

If I disable companion when the infinite spinner is spinning, it takes me to ipns://explore.ipld.io/#/explore/QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D and shows an error:

could not get block QmYqLv4mWA8JN55F7qdBMcdcrz9Dwyc7z5xVhGgb6h1vCW: promise channel was closed

image

@whizzzkid
Copy link
Contributor Author

@SgtPooki Can you please:

  1. go to chrome://extensions
  2. click on inspect views: service worker
  3. go to console in the inspector
  4. Share the output of: chrome.declarativeNetRequest.getDynamicRules() (copy-paste that here)
  5. Now delete the existing rules using this snippet:
(async () => await chrome.declarativeNetRequest.updateDynamicRules({ addRules: [], removeRuleIds: await chrome.declarativeNetRequest.getDynamicRules().then((rules) => rules.map((rule) => rule.id)) }))()
  1. Try again?

@SgtPooki
Copy link
Member

@whizzzkid

Share the output of: chrome.declarativeNetRequest.getDynamicRules() (copy-paste that here)

it's empty:

await chrome.declarativeNetRequest.getDynamicRules()
[]

@SgtPooki
Copy link
Member

SgtPooki commented May 12, 2023

FYI that http://explore-ipld-io.ipns.localhost:48084/#/ which shows ipns://explore.ipld.io/#/explore/QmdmQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7RgQm in the browser, does load when I wait long enough.

http://en-wikipedia--on--ipfs-org.ipns.localhost:48084/wiki/Wikipedia also loads, showing ipns://en.wikipedia-on-ipfs.org/wiki/ in the browser.

await chrome.declarativeNetRequest.getDynamicRules() still returns an empty array though

After changing from the brave provided node to my local node, then loading a few pages and waiting a bit.. I am able to get some dynamic rules:

[
  {
    "action": {
      "redirect": {
        "regexSubstitution": "http://localhost:8080/ipns/en.wikipedia-on-ipfs.org\\1"
      },
      "type": "redirect"
    },
    "condition": {
      "excludedInitiatorDomains": [],
      "regexFilter": "^http\\:\\/\\/en-wikipedia--on--ipfs-org\\.ipns\\.localhost\\:48084((?:[^\\.]|$).*)$",
      "resourceTypes": [
        "csp_report",
        "font",
        "image",
        "main_frame",
        "media",
        "object",
        "other",
        "ping",
        "script",
        "stylesheet",
        "sub_frame",
        "webbundle",
        "websocket",
        "webtransport",
        "xmlhttprequest"
      ]
    },
    "id": 27402,
    "priority": 1
  },
  {
    "action": {
      "redirect": {
        "regexSubstitution": "http://localhost:8080\\1"
      },
      "type": "redirect"
    },
    "condition": {
      "excludedInitiatorDomains": [],
      "regexFilter": "^http\\:\\/\\/127\\.0\\.0\\.1\\:8080(.*)$",
      "resourceTypes": [
        "csp_report",
        "font",
        "image",
        "main_frame",
        "media",
        "object",
        "other",
        "ping",
        "script",
        "stylesheet",
        "sub_frame",
        "webbundle",
        "websocket",
        "webtransport",
        "xmlhttprequest"
      ]
    },
    "id": 21038,
    "priority": 1
  },
  {
    "action": {
      "redirect": {
        "regexSubstitution": "http://localhost:8080\\1"
      },
      "type": "redirect"
    },
    "condition": {
      "excludedInitiatorDomains": [],
      "regexFilter": "^http\\:\\/\\/\\[\\:\\:1\\]\\:8080(.*)$",
      "resourceTypes": [
        "csp_report",
        "font",
        "image",
        "main_frame",
        "media",
        "object",
        "other",
        "ping",
        "script",
        "stylesheet",
        "sub_frame",
        "webbundle",
        "websocket",
        "webtransport",
        "xmlhttprequest"
      ]
    },
    "id": 10116,
    "priority": 1
  }
]

@SgtPooki
Copy link
Member

FYI: turning the node off does not turn off redirects.

Example: https://starbase.gw3.io/ipfs/QmawceGscqN4o8Y8Fv26UUmB454kn2bnkXV5tEQYc4jBd6 redirected me to http://e580f2bcfc4276d5.gw3.io/ipfs/QmawceGscqN4o8Y8Fv26UUmB454kn2bnkXV5tEQYc4jBd6?sargs=H4sIAAAJbogA%2F6pWKlCyyivNydFRyoAxEpWsoquVspWslBKL0nXz8lNSlXSUypSslJwdXYM9vYrdLBw9QvMT80ITjUqKfSKcc319Awwy%2FSMKfS3KkyPNXSNDIjzzMkM9y5RqdRDmlOZlVkDNMTSzMLY0MrUwMlGqja0FDADpVtIcgwAAAA%3D%3D&ssig=APidkWklmXsEYaiSP5iTdxnwdnp1zerguGM6veRAv6j3NILaCMm%2BlFKgueQbTF99pG6ihtquyosQtb4u4grzCA%3D%3D, and when I refreshed, I was redirected to http://bafybeif3ie6d3yf2orkshi6xahlmwqudxst6db7mefkw6rcwanxwsksqou.ipfs.localhost:8080/?sargs=H4sIAAAJbogA%2F6pWKlCyyivNydFRyoAxEpWsoquVspWslBKL0nXz8lNSlXSUypSslJwdXYM9vYrdLBw9QvMT80ITjUqKfSKcc319Awwy%2FSMKfS3KkyPNXSNDIjzzMkM9y5RqdRDmlOZlVkDNMTSzMLY0MrUwMlGqja0FDADpVtIcgwAAAA%3D%3D&ssig=APidkWklmXsEYaiSP5iTdxnwdnp1zerguGM6veRAv6j3NILaCMm%2BlFKgueQbTF99pG6ihtquyosQtb4u4grzCA%3D%3D.

I disabled companion, and it was still redirecting me. Dynamic rules:

[
  {
    "action": {
      "redirect": {
        "regexSubstitution": "http://localhost:8080\\1"
      },
      "type": "redirect"
    },
    "condition": {
      "excludedInitiatorDomains": [],
      "regexFilter": "^https?\\:\\/\\/starbase\\.gw3\\.io((?:[^\\.]|$).*)$",
      "resourceTypes": [
        "csp_report",
        "font",
        "image",
        "main_frame",
        "media",
        "object",
        "other",
        "ping",
        "script",
        "stylesheet",
        "sub_frame",
        "webbundle",
        "websocket",
        "webtransport",
        "xmlhttprequest"
      ]
    },
    "id": 19877,
    "priority": 1
  },
  {
    "action": {
      "redirect": {
        "regexSubstitution": "http://localhost:8080\\1"
      },
      "type": "redirect"
    },
    "condition": {
      "excludedInitiatorDomains": [],
      "regexFilter": "^http\\:\\/\\/e580f2bcfc4276d5\\.gw3\\.io((?:[^\\.]|$).*)$",
      "resourceTypes": [
        "csp_report",
        "font",
        "image",
        "main_frame",
        "media",
        "object",
        "other",
        "ping",
        "script",
        "stylesheet",
        "sub_frame",
        "webbundle",
        "websocket",
        "webtransport",
        "xmlhttprequest"
      ]
    },
    "id": 6047,
    "priority": 1
  }
]

whizzzkid and others added 13 commits May 17, 2023 11:34
* fix(mv3): 🐛 Fixing copy functionality for MV3

* fix:

* Update add-on/src/lib/copier.js
* fix(mv3): Add support for global toggle on/off

* feat(mv3): Handle State Changes

* fix(mv3): ♻️ Refactoring code to only message self in observation mode.
* fix: ⬆️ package-lock

* feat(mv3): ♻️ Reload tabs with request url.
…#1210)

* fix(mv3): 👔 Adding better regex replace to remove infinite redirects.

* fix(mv3): 🧪 Adding more tests to account for local redirects

* fix: 🚨 Linter
* fix(mv3): 👔 Adding better regex replace to remove infinite redirects.

* fix(mv3): 🧪 Adding more tests to account for local redirects

* feat(mv3): 🤡 DeclarativeNetRequestMock

* fix: 🚨 Linter
* feat(mv3): ✨ ContextMenus MV3 Style

* feat(mv3): 🧪 Adding tests

* fix: test case
* feat(mv3): ✨ ContextMenus MV3 Style

* feat(mv3): 🧪 Adding tests

* fix: test case

* fix(mv3): 🐛 Quick Import
* fix: 🩹 Adding Automatic Mode Description

* Update add-on/_locales/en/messages.json

Co-authored-by: Steve Loeppky <[email protected]>

* Update add-on/_locales/en/messages.json

Co-authored-by: Steve Loeppky <[email protected]>

---------

Co-authored-by: Steve Loeppky <[email protected]>
* fix: 🗑️ no longer needed

Signed-off-by: Nishant Arora <[email protected]>

* fix: 🗑️ unneeded messages

Signed-off-by: Nishant Arora <[email protected]>

* fix: 🗑️ Removing unneeded test

Signed-off-by: Nishant Arora <[email protected]>

* fix: 👔 Update logic or add todos to fix this later.

Signed-off-by: Nishant Arora <[email protected]>

* fix: 🗑️ remove logos

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint warning

Signed-off-by: Nishant Arora <[email protected]>

* fix: 👽 no idea why this is a problem now.

Signed-off-by: Nishant Arora <[email protected]>

* fix: 🗑️ irrelevant

Signed-off-by: Nishant Arora <[email protected]>

* fix: quick-import

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing quick-import

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing Tools

Signed-off-by: Nishant Arora <[email protected]>

* fix: fixing gateway-form

Signed-off-by: Nishant Arora <[email protected]>

* fix: content-action

Signed-off-by: Nishant Arora <[email protected]>

* fix: store

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing state

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
@whizzzkid whizzzkid requested a review from lidel September 11, 2023 00:13
Copy link
Member

@SgtPooki SgtPooki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done with a little over half of the files changed. will come back to it after ipfs-desktop release

add-on/_locales/en/messages.json Outdated Show resolved Hide resolved
add-on/icons/js-ipfs-logo-on.svg Outdated Show resolved Hide resolved
patches/@protobufjs+inquire+1.1.0.patch Show resolved Hide resolved
@@ -31,7 +32,7 @@ export default function gatewaysForm ({
const onDisabledOnChange = onOptionChange('disabledOn', hostTextToArray)
const onEnabledOnChange = onOptionChange('enabledOn', hostTextToArray)
const mixedContentWarning = !secureContextUrl.test(customGatewayUrl)
const supportRedirectToCustomGateway = ipfsNodeType !== 'embedded'
const supportRedirectToCustomGateway = POSSIBLE_NODE_TYPES.includes(ipfsNodeType)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if POSSIBLE_NODE_TYPES is set to all the possible node types, then POSSIBLE_NODE_TYPES.includes(ipfsNodeType) will always be true, meaning supportRedirectToCustomGateway will always be true, right? Do we need a separate CUSTOM_GATEWAY_SUPPORTING_NODE_TYPES or should we remove this flag and dependent logic?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep and that's the intention, it's basically a reverse of the previous check as embedded node type does not exist anymore, but this is just to make sure if after migration someone has it set to embedded then it does not break, this can go away after.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should have a list of follow up tasks from MV3 then, in a tracking issue

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a section: #1152

ci/update-manifest.sh Outdated Show resolved Hide resolved
add-on/src/lib/dnslink.js Show resolved Hide resolved
whizzzkid and others added 2 commits September 11, 2023 23:48
@whizzzkid
Copy link
Contributor Author

@SgtPooki responded to most of your comments, let me know if anything else comes up.

Signed-off-by: Nishant Arora <[email protected]>
"gecko": {
"id": "[email protected]",
"strict_min_version": "91.1.0"
"strict_min_version": "111.0.0"
Copy link
Member

@lidel lidel Sep 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💭 @whizzzkid is this a bug or a coincidence that both Chrome and Firefox use v111 in respective manifests?
iirc Firefox shipped MV3 in v109, are we depending on some fixes that landed later?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At the time I was using 111, it's just a coincidence. There was a bug in chrome at least where the service worker would go to sleep and won't wake. I don't think FF had any.

Copy link
Member

@SgtPooki SgtPooki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done looking over all code again. Approved but with some comments

if (options?.id != null) {
this.queueListener(options.id, cb)
} else {
throw new Error('ContextMenus.create callback requires options.id')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: we should be able to make this more type-safe with conditional types, to reduce the chance of a run-time error

export function addRuleToDynamicRuleSetGenerator (
getState: () => CompanionState): (input: redirectHandlerInput) => Promise<void> {
// returning a closure to avoid passing `getState` as an argument to `addRuleToDynamicRuleSet`.
return async function ({ originUrl, redirectUrl }: redirectHandlerInput): Promise<void> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think being more clear will reduce the chance of bugs in the future, but i'm fine to defer this if there's a followup issue.

test/functional/lib/ipfs-import.test.js Show resolved Hide resolved
Comment on lines +182 to +186
await notifyOptionChange()
// notifyOptionsChange call is async, sends a message to background and
// waits for it to resolve. However, that doesnt work the
// same way in Chrome and FF. So we need to wait a bit before reloading.
await new Promise(resolve => setTimeout(resolve, 200))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a communication bus we can use to remove the need for this arbitrary wait time?

Copy link
Member

@lidel lidel Sep 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@whizzzkid I think this should be solved/moved to notifyOptionChange or even sendMessageToSelf, perhaps? there is a comment about discrepancy between Chrome/Firefox there already.

We don't want random timeouts like that sprinkled in random places, will make debugging of future race conditions even harder.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

notifyOptionChange is already triggered on Line182, but that resolves arbitrarily (the next line does not always get that change)

This behaviour is also not consistent with what happens in chrome and firefox. I tried with sendMessageToSelf and that doesn't work always either.

The only reliable way to do this at the time was this. I can add a TODO: to evaluate this in future?

state.isIpfsOnline = false
}
await notifyOptionChange()
await browser.storage.local.set({ active: state.active })
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why aren't we persisting the rest of the state?

Suggested change
await browser.storage.local.set({ active: state.active })
await browser.storage.local.set({ ...state })

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This set method is slightly different than a normal Map.set method. Passing the entire object will update all the keys and make this more expensive. So just pass the keys that need updating is the idea here.

https://developer.chrome.com/docs/extensions/reference/storage/#type-StorageArea:~:text=to%20the%20callback.-,set,-void

state.gatewayVersion = null
state.swarmPeers = null
state.isIpfsOnline = false
}
try {
await browser.storage.local.set({ active: state.active })
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need to call await browser.storage.local.set({ active: state.active }) twice in this block?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should go, I'll remove it.

import { generateAddRule } from '../../add-on/src/lib/redirect-handler/blockOrObserve'
import isManifestV3 from './is-mv3-testing-enabled'
import { RULE_REGEX_ENDING } from '../../add-on/src/lib/redirect-handler/blockOrObserve'

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: should the 'awaitFinalUrl` method could be moved into here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

@lidel lidel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your work and patience @whizzzkid, and for reviews @SgtPooki ! Huge lift, but important for long-term utility of this extension.

We have pretty good test coverage now, guarding the most important feature (redirects) in both Firefox and Chromium.
I've tested in Firefox, Brave, and generic Chromium: user-facing functionality works as expected. If we have bugs, those will be small ones around niche edge cases.

I think the rc/3.0-mv3 branch baked long enough.
My suggestion is to merge this PR and then do remaining fixes/refactors in follow-up PRs against the main branch:

whizzzkid and others added 5 commits September 15, 2023 00:28
* test(import): 🧪 Backfill Tests

Signed-off-by: Nishant Arora <[email protected]>

* Update test/functional/lib/ipfs-import.test.js

Co-authored-by: Marcin Rataj <[email protected]>

* Update test/functional/lib/ipfs-import.test.js

Co-authored-by: Marcin Rataj <[email protected]>

* test(import): 🧪 Backfilling tests for copyImportResultsToFiles

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>
feat(mv3): ➕ Adding hash function to generate predictable ids.

Signed-off-by: Nishant Arora <[email protected]>
@whizzzkid whizzzkid merged commit 90b5f7c into main Sep 15, 2023
@whizzzkid whizzzkid deleted the rc/3.0-mv3 branch September 15, 2023 08:43
whizzzkid added a commit that referenced this pull request Sep 15, 2023
BREAKING CHANGE: Implements the new MV3 standard for browser extensions.

* feat(mv3): Manifest V3 Migration Checklist (#1170)

* feat(mv3): :sparkles: MV3 Manifest Migration

* fix(mv3): :wastebasket: No longer needed

* fix(mv3): :wrench: Corresponding MV3 Changes

* feat(mv3): :package: Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): :recycle: Init Telemetry away from background service_worker.

* feat(telemetry): :recycle: Track metrics from page context instead of service_worker context

* feat(mv3): :adhesive_bandage: Patch @protobufjs/inquire to not have eval

* fix(mv3): :alien: Fixing contextMenus API changes (#1177)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* feat(mv3): :recycle: Implementing a non-windowed companion instance

* fix(mv3): :wastebasket: Removing calls to background page.

* fix: :wastebasket: Unneeded debug statement

* fix(mv3): :passport_control: Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

---------

Co-authored-by: Russell Dempsey <[email protected]>

* fix(mv3): CI Builds 🏗️  (#1183)

* fix(mv3): :adhesive_bandage: package.json

* fix(mv3): :rotating_light: Fix Lint

* fix(mv3): :green_heart: Manifest version

* feat: :adhesive_bandage: temporary building from rc-branch

* feat(mv3): blocking by observing (#1181)

* feat(mv3): :sparkles: MV3 Manifest Migration

* fix(mv3): :wastebasket: No longer needed

* fix(mv3): :wrench: Corresponding MV3 Changes

* feat(mv3): :package: Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): :recycle: Init Telemetry away from background service_worker.

* feat(telemetry): :recycle: Track metrics from page context instead of service_worker context

* feat(mv3): :adhesive_bandage: Patch @protobufjs/inquire to not have eval

* fix(mv3): :alien: Fixing contextMenus API changes (#1177)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* feat(mv3): :recycle: Implementing a non-windowed companion instance

* fix(mv3): :wastebasket: Removing calls to background page.

* fix: :wastebasket: Unneeded debug statement

* fix(mv3): :passport_control: Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): :label: Refactoring existing type declaration

* fix(types): :label: Moving to new types path

* feat(types): :sparkles: Adding typescript support for transpilation

* feat(mv3): :sparkles: Adding blocking request tester

* fix(mv3): :adhesive_bandage: package.json

* fix(mv3): :rotating_light: Fix Lint

* fix: :rotating_light: fix lint

* fix(mv3): :adhesive_bandage: temp fix to build background context

* fix(mv3): :necktie: Detection Logic for MV3 world.

* feat(mv3): :sparkles: Dynamic RegexSubstitution

* fix(types): :arrow_up: Adding .mocharc.json to fix mocha for TS.

* fix: :rotating_light: Lint Fix

* fix(mv3): :recycle: refactor background.service_worker

* feat(mv3): :sparkles: Passing state to BlockOrObserve

* fix(recovery): :bug: conditional for recovery

* fix: :wastebasket: unneeded @ts-ignore

* fix: :bulb: Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

---------

Co-authored-by: Russell Dempsey <[email protected]>

* feat(mv3): adding dynamicNetRequest rule reconciliation logic + Firefox Builds (#1186)

* feat(mv3): :sparkles: MV3 Manifest Migration

* fix(mv3): :wastebasket: No longer needed

* fix(mv3): :wrench: Corresponding MV3 Changes

* feat(mv3): :package: Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): :recycle: Init Telemetry away from background service_worker.

* feat(telemetry): :recycle: Track metrics from page context instead of service_worker context

* feat(mv3): :adhesive_bandage: Patch @protobufjs/inquire to not have eval

* fix(mv3): :alien: Fixing contextMenus API changes (#1177)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* feat(mv3): :recycle: Implementing a non-windowed companion instance

* fix(mv3): :wastebasket: Removing calls to background page.

* fix: :wastebasket: Unneeded debug statement

* fix(mv3): :passport_control: Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): :label: Refactoring existing type declaration

* fix(types): :label: Moving to new types path

* feat(types): :sparkles: Adding typescript support for transpilation

* feat(mv3): :sparkles: Adding blocking request tester

* fix(mv3): :adhesive_bandage: package.json

* fix(mv3): :rotating_light: Fix Lint

* fix: :rotating_light: fix lint

* fix(mv3): :adhesive_bandage: temp fix to build background context

* fix(mv3): :necktie: Detection Logic for MV3 world.

* feat(mv3): :sparkles: Dynamic RegexSubstitution

* fix(types): :arrow_up: Adding .mocharc.json to fix mocha for TS.

* fix: :rotating_light: Lint Fix

* fix(mv3): :recycle: refactor background.service_worker

* feat(mv3): :sparkles: Passing state to BlockOrObserve

* fix(recovery): :bug: conditional for recovery

* fix: :wastebasket: unneeded @ts-ignore

* fix: :bulb: Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

* no longer needed

* fix(mv3): :recycle: Refactor

* feat(mv3): :sparkles: Adding rule-recon logic

* saving state

* fix(mv3): :wrench: Manifest

* fix(mv3): :wrench: Fixing firefox webpack config

* fix(mv3): :adhesive_bandage: Patching debug to use in memory store instead of browser.storage.local

* fix: :rotating_light: fixing lint and moving from record type to map type.

* fix: :memo: Adding docstrings.

* fix(mv3): :poop: web-ext making things harder than it needs to be.

* fix(mv3): :rewind: no more debug patching

* fix(mv3): :poop: improved recon logic

* fix: :memo: adding comments regarding debug.

* fix: :rotating_light: Fix lint

* fix(mv3): :passport_control: manifest perms

* fix: :wastebasket: unnecessary blank line

* feat(mv3): :test_tube: Adding initial tests

* feat(mv3): :clown_face: Adding Mock DeclarativeNetRequest Implementation

* nits

* fix: adding more test examples

* fix: self-documenting code.

* fix: unneeded comment

* Update test/functional/lib/redirect-handler/blockOrObserve.test.ts

---------

Co-authored-by: Russell Dempsey <[email protected]>

* Chore(mv3-release): Publishing RC releases (#1192)

* feat(mv3): :sparkles: MV3 Manifest Migration

* fix(mv3): :wastebasket: No longer needed

* fix(mv3): :wrench: Corresponding MV3 Changes

* feat(mv3): :package: Adding deps

* feat(telemetry): Refactor Metrics Tracking from background service_worker (#1172)

* feat(telemetry): :recycle: Init Telemetry away from background service_worker.

* feat(telemetry): :recycle: Track metrics from page context instead of service_worker context

* feat(mv3): :adhesive_bandage: Patch @protobufjs/inquire to not have eval

* fix(mv3): :alien: Fixing contextMenus API changes (#1177)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): webpack configs (#1178)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): ✨ XHR to Fetch Migration (#1179)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* Fix(mv3): Popup Was Broken (#1180)

* fix(mv3): :alien: Fixing contextMenus API changes

* fix(mv3): :adhesive_bandage: Fixing the browser.action api

* fix(mv3): :wrench: Fixing webpack config

* fix(mv3): :adhesive_bandage: Patching debug package and making background sw work.

* feat(mv3): :sparkles: XMLHttpRequest => fetch

* fix(mv3): :construction: Related changes to ipfs-path

* fix(mv3): :construction: Other Related changes

* fix(mv3): :construction: Changes to companion

* fix(mv3): :white_check_mark: Fixing tests to account for async code.

* feat(mv3): :recycle: Implementing a non-windowed companion instance

* fix(mv3): :wastebasket: Removing calls to background page.

* fix: :wastebasket: Unneeded debug statement

* fix(mv3): :passport_control: Limiting permissions to chrome-extension

* Update add-on/src/lib/ipfs-companion.js

Co-authored-by: Russell Dempsey <[email protected]>

* fix(types): :label: Refactoring existing type declaration

* fix(types): :label: Moving to new types path

* feat(types): :sparkles: Adding typescript support for transpilation

* feat(mv3): :sparkles: Adding blocking request tester

* fix(mv3): :adhesive_bandage: package.json

* fix(mv3): :rotating_light: Fix Lint

* fix: :rotating_light: fix lint

* fix(mv3): :adhesive_bandage: temp fix to build background context

* fix(mv3): :necktie: Detection Logic for MV3 world.

* feat(mv3): :sparkles: Dynamic RegexSubstitution

* fix(types): :arrow_up: Adding .mocharc.json to fix mocha for TS.

* fix: :rotating_light: Lint Fix

* fix(mv3): :recycle: refactor background.service_worker

* feat(mv3): :sparkles: Passing state to BlockOrObserve

* fix(recovery): :bug: conditional for recovery

* fix: :wastebasket: unneeded @ts-ignore

* fix: :bulb: Adding comments

* fix: fixing string method.

* fix: removing extra space.

* fix: removing @ts-nocheck

* no longer needed

* fix(mv3): :recycle: Refactor

* feat(mv3): :sparkles: Adding rule-recon logic

* saving state

* fix(mv3): :wrench: Manifest

* fix(mv3): :wrench: Fixing firefox webpack config

* fix(mv3): :adhesive_bandage: Patching debug to use in memory store instead of browser.storage.local

* fix: :rotating_light: fixing lint and moving from record type to map type.

* fix: :memo: Adding docstrings.

* fix(mv3): :poop: web-ext making things harder than it needs to be.

* fix(mv3): :rewind: no more debug patching

* fix(mv3): :poop: improved recon logic

* fix: :memo: adding comments regarding debug.

* fix: :rotating_light: Fix lint

* fix(mv3): :passport_control: manifest perms

* fix: :wastebasket: unnecessary blank line

* feat(mv3): :test_tube: Adding initial tests

* feat(mv3): :clown_face: Adding Mock DeclarativeNetRequest Implementation

* nits

* fix: adding more test examples

* fix: self-documenting code.

* fix: unneeded comment

* Creating RC Releases

---------

Co-authored-by: Russell Dempsey <[email protected]>

* fix(mv3): ref_name (#1193)

* Fix/mv3 release (#1194)

* fix(mv3): ref_name

* fix: this is hard to test

* Fixing beta builds

* fix(mv3): :bug: Bad Regex for DNS links (#1198)

* fix(mv3): :bug: Fixing copy functionality for MV3 (#1197)

* fix(mv3): :bug: Fixing copy functionality for MV3

* fix:

* Update add-on/src/lib/copier.js

* feat(mv3): Handle State Changes (#1200)

* fix(mv3): Add support for global toggle on/off

* feat(mv3): Handle State Changes

* fix(mv3): :recycle: Refactoring code to only message self in observation mode.

* Fix/1202 first page is missing content (#1208)

* fix: :arrow_up: package-lock

* feat(mv3): :recycle: Reload tabs with request url.

* fix(mv3): 👔 Adding better regex replace to remove infinite redirects. (#1210)

* fix(mv3): :necktie: Adding better regex replace to remove infinite redirects.

* fix(mv3): :test_tube: Adding more tests to account for local redirects

* fix: :rotating_light: Linter

* feat(mv3): :clown_face: DeclarativeNetRequestMock (#1211)

* fix(mv3): :necktie: Adding better regex replace to remove infinite redirects.

* fix(mv3): :test_tube: Adding more tests to account for local redirects

* feat(mv3): :clown_face: DeclarativeNetRequestMock

* fix: :rotating_light: Linter

* feat(mv3): Adding ContextMenus MV3 Style (#1213)

* feat(mv3): :sparkles: ContextMenus MV3 Style

* feat(mv3): :test_tube: Adding tests

* fix: test case

* fix (quick-import): Duplicate behaviour in MV3 (#1215)

* feat(mv3): :sparkles: ContextMenus MV3 Style

* feat(mv3): :test_tube: Adding tests

* fix: test case

* fix(mv3): :bug: Quick Import

* fix(mv3): :wastebasket: Removing Unnecessary Listener (#1219)

* fix: Automatic Mode Description (#1224)

* fix: :adhesive_bandage: Adding Automatic Mode Description

* Update add-on/_locales/en/messages.json

Co-authored-by: Steve Loeppky <[email protected]>

* Update add-on/_locales/en/messages.json

Co-authored-by: Steve Loeppky <[email protected]>

---------

Co-authored-by: Steve Loeppky <[email protected]>

* fix: 🗑️ Remove Embedded Node Type (#1225)

* fix: :wastebasket: no longer needed

Signed-off-by: Nishant Arora <[email protected]>

* fix: :wastebasket: unneeded messages

Signed-off-by: Nishant Arora <[email protected]>

* fix: :wastebasket: Removing unneeded test

Signed-off-by: Nishant Arora <[email protected]>

* fix: :necktie: Update logic or add todos to fix this later.

Signed-off-by: Nishant Arora <[email protected]>

* fix: :wastebasket: remove logos

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint warning

Signed-off-by: Nishant Arora <[email protected]>

* fix: :alien: no idea why this is a problem now.

Signed-off-by: Nishant Arora <[email protected]>

* fix: :wastebasket: irrelevant

Signed-off-by: Nishant Arora <[email protected]>

* fix: quick-import

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing quick-import

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing Tools

Signed-off-by: Nishant Arora <[email protected]>

* fix: fixing gateway-form

Signed-off-by: Nishant Arora <[email protected]>

* fix: content-action

Signed-off-by: Nishant Arora <[email protected]>

* fix: store

Signed-off-by: Nishant Arora <[email protected]>

* fix: Fixing state

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* Fix(docs): ✏️ Adding/Updating docs (#1230)

* fix(docs): :pencil2: Api -> kubo rpc api

Signed-off-by: Nishant Arora <[email protected]>

* fix(docs): :pencil2: reword

Signed-off-by: Nishant Arora <[email protected]>

* fix(docs): :heavy_plus_sign: Adding MV3 Migration Docs and Assets.

Signed-off-by: Nishant Arora <[email protected]>

* Update docs/MV3.md

Co-authored-by: Russell Dempsey <[email protected]>

* Update docs/MV3.md

Co-authored-by: Russell Dempsey <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Russell Dempsey <[email protected]>

* feat(metrics): ✨ Adding patched analytics. (#1232)

* feat(mv3): :sparkles: Patching countly-sdk-web

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :sparkles: Implementing Custom Async Store.

Signed-off-by: Nishant Arora <[email protected]>

* chore(mv3): :adhesive_bandage: Hooking everything up together.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Countly Patching + [email protected]

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :adhesive_bandage: Patching the Patch

Signed-off-by: Nishant Arora <[email protected]>

* fix: tests

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint

Signed-off-by: Nishant Arora <[email protected]>

* fix: :adhesive_bandage: Patching error messages

Signed-off-by: Nishant Arora <[email protected]>

* fix(patch): countly-web-sdk

* fix(patch): :pin: Pinning countly-web-sdk to 23.2.2

---------

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :art: Replacing Static Images with Mermaid Diagrams (#1233)

* fic(mv3): :art: Replacing Static Images with Mermaid Diagrams

* fix(mv3): :pencil2: Improving Grammar

Signed-off-by: Nishant Arora <[email protected]>

* Adding Colors

Co-authored-by: Russell Dempsey <[email protected]>

* Update docs/MV3.md

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Russell Dempsey <[email protected]>

* feat(mv3): Faster Redirects During The First Page Load in main_frame (#1239)

* feat(mv3): :zap: Faster redirects for the first time.

Signed-off-by: Nishant Arora <[email protected]>

* fix: removing only from the tests

Signed-off-by: Nishant Arora <[email protected]>

* test(mv3): Adding removing rule example.

Signed-off-by: Nishant Arora <[email protected]>

* test(mv3): :test_tube: Added test regarding removal of rules

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* fix(telemetry): Reverting to old state of things (#1242)

* fix(mv3): Reverting Telemetry Changes To Use PatchedCountlySDK

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): metrics build

Signed-off-by: Nishant Arora <[email protected]>

* fix: more reverts + fixing patch

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :adhesive_bandage: Patching the Patch

Signed-off-by: Nishant Arora <[email protected]>

* fix(countly): :adhesive_bandage: don't look for debug, just log it.

Signed-off-by: Nishant Arora <[email protected]>

* fix(countly): removing session start/end.

Signed-off-by: Nishant Arora <[email protected]>

* fix: unused var

Signed-off-by: Nishant Arora <[email protected]>

* fix(countly): patch

* revert

* fix(countly): repatch, old one seems to be failing.

* fix(countly): bad patch

* revert

* retrying patch

* fix: patch files should not be cached.

Signed-off-by: Nishant Arora <[email protected]>

* fix: fixing cache keys

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): ✨ Introduces Redirect Rule Management (#1240)

* feat: exporting rules ending regex

Signed-off-by: Nishant Arora <[email protected]>

* feat: :sparkles: Adding Rule Management UI

Signed-off-by: Nishant Arora <[email protected]>

* feat: :sparkles: hooking up with background worker.

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint

Signed-off-by: Nishant Arora <[email protected]>

* fix: :art: button styling

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :lipstick: Making UI a bit better

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): Tracking URL resolved/observed count. (#1245)

* fix(mv3): Reverting Telemetry Changes To Use PatchedCountlySDK

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): metrics build

Signed-off-by: Nishant Arora <[email protected]>

* fix: more reverts + fixing patch

Signed-off-by: Nishant Arora <[email protected]>

* feat: adding request view.

Signed-off-by: Nishant Arora <[email protected]>

* Reverting to mainline rc patch

* Reverting to mainline rc add-on/src/lib/ipfs-companion.js

* feat(telemetry):

Signed-off-by: Nishant Arora <[email protected]>

* feat(telemetry): Implementing RequestTracker Event Handler

Signed-off-by: Nishant Arora <[email protected]>

* feat(telemetry): hooking up events.

Signed-off-by: Nishant Arora <[email protected]>

* fix(types): annotations

* fix(telemetry): :wastebasket: returning to previous state

Signed-off-by: Nishant Arora <[email protected]>

* fix(telemetry): :recycle: Refactor Request Tracker

Signed-off-by: Nishant Arora <[email protected]>

* fix(telemetry): hooking up requests

Signed-off-by: Nishant Arora <[email protected]>

* fix(telemetry): better types

Signed-off-by: Nishant Arora <[email protected]>

* fix(countly): :wastebasket: more stuff goes, because test need to pass.

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): fixed

* feat(test): test tracker.

* fix: remove only

Signed-off-by: Nishant Arora <[email protected]>

* fix: :lipstick: line break

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): Ask for Host Permissions if not exist. (#1250)

* feat(mv3): :sparkles: Requesting Host Permissions Explicitly

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :bug: Adding perms step on installed.

Signed-off-by: Nishant Arora <[email protected]>

* fix: request-permission-view tracking

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Making permissions agnostic to browser

Signed-off-by: Nishant Arora <[email protected]>

* docs: clarify why we need host permission

making prompt less scary, shorter, and informative

* Update add-on/src/lib/ipfs-request.js

Co-authored-by: Marcin Rataj <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>

* feat(mv3): Redirection Tests (#1236)

* feat(mv3): :sparkles: Patching countly-sdk-web

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :sparkles: Implementing Custom Async Store.

Signed-off-by: Nishant Arora <[email protected]>

* chore(mv3): :adhesive_bandage: Hooking everything up together.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Countly Patching + [email protected]

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :adhesive_bandage: Patching the Patch

Signed-off-by: Nishant Arora <[email protected]>

* fix: tests

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :recycle: Refactoring `supportsBlock` Checks.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Regex Bug

Signed-off-by: Nishant Arora <[email protected]>

* feat: Migrating blocking redirection test to observing redirection test

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :wrench: Fixing the mocha-setup.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :recycle: Moving Setup Files.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): gateway-redirect tests now fixed.

Signed-off-by: Nishant Arora <[email protected]>

* fix: :adhesive_bandage: Patching error messages

Signed-off-by: Nishant Arora <[email protected]>

* fix(patch): countly-web-sdk

* fix(patch): :pin: Pinning countly-web-sdk to 23.2.2

* fix(mv3): :lipstick: Fixing Lint

Signed-off-by: Nishant Arora <[email protected]>

* feat: protocol-handler-redirection-tests

Signed-off-by: Nishant Arora <[email protected]>

* feat: more tests fixed

Signed-off-by: Nishant Arora <[email protected]>

* fix: More tests

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint fix

Signed-off-by: Nishant Arora <[email protected]>

* test: merge mocha-setup files (#1246)

* test: merge mocha-setup files

* test(helper): add mv3-test-enabled helper

* test(setup): remove duplicate setup for mv3/mv2

* test(mv3): merge mv3 tests into mv2 test files (#1247)

* test(mv3): merge mv3 tests into mv2 test files

* chore(lint): fix lint failures

* test(supportsBlock): cleanup test

* test: migrating some tests

* test(redirect): mv3 tests use same code as mv2

* test(redirect): mv3 test cleanup

* test(protohandler): mv3 tests use same code as mv2

* test(helper): make isMv3 flag a boolean

* test: fix after merge

* test: fix after merge

* fix: typerrors for localstorage

Signed-off-by: Nishant Arora <[email protected]>

* fix: Updating test:functional_MV3 command.

Signed-off-by: Nishant Arora <[email protected]>

* fix: setup

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Fixing tests

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): Becuase Ofcourse

* feat(test): scaffolding mv3 + mv2 calls in a single check.

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): unskipping and upgrading dnslink tests to mv3

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): Upgrading workaround tests to MV3

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): removing all skips with better checks.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :recycle: Refactoring tests and removing redundant calls.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): More Dryer

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): one more

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :pencil2: Renaming isMv3TestingEnabled -> isManifestV3

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): refactor expectNoRedirect

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :recycle: Refactoring more.

Signed-off-by: Nishant Arora <[email protected]>

* fix: replacing checks to undefined

Signed-off-by: Nishant Arora <[email protected]>

* fix: renaming expectNoRedirect -> ensureNoRedirect

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Adding missing JSDoc

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :shrug: how did this get removed.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :wastebasket: removed.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Suggestion

* fix(test): :adhesive_bandage: Bad Merge

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): sequential expectNoRedirect

* Update add-on/src/lib/redirect-handler/blockOrObserve.ts

Co-authored-by: Marcin Rataj <[email protected]>

* fix(rules): Better Redirect Rules (#1256)

* fix(mv3): :wrench: Modifying the default local redirect behaviour.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :wrench: Modifying the default local redirect behaviour.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :bug: Making rules less greedy

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :sparkles: Dynamic Rules for subdomain gateways.

Signed-off-by: Nishant Arora <[email protected]>

* fix(types): Adding ambient types for is-ipfs.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test):

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): helper

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): less greedy rules

Signed-off-by: Nishant Arora <[email protected]>

* feat: Adding simpler regex for redirects from similar namespaces.

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): :rotating_light: Warnings

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): Better Default Rules (#1260)

* refactor(mv3): blockOrRequest code

Signed-off-by: Nishant Arora <[email protected]>

* refactor(mv3): Port Logic for Default Rules is more robust.

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): Adding tests for default rule logic.

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* Update add-on/src/lib/redirect-handler/blockOrObserve.ts

* fix(docs): :pencil2: Adding comments

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexfilters): Better Structure and Readability (#1261)

* refactor(regexFilters): :sparkles: Adding a base class for regexFilters.

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving subdomain filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving namespace filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving common filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* feat(regexFilters): :sparkles: Hooking Up All together

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): :pencil2: Lint

Signed-off-by: Nishant Arora <[email protected]>

* fix(regexFilters): :pencil2: Updating message.

Signed-off-by: Nishant Arora <[email protected]>

* fix(rename): :pencil2: CommonPatterRedirectRegexFilter -> CommonPatternRedirectRegexFilter

Signed-off-by: Nishant Arora <[email protected]>

* fix(regexFilters): :recycle: Refactor to remove call to super

Signed-off-by: Nishant Arora <[email protected]>

* fix: make _canHandle private

Signed-off-by: Nishant Arora <[email protected]>

* fix: :zap: Fix math.min on every loop.

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): no blanket redirect for subdomains without namespaces.

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): unused import

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Russell Dempsey <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>

* fix(recovery): Recovery Rules should reset (#1266)

* feat(mv3): :sparkles: Patching countly-sdk-web

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :sparkles: Implementing Custom Async Store.

Signed-off-by: Nishant Arora <[email protected]>

* chore(mv3): :adhesive_bandage: Hooking everything up together.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Countly Patching + [email protected]

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :adhesive_bandage: Patching the Patch

Signed-off-by: Nishant Arora <[email protected]>

* fix: tests

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :recycle: Refactoring `supportsBlock` Checks.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): Regex Bug

Signed-off-by: Nishant Arora <[email protected]>

* feat: Migrating blocking redirection test to observing redirection test

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :wrench: Fixing the mocha-setup.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :recycle: Moving Setup Files.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): gateway-redirect tests now fixed.

Signed-off-by: Nishant Arora <[email protected]>

* fix: :adhesive_bandage: Patching error messages

Signed-off-by: Nishant Arora <[email protected]>

* fix(patch): countly-web-sdk

* fix(patch): :pin: Pinning countly-web-sdk to 23.2.2

* fix(mv3): :lipstick: Fixing Lint

Signed-off-by: Nishant Arora <[email protected]>

* feat: protocol-handler-redirection-tests

Signed-off-by: Nishant Arora <[email protected]>

* feat: more tests fixed

Signed-off-by: Nishant Arora <[email protected]>

* fix: More tests

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint fix

Signed-off-by: Nishant Arora <[email protected]>

* test: merge mocha-setup files (#1246)

* test: merge mocha-setup files

* test(helper): add mv3-test-enabled helper

* test(setup): remove duplicate setup for mv3/mv2

* test(mv3): merge mv3 tests into mv2 test files (#1247)

* test(mv3): merge mv3 tests into mv2 test files

* chore(lint): fix lint failures

* test(supportsBlock): cleanup test

* test: migrating some tests

* test(redirect): mv3 tests use same code as mv2

* test(redirect): mv3 test cleanup

* test(protohandler): mv3 tests use same code as mv2

* test(helper): make isMv3 flag a boolean

* test: fix after merge

* test: fix after merge

* fix: typerrors for localstorage

Signed-off-by: Nishant Arora <[email protected]>

* fix: Updating test:functional_MV3 command.

Signed-off-by: Nishant Arora <[email protected]>

* fix: setup

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Fixing tests

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): Becuase Ofcourse

* feat(test): scaffolding mv3 + mv2 calls in a single check.

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): unskipping and upgrading dnslink tests to mv3

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): Upgrading workaround tests to MV3

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): removing all skips with better checks.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :recycle: Refactoring tests and removing redundant calls.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): More Dryer

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): one more

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :pencil2: Renaming isMv3TestingEnabled -> isManifestV3

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): refactor expectNoRedirect

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :recycle: Refactoring more.

Signed-off-by: Nishant Arora <[email protected]>

* fix: replacing checks to undefined

Signed-off-by: Nishant Arora <[email protected]>

* fix: renaming expectNoRedirect -> ensureNoRedirect

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Adding missing JSDoc

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :shrug: how did this get removed.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :wastebasket: removed.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): Suggestion

* fix(test): :adhesive_bandage: Bad Merge

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): sequential expectNoRedirect

* Update add-on/src/lib/redirect-handler/blockOrObserve.ts

Co-authored-by: Marcin Rataj <[email protected]>

* fix(mv3): :wrench: Modifying the default local redirect behaviour.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :wrench: Modifying the default local redirect behaviour.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :bug: Making rules less greedy

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :sparkles: Dynamic Rules for subdomain gateways.

Signed-off-by: Nishant Arora <[email protected]>

* fix(types): Adding ambient types for is-ipfs.

Signed-off-by: Nishant Arora <[email protected]>

* fix(test):

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): helper

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): less greedy rules

Signed-off-by: Nishant Arora <[email protected]>

* feat: Adding simpler regex for redirects from similar namespaces.

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): :rotating_light: Warnings

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): Better Default Rules (#1260)

* refactor(mv3): blockOrRequest code

Signed-off-by: Nishant Arora <[email protected]>

* refactor(mv3): Port Logic for Default Rules is more robust.

Signed-off-by: Nishant Arora <[email protected]>

* feat(test): Adding tests for default rule logic.

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* Update add-on/src/lib/redirect-handler/blockOrObserve.ts

* fix(docs): :pencil2: Adding comments

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :sparkles: Adding a base class for regexFilters.

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving subdomain filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving namespace filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* refactor(regexFilters): :recycle: Moving common filter to a subclass

Signed-off-by: Nishant Arora <[email protected]>

* feat(regexFilters): :sparkles: Hooking Up All together

Signed-off-by: Nishant Arora <[email protected]>

* fix(lint): :pencil2: Lint

Signed-off-by: Nishant Arora <[email protected]>

* fix(regexFilters): :pencil2: Updating message.

Signed-off-by: Nishant Arora <[email protected]>

* fix(rename): :pencil2: CommonPatterRedirectRegexFilter -> CommonPatternRedirectRegexFilter

Signed-off-by: Nishant Arora <[email protected]>

* fix(regexFilters): :recycle: Refactor to remove call to super

Signed-off-by: Nishant Arora <[email protected]>

* fix: make _canHandle private

Signed-off-by: Nishant Arora <[email protected]>

* fix: :zap: Fix math.min on every loop.

Signed-off-by: Nishant Arora <[email protected]>

* fix(recovery): reset rules

Signed-off-by: Nishant Arora <[email protected]>

* fix(recovery): :recycle: Refactor messaging logic

Signed-off-by: Nishant Arora <[email protected]>

* fix(recovery): :bug: Cleanup Logic

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :bug: fix toggle site integration.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :adhesive_bandage: Hard coding wait as the browser is not cooperative.

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Russell Dempsey <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>

* fix(mv3): :bug: rules section visible. (#1271)

Signed-off-by: Nishant Arora <[email protected]>

* fix(brave): Fix Brave UX (#1270)

* fix(options): fixing options menu

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): Adding brave specific redirects.

Signed-off-by: Nishant Arora <[email protected]>

* fix: lint

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* feat(e2e): Request Handling Tests (#1272)

* fix(test): :recycle: simplify scaffolding

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :test_tube: Adding a final resolution check

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>

* Update add-on/_locales/en/messages.json

Co-authored-by: Marcin Rataj <[email protected]>

* Update add-on/src/options/forms/api-form.js

Co-authored-by: Marcin Rataj <[email protected]>

* Update add-on/_locales/en/messages.json

Co-authored-by: Marcin Rataj <[email protected]>

* Update test/functional/lib/redirect-handler/blockOrObserve.test.ts

Co-authored-by: Marcin Rataj <[email protected]>

* Update README.md

Co-authored-by: Marcin Rataj <[email protected]>

* fix(test):

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :see_no_evil: Don't interrupt websockets and webtransports.

Signed-off-by: Nishant Arora <[email protected]>

* fix: :pencil2: Rename: ensureDeclrativeNetRequetRuleIsAdded -> ensureDeclarativeNetRequestRuleIsAdded

Signed-off-by: Nishant Arora <[email protected]>

* fix: :pencil2: Rename: ensureTabRedirected -> ensureTabUpdatedTo

Signed-off-by: Nishant Arora <[email protected]>

* fix(language): :pencil2: Rewrite

Signed-off-by: Nishant Arora <[email protected]>

* fix(test): :test_tube: Add a failing test.

Signed-off-by: Nishant Arora <[email protected]>

* Update add-on/_locales/en/messages.json

Co-authored-by: Russell Dempsey <[email protected]>

* Update ci/update-manifest.sh

Co-authored-by: Russell Dempsey <[email protected]>

* fix: :pencil2: Beta naming

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): FF Browser Action (#1275)

Signed-off-by: Nishant Arora <[email protected]>

* test(import): :test_tube: Backfill Tests (#1276)

* test(import): :test_tube: Backfill Tests

Signed-off-by: Nishant Arora <[email protected]>

* Update test/functional/lib/ipfs-import.test.js

Co-authored-by: Marcin Rataj <[email protected]>

* Update test/functional/lib/ipfs-import.test.js

Co-authored-by: Marcin Rataj <[email protected]>

* test(import): :test_tube: Backfilling tests for copyImportResultsToFiles

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>

* feat(mv3): :heavy_plus_sign: Adding hash function to generate predict… (#1273)

feat(mv3): :heavy_plus_sign: Adding hash function to generate predictable ids.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :wastebasket: Remove redundant lines.

Signed-off-by: Nishant Arora <[email protected]>

* fix(mv3): :recycle: opposite functionality `supportsBlock` -> `supportsDeclarativeNetRequest`

Signed-off-by: Nishant Arora <[email protected]>

* feat(mv3): :twisted_rightwards_arrows: Adding migrations for embedded to external.

Signed-off-by: Nishant Arora <[email protected]>

---------

Signed-off-by: Nishant Arora <[email protected]>
Co-authored-by: Russell Dempsey <[email protected]>
Co-authored-by: Steve Loeppky <[email protected]>
Co-authored-by: Marcin Rataj <[email protected]>
This was referenced Sep 15, 2023
@AntiMoron
Copy link

Folks, support me. protobufjs/protobuf.js#1941

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

What to do about Manifest V3
4 participants