extension 3.0.0-next.48 → 3.0.0-next.49

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/cli.js CHANGED
@@ -23,7 +23,7 @@ var __webpack_require__ = {};
23
23
  })();
24
24
  var __webpack_exports__ = {};
25
25
  const external_commander_namespaceObject = require("commander");
26
- var package_namespaceObject = JSON.parse('{"license":"MIT","repository":{"type":"git","url":"git+https://github.com/extension-js/extension.js.git","directory":"programs/cli"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.js"}},"main":"./dist/cli.js","types":"./dist/cli.d.ts","typesVersions":{"*":{"types":["./types/index.d.ts"],"types/*":["./types/*"]}},"files":["dist","types"],"bin":{"extension":"./dist/cli.js"},"name":"extension","version":"3.0.0-next.48","description":"Create cross-browser extensions with no build configuration.","homepage":"https://extension.js.org/","author":{"name":"Cezar Augusto","email":"boss@cezaraugusto.net","url":"https://cezaraugusto.com"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"prepare":"rslib build >/dev/null 2>&1 || true","postinstall":"rslib build >/dev/null 2>&1 || true","compile":"rslib build","watch":"rslib build --watch","test":"vitest run"},"keywords":["zero-config","build","develop","browser","extension","chrome extension","edge extension","firefox extension","safari extension","web","react","typescript","webextension","browser-extension","chrome-extension","firefox-addon","edge-extension","safari-web-extension","manifest-v3","mv3","cross-browser","content-script","background-script","devtools","create-extension","scaffold","starter-template","boilerplate","cli"],"dependencies":{"commander":"^12.1.0","extension-create":"^2.2.0","pintor":"0.3.0","semver":"^7.6.3","update-check":"^1.5.4"},"devDependencies":{"@rslib/core":"^0.6.9","@types/chrome":"^0.0.287","@types/node":"^22.10.1","@types/react":"^19.0.1","@types/react-dom":"^19.0.1","@types/webextension-polyfill":"0.12.3","@types/mock-fs":"^4.13.4","@types/semver":"^7.5.8","mock-fs":"^5.4.1","webextension-polyfill":"^0.12.0","tsconfig":"*","typescript":"5.7.2","vitest":"^3.2.4"}}');
26
+ var package_namespaceObject = JSON.parse('{"license":"MIT","repository":{"type":"git","url":"git+https://github.com/extension-js/extension.js.git","directory":"programs/cli"},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/cli.d.ts","import":"./dist/cli.js","require":"./dist/cli.js"}},"main":"./dist/cli.js","types":"./dist/cli.d.ts","typesVersions":{"*":{"types":["./types/index.d.ts"],"types/*":["./types/*"]}},"files":["dist","types"],"bin":{"extension":"./dist/cli.js"},"name":"extension","version":"3.0.0-next.49","description":"Create cross-browser extensions with no build configuration.","homepage":"https://extension.js.org/","author":{"name":"Cezar Augusto","email":"boss@cezaraugusto.net","url":"https://cezaraugusto.com"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"prepare":"rslib build >/dev/null 2>&1 || true","postinstall":"rslib build >/dev/null 2>&1 || true","compile":"rslib build","watch":"rslib build --watch","test":"vitest run"},"keywords":["zero-config","build","develop","browser","extension","chrome extension","edge extension","firefox extension","safari extension","web","react","typescript","webextension","browser-extension","chrome-extension","firefox-addon","edge-extension","safari-web-extension","manifest-v3","mv3","cross-browser","content-script","background-script","devtools","create-extension","scaffold","starter-template","boilerplate","cli"],"dependencies":{"commander":"^12.1.0","extension-create":"^2.2.0","pintor":"0.3.0","semver":"^7.6.3","update-check":"^1.5.4"},"devDependencies":{"@rslib/core":"^0.6.9","@types/chrome":"^0.0.287","@types/node":"^22.10.1","@types/react":"^19.0.1","@types/react-dom":"^19.0.1","@types/webextension-polyfill":"0.12.3","@types/mock-fs":"^4.13.4","@types/semver":"^7.5.8","mock-fs":"^5.4.1","webextension-polyfill":"^0.12.0","tsconfig":"*","typescript":"5.7.2","vitest":"^3.2.4"}}');
27
27
  const external_update_check_namespaceObject = require("update-check");
28
28
  var external_update_check_default = /*#__PURE__*/ __webpack_require__.n(external_update_check_namespaceObject);
29
29
  const external_pintor_namespaceObject = require("pintor");
@@ -503,6 +503,27 @@ if (!telemetryDisabled) {
503
503
  const external_extension_create_namespaceObject = require("extension-create");
504
504
  const external_node_child_process_namespaceObject = require("node:child_process");
505
505
  const external_node_url_namespaceObject = require("node:url");
506
+ function resolveModuleEntry(modulePath, pkgJson) {
507
+ const exportsField = pkgJson.exports;
508
+ let main = pkgJson.main;
509
+ if (!main && 'string' == typeof exportsField) main = exportsField;
510
+ if (!main && exportsField && 'object' == typeof exportsField) {
511
+ const dotExport = exportsField['.'];
512
+ if ('string' == typeof dotExport) main = dotExport;
513
+ else if (dotExport && 'object' == typeof dotExport) main = dotExport.import || dotExport.require || dotExport.default || dotExport.node;
514
+ if (!main) {
515
+ const maybe = exportsField.import || exportsField.require || exportsField.default || exportsField.node;
516
+ if ('string' == typeof maybe) main = maybe;
517
+ }
518
+ }
519
+ if (main) return (0, external_node_url_namespaceObject.pathToFileURL)(external_node_path_default().join(modulePath, main)).href;
520
+ const candidates = [
521
+ external_node_path_default().join(modulePath, 'dist', 'module.js'),
522
+ external_node_path_default().join(modulePath, 'dist', 'index.js'),
523
+ external_node_path_default().join(modulePath, 'index.js')
524
+ ];
525
+ for (const candidate of candidates)if (external_node_fs_default().existsSync(candidate)) return (0, external_node_url_namespaceObject.pathToFileURL)(candidate).href;
526
+ }
506
527
  function parseOptionalBoolean(value) {
507
528
  if (void 0 === value) return true;
508
529
  const normalized = String(value).trim().toLowerCase();
@@ -547,13 +568,9 @@ async function requireOrDlx(moduleName, versionHint) {
547
568
  });
548
569
  } catch {}
549
570
  try {
550
- var _pkgJson_exports_, _pkgJson_exports, _pkgJson_exports_1, _pkgJson_exports1;
551
571
  const pkgJson = JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(modulePath, 'package.json'), 'utf8'));
552
- const main = pkgJson.main || (null == (_pkgJson_exports = pkgJson.exports) ? void 0 : null == (_pkgJson_exports_ = _pkgJson_exports['.']) ? void 0 : _pkgJson_exports_.import) || (null == (_pkgJson_exports1 = pkgJson.exports) ? void 0 : null == (_pkgJson_exports_1 = _pkgJson_exports1['.']) ? void 0 : _pkgJson_exports_1.require);
553
- if (main) {
554
- const resolved = (0, external_node_url_namespaceObject.pathToFileURL)(external_node_path_default().join(modulePath, main)).href;
555
- return await import(resolved);
556
- }
572
+ const entry = resolveModuleEntry(modulePath, pkgJson);
573
+ if (entry) return await import(entry);
557
574
  } catch {}
558
575
  if ('pnpm' === prefer) try {
559
576
  external_node_fs_default().writeFileSync(external_node_path_default().join(cacheDir, 'package.json'), JSON.stringify({
@@ -632,15 +649,11 @@ async function requireOrDlx(moduleName, versionHint) {
632
649
  }
633
650
  if (0 !== status) throw new Error(`Failed to install ${spec}`);
634
651
  try {
635
- var _pkgJson_exports_2, _pkgJson_exports2, _pkgJson_exports_3, _pkgJson_exports3;
636
652
  const pkgJson = JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(modulePath, 'package.json'), 'utf8'));
637
- const main = pkgJson.main || (null == (_pkgJson_exports2 = pkgJson.exports) ? void 0 : null == (_pkgJson_exports_2 = _pkgJson_exports2['.']) ? void 0 : _pkgJson_exports_2.import) || (null == (_pkgJson_exports3 = pkgJson.exports) ? void 0 : null == (_pkgJson_exports_3 = _pkgJson_exports3['.']) ? void 0 : _pkgJson_exports_3.require);
638
- if (main) {
639
- const resolved = (0, external_node_url_namespaceObject.pathToFileURL)(external_node_path_default().join(modulePath, main)).href;
640
- return await import(resolved);
641
- }
653
+ const entry = resolveModuleEntry(modulePath, pkgJson);
654
+ if (entry) return await import(entry);
642
655
  } catch {}
643
- return await import((0, external_node_url_namespaceObject.pathToFileURL)(external_node_path_default().join(modulePath, 'dist', 'module.js')).href);
656
+ throw new Error(`Failed to resolve entry point for ${moduleName} (${spec}) at ${modulePath}. This likely means the installed "extension-develop" version is incompatible with this CLI.`);
644
657
  }
645
658
  const vendors = (browser)=>{
646
659
  const value = browser ?? 'chromium';
@@ -723,13 +736,8 @@ function registerDevCommand(program, telemetry) {
723
736
  devOptions.watchSource = true;
724
737
  }
725
738
  const versionExact = String(package_namespaceObject.version);
726
- const major = String(package_namespaceObject.version).split('.')[0] || '2';
727
739
  let extensionDev;
728
- try {
729
- ({ extensionDev } = await requireOrDlx('extension-develop', versionExact));
730
- } catch {
731
- ({ extensionDev } = await requireOrDlx('extension-develop', major));
732
- }
740
+ ({ extensionDev } = await requireOrDlx('extension-develop', versionExact));
733
741
  for (const vendor of list){
734
742
  var _devOptions_polyfill1;
735
743
  const vendorStart = Date.now();
@@ -806,13 +814,8 @@ function registerStartCommand(program, telemetry) {
806
814
  console.error(unsupportedBrowserFlag(invalid, supported));
807
815
  });
808
816
  const versionExact = String(package_namespaceObject.version);
809
- const major = versionExact.split('.')[0] || '2';
810
817
  let extensionStart;
811
- try {
812
- ({ extensionStart } = await requireOrDlx('extension-develop', versionExact));
813
- } catch {
814
- ({ extensionStart } = await requireOrDlx('extension-develop', major));
815
- }
818
+ ({ extensionStart } = await requireOrDlx('extension-develop', versionExact));
816
819
  for (const vendor of list){
817
820
  const vendorStart = Date.now();
818
821
  telemetry.track('cli_vendor_start', {
@@ -889,13 +892,8 @@ function registerPreviewCommand(program, telemetry) {
889
892
  if (isRemote) process.env.EXTJS_LIGHT = '1';
890
893
  }
891
894
  const versionExact = String(package_namespaceObject.version);
892
- const major = versionExact.split('.')[0] || '2';
893
895
  let extensionPreview;
894
- try {
895
- ({ extensionPreview } = await requireOrDlx('extension-develop', versionExact));
896
- } catch {
897
- ({ extensionPreview } = await requireOrDlx('extension-develop', major));
898
- }
896
+ ({ extensionPreview } = await requireOrDlx('extension-develop', versionExact));
899
897
  for (const vendor of list){
900
898
  const vendorStart = Date.now();
901
899
  telemetry.track('cli_vendor_start', {
@@ -971,13 +969,8 @@ function registerBuildCommand(program, telemetry) {
971
969
  console.error(unsupportedBrowserFlag(invalid, supported));
972
970
  });
973
971
  const versionExact = String(package_namespaceObject.version);
974
- const major = versionExact.split('.')[0] || '2';
975
972
  let extensionBuild;
976
- try {
977
- ({ extensionBuild } = await requireOrDlx('extension-develop', versionExact));
978
- } catch {
979
- ({ extensionBuild } = await requireOrDlx('extension-develop', major));
980
- }
973
+ ({ extensionBuild } = await requireOrDlx('extension-develop', versionExact));
981
974
  for (const vendor of list){
982
975
  const vendorStart = Date.now();
983
976
  telemetry.track('cli_vendor_start', {
package/dist/utils.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export declare function resolveModuleEntry(modulePath: string, pkgJson: any): string | undefined;
1
2
  export type Browser = 'chrome' | 'edge' | 'firefox' | 'chromium' | 'chromium-based' | 'gecko-based' | 'firefox-based';
2
3
  export declare function parseOptionalBoolean(value?: string): boolean;
3
4
  export declare function requireOrDlx(moduleName: string, versionHint?: string): Promise<any>;
package/package.json CHANGED
@@ -35,7 +35,7 @@
35
35
  "extension": "./dist/cli.js"
36
36
  },
37
37
  "name": "extension",
38
- "version": "3.0.0-next.48",
38
+ "version": "3.0.0-next.49",
39
39
  "description": "Create cross-browser extensions with no build configuration.",
40
40
  "homepage": "https://extension.js.org/",
41
41
  "author": {