extension 4.0.35 → 4.1.1
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
CHANGED
|
@@ -41,7 +41,7 @@ Browser extensions ship with the worst dev experience in modern web. Manifest V3
|
|
|
41
41
|
|
|
42
42
|
## Watch it work
|
|
43
43
|
|
|
44
|
-
[60
|
|
44
|
+
[](https://extension.js.org/docs)
|
|
45
45
|
|
|
46
46
|
Or skip the install and try a [live template](https://templates.extension.dev) in your browser.
|
|
47
47
|
|
|
@@ -155,7 +155,9 @@ npm install extension@latest --save-dev
|
|
|
155
155
|
}
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
Run `npm run dev` to develop, `npm run build` for production, and `npm run preview` to inspect the production output.
|
|
158
|
+
Run `npm run dev` to develop, `npm run build` for production, and `npm run preview` to inspect the production output.
|
|
159
|
+
|
|
160
|
+
[](https://extension.js.org/docs/commands/dev)
|
|
159
161
|
|
|
160
162
|
## Start from a Chrome sample
|
|
161
163
|
|
|
@@ -165,7 +167,7 @@ Pull any sample from [Chrome Extension Samples](https://github.com/GoogleChrome/
|
|
|
165
167
|
npx extension@latest dev https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/functional-samples/sample.page-redder --browser=edge
|
|
166
168
|
```
|
|
167
169
|
|
|
168
|
-
[
|
|
170
|
+
[](https://extension.js.org/docs/getting-started/immediately)
|
|
169
171
|
|
|
170
172
|
## Package managers
|
|
171
173
|
|
package/dist/browsers.cjs
CHANGED
|
@@ -237,10 +237,6 @@ var __webpack_modules__ = {
|
|
|
237
237
|
label: 'Browser',
|
|
238
238
|
value: provenanceNote ? `${browserLabel} ${provenanceNote}` : browserLabel
|
|
239
239
|
},
|
|
240
|
-
{
|
|
241
|
-
label: 'Binary',
|
|
242
|
-
value: provenanceNote ? _messages__rspack_import_5.Yy(opts.binaryPath || '') : ''
|
|
243
|
-
},
|
|
244
240
|
{
|
|
245
241
|
label: 'Output',
|
|
246
242
|
value: _messages__rspack_import_5.Yy(opts.outPath)
|
|
@@ -784,8 +780,6 @@ var __webpack_modules__ = {
|
|
|
784
780
|
}
|
|
785
781
|
function binaryProvenanceNote(provenance) {
|
|
786
782
|
if ('pinned' === provenance) return '(pinned with --chromium-binary)';
|
|
787
|
-
if ('system' === provenance) return '(system, not the managed default)';
|
|
788
|
-
if ('snapshot' === provenance) return '(cached snapshot)';
|
|
789
783
|
return '';
|
|
790
784
|
}
|
|
791
785
|
function runningInDevelopment(manifest, browser, message, browserVersionLine, updateSuffix, opts) {
|
|
@@ -824,7 +818,6 @@ var __webpack_modules__ = {
|
|
|
824
818
|
}));
|
|
825
819
|
const provenanceNote = binaryProvenanceNote(opts?.binaryProvenance);
|
|
826
820
|
const browserLabel = provenanceNote ? `${baseBrowserLabel} ${provenanceNote}` : baseBrowserLabel;
|
|
827
|
-
const binaryRowValue = provenanceNote ? collapseHomeDirInCardValue(String(opts?.binaryPath || '').trim()) : '';
|
|
828
821
|
const cleanId = String(id || '').trim();
|
|
829
822
|
const includeExtensionId = opts?.includeExtensionId !== false;
|
|
830
823
|
const updateNotice = updateSuffix ? ` ${updateSuffix}` : '';
|
|
@@ -838,18 +831,10 @@ var __webpack_modules__ = {
|
|
|
838
831
|
label: 'Browser',
|
|
839
832
|
value: browserLabel
|
|
840
833
|
},
|
|
841
|
-
{
|
|
842
|
-
label: 'Binary',
|
|
843
|
-
value: binaryRowValue
|
|
844
|
-
},
|
|
845
834
|
{
|
|
846
835
|
label: 'Extension',
|
|
847
836
|
value: displayVersion ? `${displayName} ${displayVersion}` : displayName
|
|
848
837
|
},
|
|
849
|
-
{
|
|
850
|
-
label: 'Extension ID',
|
|
851
|
-
value: includeExtensionId ? cleanId : ''
|
|
852
|
-
},
|
|
853
838
|
{
|
|
854
839
|
label: 'Profile',
|
|
855
840
|
value: collapseHomeDirInCardValue(String(opts?.profilePath || '').trim())
|
|
@@ -857,6 +842,10 @@ var __webpack_modules__ = {
|
|
|
857
842
|
{
|
|
858
843
|
label: 'Run ID',
|
|
859
844
|
value: opts?.runLabel || ''
|
|
845
|
+
},
|
|
846
|
+
{
|
|
847
|
+
label: 'Extension ID',
|
|
848
|
+
value: includeExtensionId ? cleanId : ''
|
|
860
849
|
}
|
|
861
850
|
]
|
|
862
851
|
});
|
|
@@ -1361,6 +1350,10 @@ var __webpack_modules__ = {
|
|
|
1361
1350
|
if ('number' == typeof details?.browserPid && Number.isFinite(details.browserPid)) ready.browserPid = details.browserPid;
|
|
1362
1351
|
const extensionId = String(details?.extensionId || '').trim();
|
|
1363
1352
|
if (extensionId) ready.extensionId = extensionId;
|
|
1353
|
+
const binary = String(details?.binary || '').trim();
|
|
1354
|
+
if (binary) ready.binary = binary;
|
|
1355
|
+
const provenance = String(details?.binaryProvenance || '').trim();
|
|
1356
|
+
if (provenance) ready.binaryProvenance = provenance;
|
|
1364
1357
|
node_fs__rspack_import_0.writeFileSync(readyPath, JSON.stringify(ready, null, 2));
|
|
1365
1358
|
} catch {}
|
|
1366
1359
|
}
|
|
@@ -3244,6 +3237,8 @@ var __webpack_modules__ = {
|
|
|
3244
3237
|
(0, ready_stamp.M)(launchOutputPath, {
|
|
3245
3238
|
profilePath: chromiumConfig.find((flag)=>flag.startsWith('--user-data-dir='))?.slice('--user-data-dir='.length).replace(/^"|"$/g, ''),
|
|
3246
3239
|
browserPid: child?.pid,
|
|
3240
|
+
binary: browserBinaryLocation ?? void 0,
|
|
3241
|
+
binaryProvenance,
|
|
3247
3242
|
extensionId: launchOutputPath ? (0, banner.vy)(launchOutputPath) : void 0
|
|
3248
3243
|
});
|
|
3249
3244
|
const pipeStreams = usePipe && child?.stdio?.[3] && child?.stdio?.[4] ? {
|
|
@@ -5946,11 +5941,12 @@ var __webpack_modules__ = {
|
|
|
5946
5941
|
console.error(...parts);
|
|
5947
5942
|
}
|
|
5948
5943
|
const CARD_LABEL_WIDTH = 15;
|
|
5944
|
+
const MAX_CARD_ROWS = 3;
|
|
5949
5945
|
function card(input = {}) {
|
|
5950
5946
|
const version = String(input.version || '').trim();
|
|
5951
5947
|
const suffix = String(input.suffix || '').trim();
|
|
5952
|
-
const head = ` 🧩
|
|
5953
|
-
const body = (input.rows || []).filter((row)=>String(row.value || '').trim().length > 0).map((row)=>{
|
|
5948
|
+
const head = ` 🧩 Extension.js` + (version ? ` ${pintor__rspack_import_0_default().gray(version)}` : '') + (suffix ? ` ${suffix}` : '');
|
|
5949
|
+
const body = (input.rows || []).filter((row)=>String(row.value || '').trim().length > 0).slice(0, MAX_CARD_ROWS).map((row)=>{
|
|
5954
5950
|
const label = row.label.padEnd(CARD_LABEL_WIDTH);
|
|
5955
5951
|
return ` ${label}${pintor__rspack_import_0_default().gray(String(row.value).trim())}`;
|
|
5956
5952
|
});
|
package/dist/cli.cjs
CHANGED
|
@@ -238,10 +238,6 @@ var __webpack_modules__ = {
|
|
|
238
238
|
label: 'Browser',
|
|
239
239
|
value: provenanceNote ? `${browserLabel} ${provenanceNote}` : browserLabel
|
|
240
240
|
},
|
|
241
|
-
{
|
|
242
|
-
label: 'Binary',
|
|
243
|
-
value: provenanceNote ? _messages__rspack_import_5.Yy(opts.binaryPath || '') : ''
|
|
244
|
-
},
|
|
245
241
|
{
|
|
246
242
|
label: 'Output',
|
|
247
243
|
value: _messages__rspack_import_5.Yy(opts.outPath)
|
|
@@ -785,8 +781,6 @@ var __webpack_modules__ = {
|
|
|
785
781
|
}
|
|
786
782
|
function binaryProvenanceNote(provenance) {
|
|
787
783
|
if ('pinned' === provenance) return '(pinned with --chromium-binary)';
|
|
788
|
-
if ('system' === provenance) return '(system, not the managed default)';
|
|
789
|
-
if ('snapshot' === provenance) return '(cached snapshot)';
|
|
790
784
|
return '';
|
|
791
785
|
}
|
|
792
786
|
function runningInDevelopment(manifest, browser, message, browserVersionLine, updateSuffix, opts) {
|
|
@@ -825,7 +819,6 @@ var __webpack_modules__ = {
|
|
|
825
819
|
}));
|
|
826
820
|
const provenanceNote = binaryProvenanceNote(opts?.binaryProvenance);
|
|
827
821
|
const browserLabel = provenanceNote ? `${baseBrowserLabel} ${provenanceNote}` : baseBrowserLabel;
|
|
828
|
-
const binaryRowValue = provenanceNote ? collapseHomeDirInCardValue(String(opts?.binaryPath || '').trim()) : '';
|
|
829
822
|
const cleanId = String(id || '').trim();
|
|
830
823
|
const includeExtensionId = opts?.includeExtensionId !== false;
|
|
831
824
|
const updateNotice = updateSuffix ? ` ${updateSuffix}` : '';
|
|
@@ -839,18 +832,10 @@ var __webpack_modules__ = {
|
|
|
839
832
|
label: 'Browser',
|
|
840
833
|
value: browserLabel
|
|
841
834
|
},
|
|
842
|
-
{
|
|
843
|
-
label: 'Binary',
|
|
844
|
-
value: binaryRowValue
|
|
845
|
-
},
|
|
846
835
|
{
|
|
847
836
|
label: 'Extension',
|
|
848
837
|
value: displayVersion ? `${displayName} ${displayVersion}` : displayName
|
|
849
838
|
},
|
|
850
|
-
{
|
|
851
|
-
label: 'Extension ID',
|
|
852
|
-
value: includeExtensionId ? cleanId : ''
|
|
853
|
-
},
|
|
854
839
|
{
|
|
855
840
|
label: 'Profile',
|
|
856
841
|
value: collapseHomeDirInCardValue(String(opts?.profilePath || '').trim())
|
|
@@ -858,6 +843,10 @@ var __webpack_modules__ = {
|
|
|
858
843
|
{
|
|
859
844
|
label: 'Run ID',
|
|
860
845
|
value: opts?.runLabel || ''
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
label: 'Extension ID',
|
|
849
|
+
value: includeExtensionId ? cleanId : ''
|
|
861
850
|
}
|
|
862
851
|
]
|
|
863
852
|
});
|
|
@@ -1362,6 +1351,10 @@ var __webpack_modules__ = {
|
|
|
1362
1351
|
if ('number' == typeof details?.browserPid && Number.isFinite(details.browserPid)) ready.browserPid = details.browserPid;
|
|
1363
1352
|
const extensionId = String(details?.extensionId || '').trim();
|
|
1364
1353
|
if (extensionId) ready.extensionId = extensionId;
|
|
1354
|
+
const binary = String(details?.binary || '').trim();
|
|
1355
|
+
if (binary) ready.binary = binary;
|
|
1356
|
+
const provenance = String(details?.binaryProvenance || '').trim();
|
|
1357
|
+
if (provenance) ready.binaryProvenance = provenance;
|
|
1365
1358
|
node_fs__rspack_import_0.writeFileSync(readyPath, JSON.stringify(ready, null, 2));
|
|
1366
1359
|
} catch {}
|
|
1367
1360
|
}
|
|
@@ -3235,6 +3228,8 @@ var __webpack_modules__ = {
|
|
|
3235
3228
|
(0, ready_stamp.M)(launchOutputPath, {
|
|
3236
3229
|
profilePath: chromiumConfig.find((flag)=>flag.startsWith('--user-data-dir='))?.slice('--user-data-dir='.length).replace(/^"|"$/g, ''),
|
|
3237
3230
|
browserPid: child?.pid,
|
|
3231
|
+
binary: browserBinaryLocation ?? void 0,
|
|
3232
|
+
binaryProvenance,
|
|
3238
3233
|
extensionId: launchOutputPath ? (0, banner.vy)(launchOutputPath) : void 0
|
|
3239
3234
|
});
|
|
3240
3235
|
const pipeStreams = usePipe && child?.stdio?.[3] && child?.stdio?.[4] ? {
|
|
@@ -5959,11 +5954,12 @@ var __webpack_modules__ = {
|
|
|
5959
5954
|
}
|
|
5960
5955
|
};
|
|
5961
5956
|
const CARD_LABEL_WIDTH = 15;
|
|
5957
|
+
const MAX_CARD_ROWS = 3;
|
|
5962
5958
|
function card(input = {}) {
|
|
5963
5959
|
const version = String(input.version || '').trim();
|
|
5964
5960
|
const suffix = String(input.suffix || '').trim();
|
|
5965
|
-
const head = ` 🧩
|
|
5966
|
-
const body = (input.rows || []).filter((row)=>String(row.value || '').trim().length > 0).map((row)=>{
|
|
5961
|
+
const head = ` 🧩 Extension.js` + (version ? ` ${pintor__rspack_import_0_default().gray(version)}` : '') + (suffix ? ` ${suffix}` : '');
|
|
5962
|
+
const body = (input.rows || []).filter((row)=>String(row.value || '').trim().length > 0).slice(0, MAX_CARD_ROWS).map((row)=>{
|
|
5967
5963
|
const label = row.label.padEnd(CARD_LABEL_WIDTH);
|
|
5968
5964
|
return ` ${label}${pintor__rspack_import_0_default().gray(String(row.value).trim())}`;
|
|
5969
5965
|
});
|
|
@@ -9111,6 +9107,14 @@ Cross-browser compatibility
|
|
|
9111
9107
|
}
|
|
9112
9108
|
});
|
|
9113
9109
|
}
|
|
9110
|
+
function binaryDetailSuffix(ready) {
|
|
9111
|
+
const binary = String(ready?.binary || '').trim();
|
|
9112
|
+
if (!binary) return '';
|
|
9113
|
+
const home = external_node_os_.homedir();
|
|
9114
|
+
const shown = home && binary.startsWith(home + external_node_path_default().sep) ? `~${binary.slice(home.length)}` : binary;
|
|
9115
|
+
const provenance = String(ready?.binaryProvenance || '').trim();
|
|
9116
|
+
return provenance ? `, ${shown} (${provenance})` : `, ${shown}`;
|
|
9117
|
+
}
|
|
9114
9118
|
const CONNECT_TIMEOUT_MS = 5000;
|
|
9115
9119
|
const PROBE_TIMEOUT_MS = 3000;
|
|
9116
9120
|
const EXECUTOR_ATTACH_GRACE_MS = 10000;
|
|
@@ -9362,18 +9366,18 @@ Cross-browser compatibility
|
|
|
9362
9366
|
if (ready.browserExitedAt) results.push({
|
|
9363
9367
|
check: 'browser',
|
|
9364
9368
|
status: 'fail',
|
|
9365
|
-
detail: `browser exited at ${ready.browserExitedAt}${null != ready.browserExitCode ? ` (code ${ready.browserExitCode})` : ''} while the dev server kept running`,
|
|
9369
|
+
detail: `browser exited at ${ready.browserExitedAt}${null != ready.browserExitCode ? ` (code ${ready.browserExitCode})` : ''} while the dev server kept running${binaryDetailSuffix(ready)}`,
|
|
9366
9370
|
remediation: 'Restart the dev session to relaunch the browser'
|
|
9367
9371
|
});
|
|
9368
9372
|
else if (null != ready.cdpPort) results.push({
|
|
9369
9373
|
check: 'browser',
|
|
9370
9374
|
status: 'pass',
|
|
9371
|
-
detail: `browser running (cdpPort ${ready.cdpPort})`
|
|
9375
|
+
detail: `browser running (cdpPort ${ready.cdpPort})${binaryDetailSuffix(ready)}`
|
|
9372
9376
|
});
|
|
9373
9377
|
else results.push({
|
|
9374
9378
|
check: 'browser',
|
|
9375
9379
|
status: 'skip',
|
|
9376
|
-
detail:
|
|
9380
|
+
detail: `browser liveness unknown (no cdpPort stamped yet and no exit recorded)${binaryDetailSuffix(ready)}`,
|
|
9377
9381
|
remediation: 'If the browser should be up, wait for launch to finish or restart the dev session'
|
|
9378
9382
|
});
|
|
9379
9383
|
return results;
|
|
@@ -3,6 +3,8 @@ export declare function stampReadyBrowserLaunch(extensionOutputPath: string | un
|
|
|
3
3
|
profilePath?: string;
|
|
4
4
|
browserPid?: number;
|
|
5
5
|
extensionId?: string;
|
|
6
|
+
binary?: string;
|
|
7
|
+
binaryProvenance?: 'managed' | 'pinned' | 'system' | 'snapshot';
|
|
6
8
|
}): void;
|
|
7
9
|
export declare function stampReadyExtensionId(extensionOutputPath: string | undefined, extensionId: string | undefined): void;
|
|
8
10
|
export declare function stampReadyExtensionLoadRefused(extensionOutputPath: string | undefined, reason: string): void;
|
|
@@ -23,6 +23,7 @@ export interface CardInput {
|
|
|
23
23
|
suffix?: string;
|
|
24
24
|
rows?: CardRow[];
|
|
25
25
|
}
|
|
26
|
+
export declare const MAX_CARD_ROWS = 3;
|
|
26
27
|
export declare function card(input?: CardInput): string;
|
|
27
28
|
export declare function browserRowValue(browser: string, versionLine?: string): string;
|
|
28
29
|
export declare function isCardKeyClaimed(key: string): boolean;
|
package/package.json
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"extension": "./bin/extension.cjs"
|
|
39
39
|
},
|
|
40
40
|
"name": "extension",
|
|
41
|
-
"version": "4.
|
|
41
|
+
"version": "4.1.1",
|
|
42
42
|
"description": "The cross-browser extension framework. Build Chrome, Edge, Firefox, and Safari extensions with no build configuration.",
|
|
43
43
|
"homepage": "https://extension.js.org/",
|
|
44
44
|
"bugs": {
|
|
@@ -106,9 +106,9 @@
|
|
|
106
106
|
"vivaldi-location2": "2.1.1",
|
|
107
107
|
"waterfox-location": "2.1.1",
|
|
108
108
|
"yandex-location": "2.1.1",
|
|
109
|
-
"extension-create": "4.
|
|
110
|
-
"extension-develop": "4.
|
|
111
|
-
"extension-install": "4.
|
|
109
|
+
"extension-create": "4.1.1",
|
|
110
|
+
"extension-develop": "4.1.1",
|
|
111
|
+
"extension-install": "4.1.1",
|
|
112
112
|
"commander": "^15.0.0",
|
|
113
113
|
"pintor": "0.3.0",
|
|
114
114
|
"semver": "^7.7.3",
|