@theia/bundle-plugin 1.75.0-next.8 → 1.76.0-next.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.
@@ -34,6 +34,36 @@ export declare function exposeModulePlugin(): Plugin;
34
34
  * No-op when source maps are disabled.
35
35
  */
36
36
  export declare function sourceMapPathsPlugin(): Plugin;
37
+ export interface CompressAssetsPluginOptions {
38
+ /**
39
+ * Whether to compress at all. When `false`, the plugin only removes the `.gz` files of a
40
+ * previous build, so that the backend cannot serve outdated content. Defaults to `true`.
41
+ */
42
+ compress?: boolean;
43
+ /**
44
+ * Extensions of the files to compress.
45
+ * Defaults to the asset types Theia's backend serves pre-compressed.
46
+ */
47
+ extensions?: string[];
48
+ /**
49
+ * A `.gz` file is only emitted if its size is at most this fraction of the original file's size.
50
+ * Defaults to `0.8`.
51
+ */
52
+ minRatio?: number;
53
+ }
54
+ /**
55
+ * Emits a gzipped `<file>.gz` sibling for every compressible asset in the output directory.
56
+ *
57
+ * Theia's `BackendApplication` serves such a sibling instead of the original file whenever the
58
+ * client accepts `gzip`, which saves bandwidth and avoids compressing on every request. Because
59
+ * the sibling always wins, every asset that is not compressed gets its `.gz` file of a previous
60
+ * build removed.
61
+ *
62
+ * Register this plugin *last*: esbuild runs `onEnd` callbacks in plugin registration order, and
63
+ * other plugins add or rewrite output files in their own `onEnd` hook (e.g. `sourceMapPathsPlugin`
64
+ * or asset copying). Compressing before them would emit outdated `.gz` files.
65
+ */
66
+ export declare function compressAssetsPlugin(options?: CompressAssetsPluginOptions): Plugin;
37
67
  export declare function problemMatcherPlugin(watch: boolean, type: string): Plugin;
38
68
  export interface NativeDependenciesPluginOptions {
39
69
  trash: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/esbuild-plugin.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,SAAS,CAAC;AAenD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAqBxC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA0C3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAgC7C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzE;AAED,MAAM,WAAW,+BAA+B;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAQzF"}
1
+ {"version":3,"file":"esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/esbuild-plugin.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,SAAS,CAAC;AAiBnD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAqBxC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA0C3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAgC7C;AAQD,MAAM,WAAW,2BAA2B;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,MAAM,CAmCtF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBzE;AAED,MAAM,WAAW,+BAA+B;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM,CAQzF"}
@@ -18,13 +18,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.monacoNlsPlugin = monacoNlsPlugin;
19
19
  exports.exposeModulePlugin = exposeModulePlugin;
20
20
  exports.sourceMapPathsPlugin = sourceMapPathsPlugin;
21
+ exports.compressAssetsPlugin = compressAssetsPlugin;
21
22
  exports.problemMatcherPlugin = problemMatcherPlugin;
22
23
  exports.nativeDependenciesPlugin = nativeDependenciesPlugin;
23
24
  const path = require("path");
24
25
  const fs = require("fs");
25
26
  const url_1 = require("url");
27
+ const util_1 = require("util");
28
+ const zlib_1 = require("zlib");
26
29
  const resolvePackagePath = require("resolve-package-path");
27
30
  const os_1 = require("os");
31
+ const gzipAsync = (0, util_1.promisify)(zlib_1.gzip);
28
32
  function join(...parts) {
29
33
  return path.join(...parts).replace(/\\/g, '/');
30
34
  }
@@ -163,6 +167,59 @@ function sourceMapPathsPlugin() {
163
167
  }
164
168
  };
165
169
  }
170
+ /**
171
+ * Asset types that Theia's `BackendApplication` serves pre-compressed
172
+ * when a sibling `.gz` file exists next to the requested file.
173
+ */
174
+ const defaultCompressedExtensions = ['.js', '.map', '.css', '.wasm', '.gif', '.png', '.svg', '.eot', '.ttf', '.woff', '.woff2'];
175
+ /**
176
+ * Emits a gzipped `<file>.gz` sibling for every compressible asset in the output directory.
177
+ *
178
+ * Theia's `BackendApplication` serves such a sibling instead of the original file whenever the
179
+ * client accepts `gzip`, which saves bandwidth and avoids compressing on every request. Because
180
+ * the sibling always wins, every asset that is not compressed gets its `.gz` file of a previous
181
+ * build removed.
182
+ *
183
+ * Register this plugin *last*: esbuild runs `onEnd` callbacks in plugin registration order, and
184
+ * other plugins add or rewrite output files in their own `onEnd` hook (e.g. `sourceMapPathsPlugin`
185
+ * or asset copying). Compressing before them would emit outdated `.gz` files.
186
+ */
187
+ function compressAssetsPlugin(options = {}) {
188
+ const compress = options.compress ?? true;
189
+ const extensions = options.extensions ?? defaultCompressedExtensions;
190
+ const minRatio = options.minRatio ?? 0.8;
191
+ return {
192
+ name: 'theia-compress-assets',
193
+ setup(build) {
194
+ const { outdir } = build.initialOptions;
195
+ if (!outdir) {
196
+ return;
197
+ }
198
+ build.onEnd(async (result) => {
199
+ if (result.errors.length > 0) {
200
+ return;
201
+ }
202
+ const entries = await fs.promises.readdir(outdir, { recursive: true });
203
+ await Promise.all(entries.map(async (entry) => {
204
+ if (!extensions.includes(path.extname(entry))) {
205
+ return;
206
+ }
207
+ const filePath = path.join(outdir, entry);
208
+ if (compress) {
209
+ const contents = await fs.promises.readFile(filePath);
210
+ const compressed = await gzipAsync(contents, { level: 9 });
211
+ // Compressing an already compressed or tiny asset is not worth a request roundtrip.
212
+ if (compressed.length <= contents.length * minRatio) {
213
+ await fs.promises.writeFile(filePath + '.gz', compressed);
214
+ return;
215
+ }
216
+ }
217
+ await fs.promises.rm(filePath + '.gz', { force: true });
218
+ }));
219
+ });
220
+ }
221
+ };
222
+ }
166
223
  function problemMatcherPlugin(watch, type) {
167
224
  const buildType = watch ? 'watch' : 'build';
168
225
  const prefix = `[${buildType}/${type}]`;
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild-plugin.js","sourceRoot":"","sources":["../src/esbuild-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esbuild-plugin.js","sourceRoot":"","sources":["../src/esbuild-plugin.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAoChF,0CAqBC;AAUD,gDA0CC;AAgBD,oDAgCC;AAsCD,oDAmCC;AAED,oDAgBC;AASD,4DAQC;AAvQD,6BAA6B;AAC7B,yBAAyB;AACzB,6BAAoC;AACpC,+BAAiC;AACjC,+BAA4B;AAC5B,2DAA4D;AAG5D,2BAAyB;AAEzB,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,WAAI,CAAC,CAAC;AAElC,SAAS,IAAI,CAAC,GAAG,KAAe;IAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,MAAM,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe;IAC3B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,iBAAiB;QACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC;QACvE,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACH,IAAI,EAAE,YAAY;QAClB,KAAK,CAAC,KAAkB;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,OAAO;YACX,CAAC;YACD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE;gBAC9C,IACI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;oBACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAChD,CAAC;oBACC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;gBACpC,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB;IAC9B,SAAS,WAAW,CAAC,YAAoB;QACrC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,CAAC;gBACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;gBACrF,IAAI,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;gBACzB,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,mDAAmD;YACvD,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,OAAO,SAAS,CAAC,CAAC,2BAA2B;YACjD,CAAC;YACD,GAAG,GAAG,MAAM,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,EAAE,eAAe;QACrB,KAAK,CAAC,KAAkB;YACpB,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACP,OAAO;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACnB,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACnB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;gBACD,MAAM,QAAQ,GAAG,yDAAyD,UAAU,gEAAgE,CAAC;gBACrJ,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB;IAChC,OAAO;QACH,IAAI,EAAE,wBAAwB;QAC9B,KAAK,CAAC,KAAkB;YACpB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;YACnD,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxB,OAAO;YACX,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACnB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;oBACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC1B,OAAO;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBACzC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC9B,OAAO;oBACX,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACrC,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;wBAC7C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1B,OAAO,IAAA,mBAAa,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC5D,CAAC;wBACD,OAAO,MAAM,CAAC;oBAClB,CAAC,CAAC,CAAC;oBACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAoBhI;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,UAAuC,EAAE;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,2BAA2B,CAAC;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC;IACzC,OAAO;QACH,IAAI,EAAE,uBAAuB;QAC7B,KAAK,CAAC,KAAkB;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO;YACX,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;gBACvB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,KAAK,EAAC,EAAE;oBACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBAC5C,OAAO;oBACX,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAI,QAAQ,EAAE,CAAC;wBACX,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBACtD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC3D,oFAAoF;wBACpF,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;4BAClD,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK,EAAE,UAAU,CAAC,CAAC;4BAC1D,OAAO;wBACX,CAAC;oBACL,CAAC;oBACD,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAc,EAAE,IAAY;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,SAAS,IAAI,IAAI,GAAG,CAAC;IACxC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO;QACH,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,KAAkB;YACpB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACjH,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;AACN,CAAC;AAAA,CAAC;AASF,SAAgB,wBAAwB,CAAC,OAAwC;IAC7E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,oCAAoC;IACpC,2EAA2E;IAC3E,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;KACnC,CAAC;AACN,CAAC;AAED,MAAM,UAAU;IAOZ,YAAY,OAAwC;QALpD,SAAI,GAAG,uBAAuB,CAAC;QAEvB,aAAQ,GAA2B,EAAE,CAAC;QAI1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,QAAgB;QAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAkB;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;YAC7C,OAAO;gBACH,IAAI,EAAE,OAAO;oBACT,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC;oBACzF,CAAC,CAAC,EAAE;gBACR,kEAAkE;gBAClE,QAAQ,EAAE,CAAC,OAAO;aACrB,CAAC;QACN,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC;YACrF,SAAS,EAAE,WAAW;SACzB,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,oCAAoC,EAAE,EAAE,GAAG,EAAE;YACnE,IAAI,IAAI,GAAG,mBAAmB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;gBAChD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,IAAI,IAAI,OAAO,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACJ,IAAI,IAAI,QAAQ,CAAC;gBACrB,CAAC;YACL,CAAC;YACD,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;gBACnD,SAAS,EAAE,WAAW;aACzB,CAAC;QACN,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5C,MAAM,EAAE,IAAI;SACf,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,+CAA+C,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACnF,QAAQ,EAAE,oHAAoH;YAC9H,MAAM,EAAE,IAAI;SACf,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,kDAAkD,EAAE,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACtF,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7D,iFAAiF;YACjF,gFAAgF;YAChF,+EAA+E;YAC/E,gFAAgF;YAChF,mEAAmE;YACnE,QAAQ,GAAG,uCAAuC,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;YAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,iEAAiE,EAAE,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;YACrG,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7D,0EAA0E;YAC1E,yEAAyE;YACzE,oEAAoE;YACpE,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,CAAC;YAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACb,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACrB,eAAe,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACvB,WAAW,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACnB,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEO,iBAAiB,CAAC,KAAkB;QACxC,uFAAuF;QACvF,qFAAqF;QACrF,0EAA0E;QAC1E,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;YAC7D,IAAI,CAAC;gBACD,qFAAqF;gBACrF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC1E,OAAO;oBACH,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,WAAW;iBACzB,CAAC;YACN,CAAC;YAAC,MAAM,CAAC;gBACL,yDAAyD;gBACzD,OAAO;oBACH,QAAQ,EAAE,IAAI;iBACjB,CAAC;YACN,CAAC;QACL,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,iFAAiF;YACjF,QAAQ,EAAE;iCACW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;4EAEkB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF;SACJ,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,uDAAuD;YACvD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,MAAM;SACpB,CAAC,CAAC,CAAC;IACR,CAAC;CACJ;AAED,KAAK,UAAU,WAAW,CAAC,MAAc;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,MAAM,WAAW,GAAG,mBAAmB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,MAAc;IAChD,MAAM,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,sBAAsB,IAAI,EAAE,CAAC;IACzC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC9B,MAAM,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QAC3C,MAAM,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACpC,MAAM,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IACD,2BAA2B;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;IACpF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,MAAc;IACxD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,QAAgC,EAAE,EAAE;IAC7D,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,sBAAsB,IAAI,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;;;EAGT,KAAK,CAAC,IAAI,CAAC,QAAG,CAAC;;;EAGf,CAAC,IAAI,EAAE,CAAC;AACV,CAAC,CAAC"}
@@ -16,13 +16,17 @@
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const chai = require("chai");
19
+ const crypto = require("crypto");
19
20
  const fs = require("fs");
21
+ const os = require("os");
22
+ const path = require("path");
20
23
  const esbuild_plugin_1 = require("./esbuild-plugin");
21
24
  const expect = chai.expect;
22
- function createFakeBuild() {
25
+ function createFakeBuild(outdir = '/tmp/fake-outdir') {
23
26
  const resolvers = [];
27
+ const onEnd = [];
24
28
  const build = {
25
- initialOptions: { outdir: '/tmp/fake-outdir' },
29
+ initialOptions: { outdir },
26
30
  onResolve: (options, callback) => {
27
31
  resolvers.push({ filter: options.filter, callback });
28
32
  },
@@ -30,9 +34,11 @@ function createFakeBuild() {
30
34
  resolvers.push({ filter: options.filter, callback });
31
35
  },
32
36
  onStart: () => undefined,
33
- onEnd: () => undefined,
37
+ onEnd: (callback) => {
38
+ onEnd.push(callback);
39
+ },
34
40
  };
35
- return { build, resolvers };
41
+ return { build, resolvers, onEnd };
36
42
  }
37
43
  describe('nativeDependenciesPlugin', () => {
38
44
  it('rewrites the @stroncium/procfs parsers.js dynamic require to append `.js` so esbuild\'s glob lookup matches at runtime', async () => {
@@ -89,4 +95,52 @@ describe('nativeDependenciesPlugin', () => {
89
95
  expect(result.path, 'binding must point at a prebuilt watcher.node file').to.match(/watcher\.node$/);
90
96
  });
91
97
  });
98
+ describe('compressAssetsPlugin', () => {
99
+ let outdir;
100
+ beforeEach(() => {
101
+ outdir = fs.mkdtempSync(path.join(os.tmpdir(), 'theia-compress-assets-'));
102
+ });
103
+ afterEach(() => {
104
+ fs.rmSync(outdir, { recursive: true, force: true });
105
+ });
106
+ async function runPlugin(options = {}) {
107
+ const { build, onEnd } = createFakeBuild(outdir);
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ (0, esbuild_plugin_1.compressAssetsPlugin)({ compress: options.compress }).setup(build);
110
+ expect(onEnd.length, 'plugin should register an onEnd callback').to.equal(1);
111
+ await onEnd[0]({ errors: options.errors ?? [] });
112
+ }
113
+ it('emits a `.gz` sibling for compressible assets and leaves other file types alone', async () => {
114
+ fs.writeFileSync(path.join(outdir, 'bundle.js'), 'const theia = 1;'.repeat(500));
115
+ fs.mkdirSync(path.join(outdir, 'nested'));
116
+ fs.writeFileSync(path.join(outdir, 'nested', 'style.css'), '.theia-widget { color: red; }'.repeat(500));
117
+ fs.writeFileSync(path.join(outdir, 'index.html'), '<html></html>');
118
+ await runPlugin();
119
+ expect(fs.existsSync(path.join(outdir, 'bundle.js.gz')), 'JS assets must be compressed').to.equal(true);
120
+ expect(fs.existsSync(path.join(outdir, 'nested', 'style.css.gz')), 'assets in nested directories must be compressed').to.equal(true);
121
+ expect(fs.existsSync(path.join(outdir, 'index.html.gz')), 'HTML is not served pre-compressed by the backend').to.equal(false);
122
+ });
123
+ it('removes a stale `.gz` file when the current asset does not compress well enough', async () => {
124
+ // The backend serves any existing `.gz` sibling, so an outdated one must not survive a rebuild.
125
+ const asset = path.join(outdir, 'bundle.js');
126
+ fs.writeFileSync(asset, crypto.randomBytes(4096));
127
+ fs.writeFileSync(asset + '.gz', 'stale');
128
+ await runPlugin();
129
+ expect(fs.existsSync(asset + '.gz'), 'stale compressed file must be removed').to.equal(false);
130
+ });
131
+ it('removes the `.gz` files of a previous build when compression is disabled', async () => {
132
+ // Otherwise a development build after a production build would keep serving the production assets.
133
+ const asset = path.join(outdir, 'bundle.js');
134
+ fs.writeFileSync(asset, 'const theia = 1;'.repeat(500));
135
+ fs.writeFileSync(asset + '.gz', 'from the previous build');
136
+ await runPlugin({ compress: false });
137
+ expect(fs.existsSync(asset), 'the asset itself must be kept').to.equal(true);
138
+ expect(fs.existsSync(asset + '.gz'), 'compressed files of a previous build must be removed').to.equal(false);
139
+ });
140
+ it('does not touch the output directory when the build failed', async () => {
141
+ fs.writeFileSync(path.join(outdir, 'bundle.js'), 'const theia = 1;'.repeat(500));
142
+ await runPlugin({ errors: [{ text: 'build failed' }] });
143
+ expect(fs.existsSync(path.join(outdir, 'bundle.js.gz')), 'a failed build must not produce compressed assets').to.equal(false);
144
+ });
145
+ });
92
146
  //# sourceMappingURL=esbuild-plugin.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild-plugin.spec.js","sourceRoot":"","sources":["../src/esbuild-plugin.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esbuild-plugin.spec.js","sourceRoot":"","sources":["../src/esbuild-plugin.spec.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,4 +1,2 @@
1
1
  export * from './esbuild-plugin';
2
- export * from './webpack-plugin';
3
- export * from './monaco-webpack-plugins';
4
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,cAAc,kBAAkB,CAAC"}
package/lib/index.js CHANGED
@@ -17,6 +17,4 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const tslib_1 = require("tslib");
19
19
  tslib_1.__exportStar(require("./esbuild-plugin"), exports);
20
- tslib_1.__exportStar(require("./webpack-plugin"), exports);
21
- tslib_1.__exportStar(require("./monaco-webpack-plugins"), exports);
22
20
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,2DAAiC;AACjC,2DAAiC;AACjC,mEAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,2DAAiC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/bundle-plugin",
3
- "version": "1.75.0-next.8+c4452ce29",
3
+ "version": "1.76.0-next.0+52f32db6e",
4
4
  "description": "Contains bundler plugins for Theia.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -31,8 +31,7 @@
31
31
  "dependencies": {
32
32
  "detect-libc": "^2.1.2",
33
33
  "resolve-package-path": "^4.0.3",
34
- "tslib": "^2.8.1",
35
- "webpack": "^5.108.3"
34
+ "tslib": "^2.8.1"
36
35
  },
37
- "gitHead": "c4452ce290653826389aa42dfddfabe461c1dcc8"
36
+ "gitHead": "52f32db6e32d1f88dbbbbde08c8a01ad75c53e11"
38
37
  }
@@ -15,8 +15,11 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import * as chai from 'chai';
18
+ import * as crypto from 'crypto';
18
19
  import * as fs from 'fs';
19
- import { nativeDependenciesPlugin } from './esbuild-plugin';
20
+ import * as os from 'os';
21
+ import * as path from 'path';
22
+ import { compressAssetsPlugin, nativeDependenciesPlugin } from './esbuild-plugin';
20
23
 
21
24
  const expect = chai.expect;
22
25
 
@@ -28,10 +31,11 @@ interface Resolvers {
28
31
  callback: AnyCallback;
29
32
  }
30
33
 
31
- function createFakeBuild(): { build: unknown, resolvers: Resolvers[] } {
34
+ function createFakeBuild(outdir: string = '/tmp/fake-outdir'): { build: unknown, resolvers: Resolvers[], onEnd: AnyCallback[] } {
32
35
  const resolvers: Resolvers[] = [];
36
+ const onEnd: AnyCallback[] = [];
33
37
  const build = {
34
- initialOptions: { outdir: '/tmp/fake-outdir' },
38
+ initialOptions: { outdir },
35
39
  onResolve: (options: { filter: RegExp }, callback: AnyCallback) => {
36
40
  resolvers.push({ filter: options.filter, callback });
37
41
  },
@@ -39,9 +43,11 @@ function createFakeBuild(): { build: unknown, resolvers: Resolvers[] } {
39
43
  resolvers.push({ filter: options.filter, callback });
40
44
  },
41
45
  onStart: () => undefined,
42
- onEnd: () => undefined,
46
+ onEnd: (callback: AnyCallback) => {
47
+ onEnd.push(callback);
48
+ },
43
49
  };
44
- return { build, resolvers };
50
+ return { build, resolvers, onEnd };
45
51
  }
46
52
 
47
53
  describe('nativeDependenciesPlugin', () => {
@@ -108,3 +114,68 @@ describe('nativeDependenciesPlugin', () => {
108
114
  expect(result.path, 'binding must point at a prebuilt watcher.node file').to.match(/watcher\.node$/);
109
115
  });
110
116
  });
117
+
118
+ describe('compressAssetsPlugin', () => {
119
+
120
+ let outdir: string;
121
+
122
+ beforeEach(() => {
123
+ outdir = fs.mkdtempSync(path.join(os.tmpdir(), 'theia-compress-assets-'));
124
+ });
125
+
126
+ afterEach(() => {
127
+ fs.rmSync(outdir, { recursive: true, force: true });
128
+ });
129
+
130
+ async function runPlugin(options: { compress?: boolean, errors?: object[] } = {}): Promise<void> {
131
+ const { build, onEnd } = createFakeBuild(outdir);
132
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
+ compressAssetsPlugin({ compress: options.compress }).setup(build as any);
134
+ expect(onEnd.length, 'plugin should register an onEnd callback').to.equal(1);
135
+ await onEnd[0]({ errors: options.errors ?? [] });
136
+ }
137
+
138
+ it('emits a `.gz` sibling for compressible assets and leaves other file types alone', async () => {
139
+ fs.writeFileSync(path.join(outdir, 'bundle.js'), 'const theia = 1;'.repeat(500));
140
+ fs.mkdirSync(path.join(outdir, 'nested'));
141
+ fs.writeFileSync(path.join(outdir, 'nested', 'style.css'), '.theia-widget { color: red; }'.repeat(500));
142
+ fs.writeFileSync(path.join(outdir, 'index.html'), '<html></html>');
143
+
144
+ await runPlugin();
145
+
146
+ expect(fs.existsSync(path.join(outdir, 'bundle.js.gz')), 'JS assets must be compressed').to.equal(true);
147
+ expect(fs.existsSync(path.join(outdir, 'nested', 'style.css.gz')), 'assets in nested directories must be compressed').to.equal(true);
148
+ expect(fs.existsSync(path.join(outdir, 'index.html.gz')), 'HTML is not served pre-compressed by the backend').to.equal(false);
149
+ });
150
+
151
+ it('removes a stale `.gz` file when the current asset does not compress well enough', async () => {
152
+ // The backend serves any existing `.gz` sibling, so an outdated one must not survive a rebuild.
153
+ const asset = path.join(outdir, 'bundle.js');
154
+ fs.writeFileSync(asset, crypto.randomBytes(4096));
155
+ fs.writeFileSync(asset + '.gz', 'stale');
156
+
157
+ await runPlugin();
158
+
159
+ expect(fs.existsSync(asset + '.gz'), 'stale compressed file must be removed').to.equal(false);
160
+ });
161
+
162
+ it('removes the `.gz` files of a previous build when compression is disabled', async () => {
163
+ // Otherwise a development build after a production build would keep serving the production assets.
164
+ const asset = path.join(outdir, 'bundle.js');
165
+ fs.writeFileSync(asset, 'const theia = 1;'.repeat(500));
166
+ fs.writeFileSync(asset + '.gz', 'from the previous build');
167
+
168
+ await runPlugin({ compress: false });
169
+
170
+ expect(fs.existsSync(asset), 'the asset itself must be kept').to.equal(true);
171
+ expect(fs.existsSync(asset + '.gz'), 'compressed files of a previous build must be removed').to.equal(false);
172
+ });
173
+
174
+ it('does not touch the output directory when the build failed', async () => {
175
+ fs.writeFileSync(path.join(outdir, 'bundle.js'), 'const theia = 1;'.repeat(500));
176
+
177
+ await runPlugin({ errors: [{ text: 'build failed' }] });
178
+
179
+ expect(fs.existsSync(path.join(outdir, 'bundle.js.gz')), 'a failed build must not produce compressed assets').to.equal(false);
180
+ });
181
+ });
@@ -17,11 +17,15 @@
17
17
  import * as path from 'path';
18
18
  import * as fs from 'fs';
19
19
  import { pathToFileURL } from 'url';
20
+ import { promisify } from 'util';
21
+ import { gzip } from 'zlib';
20
22
  import resolvePackagePath = require('resolve-package-path');
21
23
 
22
24
  import type { Plugin, PluginBuild } from 'esbuild';
23
25
  import { EOL } from 'os';
24
26
 
27
+ const gzipAsync = promisify(gzip);
28
+
25
29
  function join(...parts: string[]): string {
26
30
  return path.join(...parts).replace(/\\/g, '/');
27
31
  }
@@ -167,6 +171,79 @@ export function sourceMapPathsPlugin(): Plugin {
167
171
  };
168
172
  }
169
173
 
174
+ /**
175
+ * Asset types that Theia's `BackendApplication` serves pre-compressed
176
+ * when a sibling `.gz` file exists next to the requested file.
177
+ */
178
+ const defaultCompressedExtensions = ['.js', '.map', '.css', '.wasm', '.gif', '.png', '.svg', '.eot', '.ttf', '.woff', '.woff2'];
179
+
180
+ export interface CompressAssetsPluginOptions {
181
+ /**
182
+ * Whether to compress at all. When `false`, the plugin only removes the `.gz` files of a
183
+ * previous build, so that the backend cannot serve outdated content. Defaults to `true`.
184
+ */
185
+ compress?: boolean;
186
+ /**
187
+ * Extensions of the files to compress.
188
+ * Defaults to the asset types Theia's backend serves pre-compressed.
189
+ */
190
+ extensions?: string[];
191
+ /**
192
+ * A `.gz` file is only emitted if its size is at most this fraction of the original file's size.
193
+ * Defaults to `0.8`.
194
+ */
195
+ minRatio?: number;
196
+ }
197
+
198
+ /**
199
+ * Emits a gzipped `<file>.gz` sibling for every compressible asset in the output directory.
200
+ *
201
+ * Theia's `BackendApplication` serves such a sibling instead of the original file whenever the
202
+ * client accepts `gzip`, which saves bandwidth and avoids compressing on every request. Because
203
+ * the sibling always wins, every asset that is not compressed gets its `.gz` file of a previous
204
+ * build removed.
205
+ *
206
+ * Register this plugin *last*: esbuild runs `onEnd` callbacks in plugin registration order, and
207
+ * other plugins add or rewrite output files in their own `onEnd` hook (e.g. `sourceMapPathsPlugin`
208
+ * or asset copying). Compressing before them would emit outdated `.gz` files.
209
+ */
210
+ export function compressAssetsPlugin(options: CompressAssetsPluginOptions = {}): Plugin {
211
+ const compress = options.compress ?? true;
212
+ const extensions = options.extensions ?? defaultCompressedExtensions;
213
+ const minRatio = options.minRatio ?? 0.8;
214
+ return {
215
+ name: 'theia-compress-assets',
216
+ setup(build: PluginBuild): void {
217
+ const { outdir } = build.initialOptions;
218
+ if (!outdir) {
219
+ return;
220
+ }
221
+ build.onEnd(async result => {
222
+ if (result.errors.length > 0) {
223
+ return;
224
+ }
225
+ const entries = await fs.promises.readdir(outdir, { recursive: true });
226
+ await Promise.all(entries.map(async entry => {
227
+ if (!extensions.includes(path.extname(entry))) {
228
+ return;
229
+ }
230
+ const filePath = path.join(outdir, entry);
231
+ if (compress) {
232
+ const contents = await fs.promises.readFile(filePath);
233
+ const compressed = await gzipAsync(contents, { level: 9 });
234
+ // Compressing an already compressed or tiny asset is not worth a request roundtrip.
235
+ if (compressed.length <= contents.length * minRatio) {
236
+ await fs.promises.writeFile(filePath + '.gz', compressed);
237
+ return;
238
+ }
239
+ }
240
+ await fs.promises.rm(filePath + '.gz', { force: true });
241
+ }));
242
+ });
243
+ }
244
+ };
245
+ }
246
+
170
247
  export function problemMatcherPlugin(watch: boolean, type: string): Plugin {
171
248
  const buildType = watch ? 'watch' : 'build';
172
249
  const prefix = `[${buildType}/${type}]`;
package/src/index.ts CHANGED
@@ -15,5 +15,3 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  export * from './esbuild-plugin';
18
- export * from './webpack-plugin';
19
- export * from './monaco-webpack-plugins';
@@ -1,5 +0,0 @@
1
- import * as webpack from 'webpack';
2
- export declare class MonacoWebpackPlugin {
3
- apply(compiler: webpack.Compiler): void;
4
- }
5
- //# sourceMappingURL=monaco-webpack-plugins.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monaco-webpack-plugins.d.ts","sourceRoot":"","sources":["../src/monaco-webpack-plugins.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,qBAAa,mBAAmB;IAC5B,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI;CAK1C"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2023 TypeFox and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.MonacoWebpackPlugin = void 0;
19
- class MonacoWebpackPlugin {
20
- apply(compiler) {
21
- compiler.hooks.contextModuleFactory.tap('MonacoBuildPlugin', cmf => {
22
- cmf.hooks.contextModuleFiles.tap('MonacoBuildPlugin', files => files.filter(file => !file.endsWith('.d.ts')));
23
- });
24
- }
25
- }
26
- exports.MonacoWebpackPlugin = MonacoWebpackPlugin;
27
- //# sourceMappingURL=monaco-webpack-plugins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monaco-webpack-plugins.js","sourceRoot":"","sources":["../src/monaco-webpack-plugins.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAIhF,MAAa,mBAAmB;IAC5B,KAAK,CAAC,QAA0B;QAC5B,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE;YAC/D,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClH,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAND,kDAMC"}
@@ -1,21 +0,0 @@
1
- import type { Compiler } from 'webpack';
2
- export interface NativeWebpackPluginOptions {
3
- out: string;
4
- trash: boolean;
5
- ripgrep: boolean;
6
- pty: boolean;
7
- replacements?: Record<string, string>;
8
- nativeBindings?: Record<string, string>;
9
- }
10
- export declare class NativeWebpackPlugin {
11
- private bindings;
12
- private options;
13
- constructor(options: NativeWebpackPluginOptions);
14
- nativeBinding(dependency: string, nodePath: string): void;
15
- apply(compiler: Compiler): void;
16
- protected copyRipgrep(issuer: string, compiler: Compiler): Promise<void>;
17
- protected copyNodePtyNativeDeps(issuer: string, compiler: Compiler): Promise<void>;
18
- protected copyTrashHelper(issuer: string, compiler: Compiler): Promise<void>;
19
- protected copyExecutable(source: string, target: string): Promise<void>;
20
- }
21
- //# sourceMappingURL=webpack-plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-plugin.d.ts","sourceRoot":"","sources":["../src/webpack-plugin.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,MAAM,WAAW,0BAA0B;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAA6B;gBAEhC,OAAO,EAAE,0BAA0B;IAO/C,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIzD,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;cAiDf,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ9D,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAyBxE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAelE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMhF"}
@@ -1,197 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2023 TypeFox and others.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.NativeWebpackPlugin = void 0;
19
- const path = require("path");
20
- const fs = require("fs");
21
- const os = require("os");
22
- const resolvePackagePath = require("resolve-package-path");
23
- const REQUIRE_RIPGREP = '@vscode/ripgrep';
24
- const REQUIRE_BINDINGS = 'bindings';
25
- const REQUIRE_PARCEL_WATCHER = './build/Release/watcher.node';
26
- class NativeWebpackPlugin {
27
- constructor(options) {
28
- this.bindings = new Map();
29
- this.options = options;
30
- for (const [name, value] of Object.entries(options.nativeBindings ?? {})) {
31
- this.nativeBinding(name, value);
32
- }
33
- }
34
- nativeBinding(dependency, nodePath) {
35
- this.bindings.set(dependency, nodePath);
36
- }
37
- apply(compiler) {
38
- let replacements = {};
39
- let nodePtyIssuer;
40
- let trashHelperIssuer;
41
- let ripgrepIssuer;
42
- compiler.hooks.initialize.tap(NativeWebpackPlugin.name, async () => {
43
- const directory = path.resolve(compiler.outputPath, 'native-webpack-plugin');
44
- await fs.promises.mkdir(directory, { recursive: true });
45
- const bindingsFile = (issuer) => buildFile(directory, 'bindings.js', bindingsReplacement(issuer, Array.from(this.bindings.entries())));
46
- const ripgrepFile = () => buildFile(directory, 'ripgrep.js', ripgrepReplacement(this.options.out));
47
- replacements = {
48
- ...(this.options.replacements ?? {}),
49
- [REQUIRE_RIPGREP]: ripgrepFile,
50
- [REQUIRE_BINDINGS]: bindingsFile,
51
- [REQUIRE_PARCEL_WATCHER]: issuer => Promise.resolve(findNativeWatcherFile(issuer))
52
- };
53
- });
54
- compiler.hooks.normalModuleFactory.tap(NativeWebpackPlugin.name, nmf => {
55
- nmf.hooks.beforeResolve.tapPromise(NativeWebpackPlugin.name, async (result) => {
56
- if (result.request === REQUIRE_RIPGREP) {
57
- ripgrepIssuer = result.contextInfo.issuer;
58
- }
59
- else if (result.request === 'node-pty') {
60
- nodePtyIssuer = result.contextInfo.issuer;
61
- }
62
- else if (result.request === 'trash') {
63
- trashHelperIssuer = result.contextInfo.issuer;
64
- }
65
- for (const [file, replacement] of Object.entries(replacements)) {
66
- if (result.request === file) {
67
- result.request = await replacement(result.contextInfo.issuer);
68
- }
69
- }
70
- });
71
- });
72
- compiler.hooks.afterEmit.tapPromise(NativeWebpackPlugin.name, async () => {
73
- if (this.options.trash && trashHelperIssuer) {
74
- await this.copyTrashHelper(trashHelperIssuer, compiler);
75
- }
76
- if (this.options.ripgrep && ripgrepIssuer) {
77
- await this.copyRipgrep(ripgrepIssuer, compiler);
78
- }
79
- if (this.options.pty && nodePtyIssuer) {
80
- await this.copyNodePtyNativeDeps(nodePtyIssuer, compiler);
81
- }
82
- });
83
- }
84
- async copyRipgrep(issuer, compiler) {
85
- const fileName = process.platform === 'win32' ? 'rg.exe' : 'rg';
86
- const platformPkg = `@vscode/ripgrep-${process.platform}-${process.arch}`;
87
- const sourceFile = path.join(resolveModulePath(platformPkg, issuer), 'bin', fileName);
88
- const targetFile = path.join(compiler.outputPath, this.options.out, fileName);
89
- await this.copyExecutable(sourceFile, targetFile);
90
- }
91
- async copyNodePtyNativeDeps(issuer, compiler) {
92
- const dist = `${process.platform}-${process.arch}`;
93
- const src = `node-pty/prebuilds/${dist}`;
94
- const targetDirectory = path.resolve(compiler.outputPath, '..', 'prebuilds', dist);
95
- const copyFile = async (source) => {
96
- const file = require.resolve(`${src}/${source}`, { paths: [issuer] });
97
- const targetFile = path.join(targetDirectory, source);
98
- await this.copyExecutable(file, targetFile);
99
- };
100
- if (process.platform === 'win32') {
101
- await copyFile('conpty.node');
102
- await copyFile('conpty_console_list.node');
103
- await copyFile('conpty/conpty.dll');
104
- await copyFile('conpty/OpenConsole.exe');
105
- }
106
- else if (process.platform === 'darwin') {
107
- await copyFile('spawn-helper');
108
- }
109
- // On non-windows platforms
110
- if (process.platform !== 'win32') {
111
- await copyFile('pty.node');
112
- }
113
- }
114
- async copyTrashHelper(issuer, compiler) {
115
- let sourceFile;
116
- let targetFile;
117
- if (process.platform === 'win32') {
118
- sourceFile = require.resolve('trash/lib/windows-trash.exe', { paths: [issuer] });
119
- targetFile = path.join(compiler.outputPath, 'windows-trash.exe');
120
- }
121
- else if (process.platform === 'darwin') {
122
- sourceFile = require.resolve('trash/lib/macos-trash', { paths: [issuer] });
123
- targetFile = path.join(compiler.outputPath, 'macos-trash');
124
- }
125
- if (sourceFile && targetFile) {
126
- await this.copyExecutable(sourceFile, targetFile);
127
- }
128
- }
129
- async copyExecutable(source, target) {
130
- const targetDirectory = path.dirname(target);
131
- await fs.promises.mkdir(targetDirectory, { recursive: true });
132
- await fs.promises.copyFile(source, target);
133
- await fs.promises.chmod(target, 0o777);
134
- }
135
- }
136
- exports.NativeWebpackPlugin = NativeWebpackPlugin;
137
- function resolveModulePath(module, issuer) {
138
- const modulePath = resolvePackagePath(module, issuer);
139
- if (!modulePath) {
140
- throw new Error('Could not resolve path of module: ' + module);
141
- }
142
- return path.resolve(modulePath, '..');
143
- }
144
- function findNativeWatcherFile(issuer) {
145
- let name = `@parcel/watcher-${process.platform}-${process.arch}`;
146
- if (process.platform === 'linux') {
147
- const { MUSL, family } = require('detect-libc');
148
- if (family === MUSL) {
149
- name += '-musl';
150
- }
151
- else {
152
- name += '-glibc';
153
- }
154
- }
155
- return require.resolve(name, {
156
- paths: [issuer]
157
- });
158
- }
159
- async function buildFile(root, name, content) {
160
- const tmpFile = path.join(root, name);
161
- let write = true;
162
- try {
163
- const existing = await fs.promises.readFile(tmpFile, 'utf8');
164
- if (existing === content) {
165
- // prevent writing the same content again
166
- // this would trigger the watch mode repeatedly
167
- write = false;
168
- }
169
- }
170
- catch {
171
- // ignore
172
- }
173
- if (write) {
174
- await fs.promises.writeFile(tmpFile, content);
175
- }
176
- return tmpFile;
177
- }
178
- const ripgrepReplacement = (nativePath = '.') => `
179
- export const rgPath = require('path').join(__dirname, \`./${nativePath}/rg\${process.platform === 'win32' ? '.exe' : ''}\`);
180
- `;
181
- const bindingsReplacement = (issuer, entries) => {
182
- const cases = [];
183
- for (const [module, node] of entries) {
184
- const modulePath = require.resolve(node, {
185
- paths: [issuer]
186
- });
187
- cases.push(`${' '.repeat(8)}case '${module}': return require('${modulePath.replace(/\\/g, '/')}');`);
188
- }
189
- return `
190
- module.exports = function (jsModule) {
191
- switch (jsModule) {
192
- ${cases.join(os.EOL)}
193
- }
194
- throw new Error(\`unhandled module: "\${jsModule}"\`);
195
- }`.trim();
196
- };
197
- //# sourceMappingURL=webpack-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-plugin.js","sourceRoot":"","sources":["../src/webpack-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2023 TypeFox and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
-
17
- import * as webpack from 'webpack';
18
-
19
- export class MonacoWebpackPlugin {
20
- apply(compiler: webpack.Compiler): void {
21
- compiler.hooks.contextModuleFactory.tap('MonacoBuildPlugin', cmf => {
22
- cmf.hooks.contextModuleFiles.tap('MonacoBuildPlugin', files => files.filter(file => !file.endsWith('.d.ts')));
23
- });
24
- }
25
- }
@@ -1,221 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2023 TypeFox and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
-
17
- import * as path from 'path';
18
- import * as fs from 'fs';
19
- import * as os from 'os';
20
- import resolvePackagePath = require('resolve-package-path');
21
-
22
- import type { Compiler } from 'webpack';
23
-
24
- const REQUIRE_RIPGREP = '@vscode/ripgrep';
25
- const REQUIRE_BINDINGS = 'bindings';
26
- const REQUIRE_PARCEL_WATCHER = './build/Release/watcher.node';
27
-
28
- export interface NativeWebpackPluginOptions {
29
- out: string;
30
- trash: boolean;
31
- ripgrep: boolean;
32
- pty: boolean;
33
- replacements?: Record<string, string>;
34
- nativeBindings?: Record<string, string>;
35
- }
36
-
37
- export class NativeWebpackPlugin {
38
-
39
- private bindings = new Map<string, string>();
40
- private options: NativeWebpackPluginOptions;
41
-
42
- constructor(options: NativeWebpackPluginOptions) {
43
- this.options = options;
44
- for (const [name, value] of Object.entries(options.nativeBindings ?? {})) {
45
- this.nativeBinding(name, value);
46
- }
47
- }
48
-
49
- nativeBinding(dependency: string, nodePath: string): void {
50
- this.bindings.set(dependency, nodePath);
51
- }
52
-
53
- apply(compiler: Compiler): void {
54
- let replacements: Record<string, (issuer: string) => Promise<string>> = {};
55
- let nodePtyIssuer: string | undefined;
56
- let trashHelperIssuer: string | undefined;
57
- let ripgrepIssuer: string | undefined;
58
- compiler.hooks.initialize.tap(NativeWebpackPlugin.name, async () => {
59
- const directory = path.resolve(compiler.outputPath, 'native-webpack-plugin');
60
- await fs.promises.mkdir(directory, { recursive: true });
61
- const bindingsFile = (issuer: string) => buildFile(directory, 'bindings.js', bindingsReplacement(issuer, Array.from(this.bindings.entries())));
62
- const ripgrepFile = () => buildFile(directory, 'ripgrep.js', ripgrepReplacement(this.options.out));
63
- replacements = {
64
- ...(this.options.replacements ?? {}),
65
- [REQUIRE_RIPGREP]: ripgrepFile,
66
- [REQUIRE_BINDINGS]: bindingsFile,
67
- [REQUIRE_PARCEL_WATCHER]: issuer => Promise.resolve(findNativeWatcherFile(issuer))
68
- };
69
- });
70
- compiler.hooks.normalModuleFactory.tap(
71
- NativeWebpackPlugin.name,
72
- nmf => {
73
- nmf.hooks.beforeResolve.tapPromise(NativeWebpackPlugin.name, async result => {
74
- if (result.request === REQUIRE_RIPGREP) {
75
- ripgrepIssuer = result.contextInfo.issuer;
76
- } else if (result.request === 'node-pty') {
77
- nodePtyIssuer = result.contextInfo.issuer;
78
- } else if (result.request === 'trash') {
79
- trashHelperIssuer = result.contextInfo.issuer;
80
- }
81
- for (const [file, replacement] of Object.entries(replacements)) {
82
- if (result.request === file) {
83
- result.request = await replacement(result.contextInfo.issuer);
84
- }
85
- }
86
- });
87
- }
88
- );
89
- compiler.hooks.afterEmit.tapPromise(NativeWebpackPlugin.name, async () => {
90
- if (this.options.trash && trashHelperIssuer) {
91
- await this.copyTrashHelper(trashHelperIssuer, compiler);
92
- }
93
- if (this.options.ripgrep && ripgrepIssuer) {
94
- await this.copyRipgrep(ripgrepIssuer, compiler);
95
- }
96
- if (this.options.pty && nodePtyIssuer) {
97
- await this.copyNodePtyNativeDeps(nodePtyIssuer, compiler);
98
- }
99
- });
100
- }
101
-
102
- protected async copyRipgrep(issuer: string, compiler: Compiler): Promise<void> {
103
- const fileName = process.platform === 'win32' ? 'rg.exe' : 'rg';
104
- const platformPkg = `@vscode/ripgrep-${process.platform}-${process.arch}`;
105
- const sourceFile = path.join(resolveModulePath(platformPkg, issuer), 'bin', fileName);
106
- const targetFile = path.join(compiler.outputPath, this.options.out, fileName);
107
- await this.copyExecutable(sourceFile, targetFile);
108
- }
109
-
110
- protected async copyNodePtyNativeDeps(issuer: string, compiler: Compiler): Promise<void> {
111
- const dist = `${process.platform}-${process.arch}`;
112
- const src = `node-pty/prebuilds/${dist}`;
113
- const targetDirectory = path.resolve(compiler.outputPath, '..', 'prebuilds', dist);
114
-
115
- const copyFile = async (source: string): Promise<void> => {
116
- const file = require.resolve(`${src}/${source}`, { paths: [issuer] });
117
- const targetFile = path.join(targetDirectory, source);
118
- await this.copyExecutable(file, targetFile);
119
- };
120
-
121
- if (process.platform === 'win32') {
122
- await copyFile('conpty.node');
123
- await copyFile('conpty_console_list.node');
124
- await copyFile('conpty/conpty.dll');
125
- await copyFile('conpty/OpenConsole.exe');
126
- } else if (process.platform === 'darwin') {
127
- await copyFile('spawn-helper');
128
- }
129
- // On non-windows platforms
130
- if (process.platform !== 'win32') {
131
- await copyFile('pty.node');
132
- }
133
- }
134
-
135
- protected async copyTrashHelper(issuer: string, compiler: Compiler): Promise<void> {
136
- let sourceFile: string | undefined;
137
- let targetFile: string | undefined;
138
- if (process.platform === 'win32') {
139
- sourceFile = require.resolve('trash/lib/windows-trash.exe', { paths: [issuer] });
140
- targetFile = path.join(compiler.outputPath, 'windows-trash.exe');
141
- } else if (process.platform === 'darwin') {
142
- sourceFile = require.resolve('trash/lib/macos-trash', { paths: [issuer] });
143
- targetFile = path.join(compiler.outputPath, 'macos-trash');
144
- }
145
- if (sourceFile && targetFile) {
146
- await this.copyExecutable(sourceFile, targetFile);
147
- }
148
- }
149
-
150
- protected async copyExecutable(source: string, target: string): Promise<void> {
151
- const targetDirectory = path.dirname(target);
152
- await fs.promises.mkdir(targetDirectory, { recursive: true });
153
- await fs.promises.copyFile(source, target);
154
- await fs.promises.chmod(target, 0o777);
155
- }
156
- }
157
-
158
- function resolveModulePath(module: string, issuer: string): string {
159
- const modulePath = resolvePackagePath(module, issuer);
160
- if (!modulePath) {
161
- throw new Error('Could not resolve path of module: ' + module);
162
- }
163
- return path.resolve(modulePath, '..');
164
- }
165
-
166
- function findNativeWatcherFile(issuer: string): string {
167
- let name = `@parcel/watcher-${process.platform}-${process.arch}`;
168
- if (process.platform === 'linux') {
169
- const { MUSL, family } = require('detect-libc');
170
- if (family === MUSL) {
171
- name += '-musl';
172
- } else {
173
- name += '-glibc';
174
- }
175
- }
176
- return require.resolve(name, {
177
- paths: [issuer]
178
- });
179
- }
180
-
181
- async function buildFile(root: string, name: string, content: string): Promise<string> {
182
- const tmpFile = path.join(root, name);
183
- let write = true;
184
- try {
185
- const existing = await fs.promises.readFile(tmpFile, 'utf8');
186
- if (existing === content) {
187
- // prevent writing the same content again
188
- // this would trigger the watch mode repeatedly
189
- write = false;
190
- }
191
- } catch {
192
- // ignore
193
- }
194
- if (write) {
195
- await fs.promises.writeFile(tmpFile, content);
196
- }
197
- return tmpFile;
198
- }
199
-
200
- const ripgrepReplacement = (nativePath: string = '.'): string => `
201
- export const rgPath = require('path').join(__dirname, \`./${nativePath}/rg\${process.platform === 'win32' ? '.exe' : ''}\`);
202
- `;
203
-
204
- const bindingsReplacement = (issuer: string, entries: [string, string][]): string => {
205
- const cases: string[] = [];
206
-
207
- for (const [module, node] of entries) {
208
- const modulePath = require.resolve(node, {
209
- paths: [issuer]
210
- });
211
- cases.push(`${' '.repeat(8)}case '${module}': return require('${modulePath.replace(/\\/g, '/')}');`);
212
- }
213
-
214
- return `
215
- module.exports = function (jsModule) {
216
- switch (jsModule) {
217
- ${cases.join(os.EOL)}
218
- }
219
- throw new Error(\`unhandled module: "\${jsModule}"\`);
220
- }`.trim();
221
- };