@rzl-zone/build-tools 0.0.6 → 0.0.8

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.
Files changed (64) hide show
  1. package/README.md +7 -0
  2. package/dist/.references/index.d.cts +1 -1
  3. package/dist/.references/index.d.ts +1 -1
  4. package/dist/bundler/rolldown.cjs +2 -2
  5. package/dist/bundler/rolldown.d.cts +2 -2
  6. package/dist/bundler/rolldown.d.ts +2 -2
  7. package/dist/bundler/rolldown.js +1 -1
  8. package/dist/bundler/tsdown.cjs +3 -3
  9. package/dist/bundler/tsdown.d.cts +2 -2
  10. package/dist/bundler/tsdown.d.ts +2 -2
  11. package/dist/bundler/tsdown.js +3 -3
  12. package/dist/bundler/utils.cjs +2 -2
  13. package/dist/bundler/utils.d.cts +2 -2
  14. package/dist/bundler/utils.d.ts +2 -2
  15. package/dist/bundler/utils.js +2 -2
  16. package/dist/{client-DeWxBQfk.cjs → client-BczBMDS6.cjs} +3 -3
  17. package/dist/{client-DeWxBQfk.cjs.map → client-BczBMDS6.cjs.map} +1 -1
  18. package/dist/{client-BQZM3hAW.js → client-C0ZDdv36.js} +3 -3
  19. package/dist/{client-BQZM3hAW.js.map → client-C0ZDdv36.js.map} +1 -1
  20. package/dist/commander-kit/index.cjs +5 -5
  21. package/dist/commander-kit/index.d.cts +3 -3
  22. package/dist/commander-kit/index.d.ts +3 -3
  23. package/dist/commander-kit/index.js +5 -5
  24. package/dist/{extra-4Jz2QQPT.d.ts → extra-CDUxrgcT.d.ts} +2 -2
  25. package/dist/{extra-DOiJCaKb.d.cts → extra-CnJhk-pp.d.cts} +2 -2
  26. package/dist/{fast-globe-options-B_RzhF9M.d.cts → fast-globe-options-B4edSsWz.d.cts} +3 -3
  27. package/dist/{fast-globe-options-TcfM4Tf4.d.ts → fast-globe-options-CMxk8gD9.d.ts} +3 -3
  28. package/dist/{helper-CyeS8odk.js → helper-2m5t07Qe.js} +2 -2
  29. package/dist/{helper-CyeS8odk.js.map → helper-2m5t07Qe.js.map} +1 -1
  30. package/dist/{helper-CYbl4V1c.cjs → helper-BRO-s2fI.cjs} +2 -2
  31. package/dist/{helper-CYbl4V1c.cjs.map → helper-BRO-s2fI.cjs.map} +1 -1
  32. package/dist/{identity-loviizi5.cjs → identity-1Zk_fLSI.cjs} +6 -6
  33. package/dist/{identity-loviizi5.cjs.map → identity-1Zk_fLSI.cjs.map} +1 -1
  34. package/dist/{identity-K7903gDk.js → identity-CCGqrTRL.js} +6 -6
  35. package/dist/{identity-K7903gDk.js.map → identity-CCGqrTRL.js.map} +1 -1
  36. package/dist/{index-C_2MXvGI.d.cts → index-B3ChWfIR.d.cts} +2 -2
  37. package/dist/{index-BCi3ZHit.d.cts → index-C-jXEIZS.d.ts} +15 -3
  38. package/dist/{index-B7BLVyFr.d.ts → index-DPGJBhEK.d.ts} +2 -2
  39. package/dist/{index-CgK_7HHv.d.ts → index-De-ymoL3.d.cts} +15 -3
  40. package/dist/index.cjs +196 -196
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.cts +157 -157
  43. package/dist/index.d.ts +157 -157
  44. package/dist/index.js +196 -196
  45. package/dist/index.js.map +1 -1
  46. package/dist/{package-banner-Bn97U4Pk.cjs → package-banner-BAbZghTB.cjs} +17 -11
  47. package/dist/package-banner-BAbZghTB.cjs.map +1 -0
  48. package/dist/{package-banner-BxSvfrTb.js → package-banner-BM84W-TO.js} +17 -11
  49. package/dist/package-banner-BM84W-TO.js.map +1 -0
  50. package/dist/{server-D6l96Tw2.js → server-DH801yY1.js} +3 -3
  51. package/dist/{server-D6l96Tw2.js.map → server-DH801yY1.js.map} +1 -1
  52. package/dist/{server-BtewhKgh.cjs → server-DL-uLx4N.cjs} +3 -3
  53. package/dist/{server-BtewhKgh.cjs.map → server-DL-uLx4N.cjs.map} +1 -1
  54. package/dist/utils/client.cjs +2 -2
  55. package/dist/utils/client.d.cts +1 -1
  56. package/dist/utils/client.d.ts +1 -1
  57. package/dist/utils/client.js +2 -2
  58. package/dist/utils/server.cjs +2 -2
  59. package/dist/utils/server.d.cts +2 -2
  60. package/dist/utils/server.d.ts +2 -2
  61. package/dist/utils/server.js +2 -2
  62. package/package.json +2 -2
  63. package/dist/package-banner-Bn97U4Pk.cjs.map +0 -1
  64. package/dist/package-banner-BxSvfrTb.js.map +0 -1
@@ -2,13 +2,13 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.6`
5
+ * Version: `0.0.8`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky1998@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/build-tools`
8
8
  * ========================================================================
9
9
  */
10
10
 
11
- import { n as PatternOptions, r as defaultPatternOptions, t as PatternConfig } from "../fast-globe-options-TcfM4Tf4.js";
11
+ import { n as PatternOptions, r as defaultPatternOptions, t as PatternConfig } from "../fast-globe-options-CMxk8gD9.js";
12
12
  import _fastGlob from "fast-glob";
13
13
  import _fsExtra from "fs-extra";
14
14
  type Icons = { readonly [K in keyof typeof emojiIcons]: string };
@@ -2,11 +2,11 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.6`
5
+ * Version: `0.0.8`
6
6
  * Author: `Rizalvin Dwiky <rizalvindwiky1998@gmail.com>`
7
7
  * Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/build-tools`
8
8
  * ========================================================================
9
9
  */
10
10
 
11
- import { i as defaultPatternOptions, n as fsExtra, r as ICONS, t as fastGlob } from "../server-D6l96Tw2.js";
11
+ import { i as defaultPatternOptions, n as fsExtra, r as ICONS, t as fastGlob } from "../server-DH801yY1.js";
12
12
  export { ICONS, defaultPatternOptions, fastGlob, fsExtra };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rzl-zone/build-tools",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Toolkit to standardize and improve build outputs for TypeScript and JavaScript packages.",
5
5
  "license": "MIT",
6
6
  "author": "Rizalvin Dwiky <rizalvindwiky1998@gmail.com>",
@@ -117,7 +117,7 @@
117
117
  "fs-extra": "^11.3.4",
118
118
  "picocolors": "^1.1.1",
119
119
  "semver": "^7.7.4",
120
- "@rzl-zone/node-only": "0.0.6"
120
+ "@rzl-zone/node-only": "0.0.7"
121
121
  },
122
122
  "devDependencies": {
123
123
  "@types/babel__traverse": "^7.28.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-banner-Bn97U4Pk.cjs","names":["isNonEmptyString","path","fsExtra","EOL","isNonEmptyString","isPlainObject","joinLinesLoose"],"sources":["../src/core/get/package-json/index.ts","../src/core/generate/package-banner/index.ts"],"sourcesContent":["import \"@rzl-zone/node-only\";\n\nimport type { PackageJson } from \"type-fest\";\n\nimport path from \"node:path\";\n\nimport { isNonEmptyString } from \"@/_internal/utils/helper\";\n\nimport { fsExtra } from \"@/utils/server\";\nimport { EOL } from \"@/utils/client\";\n\n//? Types ----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Configuration options for {@link getPackageJson | **`get-package-json`**}.***\n * ----------------------------------------------------------------\n */\nexport type GetPackageJsonOptions = {\n /** ----------------------------------------------------------------\n * * ***Working directory of the target project.***\n * ----------------------------------------------------------------\n *\n * This determines where the lookup for `package.json`\n * will start.\n *\n * - If provided, resolution begins from this directory.\n * - If omitted, defaults to `process.cwd()`.\n *\n * - ***Typical use cases:***\n * - CLI tools executed in a project directory.\n * - Monorepo root resolution.\n * - Custom build pipelines.\n *\n * @default process.cwd()\n *\n * @remarks\n * This should be the directory containing your project's\n * `package.json`, not the directory of this package.\n */\n cwd?: string;\n};\n\n//? Main -----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Resolve and read the nearest `package.json`.***\n * ----------------------------------------------------------------\n *\n * This utility locates and loads the closest `package.json`\n * by walking up the directory tree starting from a given\n * working directory.\n *\n * - *Key characteristics:*\n * - Works in **Node ESM and CJS**.\n * - Compatible with **tsdown, rolldown, tsup, esbuild, vite, tsx, ts-node, and others**.\n * - Does **not** rely on JSON module imports.\n * - Fully typed via {@link PackageJson | **PackageJson**}.\n *\n * - *This function is intended for:*\n * - Build tools.\n * - Bundler configuration.\n * - CLI utilities.\n * - Monorepo-aware infrastructure code.\n *\n * @param options Optional resolution configuration.\n *\n * @returns The parsed contents of the resolved `package.json`.\n *\n * @example\n * ```ts\n * const pkg = await getPackageJson();\n * console.log(pkg.name, pkg.version);\n * ```\n *\n * @example\n * ```ts\n * const pkg = await getPackageJson({\n * cwd: process.cwd()\n * });\n * ```\n *\n * @throws If no `package.json` can be found.\n * @throws If the located `package.json` is invalid JSON.\n *\n * @remarks\n * - Resolution always starts from `cwd` or `process.cwd()`.\n * - Results are not cached by default.\n * - Designed for infrastructure-level usage, not hot paths.\n */\nexport const getPackageJson = async (\n options: GetPackageJsonOptions = {}\n): Promise<PackageJson> => {\n const startDir = isNonEmptyString(options.cwd)\n ? path.resolve(options.cwd)\n : process.cwd();\n\n let current = startDir;\n\n while (true) {\n const pkgPath = path.join(current, \"package.json\");\n\n if (fsExtra.existsSync(pkgPath)) {\n try {\n return JSON.parse(fsExtra.readFileSync(pkgPath, \"utf-8\"));\n } catch (err) {\n throw new Error(\n `[@rzl-zone/build-tools] - (get-package-json): Invalid package.json at '${pkgPath}'` +\n EOL +\n `Reason: ${(err as Error).message}`,\n { cause: err }\n );\n }\n }\n\n const parent = path.dirname(current);\n if (parent === current) break;\n\n current = parent;\n }\n\n throw new Error(\n \"[@rzl-zone/build-tools] - (get-package-json): Unable to locate package.json\"\n );\n};\n\n/** @deprecated Use {@link getPackageJson | `getPackageJson`} instead. */\nconst _getPackageJson = async (\n options: GetPackageJsonOptions = {}\n): Promise<PackageJson> => {\n return await getPackageJson(options);\n // if (options.cwd && options.from) {\n // throw new Error(\"Provide either `cwd` or `from`, not both.\");\n // }\n\n // const cwd = isNonEmptyString(options.cwd) ? options.cwd : process.cwd();\n\n // const baseUrl =\n // options.from && isNil(options.cwd)\n // ? options.from\n // : pathToFileURL(path.resolve(cwd, \"__entry__.js\"));\n\n // const createRequire = await getCreateRequire();\n // const reqPkg = createRequire(baseUrl);\n\n // let current = cwd;\n\n // while (true) {\n // const pkgPath = path.join(current, \"package.json\");\n\n // if (fsExtra.existsSync(pkgPath)) return reqPkg(pkgPath);\n\n // const parent = path.dirname(current);\n // if (parent === current) break;\n // current = parent;\n // }\n\n // throw new Error(\n // \"[@rzl-zone/build-tools] - (get-package-json): Unable to locate package.json !!!\"\n // );\n};\n","import \"@rzl-zone/node-only\";\n\nimport type { PackageJson } from \"type-fest\";\n\nimport { isNonEmptyString, isPlainObject } from \"@/_internal/utils/helper\";\n\nimport { joinLinesLoose } from \"@/utils/helper/formatter\";\nimport { getPackageJson } from \"../../get/package-json\";\n\n//? Types ----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Configuration options for {@link generatePackageBanner | **`generate-package-banner`**}.***\n * ----------------------------------------------------------------\n */\nexport type GeneratePackageBannerOptions = {\n /** ----------------------------------------------------------------\n * * ***Display title shown in the banner.***\n * ----------------------------------------------------------------\n *\n * Defaults to the `name` field from `package.json`\n * when available.\n */\n title?: string;\n\n /** ----------------------------------------------------------------\n * * ***Author name displayed in the banner.***\n * ----------------------------------------------------------------\n *\n * When omitted, attempts to resolve from:\n * - `author.name`.\n * - `author` (*string*).\n */\n author?: string;\n\n /** ----------------------------------------------------------------\n * * ***Custom package metadata override.***\n * ----------------------------------------------------------------\n *\n * When provided, this object will be used instead of\n * reading from the filesystem.\n *\n * - Useful for testing or advanced build pipelines.\n */\n packageJson?: PackageJson;\n\n /** ----------------------------------------------------------------\n * * ***Append an end-of-file newline to the banner output.***\n * ----------------------------------------------------------------\n *\n * Controls whether the generated banner is terminated with\n * an end-of-file (EOF) newline character.\n *\n * When enabled, a trailing newline is appended to ensure:\n * - POSIX-compliant text files.\n * - Clean concatenation with subsequent source content.\n * - Consistent formatting during code injection.\n *\n * @default true\n */\n withEof?: boolean;\n};\n\n//? Main -----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Generate a standardized top banner from `package.json`.***\n * ----------------------------------------------------------------\n *\n * This utility generates a formatted banner comment suitable\n * for insertion at the top of bundled output files.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n *\n * - *This function is intended for:*\n * - Bundler banners (tsdown, tsup, rollup, esbuild, etc).\n * - Generated build artifacts.\n * - Distributed library outputs.\n *\n * @param {GeneratePackageBannerOptions} [options]\n * Optional banner configuration.\n *\n * @returns {string}\n * A formatted banner comment string.\n *\n * @example\n * ```ts\n * const banner = await generatePackageBanner({\n * title: \"Rzl Build Tools\",\n * author: \"Rzl\"\n * });\n * ```\n *\n * @example\n * ```ts\n * const banner = await generatePackageBanner();\n * ```\n */\nexport const generatePackageBanner = async (\n options: GeneratePackageBannerOptions = {}\n): Promise<string> => {\n const pkg = options.packageJson ?? (await getPackageJson());\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkg.name) ? pkg.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkg.version) ? pkg.version : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkg.author)\n ? pkg.author\n : isPlainObject(pkg.author) && isNonEmptyString(pkg.author.name)\n ? pkg.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkg.homepage)\n ? pkg.homepage.split(\"#\")[0]\n : isNonEmptyString(pkg.repository)\n ? pkg.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkg.repository) && isNonEmptyString(pkg.repository.url)\n ? pkg.repository.url.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : \"Unknown\";\n\n return joinLinesLoose(\n \"/*!\",\n \"* ========================================================================\",\n `* ${title}`,\n \"* ------------------------------------------------------------------------\",\n `* Version: \\`${version}\\``,\n `* Author: \\`${author}\\``,\n `* Repository: \\`${repository}\\``,\n \"* ========================================================================\",\n \"*/\",\n withEof ? \"\" : false\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,MAAa,iBAAiB,OAC5B,UAAiC,EAAE,KACV;CAKzB,IAAI,UAJaA,gCAAiB,QAAQ,IAAI,GAC1CC,kBAAK,QAAQ,QAAQ,IAAI,GACzB,QAAQ,KAAK;AAIjB,QAAO,MAAM;EACX,MAAM,UAAUA,kBAAK,KAAK,SAAS,eAAe;AAElD,MAAIC,uBAAQ,WAAW,QAAQ,CAC7B,KAAI;AACF,UAAO,KAAK,MAAMA,uBAAQ,aAAa,SAAS,QAAQ,CAAC;WAClD,KAAK;AACZ,SAAM,IAAI,MACR,0EAA0E,QAAQ,KAChFC,qBACA,WAAY,IAAc,WAC5B,EAAE,OAAO,KAAK,CACf;;EAIL,MAAM,SAASF,kBAAK,QAAQ,QAAQ;AACpC,MAAI,WAAW,QAAS;AAExB,YAAU;;AAGZ,OAAM,IAAI,MACR,8EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBH,MAAa,wBAAwB,OACnC,UAAwC,EAAE,KACtB;CACpB,MAAM,MAAM,QAAQ,eAAgB,MAAM,gBAAgB;CAC1D,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACPG,gCAAiB,IAAI,KAAK,GAAG,IAAI,OAAO;CAE3C,MAAM,UAAUA,gCAAiB,IAAI,QAAQ,GAAG,IAAI,UAAU;CAE9D,MAAM,SACJ,QAAQ,WACPA,gCAAiB,IAAI,OAAO,GACzB,IAAI,SACJC,6BAAc,IAAI,OAAO,IAAID,gCAAiB,IAAI,OAAO,KAAK,GAC5D,IAAI,OAAO,OACX;CAER,MAAM,aAAaA,gCAAiB,IAAI,SAAS,GAC7C,IAAI,SAAS,MAAM,IAAI,CAAC,KACxBA,gCAAiB,IAAI,WAAW,GAC9B,IAAI,WAAW,QAAQ,UAAU,GAAG,CAAC,QAAQ,UAAU,GAAG,GAC1DC,6BAAc,IAAI,WAAW,IAAID,gCAAiB,IAAI,WAAW,IAAI,GACnE,IAAI,WAAW,IAAI,QAAQ,UAAU,GAAG,CAAC,QAAQ,UAAU,GAAG,GAC9D;AAER,QAAOE,8BACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,MAChB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-banner-BxSvfrTb.js","names":[],"sources":["../src/core/get/package-json/index.ts","../src/core/generate/package-banner/index.ts"],"sourcesContent":["import \"@rzl-zone/node-only\";\n\nimport type { PackageJson } from \"type-fest\";\n\nimport path from \"node:path\";\n\nimport { isNonEmptyString } from \"@/_internal/utils/helper\";\n\nimport { fsExtra } from \"@/utils/server\";\nimport { EOL } from \"@/utils/client\";\n\n//? Types ----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Configuration options for {@link getPackageJson | **`get-package-json`**}.***\n * ----------------------------------------------------------------\n */\nexport type GetPackageJsonOptions = {\n /** ----------------------------------------------------------------\n * * ***Working directory of the target project.***\n * ----------------------------------------------------------------\n *\n * This determines where the lookup for `package.json`\n * will start.\n *\n * - If provided, resolution begins from this directory.\n * - If omitted, defaults to `process.cwd()`.\n *\n * - ***Typical use cases:***\n * - CLI tools executed in a project directory.\n * - Monorepo root resolution.\n * - Custom build pipelines.\n *\n * @default process.cwd()\n *\n * @remarks\n * This should be the directory containing your project's\n * `package.json`, not the directory of this package.\n */\n cwd?: string;\n};\n\n//? Main -----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Resolve and read the nearest `package.json`.***\n * ----------------------------------------------------------------\n *\n * This utility locates and loads the closest `package.json`\n * by walking up the directory tree starting from a given\n * working directory.\n *\n * - *Key characteristics:*\n * - Works in **Node ESM and CJS**.\n * - Compatible with **tsdown, rolldown, tsup, esbuild, vite, tsx, ts-node, and others**.\n * - Does **not** rely on JSON module imports.\n * - Fully typed via {@link PackageJson | **PackageJson**}.\n *\n * - *This function is intended for:*\n * - Build tools.\n * - Bundler configuration.\n * - CLI utilities.\n * - Monorepo-aware infrastructure code.\n *\n * @param options Optional resolution configuration.\n *\n * @returns The parsed contents of the resolved `package.json`.\n *\n * @example\n * ```ts\n * const pkg = await getPackageJson();\n * console.log(pkg.name, pkg.version);\n * ```\n *\n * @example\n * ```ts\n * const pkg = await getPackageJson({\n * cwd: process.cwd()\n * });\n * ```\n *\n * @throws If no `package.json` can be found.\n * @throws If the located `package.json` is invalid JSON.\n *\n * @remarks\n * - Resolution always starts from `cwd` or `process.cwd()`.\n * - Results are not cached by default.\n * - Designed for infrastructure-level usage, not hot paths.\n */\nexport const getPackageJson = async (\n options: GetPackageJsonOptions = {}\n): Promise<PackageJson> => {\n const startDir = isNonEmptyString(options.cwd)\n ? path.resolve(options.cwd)\n : process.cwd();\n\n let current = startDir;\n\n while (true) {\n const pkgPath = path.join(current, \"package.json\");\n\n if (fsExtra.existsSync(pkgPath)) {\n try {\n return JSON.parse(fsExtra.readFileSync(pkgPath, \"utf-8\"));\n } catch (err) {\n throw new Error(\n `[@rzl-zone/build-tools] - (get-package-json): Invalid package.json at '${pkgPath}'` +\n EOL +\n `Reason: ${(err as Error).message}`,\n { cause: err }\n );\n }\n }\n\n const parent = path.dirname(current);\n if (parent === current) break;\n\n current = parent;\n }\n\n throw new Error(\n \"[@rzl-zone/build-tools] - (get-package-json): Unable to locate package.json\"\n );\n};\n\n/** @deprecated Use {@link getPackageJson | `getPackageJson`} instead. */\nconst _getPackageJson = async (\n options: GetPackageJsonOptions = {}\n): Promise<PackageJson> => {\n return await getPackageJson(options);\n // if (options.cwd && options.from) {\n // throw new Error(\"Provide either `cwd` or `from`, not both.\");\n // }\n\n // const cwd = isNonEmptyString(options.cwd) ? options.cwd : process.cwd();\n\n // const baseUrl =\n // options.from && isNil(options.cwd)\n // ? options.from\n // : pathToFileURL(path.resolve(cwd, \"__entry__.js\"));\n\n // const createRequire = await getCreateRequire();\n // const reqPkg = createRequire(baseUrl);\n\n // let current = cwd;\n\n // while (true) {\n // const pkgPath = path.join(current, \"package.json\");\n\n // if (fsExtra.existsSync(pkgPath)) return reqPkg(pkgPath);\n\n // const parent = path.dirname(current);\n // if (parent === current) break;\n // current = parent;\n // }\n\n // throw new Error(\n // \"[@rzl-zone/build-tools] - (get-package-json): Unable to locate package.json !!!\"\n // );\n};\n","import \"@rzl-zone/node-only\";\n\nimport type { PackageJson } from \"type-fest\";\n\nimport { isNonEmptyString, isPlainObject } from \"@/_internal/utils/helper\";\n\nimport { joinLinesLoose } from \"@/utils/helper/formatter\";\nimport { getPackageJson } from \"../../get/package-json\";\n\n//? Types ----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Configuration options for {@link generatePackageBanner | **`generate-package-banner`**}.***\n * ----------------------------------------------------------------\n */\nexport type GeneratePackageBannerOptions = {\n /** ----------------------------------------------------------------\n * * ***Display title shown in the banner.***\n * ----------------------------------------------------------------\n *\n * Defaults to the `name` field from `package.json`\n * when available.\n */\n title?: string;\n\n /** ----------------------------------------------------------------\n * * ***Author name displayed in the banner.***\n * ----------------------------------------------------------------\n *\n * When omitted, attempts to resolve from:\n * - `author.name`.\n * - `author` (*string*).\n */\n author?: string;\n\n /** ----------------------------------------------------------------\n * * ***Custom package metadata override.***\n * ----------------------------------------------------------------\n *\n * When provided, this object will be used instead of\n * reading from the filesystem.\n *\n * - Useful for testing or advanced build pipelines.\n */\n packageJson?: PackageJson;\n\n /** ----------------------------------------------------------------\n * * ***Append an end-of-file newline to the banner output.***\n * ----------------------------------------------------------------\n *\n * Controls whether the generated banner is terminated with\n * an end-of-file (EOF) newline character.\n *\n * When enabled, a trailing newline is appended to ensure:\n * - POSIX-compliant text files.\n * - Clean concatenation with subsequent source content.\n * - Consistent formatting during code injection.\n *\n * @default true\n */\n withEof?: boolean;\n};\n\n//? Main -----------------------------------------------------------------\n/** ----------------------------------------------------------------\n * * ***Generate a standardized top banner from `package.json`.***\n * ----------------------------------------------------------------\n *\n * This utility generates a formatted banner comment suitable\n * for insertion at the top of bundled output files.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n *\n * - *This function is intended for:*\n * - Bundler banners (tsdown, tsup, rollup, esbuild, etc).\n * - Generated build artifacts.\n * - Distributed library outputs.\n *\n * @param {GeneratePackageBannerOptions} [options]\n * Optional banner configuration.\n *\n * @returns {string}\n * A formatted banner comment string.\n *\n * @example\n * ```ts\n * const banner = await generatePackageBanner({\n * title: \"Rzl Build Tools\",\n * author: \"Rzl\"\n * });\n * ```\n *\n * @example\n * ```ts\n * const banner = await generatePackageBanner();\n * ```\n */\nexport const generatePackageBanner = async (\n options: GeneratePackageBannerOptions = {}\n): Promise<string> => {\n const pkg = options.packageJson ?? (await getPackageJson());\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkg.name) ? pkg.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkg.version) ? pkg.version : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkg.author)\n ? pkg.author\n : isPlainObject(pkg.author) && isNonEmptyString(pkg.author.name)\n ? pkg.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkg.homepage)\n ? pkg.homepage.split(\"#\")[0]\n : isNonEmptyString(pkg.repository)\n ? pkg.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkg.repository) && isNonEmptyString(pkg.repository.url)\n ? pkg.repository.url.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : \"Unknown\";\n\n return joinLinesLoose(\n \"/*!\",\n \"* ========================================================================\",\n `* ${title}`,\n \"* ------------------------------------------------------------------------\",\n `* Version: \\`${version}\\``,\n `* Author: \\`${author}\\``,\n `* Repository: \\`${repository}\\``,\n \"* ========================================================================\",\n \"*/\",\n withEof ? \"\" : false\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,MAAa,iBAAiB,OAC5B,UAAiC,EAAE,KACV;CAKzB,IAAI,UAJa,iBAAiB,QAAQ,IAAI,GAC1C,KAAK,QAAQ,QAAQ,IAAI,GACzB,QAAQ,KAAK;AAIjB,QAAO,MAAM;EACX,MAAM,UAAU,KAAK,KAAK,SAAS,eAAe;AAElD,MAAI,QAAQ,WAAW,QAAQ,CAC7B,KAAI;AACF,UAAO,KAAK,MAAM,QAAQ,aAAa,SAAS,QAAQ,CAAC;WAClD,KAAK;AACZ,SAAM,IAAI,MACR,0EAA0E,QAAQ,KAChF,MACA,WAAY,IAAc,WAC5B,EAAE,OAAO,KAAK,CACf;;EAIL,MAAM,SAAS,KAAK,QAAQ,QAAQ;AACpC,MAAI,WAAW,QAAS;AAExB,YAAU;;AAGZ,OAAM,IAAI,MACR,8EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBH,MAAa,wBAAwB,OACnC,UAAwC,EAAE,KACtB;CACpB,MAAM,MAAM,QAAQ,eAAgB,MAAM,gBAAgB;CAC1D,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACP,iBAAiB,IAAI,KAAK,GAAG,IAAI,OAAO;CAE3C,MAAM,UAAU,iBAAiB,IAAI,QAAQ,GAAG,IAAI,UAAU;CAE9D,MAAM,SACJ,QAAQ,WACP,iBAAiB,IAAI,OAAO,GACzB,IAAI,SACJ,cAAc,IAAI,OAAO,IAAI,iBAAiB,IAAI,OAAO,KAAK,GAC5D,IAAI,OAAO,OACX;CAER,MAAM,aAAa,iBAAiB,IAAI,SAAS,GAC7C,IAAI,SAAS,MAAM,IAAI,CAAC,KACxB,iBAAiB,IAAI,WAAW,GAC9B,IAAI,WAAW,QAAQ,UAAU,GAAG,CAAC,QAAQ,UAAU,GAAG,GAC1D,cAAc,IAAI,WAAW,IAAI,iBAAiB,IAAI,WAAW,IAAI,GACnE,IAAI,WAAW,IAAI,QAAQ,UAAU,GAAG,CAAC,QAAQ,UAAU,GAAG,GAC9D;AAER,QAAO,eACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,MAChB"}