extension-develop 4.0.19 → 4.0.20
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/dist/0~dev-server.mjs +8 -3
- package/dist/0~rspack-config.mjs +3759 -205
- package/dist/101.mjs +65 -2
- package/dist/349.mjs +2 -0
- package/dist/494.mjs +7 -1
- package/dist/839.mjs +164 -3619
- package/dist/887.mjs +5 -1
- package/dist/bridge-entry.d.ts +5 -4
- package/dist/bridge.mjs +25 -5
- package/dist/contract/codes.json +19 -2
- package/dist/contract/envelope.schema.json +10 -1
- package/dist/contract/golden.eval.target-not-found.json +14 -0
- package/dist/contract/golden.open.headed-window-required.json +14 -0
- package/dist/contracts-entry.d.ts +2 -0
- package/dist/contracts.mjs +12 -0
- package/dist/dev-server/control-bridge/consumer-client.d.ts +15 -1
- package/dist/dev-server/control-bridge/contracts.d.ts +6 -0
- package/dist/dev-server/control-bridge/producer-runtime.d.ts +1 -1
- package/dist/ensure-hmr-for-scripts.js +1 -1
- package/dist/ensure-hmr-for-scripts.mjs +1 -1
- package/dist/feature-scripts-content-script-wrapper.js +2 -2
- package/dist/feature-scripts-content-script-wrapper.mjs +2 -2
- package/dist/lib/extension-id.d.ts +9 -0
- package/dist/lib/messaging.d.ts +9 -0
- package/dist/lib/session-paths.d.ts +2 -0
- package/dist/plugin-playwright/index.d.ts +7 -0
- package/dist/plugin-web-extension/feature-icons/messages.d.ts +3 -0
- package/dist/plugin-web-extension/feature-manifest/manifest-lib/theme-values.d.ts +7 -0
- package/dist/plugin-web-extension/feature-manifest/messages.d.ts +1 -0
- package/dist/plugin-web-extension/feature-manifest/steps/validate-theme-values.d.ts +9 -0
- package/package.json +10 -1
package/dist/101.mjs
CHANGED
|
@@ -7,6 +7,7 @@ import { fetchExtensionFromStore } from "extension-from-store";
|
|
|
7
7
|
import node_fs from "node:fs";
|
|
8
8
|
import node_path from "node:path";
|
|
9
9
|
import { getSpecialFoldersData } from "browser-extension-manifest-fields";
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
10
11
|
import { fmt, isDebug, artifactNoun as messaging_artifactNoun, prefix as messaging_prefix, card } from "./349.mjs";
|
|
11
12
|
import { stripBom, parseJsonSafe } from "./23.mjs";
|
|
12
13
|
import { findNearestDenoConfigSync, validateDenoConfig, PROJECT_MANIFEST_FILENAMES, readProjectDependencies } from "./80.mjs";
|
|
@@ -643,7 +644,7 @@ async function config_loader_isUsingExperimentalConfig(projectPath) {
|
|
|
643
644
|
}
|
|
644
645
|
return false;
|
|
645
646
|
}
|
|
646
|
-
var package_namespaceObject = /*#__PURE__*/ JSON.parse('{"rE":"4.0.
|
|
647
|
+
var package_namespaceObject = /*#__PURE__*/ JSON.parse('{"rE":"4.0.20","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.1.1","@rspack/dev-server":"2.1.0","@rspack/plugin-preact-refresh":"2.0.1","@rspack/plugin-react-refresh":"2.0.2","@vue/compiler-sfc":"3.5.26","acorn":"^8.16.0","adm-zip":"^0.6.0","browser-extension-manifest-fields":"^2.2.9","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","dotenv":"^17.2.3","es-module-lexer":"^2.1.0","extension-from-store":"^0.1.1","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.6.7","less-loader":"13.0.0","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.18","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","prefers-yarn":"2.0.1","react-refresh":"0.18.0","sass-loader":"17.0.0","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","vue":"3.5.26","vue-loader":"17.4.2","webextension-polyfill":"^0.12.0","webpack-merge":"^6.0.1","webpack-target-webextension":"^2.1.3","ws":"^8.20.1"}}');
|
|
647
648
|
function asAbsolute(p) {
|
|
648
649
|
return __rspack_external_node_path_c5b9b54f.isAbsolute(p) ? p : __rspack_external_node_path_c5b9b54f.resolve(p);
|
|
649
650
|
}
|
|
@@ -1781,6 +1782,57 @@ function computeExtensionsToLoad(baseDir, mode, browser, userExtensionOutputPath
|
|
|
1781
1782
|
list.push(userExtensionOutputPath);
|
|
1782
1783
|
return dedupeByResolvedPath(list);
|
|
1783
1784
|
}
|
|
1785
|
+
function idFromHash(hash) {
|
|
1786
|
+
const hex = hash.subarray(0, 16).toString('hex');
|
|
1787
|
+
let id = '';
|
|
1788
|
+
for (const char of hex)id += String.fromCharCode('a'.charCodeAt(0) + parseInt(char, 16));
|
|
1789
|
+
return id;
|
|
1790
|
+
}
|
|
1791
|
+
function chromiumExtensionIdFromKey(manifestKey) {
|
|
1792
|
+
const decoded = Buffer.from(manifestKey, 'base64');
|
|
1793
|
+
return idFromHash(createHash('sha256').update(decoded).digest());
|
|
1794
|
+
}
|
|
1795
|
+
function chromiumExtensionIdFromPath(extensionDir) {
|
|
1796
|
+
const absolute = __rspack_external_node_path_c5b9b54f.resolve(extensionDir);
|
|
1797
|
+
const bytes = 'win32' === process.platform ? Buffer.from(absolute.replace(/[A-Z]/g, (char)=>char.toLowerCase()), 'utf16le') : Buffer.from(absolute, 'utf8');
|
|
1798
|
+
return idFromHash(createHash('sha256').update(bytes).digest());
|
|
1799
|
+
}
|
|
1800
|
+
function readManifest(extensionDir) {
|
|
1801
|
+
try {
|
|
1802
|
+
const raw = __rspack_external_node_fs_5ea92f0c.readFileSync(__rspack_external_node_path_c5b9b54f.join(extensionDir, 'manifest.json'), 'utf-8');
|
|
1803
|
+
const parsed = JSON.parse(stripBom(raw));
|
|
1804
|
+
return parsed && 'object' == typeof parsed ? parsed : null;
|
|
1805
|
+
} catch {
|
|
1806
|
+
return null;
|
|
1807
|
+
}
|
|
1808
|
+
}
|
|
1809
|
+
function chromiumExtensionId(extensionDir) {
|
|
1810
|
+
const manifest = readManifest(extensionDir);
|
|
1811
|
+
const key = manifest?.key;
|
|
1812
|
+
if ('string' == typeof key && key.trim().length > 0) try {
|
|
1813
|
+
return chromiumExtensionIdFromKey(key);
|
|
1814
|
+
} catch {}
|
|
1815
|
+
return chromiumExtensionIdFromPath(extensionDir);
|
|
1816
|
+
}
|
|
1817
|
+
function geckoExtensionId(extensionDir) {
|
|
1818
|
+
const manifest = readManifest(extensionDir);
|
|
1819
|
+
const settings = manifest?.browser_specific_settings ?? manifest?.applications;
|
|
1820
|
+
const id = settings?.gecko?.id;
|
|
1821
|
+
return 'string' == typeof id && id.trim().length > 0 ? id : void 0;
|
|
1822
|
+
}
|
|
1823
|
+
function managedExtensionRecords(browser, extensionDirs) {
|
|
1824
|
+
const gecko = isGeckoBasedBrowser(browser);
|
|
1825
|
+
return extensionDirs.map((dir)=>{
|
|
1826
|
+
const absolute = __rspack_external_node_path_c5b9b54f.resolve(dir);
|
|
1827
|
+
const id = gecko ? geckoExtensionId(absolute) : chromiumExtensionId(absolute);
|
|
1828
|
+
return id ? {
|
|
1829
|
+
path: absolute,
|
|
1830
|
+
id
|
|
1831
|
+
} : {
|
|
1832
|
+
path: absolute
|
|
1833
|
+
};
|
|
1834
|
+
});
|
|
1835
|
+
}
|
|
1784
1836
|
function nowISO() {
|
|
1785
1837
|
return new Date().toISOString();
|
|
1786
1838
|
}
|
|
@@ -1864,6 +1916,8 @@ function createPlaywrightMetadataWriter(options) {
|
|
|
1864
1916
|
}
|
|
1865
1917
|
})();
|
|
1866
1918
|
if (foreignLiveDevSession) console.warn(`[extension] a live dev session (pid ${foreignLiveDevSession.pid}) owns ${readyPath}; this ${options.command} run will not rewrite the session's ready.json/events.ndjson. The output dir is shared, so the dev browser may pick up freshly ${options.command}-built files. Stop the dev session first for a clean ${options.command} receipt.`);
|
|
1919
|
+
const toManagedRecords = (dirs)=>Array.isArray(dirs) && dirs.length > 0 ? managedExtensionRecords(options.browser, dirs) : void 0;
|
|
1920
|
+
let managedExtensions = toManagedRecords(options.managedExtensionDirs);
|
|
1867
1921
|
const base = {
|
|
1868
1922
|
schemaVersion: 2,
|
|
1869
1923
|
schema: 1,
|
|
@@ -1895,11 +1949,15 @@ function createPlaywrightMetadataWriter(options) {
|
|
|
1895
1949
|
};
|
|
1896
1950
|
if (extra?.code) payload.code = extra.code;
|
|
1897
1951
|
if (extra?.message) payload.message = extra.message;
|
|
1952
|
+
if (managedExtensions) payload.managedExtensions = managedExtensions;
|
|
1898
1953
|
try {
|
|
1899
1954
|
if (__rspack_external_node_fs_5ea92f0c.existsSync(readyPath)) {
|
|
1900
1955
|
const prev = JSON.parse(__rspack_external_node_fs_5ea92f0c.readFileSync(readyPath, 'utf-8'));
|
|
1901
1956
|
if ('number' == typeof prev.cdpPort) payload.cdpPort = prev.cdpPort;
|
|
1902
1957
|
if ('number' == typeof prev.rdpPort) payload.rdpPort = prev.rdpPort;
|
|
1958
|
+
if (!payload.managedExtensions && Array.isArray(prev.managedExtensions)) payload.managedExtensions = prev.managedExtensions;
|
|
1959
|
+
if ('string' == typeof prev.profilePath) payload.profilePath = prev.profilePath;
|
|
1960
|
+
if ('number' == typeof prev.browserPid) payload.browserPid = prev.browserPid;
|
|
1903
1961
|
if ('string' == typeof prev.browserExitedAt) {
|
|
1904
1962
|
payload.browserExitedAt = prev.browserExitedAt;
|
|
1905
1963
|
payload.browserExitCode = prev.browserExitCode ?? null;
|
|
@@ -1936,6 +1994,9 @@ function createPlaywrightMetadataWriter(options) {
|
|
|
1936
1994
|
metadataDir,
|
|
1937
1995
|
readyPath,
|
|
1938
1996
|
eventsPath,
|
|
1997
|
+
setManagedExtensionDirs (dirs) {
|
|
1998
|
+
managedExtensions = toManagedRecords(dirs);
|
|
1999
|
+
},
|
|
1939
2000
|
writeStarting () {
|
|
1940
2001
|
if (foreignLiveDevSession) return;
|
|
1941
2002
|
plugin_playwright_ensureDirSync(metadataDir);
|
|
@@ -2011,7 +2072,8 @@ class PlaywrightPlugin {
|
|
|
2011
2072
|
instanceId: options.instanceId,
|
|
2012
2073
|
controlPort: options.controlPort,
|
|
2013
2074
|
controlPath: options.controlPath,
|
|
2014
|
-
logsPath: options.logsPath
|
|
2075
|
+
logsPath: options.logsPath,
|
|
2076
|
+
managedExtensionDirs: options.managedExtensionDirs
|
|
2015
2077
|
});
|
|
2016
2078
|
}
|
|
2017
2079
|
apply(compiler) {
|
|
@@ -2211,6 +2273,7 @@ async function extensionPreview(pathOrRemoteUrl, previewOptions, browserLauncher
|
|
|
2211
2273
|
config: merged.extensions
|
|
2212
2274
|
});
|
|
2213
2275
|
const unpackedExtensionDirsToLoad = computeExtensionsToLoad(__rspack_external_node_path_c5b9b54f.resolve(__rspack_import_meta_dirname__, '..'), 'production', browser, outputPath, companionUnpackedExtensionDirs, projectStructure.manifestPath);
|
|
2276
|
+
metadata.setManagedExtensionDirs(unpackedExtensionDirsToLoad.filter((dir)=>__rspack_external_node_path_c5b9b54f.resolve(dir) !== __rspack_external_node_path_c5b9b54f.resolve(outputPath)));
|
|
2214
2277
|
const resolvedOpts = {
|
|
2215
2278
|
browser,
|
|
2216
2279
|
outPath: outputPath,
|
package/dist/349.mjs
CHANGED
|
@@ -115,6 +115,8 @@ const CODES = {
|
|
|
115
115
|
E_SESSION_NOT_FOUND: 'E_SESSION_NOT_FOUND',
|
|
116
116
|
E_EVAL_REFUSED: 'E_EVAL_REFUSED',
|
|
117
117
|
E_TARGET_NOT_FOUND: 'E_TARGET_NOT_FOUND',
|
|
118
|
+
E_HEADED_WINDOW_REQUIRED: 'E_HEADED_WINDOW_REQUIRED',
|
|
119
|
+
E_USER_GESTURE_REQUIRED: 'E_USER_GESTURE_REQUIRED',
|
|
118
120
|
E_TIMEOUT: 'E_TIMEOUT',
|
|
119
121
|
E_PUBLISH_REJECTED: 'E_PUBLISH_REJECTED',
|
|
120
122
|
E_AUTH_REQUIRED: 'E_AUTH_REQUIRED',
|
package/dist/494.mjs
CHANGED
|
@@ -36,6 +36,12 @@ function ensureSessionArtifactsIgnoreFile(projectPath) {
|
|
|
36
36
|
function browserArtifactsDir(projectPath, browser) {
|
|
37
37
|
return __rspack_external_node_path_c5b9b54f.join(sessionArtifactsRootDir(projectPath), browser);
|
|
38
38
|
}
|
|
39
|
+
function browserProfileRootDir(projectPath, browser) {
|
|
40
|
+
return __rspack_external_node_path_c5b9b54f.join(sessionArtifactsRootDir(projectPath), 'profiles', `${browser}-profile`);
|
|
41
|
+
}
|
|
42
|
+
function browserDistDir(projectPath, browser) {
|
|
43
|
+
return __rspack_external_node_path_c5b9b54f.resolve(projectPath, 'dist', browser);
|
|
44
|
+
}
|
|
39
45
|
function readyContractPath(projectPath, browser) {
|
|
40
46
|
return __rspack_external_node_path_c5b9b54f.join(browserArtifactsDir(projectPath, browser), 'ready.json');
|
|
41
47
|
}
|
|
@@ -51,4 +57,4 @@ function actionsPath(projectPath, browser) {
|
|
|
51
57
|
function buildSummaryPath(projectPath, browser) {
|
|
52
58
|
return __rspack_external_node_path_c5b9b54f.join(browserArtifactsDir(projectPath, browser), 'build-summary.json');
|
|
53
59
|
}
|
|
54
|
-
export { actionsPath, browserArtifactsDir, buildSummaryPath, controlPortFilePath, controlTokenPath, ensureSessionArtifactsIgnoreFile, eventsPath, legacyControlPortFilePath, legacyControlTokenPath, logsPath, readyContractPath, sessionArtifactsRootDir, sessionStateDir };
|
|
60
|
+
export { actionsPath, browserArtifactsDir, browserDistDir, browserProfileRootDir, buildSummaryPath, controlPortFilePath, controlTokenPath, ensureSessionArtifactsIgnoreFile, eventsPath, legacyControlPortFilePath, legacyControlTokenPath, logsPath, readyContractPath, sessionArtifactsRootDir, sessionStateDir };
|