From 057abba08baad3be30243f83cf381ae5c48cb928 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Fri, 5 Jul 2024 11:48:42 -0700 Subject: [PATCH] mjs and js --- addons/addon-attach/package.json | 1 + addons/addon-canvas/package.json | 1 + addons/addon-clipboard/package.json | 1 + addons/addon-fit/package.json | 1 + addons/addon-image/package.json | 1 + addons/addon-ligatures/package.json | 1 + addons/addon-search/package.json | 1 + addons/addon-serialize/package.json | 1 + addons/addon-unicode-graphemes/package.json | 1 + addons/addon-unicode11/package.json | 1 + addons/addon-web-links/package.json | 1 + addons/addon-webgl/package.json | 1 + bin/esbuild.mjs | 31 ++++++++++++--------- package.json | 2 ++ src/browser/AccessibilityManager.ts | 2 +- src/browser/CoreBrowserTerminal.ts | 2 +- src/browser/LocalizableStrings.ts | 19 ++++++++++--- src/browser/public/Terminal.ts | 8 +++++- 18 files changed, 56 insertions(+), 20 deletions(-) diff --git a/addons/addon-attach/package.json b/addons/addon-attach/package.json index 6f0c32b7..bbc44d2d 100644 --- a/addons/addon-attach/package.json +++ b/addons/addon-attach/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-attach.js", + "module": "lib/addon-attach.mjs", "types": "typings/addon-attach.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-attach", "license": "MIT", diff --git a/addons/addon-canvas/package.json b/addons/addon-canvas/package.json index cb5ded7c..f61da636 100644 --- a/addons/addon-canvas/package.json +++ b/addons/addon-canvas/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-canvas.js", + "module": "lib/addon-canvas.mjs", "types": "typings/addon-canvas.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-canvas", "license": "MIT", diff --git a/addons/addon-clipboard/package.json b/addons/addon-clipboard/package.json index 8ecdd6af..9ac7de0e 100644 --- a/addons/addon-clipboard/package.json +++ b/addons/addon-clipboard/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-clipboard.js", + "module": "lib/addon-clipboard.mjs", "types": "typings/addon-clipboard.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-clipboard", "license": "MIT", diff --git a/addons/addon-fit/package.json b/addons/addon-fit/package.json index 14d65f30..311c8cea 100644 --- a/addons/addon-fit/package.json +++ b/addons/addon-fit/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-fit.js", + "module": "lib/addon-fit.mjs", "types": "typings/addon-fit.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-fit", "license": "MIT", diff --git a/addons/addon-image/package.json b/addons/addon-image/package.json index 2ea80c65..bc6c878f 100644 --- a/addons/addon-image/package.json +++ b/addons/addon-image/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-image.js", + "module": "lib/addon-image.mjs", "types": "typings/addon-image.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-image", "license": "MIT", diff --git a/addons/addon-ligatures/package.json b/addons/addon-ligatures/package.json index 80608ee3..5db07290 100644 --- a/addons/addon-ligatures/package.json +++ b/addons/addon-ligatures/package.json @@ -7,6 +7,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-ligatures.js", + "module": "lib/addon-ligatures.mjs", "types": "typings/addon-ligatures.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-ligatures", "engines": { diff --git a/addons/addon-search/package.json b/addons/addon-search/package.json index 91dfef2e..0cfbee57 100644 --- a/addons/addon-search/package.json +++ b/addons/addon-search/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-search.js", + "module": "lib/addon-search.mjs", "types": "typings/addon-search.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-search", "license": "MIT", diff --git a/addons/addon-serialize/package.json b/addons/addon-serialize/package.json index 3901addc..fb074a59 100644 --- a/addons/addon-serialize/package.json +++ b/addons/addon-serialize/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-serialize.js", + "module": "lib/addon-serialize.mjs", "types": "typings/addon-serialize.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-serialize", "license": "MIT", diff --git a/addons/addon-unicode-graphemes/package.json b/addons/addon-unicode-graphemes/package.json index 193cdecd..19a6baac 100644 --- a/addons/addon-unicode-graphemes/package.json +++ b/addons/addon-unicode-graphemes/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-unicode-graphemes.js", + "module": "lib/.addon-unicode-graphemes.mjs", "types": "typings/addon-unicode-graphemes.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode-graphemes", "license": "MIT", diff --git a/addons/addon-unicode11/package.json b/addons/addon-unicode11/package.json index 0981702b..6db1a0bd 100644 --- a/addons/addon-unicode11/package.json +++ b/addons/addon-unicode11/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-unicode11.js", + "module": "lib/addon-unicode11.mjs", "types": "typings/addon-unicode11.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-unicode11", "license": "MIT", diff --git a/addons/addon-web-links/package.json b/addons/addon-web-links/package.json index be5cf7c3..723acacd 100644 --- a/addons/addon-web-links/package.json +++ b/addons/addon-web-links/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-web-links.js", + "module": "lib/addon-web-links.mjs", "types": "typings/addon-web-links.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-web-links", "license": "MIT", diff --git a/addons/addon-webgl/package.json b/addons/addon-webgl/package.json index 6c91daf9..797d229c 100644 --- a/addons/addon-webgl/package.json +++ b/addons/addon-webgl/package.json @@ -6,6 +6,7 @@ "url": "https://xtermjs.org/" }, "main": "lib/addon-webgl.js", + "module": "lib/addon-webgl.mjs", "types": "typings/addon-webgl.d.ts", "repository": "https://github.com/xtermjs/xterm.js/tree/master/addons/addon-webgl", "license": "MIT", diff --git a/bin/esbuild.mjs b/bin/esbuild.mjs index 774c75c1..948c11b9 100644 --- a/bin/esbuild.mjs +++ b/bin/esbuild.mjs @@ -56,7 +56,12 @@ const prodOptions = { * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/` - } + }, + // footer: { + // js: `return __export__;\n});` + // }, + + format: 'esm', // mangleProps: /_.+/, }; @@ -101,7 +106,7 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`addons/addon-${config.addon}/src/${getAddonEntryPoint(config.addon)}.ts`], - outfile: `addons/addon-${config.addon}/lib/xterm-addon-${config.addon}.js`, + outfile: `addons/addon-${config.addon}/lib/xterm-addon-${config.addon}.mjs`, }; outConfig = { ...outConfig, @@ -125,7 +130,7 @@ if (config.addon) { bundleConfig = { ...bundleConfig, entryPoints: [`src/browser/public/Terminal.ts`], - outfile: `lib/xterm.js` + outfile: `lib/xterm.mjs` }; outConfig = { ...outConfig, @@ -147,18 +152,18 @@ if (config.isDemoClient) { external: ['util', 'os', 'fs', 'path', 'stream', 'Terminal'], alias: { "@xterm/xterm": ".", - "@xterm/addon-attach": "./addons/addon-attach/lib/xterm-addon-attach.js", - "@xterm/addon-canvas": "./addons/addon-canvas/lib/xterm-addon-canvas.js", - "@xterm/addon-clipboard": "./addons/addon-clipboard/lib/xterm-addon-clipboard.js", - "@xterm/addon-fit": "./addons/addon-fit/lib/xterm-addon-fit.js", + "@xterm/addon-attach": "./addons/addon-attach/lib/xterm-addon-attach.mjs", + "@xterm/addon-canvas": "./addons/addon-canvas/lib/xterm-addon-canvas.mjs", + "@xterm/addon-clipboard": "./addons/addon-clipboard/lib/xterm-addon-clipboard.mjs", + "@xterm/addon-fit": "./addons/addon-fit/lib/xterm-addon-fit.mjs", // "@xterm/addon-image": "./addons/addon-image/lib/xterm-addon-image.js", // "@xterm/addon-ligatures": "./addons/addon-ligatures/lib/xterm-addon-ligatures.js", - "@xterm/addon-search": "./addons/addon-search/lib/xterm-addon-search.js", - "@xterm/addon-serialize": "./addons/addon-serialize/lib/xterm-addon-serialize.js", - "@xterm/addon-web-links": "./addons/addon-web-links/lib/xterm-addon-web-links.js", - "@xterm/addon-webgl": "./addons/addon-webgl/lib/xterm-addon-webgl.js", - "@xterm/addon-unicode11": "./addons/addon-unicode11/lib/xterm-addon-unicode11.js", - "@xterm/addon-unicode-graphemes": "./addons/addon-unicode-graphemes/lib/xterm-addon-unicode-graphemes.js", + "@xterm/addon-search": "./addons/addon-search/lib/xterm-addon-search.mjs", + "@xterm/addon-serialize": "./addons/addon-serialize/lib/xterm-addon-serialize.mjs", + "@xterm/addon-web-links": "./addons/addon-web-links/lib/xterm-addon-web-links.mjs", + "@xterm/addon-webgl": "./addons/addon-webgl/lib/xterm-addon-webgl.mjs", + "@xterm/addon-unicode11": "./addons/addon-unicode11/lib/xterm-addon-unicode11.mjs", + "@xterm/addon-unicode-graphemes": "./addons/addon-unicode-graphemes/lib/xterm-addon-unicode-graphemes.mjs", // Needed for out-tsc based image addon "common/Lifecycle": "./src/common/Lifecycle.ts", diff --git a/package.json b/package.json index ce78818e..7440cf49 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "Full xterm terminal, in your browser", "version": "5.5.0", "main": "lib/xterm.js", + "module": "lib/xterm.mjs", "style": "css/xterm.css", "types": "typings/xterm.d.ts", "repository": "https://github.com/xtermjs/xterm.js", @@ -67,6 +68,7 @@ "prepackage": "npm run build", "package": "webpack", + "postpackage":"npm run esbuild-package", "package-headless": "webpack --config ./webpack.config.headless.js", "postpackage-headless": "node ./bin/package_headless.js", "prepublishOnly": "npm run package" diff --git a/src/browser/AccessibilityManager.ts b/src/browser/AccessibilityManager.ts index a4a58187..174ccc44 100644 --- a/src/browser/AccessibilityManager.ts +++ b/src/browser/AccessibilityManager.ts @@ -151,7 +151,7 @@ export class AccessibilityManager extends Disposable { if (char === '\n') { this._liveRegionLineCount++; if (this._liveRegionLineCount === MAX_ROWS_TO_READ + 1) { - this._liveRegion.textContent += Strings.tooMuchOutput; + this._liveRegion.textContent += Strings.tooMuchOutput.get(); } } } diff --git a/src/browser/CoreBrowserTerminal.ts b/src/browser/CoreBrowserTerminal.ts index 6d684953..f9eefaed 100644 --- a/src/browser/CoreBrowserTerminal.ts +++ b/src/browser/CoreBrowserTerminal.ts @@ -443,7 +443,7 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal { this.textarea = this._document.createElement('textarea'); this.textarea.classList.add('xterm-helper-textarea'); - this.textarea.setAttribute('aria-label', Strings.promptLabel); + this.textarea.setAttribute('aria-label', Strings.promptLabel.get()); if (!Browser.isChromeOS) { // ChromeVox on ChromeOS does not like this. See // https://issuetracker.google.com/issues/260170397 diff --git a/src/browser/LocalizableStrings.ts b/src/browser/LocalizableStrings.ts index d8bcc2c6..32055ce9 100644 --- a/src/browser/LocalizableStrings.ts +++ b/src/browser/LocalizableStrings.ts @@ -5,8 +5,19 @@ // This file contains strings that get exported in the API so they can be localized -// eslint-disable-next-line prefer-const -export let promptLabel = 'Terminal input'; +let promptLabelInternal = 'Terminal input'; +const promptLabel = { + get: () => promptLabelInternal, + set: (value: string) => promptLabelInternal = value +}; -// eslint-disable-next-line prefer-const -export let tooMuchOutput = 'Too much output to announce, navigate to rows manually to read'; +let tooMuchOutputInternal = 'Too much output to announce, navigate to rows manually to read'; +const tooMuchOutput = { + get: () => tooMuchOutputInternal, + set: (value: string) => tooMuchOutputInternal = value +}; + +export { + promptLabel, + tooMuchOutput +}; diff --git a/src/browser/public/Terminal.ts b/src/browser/public/Terminal.ts index cb4f221e..572bac04 100644 --- a/src/browser/public/Terminal.ts +++ b/src/browser/public/Terminal.ts @@ -247,7 +247,13 @@ export class Terminal extends Disposable implements ITerminalApi { this._addonManager.loadAddon(this, addon); } public static get strings(): ILocalizableStrings { - return Strings; + // A wrapper is required here because esbuild prevents setting an `export let` + return { + get promptLabel(): string { return Strings.promptLabel.get(); }, + set promptLabel(value: string) { Strings.promptLabel.set(value); }, + get tooMuchOutput(): string { return Strings.tooMuchOutput.get(); }, + set tooMuchOutput(value: string) { Strings.tooMuchOutput.set(value); } + }; } private _verifyIntegers(...values: number[]): void {