Skip to content

Commit 0528006

Browse files
committed
firefox addon
1 parent 337e6e2 commit 0528006

3 files changed

Lines changed: 28 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
A browser extension that exports any web page's rendered DOM to **10 output formats** using the [@node-projects/layout2vector](https://github.com/node-projects/layout2vector) library.
44

55
Install the Chrome version from the [Chrome Web Store](https://chromewebstore.google.com/detail/web2vector/ojjkecepeobhmpilhdhcjcgpdjhnkjgl).
6+
Install the Firefox version from [Firefox Add-ons](https://addons.mozilla.org/de/developers/addon/web2vector).
67

78
<p align="center">
89
<img src="src/icons/icon.svg" width="128" alt="Web2Vector icon" />

scripts/manifest-utils.mjs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
11
import fs from 'node:fs';
22

3+
export const DEFAULT_FIREFOX_ADDON_ID = 'web2vector@node-projects.github.io';
4+
export const DEFAULT_FIREFOX_DATA_COLLECTION_PERMISSIONS = {
5+
required: ['websiteContent'],
6+
};
7+
38
export function readChromeManifest(filePath = 'manifest.json') {
49
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
510
}
611

712
export function createFirefoxManifest(chromeManifest) {
813
const firefoxManifest = structuredClone(chromeManifest);
14+
const geckoSettings = firefoxManifest.browser_specific_settings?.gecko ?? {};
15+
916
firefoxManifest.background = {
1017
scripts: [chromeManifest.background.service_worker],
1118
};
19+
firefoxManifest.browser_specific_settings = {
20+
...firefoxManifest.browser_specific_settings,
21+
gecko: {
22+
...geckoSettings,
23+
id: geckoSettings.id ?? DEFAULT_FIREFOX_ADDON_ID,
24+
data_collection_permissions: geckoSettings.data_collection_permissions
25+
?? structuredClone(DEFAULT_FIREFOX_DATA_COLLECTION_PERMISSIONS),
26+
},
27+
};
1228

1329
return firefoxManifest;
1430
}

tests/manifest.test.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { describe, it, expect } from 'vitest';
22
import fs from 'node:fs';
3-
import { createFirefoxManifest } from '../scripts/manifest-utils.mjs';
3+
import {
4+
createFirefoxManifest,
5+
DEFAULT_FIREFOX_ADDON_ID,
6+
DEFAULT_FIREFOX_DATA_COLLECTION_PERMISSIONS,
7+
} from '../scripts/manifest-utils.mjs';
48

59
describe('manifest.json', () => {
610
const manifest = JSON.parse(fs.readFileSync('manifest.json', 'utf8'));
@@ -42,6 +46,12 @@ describe('manifest.json', () => {
4246
expect(firefoxManifest.background).toEqual({
4347
scripts: ['service-worker.js'],
4448
});
49+
expect(firefoxManifest.browser_specific_settings).toEqual({
50+
gecko: expect.objectContaining({
51+
id: DEFAULT_FIREFOX_ADDON_ID,
52+
data_collection_permissions: DEFAULT_FIREFOX_DATA_COLLECTION_PERMISSIONS,
53+
}),
54+
});
4555
expect(firefoxManifest.permissions).toEqual(manifest.permissions);
4656
expect(firefoxManifest.host_permissions).toEqual(manifest.host_permissions);
4757
expect(firefoxManifest.action).toEqual(manifest.action);

0 commit comments

Comments
 (0)