@ms-cloudpack/bundler-webpack 0.2.24 → 0.2.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getWebpackConfiguration.d.ts","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IACN,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAC3C,OAAO,EAAE,aAAa,GACrB,aAAa,CAqLf"}
1
+ {"version":3,"file":"getWebpackConfiguration.d.ts","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IACN,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAC3C,OAAO,EAAE,aAAa,GACrB,aAAa,CAsMf"}
@@ -1,10 +1,14 @@
1
1
  import { getModuleSearchPaths, getSwcConfig, shouldExternalizePackage } from '@ms-cloudpack/bundler-utilities';
2
+ import { isBuiltin } from 'module';
2
3
  import ResolveTypescriptPlugin from 'resolve-typescript-plugin';
3
4
  import { merge } from 'webpack-merge';
4
5
  export function getWebpackConfiguration(params, context) {
5
6
  const { options, outputPath, newEntries } = params;
7
+ const { targetEnvironment } = options;
6
8
  const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};
7
- const isLibraryMode = context.config.mode === 'library';
9
+ const outputScriptExtension = targetEnvironment === 'node' ? 'mjs' : 'js';
10
+ // Currently, targetEnvironment: node forces production mode since we don't have Node import map support
11
+ const isLibraryMode = context.config.mode === 'library' && options.targetEnvironment !== 'node';
8
12
  const swcConfig = getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap });
9
13
  const config = {
10
14
  mode: options.minify ? 'production' : 'development',
@@ -25,23 +29,36 @@ export function getWebpackConfiguration(params, context) {
25
29
  ...getModuleSearchPaths(['swc-loader', 'css-loader', 'style-loader', 'sass-loader', 'worker-loader'], import.meta.url),
26
30
  ],
27
31
  },
28
- externals: isLibraryMode
29
- ? (data, callback) => {
32
+ externals:
33
+ // In production mode for browser bundles, we don't externalize anything.
34
+ !isLibraryMode && targetEnvironment === 'browser'
35
+ ? undefined
36
+ : (data, callback) => {
30
37
  const { request } = data;
31
- if (request &&
32
- !request.includes('!') && // webpack loader
33
- shouldExternalizePackage({
34
- id: request,
35
- inlined: options.inlined,
36
- external: options.external,
37
- shouldInlineNodeBuiltins: false,
38
- })) {
38
+ // ! is a webpack loader prefix.
39
+ if (!request || request.includes('!')) {
40
+ return callback();
41
+ }
42
+ if (targetEnvironment === 'node') {
43
+ if (isBuiltin(request)) {
44
+ // It appears that with webpack `target: 'node'`, this must be manually added to built-ins
45
+ // (the setting `externalsType: 'module-import'` isn't respected).
46
+ // Otherwise webpack will load them with require...
47
+ return callback(undefined, `module-import ${request}`);
48
+ }
49
+ return callback();
50
+ }
51
+ if (shouldExternalizePackage({
52
+ id: request,
53
+ inlined: options.inlined,
54
+ external: options.external,
55
+ shouldInlineNodeBuiltins: false,
56
+ })) {
39
57
  return callback(undefined, request);
40
58
  }
41
59
  callback();
42
- }
43
- : undefined,
44
- target: ['web', 'es2020'],
60
+ },
61
+ target: [targetEnvironment === 'node' ? 'node18' : 'web', 'es2022'],
45
62
  module: {
46
63
  rules: [
47
64
  {
@@ -133,8 +150,8 @@ export function getWebpackConfiguration(params, context) {
133
150
  chunkLoading: 'import',
134
151
  path: outputPath,
135
152
  module: true,
136
- filename: '[name].js',
137
- chunkFilename: '[id].chunk.js',
153
+ filename: `[name].${outputScriptExtension}`,
154
+ chunkFilename: `[id].chunk.${outputScriptExtension}`,
138
155
  },
139
156
  experiments: {
140
157
  outputModule: true,
@@ -151,7 +168,7 @@ export function getWebpackConfiguration(params, context) {
151
168
  // exports and generate more efficient code.
152
169
  usedExports: !isLibraryMode,
153
170
  chunks: 'all',
154
- filename: '[id].chunk.js',
171
+ filename: `[id].chunk.${outputScriptExtension}`,
155
172
  // Production chunks should be at least 1000 bytes to prevent large numbers of file requests
156
173
  minSize: isLibraryMode ? 0 : 1000,
157
174
  cacheGroups: {
@@ -1 +1 @@
1
- {"version":3,"file":"getWebpackConfiguration.js","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { getModuleSearchPaths, getSwcConfig, shouldExternalizePackage } from '@ms-cloudpack/bundler-utilities';\nimport type { BundleContext, BundleOptions } from '@ms-cloudpack/common-types';\nimport type { WriteESMStubsResult } from '@ms-cloudpack/esm-stub-utilities';\nimport ResolveTypescriptPlugin from 'resolve-typescript-plugin';\nimport type { Configuration } from 'webpack';\nimport { merge } from 'webpack-merge';\n\nexport function getWebpackConfiguration(\n params: {\n options: Omit<BundleOptions, 'entries' | 'outputPath'>;\n outputPath: string;\n } & Pick<WriteESMStubsResult, 'newEntries'>,\n context: BundleContext,\n): Configuration {\n const { options, outputPath, newEntries } = params;\n const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};\n\n const isLibraryMode = context.config.mode === 'library';\n\n const swcConfig = getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap });\n\n const config: Configuration = {\n mode: options.minify ? 'production' : 'development',\n // Webpack (at least older versions) expects entry keys without a leading `./`.\n // (The leading `./` seems to be okay with the latest version, but in older versions, it appears\n // to cause the runtime chunk runtime.js to be generated with an incorrect relative path?)\n entry: Object.fromEntries(Object.entries(newEntries).map(([key, value]) => [key.replace(/^\\.\\//, ''), value])),\n context: options.inputPath,\n resolve: {\n plugins: [new ResolveTypescriptPlugin()],\n extensions: ['.tsx', '.ts', '.js', '.jsx', '.json'],\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(\n ['swc-loader', 'css-loader', 'style-loader', 'sass-loader', 'worker-loader'],\n import.meta.url,\n ),\n ],\n },\n externals: isLibraryMode\n ? (data, callback) => {\n const { request } = data;\n\n if (\n request &&\n !request.includes('!') && // webpack loader\n shouldExternalizePackage({\n id: request,\n inlined: options.inlined,\n external: options.external,\n shouldInlineNodeBuiltins: false,\n })\n ) {\n return callback(undefined, request);\n }\n\n callback();\n }\n : undefined,\n target: ['web', 'es2020'],\n module: {\n rules: [\n {\n oneOf: [\n // Rule for global CSS files\n {\n test: /\\.global\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: {\n localIdentName: '[local]', // Use the local name for global CSS\n },\n },\n },\n ],\n },\n // Rule for CSS Modules files\n {\n test: /\\.module\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: true, // Enable CSS Modules\n },\n },\n ],\n },\n // Rule for regular CSS files\n {\n test: /\\.css$/,\n exclude: /\\.module\\.css$/, // Exclude CSS Modules files\n use: [\n 'style-loader',\n 'css-loader', // Use css-loader without CSS Modules for regular CSS\n ],\n },\n ],\n },\n {\n test: /\\.json$/,\n type: 'json',\n sideEffects: false,\n },\n {\n test: /\\.ejs$/,\n loader: 'ejs-loader',\n options: {\n variable: 'data',\n esModule: true,\n },\n resolve: {\n fullySpecified: false,\n },\n },\n {\n // transform internal jsx files\n test: /\\.[cm]?jsx$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.jsx,\n },\n {\n // transform internal ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.tsx,\n },\n {\n test: /\\.s[ac]ss$/i,\n use: ['style-loader', 'css-loader', 'sass-loader'],\n },\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-loader' },\n },\n ],\n },\n output: {\n library: {\n type: 'module',\n },\n chunkFormat: 'module',\n chunkLoading: 'import',\n path: outputPath,\n module: true,\n filename: '[name].js',\n chunkFilename: '[id].chunk.js',\n },\n experiments: {\n outputModule: true,\n },\n devtool: options.sourcemap ? (isLibraryMode ? 'cheap-module-source-map' : 'source-map') : false,\n optimization: {\n runtimeChunk: 'single',\n minimize: options.minify,\n mangleExports: false,\n splitChunks: {\n // Prevents exposing path info when creating names for parts splitted by maxSize.\n hidePathInfo: true,\n\n // Figure out which exports are used by modules to mangle export names, omit unused\n // exports and generate more efficient code.\n usedExports: !isLibraryMode,\n\n chunks: 'all',\n\n filename: '[id].chunk.js',\n\n // Production chunks should be at least 1000 bytes to prevent large numbers of file requests\n minSize: isLibraryMode ? 0 : 1000,\n\n cacheGroups: {\n defaultVendors: false,\n },\n },\n },\n };\n\n if (Object.keys(bundlerOptions).length) {\n return merge(config, bundlerOptions);\n }\n\n return config;\n}\n"]}
1
+ {"version":3,"file":"getWebpackConfiguration.js","sourceRoot":"","sources":["../src/getWebpackConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import { getModuleSearchPaths, getSwcConfig, shouldExternalizePackage } from '@ms-cloudpack/bundler-utilities';\nimport type { BundleContext, BundleOptions } from '@ms-cloudpack/common-types';\nimport type { WriteESMStubsResult } from '@ms-cloudpack/esm-stub-utilities';\nimport { isBuiltin } from 'module';\nimport ResolveTypescriptPlugin from 'resolve-typescript-plugin';\nimport type { Configuration } from 'webpack';\nimport { merge } from 'webpack-merge';\n\nexport function getWebpackConfiguration(\n params: {\n options: Omit<BundleOptions, 'entries' | 'outputPath'>;\n outputPath: string;\n } & Pick<WriteESMStubsResult, 'newEntries'>,\n context: BundleContext,\n): Configuration {\n const { options, outputPath, newEntries } = params;\n const { targetEnvironment } = options;\n const { unsafeDisableInlineSvg: _, ...bundlerOptions } = options.bundlerOptions || {};\n const outputScriptExtension = targetEnvironment === 'node' ? 'mjs' : 'js';\n\n // Currently, targetEnvironment: node forces production mode since we don't have Node import map support\n const isLibraryMode = context.config.mode === 'library' && options.targetEnvironment !== 'node';\n\n const swcConfig = getSwcConfig({ packagePath: options.inputPath, sourcemap: options.sourcemap });\n\n const config: Configuration = {\n mode: options.minify ? 'production' : 'development',\n // Webpack (at least older versions) expects entry keys without a leading `./`.\n // (The leading `./` seems to be okay with the latest version, but in older versions, it appears\n // to cause the runtime chunk runtime.js to be generated with an incorrect relative path?)\n entry: Object.fromEntries(Object.entries(newEntries).map(([key, value]) => [key.replace(/^\\.\\//, ''), value])),\n context: options.inputPath,\n resolve: {\n plugins: [new ResolveTypescriptPlugin()],\n extensions: ['.tsx', '.ts', '.js', '.jsx', '.json'],\n },\n resolveLoader: {\n modules: [\n // Resolve loaders from the package's node_modules\n 'node_modules',\n\n // Cloudpack provided loaders\n ...getModuleSearchPaths(\n ['swc-loader', 'css-loader', 'style-loader', 'sass-loader', 'worker-loader'],\n import.meta.url,\n ),\n ],\n },\n externals:\n // In production mode for browser bundles, we don't externalize anything.\n !isLibraryMode && targetEnvironment === 'browser'\n ? undefined\n : (data, callback) => {\n const { request } = data;\n // ! is a webpack loader prefix.\n if (!request || request.includes('!')) {\n return callback();\n }\n\n if (targetEnvironment === 'node') {\n if (isBuiltin(request)) {\n // It appears that with webpack `target: 'node'`, this must be manually added to built-ins\n // (the setting `externalsType: 'module-import'` isn't respected).\n // Otherwise webpack will load them with require...\n return callback(undefined, `module-import ${request}`);\n }\n return callback();\n }\n\n if (\n shouldExternalizePackage({\n id: request,\n inlined: options.inlined,\n external: options.external,\n shouldInlineNodeBuiltins: false,\n })\n ) {\n return callback(undefined, request);\n }\n\n callback();\n },\n target: [targetEnvironment === 'node' ? 'node18' : 'web', 'es2022'],\n module: {\n rules: [\n {\n oneOf: [\n // Rule for global CSS files\n {\n test: /\\.global\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: {\n localIdentName: '[local]', // Use the local name for global CSS\n },\n },\n },\n ],\n },\n // Rule for CSS Modules files\n {\n test: /\\.module\\.css$/,\n use: [\n 'style-loader',\n {\n loader: 'css-loader',\n options: {\n modules: true, // Enable CSS Modules\n },\n },\n ],\n },\n // Rule for regular CSS files\n {\n test: /\\.css$/,\n exclude: /\\.module\\.css$/, // Exclude CSS Modules files\n use: [\n 'style-loader',\n 'css-loader', // Use css-loader without CSS Modules for regular CSS\n ],\n },\n ],\n },\n {\n test: /\\.json$/,\n type: 'json',\n sideEffects: false,\n },\n {\n test: /\\.ejs$/,\n loader: 'ejs-loader',\n options: {\n variable: 'data',\n esModule: true,\n },\n resolve: {\n fullySpecified: false,\n },\n },\n {\n // transform internal jsx files\n test: /\\.[cm]?jsx$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.jsx,\n },\n {\n // transform internal ts files\n test: /\\.[cm]?tsx?$/,\n loader: 'swc-loader',\n exclude: /(node_modules)/,\n options: swcConfig.tsx,\n },\n {\n test: /\\.s[ac]ss$/i,\n use: ['style-loader', 'css-loader', 'sass-loader'],\n },\n {\n test: /\\.worker\\.js$/,\n use: { loader: 'worker-loader' },\n },\n ],\n },\n output: {\n library: {\n type: 'module',\n },\n chunkFormat: 'module',\n chunkLoading: 'import',\n path: outputPath,\n module: true,\n filename: `[name].${outputScriptExtension}`,\n chunkFilename: `[id].chunk.${outputScriptExtension}`,\n },\n experiments: {\n outputModule: true,\n },\n devtool: options.sourcemap ? (isLibraryMode ? 'cheap-module-source-map' : 'source-map') : false,\n optimization: {\n runtimeChunk: 'single',\n minimize: options.minify,\n mangleExports: false,\n splitChunks: {\n // Prevents exposing path info when creating names for parts splitted by maxSize.\n hidePathInfo: true,\n\n // Figure out which exports are used by modules to mangle export names, omit unused\n // exports and generate more efficient code.\n usedExports: !isLibraryMode,\n\n chunks: 'all',\n\n filename: `[id].chunk.${outputScriptExtension}`,\n\n // Production chunks should be at least 1000 bytes to prevent large numbers of file requests\n minSize: isLibraryMode ? 0 : 1000,\n\n cacheGroups: {\n defaultVendors: false,\n },\n },\n },\n };\n\n if (Object.keys(bundlerOptions).length) {\n return merge(config, bundlerOptions);\n }\n\n return config;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeWebpackOutput.d.ts","sourceRoot":"","sources":["../src/normalizeWebpackOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,aAAa,EAAoB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhH,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AAEhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC;IACtD,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,GAAG,aAAa,CAsDhB"}
1
+ {"version":3,"file":"normalizeWebpackOutput.d.ts","sourceRoot":"","sources":["../src/normalizeWebpackOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,aAAa,EAAoB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAIhH,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AAIhE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,CAAC;IACtD,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,GAAG,aAAa,CAsDhB"}
@@ -1,6 +1,7 @@
1
1
  import { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';
2
2
  import { normalizedPathRelativeTo } from '@ms-cloudpack/path-utilities';
3
3
  import path from 'path';
4
+ const outExtRegex = /\.m?js$/;
4
5
  export function normalizeWebpackOutput(params) {
5
6
  const { config, options: { entries, inputPath }, outputPath, stats, } = params;
6
7
  // Process the errors and warnings from the stats json.
@@ -13,8 +14,8 @@ export function normalizeWebpackOutput(params) {
13
14
  outputPath: normalizeRelativePath(asset),
14
15
  };
15
16
  // Webpack doesn't include entry point info in the output, so add manually if applicable
16
- if (outFile.outputPath.endsWith('.js')) {
17
- const entryPoint = entries[outFile.outputPath.replace(/\.js$/, '')];
17
+ if (outExtRegex.test(outFile.outputPath)) {
18
+ const entryPoint = entries[outFile.outputPath.replace(outExtRegex, '')];
18
19
  if (entryPoint) {
19
20
  outFile.entryPoint = entryPoint;
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeWebpackOutput.js","sourceRoot":"","sources":["../src/normalizeWebpackOutput.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BundleMessage, BundleOptions, BundleOutputFile, BundlerResult } from '@ms-cloudpack/common-types';\nimport { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { normalizedPathRelativeTo } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport type { Configuration, Stats, StatsError } from 'webpack';\n\nexport function normalizeWebpackOutput(params: {\n /** Webpack config */\n config: Configuration;\n /** Original options */\n options: Pick<BundleOptions, 'entries' | 'inputPath'>;\n /** Absolute output path */\n outputPath: string;\n /** Stats from webpack callback */\n stats: Stats | undefined;\n}): BundlerResult {\n const {\n config,\n options: { entries, inputPath },\n outputPath,\n stats,\n } = params;\n\n // Process the errors and warnings from the stats json.\n // This provides more straightforward access to file paths.\n const statsJson = stats?.toJson();\n\n return {\n outputPath,\n outputFiles: Object.keys(stats?.compilation?.assets || {}).map((asset): BundleOutputFile => {\n const outFile: BundleOutputFile = {\n outputPath: normalizeRelativePath(asset),\n };\n\n // Webpack doesn't include entry point info in the output, so add manually if applicable\n if (outFile.outputPath.endsWith('.js')) {\n const entryPoint = entries[outFile.outputPath.replace(/\\.js$/, '')];\n if (entryPoint) {\n outFile.entryPoint = entryPoint;\n }\n\n const [chunkName] = Object.entries(statsJson?.assetsByChunkName ?? {}).find(([_, value]) =>\n value.includes(asset),\n ) ?? [undefined];\n const relatedChunk = chunkName ? statsJson?.chunks?.find((chunk) => chunk.id === chunkName) : undefined;\n const relatedModule = relatedChunk?.modules?.find((module) => module.id === entryPoint);\n outFile.exports = relatedModule?.providedExports ?? undefined;\n\n for (const chunk of statsJson?.chunks || []) {\n // We don't have enough info to determine if a file is a worker\n if (!chunk.files || !chunk.modules || !chunk.files.includes(asset)) {\n continue;\n }\n\n // Check if the chunk has a worker\n if (chunk.modules.some(({ reasons = [] }) => reasons.some((reason) => reason.type === 'new Worker()'))) {\n // It is a worker!\n outFile.isWorker = true;\n }\n }\n }\n\n return outFile;\n }),\n errors: createBundleMessages(statsJson?.errors, inputPath),\n warnings: createBundleMessages(statsJson?.warnings, inputPath),\n rawInput: config as unknown as Record<string, unknown>,\n rawOutput: statsJson,\n };\n}\n\n/** Create BundleMessages from WebpackErrors */\nfunction createBundleMessages(webpackErrors: StatsError[] | undefined, inputPath: string): BundleMessage[] {\n return (webpackErrors || []).map((error) => {\n const bundleMessage: BundleMessage = {\n text: error.message,\n source: 'webpack',\n };\n\n const filePath = error.file || error.moduleName;\n\n if (filePath) {\n let [, line, col] = error?.loc?.match(/^(\\d+):(\\d+)/) || [];\n if (!line && error.stack?.includes('ModuleBuildError')) {\n // try to get the line/col from the message; it should be the first pair like that\n [, line, col] = error.message.match(/(\\d+):(\\d+)/) || [];\n }\n\n bundleMessage.location = {\n file: path.isAbsolute(filePath)\n ? normalizedPathRelativeTo(inputPath, filePath)\n : normalizeRelativePath(filePath),\n line: typeof line === 'string' ? Number(line) : undefined,\n column: typeof col === 'string' ? Number(col) : undefined,\n };\n }\n\n return bundleMessage;\n });\n}\n"]}
1
+ {"version":3,"file":"normalizeWebpackOutput.js","sourceRoot":"","sources":["../src/normalizeWebpackOutput.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BundleMessage, BundleOptions, BundleOutputFile, BundlerResult } from '@ms-cloudpack/common-types';\nimport { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { normalizedPathRelativeTo } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport type { Configuration, Stats, StatsError } from 'webpack';\n\nconst outExtRegex = /\\.m?js$/;\n\nexport function normalizeWebpackOutput(params: {\n /** Webpack config */\n config: Configuration;\n /** Original options */\n options: Pick<BundleOptions, 'entries' | 'inputPath'>;\n /** Absolute output path */\n outputPath: string;\n /** Stats from webpack callback */\n stats: Stats | undefined;\n}): BundlerResult {\n const {\n config,\n options: { entries, inputPath },\n outputPath,\n stats,\n } = params;\n\n // Process the errors and warnings from the stats json.\n // This provides more straightforward access to file paths.\n const statsJson = stats?.toJson();\n\n return {\n outputPath,\n outputFiles: Object.keys(stats?.compilation?.assets || {}).map((asset): BundleOutputFile => {\n const outFile: BundleOutputFile = {\n outputPath: normalizeRelativePath(asset),\n };\n\n // Webpack doesn't include entry point info in the output, so add manually if applicable\n if (outExtRegex.test(outFile.outputPath)) {\n const entryPoint = entries[outFile.outputPath.replace(outExtRegex, '')];\n if (entryPoint) {\n outFile.entryPoint = entryPoint;\n }\n\n const [chunkName] = Object.entries(statsJson?.assetsByChunkName ?? {}).find(([_, value]) =>\n value.includes(asset),\n ) ?? [undefined];\n const relatedChunk = chunkName ? statsJson?.chunks?.find((chunk) => chunk.id === chunkName) : undefined;\n const relatedModule = relatedChunk?.modules?.find((module) => module.id === entryPoint);\n outFile.exports = relatedModule?.providedExports ?? undefined;\n\n for (const chunk of statsJson?.chunks || []) {\n // We don't have enough info to determine if a file is a worker\n if (!chunk.files || !chunk.modules || !chunk.files.includes(asset)) {\n continue;\n }\n\n // Check if the chunk has a worker\n if (chunk.modules.some(({ reasons = [] }) => reasons.some((reason) => reason.type === 'new Worker()'))) {\n // It is a worker!\n outFile.isWorker = true;\n }\n }\n }\n\n return outFile;\n }),\n errors: createBundleMessages(statsJson?.errors, inputPath),\n warnings: createBundleMessages(statsJson?.warnings, inputPath),\n rawInput: config as unknown as Record<string, unknown>,\n rawOutput: statsJson,\n };\n}\n\n/** Create BundleMessages from WebpackErrors */\nfunction createBundleMessages(webpackErrors: StatsError[] | undefined, inputPath: string): BundleMessage[] {\n return (webpackErrors || []).map((error) => {\n const bundleMessage: BundleMessage = {\n text: error.message,\n source: 'webpack',\n };\n\n const filePath = error.file || error.moduleName;\n\n if (filePath) {\n let [, line, col] = error?.loc?.match(/^(\\d+):(\\d+)/) || [];\n if (!line && error.stack?.includes('ModuleBuildError')) {\n // try to get the line/col from the message; it should be the first pair like that\n [, line, col] = error.message.match(/(\\d+):(\\d+)/) || [];\n }\n\n bundleMessage.location = {\n file: path.isAbsolute(filePath)\n ? normalizedPathRelativeTo(inputPath, filePath)\n : normalizeRelativePath(filePath),\n line: typeof line === 'string' ? Number(line) : undefined,\n column: typeof col === 'string' ? Number(col) : undefined,\n };\n }\n\n return bundleMessage;\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webpackCapabilities.d.ts","sourceRoot":"","sources":["../src/webpackCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,mBAAmB,EAAE,wCAAwC,CAAC,aAAa,CA2BvF,CAAC"}
1
+ {"version":3,"file":"webpackCapabilities.d.ts","sourceRoot":"","sources":["../src/webpackCapabilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,mBAAmB,EAAE,wCAAwC,CAAC,aAAa,CAiCvF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { webExtensions } from '@ms-cloudpack/bundler-capabilities';
1
2
  export const webpackCapabilities = {
2
3
  'asset-inline': (config, options) => {
3
4
  // Remove the leading dot from the extensions
@@ -23,6 +24,12 @@ export const webpackCapabilities = {
23
24
  config.externals.unshift(options);
24
25
  return config;
25
26
  },
27
+ 'resolve-web-extensions': (config) => {
28
+ config.resolve ??= {};
29
+ config.resolve.extensions ??= [];
30
+ config.resolve.extensions.unshift(...webExtensions);
31
+ return config;
32
+ },
26
33
  // This is a placeholder for the density capability. It doesn't do anything in the bundler.
27
34
  // It's just a workaround for a post-bundle task. This will be replaced with 'plugins' in the future.
28
35
  density: (config) => config,
@@ -1 +1 @@
1
- {"version":3,"file":"webpackCapabilities.js","sourceRoot":"","sources":["../src/webpackCapabilities.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAA4D;IAC1F,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAClC,6CAA6C;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;YACtD,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACzB,qEAAqE;QACrE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,+DAA+D;QAC/D,qEAAqE;QACrE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2FAA2F;IAC3F,qGAAqG;IACrG,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;CAC5B,CAAC","sourcesContent":["import type { InternalBundlerCapabilityImplementations } from '@ms-cloudpack/common-types';\nimport type { Configuration } from 'webpack';\n\nexport const webpackCapabilities: InternalBundlerCapabilityImplementations<Configuration> = {\n 'asset-inline': (config, options) => {\n // Remove the leading dot from the extensions\n const extensions = options.extensions.map((ext) => (ext.startsWith('.') ? ext.slice(1) : ext));\n config.module ??= {};\n config.module.rules ??= [];\n config.module.rules.push({\n test: new RegExp(`\\\\.(${extensions.join('|')})$`, 'i'),\n type: 'asset/inline',\n });\n return config;\n },\n alias: (config, options) => {\n // Add aliases for externalized packages to the webpack configuration\n if (!config.externals) {\n config.externals = [];\n } else if (!Array.isArray(config.externals)) {\n config.externals = [config.externals];\n }\n // The aliased packaged must be the first element in the array,\n // so that it is resolved before all other packages are externalized.\n config.externals.unshift(options);\n return config;\n },\n // This is a placeholder for the density capability. It doesn't do anything in the bundler.\n // It's just a workaround for a post-bundle task. This will be replaced with 'plugins' in the future.\n density: (config) => config,\n};\n"]}
1
+ {"version":3,"file":"webpackCapabilities.js","sourceRoot":"","sources":["../src/webpackCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAInE,MAAM,CAAC,MAAM,mBAAmB,GAA4D;IAC1F,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAClC,6CAA6C;QAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;YACtD,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QACzB,qEAAqE;QACrE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,+DAA+D;QAC/D,qEAAqE;QACrE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,wBAAwB,EAAE,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2FAA2F;IAC3F,qGAAqG;IACrG,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;CAC5B,CAAC","sourcesContent":["import { webExtensions } from '@ms-cloudpack/bundler-capabilities';\nimport type { InternalBundlerCapabilityImplementations } from '@ms-cloudpack/common-types';\nimport type { Configuration } from 'webpack';\n\nexport const webpackCapabilities: InternalBundlerCapabilityImplementations<Configuration> = {\n 'asset-inline': (config, options) => {\n // Remove the leading dot from the extensions\n const extensions = options.extensions.map((ext) => (ext.startsWith('.') ? ext.slice(1) : ext));\n config.module ??= {};\n config.module.rules ??= [];\n config.module.rules.push({\n test: new RegExp(`\\\\.(${extensions.join('|')})$`, 'i'),\n type: 'asset/inline',\n });\n return config;\n },\n alias: (config, options) => {\n // Add aliases for externalized packages to the webpack configuration\n if (!config.externals) {\n config.externals = [];\n } else if (!Array.isArray(config.externals)) {\n config.externals = [config.externals];\n }\n // The aliased packaged must be the first element in the array,\n // so that it is resolved before all other packages are externalized.\n config.externals.unshift(options);\n return config;\n },\n 'resolve-web-extensions': (config) => {\n config.resolve ??= {};\n config.resolve.extensions ??= [];\n config.resolve.extensions.unshift(...webExtensions);\n return config;\n },\n // This is a placeholder for the density capability. It doesn't do anything in the bundler.\n // It's just a workaround for a post-bundle task. This will be replaced with 'plugins' in the future.\n density: (config) => config,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/bundler-webpack",
3
- "version": "0.2.24",
3
+ "version": "0.2.25",
4
4
  "description": "A cloudpack plugin for abstracting webpack.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,12 +14,12 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/bundler-capabilities": "^0.2.14",
18
- "@ms-cloudpack/bundler-utilities": "^0.2.3",
19
- "@ms-cloudpack/common-types": "^0.24.9",
20
- "@ms-cloudpack/esm-stub-utilities": "^0.14.10",
17
+ "@ms-cloudpack/bundler-capabilities": "^0.2.15",
18
+ "@ms-cloudpack/bundler-utilities": "^0.2.4",
19
+ "@ms-cloudpack/common-types": "^0.24.10",
20
+ "@ms-cloudpack/esm-stub-utilities": "^0.14.11",
21
21
  "@ms-cloudpack/path-string-parsing": "^1.2.6",
22
- "@ms-cloudpack/path-utilities": "^3.0.6",
22
+ "@ms-cloudpack/path-utilities": "^3.0.7",
23
23
  "@swc/core": "^1.3.0",
24
24
  "css-loader": "^6.0.0",
25
25
  "ejs-loader": "^0.5.0",