@rzl-zone/build-tools 0.0.13-beta.0 → 0.0.13

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 (59) hide show
  1. package/dist/.references/index.d.cts +1 -1
  2. package/dist/.references/index.d.ts +1 -1
  3. package/dist/bundler/rolldown.cjs +2 -2
  4. package/dist/bundler/rolldown.d.cts +2 -2
  5. package/dist/bundler/rolldown.d.ts +2 -2
  6. package/dist/bundler/rolldown.js +1 -1
  7. package/dist/bundler/tsdown.cjs +3 -3
  8. package/dist/bundler/tsdown.d.cts +2 -2
  9. package/dist/bundler/tsdown.d.ts +2 -2
  10. package/dist/bundler/tsdown.js +3 -3
  11. package/dist/bundler/utils.cjs +2 -2
  12. package/dist/bundler/utils.d.cts +2 -2
  13. package/dist/bundler/utils.d.ts +2 -2
  14. package/dist/bundler/utils.js +2 -2
  15. package/dist/{client-zWQZhiSc.js → client-DgQRjdo8.js} +3 -3
  16. package/dist/{client-zWQZhiSc.js.map → client-DgQRjdo8.js.map} +1 -1
  17. package/dist/{client-BxPDkM02.cjs → client-DowGlRm4.cjs} +3 -3
  18. package/dist/{client-BxPDkM02.cjs.map → client-DowGlRm4.cjs.map} +1 -1
  19. package/dist/commander-kit/index.cjs +5 -5
  20. package/dist/commander-kit/index.d.cts +3 -3
  21. package/dist/commander-kit/index.d.ts +3 -3
  22. package/dist/commander-kit/index.js +5 -5
  23. package/dist/{extra-DJ0EgomU.d.ts → extra-B0cm-axJ.d.cts} +2 -2
  24. package/dist/{extra-DJ0EgomU.d.cts → extra-B0cm-axJ.d.ts} +2 -2
  25. package/dist/{fast-globe-options-CJnYooE-.d.ts → fast-globe-options-CUaH5spu.d.ts} +3 -3
  26. package/dist/{fast-globe-options-Bp5JWpzY.d.cts → fast-globe-options-DXVzXC8B.d.cts} +3 -3
  27. package/dist/{formatter-ekJQF_bA.js → formatter-BFgV1HhV.js} +2 -2
  28. package/dist/{formatter-ekJQF_bA.js.map → formatter-BFgV1HhV.js.map} +1 -1
  29. package/dist/{formatter-CLHvHAyx.cjs → formatter-C-Yt_Gvf.cjs} +2 -2
  30. package/dist/{formatter-CLHvHAyx.cjs.map → formatter-C-Yt_Gvf.cjs.map} +1 -1
  31. package/dist/{identity-UxpzNSCQ.cjs → identity-8Wy_JtzU.cjs} +5 -5
  32. package/dist/{identity-UxpzNSCQ.cjs.map → identity-8Wy_JtzU.cjs.map} +1 -1
  33. package/dist/{identity-LNFw6-ML.js → identity-DPB1Qgy4.js} +5 -5
  34. package/dist/{identity-LNFw6-ML.js.map → identity-DPB1Qgy4.js.map} +1 -1
  35. package/dist/{index-EwWjPLu5.d.ts → index-8QVWHQzC.d.cts} +2 -2
  36. package/dist/{index-EwWjPLu5.d.cts → index-8QVWHQzC.d.ts} +2 -2
  37. package/dist/{index-UKNPV91f.d.ts → index-CyGIoXau.d.cts} +2 -2
  38. package/dist/{index-UKNPV91f.d.cts → index-CyGIoXau.d.ts} +2 -2
  39. package/dist/index.cjs +5 -5
  40. package/dist/index.d.cts +5 -5
  41. package/dist/index.d.ts +5 -5
  42. package/dist/index.js +5 -5
  43. package/dist/{package-banner-C0ewgXTo.js → package-banner-BjakxfTu.js} +4 -4
  44. package/dist/{package-banner-C0ewgXTo.js.map → package-banner-BjakxfTu.js.map} +1 -1
  45. package/dist/{package-banner-9qGLS222.cjs → package-banner-Cf5uu-7p.cjs} +4 -4
  46. package/dist/{package-banner-9qGLS222.cjs.map → package-banner-Cf5uu-7p.cjs.map} +1 -1
  47. package/dist/{server-C4YnwxM_.js → server-B1jiYLZq.js} +3 -3
  48. package/dist/{server-C4YnwxM_.js.map → server-B1jiYLZq.js.map} +1 -1
  49. package/dist/{server-ze9l-Kd_.cjs → server-BRuKWcjy.cjs} +3 -3
  50. package/dist/{server-ze9l-Kd_.cjs.map → server-BRuKWcjy.cjs.map} +1 -1
  51. package/dist/utils/client.cjs +3 -3
  52. package/dist/utils/client.d.cts +1 -1
  53. package/dist/utils/client.d.ts +1 -1
  54. package/dist/utils/client.js +3 -3
  55. package/dist/utils/server.cjs +2 -2
  56. package/dist/utils/server.d.cts +3 -3
  57. package/dist/utils/server.d.ts +3 -3
  58. package/dist/utils/server.js +2 -2
  59. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"identity-LNFw6-ML.js","names":["packageJson.name","packageJson.version"],"sources":["../package.json","../src/_internal/constants/package-meta.ts","../src/commander-kit/identity/index.ts"],"sourcesContent":["","import packageJson from \"../../../package.json\";\n\n/** ----------------------------------------------------------------\n * * ***Shared package metadata derived from the package manifest.***\n * ----------------------------------------------------------------\n *\n * Centralized access to metadata sourced from the root\n * `package.json` file.\n *\n * - *This utility exists to:*\n * - Avoid repeated `package.json` imports across Node.js entry points.\n * - Ensure consistent versioning and naming.\n * - Provide a single source of truth for package-level metadata.\n *\n * - ⚠️ **Important:**\n * - This file MUST only be imported in Node.js environments.\n * - Not intended for browser or edge runtimes.\n *\n * @internal\n *\n */\nexport const PACKAGE_META = Object.freeze({\n /** Package name. */\n name: packageJson.name,\n\n /** Current package version. */\n version: packageJson.version\n});\n","import \"@rzl-zone/node-only\";\n\nimport { isNonEmptyString } from \"@/_internal/utils/helper\";\nimport { PACKAGE_META } from \"@/_internal/constants/package-meta\";\n\nimport { ICONS } from \"@/utils/server\";\nimport { picocolors } from \"@/utils/client\";\n\n/** ----------------------------------------------------------------\n * * ***Options for generating a utility command title.***\n * ----------------------------------------------------------------\n *\n * Used by `CommandIdentity.utility()`.\n */\ntype CommandUtilityTitleOptions = {\n /** ----------------------------------------------------------------\n * * ***Command name displayed in the title.***\n * ----------------------------------------------------------------\n *\n * Overrides the default command name provided in the constructor.\n *\n * @example\n * ```ts\n * { commandName: \"fix-dts-react-import\" }\n * ```\n */\n commandName?: string;\n\n /** ----------------------------------------------------------------\n * * ***Optional arrow icon override.***\n * ----------------------------------------------------------------\n *\n * If provided, this icon replaces the generator's\n * `defaultIconArrow` for this call only.\n *\n * @example\n * ```ts\n * { iconArrow: \"⇒\" }\n * ```\n */\n iconArrow?: string;\n\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Displayed at the beginning of every generated title.\n *\n * @default \"@rzl-zone/build-tools\"\n */\n packageName?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Options for generating a CLI command title.***\n * ----------------------------------------------------------------\n *\n * Used by `CommandIdentity.cli()`\n */\ntype CommandCliTitleOptions = Omit<\n CommandUtilityTitleOptions,\n \"packageName\"\n> & {\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Overrides the resolved CLI package name for this call only.\n *\n * @default \"@rzl-zone/build-tools-cli\"\n */\n packageName?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Global configuration for command identity formatting.***\n * ----------------------------------------------------------------\n *\n * Defines the default identity behavior applied to\n * all generated CLI and utility titles.\n */\ntype CommandIdentityOptions = {\n /** ----------------------------------------------------------------\n * * ***Default command name.***\n * ----------------------------------------------------------------\n *\n * Used when a command name is not provided in the respective in method `CommandIdentity.cli()` and `CommandIdentity.utility()` options.\n *\n * @example\n * ```ts\n * defaultCommandName: \"fix-dts-react-import\"\n * ```\n */\n defaultCommandName: string;\n\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Optional base package name used for title generation.\n *\n * If not provided, an internal default will be resolved\n * depending on the title type (`CLI` or `utility`).\n */\n packageName?: string;\n\n /** ----------------------------------------------------------------\n * * ***Package version.***\n * ----------------------------------------------------------------\n *\n * Optional version displayed alongside the package name\n * in generated titles.\n *\n * If not provided, a default version will be resolved internally.\n *\n * @example\n * ```ts\n * version: \"1.2.0\"\n * ```\n */\n version?: string;\n\n /** ----------------------------------------------------------------\n * * ***Label for CLI commands.***\n * ----------------------------------------------------------------\n *\n * Optional label displayed between\n * the package name and arrow icon for CLI titles.\n */\n cliLabel?: string;\n\n /** ----------------------------------------------------------------\n * * ***Label for utility commands.***\n * ----------------------------------------------------------------\n *\n * Optional label displayed between\n * the package name and arrow icon for utility titles.\n */\n utilityLabel?: string;\n\n /** ----------------------------------------------------------------\n * * ***Default arrow icon.***\n * ----------------------------------------------------------------\n *\n * Icon displayed between the label and command name.\n *\n * @default\n * \"▶️\"\n * // or\n * \"▶\"\n */\n defaultIconArrow?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Command identity formatter with consistent CLI styling.***\n * ----------------------------------------------------------------\n *\n * Responsible for generating formatted and colorized\n * command titles for CLI and utility commands.\n *\n * - ***Each generated title may include:***\n * - Package name.\n * - Optional label (CLI / utility).\n * - Arrow icon.\n * - Command name.\n * - Package version.\n *\n * ---\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"fix-dts-react-import\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@<version> ➔ fix-dts-react-import\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@<version> ➔ clean-dist\"\n * ```\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"build\",\n * version: \"2.1.0\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@2.1.0 ➔ build\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@2.1.0 ➔ clean-dist\"\n * ```\n */\nexport class CommandIdentity {\n /** Default command name.\n *\n * @internal\n */\n private _commandName: string;\n\n /** Package name.\n *\n * @internal\n */\n private _packageName: string | undefined;\n\n /** Package version.\n *\n * @internal\n */\n private _version: string;\n\n /** Label for CLI commands.\n *\n * @internal\n */\n private cliLabel: string | undefined;\n\n /** Label for utility commands.\n *\n * @internal\n */\n private utilityLabel: string | undefined;\n\n /** Default arrow icon.\n *\n * @internal\n */\n private defaultIconArrow: string;\n\n /** @internal */\n private static readonly DEFAULT_UTILITY_PACKAGE = \"@rzl-zone/build-tools\";\n /** @internal */\n private static readonly DEFAULT_CLI_PACKAGE = \"@rzl-zone/build-tools-cli\";\n\n /** ----------------------------------------------------------------\n * * ***Create a new command identity instance.***\n * ----------------------------------------------------------------\n *\n * Initializes global identity configuration\n * used by `CommandIdentity.cli()` and `CommandIdentity.utility()`.\n *\n * ---\n *\n * @param {CommandIdentityOptions} options - Global identity configuration.\n * @throws {Error} If `options.defaultCommandName` is missing or empty.\n *\n * ---\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"fix-dts-react-import\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@<version> ➔ fix-dts-react-import\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@<version> ➔ clean-dist\"\n * ```\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"build\",\n * version: \"2.1.0\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@2.1.0 ➔ build\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@2.1.0 ➔ clean-dist\"\n * ```\n */\n constructor(options: CommandIdentityOptions) {\n if (!isNonEmptyString(options.defaultCommandName)) {\n throw new Error(\n \"CommandIdentity: Default command name is missing, please provide in constructor method options, eg: ({ defaultCommandName: 'inject-directive' }).\"\n );\n }\n\n this._commandName = options.defaultCommandName;\n this._packageName = options.packageName;\n this._version = isNonEmptyString(options.version)\n ? options.version\n : PACKAGE_META.version;\n\n this.cliLabel = options.cliLabel;\n this.utilityLabel = options.utilityLabel;\n this.defaultIconArrow = options.defaultIconArrow ?? ICONS.arrowRight;\n }\n\n /** ----------------------------------------------------------------\n * * ***Internal title formatter.***\n * ----------------------------------------------------------------\n *\n * Shared formatter used by `CommandIdentity.cli()` and `CommandIdentity.utility()`.\n *\n * @internal\n */\n private format(props: {\n packageName: string;\n label?: string;\n name?: string;\n iconArrow?: string;\n }): string {\n const { label, name, iconArrow, packageName } = props;\n const finalName = isNonEmptyString(name) ? name : this._commandName;\n const finalLabel = isNonEmptyString(label) ? ` ${label} ` : \" \";\n\n if (!finalName) {\n throw new Error(\n \"CommandIdentity: Command name is missing. \" +\n \"Provide `defaultCommandName` in constructor or `name` in method options.\"\n );\n }\n\n const versionSuffix = isNonEmptyString(this._version)\n ? `@${this._version}`\n : \"\";\n\n return (\n `${picocolors.bold(picocolors.blue(packageName + versionSuffix))}` +\n `${picocolors.whiteBright(finalLabel)}` +\n `${picocolors.bold(picocolors.magentaBright(isNonEmptyString(iconArrow) ? iconArrow : this.defaultIconArrow))} ` +\n `${picocolors.underline(picocolors.italic(picocolors.yellowBright(finalName)))}`\n );\n }\n\n /** ----------------------------------------------------------------\n * * ***Generate a CLI command title.***\n * ----------------------------------------------------------------\n *\n * Uses the CLI default package (unless overridden)\n * and applies CLI-specific labeling.\n *\n * @param {CommandCliTitleOptions} options - CLI title configuration.\n *\n * @example\n * ```ts\n * identity.cli();\n * identity.cli({ commandName: \"build\" });\n * ```\n */\n public cli(options: CommandCliTitleOptions = {}): string {\n const packageName = isNonEmptyString(options.packageName)\n ? options.packageName\n : (this._packageName ?? CommandIdentity.DEFAULT_CLI_PACKAGE);\n\n return this.format({\n packageName,\n label: this.cliLabel,\n name: options.commandName,\n iconArrow: options.iconArrow\n });\n }\n\n /** ----------------------------------------------------------------\n * * ***Generate a utility command title.***\n * ----------------------------------------------------------------\n *\n * Uses the utility default package (unless overridden)\n * and applies utility-specific labeling.\n *\n * @param {CommandUtilityTitleOptions} options - Utility title configuration.\n *\n * @example\n * ```ts\n * identity.utility();\n * identity.utility({ commandName: \"clean-dist\", iconArrow: \"⇒\" });\n * ```\n */\n public utility(options: CommandUtilityTitleOptions = {}): string {\n const packageName = isNonEmptyString(options.packageName)\n ? options.packageName\n : (this._packageName ?? CommandIdentity.DEFAULT_UTILITY_PACKAGE);\n\n return this.format({\n packageName,\n label: this.utilityLabel,\n name: options.commandName,\n iconArrow: options.iconArrow\n });\n }\n\n /** ----------------------------------------------------------------\n * * ***Package name.***\n * ----------------------------------------------------------------\n *\n * Returns the effective package name used for title generation.\n *\n * If a custom package name has been provided via the constructor\n * or `CommandIdentity.setPackageName()`, that value will be returned.\n * Otherwise, an internal default package name (as utility) is used.\n *\n * @readonly\n */\n public get packageName(): string {\n return this._packageName ?? CommandIdentity.DEFAULT_UTILITY_PACKAGE;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set package name.***\n * ----------------------------------------------------------------\n *\n * Assigns a custom package name to be used for title generation.\n *\n * - *This value overrides:*\n * - Any package name provided in the constructor.\n * - The internal default package name.\n *\n * Once set, this value will be returned by the `CommandIdentity.packageName`\n * getter and used by `CommandIdentity.cli()` and\n * `CommandIdentity.utility()` unless explicitly\n * overridden per method call.\n *\n * @param value - The new package name to assign.\n * @returns The current instance for fluent chaining.\n */\n public setPackageName(value: string): this {\n this._packageName = value;\n return this;\n }\n\n /** ----------------------------------------------------------------\n * * ***Command name.***\n * ----------------------------------------------------------------\n *\n * Returns the current command name used for title generation.\n *\n * This value is initialized via the constructor and may be\n * updated later using\n * `CommandIdentity.setCommandName()`.\n *\n * @readonly\n */\n public get commandName(): string {\n return this._commandName;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set command name.***\n * ----------------------------------------------------------------\n *\n * Updates the command name used for title generation.\n *\n * This overrides the command name provided in the constructor\n * and affects subsequent calls to\n * `CommandIdentity.cli()`\n * and `CommandIdentity.utility()`,\n * unless a command name is explicitly provided per method call.\n *\n * @param value - The new command name to assign.\n * @returns The current instance for fluent chaining.\n */\n public setCommandName(value: string): this {\n this._commandName = value;\n return this;\n }\n\n /** ----------------------------------------------------------------\n * * ***Package version.***\n * ----------------------------------------------------------------\n *\n * Returns the effective version used for title generation.\n *\n * - *Resolution order:*\n * 1. If a custom version has been provided via the constructor\n * or `CommandIdentity.setVersion()`,\n * that value will be returned.\n * 2. Otherwise, the version falls back to the internally\n * resolved default package version.\n *\n * A version value is always guaranteed to be present.\n *\n * @readonly\n */\n public get version(): string {\n return this._version;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set package version.***\n * ----------------------------------------------------------------\n *\n * Overrides the version used for title generation.\n *\n * If an empty or invalid value is provided,\n * the version will remain unchanged.\n *\n * @param value - The new version to assign.\n * @returns The current instance for fluent chaining.\n */\n public setVersion(value: string): this {\n if (isNonEmptyString(value)) this._version = value;\n\n return this;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqBA,MAAa,eAAe,OAAO,OAAO;;CAElCA;;CAGGC;AACX,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0KD,IAAa,kBAAb,MAAa,gBAAgB;;;;;CAK3B,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;CAGR,OAAwB,0BAA0B;;CAElD,OAAwB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9C,YAAY,SAAiC;EAC3C,IAAI,CAAC,iBAAiB,QAAQ,kBAAkB,GAC9C,MAAM,IAAI,MACR,mJACF;EAGF,KAAK,eAAe,QAAQ;EAC5B,KAAK,eAAe,QAAQ;EAC5B,KAAK,WAAW,iBAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR,aAAa;EAEjB,KAAK,WAAW,QAAQ;EACxB,KAAK,eAAe,QAAQ;EAC5B,KAAK,mBAAmB,QAAQ,oBAAoB,MAAM;CAC5D;;;;;;;;;CAUA,AAAQ,OAAO,OAKJ;EACT,MAAM,EAAE,OAAO,MAAM,WAAW,gBAAgB;EAChD,MAAM,YAAY,iBAAiB,IAAI,IAAI,OAAO,KAAK;EACvD,MAAM,aAAa,iBAAiB,KAAK,IAAI,IAAI,MAAM,KAAK;EAE5D,IAAI,CAAC,WACH,MAAM,IAAI,MACR,oHAEF;EAGF,MAAM,gBAAgB,iBAAiB,KAAK,QAAQ,IAChD,IAAI,KAAK,aACT;EAEJ,OACE,GAAG,WAAW,KAAK,WAAW,KAAK,cAAc,aAAa,CAAC,IAC5D,WAAW,YAAY,UAAU,IACjC,WAAW,KAAK,WAAW,cAAc,iBAAiB,SAAS,IAAI,YAAY,KAAK,gBAAgB,CAAC,EAAE,GAC3G,WAAW,UAAU,WAAW,OAAO,WAAW,aAAa,SAAS,CAAC,CAAC;CAEjF;;;;;;;;;;;;;;;;CAiBA,AAAO,IAAI,UAAkC,CAAC,GAAW;EACvD,MAAM,cAAc,iBAAiB,QAAQ,WAAW,IACpD,QAAQ,cACP,KAAK,gBAAgB,gBAAgB;EAE1C,OAAO,KAAK,OAAO;GACjB;GACA,OAAO,KAAK;GACZ,MAAM,QAAQ;GACd,WAAW,QAAQ;EACrB,CAAC;CACH;;;;;;;;;;;;;;;;CAiBA,AAAO,QAAQ,UAAsC,CAAC,GAAW;EAC/D,MAAM,cAAc,iBAAiB,QAAQ,WAAW,IACpD,QAAQ,cACP,KAAK,gBAAgB,gBAAgB;EAE1C,OAAO,KAAK,OAAO;GACjB;GACA,OAAO,KAAK;GACZ,MAAM,QAAQ;GACd,WAAW,QAAQ;EACrB,CAAC;CACH;;;;;;;;;;;;;CAcA,IAAW,cAAsB;EAC/B,OAAO,KAAK,gBAAgB,gBAAgB;CAC9C;;;;;;;;;;;;;;;;;;;CAoBA,AAAO,eAAe,OAAqB;EACzC,KAAK,eAAe;EACpB,OAAO;CACT;;;;;;;;;;;;;CAcA,IAAW,cAAsB;EAC/B,OAAO,KAAK;CACd;;;;;;;;;;;;;;;;CAiBA,AAAO,eAAe,OAAqB;EACzC,KAAK,eAAe;EACpB,OAAO;CACT;;;;;;;;;;;;;;;;;;CAmBA,IAAW,UAAkB;EAC3B,OAAO,KAAK;CACd;;;;;;;;;;;;;CAcA,AAAO,WAAW,OAAqB;EACrC,IAAI,iBAAiB,KAAK,GAAG,KAAK,WAAW;EAE7C,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"identity-DPB1Qgy4.js","names":["packageJson.name","packageJson.version"],"sources":["../package.json","../src/_internal/constants/package-meta.ts","../src/commander-kit/identity/index.ts"],"sourcesContent":["","import packageJson from \"../../../package.json\";\n\n/** ----------------------------------------------------------------\n * * ***Shared package metadata derived from the package manifest.***\n * ----------------------------------------------------------------\n *\n * Centralized access to metadata sourced from the root\n * `package.json` file.\n *\n * - *This utility exists to:*\n * - Avoid repeated `package.json` imports across Node.js entry points.\n * - Ensure consistent versioning and naming.\n * - Provide a single source of truth for package-level metadata.\n *\n * - ⚠️ **Important:**\n * - This file MUST only be imported in Node.js environments.\n * - Not intended for browser or edge runtimes.\n *\n * @internal\n *\n */\nexport const PACKAGE_META = Object.freeze({\n /** Package name. */\n name: packageJson.name,\n\n /** Current package version. */\n version: packageJson.version\n});\n","import \"@rzl-zone/node-only\";\n\nimport { isNonEmptyString } from \"@/_internal/utils/helper\";\nimport { PACKAGE_META } from \"@/_internal/constants/package-meta\";\n\nimport { ICONS } from \"@/utils/server\";\nimport { picocolors } from \"@/utils/client\";\n\n/** ----------------------------------------------------------------\n * * ***Options for generating a utility command title.***\n * ----------------------------------------------------------------\n *\n * Used by `CommandIdentity.utility()`.\n */\ntype CommandUtilityTitleOptions = {\n /** ----------------------------------------------------------------\n * * ***Command name displayed in the title.***\n * ----------------------------------------------------------------\n *\n * Overrides the default command name provided in the constructor.\n *\n * @example\n * ```ts\n * { commandName: \"fix-dts-react-import\" }\n * ```\n */\n commandName?: string;\n\n /** ----------------------------------------------------------------\n * * ***Optional arrow icon override.***\n * ----------------------------------------------------------------\n *\n * If provided, this icon replaces the generator's\n * `defaultIconArrow` for this call only.\n *\n * @example\n * ```ts\n * { iconArrow: \"⇒\" }\n * ```\n */\n iconArrow?: string;\n\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Displayed at the beginning of every generated title.\n *\n * @default \"@rzl-zone/build-tools\"\n */\n packageName?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Options for generating a CLI command title.***\n * ----------------------------------------------------------------\n *\n * Used by `CommandIdentity.cli()`\n */\ntype CommandCliTitleOptions = Omit<\n CommandUtilityTitleOptions,\n \"packageName\"\n> & {\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Overrides the resolved CLI package name for this call only.\n *\n * @default \"@rzl-zone/build-tools-cli\"\n */\n packageName?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Global configuration for command identity formatting.***\n * ----------------------------------------------------------------\n *\n * Defines the default identity behavior applied to\n * all generated CLI and utility titles.\n */\ntype CommandIdentityOptions = {\n /** ----------------------------------------------------------------\n * * ***Default command name.***\n * ----------------------------------------------------------------\n *\n * Used when a command name is not provided in the respective in method `CommandIdentity.cli()` and `CommandIdentity.utility()` options.\n *\n * @example\n * ```ts\n * defaultCommandName: \"fix-dts-react-import\"\n * ```\n */\n defaultCommandName: string;\n\n /** ----------------------------------------------------------------\n * * ***Package name prefix.***\n * ----------------------------------------------------------------\n *\n * Optional base package name used for title generation.\n *\n * If not provided, an internal default will be resolved\n * depending on the title type (`CLI` or `utility`).\n */\n packageName?: string;\n\n /** ----------------------------------------------------------------\n * * ***Package version.***\n * ----------------------------------------------------------------\n *\n * Optional version displayed alongside the package name\n * in generated titles.\n *\n * If not provided, a default version will be resolved internally.\n *\n * @example\n * ```ts\n * version: \"1.2.0\"\n * ```\n */\n version?: string;\n\n /** ----------------------------------------------------------------\n * * ***Label for CLI commands.***\n * ----------------------------------------------------------------\n *\n * Optional label displayed between\n * the package name and arrow icon for CLI titles.\n */\n cliLabel?: string;\n\n /** ----------------------------------------------------------------\n * * ***Label for utility commands.***\n * ----------------------------------------------------------------\n *\n * Optional label displayed between\n * the package name and arrow icon for utility titles.\n */\n utilityLabel?: string;\n\n /** ----------------------------------------------------------------\n * * ***Default arrow icon.***\n * ----------------------------------------------------------------\n *\n * Icon displayed between the label and command name.\n *\n * @default\n * \"▶️\"\n * // or\n * \"▶\"\n */\n defaultIconArrow?: string;\n};\n\n/** ----------------------------------------------------------------\n * * ***Command identity formatter with consistent CLI styling.***\n * ----------------------------------------------------------------\n *\n * Responsible for generating formatted and colorized\n * command titles for CLI and utility commands.\n *\n * - ***Each generated title may include:***\n * - Package name.\n * - Optional label (CLI / utility).\n * - Arrow icon.\n * - Command name.\n * - Package version.\n *\n * ---\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"fix-dts-react-import\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@<version> ➔ fix-dts-react-import\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@<version> ➔ clean-dist\"\n * ```\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"build\",\n * version: \"2.1.0\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@2.1.0 ➔ build\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@2.1.0 ➔ clean-dist\"\n * ```\n */\nexport class CommandIdentity {\n /** Default command name.\n *\n * @internal\n */\n private _commandName: string;\n\n /** Package name.\n *\n * @internal\n */\n private _packageName: string | undefined;\n\n /** Package version.\n *\n * @internal\n */\n private _version: string;\n\n /** Label for CLI commands.\n *\n * @internal\n */\n private cliLabel: string | undefined;\n\n /** Label for utility commands.\n *\n * @internal\n */\n private utilityLabel: string | undefined;\n\n /** Default arrow icon.\n *\n * @internal\n */\n private defaultIconArrow: string;\n\n /** @internal */\n private static readonly DEFAULT_UTILITY_PACKAGE = \"@rzl-zone/build-tools\";\n /** @internal */\n private static readonly DEFAULT_CLI_PACKAGE = \"@rzl-zone/build-tools-cli\";\n\n /** ----------------------------------------------------------------\n * * ***Create a new command identity instance.***\n * ----------------------------------------------------------------\n *\n * Initializes global identity configuration\n * used by `CommandIdentity.cli()` and `CommandIdentity.utility()`.\n *\n * ---\n *\n * @param {CommandIdentityOptions} options - Global identity configuration.\n * @throws {Error} If `options.defaultCommandName` is missing or empty.\n *\n * ---\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"fix-dts-react-import\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@<version> ➔ fix-dts-react-import\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@<version> ➔ clean-dist\"\n * ```\n *\n * @example\n * ```ts\n * const identity = new CommandIdentity({\n * defaultCommandName: \"build\",\n * version: \"2.1.0\"\n * });\n *\n * identity.cli();\n * // => \"@rzl-zone/build-tools-cli@2.1.0 ➔ build\"\n *\n * identity.utility({ commandName: \"clean-dist\" });\n * // => \"@rzl-zone/build-tools@2.1.0 ➔ clean-dist\"\n * ```\n */\n constructor(options: CommandIdentityOptions) {\n if (!isNonEmptyString(options.defaultCommandName)) {\n throw new Error(\n \"CommandIdentity: Default command name is missing, please provide in constructor method options, eg: ({ defaultCommandName: 'inject-directive' }).\"\n );\n }\n\n this._commandName = options.defaultCommandName;\n this._packageName = options.packageName;\n this._version = isNonEmptyString(options.version)\n ? options.version\n : PACKAGE_META.version;\n\n this.cliLabel = options.cliLabel;\n this.utilityLabel = options.utilityLabel;\n this.defaultIconArrow = options.defaultIconArrow ?? ICONS.arrowRight;\n }\n\n /** ----------------------------------------------------------------\n * * ***Internal title formatter.***\n * ----------------------------------------------------------------\n *\n * Shared formatter used by `CommandIdentity.cli()` and `CommandIdentity.utility()`.\n *\n * @internal\n */\n private format(props: {\n packageName: string;\n label?: string;\n name?: string;\n iconArrow?: string;\n }): string {\n const { label, name, iconArrow, packageName } = props;\n const finalName = isNonEmptyString(name) ? name : this._commandName;\n const finalLabel = isNonEmptyString(label) ? ` ${label} ` : \" \";\n\n if (!finalName) {\n throw new Error(\n \"CommandIdentity: Command name is missing. \" +\n \"Provide `defaultCommandName` in constructor or `name` in method options.\"\n );\n }\n\n const versionSuffix = isNonEmptyString(this._version)\n ? `@${this._version}`\n : \"\";\n\n return (\n `${picocolors.bold(picocolors.blue(packageName + versionSuffix))}` +\n `${picocolors.whiteBright(finalLabel)}` +\n `${picocolors.bold(picocolors.magentaBright(isNonEmptyString(iconArrow) ? iconArrow : this.defaultIconArrow))} ` +\n `${picocolors.underline(picocolors.italic(picocolors.yellowBright(finalName)))}`\n );\n }\n\n /** ----------------------------------------------------------------\n * * ***Generate a CLI command title.***\n * ----------------------------------------------------------------\n *\n * Uses the CLI default package (unless overridden)\n * and applies CLI-specific labeling.\n *\n * @param {CommandCliTitleOptions} options - CLI title configuration.\n *\n * @example\n * ```ts\n * identity.cli();\n * identity.cli({ commandName: \"build\" });\n * ```\n */\n public cli(options: CommandCliTitleOptions = {}): string {\n const packageName = isNonEmptyString(options.packageName)\n ? options.packageName\n : (this._packageName ?? CommandIdentity.DEFAULT_CLI_PACKAGE);\n\n return this.format({\n packageName,\n label: this.cliLabel,\n name: options.commandName,\n iconArrow: options.iconArrow\n });\n }\n\n /** ----------------------------------------------------------------\n * * ***Generate a utility command title.***\n * ----------------------------------------------------------------\n *\n * Uses the utility default package (unless overridden)\n * and applies utility-specific labeling.\n *\n * @param {CommandUtilityTitleOptions} options - Utility title configuration.\n *\n * @example\n * ```ts\n * identity.utility();\n * identity.utility({ commandName: \"clean-dist\", iconArrow: \"⇒\" });\n * ```\n */\n public utility(options: CommandUtilityTitleOptions = {}): string {\n const packageName = isNonEmptyString(options.packageName)\n ? options.packageName\n : (this._packageName ?? CommandIdentity.DEFAULT_UTILITY_PACKAGE);\n\n return this.format({\n packageName,\n label: this.utilityLabel,\n name: options.commandName,\n iconArrow: options.iconArrow\n });\n }\n\n /** ----------------------------------------------------------------\n * * ***Package name.***\n * ----------------------------------------------------------------\n *\n * Returns the effective package name used for title generation.\n *\n * If a custom package name has been provided via the constructor\n * or `CommandIdentity.setPackageName()`, that value will be returned.\n * Otherwise, an internal default package name (as utility) is used.\n *\n * @readonly\n */\n public get packageName(): string {\n return this._packageName ?? CommandIdentity.DEFAULT_UTILITY_PACKAGE;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set package name.***\n * ----------------------------------------------------------------\n *\n * Assigns a custom package name to be used for title generation.\n *\n * - *This value overrides:*\n * - Any package name provided in the constructor.\n * - The internal default package name.\n *\n * Once set, this value will be returned by the `CommandIdentity.packageName`\n * getter and used by `CommandIdentity.cli()` and\n * `CommandIdentity.utility()` unless explicitly\n * overridden per method call.\n *\n * @param value - The new package name to assign.\n * @returns The current instance for fluent chaining.\n */\n public setPackageName(value: string): this {\n this._packageName = value;\n return this;\n }\n\n /** ----------------------------------------------------------------\n * * ***Command name.***\n * ----------------------------------------------------------------\n *\n * Returns the current command name used for title generation.\n *\n * This value is initialized via the constructor and may be\n * updated later using\n * `CommandIdentity.setCommandName()`.\n *\n * @readonly\n */\n public get commandName(): string {\n return this._commandName;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set command name.***\n * ----------------------------------------------------------------\n *\n * Updates the command name used for title generation.\n *\n * This overrides the command name provided in the constructor\n * and affects subsequent calls to\n * `CommandIdentity.cli()`\n * and `CommandIdentity.utility()`,\n * unless a command name is explicitly provided per method call.\n *\n * @param value - The new command name to assign.\n * @returns The current instance for fluent chaining.\n */\n public setCommandName(value: string): this {\n this._commandName = value;\n return this;\n }\n\n /** ----------------------------------------------------------------\n * * ***Package version.***\n * ----------------------------------------------------------------\n *\n * Returns the effective version used for title generation.\n *\n * - *Resolution order:*\n * 1. If a custom version has been provided via the constructor\n * or `CommandIdentity.setVersion()`,\n * that value will be returned.\n * 2. Otherwise, the version falls back to the internally\n * resolved default package version.\n *\n * A version value is always guaranteed to be present.\n *\n * @readonly\n */\n public get version(): string {\n return this._version;\n }\n\n /** ----------------------------------------------------------------\n * * ***Set package version.***\n * ----------------------------------------------------------------\n *\n * Overrides the version used for title generation.\n *\n * If an empty or invalid value is provided,\n * the version will remain unchanged.\n *\n * @param value - The new version to assign.\n * @returns The current instance for fluent chaining.\n */\n public setVersion(value: string): this {\n if (isNonEmptyString(value)) this._version = value;\n\n return this;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACqBA,MAAa,eAAe,OAAO,OAAO;;CAElCA;;CAGGC;AACX,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0KD,IAAa,kBAAb,MAAa,gBAAgB;;;;;CAK3B,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;;;;CAMR,AAAQ;;CAGR,OAAwB,0BAA0B;;CAElD,OAAwB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9C,YAAY,SAAiC;EAC3C,IAAI,CAAC,iBAAiB,QAAQ,kBAAkB,GAC9C,MAAM,IAAI,MACR,mJACF;EAGF,KAAK,eAAe,QAAQ;EAC5B,KAAK,eAAe,QAAQ;EAC5B,KAAK,WAAW,iBAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR,aAAa;EAEjB,KAAK,WAAW,QAAQ;EACxB,KAAK,eAAe,QAAQ;EAC5B,KAAK,mBAAmB,QAAQ,oBAAoB,MAAM;CAC5D;;;;;;;;;CAUA,AAAQ,OAAO,OAKJ;EACT,MAAM,EAAE,OAAO,MAAM,WAAW,gBAAgB;EAChD,MAAM,YAAY,iBAAiB,IAAI,IAAI,OAAO,KAAK;EACvD,MAAM,aAAa,iBAAiB,KAAK,IAAI,IAAI,MAAM,KAAK;EAE5D,IAAI,CAAC,WACH,MAAM,IAAI,MACR,oHAEF;EAGF,MAAM,gBAAgB,iBAAiB,KAAK,QAAQ,IAChD,IAAI,KAAK,aACT;EAEJ,OACE,GAAG,WAAW,KAAK,WAAW,KAAK,cAAc,aAAa,CAAC,IAC5D,WAAW,YAAY,UAAU,IACjC,WAAW,KAAK,WAAW,cAAc,iBAAiB,SAAS,IAAI,YAAY,KAAK,gBAAgB,CAAC,EAAE,GAC3G,WAAW,UAAU,WAAW,OAAO,WAAW,aAAa,SAAS,CAAC,CAAC;CAEjF;;;;;;;;;;;;;;;;CAiBA,AAAO,IAAI,UAAkC,CAAC,GAAW;EACvD,MAAM,cAAc,iBAAiB,QAAQ,WAAW,IACpD,QAAQ,cACP,KAAK,gBAAgB,gBAAgB;EAE1C,OAAO,KAAK,OAAO;GACjB;GACA,OAAO,KAAK;GACZ,MAAM,QAAQ;GACd,WAAW,QAAQ;EACrB,CAAC;CACH;;;;;;;;;;;;;;;;CAiBA,AAAO,QAAQ,UAAsC,CAAC,GAAW;EAC/D,MAAM,cAAc,iBAAiB,QAAQ,WAAW,IACpD,QAAQ,cACP,KAAK,gBAAgB,gBAAgB;EAE1C,OAAO,KAAK,OAAO;GACjB;GACA,OAAO,KAAK;GACZ,MAAM,QAAQ;GACd,WAAW,QAAQ;EACrB,CAAC;CACH;;;;;;;;;;;;;CAcA,IAAW,cAAsB;EAC/B,OAAO,KAAK,gBAAgB,gBAAgB;CAC9C;;;;;;;;;;;;;;;;;;;CAoBA,AAAO,eAAe,OAAqB;EACzC,KAAK,eAAe;EACpB,OAAO;CACT;;;;;;;;;;;;;CAcA,IAAW,cAAsB;EAC/B,OAAO,KAAK;CACd;;;;;;;;;;;;;;;;CAiBA,AAAO,eAAe,OAAqB;EACzC,KAAK,eAAe;EACpB,OAAO;CACT;;;;;;;;;;;;;;;;;;CAmBA,IAAW,UAAkB;EAC3B,OAAO,KAAK;CACd;;;;;;;;;;;;;CAcA,AAAO,WAAW,OAAqB;EACrC,IAAI,iBAAiB,KAAK,GAAG,KAAK,WAAW;EAE7C,OAAO;CACT;AACF"}
@@ -2,7 +2,7 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
  * ========================================================================
@@ -353,4 +353,4 @@ declare class CommandIdentity {
353
353
  setVersion(value: string): this;
354
354
  }
355
355
  export { CommandIdentity as t };
356
- //# sourceMappingURL=index-EwWjPLu5.d.ts.map
356
+ //# sourceMappingURL=index-8QVWHQzC.d.cts.map
@@ -2,7 +2,7 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
  * ========================================================================
@@ -353,4 +353,4 @@ declare class CommandIdentity {
353
353
  setVersion(value: string): this;
354
354
  }
355
355
  export { CommandIdentity as t };
356
- //# sourceMappingURL=index-EwWjPLu5.d.cts.map
356
+ //# sourceMappingURL=index-8QVWHQzC.d.ts.map
@@ -2,7 +2,7 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
  * ========================================================================
@@ -679,4 +679,4 @@ type GeneratePackageBannerOptions = {
679
679
  */
680
680
  declare const generatePackageBanner: (options?: GeneratePackageBannerOptions) => Promise<string>;
681
681
  export { generatePackageBanner as n, PackageJson as r, GeneratePackageBannerOptions as t };
682
- //# sourceMappingURL=index-UKNPV91f.d.ts.map
682
+ //# sourceMappingURL=index-CyGIoXau.d.cts.map
@@ -2,7 +2,7 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
  * ========================================================================
@@ -679,4 +679,4 @@ type GeneratePackageBannerOptions = {
679
679
  */
680
680
  declare const generatePackageBanner: (options?: GeneratePackageBannerOptions) => Promise<string>;
681
681
  export { generatePackageBanner as n, PackageJson as r, GeneratePackageBannerOptions as t };
682
- //# sourceMappingURL=index-UKNPV91f.d.cts.map
682
+ //# sourceMappingURL=index-CyGIoXau.d.ts.map
package/dist/index.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
  * ========================================================================
@@ -10,10 +10,10 @@
10
10
 
11
11
  "use strict";
12
12
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
13
- const require_formatter = require('./formatter-CLHvHAyx.cjs');
14
- const require_server = require('./server-ze9l-Kd_.cjs');
15
- const require_identity = require('./identity-UxpzNSCQ.cjs');
16
- const require_package_banner = require('./package-banner-9qGLS222.cjs');
13
+ const require_formatter = require('./formatter-C-Yt_Gvf.cjs');
14
+ const require_server = require('./server-BRuKWcjy.cjs');
15
+ const require_identity = require('./identity-8Wy_JtzU.cjs');
16
+ const require_package_banner = require('./package-banner-Cf5uu-7p.cjs');
17
17
  require("@rzl-zone/node-only");
18
18
  let _babel_types = require("@babel/types");
19
19
  _babel_types = require_formatter.__toESM(_babel_types, 1);
package/dist/index.d.cts CHANGED
@@ -2,16 +2,16 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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 { a as OmitStrict, c as PrettifyOptions, r as DefaultPrettifyOptions, s as Prettify } from "./extra-DJ0EgomU.cjs";
12
- import { n as generatePackageBanner, r as PackageJson, t as GeneratePackageBannerOptions } from "./index-UKNPV91f.cjs";
13
- import { t as CommandIdentity } from "./index-EwWjPLu5.cjs";
14
- import { n as PatternOptions, t as PatternConfig } from "./fast-globe-options-Bp5JWpzY.cjs";
11
+ import { a as OmitStrict, c as PrettifyOptions, r as DefaultPrettifyOptions, s as Prettify } from "./extra-B0cm-axJ.cjs";
12
+ import { n as generatePackageBanner, r as PackageJson, t as GeneratePackageBannerOptions } from "./index-CyGIoXau.cjs";
13
+ import { t as CommandIdentity } from "./index-8QVWHQzC.cjs";
14
+ import { n as PatternOptions, t as PatternConfig } from "./fast-globe-options-DXVzXC8B.cjs";
15
15
  import { ChildProcess, SpawnOptions, StdioOptions } from "node:child_process";
16
16
  import * as acorn from "acorn";
17
17
 
package/dist/index.d.ts CHANGED
@@ -2,16 +2,16 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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 { a as OmitStrict, c as PrettifyOptions, r as DefaultPrettifyOptions, s as Prettify } from "./extra-DJ0EgomU.js";
12
- import { n as generatePackageBanner, r as PackageJson, t as GeneratePackageBannerOptions } from "./index-UKNPV91f.js";
13
- import { t as CommandIdentity } from "./index-EwWjPLu5.js";
14
- import { n as PatternOptions, t as PatternConfig } from "./fast-globe-options-CJnYooE-.js";
11
+ import { a as OmitStrict, c as PrettifyOptions, r as DefaultPrettifyOptions, s as Prettify } from "./extra-B0cm-axJ.js";
12
+ import { n as generatePackageBanner, r as PackageJson, t as GeneratePackageBannerOptions } from "./index-CyGIoXau.js";
13
+ import { t as CommandIdentity } from "./index-8QVWHQzC.js";
14
+ import { n as PatternOptions, t as PatternConfig } from "./fast-globe-options-CUaH5spu.js";
15
15
  import { ChildProcess, SpawnOptions, StdioOptions, spawn } from "node:child_process";
16
16
  import * as acorn from "acorn";
17
17
 
package/dist/index.js CHANGED
@@ -2,16 +2,16 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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 { C as isString, E as safeStableStringify, O as toObjectSet, S as isSet, _ as isNonEmptyString, b as isPlainObject, c as picocolors, d as flattenStrings, f as isArray, i as joinInline, k as toStringSet, l as plural, o as joinLinesLoose, p as isBoolean, r as formatOptionValue, t as EOL, w as isUndefined, x as isRegExp, y as isNumber } from "./formatter-ekJQF_bA.js";
12
- import { c as resolvePatternOptions, i as sourceOf, l as sourceOfPatternOptions, n as fsExtra, r as BUILD_LOGGER, s as defaultPatternOptions, t as fastGlob } from "./server-C4YnwxM_.js";
13
- import { t as CommandIdentity } from "./identity-LNFw6-ML.js";
14
- import { n as getPackageJson, t as generatePackageBanner } from "./package-banner-C0ewgXTo.js";
11
+ import { C as isString, E as safeStableStringify, O as toObjectSet, S as isSet, _ as isNonEmptyString, b as isPlainObject, c as picocolors, d as flattenStrings, f as isArray, i as joinInline, k as toStringSet, l as plural, o as joinLinesLoose, p as isBoolean, r as formatOptionValue, t as EOL, w as isUndefined, x as isRegExp, y as isNumber } from "./formatter-BFgV1HhV.js";
12
+ import { c as resolvePatternOptions, i as sourceOf, l as sourceOfPatternOptions, n as fsExtra, r as BUILD_LOGGER, s as defaultPatternOptions, t as fastGlob } from "./server-B1jiYLZq.js";
13
+ import { t as CommandIdentity } from "./identity-DPB1Qgy4.js";
14
+ import { n as getPackageJson, t as generatePackageBanner } from "./package-banner-BjakxfTu.js";
15
15
  import "@rzl-zone/node-only";
16
16
  import * as t from "@babel/types";
17
17
  import { parse } from "@babel/parser";
@@ -2,14 +2,14 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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 { _ as isNonEmptyString, b as isPlainObject, o as joinLinesLoose, t as EOL } from "./formatter-ekJQF_bA.js";
12
- import { n as fsExtra } from "./server-C4YnwxM_.js";
11
+ import { _ as isNonEmptyString, b as isPlainObject, o as joinLinesLoose, t as EOL } from "./formatter-BFgV1HhV.js";
12
+ import { n as fsExtra } from "./server-B1jiYLZq.js";
13
13
  import "@rzl-zone/node-only";
14
14
  import path from "node:path";
15
15
  const getPackageJson = async (options = {}) => {
@@ -43,4 +43,4 @@ const generatePackageBanner = async (options = {}) => {
43
43
  return joinLinesLoose("/*!", "* ========================================================================", `* ${title}`, "* ------------------------------------------------------------------------", `* Version: \`${version}\``, `* Author: \`${author}\``, `* Repository: \`${repository}\``, "* ========================================================================", "*/", withEof ? "" : false);
44
44
  };
45
45
  export { getPackageJson as n, generatePackageBanner as t };
46
- //# sourceMappingURL=package-banner-C0ewgXTo.js.map
46
+ //# sourceMappingURL=package-banner-BjakxfTu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-banner-C0ewgXTo.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 || \"unknown\"}`,\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 { EOL, 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 * By default, it automatically locates and reads the nearest\n * `package.json` file, you may also provide a custom package object\n * through the options parameter.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Supports custom package metadata via options.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n * - Normalizes repository URLs when possible.\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 {Promise<string>}\n * A formatted banner comment string.\n *\n * @throws {Error}\n * If no `package.json` can be found.\n *\n * @throws {Error}\n * If the resolved `package.json` contains invalid JSON.\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 let pkgJson: PackageJson | undefined;\n\n if (isPlainObject(options.packageJson)) {\n pkgJson = options.packageJson;\n } else {\n try {\n pkgJson = await getPackageJson();\n } catch (error) {\n throw new Error(\n \"[@rzl-zone/build-tools] - (generate-package-banner): Failed to resolve package.json\" +\n EOL +\n `Reason: ${(error as Error)?.message || \"unknown\"}`,\n { cause: error }\n );\n }\n }\n\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkgJson.name) ? pkgJson.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkgJson.version)\n ? pkgJson.version\n : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkgJson.author)\n ? pkgJson.author\n : isPlainObject(pkgJson.author) && isNonEmptyString(pkgJson.author.name)\n ? pkgJson.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkgJson.homepage)\n ? pkgJson.homepage.split(\"#\")[0]\n : isNonEmptyString(pkgJson.repository)\n ? pkgJson.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkgJson.repository) &&\n isNonEmptyString(pkgJson.repository.url)\n ? pkgJson.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,CAAC,MACT;CAKzB,IAAI,UAJa,iBAAiB,QAAQ,GAAG,IACzC,KAAK,QAAQ,QAAQ,GAAG,IACxB,QAAQ,IAAI;CAIhB,OAAO,MAAM;EACX,MAAM,UAAU,KAAK,KAAK,SAAS,cAAc;EAEjD,IAAI,QAAQ,WAAW,OAAO,GAC5B,IAAI;GACF,OAAO,KAAK,MAAM,QAAQ,aAAa,SAAS,OAAO,CAAC;EAC1D,SAAS,KAAK;GACZ,MAAM,IAAI,MACR,0EAA0E,QAAQ,KAChF,MACA,WAAY,KAAe,WAAW,aACxC,EAAE,OAAO,IAAI,CACf;EACF;EAGF,MAAM,SAAS,KAAK,QAAQ,OAAO;EACnC,IAAI,WAAW,SAAS;EAExB,UAAU;CACZ;CAEA,MAAM,IAAI,MACR,6EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA,MAAa,wBAAwB,OACnC,UAAwC,CAAC,MACrB;CACpB,IAAI;CAEJ,IAAI,cAAc,QAAQ,WAAW,GACnC,UAAU,QAAQ;MAElB,IAAI;EACF,UAAU,MAAM,eAAe;CACjC,SAAS,OAAO;EACd,MAAM,IAAI,MACR,wFACE,MACA,WAAY,OAAiB,WAAW,aAC1C,EAAE,OAAO,MAAM,CACjB;CACF;CAGF,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACP,iBAAiB,QAAQ,IAAI,IAAI,QAAQ,OAAO;CAEnD,MAAM,UAAU,iBAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR;CAEJ,MAAM,SACJ,QAAQ,WACP,iBAAiB,QAAQ,MAAM,IAC5B,QAAQ,SACR,cAAc,QAAQ,MAAM,KAAK,iBAAiB,QAAQ,OAAO,IAAI,IACnE,QAAQ,OAAO,OACf;CAER,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,KAC5B,iBAAiB,QAAQ,UAAU,IACjC,QAAQ,WAAW,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IAC7D,cAAc,QAAQ,UAAU,KAC9B,iBAAiB,QAAQ,WAAW,GAAG,IACvC,QAAQ,WAAW,IAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IACjE;CAER,OAAO,eACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,KACjB;AACF"}
1
+ {"version":3,"file":"package-banner-BjakxfTu.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 || \"unknown\"}`,\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 { EOL, 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 * By default, it automatically locates and reads the nearest\n * `package.json` file, you may also provide a custom package object\n * through the options parameter.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Supports custom package metadata via options.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n * - Normalizes repository URLs when possible.\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 {Promise<string>}\n * A formatted banner comment string.\n *\n * @throws {Error}\n * If no `package.json` can be found.\n *\n * @throws {Error}\n * If the resolved `package.json` contains invalid JSON.\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 let pkgJson: PackageJson | undefined;\n\n if (isPlainObject(options.packageJson)) {\n pkgJson = options.packageJson;\n } else {\n try {\n pkgJson = await getPackageJson();\n } catch (error) {\n throw new Error(\n \"[@rzl-zone/build-tools] - (generate-package-banner): Failed to resolve package.json\" +\n EOL +\n `Reason: ${(error as Error)?.message || \"unknown\"}`,\n { cause: error }\n );\n }\n }\n\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkgJson.name) ? pkgJson.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkgJson.version)\n ? pkgJson.version\n : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkgJson.author)\n ? pkgJson.author\n : isPlainObject(pkgJson.author) && isNonEmptyString(pkgJson.author.name)\n ? pkgJson.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkgJson.homepage)\n ? pkgJson.homepage.split(\"#\")[0]\n : isNonEmptyString(pkgJson.repository)\n ? pkgJson.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkgJson.repository) &&\n isNonEmptyString(pkgJson.repository.url)\n ? pkgJson.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,CAAC,MACT;CAKzB,IAAI,UAJa,iBAAiB,QAAQ,GAAG,IACzC,KAAK,QAAQ,QAAQ,GAAG,IACxB,QAAQ,IAAI;CAIhB,OAAO,MAAM;EACX,MAAM,UAAU,KAAK,KAAK,SAAS,cAAc;EAEjD,IAAI,QAAQ,WAAW,OAAO,GAC5B,IAAI;GACF,OAAO,KAAK,MAAM,QAAQ,aAAa,SAAS,OAAO,CAAC;EAC1D,SAAS,KAAK;GACZ,MAAM,IAAI,MACR,0EAA0E,QAAQ,KAChF,MACA,WAAY,KAAe,WAAW,aACxC,EAAE,OAAO,IAAI,CACf;EACF;EAGF,MAAM,SAAS,KAAK,QAAQ,OAAO;EACnC,IAAI,WAAW,SAAS;EAExB,UAAU;CACZ;CAEA,MAAM,IAAI,MACR,6EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA,MAAa,wBAAwB,OACnC,UAAwC,CAAC,MACrB;CACpB,IAAI;CAEJ,IAAI,cAAc,QAAQ,WAAW,GACnC,UAAU,QAAQ;MAElB,IAAI;EACF,UAAU,MAAM,eAAe;CACjC,SAAS,OAAO;EACd,MAAM,IAAI,MACR,wFACE,MACA,WAAY,OAAiB,WAAW,aAC1C,EAAE,OAAO,MAAM,CACjB;CACF;CAGF,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACP,iBAAiB,QAAQ,IAAI,IAAI,QAAQ,OAAO;CAEnD,MAAM,UAAU,iBAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR;CAEJ,MAAM,SACJ,QAAQ,WACP,iBAAiB,QAAQ,MAAM,IAC5B,QAAQ,SACR,cAAc,QAAQ,MAAM,KAAK,iBAAiB,QAAQ,OAAO,IAAI,IACnE,QAAQ,OAAO,OACf;CAER,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,KAC5B,iBAAiB,QAAQ,UAAU,IACjC,QAAQ,WAAW,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IAC7D,cAAc,QAAQ,UAAU,KAC9B,iBAAiB,QAAQ,WAAW,GAAG,IACvC,QAAQ,WAAW,IAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IACjE;CAER,OAAO,eACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,KACjB;AACF"}
@@ -2,15 +2,15 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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
11
  "use strict";
12
- const require_formatter = require('./formatter-CLHvHAyx.cjs');
13
- const require_server = require('./server-ze9l-Kd_.cjs');
12
+ const require_formatter = require('./formatter-C-Yt_Gvf.cjs');
13
+ const require_server = require('./server-BRuKWcjy.cjs');
14
14
  require("@rzl-zone/node-only");
15
15
  let node_path = require("node:path");
16
16
  node_path = require_formatter.__toESM(node_path, 1);
@@ -56,4 +56,4 @@ Object.defineProperty(exports, 'getPackageJson', {
56
56
  return getPackageJson;
57
57
  }
58
58
  });
59
- //# sourceMappingURL=package-banner-9qGLS222.cjs.map
59
+ //# sourceMappingURL=package-banner-Cf5uu-7p.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-banner-9qGLS222.cjs","names":["isNonEmptyString","path","fsExtra","EOL","isPlainObject","EOL","isNonEmptyString","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 || \"unknown\"}`,\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 { EOL, 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 * By default, it automatically locates and reads the nearest\n * `package.json` file, you may also provide a custom package object\n * through the options parameter.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Supports custom package metadata via options.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n * - Normalizes repository URLs when possible.\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 {Promise<string>}\n * A formatted banner comment string.\n *\n * @throws {Error}\n * If no `package.json` can be found.\n *\n * @throws {Error}\n * If the resolved `package.json` contains invalid JSON.\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 let pkgJson: PackageJson | undefined;\n\n if (isPlainObject(options.packageJson)) {\n pkgJson = options.packageJson;\n } else {\n try {\n pkgJson = await getPackageJson();\n } catch (error) {\n throw new Error(\n \"[@rzl-zone/build-tools] - (generate-package-banner): Failed to resolve package.json\" +\n EOL +\n `Reason: ${(error as Error)?.message || \"unknown\"}`,\n { cause: error }\n );\n }\n }\n\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkgJson.name) ? pkgJson.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkgJson.version)\n ? pkgJson.version\n : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkgJson.author)\n ? pkgJson.author\n : isPlainObject(pkgJson.author) && isNonEmptyString(pkgJson.author.name)\n ? pkgJson.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkgJson.homepage)\n ? pkgJson.homepage.split(\"#\")[0]\n : isNonEmptyString(pkgJson.repository)\n ? pkgJson.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkgJson.repository) &&\n isNonEmptyString(pkgJson.repository.url)\n ? pkgJson.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,CAAC,MACT;CAKzB,IAAI,UAJaA,mCAAiB,QAAQ,GAAG,IACzCC,kBAAK,QAAQ,QAAQ,GAAG,IACxB,QAAQ,IAAI;CAIhB,OAAO,MAAM;EACX,MAAM,UAAUA,kBAAK,KAAK,SAAS,cAAc;EAEjD,IAAIC,uBAAQ,WAAW,OAAO,GAC5B,IAAI;GACF,OAAO,KAAK,MAAMA,uBAAQ,aAAa,SAAS,OAAO,CAAC;EAC1D,SAAS,KAAK;GACZ,MAAM,IAAI,MACR,0EAA0E,QAAQ,KAChFC,wBACA,WAAY,KAAe,WAAW,aACxC,EAAE,OAAO,IAAI,CACf;EACF;EAGF,MAAM,SAASF,kBAAK,QAAQ,OAAO;EACnC,IAAI,WAAW,SAAS;EAExB,UAAU;CACZ;CAEA,MAAM,IAAI,MACR,6EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA,MAAa,wBAAwB,OACnC,UAAwC,CAAC,MACrB;CACpB,IAAI;CAEJ,IAAIG,gCAAc,QAAQ,WAAW,GACnC,UAAU,QAAQ;MAElB,IAAI;EACF,UAAU,MAAM,eAAe;CACjC,SAAS,OAAO;EACd,MAAM,IAAI,MACR,wFACEC,wBACA,WAAY,OAAiB,WAAW,aAC1C,EAAE,OAAO,MAAM,CACjB;CACF;CAGF,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACPC,mCAAiB,QAAQ,IAAI,IAAI,QAAQ,OAAO;CAEnD,MAAM,UAAUA,mCAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR;CAEJ,MAAM,SACJ,QAAQ,WACPA,mCAAiB,QAAQ,MAAM,IAC5B,QAAQ,SACRF,gCAAc,QAAQ,MAAM,KAAKE,mCAAiB,QAAQ,OAAO,IAAI,IACnE,QAAQ,OAAO,OACf;CAER,MAAM,aAAaA,mCAAiB,QAAQ,QAAQ,IAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,KAC5BA,mCAAiB,QAAQ,UAAU,IACjC,QAAQ,WAAW,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IAC7DF,gCAAc,QAAQ,UAAU,KAC9BE,mCAAiB,QAAQ,WAAW,GAAG,IACvC,QAAQ,WAAW,IAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IACjE;CAER,OAAOC,iCACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,KACjB;AACF"}
1
+ {"version":3,"file":"package-banner-Cf5uu-7p.cjs","names":["isNonEmptyString","path","fsExtra","EOL","isPlainObject","EOL","isNonEmptyString","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 || \"unknown\"}`,\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 { EOL, 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 * By default, it automatically locates and reads the nearest\n * `package.json` file, you may also provide a custom package object\n * through the options parameter.\n *\n * - *Banner features:*\n * - Reads metadata from the nearest `package.json`.\n * - Supports custom package metadata via options.\n * - Provides safe fallbacks for missing fields.\n * - Produces a consistent, readable comment block.\n * - Normalizes repository URLs when possible.\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 {Promise<string>}\n * A formatted banner comment string.\n *\n * @throws {Error}\n * If no `package.json` can be found.\n *\n * @throws {Error}\n * If the resolved `package.json` contains invalid JSON.\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 let pkgJson: PackageJson | undefined;\n\n if (isPlainObject(options.packageJson)) {\n pkgJson = options.packageJson;\n } else {\n try {\n pkgJson = await getPackageJson();\n } catch (error) {\n throw new Error(\n \"[@rzl-zone/build-tools] - (generate-package-banner): Failed to resolve package.json\" +\n EOL +\n `Reason: ${(error as Error)?.message || \"unknown\"}`,\n { cause: error }\n );\n }\n }\n\n const withEof = options.withEof ?? true;\n\n const title =\n options.title ??\n (isNonEmptyString(pkgJson.name) ? pkgJson.name : \"Unknown Package\");\n\n const version = isNonEmptyString(pkgJson.version)\n ? pkgJson.version\n : \"Unknown\";\n\n const author =\n options.author ??\n (isNonEmptyString(pkgJson.author)\n ? pkgJson.author\n : isPlainObject(pkgJson.author) && isNonEmptyString(pkgJson.author.name)\n ? pkgJson.author.name\n : \"Unknown\");\n\n const repository = isNonEmptyString(pkgJson.homepage)\n ? pkgJson.homepage.split(\"#\")[0]\n : isNonEmptyString(pkgJson.repository)\n ? pkgJson.repository.replace(/^git\\+/, \"\").replace(/\\.git$/, \"\")\n : isPlainObject(pkgJson.repository) &&\n isNonEmptyString(pkgJson.repository.url)\n ? pkgJson.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,CAAC,MACT;CAKzB,IAAI,UAJaA,mCAAiB,QAAQ,GAAG,IACzCC,kBAAK,QAAQ,QAAQ,GAAG,IACxB,QAAQ,IAAI;CAIhB,OAAO,MAAM;EACX,MAAM,UAAUA,kBAAK,KAAK,SAAS,cAAc;EAEjD,IAAIC,uBAAQ,WAAW,OAAO,GAC5B,IAAI;GACF,OAAO,KAAK,MAAMA,uBAAQ,aAAa,SAAS,OAAO,CAAC;EAC1D,SAAS,KAAK;GACZ,MAAM,IAAI,MACR,0EAA0E,QAAQ,KAChFC,wBACA,WAAY,KAAe,WAAW,aACxC,EAAE,OAAO,IAAI,CACf;EACF;EAGF,MAAM,SAASF,kBAAK,QAAQ,OAAO;EACnC,IAAI,WAAW,SAAS;EAExB,UAAU;CACZ;CAEA,MAAM,IAAI,MACR,6EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA,MAAa,wBAAwB,OACnC,UAAwC,CAAC,MACrB;CACpB,IAAI;CAEJ,IAAIG,gCAAc,QAAQ,WAAW,GACnC,UAAU,QAAQ;MAElB,IAAI;EACF,UAAU,MAAM,eAAe;CACjC,SAAS,OAAO;EACd,MAAM,IAAI,MACR,wFACEC,wBACA,WAAY,OAAiB,WAAW,aAC1C,EAAE,OAAO,MAAM,CACjB;CACF;CAGF,MAAM,UAAU,QAAQ,WAAW;CAEnC,MAAM,QACJ,QAAQ,UACPC,mCAAiB,QAAQ,IAAI,IAAI,QAAQ,OAAO;CAEnD,MAAM,UAAUA,mCAAiB,QAAQ,OAAO,IAC5C,QAAQ,UACR;CAEJ,MAAM,SACJ,QAAQ,WACPA,mCAAiB,QAAQ,MAAM,IAC5B,QAAQ,SACRF,gCAAc,QAAQ,MAAM,KAAKE,mCAAiB,QAAQ,OAAO,IAAI,IACnE,QAAQ,OAAO,OACf;CAER,MAAM,aAAaA,mCAAiB,QAAQ,QAAQ,IAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,KAC5BA,mCAAiB,QAAQ,UAAU,IACjC,QAAQ,WAAW,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IAC7DF,gCAAc,QAAQ,UAAU,KAC9BE,mCAAiB,QAAQ,WAAW,GAAG,IACvC,QAAQ,WAAW,IAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE,IACjE;CAER,OAAOC,iCACL,OACA,8EACA,MAAM,SACN,8EACA,iBAAiB,QAAQ,KACzB,gBAAgB,OAAO,KACvB,oBAAoB,WAAW,KAC/B,8EACA,MACA,UAAU,KAAK,KACjB;AACF"}
@@ -2,13 +2,13 @@
2
2
  * ========================================================================
3
3
  * @rzl-zone/build-tools
4
4
  * ------------------------------------------------------------------------
5
- * Version: `0.0.13-beta.0`
5
+ * Version: `0.0.13`
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 { E as safeStableStringify, T as normalizeSpaces, _ as isNonEmptyString, a as joinLines, b as isPlainObject, c as picocolors, m as isError, r as formatOptionValue, y as isNumber } from "./formatter-ekJQF_bA.js";
11
+ import { E as safeStableStringify, T as normalizeSpaces, _ as isNonEmptyString, a as joinLines, b as isPlainObject, c as picocolors, m as isError, r as formatOptionValue, y as isNumber } from "./formatter-BFgV1HhV.js";
12
12
  import "@rzl-zone/node-only";
13
13
  import os from "node:os";
14
14
  import _fastGlob from "fast-glob";
@@ -195,4 +195,4 @@ const BUILD_LOGGER = {
195
195
  const fsExtra = _fsExtra;
196
196
  const fastGlob = _fastGlob;
197
197
  export { sourceOfIsDeepStrictEqual as a, resolvePatternOptions as c, sourceOf as i, sourceOfPatternOptions as l, fsExtra as n, ICONS as o, BUILD_LOGGER as r, defaultPatternOptions as s, fastGlob as t };
198
- //# sourceMappingURL=server-C4YnwxM_.js.map
198
+ //# sourceMappingURL=server-B1jiYLZq.js.map