This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community. Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it. https://www.freifunk-altdorf.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

146 lines
3.9 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.revert = revert;
exports.default = register;
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
var _sourceMapSupport = _interopRequireDefault(require("source-map-support"));
var registerCache = _interopRequireWildcard(require("./cache"));
var _escapeRegExp = _interopRequireDefault(require("lodash/escapeRegExp"));
var babel = _interopRequireWildcard(require("@babel/core"));
var _pirates = require("pirates");
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const maps = {};
let transformOpts = {};
let piratesRevert = null;
function installSourceMapSupport() {
_sourceMapSupport.default.install({
handleUncaughtExceptions: false,
environment: "node",
retrieveSourceMap(source) {
const map = maps && maps[source];
if (map) {
return {
url: null,
map: map
};
} else {
return null;
}
}
});
}
let cache;
function mtime(filename) {
return +_fs.default.statSync(filename).mtime;
}
function compile(code, filename) {
const opts = new babel.OptionManager().init(Object.assign({
sourceRoot: _path.default.dirname(filename)
}, (0, _cloneDeep.default)(transformOpts), {
filename
}));
if (opts === null) return code;
let cacheKey = `${JSON.stringify(opts)}:${babel.version}`;
const env = babel.getEnv(false);
if (env) cacheKey += `:${env}`;
let cached = cache && cache[cacheKey];
if (!cached || cached.mtime !== mtime(filename)) {
cached = babel.transform(code, Object.assign({}, opts, {
sourceMaps: opts.sourceMaps === undefined ? "both" : opts.sourceMaps,
ast: false
}));
if (cache) {
cache[cacheKey] = cached;
cached.mtime = mtime(filename);
}
}
if (cached.map) {
if (Object.keys(maps).length === 0) {
installSourceMapSupport();
}
maps[filename] = cached.map;
}
return cached.code;
}
let compiling = false;
function compileHook(code, filename) {
if (compiling) return code;
try {
compiling = true;
return compile(code, filename);
} finally {
compiling = false;
}
}
function hookExtensions(exts) {
if (piratesRevert) piratesRevert();
piratesRevert = (0, _pirates.addHook)(compileHook, {
exts,
ignoreNodeModules: false
});
}
function revert() {
if (piratesRevert) piratesRevert();
}
register();
function register(opts = {}) {
opts = Object.assign({}, opts);
hookExtensions(opts.extensions || babel.DEFAULT_EXTENSIONS);
if (opts.cache === false && cache) {
registerCache.clear();
cache = null;
} else if (opts.cache !== false && !cache) {
registerCache.load();
cache = registerCache.get();
}
delete opts.extensions;
delete opts.cache;
transformOpts = Object.assign({}, opts);
let {
cwd = "."
} = transformOpts;
cwd = transformOpts.cwd = _path.default.resolve(cwd);
if (transformOpts.ignore === undefined && transformOpts.only === undefined) {
transformOpts.only = [new RegExp("^" + (0, _escapeRegExp.default)(cwd), "i")];
transformOpts.ignore = [new RegExp("^" + (0, _escapeRegExp.default)(cwd) + "(?:" + _path.default.sep + ".*)?" + (0, _escapeRegExp.default)(_path.default.sep + "node_modules" + _path.default.sep), "i")];
}
}