Initial commit

This commit is contained in:
Developer
2025-04-21 16:03:20 +02:00
commit 2832896157
22874 changed files with 3092801 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
[![Build Status](https://travis-ci.org/css-modules/icss-utils.svg)](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.

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 }; }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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": "D:\\developments\\teaser-inertia\\nova-components\\NovaLeader\\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"
}