#!/usr/bin/env node module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 5); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /*!***********************!*\ !*** external "path" ***! \***********************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("path"); /***/ }), /* 1 */ /*!*********************!*\ !*** external "fs" ***! \*********************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("fs"); /***/ }), /* 2 */ /*!*********************************!*\ !*** external "babel-polyfill" ***! \*********************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("babel-polyfill"); /***/ }), /* 3 */ /*!*********************************!*\ !*** external "relay-compiler" ***! \*********************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("relay-compiler"); /***/ }), /* 4 */ /*!****************************!*\ !*** external "fast-glob" ***! \****************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("fast-glob"); /***/ }), /* 5 */ /*!***************************************************!*\ !*** multi babel-polyfill ./src/compiler/main.js ***! \***************************************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(/*! babel-polyfill */2); module.exports = __webpack_require__(/*! ./src/compiler/main.js */6); /***/ }), /* 6 */ /*!******************************!*\ !*** ./src/compiler/main.js ***! \******************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* * Most of the code in this run method are ripped from: * relay-compiler/bin/RelayCompilerBin.js */ var run = function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(options) { var srcDir, schemaPath, force, reporter, parserConfigs, writerConfigs, codegenRunner, result, queryCacheOutputFile; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: srcDir = _path2.default.resolve(process.cwd(), options.src); schemaPath = _path2.default.resolve(process.cwd(), options.schema); force = options.force; console.log('schema: ' + schemaPath); console.log('src: ' + srcDir); console.log('force: ' + force); if (force) { (0, _utils.clean)(srcDir); } else { console.log('Not cleaning.'); } reporter = new ConsoleReporter({ verbose: true }); parserConfigs = { default: { baseDir: srcDir, getFileFilter: RelayJSModuleParser.getFileFilter, getParser: RelayJSModuleParser.getParser, getSchema: function getSchema() { return (0, _ripped.getSchema)(schemaPath); }, filepaths: (0, _ripped.getFilepathsFromGlob)(srcDir, { extensions: ['js'], include: ['**'], exclude: ['**/node_modules/**', '**/__mocks__/**', '**/__tests__/**', '**/__generated__/**'] }) } }; writerConfigs = { default: { getWriter: (0, _ripped.getRelayFileWriter)(srcDir, persistQuery), isGeneratedFile: function isGeneratedFile(filePath) { return filePath.endsWith('.js') && filePath.includes('__generated__'); }, parser: 'default' } }; codegenRunner = new CodegenRunner({ reporter: reporter, parserConfigs: parserConfigs, writerConfigs: writerConfigs, onlyValidate: false }); result = ''; _context.prev = 12; _context.next = 15; return codegenRunner.compileAll(); case 15: result = _context.sent; _context.next = 22; break; case 18: _context.prev = 18; _context.t0 = _context['catch'](12); console.log('Error codegenRunner.compileAll(): ' + _context.t0); throw _context.t0; case 22: queryCacheOutputFile = srcDir + '/queryMap.json'; _context.prev = 23; _context.next = 26; return writeFileAsync(queryCacheOutputFile, JSON.stringify(queryCache)); case 26: console.log('Query cache written to: ' + queryCacheOutputFile); _context.next = 33; break; case 29: _context.prev = 29; _context.t1 = _context['catch'](23); if (!_context.t1) { _context.next = 33; break; } return _context.abrupt('return', console.log(_context.t1)); case 33: console.log('Done! ' + result); case 34: case 'end': return _context.stop(); } } }, _callee, this, [[12, 18], [23, 29]]); })); return function run(_x) { return _ref.apply(this, arguments); }; }(); // Collect args var _yargs = __webpack_require__(/*! yargs */ 7); var _yargs2 = _interopRequireDefault(_yargs); __webpack_require__(/*! babel-polyfill */ 2); var _util = __webpack_require__(/*! util */ 8); var _path = __webpack_require__(/*! path */ 0); var _path2 = _interopRequireDefault(_path); var _fs = __webpack_require__(/*! fs */ 1); var _fs2 = _interopRequireDefault(_fs); var _relayCompiler = __webpack_require__(/*! relay-compiler */ 3); var _relayCompiler2 = _interopRequireDefault(_relayCompiler); var _ripped = __webpack_require__(/*! ./ripped */ 9); var _utils = __webpack_require__(/*! ./utils */ 12); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var ConsoleReporter = _relayCompiler2.default.ConsoleReporter, CodegenRunner = _relayCompiler2.default.Runner, RelayJSModuleParser = _relayCompiler2.default.FileIRParser; var queryCache = []; var writeFileAsync = (0, _util.promisify)(_fs2.default.writeFile); function persistQuery(operationText) { return new Promise(function (resolve) { var queryId = (0, _utils.md5)(operationText); queryCache.push({ id: queryId, text: operationText }); resolve(queryId); }); }var argv = _yargs2.default.usage('Usage: $0 --schema --src -f').options({ schema: { describe: 'Path to schema.graphql or schema.json', demandOption: true, type: 'string' }, src: { describe: 'Root directory of application code', demandOption: true, type: 'string' }, force: { describe: 'Recursively delete all *.graphql.js files in src folder before compilation', demandOption: false, type: 'boolean' } }).alias('f', 'force').help().argv; _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: console.log('Welcome to relay-compiler-plus. Compiling now with these parameters:'); _context2.prev = 1; _context2.next = 4; return run(argv); case 4: _context2.next = 10; break; case 6: _context2.prev = 6; _context2.t0 = _context2['catch'](1); console.log('error: ' + _context2.t0); process.exit(1); case 10: case 'end': return _context2.stop(); } } }, _callee2, this, [[1, 6]]); }))(); /***/ }), /* 7 */ /*!************************!*\ !*** external "yargs" ***! \************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("yargs"); /***/ }), /* 8 */ /*!***********************!*\ !*** external "util" ***! \***********************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("util"); /***/ }), /* 9 */ /*!********************************!*\ !*** ./src/compiler/ripped.js ***! \********************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFilepathsFromGlob = getFilepathsFromGlob; exports.getRelayFileWriter = getRelayFileWriter; exports.getSchema = getSchema; var _fs = __webpack_require__(/*! fs */ 1); var _fs2 = _interopRequireDefault(_fs); var _path = __webpack_require__(/*! path */ 0); var _path2 = _interopRequireDefault(_path); var _graphql = __webpack_require__(/*! graphql */ 10); var _relayCompiler = __webpack_require__(/*! relay-compiler */ 3); var _relayCompiler2 = _interopRequireDefault(_relayCompiler); var _formatGeneratedModule = __webpack_require__(/*! ./formatGeneratedModule */ 11); var _formatGeneratedModule2 = _interopRequireDefault(_formatGeneratedModule); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var RelayFileWriter = _relayCompiler2.default.FileWriter, RelayIRTransforms = _relayCompiler2.default.IRTransforms; /** * The code in this file are ripped from: * relay-compiler/bin/RelayCompilerBin.js * * Copyright (c) 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule RelayCompilerBin * @format */ var codegenTransforms = RelayIRTransforms.codegenTransforms, fragmentTransforms = RelayIRTransforms.fragmentTransforms, printTransforms = RelayIRTransforms.printTransforms, queryTransforms = RelayIRTransforms.queryTransforms, schemaExtensions = RelayIRTransforms.schemaExtensions; function getFilepathsFromGlob(baseDir, options) { var extensions = options.extensions, include = options.include, exclude = options.exclude; var patterns = include.map(function (inc) { return inc + '/*.+(' + extensions.join('|') + ')'; }); var glob = __webpack_require__(/*! fast-glob */ 4); return glob.sync(patterns, { cwd: baseDir, bashNative: [], onlyFiles: true, ignore: exclude }); } // Note: this function has been modified from its original form. // persistQuery param is added function getRelayFileWriter(baseDir, persistQuery) { return function (onlyValidate, schema, documents, baseDocuments) { return new RelayFileWriter({ config: { baseDir: baseDir, compilerTransforms: { codegenTransforms: codegenTransforms, fragmentTransforms: fragmentTransforms, printTransforms: printTransforms, queryTransforms: queryTransforms }, customScalars: {}, formatModule: _formatGeneratedModule2.default, inputFieldWhiteListForFlow: [], schemaExtensions: schemaExtensions, useHaste: false, persistQuery: persistQuery }, onlyValidate: onlyValidate, schema: schema, baseDocuments: baseDocuments, documents: documents }); }; } function getSchema(schemaPath) { try { var source = _fs2.default.readFileSync(schemaPath, 'utf8'); if (_path2.default.extname(schemaPath) === '.json') { source = (0, _graphql.printSchema)((0, _graphql.buildClientSchema)(JSON.parse(source).data)); } source = '\n directive @include(if: Boolean) on FRAGMENT | FIELD\n directive @skip(if: Boolean) on FRAGMENT | FIELD\n\n ' + source + '\n '; var output = (0, _graphql.buildASTSchema)((0, _graphql.parse)(source)); return output; } catch (error) { throw new Error(('\nError loading schema. Expected the schema to be a .graphql or a .json\nfile, describing your GraphQL server\'s API. Error detail:\n\n' + error.stack + '\n ').trim()); } } /***/ }), /* 10 */ /*!**************************!*\ !*** external "graphql" ***! \**************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("graphql"); /***/ }), /* 11 */ /*!***********************************************!*\ !*** ./src/compiler/formatGeneratedModule.js ***! \***********************************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** * Changes have been made to this file. * * devOnlyText have been removed because the variable __DEV__ is not guaranteed * to be available on the consumer end. * * Copyright (c) 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule formatGeneratedModule * @format */ var formatGeneratedModule = function formatGeneratedModule(_ref) { var moduleName = _ref.moduleName, documentType = _ref.documentType, docText = _ref.docText, concreteText = _ref.concreteText, flowText = _ref.flowText, hash = _ref.hash, devTextGenerator = _ref.devTextGenerator, relayRuntimeModule = _ref.relayRuntimeModule; var objectName = documentType === 'ConcreteBatch' ? 'batch' : 'fragment'; var docTextComment = docText ? '\n/*\n' + docText.trim() + '\n*/\n' : ''; var hashText = hash ? '\n * ' + hash : ''; // const devOnlyText = devTextGenerator ? devTextGenerator(objectName) : ''; return '/**\n * ' + '@' + 'flow' + hashText + '\n */\n\n/* eslint-disable */\n\n\'use strict\';\n\n/*::\nimport type {' + documentType + '} from \'' + relayRuntimeModule + '\';\n' + (flowText || '') + '\n*/\n\n' + docTextComment + '\nconst ' + objectName + ' /*: ' + documentType + '*/ = ' + concreteText + ';\n\nmodule.exports = ' + objectName + ';\n'; }; module.exports = formatGeneratedModule; /***/ }), /* 12 */ /*!*******************************!*\ !*** ./src/compiler/utils.js ***! \*******************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clean = exports.md5 = undefined; var _crypto = __webpack_require__(/*! crypto */ 13); var _crypto2 = _interopRequireDefault(_crypto); var _fastGlob = __webpack_require__(/*! fast-glob */ 4); var _fastGlob2 = _interopRequireDefault(_fastGlob); var _fs = __webpack_require__(/*! fs */ 1); var _fs2 = _interopRequireDefault(_fs); var _path = __webpack_require__(/*! path */ 0); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Ripped from relay-compiler/RelayFileWriter.js var md5 = exports.md5 = function md5(x) { return _crypto2.default.createHash('md5').update(x, 'utf8').digest('hex'); }; var clean = exports.clean = function clean(src) { console.log('Start clean...'); var filesToClean = _fastGlob2.default.sync('**/__generated__/**/*.graphql.js', { cwd: src, bashNative: [], onlyFiles: true }); filesToClean.forEach(function (f) { var filePath = _path2.default.resolve(src, f); console.log('deleting ' + filePath); _fs2.default.unlinkSync(filePath); }); console.log('Finished cleaning'); }; /***/ }), /* 13 */ /*!*************************!*\ !*** external "crypto" ***! \*************************/ /*! dynamic exports provided */ /*! all exports used */ /***/ (function(module, exports) { module.exports = require("crypto"); /***/ }) /******/ ]);