skypager-runtimes-node
Version:
the skypager node runtime
1,338 lines (1,038 loc) • 190 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("babel-runtime/core-js/json/stringify"), require("babel-runtime/core-js/object/assign"), require("babel-runtime/core-js/object/keys"), require("babel-runtime/core-js/promise"), require("babel-runtime/core-js/weak-map"), require("babel-runtime/helpers/asyncToGenerator"), require("babel-runtime/helpers/defineProperty"), require("babel-runtime/helpers/extends"), require("babel-runtime/helpers/slicedToArray"), require("babel-runtime/helpers/toConsumableArray"), require("babel-runtime/helpers/typeof"), require("babel-runtime/regenerator"), require("child-process-promise"), require("child_process"), require("detect-port"), require("find-up"), require("fs"), require("fs-extra-promise"), require("http"), require("https"), require("lodash"), require("micromatch"), require("mime"), require("minimist"), require("opn"), require("os"), require("path"), require("path-to-regexp"), require("semver"), (function webpackLoadOptionalExternalModule() { try { return require("skypager-features-file-manager"); } catch(e) {} }()), require("skypager-helpers-client"), require("skypager-helpers-command"), require("skypager-helpers-page"), require("skypager-helpers-project-type"), require("skypager-helpers-repl"), require("skypager-helpers-server"), require("skypager-runtime"), require("skywalker"), require("winston"), require("zlib"));
else if(typeof define === 'function' && define.amd)
define(["babel-runtime/core-js/json/stringify", "babel-runtime/core-js/object/assign", "babel-runtime/core-js/object/keys", "babel-runtime/core-js/promise", "babel-runtime/core-js/weak-map", "babel-runtime/helpers/asyncToGenerator", "babel-runtime/helpers/defineProperty", "babel-runtime/helpers/extends", "babel-runtime/helpers/slicedToArray", "babel-runtime/helpers/toConsumableArray", "babel-runtime/helpers/typeof", "babel-runtime/regenerator", "child-process-promise", "child_process", "detect-port", "find-up", "fs", "fs-extra-promise", "http", "https", "lodash", "micromatch", "mime", "minimist", "opn", "os", "path", "path-to-regexp", "semver", "skypager-features-file-manager", "skypager-helpers-client", "skypager-helpers-command", "skypager-helpers-page", "skypager-helpers-project-type", "skypager-helpers-repl", "skypager-helpers-server", "skypager-runtime", "skywalker", "winston", "zlib"], factory);
else {
var a = typeof exports === 'object' ? factory(require("babel-runtime/core-js/json/stringify"), require("babel-runtime/core-js/object/assign"), require("babel-runtime/core-js/object/keys"), require("babel-runtime/core-js/promise"), require("babel-runtime/core-js/weak-map"), require("babel-runtime/helpers/asyncToGenerator"), require("babel-runtime/helpers/defineProperty"), require("babel-runtime/helpers/extends"), require("babel-runtime/helpers/slicedToArray"), require("babel-runtime/helpers/toConsumableArray"), require("babel-runtime/helpers/typeof"), require("babel-runtime/regenerator"), require("child-process-promise"), require("child_process"), require("detect-port"), require("find-up"), require("fs"), require("fs-extra-promise"), require("http"), require("https"), require("lodash"), require("micromatch"), require("mime"), require("minimist"), require("opn"), require("os"), require("path"), require("path-to-regexp"), require("semver"), (function webpackLoadOptionalExternalModule() { try { return require("skypager-features-file-manager"); } catch(e) {} }()), require("skypager-helpers-client"), require("skypager-helpers-command"), require("skypager-helpers-page"), require("skypager-helpers-project-type"), require("skypager-helpers-repl"), require("skypager-helpers-server"), require("skypager-runtime"), require("skywalker"), require("winston"), require("zlib")) : factory(root["babel-runtime/core-js/json/stringify"], root["babel-runtime/core-js/object/assign"], root["babel-runtime/core-js/object/keys"], root["babel-runtime/core-js/promise"], root["babel-runtime/core-js/weak-map"], root["babel-runtime/helpers/asyncToGenerator"], root["babel-runtime/helpers/defineProperty"], root["babel-runtime/helpers/extends"], root["babel-runtime/helpers/slicedToArray"], root["babel-runtime/helpers/toConsumableArray"], root["babel-runtime/helpers/typeof"], root["babel-runtime/regenerator"], root["child-process-promise"], root["child_process"], root["detect-port"], root["find-up"], root["fs"], root["fs-extra-promise"], root["http"], root["https"], root["lodash"], root["micromatch"], root["mime"], root["minimist"], root["opn"], root["os"], root["path"], root["path-to-regexp"], root["semver"], root["skypager-features-file-manager"], root["skypager-helpers-client"], root["skypager-helpers-command"], root["skypager-helpers-page"], root["skypager-helpers-project-type"], root["skypager-helpers-repl"], root["skypager-helpers-server"], root["skypager-runtime"], root["skywalker"], root["winston"], root["zlib"]);
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(this, function(__WEBPACK_EXTERNAL_MODULE_9__, __WEBPACK_EXTERNAL_MODULE_16__, __WEBPACK_EXTERNAL_MODULE_5__, __WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_17__, __WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_18__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_19__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_20__, __WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_21__, __WEBPACK_EXTERNAL_MODULE_22__, __WEBPACK_EXTERNAL_MODULE_23__, __WEBPACK_EXTERNAL_MODULE_24__, __WEBPACK_EXTERNAL_MODULE_25__, __WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_26__, __WEBPACK_EXTERNAL_MODULE_27__, __WEBPACK_EXTERNAL_MODULE_28__, __WEBPACK_EXTERNAL_MODULE_11__, __WEBPACK_EXTERNAL_MODULE_29__, __WEBPACK_EXTERNAL_MODULE_30__, __WEBPACK_EXTERNAL_MODULE_31__, __WEBPACK_EXTERNAL_MODULE_6__, __WEBPACK_EXTERNAL_MODULE_8__, __WEBPACK_EXTERNAL_MODULE_32__, __WEBPACK_EXTERNAL_MODULE_12__, __WEBPACK_EXTERNAL_MODULE_33__, __WEBPACK_EXTERNAL_MODULE_34__, __WEBPACK_EXTERNAL_MODULE_35__, __WEBPACK_EXTERNAL_MODULE_36__, __WEBPACK_EXTERNAL_MODULE_37__, __WEBPACK_EXTERNAL_MODULE_38__, __WEBPACK_EXTERNAL_MODULE_39__, __WEBPACK_EXTERNAL_MODULE_40__, __WEBPACK_EXTERNAL_MODULE_13__, __WEBPACK_EXTERNAL_MODULE_7__, __WEBPACK_EXTERNAL_MODULE_41__) {
return /******/ (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;
/******/
/******/ // identity function for calling harmory imports with the correct context
/******/ __webpack_require__.i = function(value) { return value; };
/******/
/******/ // define getter function for harmory exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ 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 = 42);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/runtime/lodash-dependencies.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
"use strict";
module.exports = typeof lodash !== "undefined" ? lodash : __webpack_require__(28);
/***/ },
/***/ "./src/runtime/utils/path-matcher.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.pathMatcher = undefined;
var _arguments = arguments;
var _lodashDependencies = __webpack_require__("./src/runtime/lodash-dependencies.js");
var pathMatcher = exports.pathMatcher = function pathMatcher(rule, subject) {
if ((0, _lodashDependencies.isUndefined)(rule) || (0, _lodashDependencies.isUndefined)(subject)) {
throw new Error("Expects a rule to test and a subject to test against");
}
if ((0, _lodashDependencies.isString)(rule) && !(0, _lodashDependencies.isString)(subject)) {
rule = _arguments[1];
subject = _arguments[0];
}
if ((0, _lodashDependencies.isRegExp)(rule)) {
return rule.test(subject);
} else if ((0, _lodashDependencies.isFunction)(rule)) {
return !!rule(subject);
} else if ((0, _lodashDependencies.isArray)(rule)) {
return (0, _lodashDependencies.every)(rule, function (condition) {
return pathMatcher(condition, subject);
});
} else if ((0, _lodashDependencies.isString)(rule)) {
return new RegExp(rule).test(subject);
} else {
throw new Error("Invalid include / exclude rule");
}
};
exports.default = pathMatcher;
/***/ },
/***/ "./src/runtimes/node/feature.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hostMethods = undefined;
var _keys = __webpack_require__(5);
var _keys2 = _interopRequireDefault(_keys);
var _toConsumableArray2 = __webpack_require__(4);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
exports.featureWasEnabled = featureWasEnabled;
exports.enabledHook = enabledHook;
exports.parseArgv = parseArgv;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var hostMethods = exports.hostMethods = ['parseArgv'];
/**
TODO
Node runtime initialization is out of control at the moment. Every feature available
is autoloaded no matter what command is being run. Move these to the command prepare step
*/
function featureWasEnabled() {
try {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
enabledHook.call.apply(enabledHook, [this].concat(args));
} catch (error) {
console.error('Error enabling node runtime');
console.error(error.message);
console.log(error.stack);
}
}
function enabledHook() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var runtime = this.runtime;
var _runtime$lodash = runtime.lodash,
get = _runtime$lodash.get,
omit = _runtime$lodash.omit,
defaultsDeep = _runtime$lodash.defaultsDeep;
defaultsDeep(runtime.argv, runtime.parseArgv(runtime.argv));
if (runtime.argv.profile) {
runtime.feature('profiler').enable();
}
runtime.invoke('profiler.profileStart', 'nodeRuntimeEnabled');
runtime.invoke('profiler.profileStart', 'helperCommandEnabled');
runtime.use(__webpack_require__(35), 'INITIALIZING');
runtime.invoke('profiler.profileEnd', 'helperCommandEnabled');
// TODO can this safely be moved to src/features/node in the portfolio?
// Reasoning is it is c
runtime.features.add(__webpack_require__(14));
runtime.invoke('profiler.profileStart', 'osAdaptersEnabled');
runtime.feature('fs-adapter').enable();
runtime.lazy('proc', function () {
var procFeature = runtime.feature('child-process-adapter');
procFeature.enable();
return procFeature;
});
runtime.lazy('os', function () {
var osFeature = runtime.feature('os-adapter');
osFeature.enable();
return osFeature;
});
runtime.lazy('networking', function () {
var netFeature = runtime.feature('networking');
netFeature.enable();
return netFeature;
});
runtime.invoke('profiler.profileEnd', 'osAdaptersEnabled');
if (runtime.argv.logging || process.env.USE_SKYPAGER_LOGGING) {
runtime.invoke('profiler.profileStart', 'loggerEnabled');
runtime.feature('logging').enable();
runtime.invoke('profiler.profileEnd', 'loggerEnabled');
} else {
runtime.lazy('logger', function () {
return console;
});
}
runtime.lazy('opener', function () {
var opener = runtime.feature('opener');
opener.enable();
return opener;
});
runtime.hide('_argv_paths', runtime.helperTags.map(function (tag) {
return ['currentPackage', 'skypager'].concat((0, _toConsumableArray3.default)(tag.split('/')));
}));
var packageConfig = runtime.get('currentPackage.skypager', {});
var env = runtime.env,
target = runtime.target;
var targetConfig = defaultsDeep({}, get(packageConfig, [env]), get(packageConfig, [target]));
runtime.hide('projectConfig', defaultsDeep({}, targetConfig, omit(packageConfig, target, env)));
defaultsDeep(runtime.argv, runtime.parseArgv(runtime.argv), runtime.projectConfig);
runtime.lazy('homeFolder', function () {
var homeDirectory = runtime.feature('home-directory');
homeDirectory.enable();
return runtime.homeFolder;
});
runtime.lazy('skywalker', function () {
var skywalker = runtime.feature('skywalker');
skywalker.enable();
return skywalker;
});
runtime.invoke('profiler.profileStart', 'packageFinderEnabled');
runtime.feature('package-finder').enable();
runtime.invoke('profiler.profileEnd', 'packageFinderEnabled');
runtime.lazy('autoDiscovery', function () {
var autoDiscovery = runtime.feature('auto-discovery');
autoDiscovery.enable();
return autoDiscovery;
});
runtime.invoke('profiler.profileStart', 'findCurrentPackage');
runtime.packageFinder.findNearest().then(function (currentPackagePath) {
runtime.state.set('currentPackagePath', currentPackagePath);
runtime.invoke('profiler.profileEnd', 'findCurrentPackage');
}).catch(function (error) {
runtime.state.set('packageFinderError', error);
// swallow the erro
});
runtime.feature('git').enable();
// This seems to be an ok way of lazy loading a feature
runtime.lazy('packageCache', function () {
runtime.feature('package-cache').enable();
return runtime.packageCache;
});
runtime.lazy('fileDownloader', function () {
var downloader = runtime.feature('file-downloader');
downloader.enable();
return downloader;
});
runtime.lazy('fileManager', function () {
try {
runtime.invoke('profiler.profileStart', 'fileManagerEnabled');
__webpack_require__(33).attach(runtime);
runtime.invoke('profiler.profileEnd', 'fileManagerEnabled');
return runtime.feature('file-manager');
} catch (e) {}
});
runtime.selectors.add(__webpack_require__(15));
runtime.feature('main-script').enable();
var attached = {};
runtime.hideGetter('attachedHelpers', function () {
return attached;
});
var lazyAttach = function lazyAttach(baseName, fn) {
runtime.invoke('profiler.profileStart', 'lazyAttached_' + baseName);
runtime.lazy(baseName, function () {
if (attached[baseName]) {
return runtime[baseName];
}
fn();
runtime.invoke('profiler.profileEnd', 'lazyAttached_' + baseName);
attached[baseName] = true;
return runtime[baseName];
});
runtime.lazy(baseName + 's', function () {
if (attached[baseName]) {
return runtime[baseName + 's'];
}
fn();
attached[baseName] = true;
return runtime[baseName + 's'];
});
};
lazyAttach('client', function () {
runtime.invoke('profiler.profileStart', 'clientHelperEnabled');
runtime.use(__webpack_require__(34), 'INITIALIZING');
runtime.invoke('profiler.profileEnd', 'clientHelperEnabled');
});
lazyAttach('repl', function () {
runtime.invoke('profiler.profileStart', 'replHelperEnabled');
runtime.use(__webpack_require__(38), 'INITIALIZING');
runtime.invoke('profiler.profileEnd', 'replHelperEnabled');
});
lazyAttach('page', function () {
runtime.invoke('profiler.profileStart', 'pageHelperEnabled');
runtime.use(__webpack_require__(36), 'INITIALIZING');
runtime.invoke('profiler.profileEnd', 'pageHelperEnabled');
});
lazyAttach('server', function () {
runtime.invoke('profiler.profileStart', 'serverHelperEnabled');
runtime.use(__webpack_require__(39), 'INITIALIZING');
runtime.use('node/server-helper');
runtime.invoke('profiler.profileEnd', 'serverHelperEnabled');
});
lazyAttach('projectType', function () {
runtime.use(__webpack_require__(37), 'INITIALIZING');
});
var requestedFeatures = runtime.chain.plant(runtime.lodash.castArray(runtime.argv.use)).intersection(runtime.features.available).without((0, _keys2.default)(runtime.enabledFeatures)).value();
if (requestedFeatures.length) {
runtime.debug('Enabling features requested via command line', { requestedFeatures: requestedFeatures });
requestedFeatures.forEach(function (featureId) {
var result = runtime.lodash.attempt(function () {
return runtime.feature(featureId).enable(runtime.argv);
});
if (runtime.lodash.isError(result)) {
runtime.error('Error while enabling requested feature', {
featureId: featureId,
message: result.message
});
}
});
}
if (!runtime.state.get('mainScriptRan')) {
runtime.invoke('profiler.profileStart', 'mainScriptRunner');
runtime.mainScript.runMainScript().then(function () {
runtime.setState({ mainScriptRan: true });
runtime.invoke('profiler.profileEnd', 'mainScriptRunner');
}).catch(function (err) {
runtime.error('Error running mainScript', { error: err.message });
runtime.setState({ mainScriptError: err });
runtime.invoke('profiler.profileEnd', 'mainScriptRunner');
if (runtime.argv.safeMode) {
console.error('Error while running skypager main script. ' + err.message);
process.exit(1);
}
});
}
if (runtime.argv.profile) {
runtime.profiler.profileEnd('nodeRuntimeEnabled');
}
runtime.setState({ nodeFeatureEnabled: true });
runtime.emit('nodeFeatureEnabled');
}
function parseArgv() {
var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _stringUtils = this.stringUtils,
snakeCase = _stringUtils.snakeCase,
camelCase = _stringUtils.camelCase;
var _lodash = this.lodash,
defaultsDeep = _lodash.defaultsDeep,
omitBy = _lodash.omitBy,
mapKeys = _lodash.mapKeys;
var procArgs = __webpack_require__(30)(process.argv.slice(2));
return omitBy(defaultsDeep({}, base, procArgs, { _: [] }, mapKeys(procArgs, function (v, k) {
return camelCase(snakeCase(k));
})), function (v, k) {
return !k || k.length === 0 || k.match(/^\w+\-\w+/);
});
}
/***/ },
/***/ "./src/runtimes/node/features/auto-discovery.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.discoverRuntimes = exports.discoverApps = exports.discoverFeatures = exports.discoverHelpers = exports.discoverProjectTypes = exports.discoverDocumentTypes = exports.registerProjectTypes = exports.registerDocumentTypes = exports.discover = exports.featureMethods = exports.shortcut = undefined;
var _slicedToArray2 = __webpack_require__(19);
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _regenerator = __webpack_require__(1);
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = __webpack_require__(0);
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _keys = __webpack_require__(5);
var _keys2 = _interopRequireDefault(_keys);
var discover = exports.discover = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.discoverApps();
case 2:
_context.next = 4;
return this.discoverDocumentTypes();
case 4:
_context.next = 6;
return this.discoverFeatures();
case 6:
_context.next = 8;
return this.discoverHelpers();
case 8:
_context.next = 10;
return this.discoverProjectTypes();
case 10:
_context.next = 12;
return this.discoverRuntimes();
case 12:
return _context.abrupt('return', this);
case 13:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function discover() {
return _ref.apply(this, arguments);
};
}();
var registerDocumentTypes = exports.registerDocumentTypes = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var runtime, documentTypes;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
runtime = this.runtime, documentTypes = this.documentTypes;
if (runtime.documentTypes) {
_context2.next = 3;
break;
}
throw new Error('The document types helper has not been loaded on this runtime');
case 3:
documentTypes.entries().forEach(function (_ref3) {
var _ref4 = (0, _slicedToArray3.default)(_ref3, 2),
id = _ref4[0],
data = _ref4[1];
if (runtime.documentTypes.available.indexOf(id) === -1) {
runtime.documentTypes.register(id, function () {
return require(data.file.dirname);
});
}
});
return _context2.abrupt('return', this);
case 5:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
return function registerDocumentTypes() {
return _ref2.apply(this, arguments);
};
}();
var registerProjectTypes = exports.registerProjectTypes = function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var runtime, projectTypes;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
runtime = this.runtime, projectTypes = this.projectTypes;
if (runtime.projectTypes) {
_context3.next = 3;
break;
}
throw new Error('The project types helper has not been loaded on this runtime');
case 3:
projectTypes.entries().forEach(function (_ref6) {
var _ref7 = (0, _slicedToArray3.default)(_ref6, 2),
id = _ref7[0],
data = _ref7[1];
if (runtime.projectTypes.available.indexOf(id) === -1) {
runtime.projectTypes.register(id, function () {
return require(data.file.dirname);
});
}
});
return _context3.abrupt('return', this);
case 5:
case 'end':
return _context3.stop();
}
}
}, _callee3, this);
}));
return function registerProjectTypes() {
return _ref5.apply(this, arguments);
};
}();
var discoverDocumentTypes = exports.discoverDocumentTypes = function () {
var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {
var _this = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix, prefix, documentTypes;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_options$prefix = options.prefix, prefix = _options$prefix === undefined ? 'skypager-document-types-' : _options$prefix;
_context4.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
documentTypes = _context4.sent;
documentTypes.forEach(function (documentType) {
var id = documentType.name.replace(prefix, '');
_this.documentTypes.set(id, documentType);
});
return _context4.abrupt('return', this.documentTypes.toJSON());
case 6:
case 'end':
return _context4.stop();
}
}
}, _callee4, this);
}));
return function discoverDocumentTypes() {
return _ref8.apply(this, arguments);
};
}();
var discoverProjectTypes = exports.discoverProjectTypes = function () {
var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
var _this2 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix2, prefix, projectTypes;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_options$prefix2 = options.prefix, prefix = _options$prefix2 === undefined ? 'skypager-project-types-' : _options$prefix2;
_context5.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
projectTypes = _context5.sent;
projectTypes.forEach(function (projectType) {
var id = projectType.name.replace(prefix, '');
_this2.projectTypes.set(id, projectType);
});
if (!(options.register !== false)) {
_context5.next = 8;
break;
}
_context5.next = 8;
return this.registerProjectTypes();
case 8:
return _context5.abrupt('return', this.projectTypes.toJSON());
case 9:
case 'end':
return _context5.stop();
}
}
}, _callee5, this);
}));
return function discoverProjectTypes() {
return _ref9.apply(this, arguments);
};
}();
var discoverHelpers = exports.discoverHelpers = function () {
var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
var _this3 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix3, prefix, helpers;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_options$prefix3 = options.prefix, prefix = _options$prefix3 === undefined ? 'skypager-helpers-' : _options$prefix3;
_context6.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
helpers = _context6.sent;
helpers.forEach(function (helper) {
var id = helper.name.replace(prefix, '');
_this3.helpers.set(id, helper);
});
return _context6.abrupt('return', this.helpers.toJSON());
case 6:
case 'end':
return _context6.stop();
}
}
}, _callee6, this);
}));
return function discoverHelpers() {
return _ref10.apply(this, arguments);
};
}();
var discoverFeatures = exports.discoverFeatures = function () {
var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7() {
var _this4 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix4, prefix, features;
return _regenerator2.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_options$prefix4 = options.prefix, prefix = _options$prefix4 === undefined ? 'skypager-features-' : _options$prefix4;
_context7.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
features = _context7.sent;
features.forEach(function (feature) {
var id = feature.name.replace(prefix, '');
_this4.features.set(id, feature);
});
return _context7.abrupt('return', this.features.toJSON());
case 6:
case 'end':
return _context7.stop();
}
}
}, _callee7, this);
}));
return function discoverFeatures() {
return _ref11.apply(this, arguments);
};
}();
var discoverApps = exports.discoverApps = function () {
var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8() {
var _this5 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix5, prefix, apps;
return _regenerator2.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_options$prefix5 = options.prefix, prefix = _options$prefix5 === undefined ? 'skypager-apps-' : _options$prefix5;
_context8.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
apps = _context8.sent;
apps.forEach(function (app) {
var id = app.name.replace(prefix, '');
_this5.apps.set(id, app);
});
return _context8.abrupt('return', this.apps.toJSON());
case 6:
case 'end':
return _context8.stop();
}
}
}, _callee8, this);
}));
return function discoverApps() {
return _ref12.apply(this, arguments);
};
}();
var discoverRuntimes = exports.discoverRuntimes = function () {
var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9() {
var _this6 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$prefix6, prefix, runtimes;
return _regenerator2.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_options$prefix6 = options.prefix, prefix = _options$prefix6 === undefined ? 'skypager-runtimes-' : _options$prefix6;
_context9.next = 3;
return this.find(new RegExp(prefix), { parse: 'matches' });
case 3:
runtimes = _context9.sent;
runtimes.forEach(function (runtime) {
var id = runtime.name.replace(prefix, '');
_this6.runtimes.set(id, runtime);
});
return _context9.abrupt('return', this.runtimes.toJSON());
case 6:
case 'end':
return _context9.stop();
}
}
}, _callee9, this);
}));
return function discoverRuntimes() {
return _ref13.apply(this, arguments);
};
}();
exports.observables = observables;
exports.getPackageFinder = getPackageFinder;
exports.find = find;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var shortcut = exports.shortcut = 'autoDiscovery';
var featureMethods = exports.featureMethods = ['discover', 'discoverFeatures', 'discoverProjectTypes', 'discoverHelpers', 'discoverDocumentTypes', 'discoverApps', 'discoverRuntimes', 'registerProjectTypes', 'registerDocumentTypes', 'getPackageFinder', 'find'];
function observables() {
return {
apps: ['shallowMap', {}],
documentTypes: ['shallowMap', {}],
features: ['shallowMap', {}],
helpers: ['shallowMap', {}],
projectTypes: ['shallowMap', {}],
runtimes: ['shallowMap', {}],
discoveredApps: ['computed', function () {
return (0, _keys2.default)(this.apps.toJSON());
}],
discoveredHelpers: ['computed', function () {
return (0, _keys2.default)(this.helpers.toJSON());
}],
discoveredRuntimes: ['computed', function () {
return (0, _keys2.default)(this.runtimes.toJSON());
}],
discoveredProjectTypes: ['computed', function () {
return (0, _keys2.default)(this.projectTypes.toJSON());
}],
discoveredDocumentTypes: ['computed', function () {
return (0, _keys2.default)(this.documentTypes.toJSON());
}],
discoveredFeatures: ['computed', function () {
return (0, _keys2.default)(this.features.toJSON());
}]
};
}
function getPackageFinder() {
return this.runtime.packageFinder;
}
function find() {
var _packageFinder;
return (_packageFinder = this.packageFinder).find.apply(_packageFinder, arguments);
}
/***/ },
/***/ "./src/runtimes/node/features/child-process-adapter.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.featureMethods = exports.createGetter = undefined;
var _toConsumableArray2 = __webpack_require__(4);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _extends2 = __webpack_require__(2);
var _extends3 = _interopRequireDefault(_extends2);
exports.exec = exec;
exports.execFile = execFile;
exports.spawn = spawn;
exports.fork = fork;
exports.execFileSync = execFileSync;
exports.execSync = execSync;
exports.spawnSync = spawnSync;
exports.forkSync = forkSync;
exports.lazyAsync = lazyAsync;
exports.featureMixinOptions = featureMixinOptions;
var _child_process = __webpack_require__(22);
var cp = _interopRequireWildcard(_child_process);
var _childProcessPromise = __webpack_require__(21);
var cpAsync = _interopRequireWildcard(_childProcessPromise);
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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createGetter = exports.createGetter = 'proc';
function exec(cmd, options) {
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
return cp.exec.apply(cp, [cmd, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function execFile(cmd, argv, options) {
for (var _len2 = arguments.length, args = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
args[_key2 - 3] = arguments[_key2];
}
return cp.execFile.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function spawn(cmd, argv, options) {
for (var _len3 = arguments.length, args = Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {
args[_key3 - 3] = arguments[_key3];
}
return cp.spawn.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function fork(cmd, argv, options) {
for (var _len4 = arguments.length, args = Array(_len4 > 3 ? _len4 - 3 : 0), _key4 = 3; _key4 < _len4; _key4++) {
args[_key4 - 3] = arguments[_key4];
}
return cp.fork.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function execFileSync(cmd, argv, options) {
for (var _len5 = arguments.length, args = Array(_len5 > 3 ? _len5 - 3 : 0), _key5 = 3; _key5 < _len5; _key5++) {
args[_key5 - 3] = arguments[_key5];
}
return cp.execFileSync.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function execSync(cmd, options) {
for (var _len6 = arguments.length, args = Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {
args[_key6 - 2] = arguments[_key6];
}
return cp.execSync.apply(cp, [cmd, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function spawnSync(cmd, argv, options) {
for (var _len7 = arguments.length, args = Array(_len7 > 3 ? _len7 - 3 : 0), _key7 = 3; _key7 < _len7; _key7++) {
args[_key7 - 3] = arguments[_key7];
}
return cp.spawnSync.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function forkSync(cmd, argv, options) {
for (var _len8 = arguments.length, args = Array(_len8 > 3 ? _len8 - 3 : 0), _key8 = 3; _key8 < _len8; _key8++) {
args[_key8 - 3] = arguments[_key8];
}
return cp.forkSync.apply(cp, [cmd, argv, (0, _extends3.default)({ cwd: this.runtime.cwd }, options)].concat(args));
}
function lazyAsync() {
var runtime = this.runtime;
var cwd = runtime.cwd;
return {
exec: function exec(cmd) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
for (var _len9 = arguments.length, args = Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) {
args[_key9 - 2] = arguments[_key9];
}
return cpAsync.exec.apply(cpAsync, [cmd, (0, _extends3.default)({ cwd: cwd }, options)].concat((0, _toConsumableArray3.default)(args)));
},
execFile: function execFile(cmd) {
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var _len10 = arguments.length, args = Array(_len10 > 3 ? _len10 - 3 : 0), _key10 = 3; _key10 < _len10; _key10++) {
args[_key10 - 3] = arguments[_key10];
}
return cpAsync.execFile.apply(cpAsync, [cmd, a, (0, _extends3.default)({ cwd: cwd }, options)].concat((0, _toConsumableArray3.default)(args)));
},
spawn: function spawn(cmd) {
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var _len11 = arguments.length, args = Array(_len11 > 3 ? _len11 - 3 : 0), _key11 = 3; _key11 < _len11; _key11++) {
args[_key11 - 3] = arguments[_key11];
}
return cpAsync.spawn.apply(cpAsync, [cmd, a, (0, _extends3.default)({ cwd: cwd }, options)].concat((0, _toConsumableArray3.default)(args)));
},
fork: function fork(cmd) {
var a = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
for (var _len12 = arguments.length, args = Array(_len12 > 3 ? _len12 - 3 : 0), _key12 = 3; _key12 < _len12; _key12++) {
args[_key12 - 3] = arguments[_key12];
}
return cpAsync.fork.apply(cpAsync, [cmd, a, (0, _extends3.default)({ cwd: cwd }, options)].concat((0, _toConsumableArray3.default)(args)));
}
};
}
var featureMethods = exports.featureMethods = ['lazyAsync', 'spawn', 'spawnSync', 'exec', 'execSync', 'fork', 'forkSync', 'execFile', 'execFileSync'];
function featureMixinOptions() {
return {
transformKeys: true,
scope: this,
partial: [],
insertOptions: false,
right: true,
hidden: false
};
}
/***/ },
/***/ "./src/runtimes/node/features/feature-finder.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findFeatureFolders = exports.findFeatureFiles = exports.featureMethods = exports.hostMethods = undefined;
var _regenerator = __webpack_require__(1);
var _regenerator2 = _interopRequireDefault(_regenerator);
var _toConsumableArray2 = __webpack_require__(4);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _asyncToGenerator2 = __webpack_require__(0);
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var findFeatureFiles = exports.findFeatureFiles = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
var _this2 = this;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$base, base, srcPath, flatten, helperTags, fileTags, _runtime$currentState, featureFolders, _runtime$fsx, checkLocations, results;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_options$base = options.base, base = _options$base === undefined ? "src" : _options$base;
srcPath = function srcPath() {
var _runtime$pathUtils;
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_runtime$pathUtils = _this2.runtime.pathUtils).resolve.apply(_runtime$pathUtils, [base].concat(args));
};
flatten = this.runtime.lodash.flatten;
helperTags = this.runtime.helperTags;
fileTags = flatten([helperTags.map(function (t) {
return t + ".js";
}), helperTags.map(function (t) {
return t + "." + _this2.runtime.target + ".js";
}), helperTags.map(function (t) {
return t + "/index.js";
}), helperTags.map(function (t) {
return t + "/index." + _this2.runtime.target + ".js";
})]);
_runtime$currentState = this.runtime.currentState.featureFolders, featureFolders = _runtime$currentState === undefined ? [] : _runtime$currentState;
_context.prev = 6;
if (!(!featureFolders || !featureFolders.length)) {
_context.next = 10;
break;
}
_context.next = 10;
return this.findFeatureFolders(options).then(function (results) {
return featureFolders.push.apply(featureFolders, (0, _toConsumableArray3.default)(results));
});
case 10:
checkLocations = flatten(featureFolders.map(function (b) {
return fileTags.map(function (t) {
return srcPath(b, t);
});
}));
results = (_runtime$fsx = this.runtime.fsx).existingAsync.apply(_runtime$fsx, (0, _toConsumableArray3.default)(checkLocations));
return _context.abrupt("return", results);
case 15:
_context.prev = 15;
_context.t0 = _context["catch"](6);
console.log("error", _context.t0);
return _context.abrupt("return", []);
case 19:
case "end":
return _context.stop();
}
}
}, _callee, this, [[6, 15]]);
}));
return function findFeatureFiles() {
return _ref.apply(this, arguments);
};
}();
var findFeatureFolders = exports.findFeatureFolders = function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
var _this3 = this,
_runtime$fsx2;
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _options$base2, base, srcPath, flatten, helperTags, checkLocations, results;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_options$base2 = options.base, base = _options$base2 === undefined ? "src" : _options$base2;
srcPath = function srcPath() {
var _runtime;
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return (_runtime = _this3.runtime).join.apply(_runtime, [base].concat(args));
};
flatten = this.runtime.lodash.flatten;
helperTags = this.runtime.helperTags;
checkLocations = flatten([srcPath("features"), srcPath("helpers/features"), srcPath("features/helpers"), helperTags.map(function (t) {
return srcPath("features", t);
}), helperTags.map(function (t) {
return srcPath("helpers/features", t);
}), helperTags.map(function (t) {
return srcPath("features/helpers", t);
})]);
_context2.next = 7;
return (_runtime$fsx2 = this.runtime.fsx).existingAsync.apply(_runtime$fsx2, (0, _toConsumableArray3.default)(checkLocations));
case 7:
results = _context2.sent;
return _context2.abrupt("return", results);
case 9:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
return function findFeatureFolders() {
return _ref2.apply(this, arguments);
};
}();
exports.featureWasEnabled = featureWasEnabled;
exports.getFeatureFinder = getFeatureFinder;
exports.getFeatureFolders = getFeatureFolders;
exports.getFeatureFiles = getFeatureFiles;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var hostMethods = exports.hostMethods = ["getFeatureFinder", "getFeatureFiles", "getFeatureFolders"];
var featureMethods = exports.featureMethods = ["findFeatureFolders", "findFeatureFiles"];
function featureWasEnabled() {
var _this = this;
this.findFeatureFolders().then(function () {
var featureFolders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return _this.runtime.setState({ featureFolders: featureFolders });
}).then(function () {
return _this.findFeatureFiles();
}).then(function () {
var featureFiles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
return _this.runtime.setState({ featureFiles: featureFiles });
}).catch(function (error) {
console.log("error", error.message);
});
}
function getFeatureFinder() {
return this.feature("feature-finder");
}
function getFeatureFolders() {
return this.get("currentState.featureFolders", []);
}
function getFeatureFiles() {
return this.get("currentState.featureFiles", []);
}
/***/ },
/***/ "./src/runtimes/node/features/file-downloader.js":
/***/ function(module, exports, __webpack_require__) {
"use strict";
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.downloadAsync = exports.featureMixinOptions = exports.featureMethods = exports.createGetter = undefined;
var _regenerator = __webpack_require__(1);
var _regenerator2 = _interopRequireDefault(_regenerator);
var _promise = __webpack_require__(3);
var _promise2 = _interopRequireDefault(_promise);
var _asyncToGenerator2 = __webpack_require__(0);
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var downloadAsync = exports.downloadAsync = function () {
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(sourceUrl, destinationPath) {
var _this = this;
var skypager, dest, req;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
skypager = this.runtime;
dest = skypager.resolve(destinationPath);
_context.next = 4;
return skypager.fsx.ensureDirAsync(skypager.pathUtils.dirname(dest));
case 4:
req = new _promise2.default(function (resolve, reject) {
_this.download(sourceUrl, dest, function (err, loc) {
err ? reject(err) : resolve(loc || dest);
});
});
_context.next = 7;
return req.catch(function (e) {
return false;
}).then(function (l) {
return l || dest;
});
case 7:
return _context.abrupt('return', _context.sent);
case 8:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
return function downloadAsync(_x, _x2) {