build-ts 8.0.1 → 8.0.3
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 +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +5 -6
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"yargs";import{hideBin as o}from"yargs/helpers";import n from"node:fs";import s from"node:path";import t from"chalk";import i from"date-time";import r from"pretty-ms";import{rollup as a,watch as c}from"rollup";import{onExit as p}from"signal-exit";import l from"node:url";import{babel as d}from"@rollup/plugin-babel";import m from"@rollup/plugin-commonjs";import u from"@rollup/plugin-json";import f from"@rollup/plugin-node-resolve";import h from"@rollup/plugin-replace";import y from"@rollup/plugin-terser";import b from"rollup-plugin-analyzer";import{keepImport as g}from"rollup-plugin-keep-import";import{nodeExternals as j}from"rollup-plugin-node-externals";import{string as v}from"rollup-plugin-string";import w from"rollup-plugin-ts";import{config as x}from"dotenv";import k from"node:process";import*as S from"node:child_process";const $=["app","functions","lib"];async function E(e){try{const o=await n.promises.readFile(s.join(e,"package.json"),"utf8");return JSON.parse(o)}catch{}}const N={env:{description:".env files to be loaded.",type:"array"},"cascade-env":{description:"environment to load cascading .env files (e.g., `.env`, `.env.<environment>`, `.env.local` and `.env.<environment>.local`)",type:"string"},"cascade-node-env":{description:"environment to load cascading .env files (e.g., `.env`, `.env.<NODE_ENV>`, `.env.local` and `.env.<NODE_ENV>.local`). Preferred over `cascade`.",type:"boolean"}},_={...N,input:{description:'A file path of main source code. Default value is "src/index.{ts,tsx}" from package directory.',type:"string",alias:"i"},"core-js":{description:"Whether or not core-js 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"},verbose:{description:"Whether or not verbose mode is enabled.",type:"boolean",alias:"v"},"env-var":{description:"Environment variables to be inlined.",type:"array",alias:"ev"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"},keepImport:{description:"Identifiers to be kept as import statements.",type:"array"}},T={..._,moduleType:{description:"esm, cjs, or either (default).",type:"string",alias:"m"}};let D;function O(e,o){if(D)return D;let n=(e.env??[]).map((e=>e.toString()));const t=e.cascadeNodeEnv?process.env.NODE_ENV:e.cascadeEnv;"string"==typeof t&&(0===n.length&&n.push(".env"),n=n.flatMap((e=>t?[`${e}.${t}.local`,`${e}.local`,`${e}.${t}`,e]:[`${e}.local`,e]))),e.verbose&&console.info("Loading env files:",n),D={};for(const e of n)D={...x({path:s.join(o,e)}).parsed,...D};return D}function R(e,o){const n={},s=new Set(...(e.envVar??[]).map((e=>e.toString())),...Object.keys(O(e,o)));for(const e of s)void 0!==process.env[e]&&(n[`process.env.${e}`]=JSON.stringify(process.env[e]));return n}function W(e,o,t,i,r){const a=[...e.external??[]].map((e=>e.toString()));if(t.dependencies?.["@prisma/client"]&&a.push("prisma-client"),n.existsSync(s.join("..","..","package.json"))){const e=n.readdirSync(s.join(".."),{withFileTypes:!0});for(const o of e){if(!o.isDirectory())continue;const e=s.join("..",o.name,"package.json");if(!n.existsSync(e))continue;const i=JSON.parse(n.readFileSync(e,"utf8"));t.dependencies?.[i.name??""]&&a.push(...Object.keys(i.dependencies??{}),...Object.keys(i.peerDependencies??{}),...Object.keys(i.optionalDependencies??{}))}}const c=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],p=s.join(l.fileURLToPath(s.dirname(s.dirname(import.meta.url))),"babel.config.mjs"),x=[h({delimiters:["",""],preventAssignment:!0,values:R(e,r)}),u(),j({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:a.map((e=>new RegExp(`${e}(?:\\/.+)?`))),exclude:i&&new RegExp(`${i}(?:\\/.+)?`)}),f({extensions:c}),m(),g({moduleNames:e.keepImport?.map((e=>e.toString()))??[]})];return"app-node"===o||"functions"===o?x.push(d({configFile:p,extensions:c,babelHelpers:"bundled",exclude:"node_modules/**"})):x.push(w({transpiler:"babel",babelConfig:p})),x.push(v({include:["**/*.csv","**/*.txt"]})),e.minify&&x.push(y()),x.push(b({summaryOnly:!0})),x}const A={command:"app [package]",describe:"Build an app",builder:T,handler:async e=>B(e,"app")},L={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:{...T,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},async handler(e){if(!e.onlyPackageJson)return B(e,"functions");{const o=s.resolve(e.package?.toString()??"."),n=await E(o);n||(console.error("Failed to parse package.json."),process.exit(1)),await I(o,n,e.moduleType)}}},F={command:"lib [package]",describe:"Build a Node.js / React library",builder:{..._,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"}},handler:async e=>B(e,"lib")};async function B(e,o){const l=!e.silent&&e.verbose,d=process.cwd(),m=s.resolve(e.package?.toString()??"."),u=await E(m);u||(console.error("Failed to parse package.json."),process.exit(1));const f=function(e,o,t){if(e.input)return s.join(o,e.input);let i=s.join(t,s.join("src","index.ts"));if(n.existsSync(i))return i;if(i=s.join(t,s.join("src","index.tsx")),n.existsSync(i))return i;console.error("Failed to detect input file."),process.exit(1)}(e,d,m),h=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.endsWith(".tsx")?"lib-react":"lib";default:console.error("target option must be one of: "+$.join(", ")),process.exit(1)}}(o,f);l&&console.info("Target (Category):",`${h} (${o})`);const[y]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,t]=n||[];return[s,t]}(u),b="module"===u.type;let g;if(e["core-js"]&&(process.env.BUILD_TS_COREJS="1"),l&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=h,"app-node"===h||"functions"===h){const[o,n]=C(b,e.moduleType);g=[{file:s.join(m,"dist",o),format:n?"module":"commonjs",sourcemap:e.sourcemap}]}else{g=[];const o=e.moduleType||"both",n=e.jsExtension||"either";("cjs"===o||"both"===o||"either"===o&&!b)&&g.push({dir:s.join(m,"dist","cjs"),entryFileNames:"both"===n||"either"===n&&!b?"[name].js":"[name].cjs",format:"commonjs",preserveModules:!0,sourcemap:e.sourcemap}),("esm"===o||"both"===o||"either"===o&&b)&&g.push({dir:s.join(m,"dist","esm"),entryFileNames:"both"===n||"either"===n&&b?"[name].js":"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap})}l&&console.info("OutputOptions:",g),0===g.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(m),await n.promises.rm(s.join(m,"dist"),{recursive:!0,force:!0}),"functions"===h&&await I(m,u,e.moduleType);const j={input:f,plugins:W(e,h,u,y,d),watch:e.watch?{clearScreen:!1}:void 0},v=e=>(Array.isArray(e)?e:[e]).map((e=>s.relative(m,e)));if(e.watch)!function(e,o,n,s,a){const l=c({...n,output:s}),d=async e=>{process.removeListener("uncaughtException",d),process.stdin.removeListener("end",d),l&&await l.close(),e&&process.exit(e)};p(d),process.on("uncaughtException",d),process.stdin.isTTY||(process.stdin.on("end",d),process.stdin.resume());l.on("event",(n=>{switch(n.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}`,r=[t.bold(t.red(`[!] ${t.bold(i.toString())}`))];e.url&&r.push(t.cyan(e.url)),e.loc?r.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&r.push(e.id),e.frame&&r.push(t.dim(e.frame)),e.stack&&r.push(t.dim(e.stack?.replace(`${s}${e.message}\n`,""))),r.push("",""),console.error(r.join("\n")),o||k.exit(1)}(n.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const s=n.input,i=[];"string"==typeof s?i.push(s):i.push(...Array.isArray(s)?s:Object.values(s)),console.info(t.cyan(`Bundles ${t.bold(a(i).join(", "))} → ${t.bold(a(n.output).join(", "))}\non ${o} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(t.green(`Created ${t.bold(a(n.output).join(", "))} in ${t.bold(r(n.duration))}`));break;case"END":if(e.silent)break;console.info(`\n[${i()}] waiting for changes...`)}"result"in n&&n.result&&n.result.close()}))}(e,m,j,g,v);else{let o;e.silent||console.info(t.cyan(`Bundles ${t.bold(v(f).join(", "))} → ${t.bold(v(g.map((e=>e.file||e.dir||""))).join(", "))}\non ${m} ...`));let n=!1;try{const n=Date.now(),s=await a(j);o=s,await Promise.all(g.map((e=>s.write(e)))),e.silent||console.info(t.green(`Created ${v(g.map((e=>e.file||e.dir||""))).join(", ")} in ${t.bold(r(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1)}}async function I(e,o,t){o.name+="-dist";const[i]=C("module"===o.type,t);o.main=i,delete o.scripts,delete o.devDependencies,await n.promises.mkdir(s.join(e,"dist"),{recursive:!0}),await n.promises.writeFile(s.join(e,"dist","package.json"),JSON.stringify(o))}function C(e,o){const n="esm"===o||(!o||"either"===o)&&e;return[e===n?"index.js":n?"index.mjs":"index.cjs",n]}const J={command:"run <file>",describe:"Run script",builder:{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){const o=e.file?.toString()||"",n=await async function(e,o){if("cjs"===o||e.endsWith(".cts"))return"cjs";if("esm"===o||e.endsWith(".mts"))return"esm";let n=s.dirname(e);for(;;){const e=await E(n);if(e){if("module"===e.type)return"esm";break}const o=s.dirname(n);if(!o||o===n)break;n=o}return"cjs"}(o,e.module),t=[];e.watch&&t.push("--watch"),"cjs"===n?t.push("--require","build-ts/register"):t.push("--loader","build-ts/loader"),t.push(o);const[,...i]=e._,r=S.spawnSync("node",[...t,...i.map((e=>e.toString()))],{stdio:"inherit",env:{...process.env,NODE_NO_WARNINGS:"1",TS_NODE_TRANSPILE_ONLY:"1"}});process.exit(r.status??1)}};await e(o(process.argv)).scriptName("build-ts").options(N).middleware((e=>{for(const e of Object.keys(process.env)){const o=e.toLowerCase();(o.startsWith("npm_")||o.startsWith("yarn_")||o.startsWith("berry_"))&&delete process.env[e]}O(e,process.cwd())})).command(A).command(L).command(F).command(J).demandCommand().strict().help().argv;
|
|
1
|
+
import{loadEnvironmentVariables as e,removeNpmAndYarnEnvironmentVariables as o}from"@willbooster/shared-lib-node";import n from"yargs";import{hideBin as s}from"yargs/helpers";import t from"node:fs";import i from"node:path";import r from"chalk";import a from"date-time";import c from"pretty-ms";import{rollup as p,watch as l}from"rollup";import{onExit as d}from"signal-exit";import m from"node:url";import{babel as u}from"@rollup/plugin-babel";import f from"@rollup/plugin-commonjs";import h from"@rollup/plugin-json";import b from"@rollup/plugin-node-resolve";import y from"@rollup/plugin-replace";import g from"@rollup/plugin-terser";import j from"rollup-plugin-analyzer";import{keepImport as v}from"rollup-plugin-keep-import";import{nodeExternals as w}from"rollup-plugin-node-externals";import{string as x}from"rollup-plugin-string";import k from"rollup-plugin-ts";import S from"node:process";import*as E from"node:child_process";let $;function T(o,n){return $||($=e(o,n),o.verbose&&console.info("Loaded env vars:",Object.keys($))),$}function N(e,o){const n={},s=new Set([...(e.envVar??[]).map((e=>e.toString())),...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("Embed env vars:",Object.keys(n)),n}const O=["app","functions","lib"];async function D(e){try{const o=await t.promises.readFile(i.join(e,"package.json"),"utf8");return JSON.parse(o)}catch{}}const _={env:{description:".env files to be loaded.",type:"array"},"cascade-env":{description:"environment to load cascading .env files (e.g., `.env`, `.env.<environment>`, `.env.local` and `.env.<environment>.local`)",type:"string"},"cascade-node-env":{description:"environment to load cascading .env files (e.g., `.env`, `.env.<NODE_ENV>`, `.env.local` and `.env.<NODE_ENV>.local`). Preferred over `cascade`.",type:"boolean"},verbose:{description:"Whether or not verbose mode is enabled.",type:"boolean",alias:"v"},silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"}},R={..._,input:{description:'A file path of main source code. Default value is "src/index.{ts,tsx}" from package directory.',type:"string",alias:"i"},"core-js":{description:"Whether or not core-js 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"},"env-var":{description:"Environment variables to be inlined.",type:"array",alias:"ev"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},keepImport:{description:"Identifiers to be kept as import statements.",type:"array"}},A={...R,moduleType:{description:"esm, cjs, or either (default).",type:"string",alias:"m"}};function F(e,o,n,s,r){const a=[...e.external??[]].map((e=>e.toString()));if(n.dependencies?.["@prisma/client"]&&a.push("prisma-client"),t.existsSync(i.join("..","..","package.json"))){const e=t.readdirSync(i.join(".."),{withFileTypes:!0});for(const o of e){if(!o.isDirectory())continue;const e=i.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 c=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],p=i.join(m.fileURLToPath(i.dirname(i.dirname(import.meta.url))),"babel.config.mjs"),l=[y({delimiters:["",""],preventAssignment:!0,values:N(e,r)}),h(),w({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:a.map((e=>new RegExp(`${e}(?:\\/.+)?`))),exclude:s&&new RegExp(`${s}(?:\\/.+)?`)}),b({extensions:c}),f(),v({moduleNames:e.keepImport?.map((e=>e.toString()))??[]})];return"app-node"===o||"functions"===o?l.push(u({configFile:p,extensions:c,babelHelpers:"bundled",exclude:"node_modules/**"})):l.push(k({transpiler:"babel",babelConfig:p})),l.push(x({include:["**/*.csv","**/*.txt"]})),e.minify&&l.push(g()),l.push(j({summaryOnly:!0})),l}const L={command:"app [package]",describe:"Build an app",builder:A,handler:async e=>I(e,"app")},W={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:{...A,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},async handler(e){if(!e.onlyPackageJson)return I(e,"functions");{const o=i.resolve(e.package?.toString()??"."),n=await D(o);n||(console.error("Failed to parse package.json."),process.exit(1)),await C(o,n,e.moduleType)}}},B={command:"lib [package]",describe:"Build a Node.js / React library",builder:{...R,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"}},handler:async e=>I(e,"lib")};async function I(e,o){const n=!e.silent&&e.verbose,s=process.cwd(),m=i.resolve(e.package?.toString()??"."),u=await D(m);u||(console.error("Failed to parse package.json."),process.exit(1)),T(e,m);const f=function(e,o,n){if(e.input)return i.join(o,e.input);let s=i.join(n,i.join("src","index.ts"));if(t.existsSync(s))return s;if(s=i.join(n,i.join("src","index.tsx")),t.existsSync(s))return s;console.error("Failed to detect input file."),process.exit(1)}(e,s,m),h=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.endsWith(".tsx")?"lib-react":"lib";default:console.error("target option must be one of: "+O.join(", ")),process.exit(1)}}(o,f);n&&console.info("Target (Category):",`${h} (${o})`);const[b]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,t]=n||[];return[s,t]}(u),y="module"===u.type;let g;if(e["core-js"]&&(process.env.BUILD_TS_COREJS="1"),n&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=h,"app-node"===h||"functions"===h){const[o,n]=J(y,e.moduleType);g=[{file:i.join(m,"dist",o),format:n?"module":"commonjs",sourcemap:e.sourcemap}]}else{g=[];const o=e.moduleType||"both",n=e.jsExtension||"either";("cjs"===o||"both"===o||"either"===o&&!y)&&g.push({dir:i.join(m,"dist","cjs"),entryFileNames:"both"===n||"either"===n&&!y?"[name].js":"[name].cjs",format:"commonjs",preserveModules:!0,sourcemap:e.sourcemap}),("esm"===o||"both"===o||"either"===o&&y)&&g.push({dir:i.join(m,"dist","esm"),entryFileNames:"both"===n||"either"===n&&y?"[name].js":"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap})}n&&console.info("OutputOptions:",g),0===g.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(m),await t.promises.rm(i.join(m,"dist"),{recursive:!0,force:!0}),"functions"===h&&await C(m,u,e.moduleType);const j={input:f,plugins:F(e,h,u,b,m),watch:e.watch?{clearScreen:!1}:void 0},v=e=>(Array.isArray(e)?e:[e]).map((e=>i.relative(m,e)));if(e.watch)!function(e,o,n,s,t){const i=l({...n,output:s}),p=async e=>{process.removeListener("uncaughtException",p),process.stdin.removeListener("end",p),i&&await i.close(),e&&process.exit(e)};d(p),process.on("uncaughtException",p),process.stdin.isTTY||(process.stdin.on("end",p),process.stdin.resume());i.on("event",(n=>{switch(n.code){case"ERROR":!function(e,o=!1){const n=e.name||e.cause?.name,s=n?`${n}: `:"",t=`${e.plugin?`(plugin ${e.plugin}) `:""}${s}${e.message}`,i=[r.bold(r.red(`[!] ${r.bold(t.toString())}`))];e.url&&i.push(r.cyan(e.url)),e.loc?i.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&i.push(e.id),e.frame&&i.push(r.dim(e.frame)),e.stack&&i.push(r.dim(e.stack?.replace(`${s}${e.message}\n`,""))),i.push("",""),console.error(i.join("\n")),o||S.exit(1)}(n.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const s=n.input,i=[];"string"==typeof s?i.push(s):i.push(...Array.isArray(s)?s:Object.values(s)),console.info(r.cyan(`Bundles ${r.bold(t(i).join(", "))} → ${r.bold(t(n.output).join(", "))}\non ${o} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(r.green(`Created ${r.bold(t(n.output).join(", "))} in ${r.bold(c(n.duration))}`));break;case"END":if(e.silent)break;console.info(`\n[${a()}] waiting for changes...`)}"result"in n&&n.result&&n.result.close()}))}(e,m,j,g,v);else{let o;e.silent||console.info(r.cyan(`Bundles ${r.bold(v(f).join(", "))} → ${r.bold(v(g.map((e=>e.file||e.dir||""))).join(", "))}\non ${m} ...`));let n=!1;try{const n=Date.now(),s=await p(j);o=s,await Promise.all(g.map((e=>s.write(e)))),e.silent||console.info(r.green(`Created ${v(g.map((e=>e.file||e.dir||""))).join(", ")} in ${r.bold(c(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1)}}async function C(e,o,n){o.name+="-dist";const[s]=J("module"===o.type,n);o.main=s,delete o.scripts,delete o.devDependencies,await t.promises.mkdir(i.join(e,"dist"),{recursive:!0}),await t.promises.writeFile(i.join(e,"dist","package.json"),JSON.stringify(o))}function J(e,o){const n="esm"===o||(!o||"either"===o)&&e;return[e===n?"index.js":n?"index.mjs":"index.cjs",n]}const P={command:"run <file>",describe:"Run script",builder:{..._,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=await async function(e,o){if("cjs"===o||e.endsWith(".cts"))return"cjs";if("esm"===o||e.endsWith(".mts"))return"esm";let n=i.dirname(e);for(;;){const e=await D(n);if(e){if("module"===e.type)return"esm";break}const o=i.dirname(n);if(!o||o===n)break;n=o}return"cjs"}(o,e.module),s=[];e.watch&&s.push("--watch"),"cjs"===n?s.push("--require","build-ts/register"):s.push("--loader","build-ts/loader"),s.push(o);const[,...t]=e._,r=E.spawnSync("node",[...s,...t.map((e=>e.toString()))],{stdio:"inherit",env:{...process.env,NODE_NO_WARNINGS:"1",TS_NODE_TRANSPILE_ONLY:"1"}});process.exit(r.status??1)}};o(process.env),await n(s(process.argv)).scriptName("build-ts").options(_).command(L).command(W).command(B).command(P).demandCommand().strict().help().argv;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/types.ts","../src/utils.ts","../src/preprocessBuilder.ts","../src/commands/build/builder.ts","../src/env.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/build/rollupLogger.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["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> {\n try {\n const packageJsonText = await fs.promises.readFile(path.join(dirPath, 'package.json'), 'utf8');\n return JSON.parse(packageJsonText) as PackageJson;\n } catch {\n // do nothing\n }\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","export const preprocessBuilder = {\n env: {\n description: '.env files to be loaded.',\n type: 'array',\n },\n 'cascade-env': {\n description:\n 'environment to load cascading .env files (e.g., `.env`, `.env.<environment>`, `.env.local` and `.env.<environment>.local`)',\n type: 'string',\n },\n 'cascade-node-env': {\n description:\n 'environment to load cascading .env files (e.g., `.env`, `.env.<NODE_ENV>`, `.env.local` and `.env.<NODE_ENV>.local`). Preferred over `cascade`.',\n type: 'boolean',\n },\n} as const;\n","import { preprocessBuilder } from '../../preprocessBuilder.js';\n\nexport const builder = {\n ...preprocessBuilder,\n input: {\n description: 'A file path of main source code. Default value is \"src/index.{ts,tsx}\" from package directory.',\n type: 'string',\n alias: 'i',\n },\n 'core-js': {\n description: 'Whether or not core-js 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 verbose: {\n description: 'Whether or not verbose mode is enabled.',\n type: 'boolean',\n alias: 'v',\n },\n 'env-var': {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'ev',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n silent: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 's',\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 path from 'node:path';\n\nimport { config } from 'dotenv';\n\nimport type { builder } from './commands/build/builder.js';\nimport type { preprocessBuilder } from './preprocessBuilder.js';\nimport type { ArgumentsType } from './types.js';\n\nlet envVars: Record<string, string> | undefined;\n\n/**\n * This function loads environment variables from `.env` files.\n * */\nexport function loadEnvironmentVariables(\n argv: ArgumentsType<typeof preprocessBuilder>,\n cwd: string\n): Record<string, string> {\n if (envVars) return envVars;\n\n let envPaths = (argv.env ?? []).map((envPath) => envPath.toString());\n const cascade = argv.cascadeNodeEnv ? process.env.NODE_ENV : argv.cascadeEnv;\n if (typeof cascade === 'string') {\n if (envPaths.length === 0) envPaths.push('.env');\n envPaths = envPaths.flatMap((envPath) =>\n cascade\n ? [`${envPath}.${cascade}.local`, `${envPath}.local`, `${envPath}.${cascade}`, envPath]\n : [`${envPath}.local`, envPath]\n );\n }\n if (argv.verbose) {\n console.info('Loading env files:', envPaths);\n }\n envVars = {};\n for (const envPath of envPaths) {\n envVars = { ...config({ path: path.join(cwd, envPath) }).parsed, ...envVars };\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.envVar ?? []).map((e) => e.toString()),\n ...Object.keys(loadEnvironmentVariables(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 return envVarsDef;\n}\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 { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { keepImport } from 'rollup-plugin-keep-import';\nimport { nodeExternals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\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 createPlugins(\n argv: ArgumentsType<typeof builder>,\n targetDetail: TargetDetail,\n packageJson: PackageJson,\n namespace: string | undefined,\n cwd: string\n): Plugin[] {\n const externalDeps = [...(argv.external ?? [])].map((item) => item.toString());\n if (packageJson.dependencies?.['@prisma/client']) {\n externalDeps.push('prisma-client');\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, cwd),\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 if (targetDetail === 'app-node' || targetDetail === 'functions') {\n plugins.push(\n babel({\n configFile: babelConfigPath,\n extensions,\n babelHelpers: 'bundled',\n exclude: 'node_modules/**',\n })\n );\n } else {\n plugins.push(\n ts({\n transpiler: 'babel',\n babelConfig: babelConfigPath,\n })\n );\n }\n plugins.push(string({ include: ['**/*.csv', '**/*.txt'] }));\n if (argv.minify) {\n plugins.push(terser());\n }\n plugins.push(analyze({ summaryOnly: true }));\n return plugins;\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 { onExit } from 'signal-exit';\nimport type { PackageJson } from 'type-fest';\nimport type { CommandModule } from 'yargs';\n\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 { createPlugins } from './plugin.js';\nimport { handleError } from './rollupLogger.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 = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\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 // `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 = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n\n const input = verifyInput(argv, cwd, packageDirPath);\n const targetDetail = detectTargetDetail(targetCategory, input);\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 }\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 let outputOptionsList: OutputOptions[];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n const [outputPath, isEsmOutput] = getOutputPathAndIsEsmOutput(isEsmPackage, argv.moduleType);\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', outputPath),\n format: isEsmOutput ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\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 outputOptionsList = [];\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: path.join(packageDirPath, 'dist', 'cjs'),\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: path.join(packageDirPath, 'dist', 'esm'),\n entryFileNames: jsExt === 'both' || (jsExt === 'either' && isEsmPackage) ? '[name].js' : '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n });\n }\n }\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 plugins: createPlugins(argv, targetDetail, packageJson, namespace, cwd),\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, packageDirPath, options, outputOptionsList, pathToRelativePath);\n } else {\n if (!argv.silent) {\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(pathToRelativePath(input).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}\n\nfunction watchRollup(\n argv: ArgumentsType<AnyBuilderType>,\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);\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', (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 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 event.result.close();\n }\n });\n}\n\nfunction verifyInput(argv: ArgumentsType<typeof builder>, cwd: string, packageDirPath: string): string {\n if (argv.input) return path.join(cwd, argv.input);\n\n let input = path.join(packageDirPath, path.join('src', 'index.ts'));\n if (fs.existsSync(input)) return input;\n\n input = path.join(packageDirPath, path.join('src', 'index.tsx'));\n if (fs.existsSync(input)) return input;\n\n console.error('Failed to detect input file.');\n process.exit(1);\n}\n\nfunction detectTargetDetail(targetCategory: string, input: 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 (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 [outputPath] = getOutputPathAndIsEsmOutput(packageJson.type === 'module', moduleType);\n packageJson.main = outputPath;\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 getOutputPathAndIsEsmOutput(isEsmPackage: boolean, moduleType: string | undefined): [string, boolean] {\n const isEsmOutput = moduleType === 'esm' || ((!moduleType || moduleType === 'either') && isEsmPackage);\n const outputPath = isEsmPackage === isEsmOutput ? 'index.js' : isEsmOutput ? 'index.mjs' : 'index.cjs';\n return [outputPath, isEsmOutput];\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';\nimport path from 'node:path';\n\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { readPackageJson } from '../utils.js';\n\nconst builder = {\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 const file = argv.file?.toString() || '';\n const module = await detectModuleType(file, argv.module);\n\n const args: string[] = [];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'build-ts/register');\n } else {\n args.push('--loader', 'build-ts/loader');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n const ret = child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n stdio: 'inherit',\n env: { ...process.env, NODE_NO_WARNINGS: '1', TS_NODE_TRANSPILE_ONLY: '1' },\n });\n process.exit(ret.status ?? 1);\n },\n};\n\nasync function detectModuleType(file: string, module?: string): Promise<'cjs' | 'esm'> {\n if (module === 'cjs' || file.endsWith('.cts')) {\n return 'cjs';\n }\n if (module === 'esm' || file.endsWith('.mts')) {\n return 'esm';\n }\n\n let dirPath = path.dirname(file);\n for (;;) {\n const packageJson = await readPackageJson(dirPath);\n if (packageJson) {\n if (packageJson.type === 'module') {\n return 'esm';\n }\n break;\n }\n\n const nextDirPath = path.dirname(dirPath);\n if (!nextDirPath || nextDirPath === dirPath) {\n break;\n }\n dirPath = nextDirPath;\n }\n return 'cjs';\n}\n","import 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 { loadEnvironmentVariables } from './env.js';\nimport { preprocessBuilder } from './preprocessBuilder.js';\n\nawait yargs(hideBin(process.argv))\n .scriptName('build-ts')\n .options(preprocessBuilder)\n .middleware((argv) => {\n // Remove npm & yarn environment variables from process.env\n for (const key of Object.keys(process.env)) {\n const lowerKey = key.toLowerCase();\n if (lowerKey.startsWith('npm_') || lowerKey.startsWith('yarn_') || lowerKey.startsWith('berry_')) {\n delete process.env[key];\n }\n }\n\n loadEnvironmentVariables(argv, process.cwd());\n })\n .command(app)\n .command(functions)\n .command(lib)\n .command(run)\n .demandCommand()\n .strict()\n .help().argv;\n"],"names":["allTargetCategories","async","readPackageJson","dirPath","packageJsonText","fs","promises","readFile","path","join","JSON","parse","preprocessBuilder","env","description","type","builder","input","alias","default","minify","sourcemap","external","verbose","watch","silent","keepImport","appBuilder","moduleType","envVars","loadEnvironmentVariables","argv","cwd","envPaths","map","envPath","toString","cascade","cascadeNodeEnv","process","NODE_ENV","cascadeEnv","length","push","flatMap","console","info","config","parsed","createEnvironmentVariablesDefinition","envVarsDef","names","Set","envVar","e","Object","keys","name","undefined","stringify","createPlugins","targetDetail","packageJson","namespace","externalDeps","item","dependencies","existsSync","packageDirs","readdirSync","withFileTypes","packageDir","isDirectory","packageJsonPath","otherPackageJson","readFileSync","peerDependencies","optionalDependencies","extensions","babelConfigPath","url","fileURLToPath","dirname","plugins","replace","delimiters","preventAssignment","values","json","nodeExternals","deps","devDeps","peerDeps","optDeps","include","RegExp","exclude","resolve","commonjs","moduleNames","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","app","command","describe","handler","build","functions","onlyPackageJson","packageDirPath","package","error","exit","generatePackageJsonForFunctions","lib","jsExtension","targetCategory","verifyInput","endsWith","detectTargetDetail","packageName","match","exec","getNamespaceAndName","isEsmPackage","outputOptionsList","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","outputPath","isEsmOutput","getOutputPathAndIsEsmOutput","file","format","jsExt","dir","entryFileNames","preserveModules","chdir","rm","recursive","force","options","clearScreen","pathToRelativePath","paths","Array","isArray","p","relative","watcher","output","close","removeListener","stdin","code","onExit","on","isTTY","resume","event","recover","cause","nameSection","message","plugin","outputLines","chalk","bold","red","cyan","loc","id","line","column","frame","dim","stack","handleError","eventInput","inputFiles","green","ms","duration","dateTime","result","watchRollup","bundle","opts","buildFailed","startTime","Date","now","_bundle","rollup","Promise","all","write","main","scripts","devDependencies","mkdir","writeFile","run","module","nextDirPath","detectModuleType","args","additionalArguments","_","ret","child_process","spawnSync","arg","stdio","NODE_NO_WARNINGS","TS_NODE_TRANSPILE_ONLY","status","yargs","hideBin","scriptName","middleware","key","lowerKey","toLowerCase","startsWith","demandCommand","strict","help"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/env.ts","../src/types.ts","../src/utils.ts","../src/preprocessBuilder.ts","../src/commands/build/builder.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/build/rollupLogger.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["import { loadEnvironmentVariables } from '@willbooster/shared-lib-node';\n\nimport type { builder } from './commands/build/builder.js';\nimport type { preprocessBuilder } from './preprocessBuilder.js';\nimport type { ArgumentsType } from './types.js';\n\nlet envVars: Record<string, string> | undefined;\n\n/**\n * This function loads environment variables from `.env` files.\n * */\nexport function loadEnvironmentVariablesWithCache(\n argv: ArgumentsType<typeof preprocessBuilder>,\n cwd: string\n): Record<string, string> {\n if (!envVars) {\n envVars = loadEnvironmentVariables(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.envVar ?? []).map((e) => e.toString()),\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('Embed 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> {\n try {\n const packageJsonText = await fs.promises.readFile(path.join(dirPath, 'package.json'), 'utf8');\n return JSON.parse(packageJsonText) as PackageJson;\n } catch {\n // do nothing\n }\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","export const preprocessBuilder = {\n env: {\n description: '.env files to be loaded.',\n type: 'array',\n },\n 'cascade-env': {\n description:\n 'environment to load cascading .env files (e.g., `.env`, `.env.<environment>`, `.env.local` and `.env.<environment>.local`)',\n type: 'string',\n },\n 'cascade-node-env': {\n description:\n 'environment to load cascading .env files (e.g., `.env`, `.env.<NODE_ENV>`, `.env.local` and `.env.<NODE_ENV>.local`). Preferred over `cascade`.',\n type: 'boolean',\n },\n verbose: {\n description: 'Whether or not verbose mode is enabled.',\n type: 'boolean',\n alias: 'v',\n },\n silent: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 's',\n },\n} as const;\n","import { preprocessBuilder } from '../../preprocessBuilder.js';\n\nexport const builder = {\n ...preprocessBuilder,\n input: {\n description: 'A file path of main source code. Default value is \"src/index.{ts,tsx}\" from package directory.',\n type: 'string',\n alias: 'i',\n },\n 'core-js': {\n description: 'Whether or not core-js 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 'env-var': {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'ev',\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 { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { keepImport } from 'rollup-plugin-keep-import';\nimport { nodeExternals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\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 createPlugins(\n argv: ArgumentsType<typeof builder>,\n targetDetail: TargetDetail,\n packageJson: PackageJson,\n namespace: string | undefined,\n packageDirPath: string\n): Plugin[] {\n const externalDeps = [...(argv.external ?? [])].map((item) => item.toString());\n if (packageJson.dependencies?.['@prisma/client']) {\n externalDeps.push('prisma-client');\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 if (targetDetail === 'app-node' || targetDetail === 'functions') {\n plugins.push(\n babel({\n configFile: babelConfigPath,\n extensions,\n babelHelpers: 'bundled',\n exclude: 'node_modules/**',\n })\n );\n } else {\n plugins.push(\n ts({\n transpiler: 'babel',\n babelConfig: babelConfigPath,\n })\n );\n }\n plugins.push(string({ include: ['**/*.csv', '**/*.txt'] }));\n if (argv.minify) {\n plugins.push(terser());\n }\n plugins.push(analyze({ summaryOnly: true }));\n return plugins;\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 { 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 { createPlugins } from './plugin.js';\nimport { handleError } from './rollupLogger.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 = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\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 // `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 = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n\n loadEnvironmentVariablesWithCache(argv, packageDirPath);\n\n const input = verifyInput(argv, cwd, packageDirPath);\n const targetDetail = detectTargetDetail(targetCategory, input);\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 }\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 let outputOptionsList: OutputOptions[];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n const [outputPath, isEsmOutput] = getOutputPathAndIsEsmOutput(isEsmPackage, argv.moduleType);\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', outputPath),\n format: isEsmOutput ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\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 outputOptionsList = [];\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: path.join(packageDirPath, 'dist', 'cjs'),\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: path.join(packageDirPath, 'dist', 'esm'),\n entryFileNames: jsExt === 'both' || (jsExt === 'either' && isEsmPackage) ? '[name].js' : '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n });\n }\n }\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 plugins: createPlugins(argv, targetDetail, packageJson, namespace, packageDirPath),\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, packageDirPath, options, outputOptionsList, pathToRelativePath);\n } else {\n if (!argv.silent) {\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(pathToRelativePath(input).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}\n\nfunction watchRollup(\n argv: ArgumentsType<AnyBuilderType>,\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);\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', (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 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 event.result.close();\n }\n });\n}\n\nfunction verifyInput(argv: ArgumentsType<typeof builder>, cwd: string, packageDirPath: string): string {\n if (argv.input) return path.join(cwd, argv.input);\n\n let input = path.join(packageDirPath, path.join('src', 'index.ts'));\n if (fs.existsSync(input)) return input;\n\n input = path.join(packageDirPath, path.join('src', 'index.tsx'));\n if (fs.existsSync(input)) return input;\n\n console.error('Failed to detect input file.');\n process.exit(1);\n}\n\nfunction detectTargetDetail(targetCategory: string, input: 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 (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 [outputPath] = getOutputPathAndIsEsmOutput(packageJson.type === 'module', moduleType);\n packageJson.main = outputPath;\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 getOutputPathAndIsEsmOutput(isEsmPackage: boolean, moduleType: string | undefined): [string, boolean] {\n const isEsmOutput = moduleType === 'esm' || ((!moduleType || moduleType === 'either') && isEsmPackage);\n const outputPath = isEsmPackage === isEsmOutput ? 'index.js' : isEsmOutput ? 'index.mjs' : 'index.cjs';\n return [outputPath, isEsmOutput];\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';\nimport path from 'node:path';\n\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { loadEnvironmentVariablesWithCache } from '../env.js';\nimport { preprocessBuilder } from '../preprocessBuilder.js';\nimport { readPackageJson } from '../utils.js';\n\nconst builder = {\n ...preprocessBuilder,\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 const module = await detectModuleType(file, argv.module);\n\n const args: string[] = [];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'build-ts/register');\n } else {\n args.push('--loader', 'build-ts/loader');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n const ret = child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n stdio: 'inherit',\n env: { ...process.env, NODE_NO_WARNINGS: '1', TS_NODE_TRANSPILE_ONLY: '1' },\n });\n process.exit(ret.status ?? 1);\n },\n};\n\nasync function detectModuleType(file: string, module?: string): Promise<'cjs' | 'esm'> {\n if (module === 'cjs' || file.endsWith('.cts')) {\n return 'cjs';\n }\n if (module === 'esm' || file.endsWith('.mts')) {\n return 'esm';\n }\n\n let dirPath = path.dirname(file);\n for (;;) {\n const packageJson = await readPackageJson(dirPath);\n if (packageJson) {\n if (packageJson.type === 'module') {\n return 'esm';\n }\n break;\n }\n\n const nextDirPath = path.dirname(dirPath);\n if (!nextDirPath || nextDirPath === dirPath) {\n break;\n }\n dirPath = nextDirPath;\n }\n return 'cjs';\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 { preprocessBuilder } from './preprocessBuilder.js';\n\nremoveNpmAndYarnEnvironmentVariables(process.env);\n\nawait yargs(hideBin(process.argv))\n .scriptName('build-ts')\n .options(preprocessBuilder)\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","loadEnvironmentVariables","verbose","console","info","Object","keys","createEnvironmentVariablesDefinition","envVarsDef","names","Set","envVar","map","e","toString","name","undefined","process","env","JSON","stringify","allTargetCategories","async","readPackageJson","dirPath","packageJsonText","fs","promises","readFile","path","join","parse","preprocessBuilder","description","type","alias","silent","builder","input","default","minify","sourcemap","external","watch","keepImport","appBuilder","moduleType","createPlugins","targetDetail","packageJson","namespace","packageDirPath","externalDeps","item","dependencies","push","existsSync","packageDirs","readdirSync","withFileTypes","packageDir","isDirectory","packageJsonPath","otherPackageJson","readFileSync","peerDependencies","optionalDependencies","extensions","babelConfigPath","url","fileURLToPath","dirname","plugins","replace","delimiters","preventAssignment","values","json","nodeExternals","deps","devDeps","peerDeps","optDeps","include","RegExp","exclude","resolve","commonjs","moduleNames","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","app","command","describe","handler","build","functions","onlyPackageJson","package","error","exit","generatePackageJsonForFunctions","lib","jsExtension","targetCategory","verifyInput","endsWith","detectTargetDetail","packageName","match","exec","getNamespaceAndName","isEsmPackage","outputOptionsList","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","outputPath","isEsmOutput","getOutputPathAndIsEsmOutput","file","format","jsExt","dir","entryFileNames","preserveModules","length","chdir","rm","recursive","force","options","clearScreen","pathToRelativePath","paths","Array","isArray","p","relative","watcher","output","close","removeListener","stdin","code","onExit","on","isTTY","resume","event","recover","cause","nameSection","message","plugin","outputLines","chalk","bold","red","cyan","loc","id","line","column","frame","dim","stack","handleError","eventInput","inputFiles","green","ms","duration","dateTime","result","watchRollup","bundle","opts","buildFailed","startTime","Date","now","_bundle","rollup","Promise","all","write","main","scripts","devDependencies","mkdir","writeFile","run","module","nextDirPath","detectModuleType","args","additionalArguments","_","ret","child_process","spawnSync","arg","stdio","NODE_NO_WARNINGS","TS_NODE_TRANSPILE_ONLY","status","removeNpmAndYarnEnvironmentVariables","yargs","hideBin","scriptName","demandCommand","strict","help"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "build-ts",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.3",
|
|
4
4
|
"repository": "github:WillBooster/build-ts",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "WillBooster Inc.",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"@rollup/plugin-replace": "5.0.2",
|
|
49
49
|
"@rollup/plugin-terser": "0.4.3",
|
|
50
50
|
"@rollup/pluginutils": "5.0.2",
|
|
51
|
+
"@willbooster/shared-lib-node": "2.4.1",
|
|
51
52
|
"babel-plugin-polyfill-corejs3": "0.8.3",
|
|
52
53
|
"babel-plugin-transform-remove-console": "6.9.4",
|
|
53
54
|
"chalk": "5.3.0",
|
|
54
55
|
"core-js": "3.31.1",
|
|
55
56
|
"core-js-pure": "3.31.1",
|
|
56
57
|
"date-time": "4.0.0",
|
|
57
|
-
"dotenv": "16.3.1",
|
|
58
58
|
"pretty-ms": "8.0.0",
|
|
59
59
|
"rollup": "3.26.3",
|
|
60
60
|
"rollup-plugin-analyzer": "4.0.0",
|
|
@@ -72,15 +72,14 @@
|
|
|
72
72
|
"@types/babel__plugin-transform-runtime": "7.9.2",
|
|
73
73
|
"@types/babel__preset-env": "7.9.2",
|
|
74
74
|
"@types/eslint": "8.44.0",
|
|
75
|
-
"@types/node": "20.4.
|
|
75
|
+
"@types/node": "20.4.4",
|
|
76
76
|
"@types/signal-exit": "3.0.1",
|
|
77
77
|
"@types/yargs": "17.0.24",
|
|
78
|
-
"@typescript-eslint/eslint-plugin": "6.
|
|
79
|
-
"@typescript-eslint/parser": "6.
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "6.2.0",
|
|
79
|
+
"@typescript-eslint/parser": "6.2.0",
|
|
80
80
|
"@willbooster/babel-configs": "1.3.0",
|
|
81
81
|
"@willbooster/eslint-config-ts": "10.4.0",
|
|
82
82
|
"@willbooster/prettier-config": "9.1.1",
|
|
83
|
-
"@willbooster/shared-lib-node": "2.3.0",
|
|
84
83
|
"conventional-changelog-conventionalcommits": "6.1.0",
|
|
85
84
|
"eslint": "8.45.0",
|
|
86
85
|
"eslint-config-prettier": "8.8.0",
|