build-ts 4.0.1 → 5.0.0
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/babel.config.mjs +17 -2
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -3
package/babel.config.mjs
CHANGED
|
@@ -51,15 +51,30 @@ if (process.env.BUILD_TS_COREJS) {
|
|
|
51
51
|
const packageJson = JSON.parse(fs.readFileSync(path.join(rootPath, 'package.json'), 'utf8'));
|
|
52
52
|
const [major, minor] = packageJson.dependencies['core-js'].split('.');
|
|
53
53
|
|
|
54
|
-
if (process.env.
|
|
54
|
+
if (process.env.BUILD_TS_TARGET_CATEGORY === 'app') {
|
|
55
55
|
/** @type {import('@babel/core').PluginItem} */
|
|
56
56
|
const presetEnvConfig = config.presets[0][1];
|
|
57
57
|
presetEnvConfig.useBuiltIns = 'usage';
|
|
58
58
|
presetEnvConfig.corejs = `${major}.${minor}`;
|
|
59
|
-
} else if (process.env.
|
|
59
|
+
} else if (process.env.BUILD_TS_TARGET_CATEGORY === 'lib') {
|
|
60
60
|
config.plugins.push(['polyfill-corejs3', { method: 'usage-pure', version: `${major}.${minor}` }]);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
+
|
|
64
|
+
if (process.env.BUILD_TS_TARGET_DETAIL === 'lib-react') {
|
|
65
|
+
config.presets.push([
|
|
66
|
+
'@babel/preset-react',
|
|
67
|
+
{
|
|
68
|
+
runtime: 'automatic',
|
|
69
|
+
},
|
|
70
|
+
]);
|
|
71
|
+
|
|
72
|
+
/** @type {import('@babel/core').PluginItem} */
|
|
73
|
+
const presetEnvConfig = config.presets[0][1];
|
|
74
|
+
presetEnvConfig.targets = { esmodules: true };
|
|
75
|
+
presetEnvConfig.modules = false;
|
|
76
|
+
}
|
|
77
|
+
|
|
63
78
|
if (process.env.BUILD_TS_VERBOSE) {
|
|
64
79
|
console.info('Babel config:', JSON.stringify(config, undefined, 2));
|
|
65
80
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"yargs";import{hideBin as o}from"yargs/helpers";import n from"node:fs";import r from"node:path";import{rollup as s}from"rollup";import i from"node:url";import{babel as t}from"@rollup/plugin-babel";import a from"@rollup/plugin-commonjs";import c from"@rollup/plugin-json";import p from"@rollup/plugin-node-resolve";import l from"@rollup/plugin-replace";import
|
|
1
|
+
import e from"yargs";import{hideBin as o}from"yargs/helpers";import n from"node:fs";import r from"node:path";import{rollup as s}from"rollup";import i from"node:url";import{babel as t}from"@rollup/plugin-babel";import a from"@rollup/plugin-commonjs";import c from"@rollup/plugin-json";import p from"@rollup/plugin-node-resolve";import l from"@rollup/plugin-replace";import d from"@rollup/plugin-terser";import m from"rollup-plugin-analyzer";import{externals as u}from"rollup-plugin-node-externals";import{string as f}from"rollup-plugin-string";import g from"rollup-plugin-ts";import b from"dotenv";import*as h from"node:child_process";const y=["app","functions","lib"];async function j(e){try{const o=await n.promises.readFile(r.join(e,"package.json"),"utf8");return JSON.parse(o)}catch{}}const v={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:{description:"Environment variables to be inlined.",type:"array",alias:"e"},dotenv:{description:".env files to be inlined.",type:"array"}};function x(e,o){const n={};for(const o of(e.env??[]).map((e=>e.toString())))void 0!==process.env[o]&&(n[`process.env.${o}`]=JSON.stringify(process.env[o]));for(const s of e.dotenv??[]){const e=b.config({path:r.join(o,s.toString())}).parsed||{};for(const[o,r]of Object.entries(e))void 0!==r&&(n[`process.env.${o}`]=JSON.stringify(r))}return n}function S(e,o,n,s,b){const h=[...e.external??[]].map((e=>e.toString()));n?.dependencies?.["@prisma/client"]&&h.push("prisma-client");const y=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],j=r.join(i.fileURLToPath(r.dirname(r.dirname(import.meta.url))),"babel.config.mjs"),v=[l({delimiters:["",""],preventAssignment:!0,values:x(e,b)}),c(),u({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:h,exclude:s&&new RegExp(`${s}\\/.+`)}),p({extensions:y}),a()];return"app-node"===o||"functions"===o?v.push(t({configFile:j,extensions:y,babelHelpers:"bundled",exclude:"node_modules/**"})):v.push(g({transpiler:"babel",babelConfig:j})),v.push(f({include:["**/*.csv","**/*.txt"]})),e.minify&&v.push(d()),v.push(m({summaryOnly:!0})),v}const w={command:"app [package]",describe:"Build an app",builder:v,handler:async e=>O(e,"app",e.package)},_={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:v,handler:async e=>O(e,"functions",e.package)},T={command:"lib [package]",describe:"Build a Node.js / React library",builder:v,handler:async e=>O(e,"lib",e.package)};async function O(e,o,i){const t=process.cwd(),a=r.resolve(i?.toString()??"."),c=await j(a);c||(console.error("Failed to parse package.json."),process.exit(1));const p=function(e,o,s){if(e.input)return r.join(o,e.input);let i=r.join(s,r.join("src","index.ts"));if(n.existsSync(i))return i;if(i=r.join(s,r.join("src","index.tsx")),n.existsSync(i))return i;console.error("Failed to detect input file."),process.exit(1)}(e,t,a),l=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: "+y.join(", ")),process.exit(1)}}(o,p);e.verbose&&console.info("Target (Category):",`${l} (${o})`);const[d]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,r,s]=n||[];return[r,s]}(c),m="module"===c.type;let u,f;e["core-js"]&&(process.env.BUILD_TS_COREJS="1"),e.verbose&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=l,"app-node"===l||"functions"===l?(c.main=m?"index.mjs":"index.cjs",u=[{file:r.join(a,"dist",c.main),format:m?"module":"commonjs",sourcemap:e.sourcemap}]):u=[{file:r.join(a,"dist","cjs","index.cjs"),format:"commonjs",sourcemap:e.sourcemap},{dir:r.join(a,"dist","esm"),entryFileNames:"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap}],e.verbose&&console.info("OutputOptions:",u),0===u.length&&(console.error("Failed to detect output files."),process.exit(1));let g=!1;try{process.chdir(a);const[o]=await Promise.all([s({input:p,plugins:S(e,l,c,d,t)}),n.promises.rm(r.join(a,"dist"),{recursive:!0,force:!0})]);f=o,await Promise.all(u.map((e=>o.write(e)))),"functions"===l&&(c.name+="-dist",delete c.devDependencies,await n.promises.writeFile(r.join(a,"dist","package.json"),JSON.stringify(c)))}catch(e){g=!0,console.error("Failed to build due to:",e)}await(f?.close()),g&&process.exit(1)}const k={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=r.dirname(e);for(;;){const e=await j(n);if(e){if("module"===e.type)return"esm";break}const o=r.dirname(n);if(!o||o===n)break;n=o}return"cjs"}(o,e.module),s=["--no-warnings"];e.watch&&s.push("--watch"),"cjs"===n?s.push("--require","ts-node/register"):s.push("--loader","ts-node/esm"),s.push(o);const[,...i]=e._;h.spawnSync("node",[...s,...i.map((e=>e.toString()))],{shell:!0,stdio:"inherit",env:{...process.env,TS_NODE_TRANSPILE_ONLY:"1"}})}};await e(o(process.argv)).command(w).command(_).command(T).command(k).demandCommand().strict().help().argv;
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/utils.ts","../src/commands/build/builder.ts","../src/commands/build/env.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport url from 'node:url';\n\nimport { 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 builder = {\n input: {\n description: 'A file path of main source code. Default value is \"src/index.ts\" 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: {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'e',\n },\n dotenv: {\n description: '.env files to be inlined.',\n type: 'array',\n },\n} as const;\n","import path from 'node:path';\n\nimport dotenv from 'dotenv';\nimport type { InferredOptionTypes } from 'yargs';\n\nimport type { builder } from './builder.js';\n\nexport function loadEnvironmentVariables(\n argv: InferredOptionTypes<typeof builder>,\n cwd: string\n): Record<string, string> {\n const envVars: Record<string, string> = {};\n for (const name of (argv.env ?? []).map((e) => e.toString())) {\n if (process.env[name] === undefined) continue;\n\n envVars[`process.env.${name}`] = JSON.stringify(process.env[name]);\n }\n for (const dotenvPath of argv.dotenv ?? []) {\n const parsed = dotenv.config({ path: path.join(cwd, dotenvPath.toString()) }).parsed || {};\n for (const [key, value] of Object.entries(parsed)) {\n if (value === undefined) continue;\n\n envVars[`process.env.${key}`] = JSON.stringify(value);\n }\n }\n return envVars;\n}\n","import 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 { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { externals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\nimport type { PackageJson } from 'type-fest';\nimport type { InferredOptionTypes } from 'yargs';\n\nimport { Target } from '../../types.js';\nimport { getBuildTsRootPath } from '../../utils.js';\n\nimport type { builder } from './builder.js';\nimport { loadEnvironmentVariables } from './env.js';\n\nexport function createPlugins(\n argv: InferredOptionTypes<typeof builder>,\n target: Target,\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 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: loadEnvironmentVariables(argv, cwd),\n }),\n json(),\n externals({\n deps: true,\n devDeps: false,\n include: externalDeps,\n exclude: namespace && new RegExp(`${namespace}\\\\/.+`),\n }),\n resolve({ extensions }),\n commonjs(),\n ];\n if (target === 'node' || target === 'lib') {\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 { OutputOptions, rollup, RollupBuild } from 'rollup';\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { Target } from '../../types.js';\nimport { getNamespaceAndName, readPackageJson } from '../../utils.js';\n\nimport { builder } from './builder.js';\nimport { createPlugins } from './plugin.js';\n\nexport const node: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'node [package]',\n describe: 'Build a Node.js app',\n builder,\n async handler(argv) {\n return build(argv, 'node', argv.package);\n },\n};\n\nexport const functions: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'functions [package]',\n describe: 'Build a GCP/Firebase functions app',\n builder,\n async handler(argv) {\n return build(argv, 'functions', argv.package);\n },\n};\n\nexport const lib: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'lib [package]',\n describe: 'Build a library',\n builder,\n async handler(argv) {\n return build(argv, 'lib', argv.package);\n },\n};\n\nexport async function build(\n argv: InferredOptionTypes<typeof builder>,\n target: Target,\n relativePackageDirPath?: unknown\n): Promise<void> {\n const cwd = process.cwd();\n\n if (argv.verbose) {\n console.info('Target:', target);\n }\n if (target !== 'node' && target !== 'lib' && target !== 'functions') {\n console.error('target option must be \"app\", \"lib\" or \"functions\"');\n process.exit(1);\n }\n\n const packageDirPath = path.resolve(relativePackageDirPath?.toString() ?? '.');\n const packageJson = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json');\n process.exit(1);\n }\n const [namespace] = getNamespaceAndName(packageJson);\n const isEsm = packageJson.type === 'module';\n\n if (argv['core-js']) {\n process.env.BUILD_TS_COREJS = '1';\n }\n if (argv.verbose) {\n process.env.BUILD_TS_VERBOSE = '1';\n }\n process.env.BUILD_TS_TARGET = target;\n\n let outputOptionsList: OutputOptions[];\n if (target === 'node' || target === 'functions') {\n packageJson.main = isEsm ? 'index.mjs' : 'index.cjs';\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', packageJson.main),\n format: isEsm ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', 'cjs', 'index.cjs'),\n format: 'commonjs',\n sourcemap: argv.sourcemap,\n },\n {\n dir: path.join(packageDirPath, 'dist', 'esm'),\n entryFileNames: '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n },\n ];\n }\n if (argv.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 let bundle: RollupBuild | undefined;\n let buildFailed = false;\n try {\n process.chdir(packageDirPath);\n const [_bundle] = await Promise.all([\n rollup({\n input: argv.input ? path.join(cwd, argv.input) : path.join(packageDirPath, path.join('src', 'index.ts')),\n plugins: createPlugins(argv, target, packageJson, namespace, cwd),\n }),\n fs.promises.rm(path.join(packageDirPath, 'dist'), { recursive: true, force: true }),\n ]);\n bundle = _bundle;\n\n await Promise.all(outputOptionsList.map((opts) => _bundle.write(opts)));\n if (target === 'functions') {\n packageJson.name += '-dist';\n delete packageJson.devDependencies;\n await fs.promises.writeFile(path.join(packageDirPath, 'dist', 'package.json'), JSON.stringify(packageJson));\n }\n } catch (error) {\n buildFailed = true;\n console.error('Filed to index due to:', error);\n }\n await bundle?.close();\n if (buildFailed) 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 = ['--no-warnings'];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'ts-node/register');\n } else {\n args.push('--loader', 'ts-node/esm');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n shell: true,\n stdio: 'inherit',\n env: { ...process.env, TS_NODE_TRANSPILE_ONLY: '1' },\n });\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 { functions, lib, node } from './commands/build/build.js';\nimport { run } from './commands/run.js';\n\nawait yargs(hideBin(process.argv))\n .command(node)\n .command(functions)\n .command(lib)\n .command(run)\n .demandCommand()\n .strict()\n .help().argv;\n"],"names":["async","readPackageJson","dirPath","packageJsonText","fs","promises","readFile","path","join","JSON","parse","builder","input","description","type","alias","default","minify","sourcemap","external","verbose","env","dotenv","loadEnvironmentVariables","argv","cwd","envVars","name","map","e","toString","undefined","process","stringify","dotenvPath","parsed","config","key","value","Object","entries","createPlugins","target","packageJson","namespace","externalDeps","item","dependencies","push","extensions","babelConfigPath","url","fileURLToPath","dirname","import","meta","plugins","replace","delimiters","preventAssignment","values","json","externals","deps","devDeps","include","exclude","RegExp","resolve","commonjs","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","node","command","describe","build","package","functions","lib","relativePackageDirPath","console","info","error","exit","packageDirPath","packageName","match","exec","getNamespaceAndName","isEsm","outputOptionsList","bundle","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET","main","file","format","dir","entryFileNames","preserveModules","length","buildFailed","chdir","_bundle","Promise","all","rollup","rm","recursive","force","opts","write","devDependencies","writeFile","close","run","module","watch","endsWith","nextDirPath","detectModuleType","args","additionalArguments","_","child_process","spawnSync","arg","shell","stdio","TS_NODE_TRANSPILE_ONLY","yargs","hideBin","demandCommand","strict","help"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/utils.ts","../src/commands/build/builder.ts","../src/commands/build/env.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["export 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","import fs from 'node:fs';\nimport path from 'node:path';\nimport url from 'node:url';\n\nimport { 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 builder = {\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: {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'e',\n },\n dotenv: {\n description: '.env files to be inlined.',\n type: 'array',\n },\n} as const;\n","import path from 'node:path';\n\nimport dotenv from 'dotenv';\nimport type { InferredOptionTypes } from 'yargs';\n\nimport type { builder } from './builder.js';\n\nexport function loadEnvironmentVariables(\n argv: InferredOptionTypes<typeof builder>,\n cwd: string\n): Record<string, string> {\n const envVars: Record<string, string> = {};\n for (const name of (argv.env ?? []).map((e) => e.toString())) {\n if (process.env[name] === undefined) continue;\n\n envVars[`process.env.${name}`] = JSON.stringify(process.env[name]);\n }\n for (const dotenvPath of argv.dotenv ?? []) {\n const parsed = dotenv.config({ path: path.join(cwd, dotenvPath.toString()) }).parsed || {};\n for (const [key, value] of Object.entries(parsed)) {\n if (value === undefined) continue;\n\n envVars[`process.env.${key}`] = JSON.stringify(value);\n }\n }\n return envVars;\n}\n","import 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 { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { externals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\nimport type { PackageJson } from 'type-fest';\nimport type { InferredOptionTypes } from 'yargs';\n\nimport { TargetDetail } from '../../types.js';\nimport { getBuildTsRootPath } from '../../utils.js';\n\nimport type { builder } from './builder.js';\nimport { loadEnvironmentVariables } from './env.js';\n\nexport function createPlugins(\n argv: InferredOptionTypes<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 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: loadEnvironmentVariables(argv, cwd),\n }),\n json(),\n externals({\n deps: true,\n devDeps: false,\n peerDeps: true,\n optDeps: true,\n include: externalDeps,\n exclude: namespace && new RegExp(`${namespace}\\\\/.+`),\n }),\n resolve({ extensions }),\n commonjs(),\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 { OutputOptions, rollup, RollupBuild } from 'rollup';\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { allTargetCategories, TargetCategory, TargetDetail } from '../../types.js';\nimport { getNamespaceAndName, readPackageJson } from '../../utils.js';\n\nimport { builder } from './builder.js';\nimport { createPlugins } from './plugin.js';\n\nexport const app: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'app [package]',\n describe: 'Build an app',\n builder,\n async handler(argv) {\n return build(argv, 'app', argv.package);\n },\n};\n\nexport const functions: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'functions [package]',\n describe: 'Build a GCP/Firebase functions app',\n builder,\n async handler(argv) {\n return build(argv, 'functions', argv.package);\n },\n};\n\nexport const lib: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'lib [package]',\n describe: 'Build a Node.js / React library',\n builder,\n async handler(argv) {\n return build(argv, 'lib', argv.package);\n },\n};\n\nexport async function build(\n argv: InferredOptionTypes<typeof builder>,\n targetCategory: TargetCategory,\n relativePackageDirPath?: unknown\n): Promise<void> {\n const cwd = process.cwd();\n\n const packageDirPath = path.resolve(relativePackageDirPath?.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 (argv.verbose) {\n console.info('Target (Category):', `${targetDetail} (${targetCategory})`);\n }\n\n const [namespace] = getNamespaceAndName(packageJson);\n const isEsm = packageJson.type === 'module';\n\n if (argv['core-js']) {\n process.env.BUILD_TS_COREJS = '1';\n }\n if (argv.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 packageJson.main = isEsm ? 'index.mjs' : 'index.cjs';\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', packageJson.main),\n format: isEsm ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', 'cjs', 'index.cjs'),\n format: 'commonjs',\n sourcemap: argv.sourcemap,\n },\n {\n dir: path.join(packageDirPath, 'dist', 'esm'),\n entryFileNames: '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n },\n ];\n }\n if (argv.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 let bundle: RollupBuild | undefined;\n let buildFailed = false;\n try {\n process.chdir(packageDirPath);\n const [_bundle] = await Promise.all([\n rollup({\n input,\n plugins: createPlugins(argv, targetDetail, packageJson, namespace, cwd),\n }),\n fs.promises.rm(path.join(packageDirPath, 'dist'), { recursive: true, force: true }),\n ]);\n bundle = _bundle;\n\n await Promise.all(outputOptionsList.map((opts) => _bundle.write(opts)));\n if (targetDetail === 'functions') {\n packageJson.name += '-dist';\n delete packageJson.devDependencies;\n await fs.promises.writeFile(path.join(packageDirPath, 'dist', 'package.json'), JSON.stringify(packageJson));\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\nfunction verifyInput(argv: InferredOptionTypes<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","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 = ['--no-warnings'];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'ts-node/register');\n } else {\n args.push('--loader', 'ts-node/esm');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n shell: true,\n stdio: 'inherit',\n env: { ...process.env, TS_NODE_TRANSPILE_ONLY: '1' },\n });\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';\n\nawait yargs(hideBin(process.argv))\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","builder","input","description","type","alias","default","minify","sourcemap","external","verbose","env","dotenv","loadEnvironmentVariables","argv","cwd","envVars","name","map","e","toString","undefined","process","stringify","dotenvPath","parsed","config","key","value","Object","entries","createPlugins","targetDetail","packageJson","namespace","externalDeps","item","dependencies","push","extensions","babelConfigPath","url","fileURLToPath","dirname","import","meta","plugins","replace","delimiters","preventAssignment","values","json","externals","deps","devDeps","peerDeps","optDeps","include","exclude","RegExp","resolve","commonjs","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","app","command","describe","build","package","functions","lib","targetCategory","relativePackageDirPath","packageDirPath","console","error","exit","existsSync","verifyInput","endsWith","detectTargetDetail","info","packageName","match","exec","getNamespaceAndName","isEsm","outputOptionsList","bundle","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","main","file","format","dir","entryFileNames","preserveModules","length","buildFailed","chdir","_bundle","Promise","all","rollup","rm","recursive","force","opts","write","devDependencies","writeFile","close","run","module","watch","nextDirPath","detectModuleType","args","additionalArguments","_","child_process","spawnSync","arg","shell","stdio","TS_NODE_TRANSPILE_ONLY","yargs","hideBin","demandCommand","strict","help"],"mappings":"0nBAAO,MAAMA,EAAsB,CAAC,MAAO,YAAa,OCMjDC,eAAeC,EAAgBC,GACpC,IACE,MAAMC,QAAwBC,EAAGC,SAASC,SAASC,EAAKC,KAAKN,EAAS,gBAAiB,QACvF,OAAOO,KAAKC,MAAMP,EAElB,CADA,MACA,CAEJ,CCbO,MAAMQ,EAAU,CACrBC,MAAO,CACLC,YAAa,iGACbC,KAAM,SACNC,MAAO,KAET,UAAW,CACTF,YAAa,sCACbC,KAAM,UACNE,SAAS,GAEXC,OAAQ,CACNJ,YAAa,0CACbC,KAAM,UACNE,SAAS,GAEXE,UAAW,CACTL,YAAa,uCACbC,KAAM,UACNE,SAAS,GAEXG,SAAU,CACRN,YAAa,oCACbC,KAAM,SAERM,QAAS,CACPP,YAAa,0CACbC,KAAM,UACNC,MAAO,KAETM,IAAK,CACHR,YAAa,uCACbC,KAAM,QACNC,MAAO,KAETO,OAAQ,CACNT,YAAa,4BACbC,KAAM,UC9BH,SAASS,EACdC,EACAC,GAEA,MAAMC,EAAkC,CAAA,EACxC,IAAK,MAAMC,KAASH,EAAKH,KAAO,IAAIO,KAAKC,GAAMA,EAAEC,kBACrBC,IAAtBC,QAAQX,IAAIM,KAEhBD,EAAS,eAAcC,KAAUlB,KAAKwB,UAAUD,QAAQX,IAAIM,KAE9D,IAAK,MAAMO,KAAcV,EAAKF,QAAU,GAAI,CAC1C,MAAMa,EAASb,EAAOc,OAAO,CAAE7B,KAAMA,EAAKC,KAAKiB,EAAKS,EAAWJ,cAAeK,QAAU,GACxF,IAAK,MAAOE,EAAKC,KAAUC,OAAOC,QAAQL,QAC1BJ,IAAVO,IAEJZ,EAAS,eAAcW,KAAS5B,KAAKwB,UAAUK,GAEnD,CACA,OAAOZ,CACT,CCJO,SAASe,EACdjB,EACAkB,EACAC,EACAC,EACAnB,GAEA,MAAMoB,EAAe,IAAKrB,EAAKL,UAAY,IAAKS,KAAKkB,GAASA,EAAKhB,aAC/Da,GAAaI,eAAe,mBAC9BF,EAAaG,KAAK,iBAEpB,MAAMC,EAAa,CAAC,OAAQ,OAAQ,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAC7EC,EAAkB3C,EAAKC,KHlBtB2C,EAAIC,cAAc7C,EAAK8C,QAAQ9C,EAAK8C,QAAQC,OAAOC,KAAKJ,OGkBP,oBAClDK,EAAoB,CACxBC,EAAQ,CACNC,WAAY,CAAC,GAAI,IACjBC,mBAAmB,EACnBC,OAAQrC,EAAyBC,EAAMC,KAEzCoC,IACAC,EAAU,CACRC,MAAM,EACNC,SAAS,EACTC,UAAU,EACVC,SAAS,EACTC,QAAStB,EACTuB,QAASxB,GAAa,IAAIyB,OAAQ,GAAEzB,YAEtC0B,EAAQ,CAAErB,eACVsB,KAwBF,MAtBqB,aAAjB7B,GAAgD,cAAjBA,EACjCc,EAAQR,KACNwB,EAAM,CACJC,WAAYvB,EACZD,aACAyB,aAAc,UACdN,QAAS,qBAIbZ,EAAQR,KACN2B,EAAG,CACDC,WAAY,QACZC,YAAa3B,KAInBM,EAAQR,KAAK8B,EAAO,CAAEX,QAAS,CAAC,WAAY,eACxC3C,EAAKP,QACPuC,EAAQR,KAAK+B,KAEfvB,EAAQR,KAAKgC,EAAQ,CAAEC,aAAa,KAC7BzB,CACT,CChEO,MAAM0B,EAAmE,CAC9EC,QAAS,gBACTC,SAAU,uBACVzE,EACAX,QAAa,MAACwB,GACL6D,EAAM7D,EAAM,MAAOA,EAAK8D,UAItBC,EAAyE,CACpFJ,QAAS,sBACTC,SAAU,6CACVzE,EACAX,QAAa,MAACwB,GACL6D,EAAM7D,EAAM,YAAaA,EAAK8D,UAI5BE,EAAmE,CAC9EL,QAAS,gBACTC,SAAU,0CACVzE,EACAX,QAAa,MAACwB,GACL6D,EAAM7D,EAAM,MAAOA,EAAK8D,UAI5BtF,eAAeqF,EACpB7D,EACAiE,EACAC,GAEA,MAAMjE,EAAMO,QAAQP,MAEdkE,EAAiBpF,EAAK+D,QAAQoB,GAAwB5D,YAAc,KACpEa,QAAoB1C,EAAgB0F,GACrChD,IACHiD,QAAQC,MAAM,iCACd7D,QAAQ8D,KAAK,IAGf,MAAMlF,EAgFR,SAAqBY,EAA2CC,EAAakE,GAC3E,GAAInE,EAAKZ,MAAO,OAAOL,EAAKC,KAAKiB,EAAKD,EAAKZ,OAE3C,IAAIA,EAAQL,EAAKC,KAAKmF,EAAgBpF,EAAKC,KAAK,MAAO,aACvD,GAAIJ,EAAG2F,WAAWnF,GAAQ,OAAOA,EAGjC,GADAA,EAAQL,EAAKC,KAAKmF,EAAgBpF,EAAKC,KAAK,MAAO,cAC/CJ,EAAG2F,WAAWnF,GAAQ,OAAOA,EAEjCgF,QAAQC,MAAM,gCACd7D,QAAQ8D,KAAK,EACf,CA3FgBE,CAAYxE,EAAMC,EAAKkE,GAC/BjD,EA4FR,SAA4B+C,EAAwB7E,GAClD,OAAQ6E,GACN,IAAK,MACH,MAAO,WAET,IAAK,YACH,MAAO,YAET,IAAK,MACH,OAAI7E,EAAMqF,SAAS,QACV,YAEF,MAET,QACEL,QAAQC,MAAM,iCAAmC9F,EAAoBS,KAAK,OAC1EwB,QAAQ8D,KAAK,GAGnB,CA/GuBI,CAAmBT,EAAgB7E,GAEpDY,EAAKJ,SACPwE,QAAQO,KAAK,qBAAuB,GAAEzD,MAAiB+C,MAGzD,MAAO7C,GJzCF,SAA6BD,GAClC,MAAMyD,EAAczD,EAAYhB,MAAMG,YAAc,GAC9CuE,EAAQ,iBAAiBC,KAAKF,IAC3BxD,CAAAA,EAAWjB,GAAQ0E,GAAS,GACrC,MAAO,CAACzD,EAAWjB,EACrB,CIoCsB4E,CAAoB5D,GAClC6D,EAA6B,WAArB7D,EAAY7B,KAW1B,IAAI2F,EAkCAC,EA3CAlF,EAAK,aACPQ,QAAQX,IAAIsF,gBAAkB,KAE5BnF,EAAKJ,UACPY,QAAQX,IAAIuF,iBAAmB,KAEjC5E,QAAQX,IAAIwF,yBAA2BpB,EACvCzD,QAAQX,IAAIyF,uBAAyBpE,EAGhB,aAAjBA,GAAgD,cAAjBA,GACjCC,EAAYoE,KAAOP,EAAQ,YAAc,YACzCC,EAAoB,CAClB,CACEO,KAAMzG,EAAKC,KAAKmF,EAAgB,OAAQhD,EAAYoE,MACpDE,OAAQT,EAAQ,SAAW,WAC3BtF,UAAWM,EAAKN,aAIpBuF,EAAoB,CAClB,CACEO,KAAMzG,EAAKC,KAAKmF,EAAgB,OAAQ,MAAO,aAC/CsB,OAAQ,WACR/F,UAAWM,EAAKN,WAElB,CACEgG,IAAK3G,EAAKC,KAAKmF,EAAgB,OAAQ,OACvCwB,eAAgB,aAChBF,OAAQ,SACRG,iBAAiB,EACjBlG,UAAWM,EAAKN,YAIlBM,EAAKJ,SACPwE,QAAQO,KAAK,iBAAkBM,GAEA,IAA7BA,EAAkBY,SACpBzB,QAAQC,MAAM,kCACd7D,QAAQ8D,KAAK,IAIf,IAAIwB,GAAc,EAClB,IACEtF,QAAQuF,MAAM5B,GACd,MAAO6B,SAAiBC,QAAQC,IAAI,CAClCC,EAAO,CACL/G,QACA4C,QAASf,EAAcjB,EAAMkB,EAAcC,EAAaC,EAAWnB,KAErErB,EAAGC,SAASuH,GAAGrH,EAAKC,KAAKmF,EAAgB,QAAS,CAAEkC,WAAW,EAAMC,OAAO,MAE9EpB,EAASc,QAEHC,QAAQC,IAAIjB,EAAkB7E,KAAKmG,GAASP,EAAQQ,MAAMD,MAC3C,cAAjBrF,IACFC,EAAYhB,MAAQ,eACbgB,EAAYsF,sBACb7H,EAAGC,SAAS6H,UAAU3H,EAAKC,KAAKmF,EAAgB,OAAQ,gBAAiBlF,KAAKwB,UAAUU,IAKlG,CAHE,MAAOkD,GACPyB,GAAc,EACd1B,QAAQC,MAAM,0BAA2BA,EAC3C,OACMa,GAAQyB,SACVb,GAAatF,QAAQ8D,KAAK,EAChC,CC5HA,MAaasC,EAAmE,CAC9EjD,QAAS,aACTC,SAAU,aACVzE,QAhBc,CACd0H,OAAQ,CACNxH,YAAa,4BACbC,KAAM,SACNC,MAAO,KAETuH,MAAO,CACLzH,YAAa,uCACbC,KAAM,UACNC,MAAO,MAQTf,cAAcwB,GACZ,MAAMwF,EAAOxF,EAAKwF,MAAMlF,YAAc,GAChCuG,QAqBVrI,eAAgCgH,EAAcqB,GAC5C,GAAe,QAAXA,GAAoBrB,EAAKf,SAAS,QACpC,MAAO,MAET,GAAe,QAAXoC,GAAoBrB,EAAKf,SAAS,QACpC,MAAO,MAGT,IAAI/F,EAAUK,EAAK8C,QAAQ2D,GAC3B,OAAS,CACP,MAAMrE,QAAoB1C,EAAgBC,GAC1C,GAAIyC,EAAa,CACf,GAAyB,WAArBA,EAAY7B,KACd,MAAO,MAET,KACF,CAEA,MAAMyH,EAAchI,EAAK8C,QAAQnD,GACjC,IAAKqI,GAAeA,IAAgBrI,EAClC,MAEFA,EAAUqI,CACZ,CACA,MAAO,KACT,CA9CyBC,CAAiBxB,EAAMxF,EAAK6G,QAE3CI,EAAO,CAAC,iBACVjH,EAAK8G,OACPG,EAAKzF,KAAK,WAEG,QAAXqF,EACFI,EAAKzF,KAAK,YAAa,oBAEvByF,EAAKzF,KAAK,WAAY,eAExByF,EAAKzF,KAAKgE,GACV,UAAY0B,GAAuBlH,EAAKmH,EACxCC,EAAcC,UAAU,OAAQ,IAAIJ,KAASC,EAAoB9G,KAAKkH,GAAQA,EAAIhH,cAAc,CAC9FiH,OAAO,EACPC,MAAO,UACP3H,IAAK,IAAKW,QAAQX,IAAK4H,uBAAwB,MAEnD,SCtCIC,EAAMC,EAAQnH,QAAQR,OACzB2D,QAAQD,GACRC,QAAQI,GACRJ,QAAQK,GACRL,QAAQiD,GACRgB,gBACAC,SACAC,OAAO9H"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "build-ts",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"repository": "github:WillBooster/build-ts",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "WillBooster Inc.",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"babel.*"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "yarn start
|
|
15
|
+
"build": "yarn start app",
|
|
16
16
|
"cleanup": "yarn format && yarn lint-fix",
|
|
17
17
|
"format": "sort-package-json && yarn prettify",
|
|
18
18
|
"_postinstall": "husky install",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"prettify": "prettier --cache --color --write \"**/{.*/,}*.{cjs,css,cts,htm,html,js,json,json5,jsx,md,mjs,mts,scss,ts,tsx,vue,yaml,yml}\" \"!**/test-fixtures/**\"",
|
|
24
24
|
"start": "node --no-warnings --loader ts-node/esm src/index.ts",
|
|
25
25
|
"start-prod": "yarn build && yarn build-ts",
|
|
26
|
+
"test": "vitest",
|
|
26
27
|
"typecheck": "tsc --noEmit --Pretty"
|
|
27
28
|
},
|
|
28
29
|
"prettier": "@willbooster/prettier-config",
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"@babel/plugin-proposal-numeric-separator": "7.18.6",
|
|
33
34
|
"@babel/plugin-transform-runtime": "7.19.6",
|
|
34
35
|
"@babel/preset-env": "7.20.2",
|
|
36
|
+
"@babel/preset-react": "7.18.6",
|
|
35
37
|
"@babel/preset-typescript": "7.18.6",
|
|
36
38
|
"@rollup/plugin-babel": "6.0.3",
|
|
37
39
|
"@rollup/plugin-commonjs": "24.0.1",
|
|
@@ -66,6 +68,7 @@
|
|
|
66
68
|
"@willbooster/eslint-config-ts": "10.0.8",
|
|
67
69
|
"@willbooster/prettier-config": "9.1.1",
|
|
68
70
|
"@willbooster/renovate-config": "9.5.0",
|
|
71
|
+
"@willbooster/shared-lib": "1.8.1",
|
|
69
72
|
"conventional-changelog-conventionalcommits": "5.0.0",
|
|
70
73
|
"eslint": "8.32.0",
|
|
71
74
|
"eslint-config-prettier": "8.6.0",
|
|
@@ -82,7 +85,8 @@
|
|
|
82
85
|
"semantic-release": "20.1.0",
|
|
83
86
|
"sort-package-json": "2.2.0",
|
|
84
87
|
"type-fest": "3.5.3",
|
|
85
|
-
"typescript": "4.9.4"
|
|
88
|
+
"typescript": "4.9.4",
|
|
89
|
+
"vitest": "0.28.3"
|
|
86
90
|
},
|
|
87
91
|
"packageManager": "yarn@4.0.0-rc.36",
|
|
88
92
|
"engines": {
|