#!/usr/bin/env node /******/ (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 = 8); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("path"); /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = require("agentstack"); /***/ }), /* 2 */ /***/ (function(module, exports) { module.exports = require("fs-extra"); /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = require("webpack"); /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__webpack_require__(0),fe=__webpack_require__(2);function resolveStandaloneServerEntryFile(a){return a.file("src/bin/standalone.ts").path}exports.resolveStandaloneServerEntryFile=resolveStandaloneServerEntryFile;function resolveStandaloneServerConfigFile(a){if(fe.pathExistsSync(path_1.join(a.settings.HOME_DIR,"src/bin/tsconfig.json")))return path_1.join(a.settings.HOME_DIR,"src/bin/tsconfig.json");if(fe.pathExistsSync(path_1.join(a.settings.HOME_DIR,"src/tsconfig.json")))return path_1.join(a.settings.HOME_DIR,"src/tsconfig.json");if(fe.pathExistsSync(path_1.join(a.settings.HOME_DIR,"tsconfig.json")))return path_1.join(a.settings.HOME_DIR,"tsconfig.json");throw new Error("unable to find tsconfig.json for standalone server")}exports.resolveStandaloneServerConfigFile=resolveStandaloneServerConfigFile;function resolveWebApplicationBrowserEntryFile(a){return a.file("src/webapp/main.browser.ts").path}exports.resolveWebApplicationBrowserEntryFile=resolveWebApplicationBrowserEntryFile;function resolveWebApplicationBrowserConfigFile(a){return a.file("src/webapp/tsconfig.json").path}exports.resolveWebApplicationBrowserConfigFile=resolveWebApplicationBrowserConfigFile; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const agentstack_1=__webpack_require__(1),WebappBrowserConfig_1=__webpack_require__(6),StandaloneServerConfig_1=__webpack_require__(7),ServerlessConfig_1=__webpack_require__(19),path_1=__webpack_require__(0),ensure_1=__webpack_require__(23),package_1=__webpack_require__(24),fe=__webpack_require__(2);class WebCompiler extends agentstack_1.Application{async generateWebpackBundles(){const a=[];return this.settings.PUBLIC_DIR&&fe.pathExistsSync("src/webapp")&&a.push((await WebappBrowserConfig_1.GenerateWebappBrowserConfig(this))),a}async buildStandalone(){const a=[await StandaloneServerConfig_1.GenerateStandaloneServerConfig(this)],b=__webpack_require__(3),c=b(a);await new Promise((a,b)=>{c.run((c,d)=>c?b(c):a(d))})}async standalone(){return this.buildStandalone().catch(a=>{this.log(`ignore standalone bundle because ${a.message}`)})}async buildWebpack(){fe.pathExistsSync(this.settings.PUBLIC_DIR)&&(fe.ensureDirSync(path_1.join(this.settings.RELEASE_DIR,"public")),fe.copySync(this.settings.PUBLIC_DIR,path_1.join(this.settings.RELEASE_DIR,"public")));const a=await this.generateWebpackBundles(),b=__webpack_require__(3),c=b(a);await new Promise((a,b)=>{c.run((c,d)=>c?b(c):a(d))})}async webpack(){return this.buildWebpack().catch(a=>{this.error(a,`ignore webpack bundle because ${a.message}`)})}async generateRollupBundles(){return ServerlessConfig_1.GenerateServerlessConfig(this)}async rollup(){await this.generateRollupBundles().then(({inputOptions:a,outputOptions:b})=>{const c=__webpack_require__(26);return c.rollup(a).then(a=>a.generate(b).then(({code:c,map:d})=>a.write(b)))}).catch(a=>{this.error(a,`ignore rollup bundle because ${a.message}`)})}async project(){if(fe.pathExistsSync(path_1.join(this.settings.CONF_DIR,"production.yaml"))?(fe.ensureDirSync(path_1.join(this.settings.RELEASE_DIR,"conf")),fe.copySync(path_1.join(this.settings.CONF_DIR,"production.yaml"),path_1.join(this.settings.RELEASE_DIR,"conf/settings.yaml"))):fe.pathExistsSync(path_1.join(this.settings.CONF_DIR,"settings.yaml"))&&(fe.ensureDirSync(path_1.join(this.settings.RELEASE_DIR,"conf")),fe.copySync(path_1.join(this.settings.CONF_DIR,"settings.yaml"),path_1.join(this.settings.RELEASE_DIR,"conf/settings.yaml"))),ensure_1.copyIfExists(this,"Dockerfile"),ensure_1.copyIfExists(this,"COPYRIGHT"),ensure_1.copyIfExists(this,"LICENSE"),ensure_1.copyIfExists(this,"README.md"),ensure_1.copyIfExists(this,"yarn.lock"),package_1.copyOrBuildPackageFile(this),!ensure_1.copyIfExists(this,"serverless.yml")){const a=await ServerlessConfig_1.GenerateServerlessTemplate(this);agentstack_1.dumpYAML(a,path_1.join(this.settings.RELEASE_DIR,"serverless.yml"))}ensure_1.removeIfExists(this,"index.template.html"),ensure_1.removeIfExists(this,".gitignore")}async build(){await this.webpack(),await this.standalone(),await this.rollup()}}exports.WebCompiler=WebCompiler; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const Webapp_1=__webpack_require__(9),path_1=__webpack_require__(0),agentstack_1=__webpack_require__(1),KnownPackages_1=__webpack_require__(12),KnownFiles_1=__webpack_require__(4);async function GenerateWebappBrowserConfig(a){const b=await Webapp_1.GenerateWebpackConfig(a),c=__webpack_require__(3),d=__webpack_require__(13),e="build"===a.settings.ENV,f=d(b,{entry:{app:[KnownFiles_1.resolveWebApplicationBrowserEntryFile(a)]},output:{libraryTarget:"umd"},resolve:{extensions:[".ts",".vue",".js",".css"]},plugins:[new c.DefinePlugin({"process.env.NODE_ENV":JSON.stringify(e?"production":"development"),"process.env.VUE_ENV":"\"client\""}),new c.optimize.CommonsChunkPlugin({name:"vendor",minChunks:function(a){return /node_modules/.test(a.context)&&!/\.css$/.test(a.req)}}),new c.optimize.CommonsChunkPlugin({name:"manifest"})]}),g=__webpack_require__(14);if(f.plugins.push(new g({title:`${a.settings.TITLE||a.settings.NAME}`,filename:"index.html",template:path_1.join(a.settings.PUBLIC_DIR,"index.template.html"),inject:!0,cache:!0,xhtml:!0,minify:{removeComments:!0,collapseWhitespace:!0,removeAttributeQuotes:!0},chunksSortMode:"dependency"})),a.settings.USE_EXTERNAL_CDN){const b=agentstack_1.parseJSON(a.file("package.json")),c=Object.keys(b.dependencies||{}),d=Object.keys(b.devDependencies||{}),e=[];for(const b of KnownPackages_1.KnownPackages)if(0<=c.indexOf(b[0])||0<=d.indexOf(b[0])){const c=agentstack_1.parseJSON(a.file(path_1.join("node_modules",b[0],"package.json")));b.push(c.version),e.push(b)}const g=e.map(a=>({module:a[0],entry:`https://unpkg.com/${a[0]}@${a[3]}/${a[2]}`,global:a[1]}));if(console.log("found externals",g.map(a=>a.module)),g.length){const a=__webpack_require__(15);f.plugins.push(new a({externals:g,hash:!0,outputPath:"vendor"}))}}const h=__webpack_require__(16);if(f.plugins.push(new h({cacheId:a.settings.NAME,filename:"service-worker.js",minify:!0,dontCacheBustUrlsMatching:/./,staticFileGlobsIgnorePatterns:[/\.map$/,/\.json$/],runtimeCaching:[{urlPattern:"/",handler:"networkFirst"}]})),process.env.npm_config_report){const a=__webpack_require__(17);f.plugins.push(new a.BundleAnalyzerPlugin)}return f}exports.GenerateWebappBrowserConfig=GenerateWebappBrowserConfig; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__webpack_require__(0),KnownFiles_1=__webpack_require__(4);async function GenerateStandaloneServerConfig(a){const b=__webpack_require__(3),c=__webpack_require__(18),d=[];"build"===a.settings.ENV&&d.push("babel-loader?presets[]=minify"),d.push("ts-loader?configFile="+KnownFiles_1.resolveStandaloneServerConfigFile(a));const e=c();return{target:"node",entry:{standalone:KnownFiles_1.resolveStandaloneServerEntryFile(a)},output:{path:path_1.join(a.settings.RELEASE_DIR,"bin"),filename:"[name]"},node:{__dirname:!1},externals:e,resolve:{extensions:[".ts"]},module:{rules:[{test:/\.ts$/,loaders:d}]},plugins:[new b.BannerPlugin({banner:"#!/usr/bin/env node",raw:!0,entryOnly:!0})]}}exports.GenerateStandaloneServerConfig=GenerateStandaloneServerConfig; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const WebCompiler_1=__webpack_require__(5),lib_1=__webpack_require__(27);Reflect.set(process.env,"NODE_ENV","build");const builder=new WebCompiler_1.WebCompiler({settings:lib_1.WebCompilerSettings});builder.build().then(()=>(builder.info("Compile success"),builder.project().then(()=>{builder.info("Build success, exiting now...")}))).catch(a=>{builder.error(a,"Unable to build project")}); /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__webpack_require__(0),KnownFiles_1=__webpack_require__(4);async function GenerateWebpackConfig(a){const b="build"===a.settings.ENV,c=__webpack_require__(3),d=__webpack_require__(10),e={fileLoader:"file-loader",cssLoader:b?"css-loader?minimize":"css-loader",stylusLoader:"stylus-loader",vueLoader:"vue-loader",vueStyleLoader:"vue-style-loader",tsLoader:"ts-loader",babelLoader:"babel-loader"},f=b?d.extract({use:e.cssLoader,fallback:e.vueStyleLoader}):[e.vueStyleLoader,e.cssLoader],g=b?d.extract({use:[e.cssLoader,e.stylusLoader],fallback:e.vueStyleLoader}):[e.vueStyleLoader,e.cssLoader,e.stylusLoader],h=[];b&&h.push({loader:e.babelLoader,options:{presets:["minify"]}}),h.push({loader:e.tsLoader,options:{transpileOnly:!0,configFile:KnownFiles_1.resolveWebApplicationBrowserConfigFile(a),appendTsSuffixTo:[/\.vue$/]}});const i={test:/\.vue$/,loader:e.vueLoader,options:{preserveWhitespace:!1,loaders:{css:f,stylus:g}}},j={devtool:!b&&"#cheap-module-source-map",output:{filename:"[name].[hash].js",chunkFilename:"[device].[hash].js"},resolve:{extensions:[".ts",".vue",".js",".css"],alias:{"@":a.settings.PUBLIC_DIR,"~":a.settings.HOME_DIR}},performance:{maxEntrypointSize:3e5,hints:!!b&&"warning"},module:{noParse:/es6-promise\.js$/,rules:[i,{test:/\.tsx?$/,loader:h,exclude:/node_modules/},{test:/\.css$/,use:f},{test:/\.styl$/,use:g},{test:/\.stylus$/,use:g},{test:/\.(png|jpe?g|gif|svg)(\?.*)?$/,loader:e.fileLoader,options:{name:"img/[name].[hash:7].[ext]"}},{test:/\.(woff2?|eot|ttf|otf)(\?.*)?$/,loader:e.fileLoader,options:{name:"fonts/[name].[hash:7].[ext]"}}]},plugins:[]};if(a.settings.PUBLIC_URL&&(j.output.publicPath=a.settings.PUBLIC_URL+"/"),b){j.output.path=path_1.join(a.settings.RELEASE_DIR,"public");const b=__webpack_require__(11);i.options.postcss=[b({browsers:["last 3 versions"]})],j.plugins.push(new c.optimize.ModuleConcatenationPlugin),j.plugins.push(new d({filename:"common.[chunkhash].css"}))}else j.output.publicPath||(j.output.publicPath="/");return j}exports.GenerateWebpackConfig=GenerateWebpackConfig; /***/ }), /* 10 */ /***/ (function(module, exports) { module.exports = require("extract-text-webpack-plugin"); /***/ }), /* 11 */ /***/ (function(module, exports) { module.exports = require("autoprefixer"); /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0}),exports.KnownPackages=[["vue","Vue","dist/vue.min.js"],["vuex","Vuex","dist/vuex.min.js"],["vue-router","VueRouter","dist/vue-router.min.js"],["element-ui","ELEMENT","lib/index.js"],["axios","axios","dist/axios.min.js"]]; /***/ }), /* 13 */ /***/ (function(module, exports) { module.exports = require("webpack-merge"); /***/ }), /* 14 */ /***/ (function(module, exports) { module.exports = require("html-webpack-plugin"); /***/ }), /* 15 */ /***/ (function(module, exports) { module.exports = require("html-webpack-externals-plugin"); /***/ }), /* 16 */ /***/ (function(module, exports) { module.exports = require("sw-precache-webpack-plugin"); /***/ }), /* 17 */ /***/ (function(module, exports) { module.exports = require("webpack-bundle-analyzer"); /***/ }), /* 18 */ /***/ (function(module, exports) { module.exports = require("webpack-node-externals"); /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__webpack_require__(0),KnownExternals_1=__webpack_require__(20),fe=__webpack_require__(2);async function GenerateServerlessConfig(a){const b=a.file("handlers.ts"),c=__webpack_require__(21),d=__webpack_require__(22),e=path_1.join(a.settings.HOME_DIR,"tsconfig.release.json"),f={cacheRoot:"/tmp/.rpt2_cache",tsconfig:"",tsconfigOverride:{compilerOptions:{target:"es6",module:"es2015"}}};f.tsconfig=fe.pathExistsSync(e)?e:a.file("tsconfig.json").path;const g={input:b.path,external:KnownExternals_1.GenerateExternalPackageNames(a),plugins:[c(f),d({banner:"/* Enterprise Web Application Stack */",deadcode:{keepFnName:!0,keepFnArgs:!0,keepClassName:!0}})]},h={file:path_1.join(a.root.path,"release/handlers.js"),format:"cjs",sourcemap:!0};return{inputOptions:g,outputOptions:h}}exports.GenerateServerlessConfig=GenerateServerlessConfig;async function GenerateServerlessTemplate(a){let b={service:a.settings.NAME,package:{include:["conf/settings.yaml"]},plugins:["serverless-apigw-binary"],custom:{apigwBinary:{types:["*/*"]}},functions:{server:{handler:"handlers.server",timeout:a.settings.SERVERLESS_TIMEOUT_IN_SECONDS,access:"public",events:[{http:{path:"",method:"get"}},{http:{path:"",method:"head"}},{http:{path:"",method:"options"}},{http:{path:"{route+}",method:"get"}},{http:{path:"{route+}",method:"head"}},{http:{path:"{route+}",method:"options"}},{http:{path:"{route+}",method:"post"}},{http:{path:"{route+}",method:"put"}},{http:{path:"{route+}",method:"delete"}}]}}};return a.settings.SERVERLESS&&Object.keys(a.settings.SERVERLESS).length&&(b=Object.assign(b,a.settings.SERVERLESS)),b}exports.GenerateServerlessTemplate=GenerateServerlessTemplate; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const agentstack_1=__webpack_require__(1);function union_arrays(a,b){let c={};for(let d=a.length-1;0<=d;--d)c[a[d]]=a[d];for(let d=b.length-1;0<=d;--d)c[b[d]]=b[d];let d=[];for(let e in c)c.hasOwnProperty(e)&&d.push(c[e]);return d}exports.NODE_EXTERNALS=["buffer","querystring","events","http","cluster","zlib","os","https","punycode","repl","readline","vm","child_process","url","dns","net","dgram","fs","path","string_decoder","tls","crypto","stream","util","assert","tty","domain","constants","module","process","v8","timers","console","async_hooks","http2","perf_hooks"];function GenerateExternalPackageNames(a){const b=agentstack_1.parseJSON(a.root.file("package.json"));let c=exports.NODE_EXTERNALS;if(b.dependencies){const a=Object.keys(b.dependencies);a.length&&(c=union_arrays(c,a))}if(b.devDependencies){const a=Object.keys(b.devDependencies);a.length&&(c=union_arrays(c,a))}return c}exports.GenerateExternalPackageNames=GenerateExternalPackageNames; /***/ }), /* 21 */ /***/ (function(module, exports) { module.exports = require("rollup-plugin-typescript2"); /***/ }), /* 22 */ /***/ (function(module, exports) { module.exports = require("rollup-plugin-babel-minify"); /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const path_1=__webpack_require__(0),fe=__webpack_require__(2);function copyIfExists(a,b,c){const d=path_1.join(a.settings.HOME_DIR,b),e=path_1.join(a.settings.RELEASE_DIR,c||b);return fe.pathExistsSync(d)?(fe.copySync(d,e),!0):!!(c&&fe.pathExistsSync(path_1.join(a.settings.RELEASE_DIR,c)))&&(fe.copySync(d,path_1.join(a.settings.RELEASE_DIR,c)),!0)}exports.copyIfExists=copyIfExists;function removeIfExists(a,b){const c=path_1.join(a.settings.RELEASE_DIR,"public",b);if(fe.pathExistsSync(c))return fe.removeSync(c),!0}exports.removeIfExists=removeIfExists; /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});const agentstack_1=__webpack_require__(1),path_1=__webpack_require__(0),fe=__webpack_require__(2),fs=__webpack_require__(25);function copyOrBuildPackageFile(a){const b=path_1.join(a.settings.HOME_DIR,"package.release.json"),c=path_1.join(a.settings.RELEASE_DIR,"package.json");if(fe.pathExistsSync(b))fe.copySync(b,c);else{const b=agentstack_1.parseJSON(a.root.file("package.json"));Reflect.deleteProperty(b,"scripts"),Reflect.deleteProperty(b,"prettier"),Reflect.deleteProperty(b,"devDependencies"),fs.writeFileSync(c,JSON.stringify(b,null,2))}}exports.copyOrBuildPackageFile=copyOrBuildPackageFile; /***/ }), /* 25 */ /***/ (function(module, exports) { module.exports = require("fs"); /***/ }), /* 26 */ /***/ (function(module, exports) { module.exports = require("rollup"); /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports,"__esModule",{value:!0});var WebCompiler_1=__webpack_require__(5);exports.WebCompiler=WebCompiler_1.WebCompiler;var settings_1=__webpack_require__(28);exports.WebCompilerSettings=settings_1.WebCompilerSettings;var StandaloneServerConfig_1=__webpack_require__(7);exports.GenerateStandaloneServerConfig=StandaloneServerConfig_1.GenerateStandaloneServerConfig;var WebappBrowserConfig_1=__webpack_require__(6);exports.GenerateWebappBrowserConfig=WebappBrowserConfig_1.GenerateWebappBrowserConfig; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __decorate=this&&this.__decorate||function(a,b,e,f){var g,d=arguments.length,c=3>d?b:null===f?f=Object.getOwnPropertyDescriptor(b,e):f;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(a,b,e,f);else for(var h=a.length-1;0<=h;h--)(g=a[h])&&(c=(3>d?g(c):3