UNPKG

derby

Version:

MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.

76 lines (75 loc) 2.75 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.loadStylesSync = exports.loadViewsSync = void 0; /* * files.ts * load templates and styles from disk * */ var fs = require("node:fs"); var path = require("node:path"); var racer = require("racer"); var resolve = require("resolve"); var parsing = require("./parsing"); function loadViewsSync(app, sourceFilename, namespace) { var views = []; var files = []; var filename = resolve.sync(sourceFilename, { extensions: app.viewExtensions, packageFilter: deleteMain }); if (!filename) { throw new Error('View template file not found: ' + sourceFilename); } var file = fs.readFileSync(filename, 'utf8'); var extension = path.extname(filename); var compiler = app.compilers[extension]; if (!compiler) { throw new Error('Unable to find compiler for: ' + extension); } function onImport(attrs) { var dir = path.dirname(filename); var importFilename = resolve.sync(attrs.src, { basedir: dir, extensions: app.viewExtensions, packageFilter: deleteMain }); var importNamespace = parsing.getImportNamespace(namespace, attrs, importFilename); var imported = loadViewsSync(app, importFilename, importNamespace); views = views.concat(imported.views); files = files.concat(imported.files); } var htmlFile = compiler(file, filename); var parsedViews = parsing.parseViews(htmlFile, namespace, filename, onImport); return { views: views.concat(parsedViews), files: files.concat(filename) }; } exports.loadViewsSync = loadViewsSync; function loadStylesSync(app, sourceFilename, options) { if (options == null) { options = { compress: racer.util.isProduction }; } var resolved = resolve.sync(sourceFilename, { extensions: app.styleExtensions, packageFilter: deleteMain }); if (!resolved) { throw new Error('Style file not found: ' + sourceFilename); } var extension = path.extname(resolved); var compiler = app.compilers[extension]; if (!compiler) { throw new Error('Unable to find compiler for: ' + extension); } var file = fs.readFileSync(resolved, 'utf8'); return compiler(file, resolved, options); } exports.loadStylesSync = loadStylesSync; // Resolve will use a main path from a package.json if found. Main is the // entry point for javascript in a module, so this will mistakenly cause us to // load the JS file instead of a view or style file in some cases. This package // filter deletes the main property so that the normal file name lookup happens function deleteMain() { return {}; }