summaryrefslogtreecommitdiff
path: root/node_modules/cssnano
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/cssnano')
-rw-r--r--node_modules/cssnano/LICENSE-MIT22
-rw-r--r--node_modules/cssnano/README.md6
-rw-r--r--node_modules/cssnano/package.json52
-rw-r--r--node_modules/cssnano/src/index.js164
-rw-r--r--node_modules/cssnano/types/index.d.ts16
5 files changed, 260 insertions, 0 deletions
diff --git a/node_modules/cssnano/LICENSE-MIT b/node_modules/cssnano/LICENSE-MIT
new file mode 100644
index 00000000..fd0e863a
--- /dev/null
+++ b/node_modules/cssnano/LICENSE-MIT
@@ -0,0 +1,22 @@
+Copyright (c) Ben Briggs <beneb.info@gmail.com> (http://beneb.info)
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/cssnano/README.md b/node_modules/cssnano/README.md
new file mode 100644
index 00000000..3cdb2f43
--- /dev/null
+++ b/node_modules/cssnano/README.md
@@ -0,0 +1,6 @@
+# cssnano
+
+For documentation, please see the following links:
+
+* Repository: https://github.com/cssnano/cssnano
+* Website: http://cssnano.co
diff --git a/node_modules/cssnano/package.json b/node_modules/cssnano/package.json
new file mode 100644
index 00000000..9fe8a796
--- /dev/null
+++ b/node_modules/cssnano/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "cssnano",
+ "version": "6.0.1",
+ "description": "A modular minifier, built on top of the PostCSS ecosystem.",
+ "main": "src/index.js",
+ "types": "types/index.d.ts",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/cssnano"
+ },
+ "keywords": [
+ "css",
+ "compress",
+ "minify",
+ "optimise",
+ "optimisation",
+ "postcss",
+ "postcss-plugin"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "lilconfig": "^2.1.0",
+ "cssnano-preset-default": "^6.0.1"
+ },
+ "homepage": "https://github.com/cssnano/cssnano",
+ "author": {
+ "name": "Ben Briggs",
+ "email": "beneb.info@gmail.com",
+ "url": "http://beneb.info"
+ },
+ "repository": "cssnano/cssnano",
+ "files": [
+ "src",
+ "LICENSE-MIT",
+ "types"
+ ],
+ "bugs": {
+ "url": "https://github.com/cssnano/cssnano/issues"
+ },
+ "engines": {
+ "node": "^14 || ^16 || >=18.0"
+ },
+ "devDependencies": {
+ "autoprefixer": "^10.4.12",
+ "postcss": "^8.2.15",
+ "cssnano-preset-lite": "^3.0.0",
+ "cssnano-preset-advanced": "^6.0.1"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+} \ No newline at end of file
diff --git a/node_modules/cssnano/src/index.js b/node_modules/cssnano/src/index.js
new file mode 100644
index 00000000..50fb2148
--- /dev/null
+++ b/node_modules/cssnano/src/index.js
@@ -0,0 +1,164 @@
+'use strict';
+const path = require('path');
+/** @type {any} */
+const postcss = require('postcss');
+const { lilconfigSync } = require('lilconfig');
+
+const cssnano = 'cssnano';
+
+/** @typedef {{preset?: any, plugins?: any[], configFile?: string}} Options */
+/**
+ * @param {string} moduleId
+ * @returns {boolean}
+ */
+function isResolvable(moduleId) {
+ try {
+ require.resolve(moduleId);
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+/**
+ * preset can be one of four possibilities:
+ * preset = 'default'
+ * preset = ['default', {}]
+ * preset = function <- to be invoked
+ * preset = {plugins: []} <- already invoked function
+ *
+ * @param {any} preset
+ * @return {[import('postcss').PluginCreator<any>, boolean | Record<string, any> | undefined][]}}
+ */
+function resolvePreset(preset) {
+ let fn, options;
+
+ if (Array.isArray(preset)) {
+ fn = preset[0];
+ options = preset[1];
+ } else {
+ fn = preset;
+ options = {};
+ }
+
+ // For JS setups where we invoked the preset already
+ if (preset.plugins) {
+ return preset.plugins;
+ }
+
+ // Provide an alias for the default preset, as it is built-in.
+ if (fn === 'default') {
+ return require('cssnano-preset-default')(options).plugins;
+ }
+
+ // For non-JS setups; we'll need to invoke the preset ourselves.
+ if (typeof fn === 'function') {
+ return fn(options).plugins;
+ }
+
+ // Try loading a preset from node_modules
+ if (isResolvable(fn)) {
+ return require(fn)(options).plugins;
+ }
+
+ const sugar = `cssnano-preset-${fn}`;
+
+ // Try loading a preset from node_modules (sugar)
+ if (isResolvable(sugar)) {
+ return require(sugar)(options).plugins;
+ }
+
+ // If all else fails, we probably have a typo in the config somewhere
+ throw new Error(
+ `Cannot load preset "${fn}". Please check your configuration for errors and try again.`
+ );
+}
+
+/**
+ * cssnano will look for configuration firstly as options passed
+ * directly to it, and failing this it will use lilconfig to
+ * load an external file.
+
+ * @param {Options} options
+ */
+function resolveConfig(options) {
+ if (options.preset) {
+ return resolvePreset(options.preset);
+ }
+
+ /** @type {string | undefined} */
+ let searchPath = process.cwd();
+ let configPath = undefined;
+
+ if (options.configFile) {
+ searchPath = undefined;
+ configPath = path.resolve(process.cwd(), options.configFile);
+ }
+
+ const configExplorer = lilconfigSync(cssnano, {
+ searchPlaces: [
+ 'package.json',
+ '.cssnanorc',
+ '.cssnanorc.json',
+ '.cssnanorc.js',
+ 'cssnano.config.js',
+ ],
+ });
+ const config = configPath
+ ? configExplorer.load(configPath)
+ : configExplorer.search(searchPath);
+
+ if (config === null) {
+ return resolvePreset('default');
+ }
+
+ return resolvePreset(config.config.preset || config.config);
+}
+
+/**
+ * @type {import('postcss').PluginCreator<Options>}
+ * @param {Options=} options
+ * @return {import('postcss').Processor}
+ */
+function cssnanoPlugin(options = {}) {
+ if (Array.isArray(options.plugins)) {
+ if (!options.preset || !options.preset.plugins) {
+ options.preset = { plugins: [] };
+ }
+
+ options.plugins.forEach((plugin) => {
+ if (Array.isArray(plugin)) {
+ const [pluginDef, opts = {}] = plugin;
+ if (typeof pluginDef === 'string' && isResolvable(pluginDef)) {
+ options.preset.plugins.push([require(pluginDef), opts]);
+ } else {
+ options.preset.plugins.push([pluginDef, opts]);
+ }
+ } else if (typeof plugin === 'string' && isResolvable(plugin)) {
+ options.preset.plugins.push([require(plugin), {}]);
+ } else {
+ options.preset.plugins.push([plugin, {}]);
+ }
+ });
+ }
+ const plugins = [];
+ const nanoPlugins = resolveConfig(options);
+ for (const nanoPlugin of nanoPlugins) {
+ if (Array.isArray(nanoPlugin)) {
+ const [processor, opts] = nanoPlugin;
+ if (
+ typeof opts === 'undefined' ||
+ (typeof opts === 'object' && !opts.exclude) ||
+ (typeof opts === 'boolean' && opts === true)
+ ) {
+ plugins.push(processor(opts));
+ }
+ } else {
+ plugins.push(nanoPlugin);
+ }
+ }
+ return postcss(plugins);
+}
+
+cssnanoPlugin.postcss = true;
+module.exports = cssnanoPlugin;
diff --git a/node_modules/cssnano/types/index.d.ts b/node_modules/cssnano/types/index.d.ts
new file mode 100644
index 00000000..50a8ff7a
--- /dev/null
+++ b/node_modules/cssnano/types/index.d.ts
@@ -0,0 +1,16 @@
+export = cssnanoPlugin;
+/**
+ * @type {import('postcss').PluginCreator<Options>}
+ * @param {Options=} options
+ * @return {import('postcss').Processor}
+ */
+declare function cssnanoPlugin(options?: Options | undefined): import('postcss').Processor;
+declare namespace cssnanoPlugin {
+ export { postcss, Options };
+}
+type Options = {
+ preset?: any;
+ plugins?: any[];
+ configFile?: string;
+};
+declare var postcss: true;