browser-extension-manager 1.3.49 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -70
- package/dist/background.js +4 -0
- package/dist/build.js +3 -0
- package/dist/cli.js +1 -0
- package/dist/commands/test.js +55 -0
- package/dist/content.js +4 -0
- package/dist/defaults/CLAUDE.md +66 -6
- package/dist/gulp/tasks/defaults.js +15 -2
- package/dist/offscreen.js +4 -0
- package/dist/options.js +4 -0
- package/dist/page.js +4 -0
- package/dist/popup.js +4 -0
- package/dist/sidepanel.js +4 -0
- package/dist/test/assert.js +120 -0
- package/dist/test/fixtures/consumer-extension/dist/background.js +15 -0
- package/dist/test/fixtures/consumer-extension/dist/manifest.json +20 -0
- package/dist/test/fixtures/consumer-extension/dist/options.html +10 -0
- package/dist/test/fixtures/consumer-extension/dist/popup.html +11 -0
- package/dist/test/harness/extension/background.js +26 -0
- package/dist/test/harness/extension/manifest.json +27 -0
- package/dist/test/harness/extension/options.html +12 -0
- package/dist/test/harness/extension/popup.html +12 -0
- package/dist/test/harness/extension/sidepanel.html +12 -0
- package/dist/test/index.js +63 -0
- package/dist/test/runner.js +407 -0
- package/dist/test/runners/boot.js +201 -0
- package/dist/test/runners/chromium.js +399 -0
- package/dist/test/suites/background/messaging.test.js +42 -0
- package/dist/test/suites/background/storage.test.js +44 -0
- package/dist/test/suites/background/sw-context.test.js +47 -0
- package/dist/test/suites/boot/extension-loads.test.js +56 -0
- package/dist/test/suites/build/affiliatizer.test.js +63 -0
- package/dist/test/suites/build/cli.test.js +123 -0
- package/dist/test/suites/build/expect.test.js +47 -0
- package/dist/test/suites/build/exports.test.js +52 -0
- package/dist/test/suites/build/extension-fallback.test.js +41 -0
- package/dist/test/suites/build/logger-lite.test.js +59 -0
- package/dist/test/suites/build/manager.test.js +162 -0
- package/dist/test/suites/build/mode-helpers.test.js +96 -0
- package/dist/test/suites/view/options-and-sidepanel.test.js +14 -0
- package/dist/test/suites/view/popup-context.test.js +51 -0
- package/dist/test/suites/view/sidepanel.test.js +14 -0
- package/dist/utils/mode-helpers.js +92 -0
- package/package.json +7 -4
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Runtime mode helpers (BEM/EM-pattern), shared across BXM's eight context Managers
|
|
2
|
+
// (build / background / popup / options / content / sidepanel / page / offscreen).
|
|
3
|
+
//
|
|
4
|
+
// Three orthogonal concepts:
|
|
5
|
+
// isDevelopment() — true when running unpacked from disk (an unpacked extension
|
|
6
|
+
// loaded via chrome://extensions or a dev build of the framework).
|
|
7
|
+
// Browser detection uses `chrome.runtime.getManifest().update_url`
|
|
8
|
+
// — packed extensions from the Web Store have one, unpacked ones
|
|
9
|
+
// do not. Falls back to NODE_ENV in Node contexts.
|
|
10
|
+
// isProduction() — inverse. Running from a packed .crx / store-installed extension.
|
|
11
|
+
// isTesting() — true when BXM's test framework is running this process. Set by
|
|
12
|
+
// BXM's test runners (BXM_TEST_MODE=true) and consumer test setups
|
|
13
|
+
// that want the same signal.
|
|
14
|
+
//
|
|
15
|
+
// Use these whenever behavior should differ by *what kind of process* you're in —
|
|
16
|
+
// shorter timeouts in tests, DevTools menu items only in dev, prompts suppressed in
|
|
17
|
+
// tests. Don't use them for "should we hit dev or prod backends" — that's a config
|
|
18
|
+
// concern; use `getEnvironment()` for that (in build.js).
|
|
19
|
+
//
|
|
20
|
+
// Context caveat: in build-time Node (gulp / CLI), `chrome` is undefined. We detect
|
|
21
|
+
// via `typeof chrome` so the same code works in every context. In test mode the
|
|
22
|
+
// browser-side check is short-circuited via BXM_TEST_MODE so `isDevelopment()`
|
|
23
|
+
// returns a stable value regardless of which test layer is running.
|
|
24
|
+
|
|
25
|
+
function isDevelopment() {
|
|
26
|
+
// Browser-side: rely on `update_url` being absent for unpacked extensions.
|
|
27
|
+
// (Store-installed extensions have `update_url` set to clients2.google.com / similar.)
|
|
28
|
+
if (typeof chrome !== 'undefined' && chrome.runtime && typeof chrome.runtime.getManifest === 'function') {
|
|
29
|
+
try {
|
|
30
|
+
const manifest = chrome.runtime.getManifest();
|
|
31
|
+
return !manifest.update_url;
|
|
32
|
+
} catch (_) { /* fall through */ }
|
|
33
|
+
}
|
|
34
|
+
// Node / build-time fallback.
|
|
35
|
+
if (process.env.NODE_ENV === 'development') return true;
|
|
36
|
+
if (process.env.BXM_BUILD_MODE === 'true') return false;
|
|
37
|
+
if (this && this.config && this.config.bxm && this.config.bxm.environment === 'development') return true;
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function isProduction() {
|
|
42
|
+
return !this.isDevelopment();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function isTesting() {
|
|
46
|
+
// Canonical signal — set by BXM's test runners and consumer test setups alike.
|
|
47
|
+
// Works in Node (process.env) AND in extension contexts (the harness extension
|
|
48
|
+
// sets globalThis.BXM_TEST_MODE before any consumer code runs).
|
|
49
|
+
if (typeof process !== 'undefined' && process.env && process.env.BXM_TEST_MODE === 'true') return true;
|
|
50
|
+
if (typeof globalThis !== 'undefined' && globalThis.BXM_TEST_MODE === true) return true;
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// `getVersion()` — returns the extension's version string.
|
|
55
|
+
// 1. `chrome.runtime.getManifest().version` when running inside an extension context.
|
|
56
|
+
// 2. `<cwd>/package.json#version` for build-time scripts.
|
|
57
|
+
// 3. null when neither resolves.
|
|
58
|
+
function getVersion() {
|
|
59
|
+
if (typeof chrome !== 'undefined' && chrome.runtime && typeof chrome.runtime.getManifest === 'function') {
|
|
60
|
+
try {
|
|
61
|
+
return chrome.runtime.getManifest().version || null;
|
|
62
|
+
} catch (_) { /* fall through */ }
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const path = require('path');
|
|
66
|
+
const pkg = require(path.join(process.cwd(), 'package.json'));
|
|
67
|
+
return pkg.version || null;
|
|
68
|
+
} catch (_) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Mix the helpers into a Manager constructor's prototype + the constructor itself
|
|
74
|
+
// (so `Manager.isTesting()` works statically too, matching BEM/EM pattern).
|
|
75
|
+
function attachTo(Manager) {
|
|
76
|
+
Manager.prototype.isDevelopment = isDevelopment;
|
|
77
|
+
Manager.prototype.isProduction = isProduction;
|
|
78
|
+
Manager.prototype.isTesting = isTesting;
|
|
79
|
+
Manager.prototype.getVersion = getVersion;
|
|
80
|
+
Manager.isDevelopment = isDevelopment;
|
|
81
|
+
Manager.isProduction = isProduction;
|
|
82
|
+
Manager.isTesting = isTesting;
|
|
83
|
+
Manager.getVersion = getVersion;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
module.exports = {
|
|
87
|
+
attachTo,
|
|
88
|
+
isDevelopment,
|
|
89
|
+
isProduction,
|
|
90
|
+
isTesting,
|
|
91
|
+
getVersion,
|
|
92
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browser-extension-manager",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Browser Extension Manager dependency manager",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"start": "npm run prepare:watch",
|
|
23
23
|
"prepare": "node -e \"require('prepare-package')()\"",
|
|
24
24
|
"prepare:watch": "node -e \"require('prepare-package/watch')()\"",
|
|
25
|
+
"test": "node ./bin/browser-extension-manager test",
|
|
25
26
|
"wm:prod": "npm uninstall web-manager && npm i web-manager@latest",
|
|
26
27
|
"wm:local": "npm uninstall web-manager && npm i ../web-manager"
|
|
27
28
|
},
|
|
@@ -47,7 +48,8 @@
|
|
|
47
48
|
"gulp": "gulp --cwd ./ --gulpfile ./node_modules/browser-extension-manager/dist/gulp/main.js",
|
|
48
49
|
"build": "npx mgr clean && npx mgr setup && BXM_BUILD_MODE=true npm run gulp -- build",
|
|
49
50
|
"publish": "BXM_IS_PUBLISH=true npm run gulp -- publish",
|
|
50
|
-
"release": "npm run build && npm run publish"
|
|
51
|
+
"release": "npm run build && npm run publish",
|
|
52
|
+
"test": "npx mgr test"
|
|
51
53
|
},
|
|
52
54
|
"engines": {
|
|
53
55
|
"node": "22"
|
|
@@ -94,7 +96,7 @@
|
|
|
94
96
|
"node-powertools": "^3.0.0",
|
|
95
97
|
"npm-api": "^1.0.1",
|
|
96
98
|
"sass": "^1.99.0",
|
|
97
|
-
"web-manager": "^4.1.
|
|
99
|
+
"web-manager": "^4.1.42",
|
|
98
100
|
"webpack": "^5.106.2",
|
|
99
101
|
"wonderful-fetch": "^2.0.5",
|
|
100
102
|
"wonderful-version": "^1.3.2",
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
"gulp": "^5.0.1"
|
|
106
108
|
},
|
|
107
109
|
"devDependencies": {
|
|
108
|
-
"prepare-package": "^2.1.0"
|
|
110
|
+
"prepare-package": "^2.1.0",
|
|
111
|
+
"puppeteer": "^24.43.1"
|
|
109
112
|
}
|
|
110
113
|
}
|