grind-assets
Version:
Asset management for Grind
100 lines (76 loc) • 9.91 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RawCompiler = void 0;
var _Compiler = require("./Compiler.js");
var _BabelCompiler = require("./BabelCompiler");
var _ScssCompiler = require("./ScssCompiler.js");
var _grindSupport = require("grind-support");
const path = require('path');
class RawCompiler extends _Compiler.Compiler {
constructor(app, ...args) {
super(app, ...args);
this.wantsHashSuffixOnPublish = false;
this.directories = [];
this.mimes = null;
this.assets = null;
this.kind = 'raw';
this.assets = app.paths.base(app.config.get('assets.paths.source'));
this.mimes = app.config.get('assets.compilers.raw.mimes');
this.shouldProcessJs = app.config.get('assets.babel.allow_vanilla_js');
this.topLevel = app.config.get('assets.top_level');
if (this.topLevel) {
this.supportedExtensions = Object.keys(this.mimes);
if (!this.shouldProcessJs) {
this.supportedExtensions = this.supportedExtensions.filter(ext => ext !== 'js');
}
} else {
for (const directory of app.config.get('assets.compilers.raw.directories', [])) {
this.directories.push(path.join(this.assets, directory, '/'));
}
}
}
async compile(pathname) {
const result = await _grindSupport.FS.readFile(pathname);
if (!this.liveReload) {
return result;
}
const extname = path.extname(pathname).toLowerCase();
if (extname === '.css') {
return result.toString() + _ScssCompiler.ScssCompiler.buildLiveReloadInjection(this.app, pathname);
} else if (extname === '.js') {
return result.toString() + _BabelCompiler.BabelCompiler.buildLiveReloadInjection(this.app, pathname);
}
return result;
}
supports(pathname) {
if (this.topLevel) {
return super.supports(pathname);
}
const ext = path.extname(pathname).toLowerCase().substring(1);
for (const directory of this.directories) {
if (pathname.indexOf(directory) === 0 && typeof this.mimes[ext] === 'string') {
return true;
}
}
return false;
}
mime(asset) {
const ext = path.extname(asset.path).toLowerCase().substring(1);
return this.mimes[ext] || 'text/plain';
}
type(asset) {
for (const directory of this.directories) {
if (asset.path.indexOf(directory) === 0) {
return path.basename(directory);
}
}
return 'unknown';
}
extension(asset) {
return path.extname(asset.path).substring(1);
}
}
exports.RawCompiler = RawCompiler;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db21waWxlcnMvUmF3Q29tcGlsZXIuanMiXSwibmFtZXMiOlsicGF0aCIsInJlcXVpcmUiLCJSYXdDb21waWxlciIsIkNvbXBpbGVyIiwiY29uc3RydWN0b3IiLCJhcHAiLCJhcmdzIiwid2FudHNIYXNoU3VmZml4T25QdWJsaXNoIiwiZGlyZWN0b3JpZXMiLCJtaW1lcyIsImFzc2V0cyIsImtpbmQiLCJwYXRocyIsImJhc2UiLCJjb25maWciLCJnZXQiLCJzaG91bGRQcm9jZXNzSnMiLCJ0b3BMZXZlbCIsInN1cHBvcnRlZEV4dGVuc2lvbnMiLCJPYmplY3QiLCJrZXlzIiwiZmlsdGVyIiwiZXh0IiwiZGlyZWN0b3J5IiwicHVzaCIsImpvaW4iLCJjb21waWxlIiwicGF0aG5hbWUiLCJyZXN1bHQiLCJGUyIsInJlYWRGaWxlIiwibGl2ZVJlbG9hZCIsImV4dG5hbWUiLCJ0b0xvd2VyQ2FzZSIsInRvU3RyaW5nIiwiU2Nzc0NvbXBpbGVyIiwiYnVpbGRMaXZlUmVsb2FkSW5qZWN0aW9uIiwiQmFiZWxDb21waWxlciIsInN1cHBvcnRzIiwic3Vic3RyaW5nIiwiaW5kZXhPZiIsIm1pbWUiLCJhc3NldCIsInR5cGUiLCJiYXNlbmFtZSIsImV4dGVuc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUtBOztBQUNBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRU8sTUFBTUMsV0FBTixTQUEwQkMsa0JBQTFCLENBQW1DO0FBT3pDQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTSxHQUFHQyxJQUFULEVBQWU7QUFDekIsVUFBTUQsR0FBTixFQUFXLEdBQUdDLElBQWQ7QUFEeUIsU0FOMUJDLHdCQU0wQixHQU5DLEtBTUQ7QUFBQSxTQUwxQkMsV0FLMEIsR0FMWixFQUtZO0FBQUEsU0FKMUJDLEtBSTBCLEdBSmxCLElBSWtCO0FBQUEsU0FIMUJDLE1BRzBCLEdBSGpCLElBR2lCO0FBQUEsU0FGMUJDLElB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LENBQVo7QUFDQSxXQUFPLEtBQUs5QixLQUFMLENBQVdhLEdBQVgsS0FBbUIsWUFBMUI7QUFDQTs7QUFFRHFCLEVBQUFBLElBQUksQ0FBQ0QsS0FBRCxFQUFRO0FBQ1gsU0FBSyxNQUFNbkIsU0FBWCxJQUF3QixLQUFLZixXQUE3QixFQUEwQztBQUN6QyxVQUFJa0MsS0FBSyxDQUFDMUMsSUFBTixDQUFXd0MsT0FBWCxDQUFtQmpCLFNBQW5CLE1BQWtDLENBQXRDLEVBQXlDO0FBQ3hDLGVBQU92QixJQUFJLENBQUM0QyxRQUFMLENBQWNyQixTQUFkLENBQVA7QUFDQTtBQUNEOztBQUVELFdBQU8sU0FBUDtBQUNBOztBQUVEc0IsRUFBQUEsU0FBUyxDQUFDSCxLQUFELEVBQVE7QUFDaEIsV0FBTzFDLElBQUksQ0FBQ2dDLE9BQUwsQ0FBYVUsS0FBSyxDQUFDMUMsSUFBbkIsRUFBeUJ1QyxTQUF6QixDQUFtQyxDQUFuQyxDQUFQO0FBQ0E7O0FBL0V3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9Db21waWxlcidcblxuaW1wb3J0ICcuL0JhYmVsQ29tcGlsZXInXG5pbXBvcnQgJy4vU2Nzc0NvbXBpbGVyJ1xuXG5pbXBvcnQgeyBGUyB9IGZyb20gJ2dyaW5kLXN1cHBvcnQnXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5cbmV4cG9ydCBjbGFzcyBSYXdDb21waWxlciBleHRlbmRzIENvbXBpbGVyIHtcblx0d2FudHNIYXNoU3VmZml4T25QdWJsaXNoID0gZmFsc2Vcblx0ZGlyZWN0b3JpZXMgPSBbXVxuXHRtaW1lcyA9IG51bGxcblx0YXNzZXRzID0gbnVsbFxuXHRraW5kID0gJ3JhdydcblxuXHRjb25zdHJ1Y3RvcihhcHAsIC4uLmFyZ3MpIHtcblx0XHRzdXBlcihhcHAsIC4uLmFyZ3MpXG5cblx0XHR0aGlzLmFzc2V0cyA9IGFwcC5wYXRocy5iYXNlKGFwcC5jb25maWcuZ2V0KCdhc3NldHMucGF0aHMuc291cmNlJykpXG5cdFx0dGhpcy5taW1lcyA9IGFwcC5jb25maWcuZ2V0KCdhc3NldHMuY29tcGlsZXJzLnJhdy5taW1lcycpXG5cdFx0dGhpcy5zaG91bGRQcm9jZXNzSnMgPSBhcHAuY29uZmlnLmdldCgnYXNzZXRzLmJhYmVsLmFsbG93X3ZhbmlsbGFfanMnKVxuXHRcdHRoaXMudG9wTGV2ZWwgPSBhcHAuY29uZmlnLmdldCgnYXNzZXRzLnRvcF9sZXZlbCcpXG5cblx0XHRpZiAodGhpcy50b3BMZXZlbCkge1xuXHRcdFx0dGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zID0gT2JqZWN0LmtleXModGhpcy5taW1lcylcblxuXHRcdFx0aWYgKCF0aGlzLnNob3VsZFByb2Nlc3NKcykge1xuXHRcdFx0XHR0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMgPSB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMuZmlsdGVyKGV4dCA9PiBleHQgIT09ICdqcycpXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGFwcC5jb25maWcuZ2V0KCdhc3NldHMuY29tcGlsZXJzLnJhdy5kaXJlY3RvcmllcycsIFtdKSkge1xuXHRcdFx0XHR0aGlzLmRpcmVjdG9yaWVzLnB1c2gocGF0aC5qb2luKHRoaXMuYXNzZXRzLCBkaXJlY3RvcnksICcvJykpXG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgY29tcGlsZShwYXRobmFtZSkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IEZTLnJlYWRGaWxlKHBhdGhuYW1lKVxuXG5cdFx0aWYgKCF0aGlzLmxpdmVSZWxvYWQpIHtcblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9XG5cblx0XHRjb25zdCBleHRuYW1lID0gcGF0aC5leHRuYW1lKHBhdGhuYW1lKS50b0xvd2VyQ2FzZSgpXG5cblx0XHRpZiAoZXh0bmFtZSA9PT0gJy5jc3MnKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkgKyBTY3NzQ29tcGlsZXIuYnVpbGRMaXZlUmVsb2FkSW5qZWN0aW9uKHRoaXMuYXBwLCBwYXRobmFtZSlcblx0XHR9IGVsc2UgaWYgKGV4dG5hbWUgPT09ICcuanMnKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCkgKyBCYWJlbENvbXBpbGVyLmJ1aWxkTGl2ZVJlbG9hZEluamVjdGlvbih0aGlzLmFwcCwgcGF0aG5hbWUpXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdFxuXHR9XG5cblx0c3VwcG9ydHMocGF0aG5hbWUpIHtcblx0XHRpZiAodGhpcy50b3BMZXZlbCkge1xuXHRcdFx0cmV0dXJuIHN1cGVyLnN1cHBvcnRzKHBhdGhuYW1lKVxuXHRcdH1cblxuXHRcdGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShwYXRobmFtZSkudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMSlcblxuXHRcdGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIHRoaXMuZGlyZWN0b3JpZXMpIHtcblx0XHRcdGlmIChwYXRobmFtZS5pbmRleE9mKGRpcmVjdG9yeSkgPT09IDAgJiYgdHlwZW9mIHRoaXMubWltZXNbZXh0XSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0cmV0dXJuIHRydWVcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXG5cdG1pbWUoYXNzZXQpIHtcblx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoYXNzZXQucGF0aCkudG9Mb3dlckNhc2UoKS5zdWJzdHJpbmcoMSlcblx0XHRyZXR1cm4gdGhpcy5taW1lc1tleHRdIHx8ICd0ZXh0L3BsYWluJ1xuXHR9XG5cblx0dHlwZShhc3NldCkge1xuXHRcdGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIHRoaXMuZGlyZWN0b3JpZXMpIHtcblx0XHRcdGlmIChhc3NldC5wYXRoLmluZGV4T2YoZGlyZWN0b3J5KSA9PT0gMCkge1xuXHRcdFx0XHRyZXR1cm4gcGF0aC5iYXNlbmFtZShkaXJlY3RvcnkpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuICd1bmtub3duJ1xuXHR9XG5cblx0ZXh0ZW5zaW9uKGFzc2V0KSB7XG5cdFx0cmV0dXJuIHBhdGguZXh0bmFtZShhc3NldC5wYXRoKS5zdWJzdHJpbmcoMSlcblx0fVxufVxuIl19