From fc87c009806dcc98867f6b58efe29b042aa01dee Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Mon, 18 May 2026 23:10:59 +0800 Subject: node: update --- node_modules/clean-css/lib/clean.js | 241 --- node_modules/clean-css/lib/optimizer/clone.js | 33 - .../clean-css/lib/optimizer/configuration.js | 1640 -------------------- .../lib/optimizer/configuration/break-up.js | 656 -------- .../lib/optimizer/configuration/can-override.js | 314 ---- .../configuration/properties/understandable.js | 15 - .../lib/optimizer/configuration/restore.js | 294 ---- node_modules/clean-css/lib/optimizer/hack.js | 8 - .../lib/optimizer/invalid-property-error.js | 10 - .../clean-css/lib/optimizer/level-0/optimize.js | 6 - .../clean-css/lib/optimizer/level-1/optimize.js | 325 ---- .../lib/optimizer/level-1/property-optimizers.js | 10 - .../level-1/property-optimizers/background.js | 23 - .../level-1/property-optimizers/border-radius.js | 29 - .../level-1/property-optimizers/box-shadow.js | 15 - .../level-1/property-optimizers/filter.js | 34 - .../level-1/property-optimizers/font-weight.js | 23 - .../level-1/property-optimizers/margin.js | 21 - .../level-1/property-optimizers/outline.js | 19 - .../level-1/property-optimizers/padding.js | 32 - .../lib/optimizer/level-1/sort-selectors.js | 23 - .../lib/optimizer/level-1/tidy-at-rule.js | 9 - .../clean-css/lib/optimizer/level-1/tidy-block.js | 34 - .../clean-css/lib/optimizer/level-1/tidy-rules.js | 265 ---- .../lib/optimizer/level-1/value-optimizers.js | 14 - .../optimizer/level-1/value-optimizers/color.js | 89 -- .../level-1/value-optimizers/color/shorten-hex.js | 189 --- .../level-1/value-optimizers/color/shorten-hsl.js | 54 - .../level-1/value-optimizers/color/shorten-rgb.js | 10 - .../optimizer/level-1/value-optimizers/degrees.js | 19 - .../optimizer/level-1/value-optimizers/fraction.js | 72 - .../level-1/value-optimizers/precision.js | 22 - .../level-1/value-optimizers/starts-as-url.js | 7 - .../level-1/value-optimizers/text-quotes.js | 31 - .../lib/optimizer/level-1/value-optimizers/time.js | 31 - .../lib/optimizer/level-1/value-optimizers/unit.js | 46 - .../level-1/value-optimizers/url-prefix.js | 23 - .../level-1/value-optimizers/url-quotes.js | 22 - .../level-1/value-optimizers/url-whitespace.js | 22 - .../level-1/value-optimizers/whitespace.js | 48 - .../lib/optimizer/level-1/value-optimizers/zero.js | 49 - .../lib/optimizer/level-2/extract-properties.js | 61 - .../lib/optimizer/level-2/is-mergeable.js | 273 ---- .../lib/optimizer/level-2/merge-adjacent.js | 55 - .../lib/optimizer/level-2/merge-media-queries.js | 105 -- .../level-2/merge-non-adjacent-by-body.js | 88 -- .../level-2/merge-non-adjacent-by-selector.js | 73 - .../clean-css/lib/optimizer/level-2/optimize.js | 139 -- .../level-2/properties/every-values-pair.js | 28 - .../level-2/properties/find-component-in.js | 38 - .../optimizer/level-2/properties/has-inherit.js | 9 - .../level-2/properties/has-same-values.js | 14 - .../lib/optimizer/level-2/properties/has-unset.js | 9 - .../level-2/properties/is-component-of.js | 22 - .../level-2/properties/is-mergeable-shorthand.js | 11 - .../level-2/properties/merge-into-shorthands.js | 496 ------ .../lib/optimizer/level-2/properties/optimize.js | 40 - .../level-2/properties/override-properties.js | 461 ------ .../overrides-non-component-shorthand.js | 9 - .../level-2/properties/populate-components.js | 61 - .../lib/optimizer/level-2/reduce-non-adjacent.js | 174 --- .../level-2/remove-duplicate-font-at-rules.js | 30 - .../level-2/remove-duplicate-media-queries.js | 30 - .../lib/optimizer/level-2/remove-duplicates.js | 36 - .../optimizer/level-2/remove-unused-at-rules.js | 249 --- .../clean-css/lib/optimizer/level-2/reorderable.js | 93 -- .../optimizer/level-2/restore-with-components.js | 12 - .../clean-css/lib/optimizer/level-2/restructure.js | 392 ----- .../lib/optimizer/level-2/rules-overlap.js | 32 - .../lib/optimizer/level-2/specificities-overlap.js | 36 - .../clean-css/lib/optimizer/level-2/specificity.js | 77 - .../lib/optimizer/level-2/tidy-rule-duplicates.js | 21 - .../clean-css/lib/optimizer/remove-unused.js | 11 - .../lib/optimizer/restore-from-optimizing.js | 78 - node_modules/clean-css/lib/optimizer/validator.js | 561 ------- .../clean-css/lib/optimizer/vendor-prefixes.js | 24 - .../clean-css/lib/optimizer/wrap-for-optimizing.js | 192 --- .../clean-css/lib/options/compatibility.js | 181 --- node_modules/clean-css/lib/options/fetch.js | 7 - node_modules/clean-css/lib/options/format.js | 241 --- .../clean-css/lib/options/inline-request.js | 22 - .../clean-css/lib/options/inline-timeout.js | 7 - node_modules/clean-css/lib/options/inline.js | 15 - .../clean-css/lib/options/optimization-level.js | 218 --- node_modules/clean-css/lib/options/plugins.js | 25 - node_modules/clean-css/lib/options/rebase-to.js | 7 - node_modules/clean-css/lib/options/rebase.js | 10 - .../clean-css/lib/options/rounding-precision.js | 88 -- .../clean-css/lib/reader/apply-source-maps.js | 246 --- .../lib/reader/extract-import-url-and-media.js | 35 - .../lib/reader/input-source-map-tracker.js | 58 - .../clean-css/lib/reader/is-allowed-resource.js | 77 - .../clean-css/lib/reader/load-original-sources.js | 129 -- .../clean-css/lib/reader/load-remote-resource.js | 74 - .../clean-css/lib/reader/match-data-uri.js | 7 - .../clean-css/lib/reader/normalize-path.js | 8 - node_modules/clean-css/lib/reader/read-sources.js | 344 ---- .../clean-css/lib/reader/rebase-local-map.js | 15 - .../clean-css/lib/reader/rebase-remote-map.js | 14 - node_modules/clean-css/lib/reader/rebase.js | 101 -- .../clean-css/lib/reader/restore-import.js | 5 - node_modules/clean-css/lib/reader/rewrite-url.js | 112 -- node_modules/clean-css/lib/tokenizer/marker.js | 26 - node_modules/clean-css/lib/tokenizer/token.js | 17 - node_modules/clean-css/lib/tokenizer/tokenize.js | 867 ----------- node_modules/clean-css/lib/utils/clone-array.js | 11 - .../clean-css/lib/utils/format-position.js | 11 - node_modules/clean-css/lib/utils/has-protocol.js | 7 - .../clean-css/lib/utils/is-data-uri-resource.js | 7 - .../clean-css/lib/utils/is-http-resource.js | 7 - .../clean-css/lib/utils/is-https-resource.js | 7 - node_modules/clean-css/lib/utils/is-import.js | 7 - .../clean-css/lib/utils/is-remote-resource.js | 8 - .../clean-css/lib/utils/natural-compare.js | 31 - node_modules/clean-css/lib/utils/override.js | 34 - node_modules/clean-css/lib/utils/split.js | 62 - node_modules/clean-css/lib/writer/helpers.js | 256 --- node_modules/clean-css/lib/writer/one-time.js | 52 - node_modules/clean-css/lib/writer/simple.js | 48 - node_modules/clean-css/lib/writer/source-maps.js | 104 -- 120 files changed, 12475 deletions(-) delete mode 100644 node_modules/clean-css/lib/clean.js delete mode 100644 node_modules/clean-css/lib/optimizer/clone.js delete mode 100644 node_modules/clean-css/lib/optimizer/configuration.js delete mode 100644 node_modules/clean-css/lib/optimizer/configuration/break-up.js delete mode 100644 node_modules/clean-css/lib/optimizer/configuration/can-override.js delete mode 100644 node_modules/clean-css/lib/optimizer/configuration/properties/understandable.js delete mode 100644 node_modules/clean-css/lib/optimizer/configuration/restore.js delete mode 100644 node_modules/clean-css/lib/optimizer/hack.js delete mode 100644 node_modules/clean-css/lib/optimizer/invalid-property-error.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-0/optimize.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/optimize.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/background.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/border-radius.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/box-shadow.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/filter.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/font-weight.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/margin.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/outline.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/property-optimizers/padding.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/sort-selectors.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/tidy-at-rule.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/tidy-block.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/tidy-rules.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-hex.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-hsl.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-rgb.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/degrees.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/fraction.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/precision.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/starts-as-url.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/text-quotes.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/time.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-prefix.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-quotes.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-whitespace.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/whitespace.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/extract-properties.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/is-mergeable.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/merge-adjacent.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/merge-media-queries.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/merge-non-adjacent-by-body.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/merge-non-adjacent-by-selector.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/optimize.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/every-values-pair.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/find-component-in.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/has-inherit.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/has-same-values.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/has-unset.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/is-component-of.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/is-mergeable-shorthand.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/merge-into-shorthands.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/optimize.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/override-properties.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/overrides-non-component-shorthand.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/properties/populate-components.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/reduce-non-adjacent.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/remove-duplicate-font-at-rules.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/remove-duplicate-media-queries.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/remove-duplicates.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/remove-unused-at-rules.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/reorderable.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/restore-with-components.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/restructure.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/rules-overlap.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/specificities-overlap.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/specificity.js delete mode 100644 node_modules/clean-css/lib/optimizer/level-2/tidy-rule-duplicates.js delete mode 100644 node_modules/clean-css/lib/optimizer/remove-unused.js delete mode 100644 node_modules/clean-css/lib/optimizer/restore-from-optimizing.js delete mode 100644 node_modules/clean-css/lib/optimizer/validator.js delete mode 100644 node_modules/clean-css/lib/optimizer/vendor-prefixes.js delete mode 100644 node_modules/clean-css/lib/optimizer/wrap-for-optimizing.js delete mode 100644 node_modules/clean-css/lib/options/compatibility.js delete mode 100644 node_modules/clean-css/lib/options/fetch.js delete mode 100644 node_modules/clean-css/lib/options/format.js delete mode 100644 node_modules/clean-css/lib/options/inline-request.js delete mode 100644 node_modules/clean-css/lib/options/inline-timeout.js delete mode 100644 node_modules/clean-css/lib/options/inline.js delete mode 100644 node_modules/clean-css/lib/options/optimization-level.js delete mode 100644 node_modules/clean-css/lib/options/plugins.js delete mode 100644 node_modules/clean-css/lib/options/rebase-to.js delete mode 100644 node_modules/clean-css/lib/options/rebase.js delete mode 100644 node_modules/clean-css/lib/options/rounding-precision.js delete mode 100644 node_modules/clean-css/lib/reader/apply-source-maps.js delete mode 100644 node_modules/clean-css/lib/reader/extract-import-url-and-media.js delete mode 100644 node_modules/clean-css/lib/reader/input-source-map-tracker.js delete mode 100644 node_modules/clean-css/lib/reader/is-allowed-resource.js delete mode 100644 node_modules/clean-css/lib/reader/load-original-sources.js delete mode 100644 node_modules/clean-css/lib/reader/load-remote-resource.js delete mode 100644 node_modules/clean-css/lib/reader/match-data-uri.js delete mode 100644 node_modules/clean-css/lib/reader/normalize-path.js delete mode 100644 node_modules/clean-css/lib/reader/read-sources.js delete mode 100644 node_modules/clean-css/lib/reader/rebase-local-map.js delete mode 100644 node_modules/clean-css/lib/reader/rebase-remote-map.js delete mode 100644 node_modules/clean-css/lib/reader/rebase.js delete mode 100644 node_modules/clean-css/lib/reader/restore-import.js delete mode 100644 node_modules/clean-css/lib/reader/rewrite-url.js delete mode 100644 node_modules/clean-css/lib/tokenizer/marker.js delete mode 100644 node_modules/clean-css/lib/tokenizer/token.js delete mode 100644 node_modules/clean-css/lib/tokenizer/tokenize.js delete mode 100644 node_modules/clean-css/lib/utils/clone-array.js delete mode 100644 node_modules/clean-css/lib/utils/format-position.js delete mode 100644 node_modules/clean-css/lib/utils/has-protocol.js delete mode 100644 node_modules/clean-css/lib/utils/is-data-uri-resource.js delete mode 100644 node_modules/clean-css/lib/utils/is-http-resource.js delete mode 100644 node_modules/clean-css/lib/utils/is-https-resource.js delete mode 100644 node_modules/clean-css/lib/utils/is-import.js delete mode 100644 node_modules/clean-css/lib/utils/is-remote-resource.js delete mode 100644 node_modules/clean-css/lib/utils/natural-compare.js delete mode 100644 node_modules/clean-css/lib/utils/override.js delete mode 100644 node_modules/clean-css/lib/utils/split.js delete mode 100644 node_modules/clean-css/lib/writer/helpers.js delete mode 100644 node_modules/clean-css/lib/writer/one-time.js delete mode 100644 node_modules/clean-css/lib/writer/simple.js delete mode 100644 node_modules/clean-css/lib/writer/source-maps.js (limited to 'node_modules/clean-css/lib') diff --git a/node_modules/clean-css/lib/clean.js b/node_modules/clean-css/lib/clean.js deleted file mode 100644 index a3a74449..00000000 --- a/node_modules/clean-css/lib/clean.js +++ /dev/null @@ -1,241 +0,0 @@ -/** - * Clean-css - https://github.com/clean-css/clean-css - * Released under the terms of MIT license - */ - -var level0Optimize = require('./optimizer/level-0/optimize'); -var level1Optimize = require('./optimizer/level-1/optimize'); -var level2Optimize = require('./optimizer/level-2/optimize'); -var validator = require('./optimizer/validator'); - -var compatibilityFrom = require('./options/compatibility'); -var fetchFrom = require('./options/fetch'); -var formatFrom = require('./options/format').formatFrom; -var inlineFrom = require('./options/inline'); -var inlineRequestFrom = require('./options/inline-request'); -var inlineTimeoutFrom = require('./options/inline-timeout'); -var OptimizationLevel = require('./options/optimization-level').OptimizationLevel; -var optimizationLevelFrom = require('./options/optimization-level').optimizationLevelFrom; -var pluginsFrom = require('./options/plugins'); -var rebaseFrom = require('./options/rebase'); -var rebaseToFrom = require('./options/rebase-to'); - -var inputSourceMapTracker = require('./reader/input-source-map-tracker'); -var readSources = require('./reader/read-sources'); - -var serializeStyles = require('./writer/simple'); -var serializeStylesAndSourceMap = require('./writer/source-maps'); - -var CleanCSS = module.exports = function CleanCSS(options) { - options = options || {}; - - this.options = { - batch: !!options.batch, - compatibility: compatibilityFrom(options.compatibility), - explicitRebaseTo: 'rebaseTo' in options, - fetch: fetchFrom(options.fetch), - format: formatFrom(options.format), - inline: inlineFrom(options.inline), - inlineRequest: inlineRequestFrom(options.inlineRequest), - inlineTimeout: inlineTimeoutFrom(options.inlineTimeout), - level: optimizationLevelFrom(options.level), - plugins: pluginsFrom(options.plugins), - rebase: rebaseFrom(options.rebase, options.rebaseTo), - rebaseTo: rebaseToFrom(options.rebaseTo), - returnPromise: !!options.returnPromise, - sourceMap: !!options.sourceMap, - sourceMapInlineSources: !!options.sourceMapInlineSources - }; -}; - -// for compatibility with optimize-css-assets-webpack-plugin -CleanCSS.process = function(input, opts) { - var cleanCss; - var optsTo = opts.to; - - delete opts.to; - cleanCss = new CleanCSS(Object.assign({ - returnPromise: true, rebaseTo: optsTo - }, opts)); - - return cleanCss.minify(input) - .then(function(output) { - return { css: output.styles }; - }); -}; - -CleanCSS.prototype.minify = function(input, maybeSourceMap, maybeCallback) { - var options = this.options; - - if (options.returnPromise) { - return new Promise(function(resolve, reject) { - minifyAll(input, options, maybeSourceMap, function(errors, output) { - return errors - ? reject(errors) - : resolve(output); - }); - }); - } - return minifyAll(input, options, maybeSourceMap, maybeCallback); -}; - -function minifyAll(input, options, maybeSourceMap, maybeCallback) { - if (options.batch && Array.isArray(input)) { - return minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback); - } if (options.batch && (typeof input == 'object')) { - return minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback); - } - return minify(input, options, maybeSourceMap, maybeCallback); -} - -function minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback) { - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var errors = []; - var outputAsHash = {}; - var inputValue; - var i, l; - - function whenHashBatchDone(innerErrors, output) { - outputAsHash = Object.assign(outputAsHash, output); - - if (innerErrors !== null) { - errors = errors.concat(innerErrors); - } - } - - for (i = 0, l = input.length; i < l; i++) { - if (typeof input[i] == 'object') { - minifyInBatchesFromHash(input[i], options, whenHashBatchDone); - } else { - inputValue = input[i]; - - outputAsHash[inputValue] = minify([inputValue], options); - errors = errors.concat(outputAsHash[inputValue].errors); - } - } - - return callback - ? callback(errors.length > 0 ? errors : null, outputAsHash) - : outputAsHash; -} - -function minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback) { - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var errors = []; - var outputAsHash = {}; - var inputKey; - var inputValue; - - for (inputKey in input) { - inputValue = input[inputKey]; - - outputAsHash[inputKey] = minify(inputValue.styles, options, inputValue.sourceMap); - errors = errors.concat(outputAsHash[inputKey].errors); - } - - return callback - ? callback(errors.length > 0 ? errors : null, outputAsHash) - : outputAsHash; -} - -function minify(input, options, maybeSourceMap, maybeCallback) { - var sourceMap = typeof maybeSourceMap != 'function' - ? maybeSourceMap - : null; - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var context = { - stats: { - efficiency: 0, - minifiedSize: 0, - originalSize: 0, - startedAt: Date.now(), - timeSpent: 0 - }, - cache: { specificity: {} }, - errors: [], - inlinedStylesheets: [], - inputSourceMapTracker: inputSourceMapTracker(), - localOnly: !callback, - options: options, - source: null, - sourcesContent: {}, - validator: validator(options.compatibility), - warnings: [] - }; - var implicitRebaseToWarning; - - if (sourceMap) { - context.inputSourceMapTracker.track(undefined, sourceMap); - } - - if (options.rebase && !options.explicitRebaseTo) { - implicitRebaseToWarning = 'You have set `rebase: true` without giving `rebaseTo` option, which, in this case, defaults to the current working directory. ' - + 'You are then warned this can lead to unexpected URL rebasing (aka here be dragons)! ' - + 'If you are OK with the clean-css output, then you can get rid of this warning by giving clean-css a `rebaseTo: process.cwd()` option.'; - context.warnings.push(implicitRebaseToWarning); - } - - return runner(context.localOnly)(function() { - return readSources(input, context, function(tokens) { - var serialize = context.options.sourceMap - ? serializeStylesAndSourceMap - : serializeStyles; - - var optimizedTokens = optimize(tokens, context); - var optimizedStyles = serialize(optimizedTokens, context); - var output = withMetadata(optimizedStyles, context); - - return callback - ? callback(context.errors.length > 0 ? context.errors : null, output) - : output; - }); - }); -} - -function runner(localOnly) { - // to always execute code asynchronously when a callback is given - // more at blog.izs.me/post/59142742143/designing-apis-for-asynchrony - return localOnly - ? function(callback) { return callback(); } - : process.nextTick; -} - -function optimize(tokens, context) { - var optimized = level0Optimize(tokens, context); - - optimized = OptimizationLevel.One in context.options.level - ? level1Optimize(tokens, context) - : tokens; - optimized = OptimizationLevel.Two in context.options.level - ? level2Optimize(tokens, context, true) - : optimized; - - return optimized; -} - -function withMetadata(output, context) { - output.stats = calculateStatsFrom(output.styles, context); - output.errors = context.errors; - output.inlinedStylesheets = context.inlinedStylesheets; - output.warnings = context.warnings; - - return output; -} - -function calculateStatsFrom(styles, context) { - var finishedAt = Date.now(); - var timeSpent = finishedAt - context.stats.startedAt; - - delete context.stats.startedAt; - context.stats.timeSpent = timeSpent; - context.stats.efficiency = 1 - styles.length / context.stats.originalSize; - context.stats.minifiedSize = styles.length; - - return context.stats; -} diff --git a/node_modules/clean-css/lib/optimizer/clone.js b/node_modules/clean-css/lib/optimizer/clone.js deleted file mode 100644 index e6a006f3..00000000 --- a/node_modules/clean-css/lib/optimizer/clone.js +++ /dev/null @@ -1,33 +0,0 @@ -var wrapSingle = require('./wrap-for-optimizing').single; - -var Token = require('../tokenizer/token'); - -function deep(property) { - var cloned = shallow(property); - for (var i = property.components.length - 1; i >= 0; i--) { - var component = shallow(property.components[i]); - component.value = property.components[i].value.slice(0); - cloned.components.unshift(component); - } - - cloned.dirty = true; - cloned.value = property.value.slice(0); - - return cloned; -} - -function shallow(property) { - var cloned = wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, property.name] - ]); - cloned.important = property.important; - cloned.hack = property.hack; - cloned.unused = false; - return cloned; -} - -module.exports = { - deep: deep, - shallow: shallow -}; diff --git a/node_modules/clean-css/lib/optimizer/configuration.js b/node_modules/clean-css/lib/optimizer/configuration.js deleted file mode 100644 index 9da654dd..00000000 --- a/node_modules/clean-css/lib/optimizer/configuration.js +++ /dev/null @@ -1,1640 +0,0 @@ -// Contains the interpretation of CSS properties, as used by the property optimizer - -var breakUp = require('./configuration/break-up'); -var canOverride = require('./configuration/can-override'); -var restore = require('./configuration/restore'); - -var propertyOptimizers = require('./level-1/property-optimizers'); -var valueOptimizers = require('./level-1/value-optimizers'); - -var override = require('../utils/override'); - -// Properties to process -// Extend this object in order to add support for more properties in the optimizer. -// -// Each key in this object represents a CSS property and should be an object. -// Such an object contains properties that describe how the represented CSS property should be handled. -// Possible options: -// -// * components: array (Only specify for shorthand properties.) -// Contains the names of the granular properties this shorthand compacts. -// -// * canOverride: function -// Returns whether two tokens of this property can be merged with each other. -// This property has no meaning for shorthands. -// -// * defaultValue: string -// Specifies the default value of the property according to the CSS standard. -// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components. -// -// * shortestValue: string -// Specifies the shortest possible value the property can possibly have. -// (Falls back to defaultValue if unspecified.) -// -// * breakUp: function (Only specify for shorthand properties.) -// Breaks the shorthand up to its components. -// -// * restore: function (Only specify for shorthand properties.) -// Puts the shorthand together from its components. -// -var configuration = { - animation: { - canOverride: canOverride.generic.components([ - canOverride.generic.time, - canOverride.generic.timingFunction, - canOverride.generic.time, - canOverride.property.animationIterationCount, - canOverride.property.animationDirection, - canOverride.property.animationFillMode, - canOverride.property.animationPlayState, - canOverride.property.animationName - ]), - components: [ - 'animation-duration', - 'animation-timing-function', - 'animation-delay', - 'animation-iteration-count', - 'animation-direction', - 'animation-fill-mode', - 'animation-play-state', - 'animation-name' - ], - breakUp: breakUp.multiplex(breakUp.animation), - defaultValue: 'none', - restore: restore.multiplex(restore.withoutDefaults), - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.textQuotes, - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-delay': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-direction': { - canOverride: canOverride.property.animationDirection, - componentOf: [ - 'animation' - ], - defaultValue: 'normal', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-duration': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - keepUnlessDefault: 'animation-delay', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-fill-mode': { - canOverride: canOverride.property.animationFillMode, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-iteration-count': { - canOverride: canOverride.property.animationIterationCount, - componentOf: [ - 'animation' - ], - defaultValue: '1', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-name': { - canOverride: canOverride.property.animationName, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.textQuotes - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-play-state': { - canOverride: canOverride.property.animationPlayState, - componentOf: [ - 'animation' - ], - defaultValue: 'running', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-timing-function': { - canOverride: canOverride.generic.timingFunction, - componentOf: [ - 'animation' - ], - defaultValue: 'ease', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - background: { - canOverride: canOverride.generic.components([ - canOverride.generic.image, - canOverride.property.backgroundPosition, - canOverride.property.backgroundSize, - canOverride.property.backgroundRepeat, - canOverride.property.backgroundAttachment, - canOverride.property.backgroundOrigin, - canOverride.property.backgroundClip, - canOverride.generic.color - ]), - components: [ - 'background-image', - 'background-position', - 'background-size', - 'background-repeat', - 'background-attachment', - 'background-origin', - 'background-clip', - 'background-color' - ], - breakUp: breakUp.multiplex(breakUp.background), - defaultValue: '0 0', - propertyOptimizer: propertyOptimizers.background, - restore: restore.multiplex(restore.background), - shortestValue: '0', - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.urlWhiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes - ] - }, - 'background-attachment': { - canOverride: canOverride.property.backgroundAttachment, - componentOf: [ - 'background' - ], - defaultValue: 'scroll', - intoMultiplexMode: 'real' - }, - 'background-clip': { - canOverride: canOverride.property.backgroundClip, - componentOf: [ - 'background' - ], - defaultValue: 'border-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'background' - ], - defaultValue: 'transparent', - intoMultiplexMode: 'real', // otherwise real color will turn into default since color appears in last multiplex only - multiplexLastOnly: true, - nonMergeableValue: 'none', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'background-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'background' - ], - defaultValue: 'none', - intoMultiplexMode: 'default', - valueOptimizers: [ - valueOptimizers.urlWhiteSpace, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes, - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'background-origin': { - canOverride: canOverride.property.backgroundOrigin, - componentOf: [ - 'background' - ], - defaultValue: 'padding-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-position': { - canOverride: canOverride.property.backgroundPosition, - componentOf: [ - 'background' - ], - defaultValue: ['0', '0'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'background-repeat': { - canOverride: canOverride.property.backgroundRepeat, - componentOf: [ - 'background' - ], - defaultValue: ['repeat'], - doubleValues: true, - intoMultiplexMode: 'real' - }, - 'background-size': { - canOverride: canOverride.property.backgroundSize, - componentOf: [ - 'background' - ], - defaultValue: ['auto'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0 0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - bottom: { - canOverride: canOverride.property.bottom, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - border: { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-width', - 'border-style', - 'border-color' - ], - defaultValue: 'none', - overridesShorthands: [ - 'border-bottom', - 'border-left', - 'border-right', - 'border-top' - ], - restore: restore.withoutDefaults, - shorthand: true, - shorthandComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-bottom-width', - 'border-bottom-style', - 'border-bottom-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-bottom', - 'border-color' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-bottom-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-bottom', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-bottom-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-bottom', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-top-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-collapse': { - canOverride: canOverride.property.borderCollapse, - defaultValue: 'separate' - }, - 'border-color': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-color', - 'border-right-color', - 'border-bottom-color', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.fourValues, - shortestValue: 'red', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-left-width', - 'border-left-style', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-left-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-left' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-left', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-left-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-left', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-right-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-radius': { - breakUp: breakUp.borderRadius, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'border-top-left-radius', - 'border-top-right-radius', - 'border-bottom-right-radius', - 'border-bottom-left-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - restore: restore.borderRadius, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-right': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-right-width', - 'border-right-style', - 'border-right-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-right' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-right', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-right-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-right', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-left-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-style': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-style', - 'border-right-style', - 'border-bottom-style', - 'border-left-style' - ], - defaultValue: 'none', - restore: restore.fourValues, - shorthand: true, - singleTypeComponents: true - }, - 'border-top': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-top-width', - 'border-top-style', - 'border-top-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.unit - ] - }, - 'border-top-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-top' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-top-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-style', - 'border-top' - ], - defaultValue: 'none' - }, - 'border-top-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-top', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-bottom-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-width': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-width', - 'border-right-width', - 'border-bottom-width', - 'border-left-width' - ], - defaultValue: 'medium', - restore: restore.fourValues, - shortestValue: '0', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'box-shadow': { - propertyOptimizer: propertyOptimizers.boxShadow, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - clear: { - canOverride: canOverride.property.clear, - defaultValue: 'none' - }, - clip: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - color: { - canOverride: canOverride.generic.color, - defaultValue: 'transparent', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'column-gap': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - cursor: { - canOverride: canOverride.property.cursor, - defaultValue: 'auto' - }, - display: { canOverride: canOverride.property.display }, - filter: { - propertyOptimizer: propertyOptimizers.filter, - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - float: { - canOverride: canOverride.property.float, - defaultValue: 'none' - }, - font: { - breakUp: breakUp.font, - canOverride: canOverride.generic.components([ - canOverride.property.fontStyle, - canOverride.property.fontVariant, - canOverride.property.fontWeight, - canOverride.property.fontStretch, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.property.fontFamily - ]), - components: [ - 'font-style', - 'font-variant', - 'font-weight', - 'font-stretch', - 'font-size', - 'line-height', - 'font-family' - ], - restore: restore.font, - shorthand: true, - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-family': { - canOverride: canOverride.property.fontFamily, - defaultValue: 'user|agent|specific', - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-size': { - canOverride: canOverride.generic.unit, - defaultValue: 'medium', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - 'font-stretch': { - canOverride: canOverride.property.fontStretch, - defaultValue: 'normal' - }, - 'font-style': { - canOverride: canOverride.property.fontStyle, - defaultValue: 'normal' - }, - 'font-variant': { - canOverride: canOverride.property.fontVariant, - defaultValue: 'normal' - }, - 'font-weight': { - canOverride: canOverride.property.fontWeight, - defaultValue: 'normal', - propertyOptimizer: propertyOptimizers.fontWeight, - shortestValue: '400' - }, - gap: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - height: { - canOverride: canOverride.generic.unit, - defaultValue: 'auto', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - left: { - canOverride: canOverride.property.left, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'letter-spacing': { - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'line-height': { - canOverride: canOverride.generic.unitOrNumber, - defaultValue: 'normal', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'list-style': { - canOverride: canOverride.generic.components([ - canOverride.property.listStyleType, - canOverride.property.listStylePosition, - canOverride.property.listStyleImage - ]), - components: [ - 'list-style-type', - 'list-style-position', - 'list-style-image' - ], - breakUp: breakUp.listStyle, - restore: restore.withoutDefaults, - defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for
    - shortestValue: 'none', - shorthand: true - }, - 'list-style-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'list-style' - ], - defaultValue: 'none' - }, - 'list-style-position': { - canOverride: canOverride.property.listStylePosition, - componentOf: [ - 'list-style' - ], - defaultValue: 'outside', - shortestValue: 'inside' - }, - 'list-style-type': { - canOverride: canOverride.property.listStyleType, - componentOf: [ - 'list-style' - ], - // NOTE: we can't tell the real default value here, it's 'disc' for