autorest
Version:
The AutoRest tool generates client libraries for accessing RESTful web services. Input to AutoRest is an OpenAPI spec that describes the REST API.
807 lines (650 loc) • 25.5 kB
JavaScript
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./src/app.ts":
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
/* eslint-disable no-process-exit */
/* eslint-disable no-console */
__webpack_require__("../../../common/temp/node_modules/.pnpm/source-map-support@0.5.21/node_modules/source-map-support/register.js");
const common_1 = __webpack_require__("../../libs/common/dist/index.js");
const configuration_1 = __webpack_require__("../../libs/configuration/dist/index.js");
const chalk_1 = __importDefault(__webpack_require__("../../../common/temp/node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js"));
const actions_1 = __webpack_require__("./src/actions/index.ts");
const args_1 = __webpack_require__("./src/args.ts");
const autorest_as_a_service_1 = __webpack_require__("./src/autorest-as-a-service.ts");
const commands_1 = __webpack_require__("./src/commands/index.ts");
const constants_1 = __webpack_require__("./src/constants.ts");
const utils_1 = __webpack_require__("./src/utils.ts");
const cwd = process.cwd();
const isDebuggerEnabled =
// eslint-disable-next-line node/no-unsupported-features/node-builtins, @typescript-eslint/no-require-imports
!!(__webpack_require__("inspector").url)() || globalThis.v8debug || /--debug|--inspect/.test(process.execArgv.join(" "));
const launchCore = isDebuggerEnabled ? autorest_as_a_service_1.runCoreWithRequire : autorest_as_a_service_1.runCoreOutOfProc;
// aliases, round one.
if (process.argv.indexOf("--no-upgrade-check") !== -1) {
process.argv.push("--skip-upgrade-check");
}
if (process.argv.indexOf("--json") !== -1) {
process.argv.push("--message-format=json");
}
if (process.argv.indexOf("--yaml") !== -1) {
process.argv.push("--message-format=yaml");
}
const args = (0, args_1.parseAutorestArgs)(process.argv);
global.__args = args;
// aliases
args["info"] = args["info"] || args["list-installed"];
args["preview"] = args["preview"] || args["prerelease"];
if (args["v3"] && !args["version"]) {
// --v3 without --version infers --version:^3.2.0 +
args["version"] = "^3.2.0";
}
// argument tweakin'
args.info = args.version === "" || args.version === true || args.info; // show --info if they use unparameterized --version.
const listAvailable = args["list-available"] || false;
function logBanner() {
// Suppress the banner if the message-format is set to something other than regular.
if (!args["message-format"] || args["message-format"] === "regular") {
console.log(chalk_1.default.green.bold.underline(`AutoRest code generation utility [cli version: ${chalk_1.default.white.bold(constants_1.VERSION)}; node: ${chalk_1.default.white.bold(process.version)}]`));
console.log(`(C) 2018 ${chalk_1.default.bold("Microsoft Corporation.")}`);
console.log(chalk_1.default.blue.bold.underline("https://aka.ms/autorest"));
console.warn(chalk_1.default.yellow.bold("⚠️ AutoRest is deprecated and will be retired on July 1, 2026. Please migrate to TypeSpec: https://typespec.io — details: https://github.com/Azure/autorest/issues/5175"));
}
}
/**
* Main Entrypoint for AutoRest Bootstrapper
*/
async function main() {
logBanner();
try {
// did they ask for what is available?
if (listAvailable) {
process.exit(await (0, commands_1.showAvailableCoreVersions)(args));
}
// show what we have.
if (args.info) {
process.exit(await (0, commands_1.showInstalledExtensions)(args));
}
try {
/* make sure we have a .autorest folder */
await (0, autorest_as_a_service_1.ensureAutorestHome)();
if (args.reset || args["clear-temp"]) {
// clear out all the temp-data too
await (0, actions_1.clearTempData)();
}
// if we have an autorest home folder, --reset may mean something.
// if it's not there, --reset won't do anything.
if (args.reset) {
process.exit(await (0, commands_1.resetAutorest)(args));
}
}
catch (_a) {
// We have a chance to fail again later if this proves problematic.
}
const sink = new common_1.ConsoleLoggerSink({ format: args["message-format"] });
const logger = new common_1.AutorestSyncLogger({
sinks: [sink],
});
const config = await (0, utils_1.loadConfig)(sink, args);
if (config === null || config === void 0 ? void 0 : config.version) {
logger.info(`AutoRest core version selected from configuration: ${chalk_1.default.yellow.bold(config.version)}.`);
}
const coreVersionPath = await (0, utils_1.resolveCoreVersion)(logger.with(new common_1.FilterLogger({ level: (0, configuration_1.getLogLevel)({ ...args, ...config }) })), config);
if (args.verbose || args.debug) {
(0, common_1.configureLibrariesLogger)("verbose", (...x) => logger.debug(x.join(" ")));
}
// let's strip the extra stuff from the command line before we require the core module.
const newArgs = [];
for (const each of process.argv) {
let keep = true;
for (const discard of [
"--version",
"--list-installed",
"--list-available",
"--reset",
"--latest",
"--latest-release",
"--runtime-id",
]) {
if (each === discard || each.startsWith(`${discard}=`) || each.startsWith(`${discard}:`)) {
keep = false;
}
}
if (keep) {
newArgs.push(each);
}
}
// use this to make the core aware that this run may be legal even without any inputs
// this is a valid scenario for "preparation calls" to autorest like `autorest --reset` or `autorest --latest`
if (args.reset || args.latest || args.version == "latest") {
// if there is *any* other argument left, that's an indicator that the core is supposed to do something
newArgs.push("--allow-no-input");
}
process.argv = newArgs;
if (args.debug) {
logger.debug(`Starting ${autorest_as_a_service_1.newCorePackage} from ${coreVersionPath}`);
}
// reset the working folder to the correct place.
process.chdir(cwd);
const result = await launchCore(coreVersionPath, "app.js", config);
if (!result) {
throw new Error(`Unable to start AutoRest Core from ${coreVersionPath}`);
}
}
catch (exception) {
console.log(chalk_1.default.redBright("Failure:"));
console.error(chalk_1.default.bold(exception));
console.error(chalk_1.default.bold(exception.stack));
process.exit(1);
}
}
void main();
/***/ }),
/***/ "./src/args.ts":
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.parseAutorestArgs = parseAutorestArgs;
const configuration_1 = __webpack_require__("../../libs/configuration/dist/index.js");
/**
* Parse a list of command line arguments.
* @param argv List of cli args(process.argv)
*/
function parseAutorestArgs(argv) {
return (0, configuration_1.parseArgs)(argv).options;
}
/***/ }),
/***/ "./src/commands/index.ts":
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
__exportStar(__webpack_require__("./src/commands/reset.ts"), exports);
__exportStar(__webpack_require__("./src/commands/show-available-core-versions.ts"), exports);
__exportStar(__webpack_require__("./src/commands/show-installed-extensions.ts"), exports);
/***/ }),
/***/ "./src/commands/reset.ts":
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.resetAutorest = void 0;
/* eslint-disable no-console */
const common_1 = __webpack_require__("../../libs/common/dist/index.js");
const autorest_as_a_service_1 = __webpack_require__("./src/autorest-as-a-service.ts");
/**
* Reset autorest, this will:
* - Clear all installed extensions
* - Cleared all installed core
* @param args CLI args
* @returns Exit code.
*/
const resetAutorest = async (args) => {
if (args.debug) {
console.log(`Resetting autorest extension folder '${autorest_as_a_service_1.rootFolder}'`);
}
try {
await (await autorest_as_a_service_1.extensionManager).reset();
console.log((0, common_1.color)("\n\n## Cleared the AutoRest extension folder.\nOn the next run, extensions will be reacquired from the repository."));
return 0;
}
catch (e) {
console.log((0, common_1.color)("\n\n## The AutoRest extension folder appears to be locked.\nDo you have a process that is currently using AutoRest (perhaps the vscode extension?).\n\nUnable to reset the extension folder, exiting."));
return 10;
}
};
exports.resetAutorest = resetAutorest;
/***/ }),
/***/ "./src/commands/show-available-core-versions.ts":
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.showAvailableCoreVersions = void 0;
/* eslint-disable no-console */
const chalk_1 = __importDefault(__webpack_require__("../../../common/temp/node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js"));
const autorest_as_a_service_1 = __webpack_require__("./src/autorest-as-a-service.ts");
/**
* Shows the valid available autorest core packages.
* @param args CLI args
* @returns Exit code.
*/
const showAvailableCoreVersions = async (args) => {
let table = "";
let max = 10;
const cores = await (0, autorest_as_a_service_1.availableVersions)();
for (const v of cores) {
max--;
table += `\n ${chalk_1.default.cyan.bold(autorest_as_a_service_1.newCorePackage.padEnd(30, " "))} ${chalk_1.default.grey.bold(v.padEnd(14, " "))} `;
if (!max) {
break;
}
}
if (args.json) {
console.log(JSON.stringify(cores, null, " "));
}
else {
if (table) {
console.log(`${chalk_1.default.green.bold.underline(" Extension Name".padEnd(30, " "))} ${chalk_1.default.green.bold.underline("Version".padEnd(14, " "))}\n${table}`);
}
}
return 0;
};
exports.showAvailableCoreVersions = showAvailableCoreVersions;
/***/ }),
/***/ "./src/commands/show-installed-extensions.ts":
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.showInstalledExtensions = void 0;
/* eslint-disable no-console */
const chalk_1 = __importDefault(__webpack_require__("../../../common/temp/node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js"));
const autorest_as_a_service_1 = __webpack_require__("./src/autorest-as-a-service.ts");
/**
* Shows all the autorest extensions that are installed.
* @param args CLI args
* @returns Exit code.
*/
const showInstalledExtensions = async (args) => {
const extensions = await (await autorest_as_a_service_1.extensionManager).getInstalledExtensions();
let table = "";
if (extensions.length > 0) {
for (const extension of extensions) {
table += `\n ${chalk_1.default.cyan((extension.name === autorest_as_a_service_1.newCorePackage || extension.name === autorest_as_a_service_1.oldCorePackage ? "core" : "extension").padEnd(10))} ${chalk_1.default.cyan.bold(extension.name.padEnd(40))} ${chalk_1.default.cyan(extension.version.padEnd(12))} ${chalk_1.default.cyan(extension.location)}`;
}
}
if (args.json) {
console.log(JSON.stringify(extensions, null, " "));
}
else {
const title = `\n\n${chalk_1.default.greenBright("Showing All Installed Extensions")}\n`;
if (table) {
console.log(`${title}\n ${chalk_1.default.underline("Type".padEnd(10))} ${chalk_1.default.underline("Extension Name".padEnd(40))} ${chalk_1.default.underline("Version".padEnd(12))} ${chalk_1.default.underline("Location")} ${table}\n\n`);
}
else {
console.log(`${title}\n ${chalk_1.default.cyan("No Extensions are currently installed.")}\n\n`);
}
}
return 0;
};
exports.showInstalledExtensions = showInstalledExtensions;
/***/ }),
/***/ "assert":
/***/ ((module) => {
module.exports = require("assert");
/***/ }),
/***/ "buffer":
/***/ ((module) => {
module.exports = require("buffer");
/***/ }),
/***/ "child_process":
/***/ ((module) => {
module.exports = require("child_process");
/***/ }),
/***/ "constants":
/***/ ((module) => {
module.exports = require("constants");
/***/ }),
/***/ "crypto":
/***/ ((module) => {
module.exports = require("crypto");
/***/ }),
/***/ "dns":
/***/ ((module) => {
module.exports = require("dns");
/***/ }),
/***/ "events":
/***/ ((module) => {
module.exports = require("events");
/***/ }),
/***/ "fs":
/***/ ((module) => {
module.exports = require("fs");
/***/ }),
/***/ "fs/promises":
/***/ ((module) => {
module.exports = require("fs/promises");
/***/ }),
/***/ "http":
/***/ ((module) => {
module.exports = require("http");
/***/ }),
/***/ "http2":
/***/ ((module) => {
module.exports = require("http2");
/***/ }),
/***/ "https":
/***/ ((module) => {
module.exports = require("https");
/***/ }),
/***/ "inspector":
/***/ ((module) => {
module.exports = require("inspector");
/***/ }),
/***/ "module":
/***/ ((module) => {
module.exports = require("module");
/***/ }),
/***/ "net":
/***/ ((module) => {
module.exports = require("net");
/***/ }),
/***/ "node-gyp/bin/node-gyp.js":
/***/ ((module) => {
module.exports = require("node-gyp/bin/node-gyp.js");
/***/ }),
/***/ "node:crypto":
/***/ ((module) => {
module.exports = require("node:crypto");
/***/ }),
/***/ "node:events":
/***/ ((module) => {
module.exports = require("node:events");
/***/ }),
/***/ "node:fs":
/***/ ((module) => {
module.exports = require("node:fs");
/***/ }),
/***/ "node:fs/promises":
/***/ ((module) => {
module.exports = require("node:fs/promises");
/***/ }),
/***/ "node:os":
/***/ ((module) => {
module.exports = require("node:os");
/***/ }),
/***/ "node:path":
/***/ ((module) => {
module.exports = require("node:path");
/***/ }),
/***/ "node:path/win32":
/***/ ((module) => {
module.exports = require("node:path/win32");
/***/ }),
/***/ "node:process":
/***/ ((module) => {
module.exports = require("node:process");
/***/ }),
/***/ "node:stream":
/***/ ((module) => {
module.exports = require("node:stream");
/***/ }),
/***/ "node:string_decoder":
/***/ ((module) => {
module.exports = require("node:string_decoder");
/***/ }),
/***/ "node:url":
/***/ ((module) => {
module.exports = require("node:url");
/***/ }),
/***/ "node:util":
/***/ ((module) => {
module.exports = require("node:util");
/***/ }),
/***/ "os":
/***/ ((module) => {
module.exports = require("os");
/***/ }),
/***/ "path":
/***/ ((module) => {
module.exports = require("path");
/***/ }),
/***/ "process":
/***/ ((module) => {
module.exports = require("process");
/***/ }),
/***/ "querystring":
/***/ ((module) => {
module.exports = require("querystring");
/***/ }),
/***/ "readline":
/***/ ((module) => {
module.exports = require("readline");
/***/ }),
/***/ "stream":
/***/ ((module) => {
module.exports = require("stream");
/***/ }),
/***/ "string_decoder":
/***/ ((module) => {
module.exports = require("string_decoder");
/***/ }),
/***/ "timers/promises":
/***/ ((module) => {
module.exports = require("timers/promises");
/***/ }),
/***/ "tls":
/***/ ((module) => {
module.exports = require("tls");
/***/ }),
/***/ "tty":
/***/ ((module) => {
module.exports = require("tty");
/***/ }),
/***/ "url":
/***/ ((module) => {
module.exports = require("url");
/***/ }),
/***/ "util":
/***/ ((module) => {
module.exports = require("util");
/***/ }),
/***/ "vm":
/***/ ((module) => {
module.exports = require("vm");
/***/ }),
/***/ "zlib":
/***/ ((module) => {
module.exports = require("zlib");
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ loaded: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = __webpack_modules__;
/******/
/******/ // the startup function
/******/ __webpack_require__.x = () => {
/******/ // Load entry module and return exports
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["vendors-common_temp_node_modules_pnpm_azure-tools_uri_3_1_1_node_modules_azure-tools_uri_dist-105f43","vendors-common_temp_node_modules_pnpm_source-map-support_0_5_21_node_modules_source-map-suppo-13bba0","src_autorest-as-a-service_ts"], () => (__webpack_require__("./src/app.ts")))
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
/******/ return __webpack_exports__;
/******/ };
/******/
/************************************************************************/
/******/ /* webpack/runtime/chunk loaded */
/******/ (() => {
/******/ var deferred = [];
/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => {
/******/ if(chunkIds) {
/******/ priority = priority || 0;
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
/******/ deferred[i] = [chunkIds, fn, priority];
/******/ return;
/******/ }
/******/ var notFulfilled = Infinity;
/******/ for (var i = 0; i < deferred.length; i++) {
/******/ var [chunkIds, fn, priority] = deferred[i];
/******/ var fulfilled = true;
/******/ for (var j = 0; j < chunkIds.length; j++) {
/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
/******/ chunkIds.splice(j--, 1);
/******/ } else {
/******/ fulfilled = false;
/******/ if(priority < notFulfilled) notFulfilled = priority;
/******/ }
/******/ }
/******/ if(fulfilled) {
/******/ deferred.splice(i--, 1)
/******/ var r = fn();
/******/ if (r !== undefined) result = r;
/******/ }
/******/ }
/******/ return result;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/ensure chunk */
/******/ (() => {
/******/ __webpack_require__.f = {};
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = (chunkId) => {
/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
/******/ __webpack_require__.f[key](chunkId, promises);
/******/ return promises;
/******/ }, []));
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/get javascript chunk filename */
/******/ (() => {
/******/ // This function allow to reference async chunks and sibling chunks for the entrypoint
/******/ __webpack_require__.u = (chunkId) => {
/******/ // return url for filenames based on template
/******/ return "" + chunkId + ".js";
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/node module decorator */
/******/ (() => {
/******/ __webpack_require__.nmd = (module) => {
/******/ module.paths = [];
/******/ if (!module.children) module.children = [];
/******/ return module;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/require chunk loading */
/******/ (() => {
/******/ // no baseURI
/******/
/******/ // object to store loaded chunks
/******/ // "1" means "loaded", otherwise not loaded yet
/******/ var installedChunks = {
/******/ "app": 1
/******/ };
/******/
/******/ __webpack_require__.O.require = (chunkId) => (installedChunks[chunkId]);
/******/
/******/ var installChunk = (chunk) => {
/******/ var moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;
/******/ for(var moduleId in moreModules) {
/******/ if(__webpack_require__.o(moreModules, moduleId)) {
/******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(runtime) runtime(__webpack_require__);
/******/ for(var i = 0; i < chunkIds.length; i++)
/******/ installedChunks[chunkIds[i]] = 1;
/******/ __webpack_require__.O();
/******/ };
/******/
/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, promises) => {
/******/ // "1" is the signal for "already loaded"
/******/ if(!installedChunks[chunkId]) {
/******/ if(true) { // all chunks have JS
/******/ installChunk(require("./" + __webpack_require__.u(chunkId)));
/******/ } else installedChunks[chunkId] = 1;
/******/ }
/******/ };
/******/
/******/ // no external install chunk
/******/
/******/ // no HMR
/******/
/******/ // no HMR manifest
/******/ })();
/******/
/******/ /* webpack/runtime/startup chunk dependencies */
/******/ (() => {
/******/ var next = __webpack_require__.x;
/******/ __webpack_require__.x = () => {
/******/ __webpack_require__.e("vendors-common_temp_node_modules_pnpm_azure-tools_uri_3_1_1_node_modules_azure-tools_uri_dist-105f43");
/******/ __webpack_require__.e("vendors-common_temp_node_modules_pnpm_source-map-support_0_5_21_node_modules_source-map-suppo-13bba0");
/******/ __webpack_require__.e("src_autorest-as-a-service_ts");
/******/ return next();
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // run startup
/******/ var __webpack_exports__ = __webpack_require__.x();
/******/ module.exports = __webpack_exports__;
/******/
/******/ })()
;
//# sourceMappingURL=app.js.map