extension 3.0.0-next.48 → 3.0.0-next.50

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.50","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();
@@ -546,15 +567,14 @@ async function requireOrDlx(moduleName, versionHint) {
546
567
  recursive: true
547
568
  });
548
569
  } catch {}
570
+ let preInstallPkgJson;
549
571
  try {
550
- var _pkgJson_exports_, _pkgJson_exports, _pkgJson_exports_1, _pkgJson_exports1;
551
- 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
+ preInstallPkgJson = JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(modulePath, 'package.json'), 'utf8'));
557
573
  } catch {}
574
+ if (preInstallPkgJson) {
575
+ const entry = resolveModuleEntry(modulePath, preInstallPkgJson);
576
+ if (entry) return await import(entry);
577
+ }
558
578
  if ('pnpm' === prefer) try {
559
579
  external_node_fs_default().writeFileSync(external_node_path_default().join(cacheDir, 'package.json'), JSON.stringify({
560
580
  name: 'extensionjs-cache',
@@ -631,16 +651,15 @@ async function requireOrDlx(moduleName, versionHint) {
631
651
  }).status || 0;
632
652
  }
633
653
  if (0 !== status) throw new Error(`Failed to install ${spec}`);
654
+ let postInstallPkgJson;
634
655
  try {
635
- var _pkgJson_exports_2, _pkgJson_exports2, _pkgJson_exports_3, _pkgJson_exports3;
636
- 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
- }
656
+ postInstallPkgJson = JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(modulePath, 'package.json'), 'utf8'));
642
657
  } catch {}
643
- return await import((0, external_node_url_namespaceObject.pathToFileURL)(external_node_path_default().join(modulePath, 'dist', 'module.js')).href);
658
+ if (postInstallPkgJson) {
659
+ const entry = resolveModuleEntry(modulePath, postInstallPkgJson);
660
+ if (entry) return await import(entry);
661
+ }
662
+ 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
663
  }
645
664
  const vendors = (browser)=>{
646
665
  const value = browser ?? 'chromium';
@@ -723,13 +742,8 @@ function registerDevCommand(program, telemetry) {
723
742
  devOptions.watchSource = true;
724
743
  }
725
744
  const versionExact = String(package_namespaceObject.version);
726
- const major = String(package_namespaceObject.version).split('.')[0] || '2';
727
745
  let extensionDev;
728
- try {
729
- ({ extensionDev } = await requireOrDlx('extension-develop', versionExact));
730
- } catch {
731
- ({ extensionDev } = await requireOrDlx('extension-develop', major));
732
- }
746
+ ({ extensionDev } = await requireOrDlx('extension-develop', versionExact));
733
747
  for (const vendor of list){
734
748
  var _devOptions_polyfill1;
735
749
  const vendorStart = Date.now();
@@ -806,13 +820,8 @@ function registerStartCommand(program, telemetry) {
806
820
  console.error(unsupportedBrowserFlag(invalid, supported));
807
821
  });
808
822
  const versionExact = String(package_namespaceObject.version);
809
- const major = versionExact.split('.')[0] || '2';
810
823
  let extensionStart;
811
- try {
812
- ({ extensionStart } = await requireOrDlx('extension-develop', versionExact));
813
- } catch {
814
- ({ extensionStart } = await requireOrDlx('extension-develop', major));
815
- }
824
+ ({ extensionStart } = await requireOrDlx('extension-develop', versionExact));
816
825
  for (const vendor of list){
817
826
  const vendorStart = Date.now();
818
827
  telemetry.track('cli_vendor_start', {
@@ -889,13 +898,8 @@ function registerPreviewCommand(program, telemetry) {
889
898
  if (isRemote) process.env.EXTJS_LIGHT = '1';
890
899
  }
891
900
  const versionExact = String(package_namespaceObject.version);
892
- const major = versionExact.split('.')[0] || '2';
893
901
  let extensionPreview;
894
- try {
895
- ({ extensionPreview } = await requireOrDlx('extension-develop', versionExact));
896
- } catch {
897
- ({ extensionPreview } = await requireOrDlx('extension-develop', major));
898
- }
902
+ ({ extensionPreview } = await requireOrDlx('extension-develop', versionExact));
899
903
  for (const vendor of list){
900
904
  const vendorStart = Date.now();
901
905
  telemetry.track('cli_vendor_start', {
@@ -971,13 +975,8 @@ function registerBuildCommand(program, telemetry) {
971
975
  console.error(unsupportedBrowserFlag(invalid, supported));
972
976
  });
973
977
  const versionExact = String(package_namespaceObject.version);
974
- const major = versionExact.split('.')[0] || '2';
975
978
  let extensionBuild;
976
- try {
977
- ({ extensionBuild } = await requireOrDlx('extension-develop', versionExact));
978
- } catch {
979
- ({ extensionBuild } = await requireOrDlx('extension-develop', major));
980
- }
979
+ ({ extensionBuild } = await requireOrDlx('extension-develop', versionExact));
981
980
  for (const vendor of list){
982
981
  const vendorStart = Date.now();
983
982
  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.50",
39
39
  "description": "Create cross-browser extensions with no build configuration.",
40
40
  "homepage": "https://extension.js.org/",
41
41
  "author": {