This commit is contained in:
2025-11-14 11:39:33 +08:00
parent 6e5d892992
commit 1ba633ba45
7143 changed files with 922330 additions and 0 deletions

120
node_modules/postcss-helpers/lib/import.js generated vendored Normal file
View File

@@ -0,0 +1,120 @@
'use strict';
// using URLjs because I don't want to think about all this:
// http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding
var regexp = require( './regexp' );
var URI = require( 'urijs' );
var UrlHelper = require( './url' );
/**
* ImportHelper constructor
* @constructor
* @param {String} rule @import value.
*/
var ImportHelper = function ( rule ) {
var exports = {};
if ( ! ( this instanceof ImportHelper ) ) {
return new ImportHelper( rule );
}
this._originalURI = this._extractURI( rule );
if ( !this._originalURI ) { return false; }
this._originalRule = rule;
this._mediaQuery = this.getOriginalMediaQuery();
this.URI = URI( this._originalURI );
exports.URI = this.URI;
exports.getOriginalURI = this.getOriginalURI.bind( this );
exports.getModifiedRule = this.getModifiedRule.bind( this );
exports.getOriginalRule = this.getOriginalRule.bind( this );
exports.setMediaQuery = this.setMediaQuery.bind( this );
exports.getMediaQuery = this.getMediaQuery.bind( this );
exports.getOriginalMediaQuery = this.getOriginalMediaQuery.bind( this );
return exports;
};
ImportHelper.prototype = Object.create( UrlHelper.prototype );
ImportHelper.prototype.constructor = ImportHelper;
/**
* Extracts URI from rule.
* @private
* @param {String} rule String to test.
* @returns {String|undefined} Returns URI value or undefined.
*/
ImportHelper.prototype._extractURI = function( rule ) {
if ( rule.match( regexp.URLS ) ) {
return rule.match( regexp.URLS )[ 0 ]
.replace( /^url\s?\(/, '' )
.replace( /\)$/, '' )
.trim()
.replace( /^("|\')/, '' )
.replace( /("|\')$/, '' );
}
else if ( rule.match( regexp.STRINGS ) ) {
return rule.match( regexp.STRINGS )[ 0 ]
.replace( /^("|\')/, '' )
.replace( /("|\')$/, '' );
}
};
/**
* Returns media query from original string.
* @returns {String|boolean} Media query or false.
*/
ImportHelper.prototype.getOriginalMediaQuery = function() {
var query = this.getOriginalRule();
if ( query.match( regexp.URLS ) ) {
query = query.replace( regexp.URLS, '' ).trim();
}
else {
query = query.replace( regexp.STRINGS, '' ).trim();
}
return query || false;
};
/**
* Returns current media query.
* @returns {String|boolean} Media query or false.
*/
ImportHelper.prototype.getMediaQuery = function() {
return this._mediaQuery;
};
/**
* Sets media query value.
* @param {String} query New media query.
*/
ImportHelper.prototype.setMediaQuery = function( query ) {
this._mediaQuery = query;
};
/**
* Returns modified rule.
* @returns {String} Modified rule.
*/
ImportHelper.prototype.getModifiedRule = function () {
var rule = UrlHelper.prototype.getModifiedRule.apply( this );
if ( this.getMediaQuery() !== this.getOriginalMediaQuery() ) {
if ( this.getOriginalMediaQuery() ) {
rule = rule.replace( this.getOriginalMediaQuery(), this.getMediaQuery() || '' ).trim();
}
else if ( this.getMediaQuery() ) {
rule = rule + ' ' + this.getMediaQuery();
}
}
return rule;
};
module.exports = ImportHelper;

20
node_modules/postcss-helpers/lib/regexp.js generated vendored Normal file
View File

@@ -0,0 +1,20 @@
'use strict';
/** Making url() RegExp according to css tokenization rules:
* http://www.w3.org/TR/CSS21/syndata.html#tokenization
*/
var R_W = '[ \\t\\r\\n\\f]*';
var R_NL = '\\n|\\r\\n|\\r|\\f';
var R_UNICODE = '\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?';
var R_NONASCII = '[^\\0-\\237]';
var R_ESCAPE = R_UNICODE + '|\\\\[^\\n\\r\\f0-9a-f]';
var R_STRING_1 = '\\"([^\\n\\r\\f\\\\"]|\\\\' + R_NL + '|' + R_ESCAPE + ')*\\"';
var R_STRING_2 = '\\\'([^\\n\\r\\f\\\\\']|\\\\' + R_NL + '|' + R_ESCAPE + ')*\\\'';
var R_STRING = '(' + R_STRING_1 + '|' + R_STRING_2 + ')';
var R_URI = 'url\\(' + R_W + R_STRING + R_W + '\\)|url\\(' + R_W + '([!#$%&*-\\[\\]-~]|' + R_NONASCII + '|' + R_ESCAPE + ')*' + R_W + '\\)';
module.exports = {
STRINGS: new RegExp( R_STRING, 'ig' ),
URLS: new RegExp( R_URI, 'ig' )
};

92
node_modules/postcss-helpers/lib/url.js generated vendored Normal file
View File

@@ -0,0 +1,92 @@
'use strict';
// using URLjs because I don't want to think about all this:
// http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding
var URI = require( 'urijs' );
var regexp = require( './regexp' );
/**
* UrlHelper constructor
* @constructor
* @param {String} rule CSS rule with url().
*/
var UrlHelper = function ( rule ) {
var exports = {};
if ( ! ( this instanceof UrlHelper ) ) {
return new UrlHelper( rule );
}
this._originalURI = this._extractURI( rule );
if ( !this._originalURI && this._originalURI !== '') { return false; }
this._originalRule = rule;
this.URI = URI( this._originalURI );
exports.URI = this.URI;
exports.getOriginalURI = this.getOriginalURI.bind( this );
exports.getModifiedRule = this.getModifiedRule.bind( this );
exports.getOriginalRule = this.getOriginalRule.bind( this );
return exports;
};
/**
* Extracts URI from rule.
* @private
* @param {String} rule String to test.
* @returns {String|undefined} Returns URI value or undefined.
*/
UrlHelper.prototype._extractURI = function( rule ) {
if ( rule.match( regexp.URLS ) ) {
return rule.match( regexp.URLS )[ 0 ]
.replace( /^url\s?\(/, '' )
.replace( /\)$/, '' )
.trim()
.replace( /^("|\')/, '' )
.replace( /("|\')$/, '' );
}
return '';
};
/**
* Returns original URI.
* @returns {String} Original URI.
*/
UrlHelper.prototype.getOriginalURI = function () {
return this._originalURI;
};
/**
* Returns modified rule.
* @returns {String} Modified rule.
*/
UrlHelper.prototype.getModifiedRule = function () {
var modifiedURI = this.URI.toString();
var originalHasIEFix = this._originalURI.match( /\?#iefix/ );
var modifiedShouldHaveIEFix = modifiedURI.match( /[^?]#iefix/ );
// TODO Remove VERY ugly ?#iefix exeption handling, urijs normalizing it and removing "?"
if ( originalHasIEFix && modifiedShouldHaveIEFix ) {
modifiedURI = modifiedURI.replace( '#iefix', '?#iefix' );
}
if (this._originalRule.match(/url\(\s*\)/) && modifiedURI) {
return "url('" + modifiedURI + "')";
}
return this._originalRule.replace( this._originalURI, modifiedURI );
};
/**
* Returns original rule.
* @returns {String} Original rule.
*/
UrlHelper.prototype.getOriginalRule = function () {
return this._originalRule;
};
module.exports = UrlHelper;

73
node_modules/postcss-helpers/lib/urls.js generated vendored Normal file
View File

@@ -0,0 +1,73 @@
'use strict';
var UrlHelper = require( './url' );
var regexp = require( './regexp' );
/**
* UrlsHelper constructor
* @constructor
* @param {String} rule CSS rule with many url() blocks.
*/
var UrlsHelper = function( rule ) {
var exports = {};
if ( !rule.match( regexp.URLS ) ) {
return false;
}
if ( ! ( this instanceof UrlsHelper ) ) {
return new UrlsHelper( rule );
}
this._originalRule = rule;
this._helpers = [];
this.URIS = [];
rule.match( regexp.URLS ).forEach( function( url ) {
var urlHelper = new UrlHelper( url );
this._helpers.push( urlHelper );
this.URIS.push( urlHelper.URI );
}, this );
exports.URIS = this.URIS;
exports.getOriginalURIS = this.getOriginalURIS.bind( this );
exports.getModifiedRule = this.getModifiedRule.bind( this );
exports.getOriginalRule = this.getOriginalRule.bind( this );
return exports;
};
/**
* Returns modified rule.
* @returns {String} Modified rule.
*/
UrlsHelper.prototype.getModifiedRule = function() {
var rule = this._originalRule;
this._helpers.forEach( function ( uri ) {
rule = rule.replace( uri.getOriginalRule(), uri.getModifiedRule() );
} );
return rule;
};
/**
* Returns original rule.
* @returns {String} Original rule.
*/
UrlsHelper.prototype.getOriginalRule = function() {
return this._originalRule;
};
/**
* Returns array of original URIs.
* @returns {String} Original URIs array.
*/
UrlsHelper.prototype.getOriginalURIS = function () {
return this._helpers.map( function( helper ) {
return helper.getOriginalURI();
} );
};
module.exports = UrlsHelper;