@visulima/packem 2.0.0-alpha.34 → 2.0.0-alpha.36

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.
@@ -0,0 +1,42 @@
1
+ import type { Cli } from "@visulima/cerebro";
2
+ /**
3
+ * Creates and registers the migrate command with the CLI.
4
+ * Handles migration from other bundlers (tsup, unbuild, bunchee, etc.) to packem.
5
+ * @param cli CLI instance to register the command with
6
+ * @example
7
+ * ```typescript
8
+ * // From command line:
9
+ * // Migrate from tsup to packem:
10
+ * // packem migrate
11
+ *
12
+ * // Dry run to preview changes:
13
+ * // packem migrate --dry-run
14
+ *
15
+ * // Specify custom directory:
16
+ * // packem migrate --cwd /path/to/project
17
+ * ```
18
+ * @internal
19
+ */
20
+ declare const createMigrateCommand: (cli: Cli) => void;
21
+ /**
22
+ * Migrates a project from other bundlers to packem.
23
+ * @param options Migration options
24
+ * @param options.cwd Working directory to migrate
25
+ * @param options.dryRun Whether to perform a dry run
26
+ * @param options.logger Logger instance for output
27
+ * @returns Promise that resolves when migration is complete
28
+ * @example
29
+ * ```typescript
30
+ * await migrate({
31
+ * cwd: "./my-project",
32
+ * dryRun: false,
33
+ * logger: myLogger
34
+ * });
35
+ * ```
36
+ */
37
+ export declare function migrate({ cwd, dryRun, logger, }: {
38
+ cwd?: string;
39
+ dryRun?: boolean;
40
+ logger: any;
41
+ }): Promise<void>;
42
+ export default createMigrateCommand;
package/dist/cli/index.js CHANGED
@@ -1,55 +1,59 @@
1
1
  #!/usr/bin/env node
2
- var ae=Object.defineProperty;var k=(t,s)=>ae(t,"name",{value:s,configurable:!0});import re from"@visulima/cerebro";import{SimpleReporter as le}from"@visulima/pail/reporter";import{cwd as U,exit as ce}from"node:process";import{installPackage as q}from"@antfu/install-pkg";import{spinner as R,select as S,multiselect as Q,confirm as w,intro as pe,log as W,cancel as de,outro as ue}from"@clack/prompts";import{isAccessible as me,readFile as fe,writeFile as ye,isAccessibleSync as j,collectSync as ge,writeJsonSync as be,writeFileSync as ve}from"@visulima/fs";import{join as C,resolve as E,extname as ee,toNamespacedPath as we}from"@visulima/path";import he from"magic-string";import{t as O,E as G,e as $e,N as te,_ as ke,c as Se}from"../packem_shared/index-CUp9WuCG.js";import{defu as xe}from"defu";import{createJiti as je}from"jiti";import{cyan as Ce,bold as J,gray as De}from"@visulima/colorize";import{e as Ee,i as _,c as Pe,x as Ie}from"../packem_shared/index-Dt7qUoo-.js";import Me from"node:fs/promises";import X from"node:path/posix";import{parsePackageJson as Te}from"@visulima/package/package-json";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
2
+ var be=Object.defineProperty;var b=(t,s)=>be(t,"name",{value:s,configurable:!0});import{createCerebro as we}from"@visulima/cerebro";import ve from"@visulima/cerebro/logger/pail";import{SimpleReporter as he}from"@visulima/pail/reporter/simple";import P,{cwd as W,exit as ke}from"node:process";import{installPackage as q}from"@antfu/install-pkg";import{spinner as U,select as j,multiselect as ie,confirm as h,intro as $e,log as X,cancel as je,outro as xe}from"@clack/prompts";import{isAccessible as Se,readFile as Ce,writeFile as De,isAccessibleSync as x,collectSync as Y,writeJsonSync as Ee,writeFileSync as Me}from"@visulima/fs";import{join as C,resolve as E,extname as ne,toNamespacedPath as Pe}from"@visulima/path";import Ie from"magic-string";import{t as K,E as G,e as Oe,N as re,_ as Te,c as Ne}from"../packem_shared/index-CUp9WuCG.js";import{defu as Be}from"defu";import{createJiti as Le}from"jiti";import{cyan as Ae,bold as V,gray as Ke}from"@visulima/colorize";import{e as Fe,i as H,c as Re,x as Je}from"../packem_shared/index-Bh6qb5ev.js";import Ve,{readFile as qe,writeFile as Ue}from"node:fs/promises";import Z from"node:path/posix";import{parsePackageJson as Ge}from"@visulima/package/package-json";import{existsSync as ae}from"node:fs";import{createInterface as ze}from"node:readline/promises";import __cjs_mod__ from "node:module"; // -- packem CommonJS require shim --
3
3
  const require = __cjs_mod__.createRequire(import.meta.url);
4
- var Le="@visulima/packem",Be="2.0.0-alpha.33",Oe=Object.defineProperty,Ne=k((t,s)=>Oe(t,"name",{value:s,configurable:!0}),"t$2");const se=Ne(async(t,s="")=>{let e=s;if(!e){const r=["packem.config.js","packem.config.mjs","packem.config.cjs","packem.config.ts","packem.config.cts","packem.config.mts"];for(const a of r)if(await me(C(t,a))){e=`./${a}`;break}}if(!/\.(?:js|mjs|cjs|ts|cts|mts)$/.test(e))throw new Error("Invalid packem config file extension. Only .js, .mjs, .cjs, .ts, .cts and .mts extensions are allowed.");return e},"findPackemFile"),oe={less:["less"],lightningcss:["lightningcss"],"node-sass":["node-sass"],postcss:["postcss","postcss-load-config","postcss-modules-extract-imports","postcss-modules-local-by-default","postcss-modules-scope","postcss-modules-values","postcss-value-parser","@csstools/css-parser-algorithms","@csstools/css-tokenizer","@csstools/postcss-slow-plugins","icss-utils","@visulima/css-style-inject"],sass:["sass"],"sass-embedded":["sass-embedded"],stylus:["stylus"],tailwindcss:["@tailwindcss/node","@tailwindcss/oxide","tailwindcss"]};var Ke=Object.defineProperty,H=k((t,s)=>Ke(t,"name",{value:s,configurable:!0}),"g");const Ae=["typedoc","typedoc-plugin-markdown","typedoc-plugin-rename-defaults"],Ve=H(t=>{t.addCommand({argument:{description:"Add a packem feature to your project",name:"feature",required:!0},description:"Add a optional packem feature to your project",execute:H(async({argument:s,logger:e,options:r})=>{const a=R(),o=E(U(),r.dir??".");let p;try{p=await se(o,r.config)}catch{e.error("Could not find a packem config file, please run `packem init` first.");return}const u=await fe(p,{buffer:!1});let y="cjs";u.includes("import")&&(y="esm");const i=new he(u),m=" transformer,";let n=" transformer";if(u.includes(" transformer,")&&(n=" transformer,"),s.includes("typedoc")){if(u.includes("typedoc: typedocBuilder")||u.includes("@visulima/packem/builder/typedoc")){e.warn("Typedoc has already been added to the packem config.");return}y==="cjs"?i.prepend(`const typedocBuilder = require("@visulima/packem/builder/typedoc");
5
- `):i.prepend(`import typedocBuilder from "@visulima/packem/builder/typedoc";
6
- `),u.includes("builder: {")?i.replace("builder: {",`builder: {
4
+ var We="@visulima/packem",ce="2.0.0-alpha.35";const Q={version:ce};var _e=Object.defineProperty,Xe=b((t,s)=>_e(t,"name",{value:s,configurable:!0}),"t$1");const le=Xe(async(t,s="")=>{let e=s;if(!e){const i=["packem.config.js","packem.config.mjs","packem.config.cjs","packem.config.ts","packem.config.cts","packem.config.mts"];for(const o of i)if(await Se(C(t,o))){e=`./${o}`;break}}if(!/\.(?:js|mjs|cjs|ts|cts|mts)$/.test(e))throw new Error("Invalid packem config file extension. Only .js, .mjs, .cjs, .ts, .cts and .mts extensions are allowed.");return e},"findPackemFile"),pe={less:["less"],lightningcss:["lightningcss"],"node-sass":["node-sass"],postcss:["postcss","postcss-load-config","postcss-modules-extract-imports","postcss-modules-local-by-default","postcss-modules-scope","postcss-modules-values","postcss-value-parser","@csstools/css-parser-algorithms","@csstools/css-tokenizer","@csstools/postcss-slow-plugins","icss-utils","@visulima/css-style-inject"],sass:["sass"],"sass-embedded":["sass-embedded"],stylus:["stylus"],tailwindcss:["@tailwindcss/node","@tailwindcss/oxide","tailwindcss"]};var Ye=Object.defineProperty,ee=b((t,s)=>Ye(t,"name",{value:s,configurable:!0}),"g");const He=["typedoc","typedoc-plugin-markdown","typedoc-plugin-rename-defaults"],Ze=ee(t=>{t.addCommand({argument:{description:"Add a packem feature to your project",name:"feature",required:!0},description:"Add a optional packem feature to your project",execute:ee(async({argument:s,logger:e,options:i})=>{const o=U(),n=E(W(),i.dir??".");let l;try{l=await le(n,i.config)}catch{e.error("Could not find a packem config file, please run `packem init` first.");return}const r=await Ce(l,{buffer:!1});let u="cjs";r.includes("import")&&(u="esm");const a=new Ie(r),m=" transformer,";let c=" transformer";if(r.includes(" transformer,")&&(c=" transformer,"),s.includes("typedoc")){if(r.includes("typedoc: typedocBuilder")||r.includes("@visulima/packem/builder/typedoc")){e.warn("Typedoc has already been added to the packem config.");return}u==="cjs"?a.prepend(`const typedocBuilder = require("@visulima/packem/builder/typedoc");
5
+ `):a.prepend(`import typedocBuilder from "@visulima/packem/builder/typedoc";
6
+ `),r.includes("builder: {")?a.replace("builder: {",`builder: {
7
7
  typedoc: typedocBuilder,
8
- `):i.replace(n,`${m}
8
+ `):a.replace(c,`${m}
9
9
  builder: {
10
10
  typedoc: typedocBuilder,
11
- },`),e.info("Adding typedoc dependencies..."),a.start("Installing packages"),await q(Ae,{cwd:o,dev:!0,silent:!0}),a.stop("Installed packages"),e.success(`
12
- Typedoc added!`)}if(s.includes("css")){if(u.includes("css: {")||u.includes("@visulima/packem/css")){e.warn("Css loaders have already been added to the packem config.");return}const c=[],g=await S({message:"Pick a css loader",options:[{label:"PostCSS",value:"postcss"},{hint:"experimental",label:"Lightning CSS",value:"lightningcss"},{hint:"Tailwind Css Oxide",label:"Tailwind CSS",value:"tailwindcss"}]});if(c.push(g),g!=="tailwindcss"){let f=await Q({message:"Pick extra loaders",options:[{label:"Sass",value:"sass"},{label:"Stylus",value:"stylus"},{label:"Less",value:"less"}],required:!1});if(f.includes("sass")){const h=await S({message:"Pick a sass loader",options:[{hint:"recommended",label:"Sass embedded",value:"sass-embedded"},{label:"Sass",value:"sass"},{hint:"legacy",label:"Node Sass",value:"node-sass"}]});h!=="sass"&&(f=f.filter(D=>D!=="sass"),f.push(h))}c.push(...f)}const b=[];for(const f of c)b.push(...oe[f]);g!=="tailwindcss"&&c.push("sourceMap");for(let f of c)(f==="sass-embedded"||f==="node-sass")&&(f="sass"),y==="cjs"?i.prepend(`const ${f}Loader = require("@visulima/packem/css/loader/${f.toLowerCase()}");
13
- `):i.prepend(`import ${f}Loader from "@visulima/packem/css/loader/${f.toLowerCase()}";
14
- `);const d=await w({initialValue:!1,message:"Do you want to minify your css?"});let l;d&&(l=await S({message:"Pick a css minifier",options:[{label:"CSSNano",value:"cssnano"},{label:"Lightning CSS",value:"lightningcss"}]}),c.includes("lightningcss")||b.push(l),y==="cjs"?i.prepend(`const ${l}Minifier = require("@visulima/packem/css/minifier/${l.toLowerCase()}");
15
- `):i.prepend(`import ${l}Minifier from "@visulima/packem/css/minifier/${l.toLowerCase()}";
16
- `));const v=c.map(f=>((f==="sass-embedded"||f==="node-sass")&&(f="sass"),`${f}Loader`)).join(", ");u.includes("rollup: {")?i.replace("rollup: {",`rollup: {
17
- css: {${l?`
18
- minifier: ${l}Minifier,`:""}
11
+ },`),e.info("Adding typedoc dependencies..."),o.start("Installing packages"),await q(He,{cwd:n,dev:!0,silent:!0}),o.stop("Installed packages"),e.success(`
12
+ Typedoc added!`)}if(s.includes("css")){if(r.includes("css: {")||r.includes("@visulima/packem/css")){e.warn("Css loaders have already been added to the packem config.");return}const d=[],y=await j({message:"Pick a css loader",options:[{label:"PostCSS",value:"postcss"},{hint:"experimental",label:"Lightning CSS",value:"lightningcss"},{hint:"Tailwind Css Oxide",label:"Tailwind CSS",value:"tailwindcss"}]});if(d.push(y),y!=="tailwindcss"){let g=await ie({message:"Pick extra loaders",options:[{label:"Sass",value:"sass"},{label:"Stylus",value:"stylus"},{label:"Less",value:"less"}],required:!1});if(g.includes("sass")){const k=await j({message:"Pick a sass loader",options:[{hint:"recommended",label:"Sass embedded",value:"sass-embedded"},{label:"Sass",value:"sass"},{hint:"legacy",label:"Node Sass",value:"node-sass"}]});k!=="sass"&&(g=g.filter(D=>D!=="sass"),g.push(k))}d.push(...g)}const w=[];for(const g of d)w.push(...pe[g]);y!=="tailwindcss"&&d.push("sourceMap");for(let g of d)(g==="sass-embedded"||g==="node-sass")&&(g="sass"),u==="cjs"?a.prepend(`const ${g}Loader = require("@visulima/packem/css/loader/${g.toLowerCase()}");
13
+ `):a.prepend(`import ${g}Loader from "@visulima/packem/css/loader/${g.toLowerCase()}";
14
+ `);const f=await h({initialValue:!1,message:"Do you want to minify your css?"});let p;f&&(p=await j({message:"Pick a css minifier",options:[{label:"CSSNano",value:"cssnano"},{label:"Lightning CSS",value:"lightningcss"}]}),d.includes("lightningcss")||w.push(p),u==="cjs"?a.prepend(`const ${p}Minifier = require("@visulima/packem/css/minifier/${p.toLowerCase()}");
15
+ `):a.prepend(`import ${p}Minifier from "@visulima/packem/css/minifier/${p.toLowerCase()}";
16
+ `));const v=d.map(g=>((g==="sass-embedded"||g==="node-sass")&&(g="sass"),`${g}Loader`)).join(", ");r.includes("rollup: {")?a.replace("rollup: {",`rollup: {
17
+ css: {${p?`
18
+ minifier: ${p}Minifier,`:""}
19
19
  loaders: [${v}],
20
20
  },
21
- `):i.replace(n,`${m}
21
+ `):a.replace(c,`${m}
22
22
  rollup: {
23
- css: {${l?`
24
- minifier: ${l}Minifier,`:""}
23
+ css: {${p?`
24
+ minifier: ${p}Minifier,`:""}
25
25
  loaders: [${v}],
26
26
  },
27
- },`),a.start("Installing packages"),await q(b,{cwd:o,dev:!0,silent:!0}),a.stop("Installed packages"),e.success(`
28
- CSS loaders added!`)}await ye(p,i.toString(),{overwrite:!0})},"execute"),name:"add",options:[{defaultValue:".",description:"The directory to build",name:"dir",type:String},{description:"Use a custom config file",name:"config",type:String}]})},"createAddCommand");var Je=Object.defineProperty,qe=k((t,s)=>Je(t,"name",{value:s,configurable:!0}),"e$1");const Re=qe(async(t,s,e,r,a)=>{const o=await se(s,a);let p=await t.import(o,{default:!0,try:!0})||{};return typeof p=="function"&&(p=await p(e,r)),{config:p,path:o}},"loadPackemConfig");var Ge=Object.defineProperty,x=k((t,s)=>Ge(t,"name",{value:s,configurable:!0}),"u$1");const F=new Map,Fe=/\.[^./]+$/,Ue=x(async t=>{try{return await Me.readdir(t,{withFileTypes:!0})}catch(s){const{code:e}=s;if(e==="ENOENT")return[];throw s}},"safeReaddir"),ie=x(async(t,s)=>{const e=await Ue(t);return(await Promise.all(e.map(async r=>{const a=X.join(t,r.name);return r.isDirectory()?ie(a,s):r.isFile()?X.relative(s,a):[]}))).flat()},"getDirectoryFilesRecursive"),ze=x(async t=>{let s=F.get(t);return s||(s=ie(t,t),F.set(t,s)),s},"getDirectoryFiles"),We=x((t,s)=>{const e=t.replace(Fe,"");if(s==="*"){const p=e.split("/");return p.length>0?[p[0]]:null}const r=s.replaceAll(/[.+?^${}()|[\]\\]/g,String.raw`\$&`).replaceAll("*","(.*)"),a=new RegExp(`^${r}$`),o=e.match(a);return o?o.slice(1):null},"matchWildcardPattern"),_e=x((t,s)=>{let e=t;for(const r of s)e=e.replace("*",r);return e},"substituteWildcards"),Xe=x((t,s)=>t.key==="exports"&&t.subKey===O?O:t.key==="exports"&&t.subKey===G?G:s,"getEnvironment"),B=x((t,s,e,r,a,o,p)=>{const u=Xe(a,o.environment);let y=o.options.runtime;for(const n of $e)if(a.file.includes(`.${n}.`)||a.subKey===n){y=n;break}let i=t.find(n=>n.input===s&&n.environment===u&&n.runtime===y);i===void 0?i=t[t.push({environment:u,exportKey:new Set([a.exportKey].filter(Boolean)),input:s,runtime:y})-1]:i.exportKey&&a.exportKey&&i.exportKey.add(a.exportKey),p&&(i.isGlob=!0),e&&(i.outDir=r),a.isExecutable?(i.executable=!0,i.declaration=!1,a.type==="cjs"?i.cjs=!0:a.type==="esm"&&(i.esm=!0)):(/\.d\.[mc]?ts$/.test(a.file)&&o.options.declaration!==!1&&(i.declaration=o.options.declaration),a.type==="cjs"?i.cjs=!0:a.type==="esm"&&(i.esm=!0));const m=a.file.replace(ee(a.file),"").replace(new RegExp(`^./${o.options.outDir.replace(/^\.\//,"")}/`),"");te.has(a.subKey)&&!s.includes(m)&&(i.fileAlias=m)},"createOrUpdateEntry");let Y=!1;const Z=x(t=>{if(t.pkg?.dependencies?.typescript===void 0&&t.pkg?.devDependencies?.typescript===void 0)throw new Error("You tried to use a `.ts`, `.cts` or `.mts` file but `typescript` was not found in your package.json.")},"validateIfTypescriptIsInstalled"),He=x(async(t,s,e)=>{const r=t.types||t.typings;F.clear();const a=(e.options.outputExtensionMap?.cjs??"cjs").replaceAll(".",String.raw`\.`),o=(e.options.outputExtensionMap?.esm??"mjs").replaceAll(".",String.raw`\.`),p=[];s.sort((n,c)=>n.split("/").length-c.split("/").length);const u=t.type==="module"?"esm":"cjs";u==="esm"&&(e.options.emitESM=!0),u==="cjs"&&(e.options.emitCJS=!0);const y=e.options.emitCJS&&e.options.emitESM;e.options.declaration===void 0&&(e.options.declaration=y?"compatible":"node16");const i=Ee(t.exports,u,e.options.declaration,[],e.options.ignoreExportKeys).filter(n=>!n.ignored);if(t.bin){const n=(typeof t.bin=="string"?[t.bin]:Object.values(t.bin)).filter(Boolean);for(const c of n){const g=_(c);if(g&&g!==u)throw new Error(`Exported file "${c}" has an extension that does not match the package.json type "${t.type??"commonjs"}".`);i.push({file:c,isExecutable:!0,key:"bin",type:g??u})}}t.main&&i.push({file:t.main,key:"main",type:_(t.main)??u}),t.module&&i.push({file:t.module,key:"module",type:"esm"}),r&&(Z(e),(e.options.declaration===void 0||e.options.declaration==="node16")&&y&&(e.options.declaration="compatible"),i.push({file:t.types??t.typings,key:"types"}));const m=[];for await(const n of i){const c=ee(n.file);if(c!==""&&!ke.includes(c))continue;if(e.options.emitCJS===void 0&&n.type==="cjs"&&(e.options.emitCJS=!0),e.options.emitESM===void 0&&n.type==="esm"&&(e.options.emitESM=!0),e.options.declaration===void 0||e.options.declaration==="node16"){const $=e.options.emitCJS&&e.options.emitESM;e.options.declaration=$?"compatible":"node16"}const g=n.file.replace(new RegExp(String.raw`(?:\*[^/\\]|\.d\.[mc]?ts|\.\w+|${[`\\.${a}`,`\\.${o}`].join("|")})$`),""),b=g.endsWith("/");if(b&&["./","/"].includes(g))continue;const d=g.replace(new RegExp(`(./)?${e.options.outDir}`),e.options.sourceDir).replace("./",""),l="(?<=/|$)",v=b?"":String.raw`(\.d\.[cm]?ts|(\.[cm]?[tj]sx?)|${[`\\.${a}`,`\\.${o}`].join("|")})$`;if((n.file.includes("/*")||g.includes("*"))&&n.key==="exports"){Y||(e.logger.debug("Private subfolders are not supported, if you need this feature please open an issue on GitHub."),Y=!0);let $;n.exportKey?$=n.exportKey.startsWith("./")?n.exportKey.slice(2):n.exportKey:$=(n.file.startsWith("./")?n.file.slice(2):n.file).replace(/^dist\//,"");const M=n.file,K=e.options.sourceDir.replace(/^\.\//,""),z=E(e.options.rootDir,K),A=[],ne=await ze(z);for(const T of ne){const L=We(T,$);if(L){const V=_e(M,L);A.push({input:E(z,T),output:V})}}if(A.length===0){p.push(`Could not find entrypoints matching pattern \`${$}\` for output \`${M}\``);continue}for(const{input:T,output:L}of A){const V={...n,file:L};B(m,T,b,g,V,e,!0)}continue}const f=new RegExp(l+d+v);let h=s.find($=>f.test($));if(te.has(n.subKey)&&h===void 0){const $=d.replace(/^(.+?)\.[^.]*$/,"$1"),M=new RegExp(l+$+v);h=s.find(K=>M.test(K))}if(h===void 0){j(E(e.options.rootDir,n.file))||p.push(`Could not find entrypoint for \`${n.file}\``);continue}j(h)&&/\.[cm]?tsx?$/.test(h)&&Z(e);const D=we(h.replace(Se,""));j(`${D}.cts`)&&j(`${D}.mts`)?(B(m,`${D}.cts`,b,g,{...n,type:"cjs"},e,!1),B(m,`${D}.mts`,b,g,{...n,type:"esm"},e,!1)):B(m,h,b,g,n,e,!1)}return{entries:m,warnings:p}},"inferEntries");var Ye=Object.defineProperty,Ze=k((t,s)=>Ye(t,"name",{value:s,configurable:!0}),"o");const Qe=Ze((t,s)=>{const{publishConfig:e}=t;return e&&(e.bin&&(typeof e.bin=="object"||typeof e.bin=="string")&&(t.bin=e.bin),e.type&&typeof e.type=="string"&&e.type!==""&&(t.type=e.type),e.main&&typeof e.main=="string"&&e.main!==""&&(t.main=e.main),e.module&&typeof e.module=="string"&&e.module!==""&&(t.module=e.module),s===void 0&&e.types&&typeof e.types=="string"&&e.types!==""?t.types=e.types:s===void 0&&e.typings&&typeof e.typings=="string"&&e.typings!==""&&(t.typings=e.typings),e.exports&&typeof e.exports=="object"&&(t.exports=e.exports)),t},"overwriteWithPublishConfig");var et=Object.defineProperty,tt=k((t,s)=>et(t,"name",{value:s,configurable:!0}),"t$1");const st={hooks:{"build:prepare":tt(async function(t){if(t.options.entries.length>0)return;const s=C(t.options.rootDir,t.options.sourceDir);if(!j(s))throw new Error("No 'src' directory found. Please provide entries manually.");const e=ge(s,{extensions:[],includeDirs:!1,includeSymlinks:!1,skip:[/.*\/node_modules\/.*/,/.*\/dist\/.*/]});if(e.length===0)throw new Error("No source files found in 'src' directory. Please provide entries manually.");let r={...t.pkg};r.publishConfig&&(t.logger.info(`Using publishConfig found in package.json, to override the default key-value pairs of "${Object.keys(r.publishConfig).join(", ")}".`),t.logger.debug(r.publishConfig),r=Qe(r,t.options.declaration));const a=await He(r,e,t);for(const o of a.warnings)Pe(t,o);if(t.options.entries.push(...a.entries),t.options.entries.length===0)throw new Error("No entries detected. Please provide entries manually.");t.logger.info("Automatically detected entries:",Ce(t.options.entries.map(o=>o.fileAlias?`${J(o.fileAlias)} => ${J(o.input.replace(`${t.options.rootDir}/`,"").replace(/\/$/,"/*"))}`:J(o.input.replace(`${t.options.rootDir}/`,"").replace(/\/$/,"/*"))).join(", ")),De([t.options.emitESM&&"esm",t.options.emitCJS&&"cjs",t.options.declaration&&"dts"].filter(Boolean).map(o=>`[${o}]`).join(" ")))},"build:prepare")}};var ot=Object.defineProperty,it=k((t,s)=>ot(t,"name",{value:s,configurable:!0}),"t");const nt=it(async(t,s)=>{if(t==="auto")t=st;else{if(t==="none")return{};typeof t=="string"&&(t=await s.import(t)||{})}return typeof t=="function"&&(t=t()),t},"loadPreset");var at=Object.defineProperty,P=k((t,s)=>at(t,"name",{value:s,configurable:!0}),"r");const rt=P(t=>{t.addCommand({description:"Demonstrate options required",execute:P(async({logger:s,options:e})=>{let r="build";e.watch?r="watch":e.jit&&(r="jit");const a={};let o;if(e.env)for(const c of e.env)c.key==="NODE_ENV"?o=c.value:a[`process.env.${c.key}`]=JSON.stringify(c.value);o===void 0&&(e.production?o=O:e.development&&(o=G));const p=[];if(e.external)for(const c of e.external)p.push(c.split(","));const u=E(U(),e.dir??"."),y=je(u,{debug:e.debug}),{config:i,path:m}=await Re(y,u,o,r,e.config??void 0);s.debug("Using packem config found at",m);const n=await nt(i.preset??"auto",y);e.minify&&e.sourcemap===void 0&&(e.sourcemap=!0);try{await Ie(u,r,o,s,e.debug,xe(i,n,{analyze:e.analyze,cjsInterop:e.cjsInterop,clean:e.clean,dtsOnly:e.dtsOnly,externals:p,killSignal:e.killSignal,minify:e.minify===void 0?o===O:e.minify,onSuccess:e.onSuccess,rollup:{esbuild:{target:e.target},license:{path:e.license},metafile:e.metafile,replace:{values:a},resolveExternals:e.noExternal?{builtins:!1,deps:!1,devDeps:!1,optDeps:!1,peerDeps:!1}:{}},runtime:e.runtime,sourcemap:e.metafile||e.analyze||e.sourcemap,unbundle:e.unbundle,validation:e.validation===!1?!1:{},...e.typedoc?{typedoc:{format:"html"}}:{}}),e.tsconfig??void 0)}catch(c){s.error(c),ce(1)}},"execute"),name:"build",options:[{defaultValue:".",description:"The directory to build",name:"dir",type:String},{alias:"t",description:"Environments to support. `target` in tsconfig.json is automatically added. Defaults to the current Node.js version.",name:"target"},{description:"Use a custom config file",name:"config",type:String},{description:"Path to the tsconfig.json file",name:"tsconfig",type:String},{description:"Minify the output",name:"minify",type:Boolean},{description:"Generate sourcemaps (experimental)",name:"sourcemap",type:Boolean},{conflicts:"jit",description:"Watch for changes",name:"watch",type:Boolean},{conflicts:"watch",description:"Stub the package for JIT compilation",name:"jit",type:Boolean},{description:"Compile-time environment variables (eg. --env.NODE_ENV=production)",multiple:!0,name:"env",type:P(s=>{const[e,r]=s.split("=");return{key:e,value:r}},"type")},{defaultValue:!1,description:"Generate meta file (experimental)",name:"metafile",type:Boolean},{description:"Path to the license file",name:"license",type:String},{conflicts:"watch",description:"Visualize and analyze the bundle",name:"analyze",type:Boolean},{description:"CJS interop mode, can export default and named export, (experimental).",name:"cjsInterop",type:Boolean},{conflicts:"development",description:"Run code in production environment",name:"production",type:Boolean},{conflicts:"production",description:"Run code in development environment",name:"development",type:Boolean},{description:"Do not clean the dist directory before building",name:"no-clean",type:Boolean},{description:"Only generate .d.ts files",name:"dts-only",type:Boolean},{description:"Disable the output validation",name:"no-validation",type:Boolean},{description:"Disable the cache",name:"no-cache",type:Boolean},{description:"Generate type documentation",name:"typedoc",type:Boolean},{description:"Execute command after successful build, specially useful for watch mode",name:"onSuccess",type:String},{description:'Signal to kill child process, "SIGTERM" or "SIGKILL"',name:"killSignal",type:P(s=>{if(s==="SIGTERM"||s==="SIGKILL")return s;throw new Error("Invalid kill signal. Use 'SIGTERM' or 'SIGKILL'.")},"type")},{description:"Specify an external dependency, separate by comma (eg. --external lodash,react,react-dom)",multiple:!0,name:"external",typeLabel:"string[]"},{description:"do not bundle external dependencies",name:"no-external",type:Boolean},{description:"Specify the build runtime (nodejs, browser).",name:"runtime",type:P(s=>{if(s==="node"||s==="browser")return s;throw new Error("Invalid runtime. Use 'node' or 'browser'.")},"type")},{description:"Enable unbundle mode to preserve source file structure instead of bundling into a single file",name:"unbundle",type:Boolean}]})},"createBuildCommand");var lt=Object.defineProperty,I=k((t,s)=>lt(t,"name",{value:s,configurable:!0}),"f");const ct=I(t=>{t.addCommand({description:"Initialize packem configuration",execute:I(async({logger:s,options:e})=>{if(pe("Welcome to packem setup"),j(C(e.dir,"packem.config.mjs"))){s.info("Packem project already initialized, you can use `packem build` to build your project");return}const r=E(U(),e.dir??"."),a=C(r,"package.json");if(!j(a))throw new Error("No package.json found in the directory");const o=await Te(a,{resolveCatalogs:!0}),p=[];o.dependencies&&p.push(...Object.keys(o.dependencies)),o.devDependencies&&p.push(...Object.keys(o.devDependencies));const u=!!(o.devDependencies?.typescript??o.dependencies?.typescript),y=[];if(e.typescript===void 0&&!u?(e.typescript=await w({message:"Do you want to install TypeScript?"}),e.typescript&&y.push("typescript@latest")):W.message(`TypeScript version ${o.devDependencies?.typescript??o.dependencies?.typescript} is already installed`),!j(C(r,"tsconfig.json"))){const d=await w({message:"Do you want to use generate a tsconfig.json?"}),l=await w({message:"Do you want to run your code in the DOM?"});if(d){const v=R();v.start("Generating tsconfig.json"),be(C(r,"tsconfig.json"),{compilerOptions:{esModuleInterop:!0,skipLibCheck:!0,target:"es2022",allowJs:!0,resolveJsonModule:!0,moduleDetection:"force",isolatedModules:!0,verbatimModuleSyntax:!0,strict:!0,noUncheckedIndexedAccess:!0,noImplicitOverride:!0,module:"NodeNext",outDir:"dist",sourceMap:!0,declaration:!0,lib:l?["es2022","dom","dom.iterable"]:["es2022"]}}),v.stop("")}}if(e.runtime===void 0&&(e.runtime=await S({message:"Pick a build runtime",options:[{label:"Node",value:"node"},{label:"Browser",value:"browser"}]})),p.includes("esbuild")?e.transformer="esbuild":p.includes("@swc/core")?e.transformer="swc":p.includes("sucrase")&&(e.transformer="sucrase"),e.transformer===void 0?(e.transformer=await S({message:"Pick a transformer",options:[{label:"esbuild",value:"esbuild"},{label:"swc",value:"swc"},{label:"Sucrase",value:"sucrase"},{label:"OXC",value:"oxc"}]}),e.transformer&&e.transformer!=="oxc"&&!p.includes(e.transformer)&&await w({message:`Do you want to install ${e.transformer}?`})&&y.push(e.transformer==="swc"?"@swc/core":e.transformer)):W.message(`Transformer ${e.transformer} is already installed.`),e.isolatedDeclarationTransformer===void 0&&(e.isolatedDeclarationTransformer=await w({message:"Do you want to use an isolated declaration types?",initialValue:!1})),e.isolatedDeclarationTransformer===void 0&&(e.isolatedDeclarationTransformer=await S({message:"Pick a isolated declaration transformer",options:[{label:"Typescript",value:"typescript"},{label:"swc",value:"swc"},{label:"OXC",value:"oxc"},{label:"None",value:void 0}]}),e.isolatedDeclarationTransformer!==void 0)){let d;switch(e.isolatedDeclarationTransformer){case"oxc":{d="oxc-transform";break}case"swc":{d="@swc/core";break}case"typescript":{d="typescript";break}default:de("Invalid isolated declaration transformer")}d!==void 0&&!p.includes(d)&&await w({message:`Do you want to install ${d}?`})&&y.push(d)}e.css===void 0&&(e.css=await w({message:"Do you want to use css in your project?",initialValue:!1}));const i=[];if(e.css){const d=await S({message:"Pick a css loader",options:[{label:"PostCSS",value:"postcss"},{hint:"experimental",label:"Lightning CSS",value:"lightningcss"}]});i.push(d);let l=await Q({message:"Pick your loaders",options:[{label:"Sass",value:"sass"},{label:"Stylus",value:"stylus"},{label:"Less",value:"less"}],required:!1});if(l.includes("sass")){const v=await S({message:"Pick a sass loader",options:[{label:"Sass embedded",value:"sass-embedded",hint:"recommended"},{label:"Sass",value:"sass"},{label:"Node Sass",value:"node-sass",hint:"legacy"}]});v!=="sass"&&(l=l.filter(f=>f!=="sass"),l.push(v))}if(i.push(...l),await w({message:`Do you want to install "${i.join('", "')}"?`}))for(const v of i)y.push(...oe[v]);i.push("sourceMap")}e.cssMinifier===void 0&&(e.cssMinifier=await w({message:"Do you want to minify your css?",initialValue:!1}));let m;e.cssMinifier&&(m=await S({message:"Pick a css minifier",options:[{label:"CSSNano",value:"cssnano"},{label:"Lightning CSS",value:"lightningcss"}]}),i.includes("lightningcss")||await w({message:`Do you want to install "${m}"?`})&&y.push(m));let n="",c="";if(e.isolatedDeclarationTransformer&&(c+=`,
29
- isolatedDeclarationTransformer`),(e.css||e.cssMinifier)&&(c+=`,
27
+ },`),o.start("Installing packages"),await q(w,{cwd:n,dev:!0,silent:!0}),o.stop("Installed packages"),e.success(`
28
+ CSS loaders added!`)}await De(l,a.toString(),{overwrite:!0})},"execute"),name:"add",options:[{defaultValue:".",description:"The directory to build",name:"dir",type:String},{description:"Use a custom config file",name:"config",type:String}]})},"createAddCommand");var Qe=Object.defineProperty,et=b((t,s)=>Qe(t,"name",{value:s,configurable:!0}),"e$1");const tt=et(async(t,s,e,i,o)=>{const n=await le(s,o);let l=await t.import(n,{default:!0,try:!0})||{};return typeof l=="function"&&(l=await l(e,i)),{config:l,path:n}},"loadPackemConfig");var st=Object.defineProperty,S=b((t,s)=>st(t,"name",{value:s,configurable:!0}),"u$1");const z=new Map,ot=/\.[^./]+$/,it=S(async t=>{try{return await Ve.readdir(t,{withFileTypes:!0})}catch(s){const{code:e}=s;if(e==="ENOENT")return[];throw s}},"safeReaddir"),de=S(async(t,s)=>{const e=await it(t);return(await Promise.all(e.map(async i=>{const o=Z.join(t,i.name);return i.isDirectory()?de(o,s):i.isFile()?Z.relative(s,o):[]}))).flat()},"getDirectoryFilesRecursive"),nt=S(async t=>{let s=z.get(t);return s||(s=de(t,t),z.set(t,s)),s},"getDirectoryFiles"),rt=S((t,s)=>{const e=t.replace(ot,"");if(s==="*"){const l=e.split("/");return l.length>0?[l[0]]:null}const i=s.replaceAll(/[.+?^${}()|[\]\\]/g,String.raw`\$&`).replaceAll("*","(.*)"),o=new RegExp(`^${i}$`),n=e.match(o);return n?n.slice(1):null},"matchWildcardPattern"),at=S((t,s)=>{let e=t;for(const i of s)e=e.replace("*",i);return e},"substituteWildcards"),ct=S((t,s)=>t.key==="exports"&&t.subKey===K?K:t.key==="exports"&&t.subKey===G?G:s,"getEnvironment"),A=S((t,s,e,i,o,n,l)=>{const r=ct(o,n.environment);let u=n.options.runtime;for(const c of Oe)if(o.file.includes(`.${c}.`)||o.subKey===c){u=c;break}let a=t.find(c=>c.input===s&&c.environment===r&&c.runtime===u);a===void 0?a=t[t.push({environment:r,exportKey:new Set([o.exportKey].filter(Boolean)),input:s,runtime:u})-1]:a.exportKey&&o.exportKey&&a.exportKey.add(o.exportKey),l&&(a.isGlob=!0),e&&(a.outDir=i),o.isExecutable?(a.executable=!0,a.declaration=!1,o.type==="cjs"?a.cjs=!0:o.type==="esm"&&(a.esm=!0)):(/\.d\.[mc]?ts$/.test(o.file)&&n.options.declaration!==!1&&(a.declaration=n.options.declaration),o.type==="cjs"?a.cjs=!0:o.type==="esm"&&(a.esm=!0));const m=o.file.replace(ne(o.file),"").replace(new RegExp(`^./${n.options.outDir.replace(/^\.\//,"")}/`),"");re.has(o.subKey)&&!s.includes(m)&&(a.fileAlias=m)},"createOrUpdateEntry");let te=!1;const se=S(t=>{if(t.pkg?.dependencies?.typescript===void 0&&t.pkg?.devDependencies?.typescript===void 0)throw new Error("You tried to use a `.ts`, `.cts` or `.mts` file but `typescript` was not found in your package.json.")},"validateIfTypescriptIsInstalled"),lt=S(async(t,s,e)=>{const i=t.types||t.typings;z.clear();const o=(e.options.outputExtensionMap?.cjs??"cjs").replaceAll(".",String.raw`\.`),n=(e.options.outputExtensionMap?.esm??"mjs").replaceAll(".",String.raw`\.`),l=[];s.sort((c,d)=>c.split("/").length-d.split("/").length);const r=t.type==="module"?"esm":"cjs";r==="esm"&&(e.options.emitESM=!0),r==="cjs"&&(e.options.emitCJS=!0);const u=e.options.emitCJS&&e.options.emitESM;e.options.declaration===void 0&&(e.options.declaration=u?"compatible":"node16");const a=Fe(t.exports,r,e.options.declaration,[],e.options.ignoreExportKeys).filter(c=>!c.ignored);if(t.bin){const c=(typeof t.bin=="string"?[t.bin]:Object.values(t.bin)).filter(Boolean);for(const d of c){const y=H(d);if(y&&y!==r)throw new Error(`Exported file "${d}" has an extension that does not match the package.json type "${t.type??"commonjs"}".`);a.push({file:d,isExecutable:!0,key:"bin",type:y??r})}}t.main&&a.push({file:t.main,key:"main",type:H(t.main)??r}),t.module&&a.push({file:t.module,key:"module",type:"esm"}),i&&(se(e),(e.options.declaration===void 0||e.options.declaration==="node16")&&u&&(e.options.declaration="compatible"),a.push({file:t.types??t.typings,key:"types"}));const m=[];for await(const c of a){const d=ne(c.file);if(d!==""&&!Te.includes(d))continue;if(e.options.emitCJS===void 0&&c.type==="cjs"&&(e.options.emitCJS=!0),e.options.emitESM===void 0&&c.type==="esm"&&(e.options.emitESM=!0),e.options.declaration===void 0||e.options.declaration==="node16"){const $=e.options.emitCJS&&e.options.emitESM;e.options.declaration=$?"compatible":"node16"}const y=c.file.replace(new RegExp(String.raw`(?:\*[^/\\]|\.d\.[mc]?ts|\.\w+|${[`\\.${o}`,`\\.${n}`].join("|")})$`),""),w=y.endsWith("/");if(w&&["./","/"].includes(y))continue;const f=y.replace(new RegExp(`(./)?${e.options.outDir}`),e.options.sourceDir).replace("./",""),p="(?<=/|$)",v=w?"":String.raw`(\.d\.[cm]?ts|(\.[cm]?[tj]sx?)|${[`\\.${o}`,`\\.${n}`].join("|")})$`;if((c.file.includes("/*")||y.includes("*"))&&c.key==="exports"){te||(e.logger.debug("Private subfolders are not supported, if you need this feature please open an issue on GitHub."),te=!0);let $;c.exportKey?$=c.exportKey.startsWith("./")?c.exportKey.slice(2):c.exportKey:$=(c.file.startsWith("./")?c.file.slice(2):c.file).replace(/^dist\//,"");const N=c.file,F=e.options.sourceDir.replace(/^\.\//,""),_=E(e.options.rootDir,F),R=[],ye=await nt(_);for(const B of ye){const L=rt(B,$);if(L){const J=at(N,L);R.push({input:E(_,B),output:J})}}if(R.length===0){l.push(`Could not find entrypoints matching pattern \`${$}\` for output \`${N}\``);continue}for(const{input:B,output:L}of R){const J={...c,file:L};A(m,B,w,y,J,e,!0)}continue}const g=new RegExp(p+f+v);let k=s.find($=>g.test($));if(re.has(c.subKey)&&k===void 0){const $=f.replace(/^(.+?)\.[^.]*$/,"$1"),N=new RegExp(p+$+v);k=s.find(F=>N.test(F))}if(k===void 0){x(E(e.options.rootDir,c.file))||l.push(`Could not find entrypoint for \`${c.file}\``);continue}x(k)&&/\.[cm]?tsx?$/.test(k)&&se(e);const D=Pe(k.replace(Ne,""));x(`${D}.cts`)&&x(`${D}.mts`)?(A(m,`${D}.cts`,w,y,{...c,type:"cjs"},e,!1),A(m,`${D}.mts`,w,y,{...c,type:"esm"},e,!1)):A(m,k,w,y,c,e,!1)}return{entries:m,warnings:l}},"inferEntries");var pt=Object.defineProperty,dt=b((t,s)=>pt(t,"name",{value:s,configurable:!0}),"o");const ut=dt((t,s)=>{const{publishConfig:e}=t;return e&&(e.bin&&(typeof e.bin=="object"||typeof e.bin=="string")&&(t.bin=e.bin),e.type&&typeof e.type=="string"&&e.type!==""&&(t.type=e.type),e.main&&typeof e.main=="string"&&e.main!==""&&(t.main=e.main),e.module&&typeof e.module=="string"&&e.module!==""&&(t.module=e.module),s===void 0&&e.types&&typeof e.types=="string"&&e.types!==""?t.types=e.types:s===void 0&&e.typings&&typeof e.typings=="string"&&e.typings!==""&&(t.typings=e.typings),e.exports&&typeof e.exports=="object"&&(t.exports=e.exports)),t},"overwriteWithPublishConfig");var mt=Object.defineProperty,ft=b((t,s)=>mt(t,"name",{value:s,configurable:!0}),"p");const gt={hooks:{"build:prepare":ft(async function(t){if(t.options.unbundle){t.options.entries.length=0;const o=C(t.options.rootDir,t.options.sourceDir);if(!x(o))throw new Error("No 'src' directory found. Please provide entries manually.");const n=Y(o,{extensions:[],includeDirs:!1,includeSymlinks:!1,skip:[/.*\/node_modules\/.*/,/.*\/dist\/.*/]}).filter(l=>/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/.test(l)&&!l.endsWith(".d.ts"));for(const l of n){const r=l.replace(`${o}/`,"").replace(/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/,"").replaceAll("/","/");t.options.entries.push({input:l,name:r})}return}if(t.options.entries.length>0)return;const s=C(t.options.rootDir,t.options.sourceDir);if(!x(s))throw new Error("No 'src' directory found. Please provide entries manually.");const e=Y(s,{extensions:[],includeDirs:!1,includeSymlinks:!1,skip:[/.*\/node_modules\/.*/,/.*\/dist\/.*/]});if(e.length===0)throw new Error("No source files found in 'src' directory. Please provide entries manually.");let i={...t.pkg};if(i.publishConfig&&(t.logger.info(`Using publishConfig found in package.json, to override the default key-value pairs of "${Object.keys(i.publishConfig).join(", ")}".`),t.logger.debug(i.publishConfig),i=ut(i,t.options.declaration)),t.options.unbundle){t.logger.info("Unbundle mode detected, creating entries for all source files");const o=e.filter(n=>/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/.test(n)&&!n.endsWith(".d.ts"));t.logger.info(`Found ${o.length} code files for unbundle mode`);for(const n of o){const l=n.replace(`${s}/`,"").replace(/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/,"").replaceAll("/","/");t.logger.info(`Adding entry: ${l} -> ${n}`),t.options.entries.push({input:n,name:l})}}else{const o=await lt(i,e,t);for(const n of o.warnings)Re(t,n);t.options.entries.push(...o.entries)}if(t.options.entries.length===0)throw new Error("No entries detected. Please provide entries manually.");t.logger.info("Automatically detected entries:",Ae(t.options.entries.map(o=>o.fileAlias?`${V(o.fileAlias)} => ${V(o.input.replace(`${t.options.rootDir}/`,"").replace(/\/$/,"/*"))}`:V(o.input.replace(`${t.options.rootDir}/`,"").replace(/\/$/,"/*"))).join(", ")),Ke([t.options.emitESM&&"esm",t.options.emitCJS&&"cjs",t.options.declaration&&"dts"].filter(Boolean).map(o=>`[${o}]`).join(" ")))},"build:prepare")}};var yt=Object.defineProperty,bt=b((t,s)=>yt(t,"name",{value:s,configurable:!0}),"t");const wt=bt(async(t,s)=>{if(t==="auto")t=gt;else{if(t==="none")return{};typeof t=="string"&&(t=await s.import(t)||{})}return typeof t=="function"&&(t=t()),t},"loadPreset");var vt=Object.defineProperty,I=b((t,s)=>vt(t,"name",{value:s,configurable:!0}),"r");const ht=I(t=>{t.addCommand({description:"Demonstrate options required",execute:I(async({logger:s,options:e})=>{let i="build";e.watch?i="watch":e.jit&&(i="jit");const o={};let n;if(e.env)for(const d of e.env)d.key==="NODE_ENV"?n=d.value:o[`process.env.${d.key}`]=JSON.stringify(d.value);n===void 0&&(e.production?n=K:e.development&&(n=G));const l=[];if(e.external)for(const d of e.external)l.push(d.split(","));const r=E(W(),e.dir??"."),u=Le(r,{debug:e.debug}),{config:a,path:m}=await tt(u,r,n,i,e.config??void 0);s.debug("Using packem config found at",m);const c=await wt(a.preset??"auto",u);e.minify&&e.sourcemap===void 0&&(e.sourcemap=!0);try{await Je(r,i,n,s,e.debug,Be(a,c,{analyze:e.analyze,cjsInterop:e.cjsInterop,clean:e.clean,dtsOnly:e.dtsOnly,externals:l,killSignal:e.killSignal,minify:e.minify===void 0?n===K:e.minify,onSuccess:e.onSuccess,rollup:{esbuild:{target:e.target},license:{path:e.license},metafile:e.metafile,replace:{values:o},resolveExternals:e.noExternal?{builtins:!1,deps:!1,devDeps:!1,optDeps:!1,peerDeps:!1}:{}},runtime:e.runtime,sourcemap:e.metafile||e.analyze||e.sourcemap,unbundle:e.unbundle,validation:e.validation===!1?!1:{},...e.typedoc?{typedoc:{format:"html"}}:{}}),e.tsconfig??void 0)}catch(d){s.error(d),ke(1)}},"execute"),name:"build",options:[{defaultValue:".",description:"The directory to build",name:"dir",type:String},{alias:"t",description:"Environments to support. `target` in tsconfig.json is automatically added. Defaults to the current Node.js version.",name:"target"},{description:"Use a custom config file",name:"config",type:String},{description:"Path to the tsconfig.json file",name:"tsconfig",type:String},{description:"Minify the output",name:"minify",type:Boolean},{description:"Generate sourcemaps (experimental)",name:"sourcemap",type:Boolean},{conflicts:"jit",description:"Watch for changes",name:"watch",type:Boolean},{conflicts:"watch",description:"Stub the package for JIT compilation",name:"jit",type:Boolean},{description:"Compile-time environment variables (eg. --env.NODE_ENV=production)",multiple:!0,name:"env",type:I(s=>{const[e,i]=s.split("=");return{key:e,value:i}},"type")},{defaultValue:!1,description:"Generate meta file (experimental)",name:"metafile",type:Boolean},{description:"Path to the license file",name:"license",type:String},{conflicts:"watch",description:"Visualize and analyze the bundle",name:"analyze",type:Boolean},{description:"CJS interop mode, can export default and named export, (experimental).",name:"cjsInterop",type:Boolean},{conflicts:"development",description:"Run code in production environment",name:"production",type:Boolean},{conflicts:"production",description:"Run code in development environment",name:"development",type:Boolean},{description:"Do not clean the dist directory before building",name:"no-clean",type:Boolean},{description:"Only generate .d.ts files",name:"dts-only",type:Boolean},{description:"Disable the output validation",name:"no-validation",type:Boolean},{description:"Disable the cache",name:"no-cache",type:Boolean},{description:"Generate type documentation",name:"typedoc",type:Boolean},{description:"Execute command after successful build, specially useful for watch mode",name:"onSuccess",type:String},{description:'Signal to kill child process, "SIGTERM" or "SIGKILL"',name:"killSignal",type:I(s=>{if(s==="SIGTERM"||s==="SIGKILL")return s;throw new Error("Invalid kill signal. Use 'SIGTERM' or 'SIGKILL'.")},"type")},{description:"Specify an external dependency, separate by comma (eg. --external lodash,react,react-dom)",multiple:!0,name:"external",typeLabel:"string[]"},{description:"do not bundle external dependencies",name:"no-external",type:Boolean},{description:"Specify the build runtime (nodejs, browser).",name:"runtime",type:I(s=>{if(s==="node"||s==="browser")return s;throw new Error("Invalid runtime. Use 'node' or 'browser'.")},"type")},{description:"Enable unbundle mode to preserve source file structure instead of bundling into a single file",name:"unbundle",type:Boolean}]})},"createBuildCommand");var kt=Object.defineProperty,O=b((t,s)=>kt(t,"name",{value:s,configurable:!0}),"f");const $t=O(t=>{t.addCommand({description:"Initialize packem configuration",execute:O(async({logger:s,options:e})=>{if($e("Welcome to packem setup"),x(C(e.dir,"packem.config.mjs"))){s.info("Packem project already initialized, you can use `packem build` to build your project");return}const i=E(W(),e.dir??"."),o=C(i,"package.json");if(!x(o))throw new Error("No package.json found in the directory");const n=await Ge(o,{resolveCatalogs:!0}),l=[];n.dependencies&&l.push(...Object.keys(n.dependencies)),n.devDependencies&&l.push(...Object.keys(n.devDependencies));const r=!!(n.devDependencies?.typescript??n.dependencies?.typescript),u=[];if(e.typescript===void 0&&!r?(e.typescript=await h({message:"Do you want to install TypeScript?"}),e.typescript&&u.push("typescript@latest")):X.message(`TypeScript version ${n.devDependencies?.typescript??n.dependencies?.typescript} is already installed`),!x(C(i,"tsconfig.json"))){const f=await h({message:"Do you want to use generate a tsconfig.json?"}),p=await h({message:"Do you want to run your code in the DOM?"});if(f){const v=U();v.start("Generating tsconfig.json"),Ee(C(i,"tsconfig.json"),{compilerOptions:{esModuleInterop:!0,skipLibCheck:!0,target:"es2022",allowJs:!0,resolveJsonModule:!0,moduleDetection:"force",isolatedModules:!0,verbatimModuleSyntax:!0,strict:!0,noUncheckedIndexedAccess:!0,noImplicitOverride:!0,module:"NodeNext",outDir:"dist",sourceMap:!0,declaration:!0,lib:p?["es2022","dom","dom.iterable"]:["es2022"]}}),v.stop("")}}if(e.runtime===void 0&&(e.runtime=await j({message:"Pick a build runtime",options:[{label:"Node",value:"node"},{label:"Browser",value:"browser"}]})),l.includes("esbuild")?e.transformer="esbuild":l.includes("@swc/core")?e.transformer="swc":l.includes("sucrase")&&(e.transformer="sucrase"),e.transformer===void 0?(e.transformer=await j({message:"Pick a transformer",options:[{label:"esbuild",value:"esbuild"},{label:"swc",value:"swc"},{label:"Sucrase",value:"sucrase"},{label:"OXC",value:"oxc"}]}),e.transformer&&e.transformer!=="oxc"&&!l.includes(e.transformer)&&await h({message:`Do you want to install ${e.transformer}?`})&&u.push(e.transformer==="swc"?"@swc/core":e.transformer)):X.message(`Transformer ${e.transformer} is already installed.`),e.isolatedDeclarationTransformer===void 0&&(e.isolatedDeclarationTransformer=await h({message:"Do you want to use an isolated declaration types?",initialValue:!1})),e.isolatedDeclarationTransformer===void 0&&(e.isolatedDeclarationTransformer=await j({message:"Pick a isolated declaration transformer",options:[{label:"Typescript",value:"typescript"},{label:"swc",value:"swc"},{label:"OXC",value:"oxc"},{label:"None",value:void 0}]}),e.isolatedDeclarationTransformer!==void 0)){let f;switch(e.isolatedDeclarationTransformer){case"oxc":{f="oxc-transform";break}case"swc":{f="@swc/core";break}case"typescript":{f="typescript";break}default:je("Invalid isolated declaration transformer")}f!==void 0&&!l.includes(f)&&await h({message:`Do you want to install ${f}?`})&&u.push(f)}e.css===void 0&&(e.css=await h({message:"Do you want to use css in your project?",initialValue:!1}));const a=[];if(e.css){const f=await j({message:"Pick a css loader",options:[{label:"PostCSS",value:"postcss"},{hint:"experimental",label:"Lightning CSS",value:"lightningcss"}]});a.push(f);let p=await ie({message:"Pick your loaders",options:[{label:"Sass",value:"sass"},{label:"Stylus",value:"stylus"},{label:"Less",value:"less"}],required:!1});if(p.includes("sass")){const v=await j({message:"Pick a sass loader",options:[{label:"Sass embedded",value:"sass-embedded",hint:"recommended"},{label:"Sass",value:"sass"},{label:"Node Sass",value:"node-sass",hint:"legacy"}]});v!=="sass"&&(p=p.filter(g=>g!=="sass"),p.push(v))}if(a.push(...p),await h({message:`Do you want to install "${a.join('", "')}"?`}))for(const v of a)u.push(...pe[v]);a.push("sourceMap")}e.cssMinifier===void 0&&(e.cssMinifier=await h({message:"Do you want to minify your css?",initialValue:!1}));let m;e.cssMinifier&&(m=await j({message:"Pick a css minifier",options:[{label:"CSSNano",value:"cssnano"},{label:"Lightning CSS",value:"lightningcss"}]}),a.includes("lightningcss")||await h({message:`Do you want to install "${m}"?`})&&u.push(m));let c="",d="";if(e.isolatedDeclarationTransformer&&(d+=`,
29
+ isolatedDeclarationTransformer`),(e.css||e.cssMinifier)&&(d+=`,
30
30
  rollup: {
31
- css: {`),e.css){const d=i.map(l=>((l==="sass-embedded"||l==="node-sass")&&(l="sass"),`${l}Loader`)).join(", ");c+=`
32
- loaders: [${d}],`}if(e.cssMinifier&&m&&(c+=`
33
- minifier: ${m}Minifier,`),(e.css||e.cssMinifier)&&(c+=`
31
+ css: {`),e.css){const f=a.map(p=>((p==="sass-embedded"||p==="node-sass")&&(p="sass"),`${p}Loader`)).join(", ");d+=`
32
+ loaders: [${f}],`}if(e.cssMinifier&&m&&(d+=`
33
+ minifier: ${m}Minifier,`),(e.css||e.cssMinifier)&&(d+=`
34
34
  }
35
- }`),u||o.type==="module"){let d="";if(e.isolatedDeclarationTransformer&&(d+=`import isolatedDeclarationTransformer from "@visulima/packem/dts/isolated/transformer/${e.isolatedDeclarationTransformer}";
36
- `),e.css)for(let l of i)(l==="sass-embedded"||l==="node-sass")&&(l="sass"),d+=`import ${l}Loader from "@visulima/packem/css/loader/${l.toLowerCase()}";
37
- `;e.cssMinifier&&m&&(d+=`import ${m}Minifier from "@visulima/packem/css/minifier/${m.toLowerCase()}";
38
- `),n=`import { defineConfig } from "@visulima/packem/config";
35
+ }`),r||n.type==="module"){let f="";if(e.isolatedDeclarationTransformer&&(f+=`import isolatedDeclarationTransformer from "@visulima/packem/dts/isolated/transformer/${e.isolatedDeclarationTransformer}";
36
+ `),e.css)for(let p of a)(p==="sass-embedded"||p==="node-sass")&&(p="sass"),f+=`import ${p}Loader from "@visulima/packem/css/loader/${p.toLowerCase()}";
37
+ `;e.cssMinifier&&m&&(f+=`import ${m}Minifier from "@visulima/packem/css/minifier/${m.toLowerCase()}";
38
+ `),c=`import { defineConfig } from "@visulima/packem/config";
39
39
  import transformer from "@visulima/packem/transformer/${e.transformer}";
40
- ${d}
40
+ ${f}
41
41
  export default defineConfig({
42
42
  runtime: "${e.runtime}",
43
- transformer${c}
43
+ transformer${d}
44
44
  });
45
- `}else{let d="";if(e.isolatedDeclarationTransformer&&(d+=`const isolatedDeclarationTransformer = require("@visulima/packem/dts/isolated/transformer/${e.isolatedDeclarationTransformer}");
46
- `),e.css)for(let l of i)(l==="sass-embedded"||l==="node-sass")&&(l="sass"),d+=`const ${l}Loader = require("@visulima/packem/css/loader/${l.toLowerCase()}");
47
- `;e.cssMinifier&&m&&(d+=`const ${m}Minifier = require("@visulima/packem/css/minifier/${m.toLowerCase()}");
48
- `),n=`const { defineConfig } = require("@visulima/packem/config");
45
+ `}else{let f="";if(e.isolatedDeclarationTransformer&&(f+=`const isolatedDeclarationTransformer = require("@visulima/packem/dts/isolated/transformer/${e.isolatedDeclarationTransformer}");
46
+ `),e.css)for(let p of a)(p==="sass-embedded"||p==="node-sass")&&(p="sass"),f+=`const ${p}Loader = require("@visulima/packem/css/loader/${p.toLowerCase()}");
47
+ `;e.cssMinifier&&m&&(f+=`const ${m}Minifier = require("@visulima/packem/css/minifier/${m.toLowerCase()}");
48
+ `),c=`const { defineConfig } = require("@visulima/packem/config");
49
49
  const transformer = require("@visulima/packem/transformer/${e.transformer}");
50
- ${d}
50
+ ${f}
51
51
  module.exports = defineConfig({
52
52
  runtime: ${e.runtime},
53
- transformer${c}
53
+ transformer${d}
54
54
  });
55
- `}const g=R(),b=u?"ts":"js";y.length>0&&(g.start("Installing packages"),await q(y,{cwd:r,dev:!0,silent:!0}),g.stop("Installed packages")),g.start(`Creating packem.config.${b}`),ve(C(r,`packem.config.${b}`),n),g.stop(`Created packem.config.${b}`),ue("Now you can run `packem build` to build your project")},"execute"),name:"init",options:[{defaultValue:".",description:"The directory to initialize",name:"dir",type:String},{description:"Choose a transformer",name:"transformer",type:I(s=>{if(typeof s=="string"&&["esbuild","sucrase","swc"].includes(s))return s;throw new Error("Invalid transformer, please choose one of 'swc', 'sucrase' or 'esbuild'")},"type")},{description:"Choose a isolated declaration transformer",name:"isolated-declaration-transformer",type:I(s=>{if(typeof s=="string"&&["none","oxc","swc","typescript"].includes(s))return s;throw new Error("Invalid isolated declaration isolated declaration, please choose one of 'none', 'oxc', 'swc' or 'typescript'")},"type")},{description:"Use CSS",name:"css",type:Boolean},{description:"Use CSS minifier",name:"css-minifier",type:Boolean},{Description:"Use TypeScript",name:"typescript",type:Boolean},{description:"Specify the build runtime (nodejs, browser).",name:"runtime",type:I(s=>{if(s==="node"||s==="browser")return s;throw new Error("Invalid runtime. Use 'node' or 'browser'.")},"type")}]})},"createInitCommand");try{require("node:module")?.enableCompileCache?.()||require("v8-compile-cache")}catch{}const N=new re("packem",{logger:{reporters:[new le({error:{hideErrorCauseCodeView:!0,hideErrorCodeView:!0,hideErrorErrorsCodeView:!0}})],scope:"packem"},packageName:Le,packageVersion:Be});ct(N);rt(N);Ve(N);N.run({shouldExitProcess:!1});
55
+ `}const y=U(),w=r?"ts":"js";u.length>0&&(y.start("Installing packages"),await q(u,{cwd:i,dev:!0,silent:!0}),y.stop("Installed packages")),y.start(`Creating packem.config.${w}`),Me(C(i,`packem.config.${w}`),c),y.stop(`Created packem.config.${w}`),xe("Now you can run `packem build` to build your project")},"execute"),name:"init",options:[{defaultValue:".",description:"The directory to initialize",name:"dir",type:String},{description:"Choose a transformer",name:"transformer",type:O(s=>{if(typeof s=="string"&&["esbuild","sucrase","swc"].includes(s))return s;throw new Error("Invalid transformer, please choose one of 'swc', 'sucrase' or 'esbuild'")},"type")},{description:"Choose a isolated declaration transformer",name:"isolated-declaration-transformer",type:O(s=>{if(typeof s=="string"&&["none","oxc","swc","typescript"].includes(s))return s;throw new Error("Invalid isolated declaration isolated declaration, please choose one of 'none', 'oxc', 'swc' or 'typescript'")},"type")},{description:"Use CSS",name:"css",type:Boolean},{description:"Use CSS minifier",name:"css-minifier",type:Boolean},{Description:"Use TypeScript",name:"typescript",type:Boolean},{description:"Specify the build runtime (nodejs, browser).",name:"runtime",type:O(s=>{if(s==="node"||s==="browser")return s;throw new Error("Invalid runtime. Use 'node' or 'browser'.")},"type")}]})},"createInitCommand");var jt=Object.defineProperty,M=b((t,s)=>jt(t,"name",{value:s,configurable:!0}),"a");const xt=M(t=>{t.addCommand({description:"Migrate from other bundlers (tsup, unbuild, bunchee, etc.) to packem",execute:M(async({logger:s,options:e})=>{await ue({cwd:e.cwd,dryRun:e.dryRun,logger:s})},"execute"),name:"migrate",options:[{defaultValue:".",description:"The directory to migrate",name:"cwd",type:String},{description:"Preview changes without applying them",name:"dry-run",type:Boolean}]})},"createMigrateCommand");async function ue({cwd:t,dryRun:s,logger:e}){if(s)e.info("Dry run enabled. No changes will be made.");else{const o=ze({input:P.stdin,output:P.stdout});e.warn(`
56
+
57
+ Before proceeding, review the migration guide at https://www.visulima.com/docs/package/packem, as this process will modify your files.
58
+ Uncommitted changes will be lost. Use the --dry-run flag to preview changes without applying them.`);const n=await o.question("Continue? (Y/n) ");if(o.close(),!(n.toLowerCase()==="y"||n==="")){e.error("Migration cancelled."),P.exitCode=1;return}}t&&P.chdir(t);let i=!1;await me(s,e)&&(i=!0),await fe(s,e)&&(i=!0),i?e.success("Migration completed. Remember to run install command with your package manager."):(e.error("No migration performed."),P.exitCode=1)}b(ue,"migrate");M(ue,"migrate");const oe={bunchee:"@visulima/packem",tsup:"@visulima/packem","tsup-node":"@visulima/packem",unbuild:"@visulima/packem"},St={dependencies:`^${Q.version}`,devDependencies:`^${Q.version}`,peerDependencies:"*"};async function me(t,s){if(!ae("package.json"))return s.error("No package.json found"),!1;const e=await qe("package.json","utf8"),i=JSON.parse(e);let o=!1;for(const[r,u]of Object.entries(St))for(const[a,m]of Object.entries(oe))i[r]?.[a]&&(s.info(`Migrating \`${r}\` from ${a} to ${m}.`),o=!0,i[r]=ge(i[r],a,m,u));if(i.scripts)for(const r of Object.keys(i.scripts)){for(const[u,a]of Object.entries(oe))i.scripts[r].includes(u)&&(s.info(`Migrating \`${r}\` script from ${u} to packem`),o=!0,i.scripts[r]=i.scripts[r].replaceAll(new RegExp(`\\b${u}\\b`,"g"),"packem").replaceAll(new RegExp(`\\b${u}-node\\b`,"g"),"packem"));i.scripts[r].includes("tsup")&&(s.info(`Migrating \`${r}\` script from tsup to packem`),o=!0,i.scripts[r]=i.scripts[r].replaceAll(/\btsup(?:-node)?/g,"packem build").replaceAll(/\bbuild\b/g,"build")),i.scripts[r].includes("unbuild")&&(s.info(`Migrating \`${r}\` script from unbuild to packem`),o=!0,i.scripts[r]=i.scripts[r].replaceAll(/\bunbuild\b/g,"packem build")),i.scripts[r].includes("bunchee")&&(s.info(`Migrating \`${r}\` script from bunchee to packem`),o=!0,i.scripts[r]=i.scripts[r].replaceAll(/\bbunchee\b/g,"packem build"))}const n=["tsup","unbuild","bunchee"];for(const r of n)i[r]&&s.info(`Found \`${r}\` config field in package.json. Consider moving to packem.config.ts`);if(!o)return s.warn("No migratable bundler dependencies found in package.json"),!1;const l=`${JSON.stringify(i,null,e.includes(" ")?" ":2)}
59
+ `;return t?(s.info("[dry-run] package.json changes:"),s.info("Old content:"),console.info(e),s.info("New content:"),console.info(l)):(await Ue("package.json",l),s.success("Migrated `package.json`")),!0}b(me,"v");M(me,"migratePackageJson");const Ct=["tsup.config.ts","tsup.config.cts","tsup.config.mts","tsup.config.js","tsup.config.cjs","tsup.config.mjs","tsup.config.json","build.config.ts","build.config.cts","build.config.mts","build.config.js","build.config.cjs","build.config.mjs","bunchee.config.ts","bunchee.config.cts","bunchee.config.mts","bunchee.config.js","bunchee.config.cjs","bunchee.config.mjs"];async function fe(t,s){let e=!1;for(const i of Ct)ae(i)&&(s.info(`Found config file \`${i}\`. Consider creating packem.config.ts instead.`),s.warn("Manual migration required for config files. See https://www.visulima.com/docs/package/packem"),e=!0);return e||s.warn("No bundler config files found"),e}b(fe,"$");M(fe,"migrateConfigFiles");function ge(t,s,e,i){const o={};for(const n of Object.keys(t))n===s?o[e]=i||t[s]:o[n]=t[n];return o}b(ge,"M");M(ge,"renameKey");try{require("node:module")?.enableCompileCache?.()||require("v8-compile-cache")}catch{}const T=we("packem",{logger:await ve({reporters:[new he({error:{hideErrorCauseCodeView:!0,hideErrorCodeView:!0,hideErrorErrorsCodeView:!0}})],scope:"packem"}),packageName:We,packageVersion:ce});$t(T);ht(T);Ze(T);xt(T);T.run({shouldExitProcess:!1});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});import{createPail as s}from"@visulima/pail";import{SimpleReporter as u}from"@visulima/pail/reporter";import{x as g}from"./packem_shared/index-Dt7qUoo-.js";var f=Object.defineProperty,l=o((e,r)=>f(e,"name",{value:r,configurable:!0}),"r");const C=l(async(e,r={})=>{const{debug:t,environment:i,logger:a,mode:n,tsconfigPath:m,...d}={debug:!1,environment:"production",logger:{},mode:"build",tsconfigPath:void 0,...r},p=s({reporters:[new u({error:{hideErrorCauseCodeView:!0,hideErrorCodeView:!0,hideErrorErrorsCodeView:!0}})],scope:"packem",...a});await g(e,n,i,p,t,d,m)},"packem");export{C as packem};
1
+ var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});import{createPail as s}from"@visulima/pail";import{SimpleReporter as u}from"@visulima/pail/reporter";import{x as g}from"./packem_shared/index-Bh6qb5ev.js";var f=Object.defineProperty,l=o((e,r)=>f(e,"name",{value:r,configurable:!0}),"r");const C=l(async(e,r={})=>{const{debug:t,environment:i,logger:a,mode:n,tsconfigPath:m,...d}={debug:!1,environment:"production",logger:{},mode:"build",tsconfigPath:void 0,...r},p=s({reporters:[new u({error:{hideErrorCauseCodeView:!0,hideErrorCodeView:!0,hideErrorErrorsCodeView:!0}})],scope:"packem",...a});await g(e,n,i,p,t,d,m)},"packem");export{C as packem};