UNPKG

relay-compiler-plus

Version:

A custom relay modern compiler that supports persisted queries

142 lines 4.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs"); var path = require("path"); var double = /\/\//; function toUnix(fileName) { var res = fileName.replace(/\\/g, '/'); while (res.match(double)) { res = res.replace(double, '/'); } return res; } exports.toUnix = toUnix; var caseInsensitiveFs; function isCaseInsensitive() { if (typeof caseInsensitiveFs !== 'undefined') { return caseInsensitiveFs; } var lowerCaseStat = statSyncNoException(process.execPath.toLowerCase()); var upperCaseStat = statSyncNoException(process.execPath.toUpperCase()); if (lowerCaseStat && upperCaseStat) { caseInsensitiveFs = lowerCaseStat.dev === upperCaseStat.dev && lowerCaseStat.ino === upperCaseStat.ino; } else { caseInsensitiveFs = false; } return caseInsensitiveFs; } exports.isCaseInsensitive = isCaseInsensitive; function statSyncNoException(path) { try { return fs.statSync(path); } catch (e) { return undefined; } } function withoutExt(fileName) { return path.basename(fileName).split('.')[0]; } function compareFileName(first, second) { if (isCaseInsensitive()) { return first.toLowerCase() === second.toLowerCase(); } else { return first === second; } } function isFileEmit(fileName, outputFileName, sourceFileName) { return compareFileName(sourceFileName, fileName) && (outputFileName.substr(-3).toLowerCase() === '.js' || outputFileName.substr(-4).toLowerCase() === '.jsx'); } function isSourceMapEmit(fileName, outputFileName, sourceFileName) { return compareFileName(sourceFileName, fileName) && (outputFileName.substr(-7).toLowerCase() === '.js.map' || outputFileName.substr(-8).toLowerCase() === '.jsx.map'); } function isDeclarationEmit(fileName, outputFileName, sourceFileName) { return compareFileName(sourceFileName, fileName) && (outputFileName.substr(-5).toLowerCase() === '.d.ts'); } function findResultFor(fileName, output) { var text; var sourceMap; var declaration; fileName = withoutExt(fileName); for (var i = 0; i < output.outputFiles.length; i++) { var o = output.outputFiles[i]; var outputFileName = o.name; var sourceFileName = withoutExt(o.name); if (isFileEmit(fileName, outputFileName, sourceFileName)) { text = o.text; } if (isSourceMapEmit(fileName, outputFileName, sourceFileName)) { sourceMap = o.text; } if (isDeclarationEmit(fileName, outputFileName, sourceFileName)) { declaration = o; } } return { text: text, sourceMap: sourceMap, declaration: declaration }; } exports.findResultFor = findResultFor; function codegenErrorReport(errors) { return errors .map(function (error) { return 'console.error(' + JSON.stringify(error) + ');'; }) .join('\n'); } exports.codegenErrorReport = codegenErrorReport; function formatError(diagnostic) { var lineChar; if (diagnostic.file) { lineChar = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start); } return ((diagnostic.file ? path.normalize(diagnostic.file.fileName) : '') + (lineChar ? formatLineChar(lineChar) + ' ' : '') + "\n" + (typeof diagnostic.messageText == "string" ? diagnostic.messageText : formatMessageChain(diagnostic.messageText))); } exports.formatError = formatError; function formatMessageChain(chain) { var result = ""; var separator = "\n "; var current = chain; while (current) { result += current.messageText; if (!!current.next) { result += separator; separator += " "; } current = current.next; } return result; } exports.formatMessageChain = formatMessageChain; function formatLineChar(lineChar) { return ':' + (lineChar.line + 1) + ':' + lineChar.character; } exports.formatLineChar = formatLineChar; function loadLib(moduleId) { var fileName = require.resolve(moduleId); var text = fs.readFileSync(fileName, 'utf8'); return { fileName: fileName, text: text }; } exports.loadLib = loadLib; var TYPESCRIPT_EXTENSION = /\.(d\.)?(t|j)s$/; function withoutTypeScriptExtension(fileName) { return fileName.replace(TYPESCRIPT_EXTENSION, ''); } exports.withoutTypeScriptExtension = withoutTypeScriptExtension; //# sourceMappingURL=helpers.js.map