* @private * @param {string} defaultOpenTarget default open target * @returns {Promise }
(defaultOpenTarget)
| 2705 | * @returns {Promise<void>} |
| 2706 | */ |
| 2707 | async openBrowser(defaultOpenTarget) { |
| 2708 | const open = (await import("open")).default; |
| 2709 | |
| 2710 | Promise.all( |
| 2711 | /** @type {NormalizedOpen[]} */ |
| 2712 | (this.options.open).map((item) => { |
| 2713 | /** |
| 2714 | * @type {string} |
| 2715 | */ |
| 2716 | let openTarget; |
| 2717 | |
| 2718 | if (item.target === "<url>") { |
| 2719 | openTarget = defaultOpenTarget; |
| 2720 | } else { |
| 2721 | openTarget = Server.isAbsoluteURL(item.target) |
| 2722 | ? item.target |
| 2723 | : new URL(item.target, defaultOpenTarget).toString(); |
| 2724 | } |
| 2725 | |
| 2726 | return open(openTarget, item.options).catch(() => { |
| 2727 | this.logger.warn( |
| 2728 | `Unable to open "${openTarget}" page${ |
| 2729 | item.options.app |
| 2730 | ? ` in "${ |
| 2731 | /** @type {import("open").App} */ |
| 2732 | (item.options.app).name |
| 2733 | }" app${ |
| 2734 | /** @type {import("open").App} */ |
| 2735 | (item.options.app).arguments |
| 2736 | ? ` with "${ |
| 2737 | /** @type {import("open").App} */ |
| 2738 | (item.options.app).arguments.join(" ") |
| 2739 | }" arguments` |
| 2740 | : "" |
| 2741 | }` |
| 2742 | : "" |
| 2743 | }. If you are running in a headless environment, please do not use the "open" option or related flags like "--open", "--open-target", and "--open-app-name".`, |
| 2744 | ); |
| 2745 | }); |
| 2746 | }), |
| 2747 | ); |
| 2748 | } |
| 2749 | |
| 2750 | /** |
| 2751 | * @private |
no test coverage detected