firebase-bolt
Version:
Firebase Bolt Security and Modeling Language Compiler
105 lines (103 loc) • 8.45 kB
JavaScript
;
exports.__esModule = true;
/*
* Copyright 2015 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var lastError;
var lastMessage;
var errorCount;
var silenceOutput;
var DEBUG = false;
var getContext = function () { return ({}); };
reset();
function reset() {
lastError = undefined;
lastMessage = undefined;
errorCount = 0;
silenceOutput = false;
}
exports.reset = reset;
function setDebug(debug) {
if (debug === void 0) { debug = true; }
DEBUG = debug;
}
exports.setDebug = setDebug;
function silent(f) {
if (f === void 0) { f = true; }
silenceOutput = f;
}
exports.silent = silent;
function setContext(fn) {
getContext = fn;
}
exports.setContext = setContext;
function error(s) {
var err = errorString(s);
// De-dup identical messages
if (err === lastMessage) {
return;
}
lastMessage = err;
lastError = lastMessage;
if (!silenceOutput) {
console.error(lastError);
if (DEBUG) {
var e = new Error("Stack trace");
console.error(e.stack);
}
}
errorCount += 1;
}
exports.error = error;
function warn(s) {
var err = errorString(s);
// De-dup identical messages
if (err === lastMessage) {
return;
}
lastMessage = err;
if (!silenceOutput) {
console.warn(lastMessage);
}
}
exports.warn = warn;
function getLastMessage() {
return lastMessage;
}
exports.getLastMessage = getLastMessage;
function errorString(s) {
var ctx = getContext();
if (ctx.line !== undefined && ctx.column !== undefined) {
return 'bolt:' + ctx.line + ':' + ctx.column + ': ' + s;
}
else {
return 'bolt: ' + s;
}
}
function hasErrors() {
return errorCount > 0;
}
exports.hasErrors = hasErrors;
function errorSummary() {
if (errorCount === 1) {
return lastError;
}
if (errorCount !== 0) {
return "Fatal errors: " + errorCount;
}
return "";
}
exports.errorSummary = errorSummary;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFnQixHQUFHLFVBQVUsQ0FBQztLQUN0QztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQVRELG9DQVNDIiwiZmlsZSI6ImxvZ2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xubGV0IGxhc3RFcnJvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IGxhc3RNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5sZXQgZXJyb3JDb3VudDogbnVtYmVyO1xubGV0IHNpbGVuY2VPdXRwdXQ6IGJvb2xlYW47XG5cbmxldCBERUJVRyA9IGZhbHNlO1xuXG5sZXQgZ2V0Q29udGV4dCA9ICgpID0+ICg8RXJyb3JDb250ZXh0PiB7fSk7XG5cbnJlc2V0KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldCgpIHtcbiAgbGFzdEVycm9yID0gdW5kZWZpbmVkO1xuICBsYXN0TWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgZXJyb3JDb3VudCA9IDA7XG4gIHNpbGVuY2VPdXRwdXQgPSBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnKGRlYnVnID0gdHJ1ZSkge1xuICBERUJVRyA9IGRlYnVnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lsZW50KGYgPSB0cnVlKSB7XG4gIHNpbGVuY2VPdXRwdXQgPSBmO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQ29udGV4dCB7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbHVtbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldENvbnRleHQoZm46ICgpID0+IEVycm9yQ29udGV4dCkge1xuICBnZXRDb250ZXh0ID0gZm47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvcihzOiBzdHJpbmcpIHtcbiAgbGV0IGVyciA9IGVycm9yU3RyaW5nKHMpO1xuICAvLyBEZS1kdXAgaWRlbnRpY2FsIG1lc3NhZ2VzXG4gIGlmIChlcnIgID09PSBsYXN0TWVzc2FnZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsYXN0TWVzc2FnZSA9IGVycjtcbiAgbGFzdEVycm9yID0gbGFzdE1lc3NhZ2U7XG4gIGlmICghc2lsZW5jZU91dHB1dCkge1xuICAgIGNvbnNvbGUuZXJyb3IobGFzdEVycm9yKTtcbiAgICBpZiAoREVCVUcpIHtcbiAgICAgIGxldCBlID0gbmV3IEVycm9yKFwiU3RhY2sgdHJhY2VcIik7XG4gICAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICAgIH1cbiAgfVxuICBlcnJvckNvdW50ICs9IDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuKHM6IHN0cmluZykge1xuICBsZXQgZXJyID0gZXJyb3JTdHJpbmcocyk7XG4gIC8vIERlLWR1cCBpZGVudGljYWwgbWVzc2FnZXNcbiAgaWYgKGVyciA9PT0gbGFzdE1lc3NhZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGFzdE1lc3NhZ2UgPSBlcnI7XG4gIGlmICghc2lsZW5jZU91dHB1dCkge1xuICAgIGNvbnNvbGUud2FybihsYXN0TWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3RNZXNzYWdlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBsYXN0TWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZXJyb3JTdHJpbmcoczogc3RyaW5nKSB7XG4gIGxldCBjdHggPSBnZXRDb250ZXh0KCk7XG4gIGlmIChjdHgubGluZSAhPT0gdW5kZWZpbmVkICYmIGN0eC5jb2x1bW4gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnYm9sdDonICsgY3R4LmxpbmUgKyAnOicgKyBjdHguY29sdW1uICsgJzogJyArIHM7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICdib2x0OiAnICsgcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXJyb3JDb3VudCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvclN1bW1hcnkoKTogc3RyaW5nIHtcbiAgaWYgKGVycm9yQ291bnQgPT09IDEpIHtcbiAgICByZXR1cm4gPHN0cmluZz4gbGFzdEVycm9yO1xuICB9XG5cbiAgaWYgKGVycm9yQ291bnQgIT09IDApIHtcbiAgICByZXR1cm4gXCJGYXRhbCBlcnJvcnM6IFwiICsgZXJyb3JDb3VudDtcbiAgfVxuICByZXR1cm4gXCJcIjtcbn1cbiJdfQ==