UNPKG

fluorine-loader

Version:

A webpack loader to compile fluorine specializations and catalyst handlers.

82 lines 3.58 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const loader_utils_1 = require("loader-utils"); const perf_hooks_1 = require("perf_hooks"); const sorcery = require("source-map"); const transformer_1 = require("./transformer"); let now = perf_hooks_1.performance.now; function fluorine_loader(source, last_sourcemap) { let opts = loader_utils_1.getOptions(this) || {}; if (opts.sourceMap === undefined) opts.sourceMap = this.sourceMap; opts._filename = this.resource; let callback = this.async(); _async_loader(source, last_sourcemap, opts) .then(([code, sourcemap]) => { callback(null, code, sourcemap); }) .catch(err => { callback(err); }); return undefined; } exports.default = fluorine_loader; function _async_loader(source, last_sourcemap, opts = {}) { return __awaiter(this, void 0, void 0, function* () { let { code, sourcemap: next_sourcemap, performance: time } = yield transformer_1.transform(source instanceof Buffer ? source.toString() : source, { sourcemap: opts.sourceMap, now }); if (next_sourcemap) { let merged_sourcemap = next_sourcemap; if (last_sourcemap) { next_sourcemap.file = last_sourcemap.file; next_sourcemap.sourceRoot = last_sourcemap.sourceRoot; let source_gen = sorcery.SourceMapGenerator.fromSourceMap(yield new sorcery.SourceMapConsumer(next_sourcemap)); source_gen.applySourceMap(yield new sorcery.SourceMapConsumer(last_sourcemap)); merged_sourcemap = source_gen.toJSON(); } time.sourcemap = now(); if (opts.benchmark) show_performance(time, opts); return [code, merged_sourcemap]; } else { if (opts.benchmark) show_performance(time, opts); return [code]; } }); } function show_performance(time, opts = {}) { console.log(" Fluorine Loader transformed", opts._filename, "in", i((time.sourcemap !== undefined ? time.sourcemap : time.walk) - time.start) + "ms"); console.log(` - parse ..................${h(time.parse - time.start)}ms - walk ...................${h(time.walk - time.parse)}ms - visit ................${h(time.visit)}ms - transform_element ..${h(time.transform_element)}ms - transform_catalyst .${h(time.transform_catalyst)}ms - md5 ..................${h(time.md5)}ms ${time.sourcemap !== undefined ? `- sourcemap ..............${h(time.sourcemap - time.walk)}ms` : ""} `.slice(1, -1)); } function h(num) { let prefix = ""; for (let ix = 0; ix < 3 - ("" + Math.floor(num)).length; ix += 1) prefix += "."; return prefix + " " + i(num); } function i(num) { if (Math.floor(num) == num) return "" + num; else return num.toFixed(3); } //# sourceMappingURL=index.js.map