Socket
Socket
Sign inDemoInstall

postcss-import

Package Overview
Dependencies
Maintainers
1
Versions
54
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postcss-import - npm Package Compare versions

Comparing version 5.2.2 to 6.0.0

6

CHANGELOG.md

@@ -0,1 +1,7 @@

# 6.0.0 - 2015-06-17
- Changed: warnings messages are now using postcss message api (4.1.x)
- Added: warning when a import statement has not been closed correctly
([#42](https://github.com/postcss/postcss-import/issues/42))
# 5.2.2 - 2015-04-19

@@ -2,0 +8,0 @@

224

index.js

@@ -1,3 +0,1 @@

"use strict";
/**

@@ -9,2 +7,3 @@ * Module dependencies.

var assign = require("object-assign")
var clone = require("clone")

@@ -22,12 +21,8 @@ var resolve = require("resolve")

"web_modules",
"node_modules"
"node_modules",
]
/**
* Expose the plugin.
*/
module.exports = AtImport
module.exports.postcss = function(styles) {
return module.exports()(styles)
}
var warnNodesMessage =
"It looks like you didn't end correctly your @import statement. " +
"Some children nodes are attached to it"

@@ -40,3 +35,3 @@ /**

function AtImport(options) {
options = options || {}
options = assign({}, options || {})
options.root = options.root || process.cwd()

@@ -50,5 +45,13 @@ options.path = (

return function(styles) {
return function(styles, result) {
// auto add from option if possible
if (!options.from && styles && styles.nodes && styles.nodes[0] && styles.nodes[0].source && styles.nodes[0].source.input && styles.nodes[0].source.input.file) {
if (
!options.from &&
styles &&
styles.nodes &&
styles.nodes[0] &&
styles.nodes[0].source &&
styles.nodes[0].source.input &&
styles.nodes[0].source.input.file
) {
options.from = styles.nodes[0].source.input.file

@@ -68,3 +71,3 @@ }

importedFiles[options.from] = {
"": true
"": true,
}

@@ -76,3 +79,12 @@ }

parseStyles(styles, options, insertRules, importedFiles, ignoredAtRules, null, hashFiles)
parseStyles(
result,
styles,
options,
insertRules,
importedFiles,
ignoredAtRules,
null,
hashFiles
)
addIgnoredAtRulesOnTop(styles, ignoredAtRules)

@@ -92,5 +104,17 @@

*/
function parseStyles(styles, options, cb, importedFiles, ignoredAtRules, media, hashFiles) {
function parseStyles(
result,
styles,
options,
cb,
importedFiles,
ignoredAtRules,
media,
hashFiles
) {
var imports = []
styles.eachAtRule("import", function checkAtRule(atRule) {
if (atRule.nodes) {
result.warn(warnNodesMessage, {node: atRule})
}
if (options.glob && glob.hasMagic(atRule.params)) {

@@ -105,3 +129,12 @@ imports = parseGlob(atRule, options, imports)

helpers.try(function transformAtImport() {
readAtImport(atRule, options, cb, importedFiles, ignoredAtRules, media, hashFiles)
readAtImport(
result,
atRule,
options,
cb,
importedFiles,
ignoredAtRules,
media,
hashFiles
)
}, atRule.source)

@@ -119,8 +152,10 @@ })

function parseGlob(atRule, options, imports) {
var globPattern = atRule.params.replace(/['"]/g, "").replace(/(?:url\(|\))/g, "")
var globPattern = atRule.params
.replace(/['"]/g, "")
.replace(/(?:url\(|\))/g, "")
var paths = options.path.concat(moduleDirectories)
var files = []
var dir = options.source && options.source.input && options.source.input.file ?
path.dirname(path.resolve(options.root, options.source.input.file)) :
options.root
var dir = options.source && options.source.input && options.source.input.file
? path.dirname(path.resolve(options.root, options.source.input.file))
: options.root
paths.forEach(function(p) {

@@ -132,17 +167,23 @@ p = path.resolve(dir, p)

files.push(file)
});
});
})
})
files.forEach(function(file) {
var deglobbedAtRule = atRule.clone({
params: "\"" + file + "\""
params: "\"" + file + "\"",
})
if (deglobbedAtRule.source && deglobbedAtRule.source.input && deglobbedAtRule.source.input.css) {
deglobbedAtRule.source.input.css = atRule.source.input.css.replace(globPattern, file)
if (
deglobbedAtRule.source &&
deglobbedAtRule.source.input &&
deglobbedAtRule.source.input.css
) {
deglobbedAtRule.source.input.css = atRule.source.input.css
.replace(globPattern, file)
}
atRule.parent.insertBefore(atRule, deglobbedAtRule)
imports.push(deglobbedAtRule)
});
})
atRule.removeSelf()
return imports;
return imports
}

@@ -163,3 +204,4 @@

var ignoredAtRule = ignoredAtRules[i][0]
ignoredAtRule.params = ignoredAtRules[i][1].fullUri + (ignoredAtRules[i][1].media ? " " + ignoredAtRules[i][1].media : "")
ignoredAtRule.params = ignoredAtRules[i][1].fullUri +
(ignoredAtRules[i][1].media ? " " + ignoredAtRules[i][1].media : "")

@@ -174,3 +216,4 @@ // keep ast ref

// separate remote import a little with others rules if no newlines already
if (first && first.before.indexOf("\n") === -1) {
if (first &&
first.before.indexOf("\n") === -1) {
first.before = "\n\n" + first.before

@@ -187,3 +230,12 @@ }

*/
function readAtImport(atRule, options, cb, importedFiles, ignoredAtRules, media, hashFiles) {
function readAtImport(
result,
atRule,
options,
cb,
importedFiles,
ignoredAtRules,
media,
hashFiles
) {
// parse-import module parse entire line

@@ -194,5 +246,8 @@ // @todo extract what can be interesting from this one

// adjust media according to current scope
media = parsedAtImport.media ? (media ? media + " and " : "") + parsedAtImport.media : (media ? media : null)
media = parsedAtImport.media
? (media ? media + " and " : "") + parsedAtImport.media
: (media ? media : null)
// just update protocol base uri (protocol://url) or protocol-relative (//url) if media needed
// just update protocol base uri (protocol://url) or protocol-relative
// (//url) if media needed
if (parsedAtImport.uri.match(/^(?:[a-z]+:)?\/\//i)) {

@@ -211,6 +266,15 @@ parsedAtImport.media = media

addInputToPath(options)
var resolvedFilename = resolveFilename(parsedAtImport.uri, options.root, options.path, atRule.source)
var resolvedFilename = resolveFilename(
parsedAtImport.uri,
options.root,
options.path,
atRule.source,
options.resolve
)
// skip files already imported at the same scope
if (importedFiles[resolvedFilename] && importedFiles[resolvedFilename][media]) {
if (
importedFiles[resolvedFilename] &&
importedFiles[resolvedFilename][media]
) {
detach(atRule)

@@ -226,4 +290,14 @@ return

readImportedContent(atRule, parsedAtImport, clone(options), resolvedFilename, cb, importedFiles, ignoredAtRules, media, hashFiles)
readImportedContent(
result,
atRule,
parsedAtImport,
clone(options),
resolvedFilename,
cb,
importedFiles,
ignoredAtRules,
media,
hashFiles
)
}

@@ -240,3 +314,14 @@

*/
function readImportedContent(atRule, parsedAtImport, options, resolvedFilename, cb, importedFiles, ignoredAtRules, media, hashFiles) {
function readImportedContent(
result,
atRule,
parsedAtImport,
options,
resolvedFilename,
cb,
importedFiles,
ignoredAtRules,
media,
hashFiles
) {
// add directory containing the @imported file in the paths

@@ -251,6 +336,12 @@ // to allow local import from this file

options.from = resolvedFilename
var fileContent = readFile(resolvedFilename, options.encoding, options.transform || function(value) { return value })
var fileContent = readFile(
resolvedFilename,
options.encoding,
options.transform || function(value) {
return value
}
)
if (fileContent.trim() === "") {
console.log(helpers.message(resolvedFilename + " is empty", atRule.source))
result.warn(resolvedFilename + " is empty", {node: atRule})
detach(atRule)

@@ -261,3 +352,3 @@ return

// skip files wich only contain @import rules
var newFileContent = fileContent.replace(/@import (.*);/,"")
var newFileContent = fileContent.replace(/@import (.*);/, "")
if (newFileContent.trim() !== "") {

@@ -282,3 +373,12 @@ var fileContentHash = hash(fileContent)

// recursion: import @import from imported file
parseStyles(newStyles, options, cb, importedFiles, ignoredAtRules, parsedAtImport.media, hashFiles)
parseStyles(
result,
newStyles,
options,
cb,
importedFiles,
ignoredAtRules,
parsedAtImport.media,
hashFiles
)

@@ -303,3 +403,2 @@ cb(atRule, parsedAtImport, newStyles, resolvedFilename)

newStyles.nodes[0].before = newStyles.nodes[0].before || "\n"
// newStyles.nodes[newStyles.nodes.length - 1].after = (newStyles.nodes[newStyles.nodes.length - 1].after || "") + "\n"
}

@@ -310,7 +409,9 @@

name: "media",
params: parsedAtImport.media
params: parsedAtImport.media,
})
// keep AST clean
newNodes.forEach(function(node) {node.parent = wrapper})
newNodes.forEach(function(node) {
node.parent = wrapper
})
wrapper.source = atRule.source

@@ -331,3 +432,5 @@

// keep AST clean
newNodes.forEach(function(node) {node.parent = atRule.parent})
newNodes.forEach(function(node) {
node.parent = atRule.parent
})

@@ -353,3 +456,3 @@ // replace atRule by imported nodes

uri: matches[2],
media: matches[3] ? matches[3] : null
media: matches[3] ? matches[3] : null,
}

@@ -363,4 +466,6 @@ }

*/
function resolveFilename(name, root, paths, source) {
var dir = source && source.input && source.input.file ? path.dirname(path.resolve(root, source.input.file)) : root
function resolveFilename(name, root, paths, source, resolver) {
var dir = source && source.input && source.input.file
? path.dirname(path.resolve(root, source.input.file))
: root

@@ -376,7 +481,8 @@ try {

return pkg
}
},
}
var file
resolver = resolver || resolve.sync
try {
file = resolve.sync(name, resolveOpts)
file = resolver(name, resolveOpts)
}

@@ -388,11 +494,11 @@ catch (e) {

try {
file = resolve.sync("./" + name, resolveOpts)
file = resolver("./" + name, resolveOpts)
}
catch (e) {
catch (err) {
// LAST HOPE
if (!paths.some(function(dir) {
file = path.join(dir, name)
if (!paths.some(function(dir2) {
file = path.join(dir2, name)
return fs.existsSync(file)
})) {
throw e
throw err
}

@@ -441,1 +547,7 @@ }

}
module.exports = postcss.plugin(
"postcss-import",
AtImport
)
module.exports.warnNodesMessage = warnNodesMessage
{
"name": "postcss-import",
"version": "5.2.2",
"version": "6.0.0",
"description": "PostCSS plugin to import CSS files",

@@ -27,3 +27,4 @@ "keywords": [

"glob": "^5.0.1",
"postcss": "^4.0.2",
"object-assign": "^3.0.0",
"postcss": "^4.1.4",
"postcss-message-helpers": "^2.0.0",

@@ -35,12 +36,8 @@ "resolve": "^1.0.0",

"css-whitespace": "^1.1.0",
"jscs": "^1.6.2",
"jshint": "^2.5.6",
"eslint": "^0.23.0",
"tape": "^3.0.0"
},
"scripts": {
"jscs": "jscs .",
"jshint": "jshint . --exclude-path .gitignore",
"pretest": "npm run jscs && npm run jshint",
"test": "tape test/*.js"
"test": "eslint . && tape test"
}
}

@@ -124,2 +124,9 @@ # postcss-import [![Travis Build Status](https://travis-ci.org/postcss/postcss-import.svg)](https://travis-ci.org/postcss/postcss-import) [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/u8l6u3lr6s5u5tpi?svg=true)](https://ci.appveyor.com/project/MoOx/postcss-import)

#### `resolve`
Type: `Function`
Default: `null`
You can overwrite the default path resolving way by setting this option, using the `resolve.sync(id, opts)` signature that [resolve.sync](https://github.com/substack/node-resolve#resolvesyncid-opts) has.
#### Example with some options

@@ -126,0 +133,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc