@ms-cloudpack/bundler-rollup 0.6.3 → 0.6.4

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.
Files changed (43) hide show
  1. package/NOTICE.txt +61 -0
  2. package/lib/getRollupPlugins.d.ts.map +1 -1
  3. package/lib/getRollupPlugins.js +7 -1
  4. package/lib/getRollupPlugins.js.map +1 -1
  5. package/lib/plugins/json/index.js +1 -1
  6. package/lib/plugins/json/index.js.map +1 -1
  7. package/lib/plugins/postcss/index.d.ts +3 -10
  8. package/lib/plugins/postcss/index.d.ts.map +1 -1
  9. package/lib/plugins/postcss/index.js +37 -48
  10. package/lib/plugins/postcss/index.js.map +1 -1
  11. package/lib/plugins/postcss/less-loader.d.ts +2 -8
  12. package/lib/plugins/postcss/less-loader.d.ts.map +1 -1
  13. package/lib/plugins/postcss/less-loader.js +8 -11
  14. package/lib/plugins/postcss/less-loader.js.map +1 -1
  15. package/lib/plugins/postcss/loaders.d.ts +15 -21
  16. package/lib/plugins/postcss/loaders.d.ts.map +1 -1
  17. package/lib/plugins/postcss/loaders.js +14 -34
  18. package/lib/plugins/postcss/loaders.js.map +1 -1
  19. package/lib/plugins/postcss/postcss-loader.d.ts +2 -9
  20. package/lib/plugins/postcss/postcss-loader.d.ts.map +1 -1
  21. package/lib/plugins/postcss/postcss-loader.js +30 -36
  22. package/lib/plugins/postcss/postcss-loader.js.map +1 -1
  23. package/lib/plugins/postcss/sass-loader.d.ts +5 -8
  24. package/lib/plugins/postcss/sass-loader.d.ts.map +1 -1
  25. package/lib/plugins/postcss/sass-loader.js +50 -52
  26. package/lib/plugins/postcss/sass-loader.js.map +1 -1
  27. package/lib/plugins/postcss/types.d.ts +96 -25
  28. package/lib/plugins/postcss/types.d.ts.map +1 -1
  29. package/lib/plugins/postcss/types.js +0 -1
  30. package/lib/plugins/postcss/types.js.map +1 -1
  31. package/lib/plugins/postcss/utils/load-module.d.ts +10 -4
  32. package/lib/plugins/postcss/utils/load-module.d.ts.map +1 -1
  33. package/lib/plugins/postcss/utils/load-module.js +10 -11
  34. package/lib/plugins/postcss/utils/load-module.js.map +1 -1
  35. package/lib/plugins/postcss/utils/normalize-path.d.ts +7 -2
  36. package/lib/plugins/postcss/utils/normalize-path.d.ts.map +1 -1
  37. package/lib/plugins/postcss/utils/normalize-path.js +12 -3
  38. package/lib/plugins/postcss/utils/normalize-path.js.map +1 -1
  39. package/package.json +4 -3
  40. package/lib/plugins/postcss/utils/humanlize-path.d.ts +0 -3
  41. package/lib/plugins/postcss/utils/humanlize-path.d.ts.map +0 -1
  42. package/lib/plugins/postcss/utils/humanlize-path.js +0 -7
  43. package/lib/plugins/postcss/utils/humanlize-path.js.map +0 -1
@@ -1,17 +1,17 @@
1
- /* eslint-disable */
2
- // @ts-nocheck
3
1
  import path from 'path';
4
- import postcssLoader from './postcss-loader.js';
5
- import sassLoader from './sass-loader.js';
6
- import lessLoader from './less-loader.js';
2
+ import { postcssLoader } from './postcss-loader.js';
3
+ import { sassLoader } from './sass-loader.js';
4
+ import { lessLoader } from './less-loader.js';
7
5
  const matchFile = (filepath, condition) => {
8
6
  if (typeof condition === 'function') {
9
7
  return condition(filepath);
10
8
  }
11
9
  return condition && condition.test(filepath);
12
10
  };
13
- export default class Loaders {
14
- constructor(options = {}) {
11
+ export class Loaders {
12
+ use;
13
+ loaders;
14
+ constructor(options) {
15
15
  this.use = options.use.map((rule) => {
16
16
  if (typeof rule === 'string') {
17
17
  return [rule];
@@ -53,36 +53,16 @@ export default class Loaders {
53
53
  }
54
54
  /**
55
55
  * Process the resource with loaders in serial
56
- * @param {object} resource
57
- * @param {string} resource.code
58
- * @param {any} resource.map
59
- * @param {object} context
60
- * @param {string} context.id The absolute path to resource
61
- * @param {boolean | 'inline'} context.sourceMap
62
- * @param {Set<string>} context.dependencies A set of dependencies to watch
63
- * @returns {{code: string, map?: any}}
64
56
  */
65
57
  async process({ code, map }, context) {
66
- const loaderFunctions = this.use
67
- .slice()
68
- .reverse()
69
- .map(([name, options]) => {
70
- const loader = this.getLoader(name);
71
- const loaderContext = {
72
- options: options || {},
73
- ...context,
74
- };
75
- return (v) => {
76
- if (loader.alwaysProcess || matchFile(loaderContext.id, loader.test)) {
77
- return loader.process.call(loaderContext, v);
78
- }
79
- // Otherwise directly return input value
80
- return v;
81
- };
82
- });
83
58
  let result = { code, map };
84
- for (const loaderFn of loaderFunctions) {
85
- result = await loaderFn(result);
59
+ for (let i = this.use.length - 1; i >= 0; i--) {
60
+ const [name, options = {}] = this.use[i];
61
+ const loader = this.getLoader(name);
62
+ const loaderContext = { options, ...context };
63
+ if (loader && (loader.alwaysProcess || matchFile(loaderContext.id, loader.test))) {
64
+ result = await loader.process.call(loaderContext, result);
65
+ }
86
66
  }
87
67
  return result;
88
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../src/plugins/postcss/loaders.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n// @ts-nocheck\nimport path from 'path';\nimport postcssLoader from './postcss-loader.js';\nimport sassLoader from './sass-loader.js';\nimport lessLoader from './less-loader.js';\n\nconst matchFile = (filepath, condition) => {\n if (typeof condition === 'function') {\n return condition(filepath);\n }\n\n return condition && condition.test(filepath);\n};\n\nexport default class Loaders {\n constructor(options = {}) {\n this.use = options.use.map((rule) => {\n if (typeof rule === 'string') {\n return [rule];\n }\n\n if (Array.isArray(rule)) {\n return rule;\n }\n\n throw new TypeError('The rule in `use` option must be string or Array!');\n });\n this.loaders = [];\n\n const extensions = options.extensions || ['.css', '.sss', '.pcss'];\n const customPostcssLoader = {\n ...postcssLoader,\n test: (filepath) => extensions.some((ext) => path.extname(filepath) === ext),\n };\n this.registerLoader(customPostcssLoader);\n this.registerLoader(sassLoader);\n this.registerLoader(lessLoader);\n if (options.loaders) {\n options.loaders.forEach((loader) => this.registerLoader(loader));\n }\n }\n\n registerLoader(loader) {\n const existing = this.getLoader(loader.name);\n if (existing) {\n this.removeLoader(loader.name);\n }\n\n this.loaders.push(loader);\n return this;\n }\n\n removeLoader(name) {\n this.loaders = this.loaders.filter((loader) => loader.name !== name);\n return this;\n }\n\n isSupported(filepath) {\n return this.loaders.some((loader) => {\n return matchFile(filepath, loader.test);\n });\n }\n\n /**\n * Process the resource with loaders in serial\n * @param {object} resource\n * @param {string} resource.code\n * @param {any} resource.map\n * @param {object} context\n * @param {string} context.id The absolute path to resource\n * @param {boolean | 'inline'} context.sourceMap\n * @param {Set<string>} context.dependencies A set of dependencies to watch\n * @returns {{code: string, map?: any}}\n */\n async process({ code, map }, context) {\n const loaderFunctions = this.use\n .slice()\n .reverse()\n .map(([name, options]) => {\n const loader = this.getLoader(name);\n const loaderContext = {\n options: options || {},\n ...context,\n };\n\n return (v) => {\n if (loader.alwaysProcess || matchFile(loaderContext.id, loader.test)) {\n return loader.process.call(loaderContext, v);\n }\n\n // Otherwise directly return input value\n return v;\n };\n });\n\n let result = { code, map };\n for (const loaderFn of loaderFunctions) {\n result = await loaderFn(result);\n }\n\n return result;\n }\n\n getLoader(name) {\n return this.loaders.find((loader) => loader.name === name);\n }\n}\n"]}
1
+ {"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../../src/plugins/postcss/loaders.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport type {\n BaseLoaderContext,\n InternalPostCSSLoaderOptions,\n Loader,\n LoaderContext,\n PostCSSPluginConf,\n Resource,\n ResourceResult,\n} from './types.js';\nimport { postcssLoader } from './postcss-loader.js';\nimport { sassLoader } from './sass-loader.js';\nimport { lessLoader } from './less-loader.js';\n\nexport type LoadersConstructorOptions = {\n [k in 'loaders' | 'extensions']: PostCSSPluginConf[k];\n} & {\n use: Extract<NonNullable<PostCSSPluginConf['use']>, unknown[]>;\n};\n\nconst matchFile = (filepath: string, condition: ((filepath: string) => boolean) | RegExp | undefined) => {\n if (typeof condition === 'function') {\n return condition(filepath);\n }\n\n return condition && condition.test(filepath);\n};\n\nexport class Loaders {\n private use: [string, object?][];\n private loaders: Loader<unknown>[];\n\n constructor(options: LoadersConstructorOptions) {\n this.use = options.use.map((rule) => {\n if (typeof rule === 'string') {\n return [rule];\n }\n\n if (Array.isArray(rule)) {\n return rule;\n }\n\n throw new TypeError('The rule in `use` option must be string or Array!');\n });\n this.loaders = [];\n\n const extensions = options.extensions || ['.css', '.sss', '.pcss'];\n const customPostcssLoader: Loader<InternalPostCSSLoaderOptions> = {\n ...postcssLoader,\n test: (filepath) => extensions.some((ext) => path.extname(filepath) === ext),\n };\n this.registerLoader(customPostcssLoader);\n this.registerLoader(sassLoader);\n this.registerLoader(lessLoader);\n if (options.loaders) {\n options.loaders.forEach((loader) => this.registerLoader(loader));\n }\n }\n\n registerLoader(loader: Loader<unknown>): this {\n const existing = this.getLoader(loader.name);\n if (existing) {\n this.removeLoader(loader.name);\n }\n\n this.loaders.push(loader);\n return this;\n }\n\n removeLoader(name: string): this {\n this.loaders = this.loaders.filter((loader) => loader.name !== name);\n return this;\n }\n\n isSupported(filepath: string): boolean {\n return this.loaders.some((loader) => {\n return matchFile(filepath, loader.test);\n });\n }\n\n /**\n * Process the resource with loaders in serial\n */\n async process({ code, map }: Resource, context: BaseLoaderContext): Promise<ResourceResult> {\n let result: ResourceResult = { code, map };\n\n for (let i = this.use.length - 1; i >= 0; i--) {\n const [name, options = {}] = this.use[i];\n const loader = this.getLoader(name);\n const loaderContext: LoaderContext<unknown> = { options, ...context };\n\n if (loader && (loader.alwaysProcess || matchFile(loaderContext.id, loader.test))) {\n result = await loader.process.call(loaderContext, result);\n }\n }\n\n return result;\n }\n\n getLoader(name: string): Loader<unknown> | undefined {\n return this.loaders.find((loader) => loader.name === name);\n }\n}\n"]}
@@ -1,10 +1,3 @@
1
- declare const _default: {
2
- name: string;
3
- alwaysProcess: boolean;
4
- process({ code, map }: {
5
- code: any;
6
- map: any;
7
- }): any;
8
- };
9
- export default _default;
1
+ import type { InternalPostCSSLoaderOptions, Loader } from './types.js';
2
+ export declare const postcssLoader: Loader<InternalPostCSSLoaderOptions>;
10
3
  //# sourceMappingURL=postcss-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postcss-loader.d.ts","sourceRoot":"","sources":["../../../src/plugins/postcss/postcss-loader.ts"],"names":[],"mappings":";;;;;;;;AA0CA,wBA6JE"}
1
+ {"version":3,"file":"postcss-loader.d.ts","sourceRoot":"","sources":["../../../src/plugins/postcss/postcss-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAiB,4BAA4B,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA2CtF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,4BAA4B,CAkJ9D,CAAC"}
@@ -1,29 +1,33 @@
1
- /* eslint-disable */
2
- // @ts-nocheck
3
1
  import { createRequire } from 'module';
4
2
  import postcss from 'postcss';
5
3
  import { identifier } from 'safe-identifier';
6
- import humanlizePath from './utils/humanlize-path.js';
7
- import normalizePath from './utils/normalize-path.js';
4
+ import { normalizePath } from './utils/normalize-path.js';
8
5
  const require = createRequire(import.meta.url);
9
6
  const styleInjectPath = require.resolve('style-inject/dist/style-inject.es').replace(/[\\/]+/g, '/');
7
+ // loadConfig helper removed
10
8
  /**
11
9
  * Escape CSS class name dashes for JavaScript identifiers
12
10
  */
13
- function escapeClassNameDashes(string) {
14
- return string.replace(/-+/g, (match) => {
11
+ function escapeClassNameDashes(str) {
12
+ return str.replace(/-+/g, (match) => {
15
13
  return `$${match.replace(/-/g, '_')}$`;
16
14
  });
17
15
  }
16
+ /**
17
+ * Ensure class name is a valid JavaScript identifier
18
+ */
18
19
  function ensureClassName(name) {
19
- name = escapeClassNameDashes(name);
20
- return identifier(name, false);
20
+ const escapedName = escapeClassNameDashes(name);
21
+ return identifier(escapedName, false);
21
22
  }
23
+ /**
24
+ * Ensure PostCSS option is properly loaded
25
+ */
22
26
  async function ensurePostCSSOption(option) {
23
27
  if (typeof option === 'string') {
24
28
  try {
25
29
  const resolvedPath = require.resolve(option);
26
- return await import(resolvedPath);
30
+ return (await import(resolvedPath));
27
31
  }
28
32
  catch {
29
33
  return option;
@@ -34,7 +38,7 @@ async function ensurePostCSSOption(option) {
34
38
  function isModuleFile(file) {
35
39
  return /\.module\.[a-z]{2,6}$/.test(file);
36
40
  }
37
- export default {
41
+ export const postcssLoader = {
38
42
  name: 'postcss',
39
43
  alwaysProcess: true,
40
44
  async process({ code, map }) {
@@ -52,10 +56,10 @@ export default {
52
56
  const isAutoModule = autoModules && isModuleFile(this.id);
53
57
  const supportModules = autoModules ? isAutoModule : options.modules;
54
58
  if (supportModules) {
55
- const postcssModules = await import('postcss-modules');
56
- plugins.unshift(postcssModules.default({
59
+ plugins.unshift((await import('postcss-modules')).default({
57
60
  // In tests
58
61
  // Skip hash in names since css content on windows and linux would differ because of `new line` (\r?\n)
62
+ // eslint-disable-next-line no-restricted-properties
59
63
  generateScopedName: process.env.ROLLUP_POSTCSS_TEST ? '[name]_[local]' : '[name]_[local]__[hash:base64:5]',
60
64
  ...options.modules,
61
65
  getJSON(filepath, json, outpath) {
@@ -68,36 +72,29 @@ export default {
68
72
  }
69
73
  // If shouldExtract, minimize is done after all CSS are extracted to a file
70
74
  if (!shouldExtract && options.minimize) {
71
- const cssnano = await import('cssnano');
72
- plugins.push(cssnano.default(options.minimize));
75
+ plugins.push((await import('cssnano')).default(options.minimize));
73
76
  }
74
77
  const postcssOptions = {
75
- ...this.options.postcss,
76
78
  // Allow overriding `to` for some plugins that are relying on this value
77
79
  to: options.to || this.id,
78
- // Followings are never modified by user config config
79
80
  from: this.id,
80
- map: this.sourceMap
81
- ? shouldExtract
82
- ? { inline: false, annotation: false }
83
- : { inline: true, annotation: false }
84
- : false,
81
+ map: this.sourceMap ? { inline: !shouldExtract, annotation: false } : false,
82
+ parser: await ensurePostCSSOption(options.postcss.parser),
83
+ syntax: await ensurePostCSSOption(options.postcss.syntax),
84
+ stringifier: await ensurePostCSSOption(options.postcss.stringifier),
85
+ // this was spread in before but doesn't appear to exist
86
+ // exec: options.postcss.exec,
85
87
  };
86
- delete postcssOptions.plugins;
87
- postcssOptions.parser = await ensurePostCSSOption(postcssOptions.parser);
88
- postcssOptions.syntax = await ensurePostCSSOption(postcssOptions.syntax);
89
- postcssOptions.stringifier = await ensurePostCSSOption(postcssOptions.stringifier);
90
- if (map && postcssOptions.map) {
88
+ if (map && typeof postcssOptions.map === 'object') {
91
89
  postcssOptions.map.prev = typeof map === 'string' ? JSON.parse(map) : map;
92
90
  }
93
91
  if (plugins.length === 0) {
94
92
  // Prevent from postcss warning:
95
93
  // You did not set any plugins, parser, or stringifier. Right now, PostCSS does nothing. Pick plugins for your case on https://www.postcss.parts/ and use them in postcss.config.js
96
- const noopPlugin = () => ({
94
+ plugins.push({
97
95
  postcssPlugin: 'postcss-noop-plugin',
98
96
  Once() { },
99
97
  });
100
- plugins.push(noopPlugin());
101
98
  }
102
99
  const result = await postcss(plugins).process(code, postcssOptions);
103
100
  for (const message of result.messages) {
@@ -106,13 +103,10 @@ export default {
106
103
  }
107
104
  }
108
105
  for (const warning of result.warnings()) {
109
- if (!warning.message) {
110
- warning.message = warning.text;
111
- }
112
- this.warn(warning);
106
+ this.warn({ message: warning.text, ...warning });
113
107
  }
114
108
  const outputMap = result.map && JSON.parse(result.map.toString());
115
- if (outputMap?.sources) {
109
+ if (outputMap && typeof outputMap === 'object' && 'sources' in outputMap) {
116
110
  outputMap.sources = outputMap.sources.map((v) => normalizePath(v));
117
111
  }
118
112
  let output = '';
@@ -126,7 +120,8 @@ export default {
126
120
  // But skip this when namedExports is a function
127
121
  // Since a user like you can manually log that if you want
128
122
  if (name !== newName && typeof options.namedExports !== 'function') {
129
- this.warn(`Exported "${name}" as "${newName}" in ${humanlizePath(this.id)}`);
123
+ // Logging this as an absolute path is better for our use case
124
+ this.warn(`Exported "${name}" as "${newName}" in ${this.id}`);
130
125
  }
131
126
  if (!json[newName]) {
132
127
  json[newName] = json[name];
@@ -154,8 +149,7 @@ export default {
154
149
  output +=
155
150
  typeof options.inject === 'function'
156
151
  ? options.inject(cssVariableName, this.id)
157
- : '\n' +
158
- `import styleInject from '${styleInjectPath}';\n` +
152
+ : `\nimport styleInject from '${styleInjectPath}';\n` +
159
153
  `styleInject(${cssVariableName}${Object.keys(options.inject).length > 0 ? `,${JSON.stringify(options.inject)}` : ''});`;
160
154
  }
161
155
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"postcss-loader.js","sourceRoot":"","sources":["../../../src/plugins/postcss/postcss-loader.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n// @ts-nocheck\nimport { createRequire } from 'module';\nimport postcss from 'postcss';\nimport { identifier } from 'safe-identifier';\nimport humanlizePath from './utils/humanlize-path.js';\nimport normalizePath from './utils/normalize-path.js';\n\nconst require = createRequire(import.meta.url);\n\nconst styleInjectPath = require.resolve('style-inject/dist/style-inject.es').replace(/[\\\\/]+/g, '/');\n\n/**\n * Escape CSS class name dashes for JavaScript identifiers\n */\nfunction escapeClassNameDashes(string) {\n return string.replace(/-+/g, (match) => {\n return `$${match.replace(/-/g, '_')}$`;\n });\n}\n\nfunction ensureClassName(name) {\n name = escapeClassNameDashes(name);\n return identifier(name, false);\n}\n\nasync function ensurePostCSSOption(option) {\n if (typeof option === 'string') {\n try {\n const resolvedPath = require.resolve(option);\n return await import(resolvedPath);\n } catch {\n return option;\n }\n }\n return option;\n}\n\nfunction isModuleFile(file) {\n return /\\.module\\.[a-z]{2,6}$/.test(file);\n}\n\nexport default {\n name: 'postcss',\n alwaysProcess: true,\n async process({ code, map }) {\n // This is modified to not load postcss config.\n if (this.options.config !== false) {\n throw new Error(\n 'This is a fork of rollup-plugin-postcss that does not support loading postcss config. ' +\n 'Please set `config: false` in the plugin options.',\n );\n }\n\n const { options } = this;\n const plugins = [...(options.postcss.plugins || [])];\n\n const shouldExtract = options.extract;\n const shouldInject = options.inject;\n\n const modulesExported = {};\n const autoModules = options.autoModules !== false && options.onlyModules !== true;\n const isAutoModule = autoModules && isModuleFile(this.id);\n const supportModules = autoModules ? isAutoModule : options.modules;\n\n if (supportModules) {\n const postcssModules = await import('postcss-modules');\n plugins.unshift(\n postcssModules.default({\n // In tests\n // Skip hash in names since css content on windows and linux would differ because of `new line` (\\r?\\n)\n generateScopedName: process.env.ROLLUP_POSTCSS_TEST ? '[name]_[local]' : '[name]_[local]__[hash:base64:5]',\n ...options.modules,\n getJSON(filepath, json, outpath) {\n modulesExported[filepath] = json;\n if (typeof options.modules === 'object' && typeof options.modules.getJSON === 'function') {\n return options.modules.getJSON(filepath, json, outpath);\n }\n },\n }),\n );\n }\n\n // If shouldExtract, minimize is done after all CSS are extracted to a file\n if (!shouldExtract && options.minimize) {\n const cssnano = await import('cssnano');\n plugins.push(cssnano.default(options.minimize));\n }\n\n const postcssOptions = {\n ...this.options.postcss,\n // Allow overriding `to` for some plugins that are relying on this value\n to: options.to || this.id,\n // Followings are never modified by user config config\n from: this.id,\n map: this.sourceMap\n ? shouldExtract\n ? { inline: false, annotation: false }\n : { inline: true, annotation: false }\n : false,\n };\n delete postcssOptions.plugins;\n\n postcssOptions.parser = await ensurePostCSSOption(postcssOptions.parser);\n postcssOptions.syntax = await ensurePostCSSOption(postcssOptions.syntax);\n postcssOptions.stringifier = await ensurePostCSSOption(postcssOptions.stringifier);\n\n if (map && postcssOptions.map) {\n postcssOptions.map.prev = typeof map === 'string' ? JSON.parse(map) : map;\n }\n\n if (plugins.length === 0) {\n // Prevent from postcss warning:\n // You did not set any plugins, parser, or stringifier. Right now, PostCSS does nothing. Pick plugins for your case on https://www.postcss.parts/ and use them in postcss.config.js\n const noopPlugin = () => ({\n postcssPlugin: 'postcss-noop-plugin',\n Once() {},\n });\n plugins.push(noopPlugin());\n }\n\n const result = await postcss(plugins).process(code, postcssOptions);\n\n for (const message of result.messages) {\n if (message.type === 'dependency') {\n this.dependencies.add(message.file);\n }\n }\n\n for (const warning of result.warnings()) {\n if (!warning.message) {\n warning.message = warning.text;\n }\n this.warn(warning);\n }\n\n const outputMap = result.map && JSON.parse(result.map.toString());\n if (outputMap?.sources) {\n outputMap.sources = outputMap.sources.map((v) => normalizePath(v));\n }\n\n let output = '';\n let extracted;\n\n if (options.namedExports) {\n const json = modulesExported[this.id];\n const getClassName = typeof options.namedExports === 'function' ? options.namedExports : ensureClassName;\n\n for (const name in json) {\n const newName = getClassName(name);\n // Log transformed class names\n // But skip this when namedExports is a function\n // Since a user like you can manually log that if you want\n if (name !== newName && typeof options.namedExports !== 'function') {\n this.warn(`Exported \"${name}\" as \"${newName}\" in ${humanlizePath(this.id)}`);\n }\n\n if (!json[newName]) {\n json[newName] = json[name];\n }\n\n output += `export var ${newName} = ${JSON.stringify(json[name])};\\n`;\n }\n }\n\n const cssVariableName = identifier('css', true);\n\n if (shouldExtract) {\n output += `export default ${JSON.stringify(modulesExported[this.id])};`;\n extracted = {\n id: this.id,\n code: result.css,\n map: outputMap,\n };\n } else {\n const module = supportModules ? JSON.stringify(modulesExported[this.id]) : cssVariableName;\n output +=\n `var ${cssVariableName} = ${JSON.stringify(result.css)};\\n` +\n `export default ${module};\\n` +\n `export var stylesheet=${JSON.stringify(result.css)};`;\n }\n\n if (!shouldExtract && shouldInject) {\n output +=\n typeof options.inject === 'function'\n ? options.inject(cssVariableName, this.id)\n : '\\n' +\n `import styleInject from '${styleInjectPath}';\\n` +\n `styleInject(${cssVariableName}${\n Object.keys(options.inject).length > 0 ? `,${JSON.stringify(options.inject)}` : ''\n });`;\n }\n\n return {\n code: output,\n map: outputMap,\n extracted,\n };\n },\n};\n"]}
1
+ {"version":3,"file":"postcss-loader.js","sourceRoot":"","sources":["../../../src/plugins/postcss/postcss-loader.ts"],"names":[],"mappings":"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","sourcesContent":["import { createRequire } from 'module';\nimport postcss from 'postcss';\nimport { identifier } from 'safe-identifier';\nimport { normalizePath } from './utils/normalize-path.js';\nimport type { ExtractResult, InternalPostCSSLoaderOptions, Loader } from './types.js';\n\nconst require = createRequire(import.meta.url);\nconst styleInjectPath = require.resolve('style-inject/dist/style-inject.es').replace(/[\\\\/]+/g, '/');\n\n// loadConfig helper removed\n\n/**\n * Escape CSS class name dashes for JavaScript identifiers\n */\nfunction escapeClassNameDashes(str: string) {\n return str.replace(/-+/g, (match) => {\n return `$${match.replace(/-/g, '_')}$`;\n });\n}\n\n/**\n * Ensure class name is a valid JavaScript identifier\n */\nfunction ensureClassName(name: string): string {\n const escapedName = escapeClassNameDashes(name);\n return identifier(escapedName, false);\n}\n\n/**\n * Ensure PostCSS option is properly loaded\n */\nasync function ensurePostCSSOption<T>(option: unknown): Promise<T | undefined> {\n if (typeof option === 'string') {\n try {\n const resolvedPath = require.resolve(option);\n return (await import(resolvedPath)) as T;\n } catch {\n return option as T;\n }\n }\n return option as T;\n}\n\nfunction isModuleFile(file: string): boolean {\n return /\\.module\\.[a-z]{2,6}$/.test(file);\n}\n\nexport const postcssLoader: Loader<InternalPostCSSLoaderOptions> = {\n name: 'postcss',\n alwaysProcess: true,\n\n async process({ code, map }) {\n // This is modified to not load postcss config.\n if (this.options.config !== false) {\n throw new Error(\n 'This is a fork of rollup-plugin-postcss that does not support loading postcss config. ' +\n 'Please set `config: false` in the plugin options.',\n );\n }\n\n const { options } = this;\n const plugins = [...(options.postcss.plugins || [])];\n const shouldExtract = options.extract;\n const shouldInject = options.inject;\n\n const modulesExported: Record<string, Record<string, string>> = {};\n const autoModules = options.autoModules !== false && options.onlyModules !== true;\n const isAutoModule = autoModules && isModuleFile(this.id);\n const supportModules = autoModules ? isAutoModule : options.modules;\n\n if (supportModules) {\n plugins.unshift(\n (await import('postcss-modules')).default({\n // In tests\n // Skip hash in names since css content on windows and linux would differ because of `new line` (\\r?\\n)\n // eslint-disable-next-line no-restricted-properties\n generateScopedName: process.env.ROLLUP_POSTCSS_TEST ? '[name]_[local]' : '[name]_[local]__[hash:base64:5]',\n ...options.modules,\n getJSON(filepath, json, outpath) {\n modulesExported[filepath] = json;\n if (typeof options.modules === 'object' && typeof options.modules.getJSON === 'function') {\n return options.modules.getJSON(filepath, json, outpath);\n }\n },\n }),\n );\n }\n\n // If shouldExtract, minimize is done after all CSS are extracted to a file\n if (!shouldExtract && options.minimize) {\n plugins.push((await import('cssnano')).default(options.minimize));\n }\n\n const postcssOptions: postcss.ProcessOptions = {\n // Allow overriding `to` for some plugins that are relying on this value\n to: options.to || this.id,\n from: this.id,\n map: this.sourceMap ? { inline: !shouldExtract, annotation: false } : false,\n parser: await ensurePostCSSOption(options.postcss.parser),\n syntax: await ensurePostCSSOption(options.postcss.syntax),\n stringifier: await ensurePostCSSOption(options.postcss.stringifier),\n // this was spread in before but doesn't appear to exist\n // exec: options.postcss.exec,\n };\n\n if (map && typeof postcssOptions.map === 'object') {\n postcssOptions.map.prev = typeof map === 'string' ? (JSON.parse(map) as object) : map;\n }\n\n if (plugins.length === 0) {\n // Prevent from postcss warning:\n // You did not set any plugins, parser, or stringifier. Right now, PostCSS does nothing. Pick plugins for your case on https://www.postcss.parts/ and use them in postcss.config.js\n plugins.push({\n postcssPlugin: 'postcss-noop-plugin',\n Once() {},\n });\n }\n\n const result = await postcss(plugins).process(code, postcssOptions);\n\n for (const message of result.messages) {\n if (message.type === 'dependency') {\n this.dependencies.add(message.file as string);\n }\n }\n\n for (const warning of result.warnings()) {\n this.warn({ message: warning.text, ...warning });\n }\n\n const outputMap = result.map && (JSON.parse(result.map.toString()) as ExtractResult['map']);\n if (outputMap && typeof outputMap === 'object' && 'sources' in outputMap) {\n outputMap.sources = outputMap.sources.map((v) => normalizePath(v));\n }\n\n let output = '';\n let extracted: ExtractResult | undefined;\n\n if (options.namedExports) {\n const json = modulesExported[this.id];\n const getClassName = typeof options.namedExports === 'function' ? options.namedExports : ensureClassName;\n\n for (const name in json) {\n const newName = getClassName(name);\n // Log transformed class names\n // But skip this when namedExports is a function\n // Since a user like you can manually log that if you want\n if (name !== newName && typeof options.namedExports !== 'function') {\n // Logging this as an absolute path is better for our use case\n this.warn(`Exported \"${name}\" as \"${newName}\" in ${this.id}`);\n }\n\n if (!json[newName]) {\n json[newName] = json[name];\n }\n\n output += `export var ${newName} = ${JSON.stringify(json[name])};\\n`;\n }\n }\n\n const cssVariableName = identifier('css', true);\n\n if (shouldExtract) {\n output += `export default ${JSON.stringify(modulesExported[this.id])};`;\n extracted = {\n id: this.id,\n code: result.css,\n map: outputMap,\n };\n } else {\n const module = supportModules ? JSON.stringify(modulesExported[this.id]) : cssVariableName;\n output +=\n `var ${cssVariableName} = ${JSON.stringify(result.css)};\\n` +\n `export default ${module};\\n` +\n `export var stylesheet=${JSON.stringify(result.css)};`;\n }\n\n if (!shouldExtract && shouldInject) {\n output +=\n typeof options.inject === 'function'\n ? options.inject(cssVariableName, this.id)\n : `\\nimport styleInject from '${styleInjectPath}';\\n` +\n `styleInject(${cssVariableName}${\n Object.keys(options.inject).length > 0 ? `,${JSON.stringify(options.inject)}` : ''\n });`;\n }\n\n return {\n code: output,\n map: outputMap,\n extracted,\n };\n },\n};\n"]}
@@ -1,9 +1,6 @@
1
- declare const _default: {
2
- name: string;
3
- test: RegExp;
4
- process({ code }: {
5
- code: any;
6
- }): Promise<unknown>;
7
- };
8
- export default _default;
1
+ import type { Loader } from './types.js';
2
+ import type * as Sass from 'sass';
3
+ type SassOptions = Sass.LegacyOptions<'async'>;
4
+ export declare const sassLoader: Loader<Partial<SassOptions>>;
5
+ export {};
9
6
  //# sourceMappingURL=sass-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sass-loader.d.ts","sourceRoot":"","sources":["../../../src/plugins/postcss/sass-loader.ts"],"names":[],"mappings":";;;;;;;AA0BA,wBAqEE"}
1
+ {"version":3,"file":"sass-loader.d.ts","sourceRoot":"","sources":["../../../src/plugins/postcss/sass-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAGlC,KAAK,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAoB/C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAoEnD,CAAC"}
@@ -1,5 +1,3 @@
1
- /* eslint-disable */
2
- // @ts-nocheck
3
1
  import path from 'path';
4
2
  import pify from 'pify';
5
3
  import resolvePackage from 'resolve';
@@ -7,7 +5,8 @@ import PQueue from 'p-queue';
7
5
  import { loadModule } from './utils/load-module.js';
8
6
  // This queue makes sure node-sass leaves one thread available for executing fs tasks
9
7
  // See: https://github.com/sass/node-sass/issues/857
10
- const threadPoolSize = process.env.UV_THREADPOOL_SIZE || 4;
8
+ // eslint-disable-next-line no-restricted-properties
9
+ const threadPoolSize = Number(process.env.UV_THREADPOOL_SIZE || 4);
11
10
  const workQueue = new PQueue({ concurrency: threadPoolSize - 1 });
12
11
  const moduleRe = /^~([a-z\d]|@).+/i;
13
12
  const getUrlOfPartial = (url) => {
@@ -17,59 +16,59 @@ const getUrlOfPartial = (url) => {
17
16
  const resolvePromise = pify(resolvePackage);
18
17
  // List of supported SASS modules in the order of preference
19
18
  const sassModuleIds = ['sass', 'node-sass'];
20
- /* eslint import/no-anonymous-default-export: [2, {"allowObject": true}] */
21
- export default {
19
+ export const sassLoader = {
22
20
  name: 'sass',
23
21
  test: /\.(sass|scss)$/,
24
22
  process({ code }) {
25
23
  return new Promise((resolve, reject) => {
26
24
  (async () => {
27
- const sassModule = await loadSassOrThrow();
25
+ const sassModule = await loadSassOrThrow(this.resolveCwd);
28
26
  // accessing sassModule.default logs an error in latest versions
29
- const sass = sassModule.render ? sassModule : sassModule.default;
27
+ const sass = 'render' in sassModule ? sassModule : sassModule.default;
28
+ // promisified type isn't being inferred properly
29
+ // eslint-disable-next-line etc/no-deprecated
30
30
  const render = pify(sass.render.bind(sass));
31
31
  const data = this.options.data || '';
32
- workQueue.add(() => render({
33
- ...this.options,
34
- file: this.id,
35
- data: data + code,
36
- indentedSyntax: /\.sass$/.test(this.id),
37
- sourceMap: this.sourceMap,
38
- importer: [
39
- (url, importer, done) => {
40
- if (!moduleRe.test(url))
41
- return done({ file: url });
42
- const moduleUrl = url.slice(1);
43
- const partialUrl = getUrlOfPartial(moduleUrl);
44
- const options = {
45
- basedir: path.dirname(importer),
46
- extensions: ['.scss', '.sass', '.css'],
47
- };
48
- const finishImport = (id) => {
49
- done({
50
- // Do not add `.css` extension in order to inline the file
51
- file: id.endsWith('.css') ? id.replace(/\.css$/, '') : id,
32
+ await workQueue.add(async () => {
33
+ const result = await render({
34
+ ...this.options,
35
+ file: this.id,
36
+ data: data + code,
37
+ indentedSyntax: /\.sass$/.test(this.id),
38
+ sourceMap: this.sourceMap,
39
+ importer: [
40
+ ((url, importer, done) => {
41
+ /** Return the original file and pass responsibility back to other custom importers */
42
+ const next = () => done({ file: url });
43
+ if (!moduleRe.test(url))
44
+ return next();
45
+ const moduleUrl = url.slice(1);
46
+ const partialUrl = getUrlOfPartial(moduleUrl);
47
+ const options = {
48
+ basedir: path.dirname(importer),
49
+ extensions: ['.scss', '.sass', '.css'],
50
+ };
51
+ const finishImport = (id) => {
52
+ done({
53
+ // Do not add `.css` extension in order to inline the file
54
+ file: id.replace(/\.css$/, ''),
55
+ });
56
+ };
57
+ // Give precedence to importing a partial
58
+ resolvePromise(partialUrl, options)
59
+ .then(finishImport)
60
+ .catch((error) => {
61
+ const { code: errCode } = error;
62
+ if (errCode === 'MODULE_NOT_FOUND' || errCode === 'ENOENT') {
63
+ resolvePromise(moduleUrl, options).then(finishImport).catch(next);
64
+ }
65
+ else {
66
+ next();
67
+ }
52
68
  });
53
- };
54
- const next = () => {
55
- // Catch all resolving errors, return the original file and pass responsibility back to other custom importers
56
- done({ file: url });
57
- };
58
- // Give precedence to importing a partial
59
- resolvePromise(partialUrl, options)
60
- .then(finishImport)
61
- .catch((error) => {
62
- if (error.code === 'MODULE_NOT_FOUND' || error.code === 'ENOENT') {
63
- resolvePromise(moduleUrl, options).then(finishImport).catch(next);
64
- }
65
- else {
66
- next();
67
- }
68
- });
69
- },
70
- ].concat(this.options.importer || []),
71
- })
72
- .then((result) => {
69
+ }),
70
+ ].concat(this.options.importer || []),
71
+ });
73
72
  for (const file of result.stats.includedFiles) {
74
73
  this.dependencies.add(file);
75
74
  }
@@ -77,16 +76,15 @@ export default {
77
76
  code: result.css.toString(),
78
77
  map: result.map && result.map.toString(),
79
78
  });
80
- })
81
- .catch(reject));
82
- })();
79
+ });
80
+ })().catch(reject);
83
81
  });
84
82
  },
85
83
  };
86
- async function loadSassOrThrow() {
84
+ async function loadSassOrThrow(cwd) {
87
85
  // Loading one of the supported modules
88
86
  for (const moduleId of sassModuleIds) {
89
- const module = await loadModule(moduleId);
87
+ const module = await loadModule({ moduleId, cwd });
90
88
  if (module) {
91
89
  return module;
92
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sass-loader.js","sourceRoot":"","sources":["../../../src/plugins/postcss/sass-loader.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable */\n// @ts-nocheck\nimport path from 'path';\nimport pify from 'pify';\nimport resolvePackage from 'resolve';\nimport PQueue from 'p-queue';\nimport { loadModule } from './utils/load-module.js';\n\n// This queue makes sure node-sass leaves one thread available for executing fs tasks\n// See: https://github.com/sass/node-sass/issues/857\nconst threadPoolSize = process.env.UV_THREADPOOL_SIZE || 4;\nconst workQueue = new PQueue({ concurrency: threadPoolSize - 1 });\n\nconst moduleRe = /^~([a-z\\d]|@).+/i;\n\nconst getUrlOfPartial = (url) => {\n const parsedUrl = path.parse(url);\n return `${parsedUrl.dir}${path.sep}_${parsedUrl.base}`;\n};\n\nconst resolvePromise = pify(resolvePackage);\n\n// List of supported SASS modules in the order of preference\nconst sassModuleIds = ['sass', 'node-sass'];\n\n/* eslint import/no-anonymous-default-export: [2, {\"allowObject\": true}] */\nexport default {\n name: 'sass',\n test: /\\.(sass|scss)$/,\n process({ code }) {\n return new Promise((resolve, reject) => {\n (async () => {\n const sassModule = await loadSassOrThrow();\n // accessing sassModule.default logs an error in latest versions\n const sass = sassModule.render ? sassModule : sassModule.default;\n const render = pify(sass.render.bind(sass));\n const data = this.options.data || '';\n workQueue.add(() =>\n render({\n ...this.options,\n file: this.id,\n data: data + code,\n indentedSyntax: /\\.sass$/.test(this.id),\n sourceMap: this.sourceMap,\n importer: [\n (url, importer, done) => {\n if (!moduleRe.test(url)) return done({ file: url });\n\n const moduleUrl = url.slice(1);\n const partialUrl = getUrlOfPartial(moduleUrl);\n\n const options = {\n basedir: path.dirname(importer),\n extensions: ['.scss', '.sass', '.css'],\n };\n const finishImport = (id) => {\n done({\n // Do not add `.css` extension in order to inline the file\n file: id.endsWith('.css') ? id.replace(/\\.css$/, '') : id,\n });\n };\n\n const next = () => {\n // Catch all resolving errors, return the original file and pass responsibility back to other custom importers\n done({ file: url });\n };\n\n // Give precedence to importing a partial\n resolvePromise(partialUrl, options)\n .then(finishImport)\n .catch((error) => {\n if (error.code === 'MODULE_NOT_FOUND' || error.code === 'ENOENT') {\n resolvePromise(moduleUrl, options).then(finishImport).catch(next);\n } else {\n next();\n }\n });\n },\n ].concat(this.options.importer || []),\n })\n .then((result) => {\n for (const file of result.stats.includedFiles) {\n this.dependencies.add(file);\n }\n\n resolve({\n code: result.css.toString(),\n map: result.map && result.map.toString(),\n });\n })\n .catch(reject),\n );\n })();\n });\n },\n};\n\nasync function loadSassOrThrow() {\n // Loading one of the supported modules\n for (const moduleId of sassModuleIds) {\n const module = await loadModule(moduleId);\n if (module) {\n return module;\n }\n }\n\n // Throwing exception if module can't be loaded\n throw new Error(\n `You need to install one of the following packages: ${sassModuleIds\n .map((moduleId) => `\"${moduleId}\"`)\n .join(', ')} in order to process SASS files`,\n );\n}\n"]}
1
+ {"version":3,"file":"sass-loader.js","sourceRoot":"","sources":["../../../src/plugins/postcss/sass-loader.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport pify from 'pify';\nimport resolvePackage from 'resolve';\nimport PQueue from 'p-queue';\nimport { loadModule } from './utils/load-module.js';\nimport type { Loader } from './types.js';\nimport type * as Sass from 'sass';\n\n// eslint-disable-next-line etc/no-deprecated\ntype SassOptions = Sass.LegacyOptions<'async'>;\n\n// This queue makes sure node-sass leaves one thread available for executing fs tasks\n// See: https://github.com/sass/node-sass/issues/857\n// eslint-disable-next-line no-restricted-properties\nconst threadPoolSize = Number(process.env.UV_THREADPOOL_SIZE || 4);\nconst workQueue = new PQueue({ concurrency: threadPoolSize - 1 });\n\nconst moduleRe = /^~([a-z\\d]|@).+/i;\n\nconst getUrlOfPartial = (url: string) => {\n const parsedUrl = path.parse(url);\n return `${parsedUrl.dir}${path.sep}_${parsedUrl.base}`;\n};\n\nconst resolvePromise = pify(resolvePackage);\n\n// List of supported SASS modules in the order of preference\nconst sassModuleIds = ['sass', 'node-sass'];\n\nexport const sassLoader: Loader<Partial<SassOptions>> = {\n name: 'sass',\n test: /\\.(sass|scss)$/,\n process({ code }) {\n return new Promise((resolve, reject) => {\n (async () => {\n const sassModule = await loadSassOrThrow(this.resolveCwd);\n // accessing sassModule.default logs an error in latest versions\n const sass = 'render' in sassModule ? sassModule : sassModule.default;\n // promisified type isn't being inferred properly\n // eslint-disable-next-line etc/no-deprecated\n const render = pify(sass.render.bind(sass)) as (options: SassOptions) => Promise<Sass.LegacyResult>;\n const data = this.options.data || '';\n\n await workQueue.add(async () => {\n const result = await render({\n ...this.options,\n file: this.id,\n data: data + code,\n indentedSyntax: /\\.sass$/.test(this.id),\n sourceMap: this.sourceMap,\n importer: [\n ((url, importer, done) => {\n /** Return the original file and pass responsibility back to other custom importers */\n const next = () => done({ file: url });\n\n if (!moduleRe.test(url)) return next();\n\n const moduleUrl = url.slice(1);\n const partialUrl = getUrlOfPartial(moduleUrl);\n\n const options: resolvePackage.AsyncOpts = {\n basedir: path.dirname(importer),\n extensions: ['.scss', '.sass', '.css'],\n };\n const finishImport = (id: string) => {\n done({\n // Do not add `.css` extension in order to inline the file\n file: id.replace(/\\.css$/, ''),\n });\n };\n\n // Give precedence to importing a partial\n resolvePromise(partialUrl, options)\n .then(finishImport)\n .catch((error) => {\n const { code: errCode } = error as { code?: string };\n if (errCode === 'MODULE_NOT_FOUND' || errCode === 'ENOENT') {\n resolvePromise(moduleUrl, options).then(finishImport).catch(next);\n } else {\n next();\n }\n });\n }) satisfies Sass.LegacyAsyncImporter, // eslint-disable-line etc/no-deprecated\n ].concat(this.options.importer || []),\n });\n for (const file of result.stats.includedFiles) {\n this.dependencies.add(file);\n }\n\n resolve({\n code: result.css.toString(),\n map: result.map && result.map.toString(),\n });\n });\n })().catch(reject);\n });\n },\n};\n\nasync function loadSassOrThrow(cwd: string) {\n // Loading one of the supported modules\n for (const moduleId of sassModuleIds) {\n const module = await loadModule<typeof Sass>({ moduleId, cwd });\n if (module) {\n return module;\n }\n }\n\n // Throwing exception if module can't be loaded\n throw new Error(\n `You need to install one of the following packages: ${sassModuleIds\n .map((moduleId) => `\"${moduleId}\"`)\n .join(', ')} in order to process SASS files`,\n );\n}\n"]}