UNPKG

raptor

Version:

RaptorJS provides an AMD module loader that works in Node, Rhino and the web browser. It also includes various sub-modules to support building optimized web applications.

63 lines (50 loc) 2.17 kB
var path = require('path'); define( 'raptor/optimizer/ResolveCSSUrlsFilter', function(require, exports, module) { "use strict"; function buildContext(context) { context = context ? raptor.extend({}, context) : {}; var dependency = context.dependency; var bundle = context.bundle; var optimizer = context.optimizer; var writer = context.writer; context.cssDependency = dependency; context.cssBundle = bundle; context.relativeFromDir = writer.outputDir; if (bundle) { context.inPlaceFromDir = writer.outputDir; } return context; } var logger = module.logger(), cssParser = require('raptor/css-parser'), strings = require('raptor/strings'), resources = require('raptor/resources'), promises = require('raptor/promises'), mime = require('raptor/mime'), raptor = require('raptor'); return { contentType: 'text/css', name: module.id, filter: function(code, contentType, context) { var resolveResourceUrlContext; var baseResource = context.dependency.getResource(); if (contentType === 'text/css') { var optimizer = context.optimizer; var output = cssParser.replaceUrls(code, function(url) { if (!resolveResourceUrlContext) { // Lazily build the new context if we find a URL in the CSS code resolveResourceUrlContext = buildContext(context); } return optimizer.resolveResourceUrl(url, baseResource, resolveResourceUrlContext); }, this); // NOTE: output could be either the filter code or a promise, but we don't care return output; } else { return code; } } }; });