build-ts 13.1.5 → 13.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/package.json +7 -7
- package/dist/index.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{readAndApplyEnvironmentVariables as e,yargsOptionsBuilderForEnv as o,removeNpmAndYarnEnvironmentVariables as n}from"@willbooster/shared-lib-node";import s from"yargs";import{hideBin as i}from"yargs/helpers";import t from"node:fs";import r from"node:path";import c from"chalk";import a from"date-time";import p from"pretty-ms";import{rollup as l,watch as d}from"rollup";import{onExit as m}from"signal-exit";import u from"node:url";import{babel as f}from"@rollup/plugin-babel";import y from"@rollup/plugin-commonjs";import g from"@rollup/plugin-json";import h from"@rollup/plugin-node-resolve";import b from"@rollup/plugin-replace";import j from"@rollup/plugin-terser";import v from"rollup-plugin-analyzer";import{keepImport as w}from"rollup-plugin-keep-import";import{nodeExternals as x}from"rollup-plugin-node-externals";import k from"rollup-plugin-preserve-directives";import{string as S}from"rollup-plugin-string";import $ from"node:process";import E from"typescript";import*as D from"node:child_process";let O;function T(o,n){return O||(O=e(o,n),o.verbose&&console.info("Loaded env vars:",Object.keys(O))),O}function F(e,o){const n={},s=new Set([...(e.inline??[]).flatMap((e=>e.toString().split(","))),...Object.keys(T(e,o))]);for(const e of s)void 0!==process.env[e]&&(n[`process.env.${e}`]=JSON.stringify(process.env[e]));return e.verbose&&console.info("Inline env vars:",Object.keys(n)),n}const _=["app","functions","lib"];async function N(e){const o=r.join(e,"package.json");try{const e=await t.promises.readFile(o,"utf8");return[JSON.parse(e),o]}catch{}return[void 0,o]}const R={...o,silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"}},C={...R,input:{description:'Paths of source code files to be built. The first file is main. If no option is given, "src/index.{ts,tsx}" from package directory is targeted.',type:"array",alias:"i"},"core-js":{description:"Whether or not core-js is employed.",type:"boolean",default:!1},"core-js-proposals":{description:"Whether or not core-js with proposals support is employed.",type:"boolean",default:!1},minify:{description:"Whether or not minification is enabled.",type:"boolean",default:!0},sourcemap:{description:"Whether or not sourcemap is enabled.",type:"boolean",default:!0},external:{description:"Additional external dependencies.",type:"array"},inline:{description:"Environment variables to be inlined.",type:"array"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},keepImport:{description:"Identifiers to be kept as import statements.",type:"array"}},L={...C,moduleType:{description:"esm, cjs, or either (default).",type:"string",alias:"m"}},B={...L,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},A={...C,moduleType:{description:"esm, cjs, either, or both (default).",type:"string",alias:"m"},jsExtension:{description:"Whether to use .js in cjs and/or esm: either (default), both, or none.",type:"string",alias:"j"}};function I(e,o,n,s,i,c){const a=[...e.external??[]].map((e=>e.toString()));if(n.dependencies?.["@prisma/client"]&&a.push("prisma-client"),a.push(...Object.keys(n.dependencies??{}),...Object.keys(n.peerDependencies??{}),...Object.keys(n.optionalDependencies??{})),t.existsSync(r.join("..","..","package.json"))){const e=t.readdirSync(r.join(".."),{withFileTypes:!0});for(const o of e){if(!o.isDirectory())continue;const e=r.join("..",o.name,"package.json");if(!t.existsSync(e))continue;const s=JSON.parse(t.readFileSync(e,"utf8"));n.dependencies?.[s.name??""]&&a.push(...Object.keys(s.dependencies??{}),...Object.keys(s.peerDependencies??{}),...Object.keys(s.optionalDependencies??{}))}}const p=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],l=r.join(u.fileURLToPath(r.dirname(r.dirname(import.meta.url))),"babel.config.mjs"),d=[b({delimiters:["",""],preventAssignment:!0,values:F(e,i)}),g(),x({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:a.map((e=>new RegExp(`^${e}(?:\\/.+)?`))),exclude:s&&new RegExp(`^@?${s}(?:\\/.+)?`)}),h({extensions:p}),y(),w({moduleNames:e.keepImport?.map((e=>e.toString()))??[]})],m="app-node"===o||"functions"===o||!a.includes("@babel/runtime");return process.env.BUILDTS_USE_BABLE_RUNTIME=m?"":"1",d.push(f({configFile:l,extensions:p,babelHelpers:m?"bundled":"runtime",exclude:/^(.+\/)?node_modules\/.+$/}),...c.some((e=>e.preserveModules))?[k()]:[],S({include:["**/*.csv","**/*.txt"]})),e.minify&&d.push(j({compress:{directives:!1}})),d.push(v({summaryOnly:!0})),d}async function W(e,o){const n=E.findConfigFile(o,E.sys.fileExists);if(!n)throw new Error(`Failed to find tsconfig.json in ${o}.`);e.verbose&&console.info("Found tsconfig.json:",n);const s=[];let i=r.join("dist",r.basename(o),"src");if(t.existsSync(i)){const e=r.dirname(o),n=await t.promises.readdir(e,{withFileTypes:!0});o=r.resolve(o);for(const i of n){if(!i.isDirectory())continue;const n=r.resolve(e,i.name);if(n===o)continue;const c=E.findConfigFile(n,E.sys.fileExists),a=r.join("dist",i.name,"src");c&&t.existsSync(a)&&s.push([n,c,a])}}else i="dist";s.push([o,n,i]);let c=!0;for(const[n,i,t]of s)c&&=P(e,n,i,r.join(o,t));return c}function P(e,o,n,s){e.verbose&&console.info("runTypeScriptCompiler()",o,n,s);const{config:i}=E.readConfigFile(n,E.sys.readFile);i.compilerOptions={...i.compilerOptions,declaration:!0,emitDeclarationOnly:!0,noEmit:!1,noEmitOnError:!0,outDir:s},i.include=["src/**/*"];const{errors:t,fileNames:r,options:c}=E.parseJsonConfigFileContent(i,E.sys,o),a=E.createProgram({options:c,rootNames:r,configFileParsingDiagnostics:t}),{diagnostics:p,emitSkipped:l}=a.emit(),d=[...E.getPreEmitDiagnostics(a),...p,...t];if(d.length>0){const e={getCanonicalFileName:e=>e,getCurrentDirectory:E.sys.getCurrentDirectory,getNewLine:()=>E.sys.newLine},o=E.formatDiagnostics(d,e);console.warn(o)}return!l}const U={command:"app [package]",describe:"Build an app",builder:L,handler:async e=>G(e,"app")},J={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:B,async handler(e){if(!e.onlyPackageJson)return G(e,"functions");{const o=r.resolve(e.package?.toString()??"."),[n,s]=await N(o);n||(console.error(`Failed to parse package.json (${s}).`),process.exit(1)),await H(o,n,e.moduleType)}}},M={command:"lib [package]",describe:"Build a Node.js / React library",builder:A,handler:async e=>G(e,"lib")};async function G(e,o){process.env.NODE_ENV||="production";const n=!e.silent&&e.verbose,s=process.cwd(),i=r.resolve(e.package?.toString()??"."),[u,f]=await N(i);u||(console.error(`Failed to parse package.json (${f}).`),process.exit(1)),T(e,i);const y=function(e,o,n){if(e.input&&e.input.length>0)return e.input.map((e=>r.join(o,e.toString())));const s=r.join(n,"src");for(const e of["ts","tsx","cts","mts"]){const o=r.join(s,`index.${e}`);if(t.existsSync(o))return[o]}console.error("Failed to detect input file."),process.exit(1)}(e,s,i),g=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.some((e=>e.endsWith(".tsx")))?"lib-react":"lib";default:console.error("target option must be one of: "+_.join(", ")),process.exit(1)}}(o,y);n&&console.info("Target (Category):",`${g} (${o})`);const[h]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,i]=n||[];return[s,i]}(u),b="module"===u.type;e["core-js"]?process.env.BUILD_TS_COREJS="1":e["core-js-proposals"]&&(process.env.BUILD_TS_COREJS_WITH_PROPOSALS="1"),n&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=g;const j=function(e,o,n,s){const i=r.join(n,"dist");if("app-node"===o||"functions"===o)return[{dir:i,format:V(s,e.moduleType)?"module":"commonjs",sourcemap:e.sourcemap}];const t=[],c=e.moduleType||"both",a=e.jsExtension||"either";("cjs"===c||"both"===c||"either"===c&&!s)&&t.push({dir:i,entryFileNames:"both"===a||"either"===a&&!s?"[name].js":"[name].cjs",format:"commonjs",preserveModules:!0,sourcemap:e.sourcemap});("esm"===c||"both"===c||"either"===c&&s)&&t.push({dir:i,entryFileNames:"both"===a||"either"===a&&s?"[name].js":"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap});return t}(e,g,i,b);n&&console.info("OutputOptions:",j),0===j.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(i),await t.promises.rm(r.join(i,"dist"),{recursive:!0,force:!0}),"functions"===g&&await H(i,u,e.moduleType);const v={input:"functions"===g?Object.fromEntries(y.map(((e,o)=>[0===o?"index":r.basename(e,r.extname(e)),e]))):y,plugins:I(e,g,u,h,i,j),watch:e.watch?{clearScreen:!1}:void 0},w=e=>(Array.isArray(e)?e:[e]).map((e=>r.relative(i,e)));if(e.watch)!function(e,o,n,s,i,t){const r=d({...s,output:i}),l=async e=>{process.removeListener("uncaughtException",l),process.stdin.removeListener("end",l),r&&await r.close(),e&&process.exit(e)};m(l),process.on("uncaughtException",l),process.stdin.isTTY||(process.stdin.on("end",l),process.stdin.resume());r.on("event",(async s=>{switch(s.code){case"ERROR":!function(e,o=!1){const n=e.name||e.cause?.name,s=n?`${n}: `:"",i=`${e.plugin?`(plugin ${e.plugin}) `:""}${s}${e.message}`,t=[c.bold(c.red(`[!] ${c.bold(i.toString())}`))];e.url&&t.push(c.cyan(e.url)),e.loc?t.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&t.push(e.id),e.frame&&t.push(c.dim(e.frame)),e.stack&&t.push(c.dim(e.stack?.replace(`${s}${e.message}\n`,""))),t.push("",""),console.error(t.join("\n")),o||$.exit(1)}(s.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const o=s.input,i=[];"string"==typeof o?i.push(o):i.push(...Array.isArray(o)?o:Object.values(o)),console.info(c.cyan(`Bundles ${c.bold(t(i).join(", "))} → ${c.bold(t(s.output).join(", "))}\non ${n} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(c.green(`Created ${c.bold(t(s.output).join(", "))} in ${c.bold(p(s.duration))}`)),"app-node"!==o&&"functions"!==o&&await W(e,n);break;case"END":if(e.silent)break;console.info(`\n[${a()}] waiting for changes...`)}"result"in s&&s.result&&s.result.close()}))}(e,g,i,v,j,w);else{let o;e.silent||console.info(c.cyan(`Bundles ${c.bold(w(y).join(", "))} → ${c.bold(w(j.map((e=>e.file||e.dir||""))).join(", "))}\non ${i} ...`));let n=!1;try{const n=Date.now(),s=await l(v);o=s,await Promise.all(j.map((e=>s.write(e)))),e.silent||console.info(c.green(`Created ${w(j.map((e=>e.file||e.dir||""))).join(", ")} in ${c.bold(p(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1),"app-node"===g||"functions"===g||await W(e,i)||process.exit(1)}}async function H(e,o,n){o.name+="-dist";const s="module"===o.type,i=V(s,n);o.main=s===i?"index.js":i?"index.mjs":"index.cjs",delete o.scripts,delete o.devDependencies,await t.promises.mkdir(r.join(e,"dist"),{recursive:!0}),await t.promises.writeFile(r.join(e,"dist","package.json"),JSON.stringify(o))}function V(e,o){return"esm"===o||(!o||"either"===o)&&e}const Y={command:"run <file>",describe:"Run script",builder:{...R,module:{description:"A module type: cjs or esm",type:"string",alias:"m"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"}},async handler(e){T(e,process.cwd());const o=e.file?.toString()||"",n=process.argv[0].endsWith("/bun"),s=n?"bun":"node",i=n?["--bun",o]:["--no-warnings","--import","tsx",o];e.watch&&i.push("--watch");const[,...t]=e._,r=[...i,...t.map((e=>e.toString()))];e.verbose&&console.info(`Running '${s} ${r.join(" ")}'`);const c=D.spawnSync(s,r,{stdio:"inherit",env:{...process.env}});process.exit(c.status??1)}};n(process.env),await s(i(process.argv)).scriptName("build-ts").options(R).command(U).command(J).command(M).command(Y).demandCommand().strict().help().argv;
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
import{readAndApplyEnvironmentVariables as e,yargsOptionsBuilderForEnv as o,removeNpmAndYarnEnvironmentVariables as n}from"@willbooster/shared-lib-node";import s from"yargs";import{hideBin as i}from"yargs/helpers";import t from"node:fs";import r from"node:path";import c from"chalk";import a from"date-time";import p from"pretty-ms";import{rollup as l,watch as d}from"rollup";import{onExit as m}from"signal-exit";import u from"node:url";import{babel as f}from"@rollup/plugin-babel";import y from"@rollup/plugin-commonjs";import g from"@rollup/plugin-json";import h from"@rollup/plugin-node-resolve";import b from"@rollup/plugin-replace";import j from"@rollup/plugin-terser";import v from"rollup-plugin-analyzer";import{keepImport as w}from"rollup-plugin-keep-import";import{nodeExternals as x}from"rollup-plugin-node-externals";import k from"rollup-plugin-preserve-directives";import{string as S}from"rollup-plugin-string";import $ from"node:process";import E from"typescript";import*as D from"node:child_process";let O;function T(o,n){return O||(O=e(o,n),o.verbose&&console.info("Loaded env vars:",Object.keys(O))),O}function F(e,o){const n={},s=new Set([...(e.inline??[]).flatMap((e=>e.toString().split(","))),...Object.keys(T(e,o))]);for(const e of s)void 0!==process.env[e]&&(n[`process.env.${e}`]=JSON.stringify(process.env[e]));return e.verbose&&console.info("Inline env vars:",Object.keys(n)),n}const _=["app","functions","lib"];async function N(e){const o=r.join(e,"package.json");try{const e=await t.promises.readFile(o,"utf8");return[JSON.parse(e),o]}catch{}return[void 0,o]}const R={...o,silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"}},C={...R,input:{description:'Paths of source code files to be built. The first file is main. If no option is given, "src/index.{ts,tsx}" from package directory is targeted.',type:"array",alias:"i"},"core-js":{description:"Whether or not core-js is employed.",type:"boolean",default:!1},"core-js-proposals":{description:"Whether or not core-js with proposals support is employed.",type:"boolean",default:!1},minify:{description:"Whether or not minification is enabled.",type:"boolean",default:!0},sourcemap:{description:"Whether or not sourcemap is enabled.",type:"boolean",default:!0},external:{description:"Additional external dependencies.",type:"array"},inline:{description:"Environment variables to be inlined.",type:"array"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},keepImport:{description:"Identifiers to be kept as import statements.",type:"array"}},L={...C,moduleType:{description:"esm, cjs, or either (default).",type:"string",alias:"m"}},B={...L,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},A={...C,moduleType:{description:"esm, cjs, either, or both (default).",type:"string",alias:"m"},jsExtension:{description:"Whether to use .js in cjs and/or esm: either (default), both, or none.",type:"string",alias:"j"}};function I(e,o,n,s,i,c){const a=[...e.external??[]].map((e=>e.toString()));if(n.dependencies?.["@prisma/client"]&&a.push("prisma-client"),a.push(...Object.keys(n.dependencies??{}),...Object.keys(n.peerDependencies??{}),...Object.keys(n.optionalDependencies??{})),t.existsSync(r.join("..","..","package.json"))){const e=t.readdirSync(r.join(".."),{withFileTypes:!0});for(const o of e){if(!o.isDirectory())continue;const e=r.join("..",o.name,"package.json");if(!t.existsSync(e))continue;const s=JSON.parse(t.readFileSync(e,"utf8"));n.dependencies?.[s.name??""]&&a.push(...Object.keys(s.dependencies??{}),...Object.keys(s.peerDependencies??{}),...Object.keys(s.optionalDependencies??{}))}}const p=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],l=r.join(u.fileURLToPath(r.dirname(r.dirname(import.meta.url))),"babel.config.mjs"),d=[b({delimiters:["",""],preventAssignment:!0,values:F(e,i)}),g(),x({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:a.map((e=>new RegExp(`^${e}(?:\\/.+)?`))),exclude:s&&new RegExp(`^@?${s}(?:\\/.+)?`)}),h({extensions:p}),y(),w({moduleNames:e.keepImport?.map((e=>e.toString()))??[]})],m="app-node"===o||"functions"===o||!a.includes("@babel/runtime");return process.env.BUILDTS_USE_BABLE_RUNTIME=m?"":"1",d.push(f({configFile:l,extensions:p,babelHelpers:m?"bundled":"runtime",exclude:/^(.+\/)?node_modules\/.+$/}),...c.some((e=>e.preserveModules))?[k()]:[],S({include:["**/*.csv","**/*.txt"]})),e.minify&&d.push(j({compress:{directives:!1}})),d.push(v({summaryOnly:!0})),d}async function W(e,o){const n=E.findConfigFile(o,E.sys.fileExists);if(!n)throw new Error(`Failed to find tsconfig.json in ${o}.`);e.verbose&&console.info("Found tsconfig.json:",n);const s=[];let i=r.join("dist",r.basename(o),"src");if(t.existsSync(i)){const e=r.dirname(o),n=await t.promises.readdir(e,{withFileTypes:!0});o=r.resolve(o);for(const i of n){if(!i.isDirectory())continue;const n=r.resolve(e,i.name);if(n===o)continue;const c=E.findConfigFile(n,E.sys.fileExists),a=r.join("dist",i.name,"src");c&&t.existsSync(a)&&s.push([n,c,a])}}else i="dist";s.push([o,n,i]);let c=!0;for(const[n,i,t]of s)c&&=P(e,n,i,r.join(o,t));return c}function P(e,o,n,s){e.verbose&&console.info("runTypeScriptCompiler()",o,n,s);const{config:i}=E.readConfigFile(n,E.sys.readFile);i.compilerOptions={...i.compilerOptions,declaration:!0,emitDeclarationOnly:!0,noEmit:!1,noEmitOnError:!0,outDir:s},i.include=["src/**/*"];const{errors:t,fileNames:r,options:c}=E.parseJsonConfigFileContent(i,E.sys,o),a=E.createProgram({options:c,rootNames:r,configFileParsingDiagnostics:t}),{diagnostics:p,emitSkipped:l}=a.emit(),d=[...E.getPreEmitDiagnostics(a),...p,...t];if(d.length>0){const e={getCanonicalFileName:e=>e,getCurrentDirectory:E.sys.getCurrentDirectory,getNewLine:()=>E.sys.newLine},o=E.formatDiagnostics(d,e);console.warn(o)}return!l}const U={command:"app [package]",describe:"Build an app",builder:L,handler:async e=>G(e,"app")},J={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:B,async handler(e){if(!e.onlyPackageJson)return G(e,"functions");{const o=r.resolve(e.package?.toString()??"."),[n,s]=await N(o);n||(console.error(`Failed to parse package.json (${s}).`),process.exit(1)),await H(o,n,e.moduleType)}}},M={command:"lib [package]",describe:"Build a Node.js / React library",builder:A,handler:async e=>G(e,"lib")};async function G(e,o){process.env.NODE_ENV||="production";const n=!e.silent&&e.verbose,s=process.cwd(),i=r.resolve(e.package?.toString()??"."),[u,f]=await N(i);u||(console.error(`Failed to parse package.json (${f}).`),process.exit(1)),T(e,i);const y=function(e,o,n){if(e.input&&e.input.length>0)return e.input.map((e=>r.join(o,e.toString())));const s=r.join(n,"src");for(const e of["ts","tsx","cts","mts"]){const o=r.join(s,`index.${e}`);if(t.existsSync(o))return[o]}console.error("Failed to detect input file."),process.exit(1)}(e,s,i),g=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.some((e=>e.endsWith(".tsx")))?"lib-react":"lib";default:console.error("target option must be one of: "+_.join(", ")),process.exit(1)}}(o,y);n&&console.info("Target (Category):",`${g} (${o})`);const[h]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,i]=n||[];return[s,i]}(u),b="module"===u.type;e["core-js"]?process.env.BUILD_TS_COREJS="1":e["core-js-proposals"]&&(process.env.BUILD_TS_COREJS_WITH_PROPOSALS="1"),n&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=g;const j=function(e,o,n,s){const i=r.join(n,"dist");if("app-node"===o||"functions"===o)return[{dir:i,format:V(s,e.moduleType)?"module":"commonjs",sourcemap:e.sourcemap&&"inline"}];const t=[],c=e.moduleType||"both",a=e.jsExtension||"either";("cjs"===c||"both"===c||"either"===c&&!s)&&t.push({dir:i,entryFileNames:"both"===a||"either"===a&&!s?"[name].js":"[name].cjs",format:"commonjs",preserveModules:!0,sourcemap:e.sourcemap});("esm"===c||"both"===c||"either"===c&&s)&&t.push({dir:i,entryFileNames:"both"===a||"either"===a&&s?"[name].js":"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap});return t}(e,g,i,b);n&&console.info("OutputOptions:",j),0===j.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(i),await t.promises.rm(r.join(i,"dist"),{recursive:!0,force:!0}),"functions"===g&&await H(i,u,e.moduleType);const v={input:"functions"===g?Object.fromEntries(y.map(((e,o)=>[0===o?"index":r.basename(e,r.extname(e)),e]))):y,plugins:I(e,g,u,h,i,j),watch:e.watch?{clearScreen:!1}:void 0},w=e=>(Array.isArray(e)?e:[e]).map((e=>r.relative(i,e)));if(e.watch)!function(e,o,n,s,i,t){const r=d({...s,output:i}),l=async e=>{process.removeListener("uncaughtException",l),process.stdin.removeListener("end",l),r&&await r.close(),e&&process.exit(e)};m(l),process.on("uncaughtException",l),process.stdin.isTTY||(process.stdin.on("end",l),process.stdin.resume());r.on("event",(async s=>{switch(s.code){case"ERROR":!function(e,o=!1){const n=e.name||e.cause?.name,s=n?`${n}: `:"",i=`${e.plugin?`(plugin ${e.plugin}) `:""}${s}${e.message}`,t=[c.bold(c.red(`[!] ${c.bold(i.toString())}`))];e.url&&t.push(c.cyan(e.url)),e.loc?t.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&t.push(e.id),e.frame&&t.push(c.dim(e.frame)),e.stack&&t.push(c.dim(e.stack?.replace(`${s}${e.message}\n`,""))),t.push("",""),console.error(t.join("\n")),o||$.exit(1)}(s.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const o=s.input,i=[];"string"==typeof o?i.push(o):i.push(...Array.isArray(o)?o:Object.values(o)),console.info(c.cyan(`Bundles ${c.bold(t(i).join(", "))} → ${c.bold(t(s.output).join(", "))}\non ${n} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(c.green(`Created ${c.bold(t(s.output).join(", "))} in ${c.bold(p(s.duration))}`)),"app-node"!==o&&"functions"!==o&&await W(e,n);break;case"END":if(e.silent)break;console.info(`\n[${a()}] waiting for changes...`)}"result"in s&&s.result&&s.result.close()}))}(e,g,i,v,j,w);else{let o;e.silent||console.info(c.cyan(`Bundles ${c.bold(w(y).join(", "))} → ${c.bold(w(j.map((e=>e.file||e.dir||""))).join(", "))}\non ${i} ...`));let n=!1;try{const n=Date.now(),s=await l(v);o=s,await Promise.all(j.map((e=>s.write(e)))),e.silent||console.info(c.green(`Created ${w(j.map((e=>e.file||e.dir||""))).join(", ")} in ${c.bold(p(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1),"app-node"===g||"functions"===g||await W(e,i)||process.exit(1)}}async function H(e,o,n){o.name+="-dist";const s="module"===o.type,i=V(s,n);o.main=s===i?"index.js":i?"index.mjs":"index.cjs",delete o.scripts,delete o.devDependencies,await t.promises.mkdir(r.join(e,"dist"),{recursive:!0}),await t.promises.writeFile(r.join(e,"dist","package.json"),JSON.stringify(o))}function V(e,o){return"esm"===o||(!o||"either"===o)&&e}const Y={command:"run <file>",describe:"Run script",builder:{...R,module:{description:"A module type: cjs or esm",type:"string",alias:"m"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"}},async handler(e){T(e,process.cwd());const o=e.file?.toString()||"",n=process.argv[0].endsWith("/bun"),s=n?"bun":"node",i=n?["--bun"]:["--no-warnings","--import","tsx"];e.watch&&i.push("--watch"),i.push(o);const[,...t]=e._,r=[...i,...t.map((e=>e.toString()))];e.verbose&&console.info(`Running '${s} ${r.join(" ")}'`);const c=D.spawnSync(s,r,{stdio:"inherit",env:{...process.env}});process.exit(c.status??1)}};n(process.env),await s(i(process.argv)).scriptName("build-ts").options(R).command(U).command(J).command(M).command(Y).demandCommand().strict().help().argv;
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnYudHMiLCIuLi9zcmMvdHlwZXMudHMiLCIuLi9zcmMvdXRpbHMudHMiLCIuLi9zcmMvc2hhcmVkT3B0aW9uc0J1aWxkZXIudHMiLCIuLi9zcmMvY29tbWFuZHMvYnVpbGQvYnVpbGRlci50cyIsIi4uL3NyYy9jb21tYW5kcy9idWlsZC9wbHVnaW4udHMiLCIuLi9zcmMvY29tbWFuZHMvYnVpbGQvdHlwZVNjcmlwdC50cyIsIi4uL3NyYy9jb21tYW5kcy9idWlsZC9idWlsZC50cyIsIi4uL3NyYy9jb21tYW5kcy9idWlsZC9yb2xsdXBMb2dnZXIudHMiLCIuLi9zcmMvY29tbWFuZHMvcnVuLnRzIiwiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRBbmRBcHBseUVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnQHdpbGxib29zdGVyL3NoYXJlZC1saWItbm9kZSc7XG5cbmltcG9ydCB0eXBlIHsgYnVpbGRlciB9IGZyb20gJy4vY29tbWFuZHMvYnVpbGQvYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IHNoYXJlZE9wdGlvbnNCdWlsZGVyIH0gZnJvbSAnLi9zaGFyZWRPcHRpb25zQnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50c1R5cGUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxubGV0IGVudlZhcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBsb2FkcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBgLmVudmAgZmlsZXMuXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlc1dpdGhDYWNoZShcbiAgYXJndjogQXJndW1lbnRzVHlwZTx0eXBlb2Ygc2hhcmVkT3B0aW9uc0J1aWxkZXI+LFxuICBjd2Q6IHN0cmluZ1xuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghZW52VmFycykge1xuICAgIGVudlZhcnMgPSByZWFkQW5kQXBwbHlFbnZpcm9ubWVudFZhcmlhYmxlcyhhcmd2LCBjd2QpO1xuICAgIGlmIChhcmd2LnZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnTG9hZGVkIGVudiB2YXJzOicsIE9iamVjdC5rZXlzKGVudlZhcnMpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVudlZhcnM7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgZGVmaW5pdGlvbiBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB3aWxsIGJlIGluamVjdGVkIGludG8gdGhlIGJ1aWxkLlxuICogKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnZpcm9ubWVudFZhcmlhYmxlc0RlZmluaXRpb24oXG4gIGFyZ3Y6IEFyZ3VtZW50c1R5cGU8dHlwZW9mIGJ1aWxkZXI+LFxuICBjd2Q6IHN0cmluZ1xuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGVudlZhcnNEZWY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0KFtcbiAgICAuLi4oYXJndi5pbmxpbmUgPz8gW10pLmZsYXRNYXAoKGUpID0+IGUudG9TdHJpbmcoKS5zcGxpdCgnLCcpKSxcbiAgICAuLi5PYmplY3Qua2V5cyhsb2FkRW52aXJvbm1lbnRWYXJpYWJsZXNXaXRoQ2FjaGUoYXJndiwgY3dkKSksXG4gIF0pO1xuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnZbbmFtZV0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cbiAgICBlbnZWYXJzRGVmW2Bwcm9jZXNzLmVudi4ke25hbWV9YF0gPSBKU09OLnN0cmluZ2lmeShwcm9jZXNzLmVudltuYW1lXSk7XG4gIH1cbiAgaWYgKGFyZ3YudmVyYm9zZSkge1xuICAgIGNvbnNvbGUuaW5mbygnSW5saW5lIGVudiB2YXJzOicsIE9iamVjdC5rZXlzKGVudlZhcnNEZWYpKTtcbiAgfVxuICByZXR1cm4gZW52VmFyc0RlZjtcbn1cbiIsImltcG9ydCB0eXBlIHsgQXJndW1lbnRzQ2FtZWxDYXNlLCBJbmZlcnJlZE9wdGlvblR5cGVzLCBPcHRpb25zIH0gZnJvbSAneWFyZ3MnO1xuXG5leHBvcnQgY29uc3QgYWxsVGFyZ2V0Q2F0ZWdvcmllcyA9IFsnYXBwJywgJ2Z1bmN0aW9ucycsICdsaWInXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0Q2F0ZWdvcnkgPSAodHlwZW9mIGFsbFRhcmdldENhdGVnb3JpZXMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBhbGxUYXJnZXREZXRhaWxzID0gWydhcHAtbm9kZScsICdmdW5jdGlvbnMnLCAnbGliJywgJ2xpYi1yZWFjdCddIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYXJnZXREZXRhaWwgPSAodHlwZW9mIGFsbFRhcmdldERldGFpbHMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIEFyZ3VtZW50c1R5cGU8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogT3B0aW9ucyB9PiA9IEFyZ3VtZW50c0NhbWVsQ2FzZTxJbmZlcnJlZE9wdGlvblR5cGVzPFQ+PjtcbiIsImltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdXJsIGZyb20gJ25vZGU6dXJsJztcblxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlSnNvbiB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUGFja2FnZUpzb24oZGlyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxbUGFja2FnZUpzb24gfCB1bmRlZmluZWQsIHN0cmluZ10+IHtcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKGRpclBhdGgsICdwYWNrYWdlLmpzb24nKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYWNrYWdlSnNvblRleHQgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShwYWNrYWdlSnNvblBhdGgsICd1dGY4Jyk7XG4gICAgcmV0dXJuIFtKU09OLnBhcnNlKHBhY2thZ2VKc29uVGV4dCkgYXMgUGFja2FnZUpzb24sIHBhY2thZ2VKc29uUGF0aF07XG4gIH0gY2F0Y2gge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuICByZXR1cm4gW3VuZGVmaW5lZCwgcGFja2FnZUpzb25QYXRoXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1aWxkVHNSb290UGF0aCgpOiBzdHJpbmcge1xuICByZXR1cm4gdXJsLmZpbGVVUkxUb1BhdGgocGF0aC5kaXJuYW1lKHBhdGguZGlybmFtZShpbXBvcnQubWV0YS51cmwpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lc3BhY2VBbmROYW1lKHBhY2thZ2VKc29uOiBQYWNrYWdlSnNvbik6IFtzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZF0ge1xuICBjb25zdCBwYWNrYWdlTmFtZSA9IHBhY2thZ2VKc29uLm5hbWU/LnRvU3RyaW5nKCkgfHwgJyc7XG4gIGNvbnN0IG1hdGNoID0gL0AoW14vXSspXFwvKC4rKS8uZXhlYyhwYWNrYWdlTmFtZSk7XG4gIGNvbnN0IFssIG5hbWVzcGFjZSwgbmFtZV0gPSBtYXRjaCB8fCBbXTtcbiAgcmV0dXJuIFtuYW1lc3BhY2UsIG5hbWVdO1xufVxuIiwiaW1wb3J0IHsgeWFyZ3NPcHRpb25zQnVpbGRlckZvckVudiB9IGZyb20gJ0B3aWxsYm9vc3Rlci9zaGFyZWQtbGliLW5vZGUnO1xuXG5leHBvcnQgY29uc3Qgc2hhcmVkT3B0aW9uc0J1aWxkZXIgPSB7XG4gIC4uLnlhcmdzT3B0aW9uc0J1aWxkZXJGb3JFbnYsXG4gIHNpbGVudDoge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB3YXRjaCBtb2RlIGlzIGVuYWJsZWQgb3Igbm90JyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgYWxpYXM6ICdzJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCJpbXBvcnQgeyBzaGFyZWRPcHRpb25zQnVpbGRlciB9IGZyb20gJy4uLy4uL3NoYXJlZE9wdGlvbnNCdWlsZGVyLmpzJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkZXIgPSB7XG4gIC4uLnNoYXJlZE9wdGlvbnNCdWlsZGVyLFxuICBpbnB1dDoge1xuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1BhdGhzIG9mIHNvdXJjZSBjb2RlIGZpbGVzIHRvIGJlIGJ1aWx0LiBUaGUgZmlyc3QgZmlsZSBpcyBtYWluLiBJZiBubyBvcHRpb24gaXMgZ2l2ZW4sIFwic3JjL2luZGV4Lnt0cyx0c3h9XCIgZnJvbSBwYWNrYWdlIGRpcmVjdG9yeSBpcyB0YXJnZXRlZC4nLFxuICAgIHR5cGU6ICdhcnJheScsXG4gICAgYWxpYXM6ICdpJyxcbiAgfSxcbiAgJ2NvcmUtanMnOiB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIG9yIG5vdCBjb3JlLWpzIGlzIGVtcGxveWVkLicsXG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICAnY29yZS1qcy1wcm9wb3NhbHMnOiB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIG9yIG5vdCBjb3JlLWpzIHdpdGggcHJvcG9zYWxzIHN1cHBvcnQgaXMgZW1wbG95ZWQuJyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIG1pbmlmeToge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciBvciBub3QgbWluaWZpY2F0aW9uIGlzIGVuYWJsZWQuJyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgc291cmNlbWFwOiB7XG4gICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIG9yIG5vdCBzb3VyY2VtYXAgaXMgZW5hYmxlZC4nLFxuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBleHRlcm5hbDoge1xuICAgIGRlc2NyaXB0aW9uOiAnQWRkaXRpb25hbCBleHRlcm5hbCBkZXBlbmRlbmNpZXMuJyxcbiAgICB0eXBlOiAnYXJyYXknLFxuICB9LFxuICBpbmxpbmU6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0Vudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBpbmxpbmVkLicsXG4gICAgdHlwZTogJ2FycmF5JyxcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgd2F0Y2ggbW9kZSBpcyBlbmFibGVkIG9yIG5vdCcsXG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIGFsaWFzOiAndycsXG4gIH0sXG4gIGtlZXBJbXBvcnQ6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0lkZW50aWZpZXJzIHRvIGJlIGtlcHQgYXMgaW1wb3J0IHN0YXRlbWVudHMuJyxcbiAgICB0eXBlOiAnYXJyYXknLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGFwcEJ1aWxkZXIgPSB7XG4gIC4uLmJ1aWxkZXIsXG4gIG1vZHVsZVR5cGU6IHtcbiAgICBkZXNjcmlwdGlvbjogJ2VzbSwgY2pzLCBvciBlaXRoZXIgKGRlZmF1bHQpLicsXG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICdtJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBmdW5jdGlvbnNCdWlsZGVyID0ge1xuICAuLi5hcHBCdWlsZGVyLFxuICBvbmx5UGFja2FnZUpzb246IHtcbiAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gZ2VuZXJhdGUgb25seSBwYWNrYWdlLmpzb24uJyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgbGliQnVpbGRlciA9IHtcbiAgLi4uYnVpbGRlcixcbiAgbW9kdWxlVHlwZToge1xuICAgIGRlc2NyaXB0aW9uOiAnZXNtLCBjanMsIGVpdGhlciwgb3IgYm90aCAoZGVmYXVsdCkuJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICBhbGlhczogJ20nLFxuICB9LFxuICAvLyAuanMgZmlsZXMgaW4gYSBwYWNrYWdlIHdpdGggYFwidHlwZVwiOiBcIm1vZHVsZVwiYCBhcmUgdHJlYXRlZCBhcyBlc20uXG4gIC8vIEhvd2V2ZXIsIHdlIHdhbnQgdG8gdHJlYXQgdGhlbSBhcyBjanMgaW4gdGhlIGNhc2Ugd2hlcmUgYSBjanMgcHJvamVjdCBpbXBvcnRzIGFuIGVzbSBwYWNrYWdlLlxuICAvLyBUbyBkZWFsIHdpdGggdGhlIGNhc2UsIHdlIHVzZSAuY2pzIGFuZCAubWpzIGV4dGVuc2lvbnMgaW5zdGVhZCBvZiAuanMgZXh0ZW5zaW9uLlxuICBqc0V4dGVuc2lvbjoge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0byB1c2UgLmpzIGluIGNqcyBhbmQvb3IgZXNtOiBlaXRoZXIgKGRlZmF1bHQpLCBib3RoLCBvciBub25lLicsXG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgYWxpYXM6ICdqJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFueUJ1aWxkZXJUeXBlID0gdHlwZW9mIGFwcEJ1aWxkZXIgfCB0eXBlb2YgZnVuY3Rpb25zQnVpbGRlciB8IHR5cGVvZiBsaWJCdWlsZGVyO1xuIiwiaW1wb3J0IGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgYmFiZWwgfSBmcm9tICdAcm9sbHVwL3BsdWdpbi1iYWJlbCc7XG5pbXBvcnQgY29tbW9uanMgZnJvbSAnQHJvbGx1cC9wbHVnaW4tY29tbW9uanMnO1xuaW1wb3J0IGpzb24gZnJvbSAnQHJvbGx1cC9wbHVnaW4tanNvbic7XG5pbXBvcnQgcmVzb2x2ZSBmcm9tICdAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmUnO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSAnQHJvbGx1cC9wbHVnaW4tcmVwbGFjZSc7XG5pbXBvcnQgdGVyc2VyIGZyb20gJ0Byb2xsdXAvcGx1Z2luLXRlcnNlcic7XG5pbXBvcnQgdHlwZSB7IE91dHB1dE9wdGlvbnMsIFBsdWdpbiB9IGZyb20gJ3JvbGx1cCc7XG5pbXBvcnQgYW5hbHl6ZSBmcm9tICdyb2xsdXAtcGx1Z2luLWFuYWx5emVyJztcbmltcG9ydCB7IGtlZXBJbXBvcnQgfSBmcm9tICdyb2xsdXAtcGx1Z2luLWtlZXAtaW1wb3J0JztcbmltcG9ydCB7IG5vZGVFeHRlcm5hbHMgfSBmcm9tICdyb2xsdXAtcGx1Z2luLW5vZGUtZXh0ZXJuYWxzJztcbmltcG9ydCBwcmVzZXJ2ZURpcmVjdGl2ZXMgZnJvbSAncm9sbHVwLXBsdWdpbi1wcmVzZXJ2ZS1kaXJlY3RpdmVzJztcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gJ3JvbGx1cC1wbHVnaW4tc3RyaW5nJztcbmltcG9ydCB0eXBlIHsgUGFja2FnZUpzb24gfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjcmVhdGVFbnZpcm9ubWVudFZhcmlhYmxlc0RlZmluaXRpb24gfSBmcm9tICcuLi8uLi9lbnYuanMnO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudHNUeXBlLCBUYXJnZXREZXRhaWwgfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBnZXRCdWlsZFRzUm9vdFBhdGggfSBmcm9tICcuLi8uLi91dGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgYnVpbGRlciB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBsdWdpbnMoXG4gIGFyZ3Y6IEFyZ3VtZW50c1R5cGU8dHlwZW9mIGJ1aWxkZXI+LFxuICB0YXJnZXREZXRhaWw6IFRhcmdldERldGFpbCxcbiAgcGFja2FnZUpzb246IFBhY2thZ2VKc29uLFxuICBuYW1lc3BhY2U6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcGFja2FnZURpclBhdGg6IHN0cmluZyxcbiAgb3V0cHV0T3B0aW9uc0xpc3Q6IE91dHB1dE9wdGlvbnNbXVxuKTogUGx1Z2luW10ge1xuICBjb25zdCBleHRlcm5hbERlcHMgPSBbLi4uKGFyZ3YuZXh0ZXJuYWwgPz8gW10pXS5tYXAoKGl0ZW0pID0+IGl0ZW0udG9TdHJpbmcoKSk7XG4gIGlmIChwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXM/LlsnQHByaXNtYS9jbGllbnQnXSkge1xuICAgIGV4dGVybmFsRGVwcy5wdXNoKCdwcmlzbWEtY2xpZW50Jyk7XG4gIH1cbiAgLy8gU2luY2UgYGRlcHM6IHRydWVgIGRvZXMgbm90IHdvcmsgZm9yIGBpbXBvcnQgY2h1bmsgZnJvbSAnbG9kYXNoLmNodW5rL2luZGV4LmpzJztgXG4gIGV4dGVybmFsRGVwcy5wdXNoKFxuICAgIC4uLk9iamVjdC5rZXlzKHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgLi4uT2JqZWN0LmtleXMocGFja2FnZUpzb24ucGVlckRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgLi4uT2JqZWN0LmtleXMocGFja2FnZUpzb24ub3B0aW9uYWxEZXBlbmRlbmNpZXMgPz8ge30pXG4gICk7XG4gIC8vIEFkZCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgZnJvbSBzaWJsaW5nIHBhY2thZ2VzXG4gIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbignLi4nLCAnLi4nLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgY29uc3QgcGFja2FnZURpcnMgPSBmcy5yZWFkZGlyU3luYyhwYXRoLmpvaW4oJy4uJyksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICBmb3IgKGNvbnN0IHBhY2thZ2VEaXIgb2YgcGFja2FnZURpcnMpIHtcbiAgICAgIGlmICghcGFja2FnZURpci5pc0RpcmVjdG9yeSgpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKCcuLicsIHBhY2thZ2VEaXIubmFtZSwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBvdGhlclBhY2thZ2VKc29uOiBQYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICBpZiAocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzPy5bb3RoZXJQYWNrYWdlSnNvbi5uYW1lID8/ICcnXSkge1xuICAgICAgICBleHRlcm5hbERlcHMucHVzaChcbiAgICAgICAgICAuLi5PYmplY3Qua2V5cyhvdGhlclBhY2thZ2VKc29uLmRlcGVuZGVuY2llcyA/PyB7fSksXG4gICAgICAgICAgLi4uT2JqZWN0LmtleXMob3RoZXJQYWNrYWdlSnNvbi5wZWVyRGVwZW5kZW5jaWVzID8/IHt9KSxcbiAgICAgICAgICAuLi5PYmplY3Qua2V5cyhvdGhlclBhY2thZ2VKc29uLm9wdGlvbmFsRGVwZW5kZW5jaWVzID8/IHt9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBbJy5janMnLCAnLm1qcycsICcuanMnLCAnLmpzeCcsICcuanNvbicsICcuY3RzJywgJy5tdHMnLCAnLnRzJywgJy50c3gnXTtcbiAgY29uc3QgYmFiZWxDb25maWdQYXRoID0gcGF0aC5qb2luKGdldEJ1aWxkVHNSb290UGF0aCgpLCAnYmFiZWwuY29uZmlnLm1qcycpO1xuICBjb25zdCBwbHVnaW5zOiBQbHVnaW5bXSA9IFtcbiAgICByZXBsYWNlKHtcbiAgICAgIGRlbGltaXRlcnM6IFsnJywgJyddLFxuICAgICAgcHJldmVudEFzc2lnbm1lbnQ6IHRydWUsXG4gICAgICB2YWx1ZXM6IGNyZWF0ZUVudmlyb25tZW50VmFyaWFibGVzRGVmaW5pdGlvbihhcmd2LCBwYWNrYWdlRGlyUGF0aCksXG4gICAgfSksXG4gICAganNvbigpLFxuICAgIG5vZGVFeHRlcm5hbHMoe1xuICAgICAgZGVwczogdHJ1ZSxcbiAgICAgIGRldkRlcHM6IGZhbHNlLFxuICAgICAgcGVlckRlcHM6IHRydWUsXG4gICAgICBvcHREZXBzOiB0cnVlLFxuICAgICAgaW5jbHVkZTogZXh0ZXJuYWxEZXBzLm1hcCgobmFtZSkgPT4gbmV3IFJlZ0V4cChgXiR7bmFtZX0oPzpcXFxcLy4rKT9gKSksXG4gICAgICBleGNsdWRlOiBuYW1lc3BhY2UgJiYgbmV3IFJlZ0V4cChgXkA/JHtuYW1lc3BhY2V9KD86XFxcXC8uKyk/YCksXG4gICAgfSksXG4gICAgcmVzb2x2ZSh7IGV4dGVuc2lvbnMgfSksXG4gICAgY29tbW9uanMoKSxcbiAgICBrZWVwSW1wb3J0KHsgbW9kdWxlTmFtZXM6IGFyZ3Yua2VlcEltcG9ydD8ubWFwKChpdGVtKSA9PiBpdGVtLnRvU3RyaW5nKCkpID8/IFtdIH0pLFxuICBdO1xuICBjb25zdCBpc0JhYmVsSGVscGVyc0J1bmRsZWQgPVxuICAgIHRhcmdldERldGFpbCA9PT0gJ2FwcC1ub2RlJyB8fCB0YXJnZXREZXRhaWwgPT09ICdmdW5jdGlvbnMnIHx8ICFleHRlcm5hbERlcHMuaW5jbHVkZXMoJ0BiYWJlbC9ydW50aW1lJyk7XG4gIHByb2Nlc3MuZW52LkJVSUxEVFNfVVNFX0JBQkxFX1JVTlRJTUUgPSBpc0JhYmVsSGVscGVyc0J1bmRsZWQgPyAnJyA6ICcxJztcbiAgcGx1Z2lucy5wdXNoKFxuICAgIGJhYmVsKHtcbiAgICAgIGNvbmZpZ0ZpbGU6IGJhYmVsQ29uZmlnUGF0aCxcbiAgICAgIGV4dGVuc2lvbnMsXG4gICAgICAvLyBXZSBuZWVkIGBydW50aW1lIHNpbmNlIGBidW5kbGVkYCBtYXkgYnJlYWsgZGlyZWN0b3J5IHN0cnVjdHVyZSBieSBjcmVhdGluZyBfdmlydHVhbCBkaXJlY3RvcnkuXG4gICAgICBiYWJlbEhlbHBlcnM6IGlzQmFiZWxIZWxwZXJzQnVuZGxlZCA/ICdidW5kbGVkJyA6ICdydW50aW1lJyxcbiAgICAgIGV4Y2x1ZGU6IC9eKC4rXFwvKT9ub2RlX21vZHVsZXNcXC8uKyQvLFxuICAgIH0pLFxuICAgIC4uLihvdXRwdXRPcHRpb25zTGlzdC5zb21lKChvcHRzKSA9PiBvcHRzLnByZXNlcnZlTW9kdWxlcykgPyBbcHJlc2VydmVEaXJlY3RpdmVzKCldIDogW10pLFxuICAgIHN0cmluZyh7IGluY2x1ZGU6IFsnKiovKi5jc3YnLCAnKiovKi50eHQnXSB9KVxuICApO1xuICBpZiAoYXJndi5taW5pZnkpIHtcbiAgICBwbHVnaW5zLnB1c2godGVyc2VyKHsgY29tcHJlc3M6IHsgZGlyZWN0aXZlczogZmFsc2UgfSB9KSk7XG4gIH1cbiAgcGx1Z2lucy5wdXNoKGFuYWx5emUoeyBzdW1tYXJ5T25seTogdHJ1ZSB9KSk7XG4gIHJldHVybiBwbHVnaW5zO1xufVxuIiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyICovXG5cbi8vIFdlIGNhbm5vdCB1c2UgbmFtZWQgaW1wb3J0cyBmcm9tICd0eXBlc2NyaXB0JyBiZWNhdXNlIG9mIGJ1aWxkIGVycm9ycy5cbmltcG9ydCBmcyBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwYXRoIGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHR5cGUgeyBBcmd1bWVudHNUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFueUJ1aWxkZXJUeXBlIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRGVjbGFyYXRpb25GaWxlcyhcbiAgYXJndjogQXJndW1lbnRzVHlwZTxBbnlCdWlsZGVyVHlwZT4sXG4gIGNvcmVQcm9qZWN0RGlyUGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgY29yZUNvbmZpZ0ZpbGUgPSB0cy5maW5kQ29uZmlnRmlsZShjb3JlUHJvamVjdERpclBhdGgsIHRzLnN5cy5maWxlRXhpc3RzKTtcbiAgaWYgKCFjb3JlQ29uZmlnRmlsZSkgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmluZCB0c2NvbmZpZy5qc29uIGluICR7Y29yZVByb2plY3REaXJQYXRofS5gKTtcbiAgaWYgKGFyZ3YudmVyYm9zZSkge1xuICAgIGNvbnNvbGUuaW5mbygnRm91bmQgdHNjb25maWcuanNvbjonLCBjb3JlQ29uZmlnRmlsZSk7XG4gIH1cblxuICBjb25zdCBwcm9qZWN0czogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddW10gPSBbXTtcbiAgbGV0IG91dERpciA9IHBhdGguam9pbignZGlzdCcsIHBhdGguYmFzZW5hbWUoY29yZVByb2plY3REaXJQYXRoKSwgJ3NyYycpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhvdXREaXIpKSB7XG4gICAgY29uc3QgcGFyZW50RGlyUGF0aCA9IHBhdGguZGlybmFtZShjb3JlUHJvamVjdERpclBhdGgpO1xuICAgIGNvbnN0IGRpcmVudHMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKHBhcmVudERpclBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcbiAgICBjb3JlUHJvamVjdERpclBhdGggPSBwYXRoLnJlc29sdmUoY29yZVByb2plY3REaXJQYXRoKTtcbiAgICBmb3IgKGNvbnN0IGRpcmVudCBvZiBkaXJlbnRzKSB7XG4gICAgICBpZiAoIWRpcmVudC5pc0RpcmVjdG9yeSgpKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcHJvamVjdERpclBhdGggPSBwYXRoLnJlc29sdmUocGFyZW50RGlyUGF0aCwgZGlyZW50Lm5hbWUpO1xuICAgICAgaWYgKHByb2plY3REaXJQYXRoID09PSBjb3JlUHJvamVjdERpclBhdGgpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBjb25maWdGaWxlID0gdHMuZmluZENvbmZpZ0ZpbGUocHJvamVjdERpclBhdGgsIHRzLnN5cy5maWxlRXhpc3RzKTtcbiAgICAgIGNvbnN0IG91dERpciA9IHBhdGguam9pbignZGlzdCcsIGRpcmVudC5uYW1lLCAnc3JjJyk7XG4gICAgICBpZiAoY29uZmlnRmlsZSAmJiBmcy5leGlzdHNTeW5jKG91dERpcikpIHtcbiAgICAgICAgcHJvamVjdHMucHVzaChbcHJvamVjdERpclBhdGgsIGNvbmZpZ0ZpbGUsIG91dERpcl0pO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvdXREaXIgPSAnZGlzdCc7XG4gIH1cbiAgcHJvamVjdHMucHVzaChbY29yZVByb2plY3REaXJQYXRoLCBjb3JlQ29uZmlnRmlsZSwgb3V0RGlyXSk7XG5cbiAgbGV0IGFsbFN1Y2NlZWRlZCA9IHRydWU7XG4gIGZvciAoY29uc3QgW3Byb2plY3REaXJQYXRoLCBjb25maWdGaWxlLCBvdXREaXJdIG9mIHByb2plY3RzKSB7XG4gICAgYWxsU3VjY2VlZGVkICYmPSBydW5UeXBlU2NyaXB0Q29tcGlsZXIoYXJndiwgcHJvamVjdERpclBhdGgsIGNvbmZpZ0ZpbGUsIHBhdGguam9pbihjb3JlUHJvamVjdERpclBhdGgsIG91dERpcikpO1xuICB9XG4gIHJldHVybiBhbGxTdWNjZWVkZWQ7XG59XG5cbmZ1bmN0aW9uIHJ1blR5cGVTY3JpcHRDb21waWxlcihcbiAgYXJndjogQXJndW1lbnRzVHlwZTxBbnlCdWlsZGVyVHlwZT4sXG4gIHByb2plY3REaXJQYXRoOiBzdHJpbmcsXG4gIGNvbmZpZ0ZpbGU6IHN0cmluZyxcbiAgb3V0RGlyOiBzdHJpbmdcbik6IGJvb2xlYW4ge1xuICBpZiAoYXJndi52ZXJib3NlKSB7XG4gICAgY29uc29sZS5pbmZvKCdydW5UeXBlU2NyaXB0Q29tcGlsZXIoKScsIHByb2plY3REaXJQYXRoLCBjb25maWdGaWxlLCBvdXREaXIpO1xuICB9XG5cbiAgY29uc3QgeyBjb25maWcgfSA9IHRzLnJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGUsIHRzLnN5cy5yZWFkRmlsZSk7XG4gIGNvbmZpZy5jb21waWxlck9wdGlvbnMgPSB7XG4gICAgLi4uY29uZmlnLmNvbXBpbGVyT3B0aW9ucyxcbiAgICBkZWNsYXJhdGlvbjogdHJ1ZSxcbiAgICBlbWl0RGVjbGFyYXRpb25Pbmx5OiB0cnVlLFxuICAgIG5vRW1pdDogZmFsc2UsXG4gICAgbm9FbWl0T25FcnJvcjogdHJ1ZSxcbiAgICBvdXREaXIsXG4gIH07XG4gIGNvbmZpZy5pbmNsdWRlID0gWydzcmMvKiovKiddO1xuICBjb25zdCB7IGVycm9ycywgZmlsZU5hbWVzLCBvcHRpb25zIH0gPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChjb25maWcsIHRzLnN5cywgcHJvamVjdERpclBhdGgpO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKHsgb3B0aW9ucywgcm9vdE5hbWVzOiBmaWxlTmFtZXMsIGNvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3M6IGVycm9ycyB9KTtcbiAgY29uc3QgeyBkaWFnbm9zdGljcywgZW1pdFNraXBwZWQgfSA9IHByb2dyYW0uZW1pdCgpO1xuXG4gIGNvbnN0IGFsbERpYWdub3N0aWNzID0gWy4uLnRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKSwgLi4uZGlhZ25vc3RpY3MsIC4uLmVycm9yc107XG4gIGlmIChhbGxEaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZm9ybWF0SG9zdDogdHMuRm9ybWF0RGlhZ25vc3RpY3NIb3N0ID0ge1xuICAgICAgZ2V0Q2Fub25pY2FsRmlsZU5hbWU6IChwYXRoKSA9PiBwYXRoLFxuICAgICAgZ2V0Q3VycmVudERpcmVjdG9yeTogdHMuc3lzLmdldEN1cnJlbnREaXJlY3RvcnksXG4gICAgICBnZXROZXdMaW5lOiAoKSA9PiB0cy5zeXMubmV3TGluZSxcbiAgICB9O1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0cy5mb3JtYXREaWFnbm9zdGljcyhhbGxEaWFnbm9zdGljcywgZm9ybWF0SG9zdCk7XG4gICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiAhZW1pdFNraXBwZWQ7XG59XG4iLCJpbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IGRhdGVUaW1lIGZyb20gJ2RhdGUtdGltZSc7XG5pbXBvcnQgbXMgZnJvbSAncHJldHR5LW1zJztcbmltcG9ydCB0eXBlIHsgT3V0cHV0T3B0aW9ucywgUm9sbHVwQnVpbGQsIFJvbGx1cE9wdGlvbnMgfSBmcm9tICdyb2xsdXAnO1xuaW1wb3J0IHsgcm9sbHVwLCB3YXRjaCB9IGZyb20gJ3JvbGx1cCc7XG5pbXBvcnQgdHlwZSB7IEhhbmRsZXIgfSBmcm9tICdzaWduYWwtZXhpdCc7XG5pbXBvcnQgeyBvbkV4aXQgfSBmcm9tICdzaWduYWwtZXhpdCc7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcbmltcG9ydCB0eXBlIHsgQ29tbWFuZE1vZHVsZSB9IGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgbG9hZEVudmlyb25tZW50VmFyaWFibGVzV2l0aENhY2hlIH0gZnJvbSAnLi4vLi4vZW52LmpzJztcbmltcG9ydCB0eXBlIHsgQXJndW1lbnRzVHlwZSwgVGFyZ2V0Q2F0ZWdvcnksIFRhcmdldERldGFpbCB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IGFsbFRhcmdldENhdGVnb3JpZXMgfSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBnZXROYW1lc3BhY2VBbmROYW1lLCByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi8uLi91dGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHsgQW55QnVpbGRlclR5cGUsIGJ1aWxkZXIgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgYXBwQnVpbGRlciwgZnVuY3Rpb25zQnVpbGRlciwgbGliQnVpbGRlciB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5pbXBvcnQgeyBzZXR1cFBsdWdpbnMgfSBmcm9tICcuL3BsdWdpbi5qcyc7XG5pbXBvcnQgeyBoYW5kbGVFcnJvciB9IGZyb20gJy4vcm9sbHVwTG9nZ2VyLmpzJztcbmltcG9ydCB7IGdlbmVyYXRlRGVjbGFyYXRpb25GaWxlcyB9IGZyb20gJy4vdHlwZVNjcmlwdC5qcyc7XG5cbmV4cG9ydCBjb25zdCBhcHA6IENvbW1hbmRNb2R1bGU8dW5rbm93biwgQXJndW1lbnRzVHlwZTx0eXBlb2YgYXBwQnVpbGRlcj4+ID0ge1xuICBjb21tYW5kOiAnYXBwIFtwYWNrYWdlXScsXG4gIGRlc2NyaWJlOiAnQnVpbGQgYW4gYXBwJyxcbiAgYnVpbGRlcjogYXBwQnVpbGRlcixcbiAgYXN5bmMgaGFuZGxlcihhcmd2KSB7XG4gICAgcmV0dXJuIGJ1aWxkKGFyZ3YsICdhcHAnKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBmdW5jdGlvbnM6IENvbW1hbmRNb2R1bGU8dW5rbm93biwgQXJndW1lbnRzVHlwZTx0eXBlb2YgZnVuY3Rpb25zQnVpbGRlcj4+ID0ge1xuICBjb21tYW5kOiAnZnVuY3Rpb25zIFtwYWNrYWdlXScsXG4gIGRlc2NyaWJlOiAnQnVpbGQgYSBHQ1AvRmlyZWJhc2UgZnVuY3Rpb25zIGFwcCcsXG4gIGJ1aWxkZXI6IGZ1bmN0aW9uc0J1aWxkZXIsXG4gIGFzeW5jIGhhbmRsZXIoYXJndikge1xuICAgIGlmIChhcmd2Lm9ubHlQYWNrYWdlSnNvbikge1xuICAgICAgY29uc3QgcGFja2FnZURpclBhdGggPSBwYXRoLnJlc29sdmUoYXJndi5wYWNrYWdlPy50b1N0cmluZygpID8/ICcuJyk7XG4gICAgICBjb25zdCBbcGFja2FnZUpzb24sIHBhY2thZ2VKc29uUGF0aF0gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocGFja2FnZURpclBhdGgpO1xuICAgICAgaWYgKCFwYWNrYWdlSnNvbikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcGFja2FnZS5qc29uICgke3BhY2thZ2VKc29uUGF0aH0pLmApO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgICBhd2FpdCBnZW5lcmF0ZVBhY2thZ2VKc29uRm9yRnVuY3Rpb25zKHBhY2thZ2VEaXJQYXRoLCBwYWNrYWdlSnNvbiwgYXJndi5tb2R1bGVUeXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1aWxkKGFyZ3YsICdmdW5jdGlvbnMnKTtcbiAgICB9XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgbGliOiBDb21tYW5kTW9kdWxlPHVua25vd24sIEFyZ3VtZW50c1R5cGU8dHlwZW9mIGxpYkJ1aWxkZXI+PiA9IHtcbiAgY29tbWFuZDogJ2xpYiBbcGFja2FnZV0nLFxuICBkZXNjcmliZTogJ0J1aWxkIGEgTm9kZS5qcyAvIFJlYWN0IGxpYnJhcnknLFxuICBidWlsZGVyOiBsaWJCdWlsZGVyLFxuICBhc3luYyBoYW5kbGVyKGFyZ3YpIHtcbiAgICByZXR1cm4gYnVpbGQoYXJndiwgJ2xpYicpO1xuICB9LFxufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkKGFyZ3Y6IEFyZ3VtZW50c1R5cGU8QW55QnVpbGRlclR5cGU+LCB0YXJnZXRDYXRlZ29yeTogVGFyZ2V0Q2F0ZWdvcnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHw9ICdwcm9kdWN0aW9uJztcblxuICAvLyBgc2lsZW50YCBpcyBzdHJvbmdlciB0aGFuIGB2ZXJib3NlYC5cbiAgY29uc3QgdmVyYm9zZSA9ICFhcmd2LnNpbGVudCAmJiBhcmd2LnZlcmJvc2U7XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgY29uc3QgcGFja2FnZURpclBhdGggPSBwYXRoLnJlc29sdmUoYXJndi5wYWNrYWdlPy50b1N0cmluZygpID8/ICcuJyk7XG4gIGNvbnN0IFtwYWNrYWdlSnNvbiwgcGFja2FnZUpzb25QYXRoXSA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbihwYWNrYWdlRGlyUGF0aCk7XG4gIGlmICghcGFja2FnZUpzb24pIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcGFja2FnZS5qc29uICgke3BhY2thZ2VKc29uUGF0aH0pLmApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlc1dpdGhDYWNoZShhcmd2LCBwYWNrYWdlRGlyUGF0aCk7XG5cbiAgY29uc3QgaW5wdXRzID0gdmVyaWZ5SW5wdXQoYXJndiwgY3dkLCBwYWNrYWdlRGlyUGF0aCk7XG4gIGNvbnN0IHRhcmdldERldGFpbCA9IGRldGVjdFRhcmdldERldGFpbCh0YXJnZXRDYXRlZ29yeSwgaW5wdXRzKTtcblxuICBpZiAodmVyYm9zZSkge1xuICAgIGNvbnNvbGUuaW5mbygnVGFyZ2V0IChDYXRlZ29yeSk6JywgYCR7dGFyZ2V0RGV0YWlsfSAoJHt0YXJnZXRDYXRlZ29yeX0pYCk7XG4gIH1cblxuICBjb25zdCBbbmFtZXNwYWNlXSA9IGdldE5hbWVzcGFjZUFuZE5hbWUocGFja2FnZUpzb24pO1xuICBjb25zdCBpc0VzbVBhY2thZ2UgPSBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJztcblxuICBpZiAoYXJndlsnY29yZS1qcyddKSB7XG4gICAgcHJvY2Vzcy5lbnYuQlVJTERfVFNfQ09SRUpTID0gJzEnO1xuICB9IGVsc2UgaWYgKGFyZ3ZbJ2NvcmUtanMtcHJvcG9zYWxzJ10pIHtcbiAgICBwcm9jZXNzLmVudi5CVUlMRF9UU19DT1JFSlNfV0lUSF9QUk9QT1NBTFMgPSAnMSc7XG4gIH1cblxuICBpZiAodmVyYm9zZSkge1xuICAgIHByb2Nlc3MuZW52LkJVSUxEX1RTX1ZFUkJPU0UgPSAnMSc7XG4gIH1cbiAgcHJvY2Vzcy5lbnYuQlVJTERfVFNfVEFSR0VUX0NBVEVHT1JZID0gdGFyZ2V0Q2F0ZWdvcnk7XG4gIHByb2Nlc3MuZW52LkJVSUxEX1RTX1RBUkdFVF9ERVRBSUwgPSB0YXJnZXREZXRhaWw7XG5cbiAgY29uc3Qgb3V0cHV0T3B0aW9uc0xpc3QgPSBnZXRPdXRwdXRPcHRpb25zTGlzdChhcmd2LCB0YXJnZXREZXRhaWwsIHBhY2thZ2VEaXJQYXRoLCBpc0VzbVBhY2thZ2UpO1xuICBpZiAodmVyYm9zZSkge1xuICAgIGNvbnNvbGUuaW5mbygnT3V0cHV0T3B0aW9uczonLCBvdXRwdXRPcHRpb25zTGlzdCk7XG4gIH1cbiAgaWYgKG91dHB1dE9wdGlvbnNMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkZXRlY3Qgb3V0cHV0IGZpbGVzLicpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIHByb2Nlc3MuY2hkaXIocGFja2FnZURpclBhdGgpO1xuICBhd2FpdCBmcy5wcm9taXNlcy5ybShwYXRoLmpvaW4ocGFja2FnZURpclBhdGgsICdkaXN0JyksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgaWYgKHRhcmdldERldGFpbCA9PT0gJ2Z1bmN0aW9ucycpIHtcbiAgICBhd2FpdCBnZW5lcmF0ZVBhY2thZ2VKc29uRm9yRnVuY3Rpb25zKHBhY2thZ2VEaXJQYXRoLCBwYWNrYWdlSnNvbiwgYXJndi5tb2R1bGVUeXBlKTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFJvbGx1cE9wdGlvbnMgPSB7XG4gICAgaW5wdXQ6XG4gICAgICB0YXJnZXREZXRhaWwgPT09ICdmdW5jdGlvbnMnXG4gICAgICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgaW5wdXRzLm1hcCgoaW5wdXQsIGluZGV4KSA9PiBbaW5kZXggPT09IDAgPyAnaW5kZXgnIDogcGF0aC5iYXNlbmFtZShpbnB1dCwgcGF0aC5leHRuYW1lKGlucHV0KSksIGlucHV0XSlcbiAgICAgICAgICApXG4gICAgICAgIDogaW5wdXRzLFxuICAgIHBsdWdpbnM6IHNldHVwUGx1Z2lucyhhcmd2LCB0YXJnZXREZXRhaWwsIHBhY2thZ2VKc29uLCBuYW1lc3BhY2UsIHBhY2thZ2VEaXJQYXRoLCBvdXRwdXRPcHRpb25zTGlzdCksXG4gICAgd2F0Y2g6IGFyZ3Yud2F0Y2ggPyB7IGNsZWFyU2NyZWVuOiBmYWxzZSB9IDogdW5kZWZpbmVkLFxuICB9O1xuXG4gIGNvbnN0IHBhdGhUb1JlbGF0aXZlUGF0aCA9IChwYXRoczogc3RyaW5nIHwgUmVhZG9ubHk8c3RyaW5nW10+KTogc3RyaW5nW10gPT5cbiAgICAoQXJyYXkuaXNBcnJheShwYXRocykgPyBwYXRocyA6IFtwYXRoc10pLm1hcCgocCkgPT4gcGF0aC5yZWxhdGl2ZShwYWNrYWdlRGlyUGF0aCwgcCkpO1xuICBpZiAoYXJndi53YXRjaCkge1xuICAgIHdhdGNoUm9sbHVwKGFyZ3YsIHRhcmdldERldGFpbCwgcGFja2FnZURpclBhdGgsIG9wdGlvbnMsIG91dHB1dE9wdGlvbnNMaXN0LCBwYXRoVG9SZWxhdGl2ZVBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGlmICghYXJndi5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgY2hhbGsuY3lhbihcbiAgICAgICAgICBgQnVuZGxlcyAke2NoYWxrLmJvbGQocGF0aFRvUmVsYXRpdmVQYXRoKGlucHV0cykuam9pbignLCAnKSl9IOKGkiAke2NoYWxrLmJvbGQoXG4gICAgICAgICAgICBwYXRoVG9SZWxhdGl2ZVBhdGgob3V0cHV0T3B0aW9uc0xpc3QubWFwKChvcHRzKSA9PiBvcHRzLmZpbGUgfHwgb3B0cy5kaXIgfHwgJycpKS5qb2luKCcsICcpXG4gICAgICAgICAgKX1cXG5vbiAke3BhY2thZ2VEaXJQYXRofSAuLi5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGJ1bmRsZTogUm9sbHVwQnVpbGQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGJ1aWxkRmFpbGVkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCBfYnVuZGxlID0gYXdhaXQgcm9sbHVwKG9wdGlvbnMpO1xuICAgICAgYnVuZGxlID0gX2J1bmRsZTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKG91dHB1dE9wdGlvbnNMaXN0Lm1hcCgob3B0cykgPT4gX2J1bmRsZS53cml0ZShvcHRzKSkpO1xuXG4gICAgICBpZiAoIWFyZ3Yuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcbiAgICAgICAgICBjaGFsay5ncmVlbihcbiAgICAgICAgICAgIGBDcmVhdGVkICR7cGF0aFRvUmVsYXRpdmVQYXRoKG91dHB1dE9wdGlvbnNMaXN0Lm1hcCgob3B0cykgPT4gb3B0cy5maWxlIHx8IG9wdHMuZGlyIHx8ICcnKSkuam9pbihcbiAgICAgICAgICAgICAgJywgJ1xuICAgICAgICAgICAgKX0gaW4gJHtjaGFsay5ib2xkKG1zKERhdGUubm93KCkgLSBzdGFydFRpbWUpKX1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBidWlsZEZhaWxlZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gYnVpbGQgZHVlIHRvOicsIGVycm9yKTtcbiAgICB9XG4gICAgYXdhaXQgYnVuZGxlPy5jbG9zZSgpO1xuICAgIGlmIChidWlsZEZhaWxlZCkgcHJvY2Vzcy5leGl0KDEpO1xuXG4gICAgaWYgKFxuICAgICAgdGFyZ2V0RGV0YWlsICE9PSAnYXBwLW5vZGUnICYmXG4gICAgICB0YXJnZXREZXRhaWwgIT09ICdmdW5jdGlvbnMnICYmXG4gICAgICAhKGF3YWl0IGdlbmVyYXRlRGVjbGFyYXRpb25GaWxlcyhhcmd2LCBwYWNrYWdlRGlyUGF0aCkpXG4gICAgKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHdhdGNoUm9sbHVwKFxuICBhcmd2OiBBcmd1bWVudHNUeXBlPEFueUJ1aWxkZXJUeXBlPixcbiAgdGFyZ2V0RGV0YWlsOiBzdHJpbmcsXG4gIHBhY2thZ2VEaXJQYXRoOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJvbGx1cE9wdGlvbnMsXG4gIG91dHB1dE9wdGlvbnNMaXN0OiBPdXRwdXRPcHRpb25zW10sXG4gIHBhdGhUb1JlbGF0aXZlUGF0aDogKHBhdGhzOiBzdHJpbmcgfCBSZWFkb25seTxzdHJpbmdbXT4pID0+IHN0cmluZ1tdXG4pOiB2b2lkIHtcbiAgY29uc3Qgd2F0Y2hlciA9IHdhdGNoKHsgLi4ub3B0aW9ucywgb3V0cHV0OiBvdXRwdXRPcHRpb25zTGlzdCB9KTtcblxuICBjb25zdCBjbG9zZSA9IGFzeW5jIChjb2RlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcigndW5jYXVnaHRFeGNlcHRpb24nLCBjbG9zZSk7XG4gICAgcHJvY2Vzcy5zdGRpbi5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xvc2UpO1xuICAgIGlmICh3YXRjaGVyKSBhd2FpdCB3YXRjaGVyLmNsb3NlKCk7XG4gICAgaWYgKGNvZGUpIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgfTtcbiAgb25FeGl0KGNsb3NlIGFzIHVua25vd24gYXMgSGFuZGxlcik7XG4gIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgY2xvc2UpO1xuICBpZiAoIXByb2Nlc3Muc3RkaW4uaXNUVFkpIHtcbiAgICBwcm9jZXNzLnN0ZGluLm9uKCdlbmQnLCBjbG9zZSk7XG4gICAgcHJvY2Vzcy5zdGRpbi5yZXN1bWUoKTtcbiAgfVxuXG4gIHdhdGNoZXIub24oJ2V2ZW50JywgYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgc3dpdGNoIChldmVudC5jb2RlKSB7XG4gICAgICBjYXNlICdFUlJPUic6IHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXZlbnQuZXJyb3IsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0JVTkRMRV9TVEFSVCc6IHtcbiAgICAgICAgaWYgKGFyZ3Yuc2lsZW50KSBicmVhaztcblxuICAgICAgICBjb25zdCBldmVudElucHV0ID0gZXZlbnQuaW5wdXQ7XG4gICAgICAgIGNvbnN0IGlucHV0RmlsZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnRJbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpbnB1dEZpbGVzLnB1c2goZXZlbnRJbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5wdXRGaWxlcy5wdXNoKFxuICAgICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZXZlbnRJbnB1dCkgPyBldmVudElucHV0IDogT2JqZWN0LnZhbHVlcyhldmVudElucHV0IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5pbmZvKFxuICAgICAgICAgIGNoYWxrLmN5YW4oXG4gICAgICAgICAgICBgQnVuZGxlcyAke2NoYWxrLmJvbGQocGF0aFRvUmVsYXRpdmVQYXRoKGlucHV0RmlsZXMpLmpvaW4oJywgJykpfSDihpIgJHtjaGFsay5ib2xkKFxuICAgICAgICAgICAgICBwYXRoVG9SZWxhdGl2ZVBhdGgoZXZlbnQub3V0cHV0KS5qb2luKCcsICcpXG4gICAgICAgICAgICApfVxcbm9uICR7cGFja2FnZURpclBhdGh9IC4uLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQlVORExFX0VORCc6IHtcbiAgICAgICAgaWYgKGFyZ3Yuc2lsZW50KSBicmVhaztcblxuICAgICAgICBjb25zb2xlLmluZm8oXG4gICAgICAgICAgY2hhbGsuZ3JlZW4oXG4gICAgICAgICAgICBgQ3JlYXRlZCAke2NoYWxrLmJvbGQocGF0aFRvUmVsYXRpdmVQYXRoKGV2ZW50Lm91dHB1dCkuam9pbignLCAnKSl9IGluICR7Y2hhbGsuYm9sZChtcyhldmVudC5kdXJhdGlvbikpfWBcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRhcmdldERldGFpbCAhPT0gJ2FwcC1ub2RlJyAmJiB0YXJnZXREZXRhaWwgIT09ICdmdW5jdGlvbnMnKSB7XG4gICAgICAgICAgYXdhaXQgZ2VuZXJhdGVEZWNsYXJhdGlvbkZpbGVzKGFyZ3YsIHBhY2thZ2VEaXJQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VORCc6IHtcbiAgICAgICAgaWYgKGFyZ3Yuc2lsZW50KSBicmVhaztcblxuICAgICAgICBjb25zb2xlLmluZm8oYFxcblske2RhdGVUaW1lKCl9XSB3YWl0aW5nIGZvciBjaGFuZ2VzLi4uYCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICgncmVzdWx0JyBpbiBldmVudCAmJiBldmVudC5yZXN1bHQpIHtcbiAgICAgIHZvaWQgZXZlbnQucmVzdWx0LmNsb3NlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5SW5wdXQoYXJndjogQXJndW1lbnRzVHlwZTx0eXBlb2YgYnVpbGRlcj4sIGN3ZDogc3RyaW5nLCBwYWNrYWdlRGlyUGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAoYXJndi5pbnB1dCAmJiBhcmd2LmlucHV0Lmxlbmd0aCA+IDApIHJldHVybiBhcmd2LmlucHV0Lm1hcCgocCkgPT4gcGF0aC5qb2luKGN3ZCwgcC50b1N0cmluZygpKSk7XG5cbiAgY29uc3Qgc3JjRGlyUGF0aCA9IHBhdGguam9pbihwYWNrYWdlRGlyUGF0aCwgJ3NyYycpO1xuICBmb3IgKGNvbnN0IGV4dCBvZiBbJ3RzJywgJ3RzeCcsICdjdHMnLCAnbXRzJ10pIHtcbiAgICBjb25zdCBpbnB1dCA9IHBhdGguam9pbihzcmNEaXJQYXRoLCBgaW5kZXguJHtleHR9YCk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoaW5wdXQpKSByZXR1cm4gW2lucHV0XTtcbiAgfVxuXG4gIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkZXRlY3QgaW5wdXQgZmlsZS4nKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5mdW5jdGlvbiBkZXRlY3RUYXJnZXREZXRhaWwodGFyZ2V0Q2F0ZWdvcnk6IHN0cmluZywgaW5wdXRzOiBzdHJpbmdbXSk6IFRhcmdldERldGFpbCB7XG4gIHN3aXRjaCAodGFyZ2V0Q2F0ZWdvcnkpIHtcbiAgICBjYXNlICdhcHAnOiB7XG4gICAgICByZXR1cm4gJ2FwcC1ub2RlJztcbiAgICB9XG4gICAgY2FzZSAnZnVuY3Rpb25zJzoge1xuICAgICAgcmV0dXJuICdmdW5jdGlvbnMnO1xuICAgIH1cbiAgICBjYXNlICdsaWInOiB7XG4gICAgICBpZiAoaW5wdXRzLnNvbWUoKGlucHV0KSA9PiBpbnB1dC5lbmRzV2l0aCgnLnRzeCcpKSkge1xuICAgICAgICByZXR1cm4gJ2xpYi1yZWFjdCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJ2xpYic7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3RhcmdldCBvcHRpb24gbXVzdCBiZSBvbmUgb2Y6ICcgKyBhbGxUYXJnZXRDYXRlZ29yaWVzLmpvaW4oJywgJykpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVBhY2thZ2VKc29uRm9yRnVuY3Rpb25zKFxuICBwYWNrYWdlRGlyUGF0aDogc3RyaW5nLFxuICBwYWNrYWdlSnNvbjogUGFja2FnZUpzb24sXG4gIG1vZHVsZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHBhY2thZ2VKc29uLm5hbWUgKz0gJy1kaXN0JztcbiAgY29uc3QgZXNtUGFja2FnZSA9IHBhY2thZ2VKc29uLnR5cGUgPT09ICdtb2R1bGUnO1xuICBjb25zdCBlc21PdXRwdXQgPSBpc0VzbU91dHB1dChlc21QYWNrYWdlLCBtb2R1bGVUeXBlKTtcbiAgcGFja2FnZUpzb24ubWFpbiA9IGVzbVBhY2thZ2UgPT09IGVzbU91dHB1dCA/ICdpbmRleC5qcycgOiBlc21PdXRwdXQgPyAnaW5kZXgubWpzJyA6ICdpbmRleC5janMnO1xuXG4gIC8vIFByZXZlbnQgRmlyZWJhc2UgRnVuY3Rpb25zIGZyb20gcnVubmluZyBgYnVpbGRgIHNjcmlwdCBzaW5jZSB3ZSBhcmUgYnVpbGRpbmcgY29kZSBiZWZvcmUgZGVwbG95aW5nLlxuICBkZWxldGUgcGFja2FnZUpzb24uc2NyaXB0cztcbiAgLy8gZGV2RGVwZW5kZW5jaWVzIGFyZSBub3QgcmVxdWlyZWQgc2luY2Ugd2UgYXJlIGJ1aWxkaW5nIGNvZGUgYmVmb3JlIGRlcGxveWluZy5cbiAgZGVsZXRlIHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llcztcblxuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXRoLmpvaW4ocGFja2FnZURpclBhdGgsICdkaXN0JyksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUocGF0aC5qb2luKHBhY2thZ2VEaXJQYXRoLCAnZGlzdCcsICdwYWNrYWdlLmpzb24nKSwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24pKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3V0cHV0T3B0aW9uc0xpc3QoXG4gIGFyZ3Y6IEFyZ3VtZW50c1R5cGU8QW55QnVpbGRlclR5cGU+LFxuICB0YXJnZXREZXRhaWw6IFRhcmdldERldGFpbCxcbiAgcGFja2FnZURpclBhdGg6IHN0cmluZyxcbiAgaXNFc21QYWNrYWdlOiBib29sZWFuXG4pOiBPdXRwdXRPcHRpb25zW10ge1xuICBjb25zdCBvdXREaXJQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VEaXJQYXRoLCAnZGlzdCcpO1xuICBpZiAodGFyZ2V0RGV0YWlsID09PSAnYXBwLW5vZGUnIHx8IHRhcmdldERldGFpbCA9PT0gJ2Z1bmN0aW9ucycpIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkaXI6IG91dERpclBhdGgsXG4gICAgICAgIGZvcm1hdDogaXNFc21PdXRwdXQoaXNFc21QYWNrYWdlLCBhcmd2Lm1vZHVsZVR5cGUpID8gJ21vZHVsZScgOiAnY29tbW9uanMnLFxuICAgICAgICBzb3VyY2VtYXA6IGFyZ3Yuc291cmNlbWFwICYmICdpbmxpbmUnLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLy8gVGhlIGZvbGxvd2luZyBpbXBvcnQgc3RhdGVtZW50IGluIGFuIGVzbSBtb2R1bGUgY2F1c2VzIHRoZSBmb2xsb3dpbmcgZXJyb3I6XG4gIC8vIFN0YXRlbWVudDpcbiAgLy8gICBpbXBvcnQgeyB1c2VQcmV2aW91cyB9IGZyb20gJ3JlYWN0LXVzZSc7XG4gIC8vIEVycm9yOlxuICAvLyAgIE5hbWVkIGV4cG9ydCAndXNlUHJldmlvdXMnIG5vdCBmb3VuZC4gVGhlIHJlcXVlc3RlZCBtb2R1bGUgJ3JlYWN0LXVzZScgaXMgYSBDb21tb25KUyBtb2R1bGUsXG4gIC8vICAgd2hpY2ggbWF5IG5vdCBzdXBwb3J0IGFsbCBtb2R1bGUuZXhwb3J0cyBhcyBuYW1lZCBleHBvcnRzLlxuICAvLyBXZSBuZWVkIGNqcyBtb2R1bGVzIGZvciB3ZWIgYXBwcyB0byBhdm9pZCB0aGUgZXJyb3IuXG4gIC8vIEFsc28sIHNwbGl0dGluZyBhIGxpYnJhcnkgaXMgdXNlZnVsIGluIGJvdGggbW9kdWxlcywgc28gcHJlc2VydmVNb2R1bGVzIHNob3VsZCBiZSB0cnVlLlxuICBjb25zdCBvdXRwdXRPcHRpb25zTGlzdDogT3V0cHV0T3B0aW9uc1tdID0gW107XG4gIGNvbnN0IG1vZHVsZVR5cGUgPSBhcmd2Lm1vZHVsZVR5cGUgfHwgJ2JvdGgnO1xuICBjb25zdCBqc0V4dCA9IGFyZ3YuanNFeHRlbnNpb24gfHwgJ2VpdGhlcic7XG4gIGlmIChtb2R1bGVUeXBlID09PSAnY2pzJyB8fCBtb2R1bGVUeXBlID09PSAnYm90aCcgfHwgKG1vZHVsZVR5cGUgPT09ICdlaXRoZXInICYmICFpc0VzbVBhY2thZ2UpKSB7XG4gICAgb3V0cHV0T3B0aW9uc0xpc3QucHVzaCh7XG4gICAgICBkaXI6IG91dERpclBhdGgsXG4gICAgICBlbnRyeUZpbGVOYW1lczoganNFeHQgPT09ICdib3RoJyB8fCAoanNFeHQgPT09ICdlaXRoZXInICYmICFpc0VzbVBhY2thZ2UpID8gJ1tuYW1lXS5qcycgOiAnW25hbWVdLmNqcycsXG4gICAgICBmb3JtYXQ6ICdjb21tb25qcycsXG4gICAgICBwcmVzZXJ2ZU1vZHVsZXM6IHRydWUsXG4gICAgICBzb3VyY2VtYXA6IGFyZ3Yuc291cmNlbWFwLFxuICAgIH0pO1xuICB9XG4gIGlmIChtb2R1bGVUeXBlID09PSAnZXNtJyB8fCBtb2R1bGVUeXBlID09PSAnYm90aCcgfHwgKG1vZHVsZVR5cGUgPT09ICdlaXRoZXInICYmIGlzRXNtUGFja2FnZSkpIHtcbiAgICBvdXRwdXRPcHRpb25zTGlzdC5wdXNoKHtcbiAgICAgIGRpcjogb3V0RGlyUGF0aCxcbiAgICAgIGVudHJ5RmlsZU5hbWVzOiBqc0V4dCA9PT0gJ2JvdGgnIHx8IChqc0V4dCA9PT0gJ2VpdGhlcicgJiYgaXNFc21QYWNrYWdlKSA/ICdbbmFtZV0uanMnIDogJ1tuYW1lXS5tanMnLFxuICAgICAgZm9ybWF0OiAnbW9kdWxlJyxcbiAgICAgIHByZXNlcnZlTW9kdWxlczogdHJ1ZSxcbiAgICAgIHNvdXJjZW1hcDogYXJndi5zb3VyY2VtYXAsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHB1dE9wdGlvbnNMaXN0O1xufVxuXG5mdW5jdGlvbiBpc0VzbU91dHB1dChpc0VzbVBhY2thZ2U6IGJvb2xlYW4sIG1vZHVsZVR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gbW9kdWxlVHlwZSA9PT0gJ2VzbScgfHwgKCghbW9kdWxlVHlwZSB8fCBtb2R1bGVUeXBlID09PSAnZWl0aGVyJykgJiYgaXNFc21QYWNrYWdlKTtcbn1cbiIsImltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgdHlwZSB7IFJvbGx1cEVycm9yIH0gZnJvbSAncm9sbHVwJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycm9yOiBSb2xsdXBFcnJvciwgcmVjb3ZlciA9IGZhbHNlKTogdm9pZCB7XG4gIGNvbnN0IG5hbWUgPSBlcnJvci5uYW1lIHx8IChlcnJvci5jYXVzZSBhcyBFcnJvcik/Lm5hbWU7XG4gIGNvbnN0IG5hbWVTZWN0aW9uID0gbmFtZSA/IGAke25hbWV9OiBgIDogJyc7XG4gIGNvbnN0IHBsdWdpblNlY3Rpb24gPSBlcnJvci5wbHVnaW4gPyBgKHBsdWdpbiAke2Vycm9yLnBsdWdpbn0pIGAgOiAnJztcbiAgY29uc3QgbWVzc2FnZSA9IGAke3BsdWdpblNlY3Rpb259JHtuYW1lU2VjdGlvbn0ke2Vycm9yLm1lc3NhZ2V9YDtcblxuICBjb25zdCBvdXRwdXRMaW5lcyA9IFtjaGFsay5ib2xkKGNoYWxrLnJlZChgWyFdICR7Y2hhbGsuYm9sZChtZXNzYWdlLnRvU3RyaW5nKCkpfWApKV07XG5cbiAgaWYgKGVycm9yLnVybCkge1xuICAgIG91dHB1dExpbmVzLnB1c2goY2hhbGsuY3lhbihlcnJvci51cmwpKTtcbiAgfVxuXG4gIGlmIChlcnJvci5sb2MpIHtcbiAgICBvdXRwdXRMaW5lcy5wdXNoKGAke2Vycm9yLmxvYy5maWxlIHx8IGVycm9yLmlkfSAoJHtlcnJvci5sb2MubGluZX06JHtlcnJvci5sb2MuY29sdW1ufSlgKTtcbiAgfSBlbHNlIGlmIChlcnJvci5pZCkge1xuICAgIG91dHB1dExpbmVzLnB1c2goZXJyb3IuaWQpO1xuICB9XG5cbiAgaWYgKGVycm9yLmZyYW1lKSB7XG4gICAgb3V0cHV0TGluZXMucHVzaChjaGFsay5kaW0oZXJyb3IuZnJhbWUpKTtcbiAgfVxuXG4gIGlmIChlcnJvci5zdGFjaykge1xuICAgIG91dHB1dExpbmVzLnB1c2goY2hhbGsuZGltKGVycm9yLnN0YWNrPy5yZXBsYWNlKGAke25hbWVTZWN0aW9ufSR7ZXJyb3IubWVzc2FnZX1cXG5gLCAnJykpKTtcbiAgfVxuXG4gIG91dHB1dExpbmVzLnB1c2goJycsICcnKTtcbiAgY29uc29sZS5lcnJvcihvdXRwdXRMaW5lcy5qb2luKCdcXG4nKSk7XG5cbiAgaWYgKCFyZWNvdmVyKSBwcm9jZXNzLmV4aXQoMSk7XG59XG4iLCJpbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZE1vZHVsZSwgSW5mZXJyZWRPcHRpb25UeXBlcyB9IGZyb20gJ3lhcmdzJztcblxuaW1wb3J0IHsgbG9hZEVudmlyb25tZW50VmFyaWFibGVzV2l0aENhY2hlIH0gZnJvbSAnLi4vZW52LmpzJztcbmltcG9ydCB7IHNoYXJlZE9wdGlvbnNCdWlsZGVyIH0gZnJvbSAnLi4vc2hhcmVkT3B0aW9uc0J1aWxkZXIuanMnO1xuXG5jb25zdCBidWlsZGVyID0ge1xuICAuLi5zaGFyZWRPcHRpb25zQnVpbGRlcixcbiAgbW9kdWxlOiB7XG4gICAgZGVzY3JpcHRpb246ICdBIG1vZHVsZSB0eXBlOiBjanMgb3IgZXNtJyxcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICBhbGlhczogJ20nLFxuICB9LFxuICB3YXRjaDoge1xuICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB3YXRjaCBtb2RlIGlzIGVuYWJsZWQgb3Igbm90JyxcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgYWxpYXM6ICd3JyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBydW46IENvbW1hbmRNb2R1bGU8dW5rbm93biwgSW5mZXJyZWRPcHRpb25UeXBlczx0eXBlb2YgYnVpbGRlcj4+ID0ge1xuICBjb21tYW5kOiAncnVuIDxmaWxlPicsXG4gIGRlc2NyaWJlOiAnUnVuIHNjcmlwdCcsXG4gIGJ1aWxkZXIsXG4gIGFzeW5jIGhhbmRsZXIoYXJndikge1xuICAgIGxvYWRFbnZpcm9ubWVudFZhcmlhYmxlc1dpdGhDYWNoZShhcmd2LCBwcm9jZXNzLmN3ZCgpKTtcblxuICAgIGNvbnN0IGZpbGUgPSBhcmd2LmZpbGU/LnRvU3RyaW5nKCkgfHwgJyc7XG5cbiAgICBjb25zdCBpc1J1bm5pbmdPbkJ1biA9IHByb2Nlc3MuYXJndlswXS5lbmRzV2l0aCgnL2J1bicpO1xuICAgIGNvbnN0IHJ1bnRpbWUgPSBpc1J1bm5pbmdPbkJ1biA/ICdidW4nIDogJ25vZGUnO1xuICAgIGNvbnN0IGFyZ3MgPSBpc1J1bm5pbmdPbkJ1biA/IFsnLS1idW4nXSA6IFsnLS1uby13YXJuaW5ncycsICctLWltcG9ydCcsICd0c3gnXTtcbiAgICBpZiAoYXJndi53YXRjaCkge1xuICAgICAgYXJncy5wdXNoKCctLXdhdGNoJyk7XG4gICAgfVxuICAgIGFyZ3MucHVzaChmaWxlKTtcbiAgICBjb25zdCBbLCAuLi5hZGRpdGlvbmFsQXJndW1lbnRzXSA9IGFyZ3YuXztcbiAgICBjb25zdCBydW50aW1lQXJncyA9IFsuLi5hcmdzLCAuLi5hZGRpdGlvbmFsQXJndW1lbnRzLm1hcCgoYXJnKSA9PiBhcmcudG9TdHJpbmcoKSldO1xuICAgIGlmIChhcmd2LnZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgUnVubmluZyAnJHtydW50aW1lfSAke3J1bnRpbWVBcmdzLmpvaW4oJyAnKX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IHJldCA9IGNoaWxkX3Byb2Nlc3Muc3Bhd25TeW5jKHJ1bnRpbWUsIHJ1bnRpbWVBcmdzLCB7XG4gICAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52IH0sXG4gICAgfSk7XG4gICAgcHJvY2Vzcy5leGl0KHJldC5zdGF0dXMgPz8gMSk7XG4gIH0sXG59O1xuIiwiaW1wb3J0IHsgcmVtb3ZlTnBtQW5kWWFybkVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnQHdpbGxib29zdGVyL3NoYXJlZC1saWItbm9kZSc7XG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gJ3lhcmdzL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBhcHAsIGZ1bmN0aW9ucywgbGliIH0gZnJvbSAnLi9jb21tYW5kcy9idWlsZC9idWlsZC5qcyc7XG5pbXBvcnQgeyBydW4gfSBmcm9tICcuL2NvbW1hbmRzL3J1bi5qcyc7XG5pbXBvcnQgeyBzaGFyZWRPcHRpb25zQnVpbGRlciB9IGZyb20gJy4vc2hhcmVkT3B0aW9uc0J1aWxkZXIuanMnO1xuXG5yZW1vdmVOcG1BbmRZYXJuRW52aXJvbm1lbnRWYXJpYWJsZXMocHJvY2Vzcy5lbnYpO1xuXG5hd2FpdCB5YXJncyhoaWRlQmluKHByb2Nlc3MuYXJndikpXG4gIC5zY3JpcHROYW1lKCdidWlsZC10cycpXG4gIC5vcHRpb25zKHNoYXJlZE9wdGlvbnNCdWlsZGVyKVxuICAuY29tbWFuZChhcHApXG4gIC5jb21tYW5kKGZ1bmN0aW9ucylcbiAgLmNvbW1hbmQobGliKVxuICAuY29tbWFuZChydW4pXG4gIC5kZW1hbmRDb21tYW5kKClcbiAgLnN0cmljdCgpXG4gIC5oZWxwKCkuYXJndjtcbiJdLCJuYW1lcyI6WyJlbnZWYXJzIiwibG9hZEVudmlyb25tZW50VmFyaWFibGVzV2l0aENhY2hlIiwiYXJndiIsImN3ZCIsInJlYWRBbmRBcHBseUVudmlyb25tZW50VmFyaWFibGVzIiwidmVyYm9zZSIsImNvbnNvbGUiLCJpbmZvIiwiT2JqZWN0Iiwia2V5cyIsImNyZWF0ZUVudmlyb25tZW50VmFyaWFibGVzRGVmaW5pdGlvbiIsImVudlZhcnNEZWYiLCJuYW1lcyIsIlNldCIsImlubGluZSIsImZsYXRNYXAiLCJlIiwidG9TdHJpbmciLCJzcGxpdCIsIm5hbWUiLCJ1bmRlZmluZWQiLCJwcm9jZXNzIiwiZW52IiwiSlNPTiIsInN0cmluZ2lmeSIsImFsbFRhcmdldENhdGVnb3JpZXMiLCJhc3luYyIsInJlYWRQYWNrYWdlSnNvbiIsImRpclBhdGgiLCJwYWNrYWdlSnNvblBhdGgiLCJwYXRoIiwiam9pbiIsInBhY2thZ2VKc29uVGV4dCIsImZzIiwicHJvbWlzZXMiLCJyZWFkRmlsZSIsInBhcnNlIiwic2hhcmVkT3B0aW9uc0J1aWxkZXIiLCJ5YXJnc09wdGlvbnNCdWlsZGVyRm9yRW52Iiwic2lsZW50IiwiZGVzY3JpcHRpb24iLCJ0eXBlIiwiYWxpYXMiLCJidWlsZGVyIiwiaW5wdXQiLCJkZWZhdWx0IiwibWluaWZ5Iiwic291cmNlbWFwIiwiZXh0ZXJuYWwiLCJ3YXRjaCIsImtlZXBJbXBvcnQiLCJhcHBCdWlsZGVyIiwibW9kdWxlVHlwZSIsImZ1bmN0aW9uc0J1aWxkZXIiLCJvbmx5UGFja2FnZUpzb24iLCJsaWJCdWlsZGVyIiwianNFeHRlbnNpb24iLCJzZXR1cFBsdWdpbnMiLCJ0YXJnZXREZXRhaWwiLCJwYWNrYWdlSnNvbiIsIm5hbWVzcGFjZSIsInBhY2thZ2VEaXJQYXRoIiwib3V0cHV0T3B0aW9uc0xpc3QiLCJleHRlcm5hbERlcHMiLCJtYXAiLCJpdGVtIiwiZGVwZW5kZW5jaWVzIiwicHVzaCIsInBlZXJEZXBlbmRlbmNpZXMiLCJvcHRpb25hbERlcGVuZGVuY2llcyIsImV4aXN0c1N5bmMiLCJwYWNrYWdlRGlycyIsInJlYWRkaXJTeW5jIiwid2l0aEZpbGVUeXBlcyIsInBhY2thZ2VEaXIiLCJpc0RpcmVjdG9yeSIsIm90aGVyUGFja2FnZUpzb24iLCJyZWFkRmlsZVN5bmMiLCJleHRlbnNpb25zIiwiYmFiZWxDb25maWdQYXRoIiwidXJsIiwiZmlsZVVSTFRvUGF0aCIsImRpcm5hbWUiLCJwbHVnaW5zIiwicmVwbGFjZSIsImRlbGltaXRlcnMiLCJwcmV2ZW50QXNzaWdubWVudCIsInZhbHVlcyIsImpzb24iLCJub2RlRXh0ZXJuYWxzIiwiZGVwcyIsImRldkRlcHMiLCJwZWVyRGVwcyIsIm9wdERlcHMiLCJpbmNsdWRlIiwiUmVnRXhwIiwiZXhjbHVkZSIsInJlc29sdmUiLCJjb21tb25qcyIsIm1vZHVsZU5hbWVzIiwiaXNCYWJlbEhlbHBlcnNCdW5kbGVkIiwiaW5jbHVkZXMiLCJCVUlMRFRTX1VTRV9CQUJMRV9SVU5USU1FIiwiYmFiZWwiLCJjb25maWdGaWxlIiwiYmFiZWxIZWxwZXJzIiwic29tZSIsIm9wdHMiLCJwcmVzZXJ2ZU1vZHVsZXMiLCJwcmVzZXJ2ZURpcmVjdGl2ZXMiLCJzdHJpbmciLCJ0ZXJzZXIiLCJjb21wcmVzcyIsImRpcmVjdGl2ZXMiLCJhbmFseXplIiwic3VtbWFyeU9ubHkiLCJnZW5lcmF0ZURlY2xhcmF0aW9uRmlsZXMiLCJjb3JlUHJvamVjdERpclBhdGgiLCJjb3JlQ29uZmlnRmlsZSIsInRzIiwiZmluZENvbmZpZ0ZpbGUiLCJzeXMiLCJmaWxlRXhpc3RzIiwiRXJyb3IiLCJwcm9qZWN0cyIsIm91dERpciIsImJhc2VuYW1lIiwicGFyZW50RGlyUGF0aCIsImRpcmVudHMiLCJyZWFkZGlyIiwiZGlyZW50IiwicHJvamVjdERpclBhdGgiLCJhbGxTdWNjZWVkZWQiLCJydW5UeXBlU2NyaXB0Q29tcGlsZXIiLCJjb25maWciLCJyZWFkQ29uZmlnRmlsZSIsImNvbXBpbGVyT3B0aW9ucyIsImRlY2xhcmF0aW9uIiwiZW1pdERlY2xhcmF0aW9uT25seSIsIm5vRW1pdCIsIm5vRW1pdE9uRXJyb3IiLCJlcnJvcnMiLCJmaWxlTmFtZXMiLCJvcHRpb25zIiwicGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQiLCJwcm9ncmFtIiwiY3JlYXRlUHJvZ3JhbSIsInJvb3ROYW1lcyIsImNvbmZpZ0ZpbGVQYXJzaW5nRGlhZ25vc3RpY3MiLCJkaWFnbm9zdGljcyIsImVtaXRTa2lwcGVkIiwiZW1pdCIsImFsbERpYWdub3N0aWNzIiwiZ2V0UHJlRW1pdERpYWdub3N0aWNzIiwibGVuZ3RoIiwiZm9ybWF0SG9zdCIsImdldENhbm9uaWNhbEZpbGVOYW1lIiwiZ2V0Q3VycmVudERpcmVjdG9yeSIsImdldE5ld0xpbmUiLCJuZXdMaW5lIiwibWVzc2FnZSIsImZvcm1hdERpYWdub3N0aWNzIiwid2FybiIsImFwcCIsImNvbW1hbmQiLCJkZXNjcmliZSIsImhhbmRsZXIiLCJidWlsZCIsImZ1bmN0aW9ucyIsInBhY2thZ2UiLCJlcnJvciIsImV4aXQiLCJnZW5lcmF0ZVBhY2thZ2VKc29uRm9yRnVuY3Rpb25zIiwibGliIiwidGFyZ2V0Q2F0ZWdvcnkiLCJOT0RFX0VOViIsImlucHV0cyIsInAiLCJzcmNEaXJQYXRoIiwiZXh0IiwidmVyaWZ5SW5wdXQiLCJlbmRzV2l0aCIsImRldGVjdFRhcmdldERldGFpbCIsInBhY2thZ2VOYW1lIiwibWF0Y2giLCJleGVjIiwiZ2V0TmFtZXNwYWNlQW5kTmFtZSIsImlzRXNtUGFja2FnZSIsIkJVSUxEX1RTX0NPUkVKUyIsIkJVSUxEX1RTX0NPUkVKU19XSVRIX1BST1BPU0FMUyIsIkJVSUxEX1RTX1ZFUkJPU0UiLCJCVUlMRF9UU19UQVJHRVRfQ0FURUdPUlkiLCJCVUlMRF9UU19UQVJHRVRfREVUQUlMIiwib3V0RGlyUGF0aCIsImRpciIsImZvcm1hdCIsImlzRXNtT3V0cHV0IiwianNFeHQiLCJlbnRyeUZpbGVOYW1lcyIsImdldE91dHB1dE9wdGlvbnNMaXN0IiwiY2hkaXIiLCJybSIsInJlY3Vyc2l2ZSIsImZvcmNlIiwiZnJvbUVudHJpZXMiLCJpbmRleCIsImV4dG5hbWUiLCJjbGVhclNjcmVlbiIsInBhdGhUb1JlbGF0aXZlUGF0aCIsInBhdGhzIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpdmUiLCJ3YXRjaGVyIiwib3V0cHV0IiwiY2xvc2UiLCJyZW1vdmVMaXN0ZW5lciIsInN0ZGluIiwiY29kZSIsIm9uRXhpdCIsIm9uIiwiaXNUVFkiLCJyZXN1bWUiLCJldmVudCIsInJlY292ZXIiLCJjYXVzZSIsIm5hbWVTZWN0aW9uIiwicGx1Z2luIiwib3V0cHV0TGluZXMiLCJjaGFsayIsImJvbGQiLCJyZWQiLCJjeWFuIiwibG9jIiwiZmlsZSIsImlkIiwibGluZSIsImNvbHVtbiIsImZyYW1lIiwiZGltIiwic3RhY2siLCJoYW5kbGVFcnJvciIsImV2ZW50SW5wdXQiLCJpbnB1dEZpbGVzIiwiZ3JlZW4iLCJtcyIsImR1cmF0aW9uIiwiZGF0ZVRpbWUiLCJyZXN1bHQiLCJ3YXRjaFJvbGx1cCIsImJ1bmRsZSIsImJ1aWxkRmFpbGVkIiwic3RhcnRUaW1lIiwiRGF0ZSIsIm5vdyIsIl9idW5kbGUiLCJyb2xsdXAiLCJQcm9taXNlIiwiYWxsIiwid3JpdGUiLCJlc21QYWNrYWdlIiwiZXNtT3V0cHV0IiwibWFpbiIsInNjcmlwdHMiLCJkZXZEZXBlbmRlbmNpZXMiLCJta2RpciIsIndyaXRlRmlsZSIsInJ1biIsIm1vZHVsZSIsImlzUnVubmluZ09uQnVuIiwicnVudGltZSIsImFyZ3MiLCJhZGRpdGlvbmFsQXJndW1lbnRzIiwiXyIsInJ1bnRpbWVBcmdzIiwiYXJnIiwicmV0IiwiY2hpbGRfcHJvY2VzcyIsInNwYXduU3luYyIsInN0ZGlvIiwic3RhdHVzIiwicmVtb3ZlTnBtQW5kWWFybkVudmlyb25tZW50VmFyaWFibGVzIiwieWFyZ3MiLCJoaWRlQmluIiwic2NyaXB0TmFtZSIsImRlbWFuZENvbW1hbmQiLCJzdHJpY3QiLCJoZWxwIl0sIm1hcHBpbmdzIjoicy9CQU1BLElBQUlBLEVBS0csU0FBU0MsRUFDZEMsRUFDQUMsR0FRQSxPQU5LSCxJQUNIQSxFQUFVSSxFQUFpQ0YsRUFBTUMsR0FDN0NELEVBQUtHLFNBQ1BDLFFBQVFDLEtBQUssbUJBQW9CQyxPQUFPQyxLQUFLVCxLQUcxQ0EsQ0FDVCxDQUtPLFNBQVNVLEVBQ2RSLEVBQ0FDLEdBRUEsTUFBTVEsRUFBcUMsQ0FBQSxFQUNyQ0MsRUFBUSxJQUFJQyxJQUFJLEtBQ2hCWCxFQUFLWSxRQUFVLElBQUlDLFNBQVNDLEdBQU1BLEVBQUVDLFdBQVdDLE1BQU0sVUFDdERWLE9BQU9DLEtBQUtSLEVBQWtDQyxFQUFNQyxNQUV6RCxJQUFLLE1BQU1nQixLQUFRUCxPQUNTUSxJQUF0QkMsUUFBUUMsSUFBSUgsS0FFaEJSLEVBQVksZUFBY1EsS0FBVUksS0FBS0MsVUFBVUgsUUFBUUMsSUFBSUgsS0FLakUsT0FISWpCLEVBQUtHLFNBQ1BDLFFBQVFDLEtBQUssbUJBQW9CQyxPQUFPQyxLQUFLRSxJQUV4Q0EsQ0FDVCxDQzNDTyxNQUFNYyxFQUFzQixDQUFDLE1BQU8sWUFBYSxPQ0lqREMsZUFBZUMsRUFBZ0JDLEdBQ3BDLE1BQU1DLEVBQWtC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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "build-ts",
|
|
3
|
-
"version": "13.1.
|
|
3
|
+
"version": "13.1.7",
|
|
4
4
|
"repository": "github:WillBooster/build-ts",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "WillBooster Inc.",
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"@rollup/plugin-replace": "5.0.4",
|
|
45
45
|
"@rollup/plugin-terser": "0.4.4",
|
|
46
46
|
"@rollup/pluginutils": "5.1.0",
|
|
47
|
-
"@willbooster/shared-lib-node": "5.0
|
|
47
|
+
"@willbooster/shared-lib-node": "5.1.0",
|
|
48
48
|
"babel-plugin-polyfill-corejs3": "0.10.4",
|
|
49
49
|
"babel-plugin-transform-remove-console": "6.9.4",
|
|
50
50
|
"chalk": "5.3.0",
|
|
51
|
-
"core-js": "3.37.
|
|
52
|
-
"core-js-pure": "3.37.
|
|
51
|
+
"core-js": "3.37.1",
|
|
52
|
+
"core-js-pure": "3.37.1",
|
|
53
53
|
"date-time": "4.0.0",
|
|
54
54
|
"pretty-ms": "9.0.0",
|
|
55
55
|
"rollup": "4.17.2",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"rollup-plugin-string": "3.0.0",
|
|
61
61
|
"rollup-plugin-ts": "3.4.5",
|
|
62
62
|
"signal-exit": "4.1.0",
|
|
63
|
-
"tsx": "4.10.
|
|
63
|
+
"tsx": "4.10.4",
|
|
64
64
|
"typescript": "5.4.5",
|
|
65
65
|
"yargs": "17.7.2"
|
|
66
66
|
},
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"@types/babel__plugin-transform-runtime": "7.9.5",
|
|
70
70
|
"@types/babel__preset-env": "7.9.6",
|
|
71
71
|
"@types/eslint": "8.56.10",
|
|
72
|
-
"@types/node": "20.12.
|
|
72
|
+
"@types/node": "20.12.12",
|
|
73
73
|
"@types/signal-exit": "3.0.4",
|
|
74
74
|
"@types/yargs": "17.0.32",
|
|
75
75
|
"@typescript-eslint/eslint-plugin": "7.9.0",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"@willbooster/babel-configs": "1.3.1",
|
|
78
78
|
"@willbooster/eslint-config-ts": "10.6.0",
|
|
79
79
|
"@willbooster/prettier-config": "9.1.2",
|
|
80
|
-
"@willbooster/wb": "7.
|
|
80
|
+
"@willbooster/wb": "7.6.0",
|
|
81
81
|
"conventional-changelog-conventionalcommits": "8.0.0",
|
|
82
82
|
"eslint": "8.57.0",
|
|
83
83
|
"eslint-config-prettier": "9.1.0",
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/env.ts","../src/types.ts","../src/utils.ts","../src/sharedOptionsBuilder.ts","../src/commands/build/builder.ts","../src/commands/build/plugin.ts","../src/commands/build/typeScript.ts","../src/commands/build/build.ts","../src/commands/build/rollupLogger.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["import { readAndApplyEnvironmentVariables } from '@willbooster/shared-lib-node';\n\nimport type { builder } from './commands/build/builder.js';\nimport type { sharedOptionsBuilder } from './sharedOptionsBuilder.js';\nimport type { ArgumentsType } from './types.js';\n\nlet envVars: Record<string, string | undefined> | undefined;\n\n/**\n * This function loads environment variables from `.env` files.\n * */\nexport function loadEnvironmentVariablesWithCache(\n argv: ArgumentsType<typeof sharedOptionsBuilder>,\n cwd: string\n): Record<string, string | undefined> {\n if (!envVars) {\n envVars = readAndApplyEnvironmentVariables(argv, cwd);\n if (argv.verbose) {\n console.info('Loaded env vars:', Object.keys(envVars));\n }\n }\n return envVars;\n}\n\n/**\n * This function creates a definition of environment variables that will be injected into the build.\n * */\nexport function createEnvironmentVariablesDefinition(\n argv: ArgumentsType<typeof builder>,\n cwd: string\n): Record<string, string> {\n const envVarsDef: Record<string, string> = {};\n const names = new Set([\n ...(argv.inline ?? []).flatMap((e) => e.toString().split(',')),\n ...Object.keys(loadEnvironmentVariablesWithCache(argv, cwd)),\n ]);\n for (const name of names) {\n if (process.env[name] === undefined) continue;\n\n envVarsDef[`process.env.${name}`] = JSON.stringify(process.env[name]);\n }\n if (argv.verbose) {\n console.info('Inline env vars:', Object.keys(envVarsDef));\n }\n return envVarsDef;\n}\n","import type { ArgumentsCamelCase, InferredOptionTypes, Options } from 'yargs';\n\nexport const allTargetCategories = ['app', 'functions', 'lib'] as const;\n\nexport type TargetCategory = (typeof allTargetCategories)[number];\n\nexport const allTargetDetails = ['app-node', 'functions', 'lib', 'lib-react'] as const;\n\nexport type TargetDetail = (typeof allTargetDetails)[number];\n\nexport type ArgumentsType<T extends { [key: string]: Options }> = ArgumentsCamelCase<InferredOptionTypes<T>>;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport url from 'node:url';\n\nimport type { PackageJson } from 'type-fest';\n\nexport async function readPackageJson(dirPath: string): Promise<[PackageJson | undefined, string]> {\n const packageJsonPath = path.join(dirPath, 'package.json');\n try {\n const packageJsonText = await fs.promises.readFile(packageJsonPath, 'utf8');\n return [JSON.parse(packageJsonText) as PackageJson, packageJsonPath];\n } catch {\n // do nothing\n }\n return [undefined, packageJsonPath];\n}\n\nexport function getBuildTsRootPath(): string {\n return url.fileURLToPath(path.dirname(path.dirname(import.meta.url)));\n}\n\nexport function getNamespaceAndName(packageJson: PackageJson): [string | undefined, string | undefined] {\n const packageName = packageJson.name?.toString() || '';\n const match = /@([^/]+)\\/(.+)/.exec(packageName);\n const [, namespace, name] = match || [];\n return [namespace, name];\n}\n","import { yargsOptionsBuilderForEnv } from '@willbooster/shared-lib-node';\n\nexport const sharedOptionsBuilder = {\n ...yargsOptionsBuilderForEnv,\n silent: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 's',\n },\n} as const;\n","import { sharedOptionsBuilder } from '../../sharedOptionsBuilder.js';\n\nexport const builder = {\n ...sharedOptionsBuilder,\n input: {\n description:\n 'Paths of source code files to be built. The first file is main. If no option is given, \"src/index.{ts,tsx}\" from package directory is targeted.',\n type: 'array',\n alias: 'i',\n },\n 'core-js': {\n description: 'Whether or not core-js is employed.',\n type: 'boolean',\n default: false,\n },\n 'core-js-proposals': {\n description: 'Whether or not core-js with proposals support is employed.',\n type: 'boolean',\n default: false,\n },\n minify: {\n description: 'Whether or not minification is enabled.',\n type: 'boolean',\n default: true,\n },\n sourcemap: {\n description: 'Whether or not sourcemap is enabled.',\n type: 'boolean',\n default: true,\n },\n external: {\n description: 'Additional external dependencies.',\n type: 'array',\n },\n inline: {\n description: 'Environment variables to be inlined.',\n type: 'array',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n keepImport: {\n description: 'Identifiers to be kept as import statements.',\n type: 'array',\n },\n} as const;\n\nexport const appBuilder = {\n ...builder,\n moduleType: {\n description: 'esm, cjs, or either (default).',\n type: 'string',\n alias: 'm',\n },\n} as const;\n\nexport const functionsBuilder = {\n ...appBuilder,\n onlyPackageJson: {\n description: 'Whether to generate only package.json.',\n type: 'boolean',\n },\n} as const;\n\nexport const libBuilder = {\n ...builder,\n moduleType: {\n description: 'esm, cjs, either, or both (default).',\n type: 'string',\n alias: 'm',\n },\n // .js files in a package with `\"type\": \"module\"` are treated as esm.\n // However, we want to treat them as cjs in the case where a cjs project imports an esm package.\n // To deal with the case, we use .cjs and .mjs extensions instead of .js extension.\n jsExtension: {\n description: 'Whether to use .js in cjs and/or esm: either (default), both, or none.',\n type: 'string',\n alias: 'j',\n },\n} as const;\n\nexport type AnyBuilderType = typeof appBuilder | typeof functionsBuilder | typeof libBuilder;\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { babel } from '@rollup/plugin-babel';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport resolve from '@rollup/plugin-node-resolve';\nimport replace from '@rollup/plugin-replace';\nimport terser from '@rollup/plugin-terser';\nimport type { OutputOptions, Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { keepImport } from 'rollup-plugin-keep-import';\nimport { nodeExternals } from 'rollup-plugin-node-externals';\nimport preserveDirectives from 'rollup-plugin-preserve-directives';\nimport { string } from 'rollup-plugin-string';\nimport type { PackageJson } from 'type-fest';\n\nimport { createEnvironmentVariablesDefinition } from '../../env.js';\nimport type { ArgumentsType, TargetDetail } from '../../types.js';\nimport { getBuildTsRootPath } from '../../utils.js';\n\nimport type { builder } from './builder.js';\n\nexport function setupPlugins(\n argv: ArgumentsType<typeof builder>,\n targetDetail: TargetDetail,\n packageJson: PackageJson,\n namespace: string | undefined,\n packageDirPath: string,\n outputOptionsList: OutputOptions[]\n): Plugin[] {\n const externalDeps = [...(argv.external ?? [])].map((item) => item.toString());\n if (packageJson.dependencies?.['@prisma/client']) {\n externalDeps.push('prisma-client');\n }\n // Since `deps: true` does not work for `import chunk from 'lodash.chunk/index.js';`\n externalDeps.push(\n ...Object.keys(packageJson.dependencies ?? {}),\n ...Object.keys(packageJson.peerDependencies ?? {}),\n ...Object.keys(packageJson.optionalDependencies ?? {})\n );\n // Add external dependencies from sibling packages\n if (fs.existsSync(path.join('..', '..', 'package.json'))) {\n const packageDirs = fs.readdirSync(path.join('..'), { withFileTypes: true });\n for (const packageDir of packageDirs) {\n if (!packageDir.isDirectory()) continue;\n\n const packageJsonPath = path.join('..', packageDir.name, 'package.json');\n if (!fs.existsSync(packageJsonPath)) continue;\n\n const otherPackageJson: PackageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n if (packageJson.dependencies?.[otherPackageJson.name ?? '']) {\n externalDeps.push(\n ...Object.keys(otherPackageJson.dependencies ?? {}),\n ...Object.keys(otherPackageJson.peerDependencies ?? {}),\n ...Object.keys(otherPackageJson.optionalDependencies ?? {})\n );\n }\n }\n }\n\n const extensions = ['.cjs', '.mjs', '.js', '.jsx', '.json', '.cts', '.mts', '.ts', '.tsx'];\n const babelConfigPath = path.join(getBuildTsRootPath(), 'babel.config.mjs');\n const plugins: Plugin[] = [\n replace({\n delimiters: ['', ''],\n preventAssignment: true,\n values: createEnvironmentVariablesDefinition(argv, packageDirPath),\n }),\n json(),\n nodeExternals({\n deps: true,\n devDeps: false,\n peerDeps: true,\n optDeps: true,\n include: externalDeps.map((name) => new RegExp(`^${name}(?:\\\\/.+)?`)),\n exclude: namespace && new RegExp(`^@?${namespace}(?:\\\\/.+)?`),\n }),\n resolve({ extensions }),\n commonjs(),\n keepImport({ moduleNames: argv.keepImport?.map((item) => item.toString()) ?? [] }),\n ];\n const isBabelHelpersBundled =\n targetDetail === 'app-node' || targetDetail === 'functions' || !externalDeps.includes('@babel/runtime');\n process.env.BUILDTS_USE_BABLE_RUNTIME = isBabelHelpersBundled ? '' : '1';\n plugins.push(\n babel({\n configFile: babelConfigPath,\n extensions,\n // We need `runtime since `bundled` may break directory structure by creating _virtual directory.\n babelHelpers: isBabelHelpersBundled ? 'bundled' : 'runtime',\n exclude: /^(.+\\/)?node_modules\\/.+$/,\n }),\n ...(outputOptionsList.some((opts) => opts.preserveModules) ? [preserveDirectives()] : []),\n string({ include: ['**/*.csv', '**/*.txt'] })\n );\n if (argv.minify) {\n plugins.push(terser({ compress: { directives: false } }));\n }\n plugins.push(analyze({ summaryOnly: true }));\n return plugins;\n}\n","/* eslint-disable import/no-named-as-default-member */\n\n// We cannot use named imports from 'typescript' because of build errors.\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport ts from 'typescript';\n\nimport type { ArgumentsType } from '../../types.js';\n\nimport type { AnyBuilderType } from './builder.js';\n\nexport async function generateDeclarationFiles(\n argv: ArgumentsType<AnyBuilderType>,\n coreProjectDirPath: string\n): Promise<boolean> {\n const coreConfigFile = ts.findConfigFile(coreProjectDirPath, ts.sys.fileExists);\n if (!coreConfigFile) throw new Error(`Failed to find tsconfig.json in ${coreProjectDirPath}.`);\n if (argv.verbose) {\n console.info('Found tsconfig.json:', coreConfigFile);\n }\n\n const projects: [string, string, string][] = [];\n let outDir = path.join('dist', path.basename(coreProjectDirPath), 'src');\n if (fs.existsSync(outDir)) {\n const parentDirPath = path.dirname(coreProjectDirPath);\n const dirents = await fs.promises.readdir(parentDirPath, { withFileTypes: true });\n coreProjectDirPath = path.resolve(coreProjectDirPath);\n for (const dirent of dirents) {\n if (!dirent.isDirectory()) continue;\n\n const projectDirPath = path.resolve(parentDirPath, dirent.name);\n if (projectDirPath === coreProjectDirPath) continue;\n\n const configFile = ts.findConfigFile(projectDirPath, ts.sys.fileExists);\n const outDir = path.join('dist', dirent.name, 'src');\n if (configFile && fs.existsSync(outDir)) {\n projects.push([projectDirPath, configFile, outDir]);\n }\n }\n } else {\n outDir = 'dist';\n }\n projects.push([coreProjectDirPath, coreConfigFile, outDir]);\n\n let allSucceeded = true;\n for (const [projectDirPath, configFile, outDir] of projects) {\n allSucceeded &&= runTypeScriptCompiler(argv, projectDirPath, configFile, path.join(coreProjectDirPath, outDir));\n }\n return allSucceeded;\n}\n\nfunction runTypeScriptCompiler(\n argv: ArgumentsType<AnyBuilderType>,\n projectDirPath: string,\n configFile: string,\n outDir: string\n): boolean {\n if (argv.verbose) {\n console.info('runTypeScriptCompiler()', projectDirPath, configFile, outDir);\n }\n\n const { config } = ts.readConfigFile(configFile, ts.sys.readFile);\n config.compilerOptions = {\n ...config.compilerOptions,\n declaration: true,\n emitDeclarationOnly: true,\n noEmit: false,\n noEmitOnError: true,\n outDir,\n };\n config.include = ['src/**/*'];\n const { errors, fileNames, options } = ts.parseJsonConfigFileContent(config, ts.sys, projectDirPath);\n\n const program = ts.createProgram({ options, rootNames: fileNames, configFileParsingDiagnostics: errors });\n const { diagnostics, emitSkipped } = program.emit();\n\n const allDiagnostics = [...ts.getPreEmitDiagnostics(program), ...diagnostics, ...errors];\n if (allDiagnostics.length > 0) {\n const formatHost: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (path) => path,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getNewLine: () => ts.sys.newLine,\n };\n const message = ts.formatDiagnostics(allDiagnostics, formatHost);\n console.warn(message);\n }\n return !emitSkipped;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport chalk from 'chalk';\nimport dateTime from 'date-time';\nimport ms from 'pretty-ms';\nimport type { OutputOptions, RollupBuild, RollupOptions } from 'rollup';\nimport { rollup, watch } from 'rollup';\nimport type { Handler } from 'signal-exit';\nimport { onExit } from 'signal-exit';\nimport type { PackageJson } from 'type-fest';\nimport type { CommandModule } from 'yargs';\n\nimport { loadEnvironmentVariablesWithCache } from '../../env.js';\nimport type { ArgumentsType, TargetCategory, TargetDetail } from '../../types.js';\nimport { allTargetCategories } from '../../types.js';\nimport { getNamespaceAndName, readPackageJson } from '../../utils.js';\n\nimport type { AnyBuilderType, builder } from './builder.js';\nimport { appBuilder, functionsBuilder, libBuilder } from './builder.js';\nimport { setupPlugins } from './plugin.js';\nimport { handleError } from './rollupLogger.js';\nimport { generateDeclarationFiles } from './typeScript.js';\n\nexport const app: CommandModule<unknown, ArgumentsType<typeof appBuilder>> = {\n command: 'app [package]',\n describe: 'Build an app',\n builder: appBuilder,\n async handler(argv) {\n return build(argv, 'app');\n },\n};\n\nexport const functions: CommandModule<unknown, ArgumentsType<typeof functionsBuilder>> = {\n command: 'functions [package]',\n describe: 'Build a GCP/Firebase functions app',\n builder: functionsBuilder,\n async handler(argv) {\n if (argv.onlyPackageJson) {\n const packageDirPath = path.resolve(argv.package?.toString() ?? '.');\n const [packageJson, packageJsonPath] = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error(`Failed to parse package.json (${packageJsonPath}).`);\n process.exit(1);\n }\n await generatePackageJsonForFunctions(packageDirPath, packageJson, argv.moduleType);\n } else {\n return build(argv, 'functions');\n }\n },\n};\n\nexport const lib: CommandModule<unknown, ArgumentsType<typeof libBuilder>> = {\n command: 'lib [package]',\n describe: 'Build a Node.js / React library',\n builder: libBuilder,\n async handler(argv) {\n return build(argv, 'lib');\n },\n};\n\nexport async function build(argv: ArgumentsType<AnyBuilderType>, targetCategory: TargetCategory): Promise<void> {\n process.env.NODE_ENV ||= 'production';\n\n // `silent` is stronger than `verbose`.\n const verbose = !argv.silent && argv.verbose;\n const cwd = process.cwd();\n\n const packageDirPath = path.resolve(argv.package?.toString() ?? '.');\n const [packageJson, packageJsonPath] = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error(`Failed to parse package.json (${packageJsonPath}).`);\n process.exit(1);\n }\n\n loadEnvironmentVariablesWithCache(argv, packageDirPath);\n\n const inputs = verifyInput(argv, cwd, packageDirPath);\n const targetDetail = detectTargetDetail(targetCategory, inputs);\n\n if (verbose) {\n console.info('Target (Category):', `${targetDetail} (${targetCategory})`);\n }\n\n const [namespace] = getNamespaceAndName(packageJson);\n const isEsmPackage = packageJson.type === 'module';\n\n if (argv['core-js']) {\n process.env.BUILD_TS_COREJS = '1';\n } else if (argv['core-js-proposals']) {\n process.env.BUILD_TS_COREJS_WITH_PROPOSALS = '1';\n }\n\n if (verbose) {\n process.env.BUILD_TS_VERBOSE = '1';\n }\n process.env.BUILD_TS_TARGET_CATEGORY = targetCategory;\n process.env.BUILD_TS_TARGET_DETAIL = targetDetail;\n\n const outputOptionsList = getOutputOptionsList(argv, targetDetail, packageDirPath, isEsmPackage);\n if (verbose) {\n console.info('OutputOptions:', outputOptionsList);\n }\n if (outputOptionsList.length === 0) {\n console.error('Failed to detect output files.');\n process.exit(1);\n }\n\n process.chdir(packageDirPath);\n await fs.promises.rm(path.join(packageDirPath, 'dist'), { recursive: true, force: true });\n if (targetDetail === 'functions') {\n await generatePackageJsonForFunctions(packageDirPath, packageJson, argv.moduleType);\n }\n\n const options: RollupOptions = {\n input:\n targetDetail === 'functions'\n ? Object.fromEntries(\n inputs.map((input, index) => [index === 0 ? 'index' : path.basename(input, path.extname(input)), input])\n )\n : inputs,\n plugins: setupPlugins(argv, targetDetail, packageJson, namespace, packageDirPath, outputOptionsList),\n watch: argv.watch ? { clearScreen: false } : undefined,\n };\n\n const pathToRelativePath = (paths: string | Readonly<string[]>): string[] =>\n (Array.isArray(paths) ? paths : [paths]).map((p) => path.relative(packageDirPath, p));\n if (argv.watch) {\n watchRollup(argv, targetDetail, packageDirPath, options, outputOptionsList, pathToRelativePath);\n } else {\n if (!argv.silent) {\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(pathToRelativePath(inputs).join(', '))} → ${chalk.bold(\n pathToRelativePath(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n }\n\n let bundle: RollupBuild | undefined;\n let buildFailed = false;\n try {\n const startTime = Date.now();\n const _bundle = await rollup(options);\n bundle = _bundle;\n await Promise.all(outputOptionsList.map((opts) => _bundle.write(opts)));\n\n if (!argv.silent) {\n console.info(\n chalk.green(\n `Created ${pathToRelativePath(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(\n ', '\n )} in ${chalk.bold(ms(Date.now() - startTime))}`\n )\n );\n }\n } catch (error) {\n buildFailed = true;\n console.error('Failed to build due to:', error);\n }\n await bundle?.close();\n if (buildFailed) process.exit(1);\n\n if (\n targetDetail !== 'app-node' &&\n targetDetail !== 'functions' &&\n !(await generateDeclarationFiles(argv, packageDirPath))\n ) {\n process.exit(1);\n }\n }\n}\n\nfunction watchRollup(\n argv: ArgumentsType<AnyBuilderType>,\n targetDetail: string,\n packageDirPath: string,\n options: RollupOptions,\n outputOptionsList: OutputOptions[],\n pathToRelativePath: (paths: string | Readonly<string[]>) => string[]\n): void {\n const watcher = watch({ ...options, output: outputOptionsList });\n\n const close = async (code: number | null | undefined): Promise<void> => {\n process.removeListener('uncaughtException', close);\n process.stdin.removeListener('end', close);\n if (watcher) await watcher.close();\n if (code) process.exit(code);\n };\n onExit(close as unknown as Handler);\n process.on('uncaughtException', close);\n if (!process.stdin.isTTY) {\n process.stdin.on('end', close);\n process.stdin.resume();\n }\n\n watcher.on('event', async (event) => {\n switch (event.code) {\n case 'ERROR': {\n handleError(event.error, true);\n break;\n }\n case 'BUNDLE_START': {\n if (argv.silent) break;\n\n const eventInput = event.input;\n const inputFiles: string[] = [];\n if (typeof eventInput === 'string') {\n inputFiles.push(eventInput);\n } else {\n inputFiles.push(\n ...(Array.isArray(eventInput) ? eventInput : Object.values(eventInput as Record<string, string>))\n );\n }\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(pathToRelativePath(inputFiles).join(', '))} → ${chalk.bold(\n pathToRelativePath(event.output).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n break;\n }\n case 'BUNDLE_END': {\n if (argv.silent) break;\n\n console.info(\n chalk.green(\n `Created ${chalk.bold(pathToRelativePath(event.output).join(', '))} in ${chalk.bold(ms(event.duration))}`\n )\n );\n\n if (targetDetail !== 'app-node' && targetDetail !== 'functions') {\n await generateDeclarationFiles(argv, packageDirPath);\n }\n break;\n }\n case 'END': {\n if (argv.silent) break;\n\n console.info(`\\n[${dateTime()}] waiting for changes...`);\n break;\n }\n }\n\n if ('result' in event && event.result) {\n void event.result.close();\n }\n });\n}\n\nfunction verifyInput(argv: ArgumentsType<typeof builder>, cwd: string, packageDirPath: string): string[] {\n if (argv.input && argv.input.length > 0) return argv.input.map((p) => path.join(cwd, p.toString()));\n\n const srcDirPath = path.join(packageDirPath, 'src');\n for (const ext of ['ts', 'tsx', 'cts', 'mts']) {\n const input = path.join(srcDirPath, `index.${ext}`);\n if (fs.existsSync(input)) return [input];\n }\n\n console.error('Failed to detect input file.');\n process.exit(1);\n}\n\nfunction detectTargetDetail(targetCategory: string, inputs: string[]): TargetDetail {\n switch (targetCategory) {\n case 'app': {\n return 'app-node';\n }\n case 'functions': {\n return 'functions';\n }\n case 'lib': {\n if (inputs.some((input) => input.endsWith('.tsx'))) {\n return 'lib-react';\n }\n return 'lib';\n }\n default: {\n console.error('target option must be one of: ' + allTargetCategories.join(', '));\n process.exit(1);\n }\n }\n}\n\nasync function generatePackageJsonForFunctions(\n packageDirPath: string,\n packageJson: PackageJson,\n moduleType: string | undefined\n): Promise<void> {\n packageJson.name += '-dist';\n const esmPackage = packageJson.type === 'module';\n const esmOutput = isEsmOutput(esmPackage, moduleType);\n packageJson.main = esmPackage === esmOutput ? 'index.js' : esmOutput ? 'index.mjs' : 'index.cjs';\n\n // Prevent Firebase Functions from running `build` script since we are building code before deploying.\n delete packageJson.scripts;\n // devDependencies are not required since we are building code before deploying.\n delete packageJson.devDependencies;\n\n await fs.promises.mkdir(path.join(packageDirPath, 'dist'), { recursive: true });\n await fs.promises.writeFile(path.join(packageDirPath, 'dist', 'package.json'), JSON.stringify(packageJson));\n}\n\nfunction getOutputOptionsList(\n argv: ArgumentsType<AnyBuilderType>,\n targetDetail: string,\n packageDirPath: string,\n isEsmPackage: boolean\n): OutputOptions[] {\n const outDirPath = path.join(packageDirPath, 'dist');\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n return [\n {\n dir: outDirPath,\n format: isEsmOutput(isEsmPackage, argv.moduleType) ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n }\n\n // The following import statement in an esm module causes the following error:\n // Statement:\n // import { usePrevious } from 'react-use';\n // Error:\n // Named export 'usePrevious' not found. The requested module 'react-use' is a CommonJS module,\n // which may not support all module.exports as named exports.\n // We need cjs modules for web apps to avoid the error.\n // Also, splitting a library is useful in both modules, so preserveModules should be true.\n const outputOptionsList: OutputOptions[] = [];\n const moduleType = argv.moduleType || 'both';\n const jsExt = argv.jsExtension || 'either';\n if (moduleType === 'cjs' || moduleType === 'both' || (moduleType === 'either' && !isEsmPackage)) {\n outputOptionsList.push({\n dir: outDirPath,\n entryFileNames: jsExt === 'both' || (jsExt === 'either' && !isEsmPackage) ? '[name].js' : '[name].cjs',\n format: 'commonjs',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n });\n }\n if (moduleType === 'esm' || moduleType === 'both' || (moduleType === 'either' && isEsmPackage)) {\n outputOptionsList.push({\n dir: outDirPath,\n entryFileNames: jsExt === 'both' || (jsExt === 'either' && isEsmPackage) ? '[name].js' : '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n });\n }\n return outputOptionsList;\n}\n\nfunction isEsmOutput(isEsmPackage: boolean, moduleType: string | undefined): boolean {\n return moduleType === 'esm' || ((!moduleType || moduleType === 'either') && isEsmPackage);\n}\n","import process from 'node:process';\n\nimport chalk from 'chalk';\nimport type { RollupError } from 'rollup';\n\nexport function handleError(error: RollupError, recover = false): void {\n const name = error.name || (error.cause as Error)?.name;\n const nameSection = name ? `${name}: ` : '';\n const pluginSection = error.plugin ? `(plugin ${error.plugin}) ` : '';\n const message = `${pluginSection}${nameSection}${error.message}`;\n\n const outputLines = [chalk.bold(chalk.red(`[!] ${chalk.bold(message.toString())}`))];\n\n if (error.url) {\n outputLines.push(chalk.cyan(error.url));\n }\n\n if (error.loc) {\n outputLines.push(`${error.loc.file || error.id} (${error.loc.line}:${error.loc.column})`);\n } else if (error.id) {\n outputLines.push(error.id);\n }\n\n if (error.frame) {\n outputLines.push(chalk.dim(error.frame));\n }\n\n if (error.stack) {\n outputLines.push(chalk.dim(error.stack?.replace(`${nameSection}${error.message}\\n`, '')));\n }\n\n outputLines.push('', '');\n console.error(outputLines.join('\\n'));\n\n if (!recover) process.exit(1);\n}\n","import * as child_process from 'node:child_process';\n\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { loadEnvironmentVariablesWithCache } from '../env.js';\nimport { sharedOptionsBuilder } from '../sharedOptionsBuilder.js';\n\nconst builder = {\n ...sharedOptionsBuilder,\n module: {\n description: 'A module type: cjs or esm',\n type: 'string',\n alias: 'm',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n} as const;\n\nexport const run: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'run <file>',\n describe: 'Run script',\n builder,\n async handler(argv) {\n loadEnvironmentVariablesWithCache(argv, process.cwd());\n\n const file = argv.file?.toString() || '';\n\n const isRunningOnBun = process.argv[0].endsWith('/bun');\n const runtime = isRunningOnBun ? 'bun' : 'node';\n const args = isRunningOnBun ? ['--bun', file] : ['--no-warnings', '--import', 'tsx', file];\n if (argv.watch) {\n args.push('--watch');\n }\n const [, ...additionalArguments] = argv._;\n const runtimeArgs = [...args, ...additionalArguments.map((arg) => arg.toString())];\n if (argv.verbose) {\n console.info(`Running '${runtime} ${runtimeArgs.join(' ')}'`);\n }\n const ret = child_process.spawnSync(runtime, runtimeArgs, {\n stdio: 'inherit',\n env: { ...process.env },\n });\n process.exit(ret.status ?? 1);\n },\n};\n","import { removeNpmAndYarnEnvironmentVariables } from '@willbooster/shared-lib-node';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { app, functions, lib } from './commands/build/build.js';\nimport { run } from './commands/run.js';\nimport { sharedOptionsBuilder } from './sharedOptionsBuilder.js';\n\nremoveNpmAndYarnEnvironmentVariables(process.env);\n\nawait yargs(hideBin(process.argv))\n .scriptName('build-ts')\n .options(sharedOptionsBuilder)\n .command(app)\n .command(functions)\n .command(lib)\n .command(run)\n .demandCommand()\n .strict()\n .help().argv;\n"],"names":["envVars","loadEnvironmentVariablesWithCache","argv","cwd","readAndApplyEnvironmentVariables","verbose","console","info","Object","keys","createEnvironmentVariablesDefinition","envVarsDef","names","Set","inline","flatMap","e","toString","split","name","undefined","process","env","JSON","stringify","allTargetCategories","async","readPackageJson","dirPath","packageJsonPath","path","join","packageJsonText","fs","promises","readFile","parse","sharedOptionsBuilder","yargsOptionsBuilderForEnv","silent","description","type","alias","builder","input","default","minify","sourcemap","external","watch","keepImport","appBuilder","moduleType","functionsBuilder","onlyPackageJson","libBuilder","jsExtension","setupPlugins","targetDetail","packageJson","namespace","packageDirPath","outputOptionsList","externalDeps","map","item","dependencies","push","peerDependencies","optionalDependencies","existsSync","packageDirs","readdirSync","withFileTypes","packageDir","isDirectory","otherPackageJson","readFileSync","extensions","babelConfigPath","url","fileURLToPath","dirname","plugins","replace","delimiters","preventAssignment","values","json","nodeExternals","deps","devDeps","peerDeps","optDeps","include","RegExp","exclude","resolve","commonjs","moduleNames","isBabelHelpersBundled","includes","BUILDTS_USE_BABLE_RUNTIME","babel","configFile","babelHelpers","some","opts","preserveModules","preserveDirectives","string","terser","compress","directives","analyze","summaryOnly","generateDeclarationFiles","coreProjectDirPath","coreConfigFile","ts","findConfigFile","sys","fileExists","Error","projects","outDir","basename","parentDirPath","dirents","readdir","dirent","projectDirPath","allSucceeded","runTypeScriptCompiler","config","readConfigFile","compilerOptions","declaration","emitDeclarationOnly","noEmit","noEmitOnError","errors","fileNames","options","parseJsonConfigFileContent","program","createProgram","rootNames","configFileParsingDiagnostics","diagnostics","emitSkipped","emit","allDiagnostics","getPreEmitDiagnostics","length","formatHost","getCanonicalFileName","getCurrentDirectory","getNewLine","newLine","message","formatDiagnostics","warn","app","command","describe","handler","build","functions","package","error","exit","generatePackageJsonForFunctions","lib","targetCategory","NODE_ENV","inputs","p","srcDirPath","ext","verifyInput","endsWith","detectTargetDetail","packageName","match","exec","getNamespaceAndName","isEsmPackage","BUILD_TS_COREJS","BUILD_TS_COREJS_WITH_PROPOSALS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","outDirPath","dir","format","isEsmOutput","jsExt","entryFileNames","getOutputOptionsList","chdir","rm","recursive","force","fromEntries","index","extname","clearScreen","pathToRelativePath","paths","Array","isArray","relative","watcher","output","close","removeListener","stdin","code","onExit","on","isTTY","resume","event","recover","cause","nameSection","plugin","outputLines","chalk","bold","red","cyan","loc","file","id","line","column","frame","dim","stack","handleError","eventInput","inputFiles","green","ms","duration","dateTime","result","watchRollup","bundle","buildFailed","startTime","Date","now","_bundle","rollup","Promise","all","write","esmPackage","esmOutput","main","scripts","devDependencies","mkdir","writeFile","run","module","isRunningOnBun","runtime","args","additionalArguments","_","runtimeArgs","arg","ret","child_process","spawnSync","stdio","status","removeNpmAndYarnEnvironmentVariables","yargs","hideBin","scriptName","demandCommand","strict","help"],"mappings":"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"}
|