extension-develop 3.15.0-next.1 → 3.15.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.
@@ -37,6 +37,7 @@
37
37
  "storage"
38
38
  ],
39
39
  "web_accessible_resources": [
40
+ "assets/logo.7dc70d61.png",
40
41
  "content_scripts/styles.305cf4cf.css"
41
42
  ]
42
43
  }
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var t={},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var a=e[o]={exports:{}};return t[o](a,a.exports,r),a.exports}var o="scripts/logger-client.ts",n="scripts/logger-client.ts",a=[],i="object"==typeof globalThis&&globalThis?globalThis.__EXTENSIONJS_DEV_REINJECT__||(globalThis.__EXTENSIONJS_DEV_REINJECT__={}):{},u=[];function s(t){return"function"==typeof t&&u.push(t),t}function c(t,e,r){try{return}catch(t){}}function l(){try{if("u"<typeof document||"function"!=typeof document.querySelectorAll)return;for(var t=Array.from(document.querySelectorAll('#extension-root,[data-extension-root]:not([data-extension-root="extension-js-devtools"])')),e=0;e<t.length;e++){var r=t[e];if(r&&"function"==typeof r.getAttribute){var o=String(r.getAttribute("data-extjs-reinject-owner")||"");if(o&&o===String(n||"")){try{var a=document.documentElement;a&&"function"==typeof a.setAttribute&&(a.setAttribute("data-extjs-debug-stage","cleanup-known-roots"),a.setAttribute("data-extjs-debug-last-removal","cleanup-known-roots"),a.setAttribute("data-extjs-debug-last-removal-key",String(n||"")),a.setAttribute("data-extjs-debug-last-removal-source","cleanup-known-roots"),a.setAttribute("data-extjs-debug-last-removed-node-tag",String(r.tagName||"").toLowerCase()))}catch(t){}try{r.remove()}catch(t){}}}}}catch(t){}}try{"object"==typeof globalThis&&globalThis&&(globalThis.__EXTENSIONJS_registerCleanup=s,globalThis.registerCleanup=s)}catch(t){}try{!function(){try{if("object"!=typeof globalThis||!globalThis||globalThis.__EXTJS_DEBUG_REMOVAL_OBSERVER__||"function"!=typeof MutationObserver||"u"<typeof document)return;var t=document.documentElement||document.body||document;if(!t)return;var e=new MutationObserver(function(t){try{for(var e=String(n||""),r=0;r<t.length;r++)for(var o=Array.from(t[r].removedNodes||[]),a=0;a<o.length;a++){var i=o[a],u=function(t){try{if(!t||1!==t.nodeType)return null;if("function"==typeof t.getAttribute&&String(t.getAttribute("data-extjs-reinject-owner")||"")===e)return t;if("function"==typeof t.querySelector)return t.querySelector('[data-extjs-reinject-owner="'+e.replace(/"/g,'\\"')+'"]')}catch(t){}return null}(i);if(u&&"function"==typeof u.getAttribute){var s=String(u.getAttribute("data-extjs-reinject-owner")||"");if(s&&s===e){var c=document.documentElement;c&&"function"==typeof c.setAttribute&&(c.getAttribute("data-extjs-debug-last-removal")||c.setAttribute("data-extjs-debug-last-removal","mutation-observer"),c.getAttribute("data-extjs-debug-last-removal-key")||c.setAttribute("data-extjs-debug-last-removal-key",s),c.getAttribute("data-extjs-debug-last-removal-source")||c.setAttribute("data-extjs-debug-last-removal-source","mutation-observer"),c.getAttribute("data-extjs-debug-last-removed-node-tag")||c.setAttribute("data-extjs-debug-last-removed-node-tag",String(i.tagName||"").toLowerCase()),c.getAttribute("data-extjs-debug-last-removed-node-id")||c.setAttribute("data-extjs-debug-last-removed-node-id",String(i.id||"")),c.getAttribute("data-extjs-debug-last-removed-node-class")||c.setAttribute("data-extjs-debug-last-removed-node-class",String(i.className||"")),c.getAttribute("data-extjs-debug-last-removed-node-direct")||c.setAttribute("data-extjs-debug-last-removed-node-direct",String(i===u)),c.getAttribute("data-extjs-debug-last-removal-ready-state")||c.setAttribute("data-extjs-debug-last-removal-ready-state",String(document.readyState||"")),c.getAttribute("data-extjs-debug-last-removal-url")||c.setAttribute("data-extjs-debug-last-removal-url",String(location.href||"")),c.setAttribute("data-extjs-debug-stage","root-removed-observed"));return}}}}catch(t){}});e.observe(t,{childList:!0,subtree:!0}),globalThis.__EXTJS_DEBUG_REMOVAL_OBSERVER__=e}catch(t){}}()}catch(t){}try{!function(){try{if("object"!=typeof globalThis||!globalThis||globalThis.__EXTJS_DEBUG_DOM_APIS_PATCHED__)return;var t=function(t,e,r){try{var o=document.documentElement;if(!o||"function"!=typeof o.setAttribute)return;var a=null;if(e&&1===e.nodeType&&("function"==typeof e.getAttribute&&String(e.getAttribute("data-extjs-reinject-owner")||"")===String(n||"")?a=e:"function"==typeof e.querySelector&&(a=e.querySelector('[data-extjs-reinject-owner="'+String(n||"").replace(/"/g,'\\"')+'"]'))),!a)return;o.setAttribute("data-extjs-debug-stage","dom-api-removal"),o.setAttribute("data-extjs-debug-last-removal",t),o.setAttribute("data-extjs-debug-last-removal-source",t),o.setAttribute("data-extjs-debug-last-removal-key",String(n||"")),o.setAttribute("data-extjs-debug-last-removed-node-tag",String(e&&e.tagName||"").toLowerCase()),o.setAttribute("data-extjs-debug-last-removed-node-id",String(e&&e.id||"")),o.setAttribute("data-extjs-debug-last-removed-node-class",String(e&&e.className||"")),o.setAttribute("data-extjs-debug-last-removed-node-direct",String(e===a)),o.setAttribute("data-extjs-debug-last-removal-ready-state",String(document.readyState||"")),o.setAttribute("data-extjs-debug-last-removal-url",String(location.href||"")),o.setAttribute("data-extjs-debug-last-removal-parent-tag",String(r&&r.tagName||"").toLowerCase())}catch(t){}};try{var e=Node.prototype.removeChild;"function"==typeof e&&(Node.prototype.removeChild=function(r){return t("Node.removeChild",r,this),e.call(this,r)})}catch(t){}try{var r=Element.prototype.replaceChildren;"function"==typeof r&&(Element.prototype.replaceChildren=function(){try{for(var e=Array.from(this.childNodes||[]),o=0;o<e.length;o++)t("Element.replaceChildren",e[o],this)}catch(t){}return r.apply(this,arguments)})}catch(t){}globalThis.__EXTJS_DEBUG_DOM_APIS_PATCHED__=!0}catch(t){}}()}catch(t){}try{!function(t){try{if("u"<typeof document)return;var e=document.documentElement;if(!e||"function"!=typeof e.getAttribute||"function"!=typeof e.setAttribute)return;var r=Number(e.getAttribute("data-extjs-debug-execution-count")||"0"),o=Number.isFinite(r)?r+1:1,a=[];try{a=Array.from(document.querySelectorAll('#extension-root,[data-extension-root]:not([data-extension-root="extension-js-devtools"])'))}catch(t){}e.setAttribute("data-extjs-debug-execution-count",String(o)),e.setAttribute("data-extjs-debug-last-execution-stage",String(t||"")),e.setAttribute("data-extjs-debug-last-execution-key",String(n||"")),e.setAttribute("data-extjs-debug-existing-root-count-before-cleanup",String(a.length))}catch(t){}}("bootstrap")}catch(t){}var d=i[n],g=function(t){try{if(!t)return 0;if("function"==typeof t&&"number"==typeof t.__extjsGeneration)return t.__extjsGeneration;if("object"==typeof t){if("number"==typeof t.__extjsGeneration)return t.__extjsGeneration;if("number"==typeof t.generation)return t.generation;if("function"==typeof t.cleanup&&"number"==typeof t.cleanup.__extjsGeneration)return t.cleanup.__extjsGeneration}}catch(t){}return 0}(d);try{var b="function"==typeof d?d:d&&"function"==typeof d.cleanup?d.cleanup:null;if("function"==typeof b){try{var f=document.documentElement;f&&"function"==typeof f.setAttribute&&(f.setAttribute("data-extjs-debug-stage","previous-cleanup"),f.setAttribute("data-extjs-debug-last-removal","previous-cleanup"),f.setAttribute("data-extjs-debug-last-removal-key",String(n||"")),f.setAttribute("data-extjs-debug-last-removal-source","previous-cleanup"))}catch(t){}b()}}catch(t){}try{l()}catch(t){}function m(){try{var t="";try{"object"==typeof globalThis&&globalThis&&globalThis.browser&&globalThis.browser.runtime&&"function"==typeof globalThis.browser.runtime.getURL?t=String(globalThis.browser.runtime.getURL("/")):"object"==typeof globalThis&&globalThis&&globalThis.chrome&&globalThis.chrome.runtime&&"function"==typeof globalThis.chrome.runtime.getURL&&(t=String(globalThis.chrome.runtime.getURL("/")))}catch(t){}if(!t)try{"object"==typeof document&&document&&document.documentElement&&(t=String(document.documentElement.getAttribute("data-extjs-extension-base")||""))}catch(t){}if(!t)return!1;"/"!==t.charAt(t.length-1)&&(t+="/");try{r.p=t}catch(t){}try{r.b=t}catch(t){}return!0}catch(t){}return!1}try{if(!m()){var y=0,h=function(){try{if(m())return}catch(t){}y++<50&&setTimeout(h,100)};h()}}catch(t){}try{g=(Number(g)||0)+1}catch(t){}try{c(n,Number(g)||0,"executed")}catch(t){}try{!function(){try{if(0!==String(o||"").indexOf("content_scripts/content-")||"u"<typeof document||"function"!=typeof fetch)return;var t=Array.from(new Set((Array.isArray(a)?a:[]).concat([function(t){try{if("object"==typeof globalThis&&globalThis&&globalThis.browser&&globalThis.browser.runtime&&"function"==typeof globalThis.browser.runtime.getURL)return globalThis.browser.runtime.getURL(t);if("object"==typeof globalThis&&globalThis&&globalThis.chrome&&globalThis.chrome.runtime&&"function"==typeof globalThis.chrome.runtime.getURL)return globalThis.chrome.runtime.getURL(t)}catch(t){}try{var e="object"==typeof globalThis&&globalThis&&globalThis.__EXTJS_EXTENSION_BASE__?String(globalThis.__EXTJS_EXTENSION_BASE__):"";if(!e&&"object"==typeof document&&document&&document.documentElement&&(e=String(document.documentElement.getAttribute("data-extjs-extension-base")||"")),!e)return"";return e.replace(/\/+$/,"/")+String(t||"").replace(/^\/+/,"")}catch(t){}return""}(o+".css")]).filter(function(t){return"string"==typeof t&&t.trim().length>0})));if(!t.length)return;var e="",r=null,i=0,u=function(){try{for(var a=Array.from(document.querySelectorAll('#extension-root,[data-extension-root]:not([data-extension-root="extension-js-devtools"])')),s=0;s<a.length;s++){var c=a[s];if(c&&c.shadowRoot&&"function"==typeof c.getAttribute){var l=String(c.getAttribute("data-extjs-reinject-owner")||"");if((!l||l===String(n||""))&&(!(!l&&String(c.getAttribute("data-extjs-reinject-key")||""))||String(c.getAttribute("data-extjs-reinject-key")||"")===String(o||""))){var d=c.shadowRoot,g=Array.from(d.querySelectorAll("style")).some(function(t){return t&&"true"!==t.getAttribute("data-extjs-bundle-css")&&String(t.textContent||"").trim().length>0}),b=d.querySelector('style[data-extjs-bundle-css="true"]');if(g){b&&b.parentNode&&b.parentNode.removeChild(b);return}if("string"==typeof e&&e.trim()){b||((b=document.createElement("style")).setAttribute("data-extjs-bundle-css","true"),b.setAttribute("data-extjs-reinject-key",String(n||"")),d.insertBefore(b,d.firstChild||null)),String(b.textContent||"")!==e&&(b.textContent=e);return}}}}}catch(t){}i++<20&&(!r&&(r||(r=(function e(r){return r>=t.length?Promise.resolve(""):fetch(t[r]).then(function(t){return t&&t.ok?t.text():""}).catch(function(){return""}).then(function(t){return"string"==typeof t&&t.trim().length>0?t:e(r+1)})})(0).then(function(t){e="string"==typeof t?t:"";try{setTimeout(u,0)}catch(t){}return e}).catch(function(){return""}))),setTimeout(u,250))};u()}catch(t){}}()}catch(t){}try{i[n]={cleanup:function(){try{!function(t){try{if(!Array.isArray(t))return;for(var e=t.length-1;e>=0;e--)try{"function"==typeof t[e]&&t[e]()}catch(t){}}catch(t){}}(u)}catch(t){}try{l()}catch(t){}try{c(n,Number(g)||0,"cleaned")}catch(t){}},generation:Number(g)||0,build:"831980a1"}}catch(t){}})();
@@ -16,10 +16,11 @@ const safeLocation = "u" > typeof globalThis ? globalThis.location : void 0;
16
16
  const safeHistory = "u" > typeof globalThis ? globalThis.history : void 0;
17
17
  try {
18
18
  if ('object' == typeof safeLocation && safeLocation && String(safeLocation.protocol || '').includes('-extension:')) {
19
- const q = String(safeLocation.search || '');
20
- if (q.toLowerCase().includes('webpack-dev-server-hot=false')) ;
21
- else if ('function' == typeof URL && 'object' == typeof safeHistory && safeHistory && 'function' == typeof safeHistory.replaceState) {
19
+ const q = String(safeLocation.search || '').toLowerCase();
20
+ const alreadySet = q.includes('rspack-dev-server-hot=false') && q.includes('webpack-dev-server-hot=false');
21
+ if (!alreadySet && 'function' == typeof URL && 'object' == typeof safeHistory && safeHistory && 'function' == typeof safeHistory.replaceState) {
22
22
  const u = new URL(String(safeLocation.href));
23
+ u.searchParams.set('rspack-dev-server-hot', 'false');
23
24
  u.searchParams.set('webpack-dev-server-hot', 'false');
24
25
  safeHistory.replaceState(null, '', u.toString());
25
26
  }
@@ -16,10 +16,11 @@ const safeLocation = "u" > typeof globalThis ? globalThis.location : void 0;
16
16
  const safeHistory = "u" > typeof globalThis ? globalThis.history : void 0;
17
17
  try {
18
18
  if ('object' == typeof safeLocation && safeLocation && String(safeLocation.protocol || '').includes('-extension:')) {
19
- const q = String(safeLocation.search || '');
20
- if (q.toLowerCase().includes('webpack-dev-server-hot=false')) ;
21
- else if ('function' == typeof URL && 'object' == typeof safeHistory && safeHistory && 'function' == typeof safeHistory.replaceState) {
19
+ const q = String(safeLocation.search || '').toLowerCase();
20
+ const alreadySet = q.includes('rspack-dev-server-hot=false') && q.includes('webpack-dev-server-hot=false');
21
+ if (!alreadySet && 'function' == typeof URL && 'object' == typeof safeHistory && safeHistory && 'function' == typeof safeHistory.replaceState) {
22
22
  const u = new URL(String(safeLocation.href));
23
+ u.searchParams.set('rspack-dev-server-hot', 'false');
23
24
  u.searchParams.set('webpack-dev-server-hot', 'false');
24
25
  safeHistory.replaceState(null, '', u.toString());
25
26
  }
package/dist/module.cjs CHANGED
@@ -472,6 +472,28 @@ var __webpack_modules__ = {
472
472
  if (fs__rspack_import_0.existsSync(candidate)) return candidate;
473
473
  }
474
474
  }
475
+ const RESERVED_BUILT_IN_NAMES = new Set([
476
+ 'extension-js-devtools',
477
+ 'extension-js-theme'
478
+ ]);
479
+ function isReservedBuiltInPath(extensionPath) {
480
+ const base = path__rspack_import_1.basename(path__rspack_import_1.normalize(extensionPath));
481
+ if (RESERVED_BUILT_IN_NAMES.has(base)) return true;
482
+ const segments = path__rspack_import_1.normalize(extensionPath).split(path__rspack_import_1.sep);
483
+ return segments.some((segment)=>RESERVED_BUILT_IN_NAMES.has(segment));
484
+ }
485
+ function dedupeByResolvedPath(paths) {
486
+ const seen = new Set();
487
+ const result = [];
488
+ for (const entry of paths){
489
+ const resolved = path__rspack_import_1.resolve(entry);
490
+ if (!seen.has(resolved)) {
491
+ seen.add(resolved);
492
+ result.push(entry);
493
+ }
494
+ }
495
+ return result;
496
+ }
475
497
  function computeExtensionsToLoad(baseDir, mode, browser, userExtensionOutputPath, extraExtensionDirs = [], userManifestPath) {
476
498
  const list = [];
477
499
  try {
@@ -491,9 +513,9 @@ var __webpack_modules__ = {
491
513
  if (devtoolsForBrowser && !shouldSkipDevtoolsForNtpConflict) list.push(devtoolsForBrowser);
492
514
  if (themeForBrowser) list.push(themeForBrowser);
493
515
  } catch {}
494
- for (const p of extraExtensionDirs)list.push(p);
516
+ for (const p of extraExtensionDirs)if (!isReservedBuiltInPath(p)) list.push(p);
495
517
  list.push(userExtensionOutputPath);
496
- return list;
518
+ return dedupeByResolvedPath(list);
497
519
  }
498
520
  },
499
521
  "./lib/has-dependency.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -953,7 +975,7 @@ var __webpack_modules__ = {
953
975
  installPackages: [
954
976
  '@prefresh/core@1.5.9',
955
977
  '@prefresh/utils@1.2.1',
956
- '@rspack/plugin-preact-refresh@1.1.4',
978
+ '@rspack/plugin-preact-refresh@1.1.5',
957
979
  'preact@10.27.2'
958
980
  ],
959
981
  verificationRules: [
@@ -1394,26 +1416,24 @@ var __webpack_modules__ = {
1394
1416
  }
1395
1417
  function needsInstall(packageJsonDir) {
1396
1418
  const nm = getNodeModulesDir(packageJsonDir);
1419
+ const packageJsonPath = path__rspack_import_1.join(packageJsonDir, 'package.json');
1420
+ if (!fs__rspack_import_0.existsSync(packageJsonPath)) return false;
1397
1421
  try {
1398
- const packageJsonPath = path__rspack_import_1.join(packageJsonDir, 'package.json');
1399
- if (fs__rspack_import_0.existsSync(packageJsonPath)) {
1400
- const raw = fs__rspack_import_0.readFileSync(packageJsonPath, 'utf-8');
1401
- const packageJson = JSON.parse(raw);
1402
- const depsCount = Object.keys(packageJson?.dependencies || {}).length;
1403
- const devDepsCount = Object.keys(packageJson?.devDependencies || {}).length;
1404
- if (depsCount + devDepsCount === 0) return false;
1405
- if (!fs__rspack_import_0.existsSync(nm)) return true;
1406
- const deps = Object.keys(packageJson?.dependencies || {});
1407
- const devDeps = Object.keys(packageJson?.devDependencies || {});
1408
- if (fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, '.pnpm'))) return false;
1409
- if (fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, '.modules.yaml'))) return false;
1410
- const hasInstalledDep = [
1411
- ...deps,
1412
- ...devDeps
1413
- ].some((dep)=>fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, dep)));
1414
- return !hasInstalledDep;
1415
- }
1416
- return !fs__rspack_import_0.existsSync(nm) || 0 === fs__rspack_import_0.readdirSync(nm).length;
1422
+ const raw = fs__rspack_import_0.readFileSync(packageJsonPath, 'utf-8');
1423
+ const packageJson = JSON.parse(raw);
1424
+ const depsCount = Object.keys(packageJson?.dependencies || {}).length;
1425
+ const devDepsCount = Object.keys(packageJson?.devDependencies || {}).length;
1426
+ if (depsCount + devDepsCount === 0) return false;
1427
+ if (!fs__rspack_import_0.existsSync(nm)) return true;
1428
+ const deps = Object.keys(packageJson?.dependencies || {});
1429
+ const devDeps = Object.keys(packageJson?.devDependencies || {});
1430
+ if (fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, '.pnpm'))) return false;
1431
+ if (fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, '.modules.yaml'))) return false;
1432
+ const hasInstalledDep = [
1433
+ ...deps,
1434
+ ...devDeps
1435
+ ].some((dep)=>fs__rspack_import_0.existsSync(path__rspack_import_1.join(nm, dep)));
1436
+ return !hasInstalledDep;
1417
1437
  } catch {
1418
1438
  return true;
1419
1439
  }
@@ -2096,7 +2116,7 @@ var __webpack_modules__ = {
2096
2116
  Promise.resolve(require1('@rspack/core')),
2097
2117
  import("webpack-merge"),
2098
2118
  __webpack_require__.e(504).then(__webpack_require__.bind(__webpack_require__, "./lib/stats-handler.ts")),
2099
- __webpack_require__.e(512).then(__webpack_require__.bind(__webpack_require__, "./rspack-config.ts"))
2119
+ __webpack_require__.e(442).then(__webpack_require__.bind(__webpack_require__, "./rspack-config.ts"))
2100
2120
  ]);
2101
2121
  const debug = isAuthor;
2102
2122
  if (projectStructure.packageJsonPath) assertNoManagedDependencyConflicts(projectStructure.packageJsonPath, manifestDir);
@@ -2258,7 +2278,8 @@ var __webpack_modules__ = {
2258
2278
  const contextDir = String(compilation.options?.context || '');
2259
2279
  let reloadInstruction;
2260
2280
  if (!this.isFirstCompile && pendingReloadReason) reloadInstruction = {
2261
- type: pendingReloadReason
2281
+ type: pendingReloadReason,
2282
+ changedAssets: pendingChangedSources
2262
2283
  };
2263
2284
  else if (!this.isFirstCompile && pendingChangedSources.length > 0) {
2264
2285
  const isServiceWorkerSource = (rel)=>/(^|\/)background(\.|\/)/i.test(rel) || /service[-_.]?worker/i.test(rel);
@@ -2277,7 +2298,10 @@ var __webpack_modules__ = {
2277
2298
  changedContentScriptEntries: entries,
2278
2299
  changedAssets: pendingChangedSources
2279
2300
  };
2280
- }
2301
+ } else reloadInstruction = {
2302
+ type: 'full',
2303
+ changedAssets: pendingChangedSources
2304
+ };
2281
2305
  }
2282
2306
  }
2283
2307
  const wasFirstCompile = this.isFirstCompile;
@@ -2422,7 +2446,7 @@ var __webpack_modules__ = {
2422
2446
  }
2423
2447
  if ('true' === process.env.EXTENSION_DEV_DRY_RUN) return emitter;
2424
2448
  const { devServer } = await Promise.all([
2425
- __webpack_require__.e(512),
2449
+ __webpack_require__.e(442),
2426
2450
  __webpack_require__.e(221)
2427
2451
  ]).then(__webpack_require__.bind(__webpack_require__, "./dev-server/index.ts"));
2428
2452
  await devServer(projectStructure, {
@@ -3348,7 +3372,7 @@ var __webpack_modules__ = {
3348
3372
  module.exports = require("webpack-merge");
3349
3373
  },
3350
3374
  "./package.json" (module) {
3351
- module.exports = JSON.parse('{"rE":"3.15.0-next.1","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.0.1","@rspack/dev-server":"^2.0.1","@rspack/plugin-preact-refresh":"1.1.5","@rspack/plugin-react-refresh":"1.6.2","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","@vue/compiler-sfc":"3.5.26","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","extension-from-store":"^0.1.1","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.5.1","less-loader":"12.3.2","loader-utils":"^3.3.1","magic-string":"^0.30.21","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.10","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","react-refresh":"0.18.0","sass-loader":"16.0.7","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","typescript":"5.9.3","unique-names-generator":"^4.7.1","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"}}');
3375
+ module.exports = JSON.parse('{"rE":"3.15.0","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.0.1","@rspack/dev-server":"^2.0.1","@rspack/plugin-preact-refresh":"1.1.5","@rspack/plugin-react-refresh":"1.6.2","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","@vue/compiler-sfc":"3.5.26","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.3","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","extension-from-store":"^0.1.1","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.5.1","less-loader":"12.3.2","loader-utils":"^3.3.1","magic-string":"^0.30.21","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.10","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","react-refresh":"0.18.0","sass-loader":"16.0.7","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","typescript":"5.9.3","unique-names-generator":"^4.7.1","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"}}');
3352
3376
  }
3353
3377
  };
3354
3378
  var __webpack_module_cache__ = {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.r = (exports1)=>{
5
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
+ value: 'Module'
7
+ });
8
+ Object.defineProperty(exports1, '__esModule', {
9
+ value: true
10
+ });
11
+ };
12
+ })();
13
+ var __webpack_exports__ = {};
14
+ __webpack_require__.r(__webpack_exports__);
15
+ const g = "u" > typeof globalThis ? globalThis : {};
16
+ if ('function' != typeof g.$RefreshReg$) g.$RefreshReg$ = function() {};
17
+ if ('function' != typeof g.$RefreshSig$) g.$RefreshSig$ = function() {
18
+ return function(type) {
19
+ return type;
20
+ };
21
+ };
22
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
23
+ Object.defineProperty(exports, '__esModule', {
24
+ value: true
25
+ });
package/dist/preview.cjs CHANGED
@@ -1148,6 +1148,28 @@ var __webpack_modules__ = {
1148
1148
  if (external_fs_.existsSync(candidate)) return candidate;
1149
1149
  }
1150
1150
  }
1151
+ const RESERVED_BUILT_IN_NAMES = new Set([
1152
+ 'extension-js-devtools',
1153
+ 'extension-js-theme'
1154
+ ]);
1155
+ function isReservedBuiltInPath(extensionPath) {
1156
+ const base = external_path_.basename(external_path_.normalize(extensionPath));
1157
+ if (RESERVED_BUILT_IN_NAMES.has(base)) return true;
1158
+ const segments = external_path_.normalize(extensionPath).split(external_path_.sep);
1159
+ return segments.some((segment)=>RESERVED_BUILT_IN_NAMES.has(segment));
1160
+ }
1161
+ function dedupeByResolvedPath(paths) {
1162
+ const seen = new Set();
1163
+ const result = [];
1164
+ for (const entry of paths){
1165
+ const resolved = external_path_.resolve(entry);
1166
+ if (!seen.has(resolved)) {
1167
+ seen.add(resolved);
1168
+ result.push(entry);
1169
+ }
1170
+ }
1171
+ return result;
1172
+ }
1151
1173
  function computeExtensionsToLoad(baseDir, mode, browser, userExtensionOutputPath, extraExtensionDirs = [], userManifestPath) {
1152
1174
  const list = [];
1153
1175
  try {
@@ -1167,9 +1189,9 @@ var __webpack_modules__ = {
1167
1189
  if (devtoolsForBrowser && !shouldSkipDevtoolsForNtpConflict) list.push(devtoolsForBrowser);
1168
1190
  if (themeForBrowser) list.push(themeForBrowser);
1169
1191
  } catch {}
1170
- for (const p of extraExtensionDirs)list.push(p);
1192
+ for (const p of extraExtensionDirs)if (!isReservedBuiltInPath(p)) list.push(p);
1171
1193
  list.push(userExtensionOutputPath);
1172
- return list;
1194
+ return dedupeByResolvedPath(list);
1173
1195
  }
1174
1196
  function getDarkModeDefaults(browser) {
1175
1197
  if ('chrome' === browser || 'edge' === browser || 'chromium' === browser || 'chromium-based' === browser) return {
@@ -1364,7 +1386,7 @@ var __webpack_modules__ = {
1364
1386
  module.exports = require("pintor");
1365
1387
  },
1366
1388
  "./package.json" (module) {
1367
- module.exports = JSON.parse('{"rE":"3.15.0-next.1","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.0.1","@rspack/dev-server":"^2.0.1","@rspack/plugin-preact-refresh":"1.1.5","@rspack/plugin-react-refresh":"1.6.2","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","@vue/compiler-sfc":"3.5.26","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.1","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","extension-from-store":"^0.1.1","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.5.1","less-loader":"12.3.2","loader-utils":"^3.3.1","magic-string":"^0.30.21","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.10","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","react-refresh":"0.18.0","sass-loader":"16.0.7","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","typescript":"5.9.3","unique-names-generator":"^4.7.1","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"}}');
1389
+ module.exports = JSON.parse('{"rE":"3.15.0","El":{"@prefresh/core":"1.5.9","@prefresh/utils":"1.2.1","@rspack/core":"^2.0.1","@rspack/dev-server":"^2.0.1","@rspack/plugin-preact-refresh":"1.1.5","@rspack/plugin-react-refresh":"1.6.2","@swc/core":"^1.15.8","@swc/helpers":"^0.5.18","@vue/compiler-sfc":"3.5.26","adm-zip":"^0.5.16","browser-extension-manifest-fields":"^2.2.3","case-sensitive-paths-webpack-plugin":"^2.4.0","content-security-policy-parser":"^0.6.0","cross-spawn":"^7.0.6","dotenv":"^17.2.3","extension-from-store":"^0.1.1","go-git-it":"^5.1.5","ignore":"^7.0.5","less":"4.5.1","less-loader":"12.3.2","loader-utils":"^3.3.1","magic-string":"^0.30.21","parse5-utilities":"^1.0.0","pintor":"0.3.0","postcss":"8.5.10","postcss-loader":"8.2.1","postcss-preset-env":"11.1.1","postcss-scss":"4.0.9","preact":"10.27.3","react-refresh":"0.18.0","sass-loader":"16.0.7","schema-utils":"^4.3.3","svelte-loader":"3.2.4","tiny-glob":"^0.2.9","typescript":"5.9.3","unique-names-generator":"^4.7.1","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"}}');
1368
1390
  }
1369
1391
  };
1370
1392
  var __webpack_module_cache__ = {};
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "dist"
30
30
  ],
31
31
  "name": "extension-develop",
32
- "version": "3.15.0-next.1",
32
+ "version": "3.15.0",
33
33
  "description": "Develop, build, preview, and package Extension.js projects.",
34
34
  "author": {
35
35
  "name": "Cezar Augusto",
@@ -86,7 +86,7 @@
86
86
  "@swc/helpers": "^0.5.18",
87
87
  "@vue/compiler-sfc": "3.5.26",
88
88
  "adm-zip": "^0.5.16",
89
- "browser-extension-manifest-fields": "^2.2.1",
89
+ "browser-extension-manifest-fields": "^2.2.3",
90
90
  "case-sensitive-paths-webpack-plugin": "^2.4.0",
91
91
  "content-security-policy-parser": "^0.6.0",
92
92
  "cross-spawn": "^7.0.6",