diff options
Diffstat (limited to 'node_modules/icss-utils')
-rw-r--r-- | node_modules/icss-utils/README.md | 79 | ||||
-rw-r--r-- | node_modules/icss-utils/lib/createICSSRules.js | 54 | ||||
-rw-r--r-- | node_modules/icss-utils/lib/extractICSS.js | 45 | ||||
-rw-r--r-- | node_modules/icss-utils/lib/index.js | 43 | ||||
-rw-r--r-- | node_modules/icss-utils/lib/replaceSymbols.js | 22 | ||||
-rw-r--r-- | node_modules/icss-utils/lib/replaceValueSymbols.js | 20 | ||||
-rw-r--r-- | node_modules/icss-utils/package.json | 97 |
7 files changed, 360 insertions, 0 deletions
diff --git a/node_modules/icss-utils/README.md b/node_modules/icss-utils/README.md new file mode 100644 index 0000000..19687f0 --- /dev/null +++ b/node_modules/icss-utils/README.md @@ -0,0 +1,79 @@ +[](https://travis-ci.org/css-modules/icss-utils)
+
+# ICSS Utils
+
+## replaceSymbols
+
+Governs the way tokens are searched & replaced during the linking stage of ICSS loading.
+
+This is broken into its own module in case the behaviour needs to be replicated in other PostCSS plugins
+(i.e. [CSS Modules Values](https://github.com/css-modules/postcss-modules-values))
+
+```js
+import { replaceSymbols, replaceValueSymbols } from "icss-utils"
+replaceSymbols(css, replacements)
+replaceValueSymbols(string, replacements)
+```
+
+Where:
+
+- `css` is the PostCSS tree you're working with
+- `replacements` is an JS object of `symbol: "replacement"` pairs, where all occurrences of `symbol` are replaced with `replacement`.
+
+A symbol is a string of alphanumeric, `-` or `_` characters. A replacement can be any string. They are replaced in the following places:
+
+- In the value of a declaration, i.e. `color: my_symbol;` or `box-shadow: 0 0 blur spread shadow-color`
+- In a media expression i.e. `@media small {}` or `@media screen and not-large {}`
+
+## extractICSS(css, removeRules = true)
+
+Extracts and remove (if removeRules is equal true) from PostCSS tree `:import` and `:export` statements.
+
+```js
+import postcss from 'postcss';
+import { extractICSS } from 'icss-utils'
+
+const css = postcss.parse(`
+ :import(colors) {
+ a: b;
+ }
+ :export {
+ c: d;
+ }
+`)
+
+extractICSS(css)
+/*
+ {
+ icssImports: {
+ colors: {
+ a: 'b'
+ }
+ },
+ icssExports: {
+ c: 'd'
+ }
+ }
+*/
+```
+
+## createICSSRules(icssImports, icssExports)
+
+Converts icss imports and exports definitions to postcss ast
+
+```js
+createICSSRules({
+ colors: {
+ a: 'b'
+ }
+}, {
+ c: 'd'
+})
+```
+
+## License
+
+ISC
+
+---
+Glen Maddern and Bogdan Chadkin, 2015.
diff --git a/node_modules/icss-utils/lib/createICSSRules.js b/node_modules/icss-utils/lib/createICSSRules.js new file mode 100644 index 0000000..585a984 --- /dev/null +++ b/node_modules/icss-utils/lib/createICSSRules.js @@ -0,0 +1,54 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _postcss = require('postcss'); + +var _postcss2 = _interopRequireDefault(_postcss); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + +var createImports = function createImports(imports) { + return Object.keys(imports).map(function (path) { + var aliases = imports[path]; + var declarations = Object.keys(aliases).map(function (key) { + return _postcss2.default.decl({ + prop: key, + value: aliases[key], + raws: { before: '\n ' } + }); + }); + return _postcss2.default.rule({ + selector: `:import(${path})`, + raws: { after: '\n' } + }).append(declarations); + }); +}; + +var createExports = function createExports(exports) { + var declarations = Object.keys(exports).map(function (key) { + return _postcss2.default.decl({ + prop: key, + value: exports[key], + raws: { before: '\n ' } + }); + }); + if (declarations.length === 0) { + return []; + } + var rule = _postcss2.default.rule({ + selector: `:export`, + raws: { after: '\n' } + }).append(declarations); + return [rule]; +}; + +var createICSSRules = function createICSSRules(imports, exports) { + return [].concat(_toConsumableArray(createImports(imports)), _toConsumableArray(createExports(exports))); +}; + +exports.default = createICSSRules;
\ No newline at end of file diff --git a/node_modules/icss-utils/lib/extractICSS.js b/node_modules/icss-utils/lib/extractICSS.js new file mode 100644 index 0000000..3b2f863 --- /dev/null +++ b/node_modules/icss-utils/lib/extractICSS.js @@ -0,0 +1,45 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var importPattern = /^:import\(("[^"]*"|'[^']*'|[\w-\.]+)\)$/; + +var getDeclsObject = function getDeclsObject(rule) { + var object = {}; + rule.walkDecls(function (decl) { + object[decl.raws.before.trim() + decl.prop] = decl.value; + }); + return object; +}; + +var extractICSS = function extractICSS(css) { + var removeRules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var icssImports = {}; + var icssExports = {}; + css.each(function (node) { + if (node.type === "rule") { + if (node.selector.slice(0, 7) === ":import") { + var matches = importPattern.exec(node.selector); + if (matches) { + var path = matches[1]; + var aliases = Object.assign(icssImports[path] || {}, getDeclsObject(node)); + icssImports[path] = aliases; + if (removeRules) { + node.remove(); + } + } + } + if (node.selector === ":export") { + Object.assign(icssExports, getDeclsObject(node)); + if (removeRules) { + node.remove(); + } + } + } + }); + return { icssImports, icssExports }; +}; + +exports.default = extractICSS;
\ No newline at end of file diff --git a/node_modules/icss-utils/lib/index.js b/node_modules/icss-utils/lib/index.js new file mode 100644 index 0000000..d9559c1 --- /dev/null +++ b/node_modules/icss-utils/lib/index.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _replaceValueSymbols = require('./replaceValueSymbols.js'); + +Object.defineProperty(exports, 'replaceValueSymbols', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_replaceValueSymbols).default; + } +}); + +var _replaceSymbols = require('./replaceSymbols.js'); + +Object.defineProperty(exports, 'replaceSymbols', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_replaceSymbols).default; + } +}); + +var _extractICSS = require('./extractICSS.js'); + +Object.defineProperty(exports, 'extractICSS', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_extractICSS).default; + } +}); + +var _createICSSRules = require('./createICSSRules.js'); + +Object.defineProperty(exports, 'createICSSRules', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_createICSSRules).default; + } +}); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
\ No newline at end of file diff --git a/node_modules/icss-utils/lib/replaceSymbols.js b/node_modules/icss-utils/lib/replaceSymbols.js new file mode 100644 index 0000000..4bf349d --- /dev/null +++ b/node_modules/icss-utils/lib/replaceSymbols.js @@ -0,0 +1,22 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _replaceValueSymbols = require('./replaceValueSymbols.js'); + +var _replaceValueSymbols2 = _interopRequireDefault(_replaceValueSymbols); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var replaceSymbols = function replaceSymbols(css, replacements) { + css.walkDecls(function (decl) { + return decl.value = (0, _replaceValueSymbols2.default)(decl.value, replacements); + }); + css.walkAtRules('media', function (atRule) { + return atRule.params = (0, _replaceValueSymbols2.default)(atRule.params, replacements); + }); +}; + +exports.default = replaceSymbols;
\ No newline at end of file diff --git a/node_modules/icss-utils/lib/replaceValueSymbols.js b/node_modules/icss-utils/lib/replaceValueSymbols.js new file mode 100644 index 0000000..ae6e553 --- /dev/null +++ b/node_modules/icss-utils/lib/replaceValueSymbols.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var matchValueName = /[$#]?[\w-\.]+/g; + +var replaceValueSymbols = function replaceValueSymbols(value, replacements) { + var matches = void 0; + while (matches = matchValueName.exec(value)) { + var replacement = replacements[matches[0]]; + if (replacement) { + value = value.slice(0, matches.index) + replacement + value.slice(matchValueName.lastIndex); + matchValueName.lastIndex -= matches[0].length - replacement.length; + } + } + return value; +}; + +exports.default = replaceValueSymbols;
\ No newline at end of file diff --git a/node_modules/icss-utils/package.json b/node_modules/icss-utils/package.json new file mode 100644 index 0000000..c16f5bc --- /dev/null +++ b/node_modules/icss-utils/package.json @@ -0,0 +1,97 @@ +{ + "_from": "icss-utils@^2.1.0", + "_id": "icss-utils@2.1.0", + "_inBundle": false, + "_integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "_location": "/icss-utils", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "icss-utils@^2.1.0", + "name": "icss-utils", + "escapedName": "icss-utils", + "rawSpec": "^2.1.0", + "saveSpec": null, + "fetchSpec": "^2.1.0" + }, + "_requiredBy": [ + "/css-loader" + ], + "_resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "_shasum": "83f0a0ec378bf3246178b6c2ad9136f135b1c962", + "_spec": "icss-utils@^2.1.0", + "_where": "/home/pruss/Dev/3-minute-website/node_modules/css-loader", + "author": { + "name": "Glen Maddern" + }, + "babel": { + "presets": [ + [ + "env", + { + "targets": { + "node": 4 + } + } + ] + ] + }, + "bugs": { + "url": "https://github.com/css-modules/icss-utils/issues" + }, + "bundleDependencies": false, + "dependencies": { + "postcss": "^6.0.1" + }, + "deprecated": false, + "description": "ICSS utils for postcss ast", + "devDependencies": { + "babel-cli": "^6.24.1", + "babel-jest": "^20.0.3", + "babel-preset-env": "^1.5.1", + "eslint": "^3.19.0", + "husky": "^0.13.3", + "jest": "^20.0.3", + "lint-staged": "^3.4.2", + "prettier": "^1.3.1" + }, + "eslintConfig": { + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "extends": "eslint:recommended" + }, + "files": [ + "lib" + ], + "homepage": "https://github.com/css-modules/icss-utils#readme", + "keywords": [ + "css", + "modules", + "icss", + "postcss" + ], + "license": "ISC", + "lint-staged": { + "*.js": [ + "eslint", + "prettier --write", + "git add" + ] + }, + "main": "lib/index.js", + "name": "icss-utils", + "repository": { + "type": "git", + "url": "git+https://github.com/css-modules/icss-utils.git" + }, + "scripts": { + "build": "babel --out-dir lib src", + "precommit": "lint-staged", + "prepublish": "yarn test && yarn run build", + "test": "jest --coverage" + }, + "version": "2.1.0" +} |