Skip to content

New Packages Release#69

Merged
juliolmuller merged 13 commits intomainfrom
changeset-release/main
Mar 8, 2026
Merged

New Packages Release#69
juliolmuller merged 13 commits intomainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Mar 7, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

br-utils@3.0.0

Major Changes

  • ac9d792: ### 🎉 v3 at a glance 🎊

    • 🏗️ Class-based API — Default export is a BrUtils class instance with cpf and cnpj sub-modules; BrUtils class allows optional default settings for each (options or CpfUtils / CnpjUtils instances) and getters/setters for cpf and cnpj.
    • 📦 Single entry point, full re-exports — One package for CPF and CNPJ; all exports from cpf-utils and cnpj-utils are re-exported (e.g. cpfUtils, cnpjUtils, cpfFmt, cpfGen, cpfVal, cnpjFmt, cnpjGen, cnpjVal, and their classes, options, errors, types).
    • 🔗 Wraps v3 sub-packages — Behavior and options follow the v3 APIs of cpf-utils and cnpj-utils (flat format options, structured errors, class-based customization in each sub-module).

    BREAKING CHANGES

    • Named exports cpf and cnpj removed: The package no longer exports standalone cpf and cnpj names. Use the default instance (brUtils.cpf, brUtils.cnpj) or import the re-exported instances cpfUtils and cnpjUtils. Code that did import { cpf as cpfUtils, cnpj as cnpjUtils } from 'br-utils' must switch to import brUtils from 'br-utils' and use brUtils.cpf / brUtils.cnpj, or use import { cpfUtils, cnpjUtils } from 'br-utils'.
    • Default export is a BrUtils instance: The default export is now an instance of the BrUtils class, not a plain object. It still exposes cpf and cnpj for the same usage pattern (brUtils.cpf.format(), etc.), but code that relied on the default being a plain object (e.g. spreading, or checking for specific own properties) may need updates.
    • CommonJS/UMD default carries re-exports: In CommonJS and UMD, the default export object also includes all re-exported names from cpf-utils and cnpj-utils (e.g. BrUtils, cpfUtils, cnpjUtils, cpfFmt, cnpjFmt, classes, errors). Code that assumed the default had only cpf and cnpj or a minimal surface may need updates.

    New features

    • BrUtils class: Construct with optional BrUtilsSettingsInput (cpf and cnpj as options objects or CpfUtils / CnpjUtils instances). Instance has getters/setters for cpf and cnpj; setters accept an instance, an options object, or null/undefined to reset to defaults.
    • Direct use of sub-package APIs: Import and use cpfUtils, cnpjUtils, cpfFmt, cpfGen, cpfVal, cnpjFmt, cnpjGen, cnpjVal, and all their classes, options, errors, and types from br-utils without depending on cpf-utils or cnpj-utils directly.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Documentation: README and README.pt.md updated to match current API (BrUtils class, default instance, re-exports, constructor/setter options) and aligned structure with cpf-utils and cnpj-utils.

Patch Changes

  • Updated dependencies [a152328]
  • Updated dependencies [9004cf7]
  • Updated dependencies [beb126e]
    • @lacussoft/utils@1.0.0
    • cnpj-utils@3.0.0
    • cpf-utils@3.0.0

@lacussoft/cnpj-dv@1.0.0

Major Changes

  • f795b64: ### 🚀 Stable Version Released!

    Utility class to calculate check digits on CNPJ (Brazilian legal entity ID). Main features:

    • Support to different input formats: accepts CNPJ as string or lists of strings
    • Only alphanumeric digits matter: automatically strips non-alphanumeric characters from input
    • Lazy evaluation & Caching: check digits are calculated only when accessed for the first time
    • Minimal dependencies: No external dependencies, only on internal package @lacussoft/utils
    • Comprehensive error handling: specific exceptions for different error scenarios

    For detailed usage and API reference, see the README.

Patch Changes

  • Updated dependencies [a152328]
    • @lacussoft/utils@1.0.0

@lacussoft/cnpj-fmt@3.0.0

Major Changes

  • 6f8dc3f: Drop dependency to external libraries: deepmerge, html-escaper, num-only.

  • 786fe41: ### 🎉 v3 at a glance 🎊

    • 🆕 Alphanumeric CNPJ — Full support for the new 14-character alphanumeric CNPJ (digits and letters); input is sanitized and uppercased before formatting.
    • 🏗️ Class-based APICnpjFormatter lets you set default options once and reuse them; format() accepts string or array of strings.
    • Flat options — Delimiters and masking use top-level options (dotKey, slashKey, dashKey, hiddenKey, hiddenStart, hiddenEnd) plus escape, encode, and onFail.
    • 🛡️ Structured errors — Typed exceptions (CnpjFormatterInputTypeError, CnpjFormatterInputLengthException, options errors) for clearer error handling.

    BREAKING CHANGES

    • Object-oriented API: The package still exports the cnpjFmt() helper, but the main programmable API is the CnpjFormatter class. You can create an instance with default options and call format() without passing options every time.
    • Options are now flat (no nested objects):
      • delimiters.dot is now dotKey
      • delimiters.slash is now slashKey
      • delimiters.dash is now dashKey
      • hiddenRange.start is now hiddenStart
      • hiddenRange.end is now hiddenEnd
      • hiddenKey and escape keep the same names.
      • New: encode (URL-encode output).
      • onFail callback: The signature has changed; it now receives (value, error?) and the return value is used as the formatted result.
    • Nullish options: Setting an option to null or undefined now falls back to the existing value (constructor or default) instead of causing runtime issues.

    New features

    • Alphanumeric CNPJ: Both numeric and alphanumeric 14-character CNPJs are supported; non-alphanumeric characters are stripped and the result is uppercased before formatting.
    • encode option: When true, the formatted CNPJ is URL-encoded (e.g. for query parameters or paths).
    • Exception hierarchy: Dedicated error classes for type errors (CnpjFormatterTypeError, CnpjFormatterInputTypeError, CnpjFormatterOptionsTypeError) and validation/range errors (CnpjFormatterException, CnpjFormatterInputLengthException, CnpjFormatterOptionsHiddenRangeInvalidException, CnpjFormatterOptionsForbiddenKeyCharacterException). Failures can still be handled via the onFail callback without throwing.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Minimal dependencies: Removed html-escaper, deepmerge, and num-only; in-house HTML escaping and option handling. It only depends on internal package @lacussoft/utils now.

Patch Changes

  • Updated dependencies [a152328]
    • @lacussoft/utils@1.0.0

@lacussoft/cnpj-gen@3.0.0

Major Changes

  • 1f9a608: ### 🎉 v3 at a glance 🎊

    • 🆕 Alphanumeric CNPJ — Full support for the new 14-character alphanumeric CNPJ; default output is alphanumeric (0-9A-Z), with optional numeric or alphabetic via the type option.
    • 🏗️ Class-based APICnpjGenerator lets you set default options once and reuse them; generate() accepts optional per-call options. The cnpjGen() helper remains for one-off usage.
    • type option — Control character set: numeric, alphabetic, or alphanumeric (default). Prefix is sanitized (alphanumeric only, uppercased); only the randomly generated part follows type.
    • 🛡️ Structured errors — Typed exceptions (CnpjGeneratorOptionsTypeError, CnpjGeneratorOptionPrefixInvalidException, CnpjGeneratorOptionTypeInvalidException) for options and prefix validation.
    • 📐 Stricter prefix validation — Prefix rejects invalid base ID (first 8 chars all zeros), invalid branch ID (positions 9–12 all zeros), and 12 repeated digits.

    BREAKING CHANGES

    • Object-oriented API: The package still exports the cnpjGen() helper, but the main programmable API is the CnpjGenerator class. You can create an instance with default options and call generate() without passing options every time. When a CnpjGeneratorOptions instance is passed to the constructor, it is used by reference; mutating it affects future generate() calls.
    • Default output is alphanumeric: Without options, generated CNPJs are now 14-character alphanumeric (e.g. AB123CDE000155) instead of numeric-only. Use type: 'numeric' to keep numeric-only behavior.
    • New type option: Options now include type ('numeric' | 'alphabetic' | 'alphanumeric', default 'alphanumeric'). Invalid values throw CnpjGeneratorOptionTypeInvalidException.
    • Prefix validation: Invalid prefixes now throw CnpjGeneratorOptionPrefixInvalidException (e.g. base ID or branch ID all zeros, or 12 repeated digits). Option type errors throw CnpjGeneratorOptionsTypeError.
    • Nullish options: Setting an option to null or undefined when using CnpjGeneratorOptions falls back to the existing value (constructor or default) instead of causing runtime issues.

    New features

    • Alphanumeric CNPJ: Generated CNPJs can be numeric, alphabetic, or alphanumeric; prefix is always sanitized to alphanumeric and uppercased.
    • CnpjGeneratorOptions class: Reusable options with getters/setters and set() for bulk updates; supports constructor merge and overrides. Static defaults: DEFAULT_FORMAT, DEFAULT_PREFIX, DEFAULT_TYPE. Read-only all getter returns a frozen snapshot.
    • Exception hierarchy: CnpjGeneratorTypeError (base for option type errors), CnpjGeneratorOptionsTypeError, CnpjGeneratorException (base for rule errors), CnpjGeneratorOptionPrefixInvalidException, CnpjGeneratorOptionTypeInvalidException.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Check digits: Generation uses @lacussoft/cnpj-dv for correct check-digit calculation. Invalid sequences (e.g. after prefix) trigger retry until a valid CNPJ is produced.
    • Exports: ESM entry exports cnpjGen, CnpjGenerator, CnpjGeneratorOptions, constants (CNPJ_LENGTH, CNPJ_PREFIX_MAX_LENGTH), exception classes, and types; CJS/UMD default export is cnpjGen with the same members on its namespace.

Patch Changes

  • Updated dependencies [f795b64]
  • Updated dependencies [a152328]
    • @lacussoft/cnpj-dv@1.0.0
    • @lacussoft/utils@1.0.0

cnpj-utils@3.0.0

Major Changes

  • 9004cf7: ### 🎉 v3 at a glance 🎊

    • 🆕 Alphanumeric CNPJ — Full support for the new 14-character alphanumeric CNPJ; format, generate, and validate numeric or alphanumeric IDs via the unified instance or the underlying cnpjFmt / cnpjGen / cnpjVal helpers.
    • 🏗️ Class-based customizationCnpjUtils class with optional default formatter, generator, and validator (options or instances); default export remains a pre-built instance for one-off use.
    • Flat format options — Format options no longer use nested objects: delimiters.dotdotKey, delimiters.slashslashKey, delimiters.dashdashKey, hiddenRange.start/endhiddenStart/hiddenEnd. New encode option for URL-encoding.
    • 📦 Full re-exports — All formatter, generator, and validator classes, options, errors, and types from @lacussoft/cnpj-fmt, @lacussoft/cnpj-gen, and @lacussoft/cnpj-val are re-exported; you can use CnpjFormatter, CnpjGenerator, CnpjValidator and their helpers directly from cnpj-utils.
    • 🛡️ Structured errors — Format, generate, and isValid can throw the same typed exceptions as the underlying packages (input type, options type, invalid prefix/type, etc.).

    BREAKING CHANGES

    • Format options are now flat (aligned with @lacussoft/cnpj-fmt v3). Nested option shapes are no longer supported:
      • delimiters.dot is now dotKey
      • delimiters.slash is now slashKey
      • delimiters.dash is now dashKey
      • hiddenRange.start is now hiddenStart
      • hiddenRange.end is now hiddenEnd
      • onFail callback signature may differ (e.g. receives (value, exception)); return value is still used as the result when input length ≠ 14.
    • Default generated CNPJ is alphanumeric: cnpjUtils.generate() now returns a 14-character alphanumeric string (e.g. AB123CDE000155) instead of numeric-only. Use generate({ type: 'numeric' }) for the previous numeric-only behavior.
    • Generator prefix rules: Prefix is now 1–12 alphanumeric characters (sanitized/uppercased). Invalid prefix (e.g. base or branch all zeros, 12 repeated digits) throws CnpjGeneratorOptionPrefixInvalidException. New type option: 'numeric' | 'alphabetic' | 'alphanumeric' (default).
    • isValid() throws on invalid input type: Passing a non-string, non–array-of-strings (e.g. a number) to cnpjUtils.isValid() now throws CnpjValidatorInputTypeError instead of returning false. Validator now accepts an optional second argument options? (caseSensitive, type); default validation is alphanumeric and case-sensitive.
    • New exports and default shape: The package now exports the CnpjUtils class and re-exports cnpjFmt, cnpjGen, cnpjVal and all their classes/options/errors. The default export is still a CnpjUtils instance, but that instance now carries those re-exports on its object (e.g. cnpjUtils.CnpjFormatter). Code that assumed a minimal default (only format, generate, isValid) or specific tree-shaking surface may need updates.

    New features

    • Alphanumeric CNPJ: Format accepts 14-character alphanumeric input; generate can produce numeric, alphabetic, or alphanumeric; validate accepts both with optional type and caseSensitive.
    • CnpjUtils class: Construct with optional CnpjUtilsSettingsInput (formatter, generator, validator as options objects or instances). Instance has format(), generate(), isValid() and getters/setters for formatter, generator, validator.
    • Direct use of underlying APIs: Import and use cnpjFmt, CnpjFormatter, cnpjGen, CnpjGenerator, cnpjVal, CnpjValidator, options classes, and exception classes from cnpj-utils without depending on the three packages directly.
    • Format encode option: When true, the formatted CNPJ is URL-encoded (e.g. for query params or paths).

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Documentation: README updated to match current API (flat options, CnpjUtils class, re-exports, generator/validator options) and aligned structure with cnpj-fmt, cnpj-gen, and cnpj-val.
    • Wrapper consistency: cnpj-utils behavior and options now fully reflect the v3 APIs of @lacussoft/cnpj-fmt, @lacussoft/cnpj-gen, and @lacussoft/cnpj-val.

Patch Changes

  • Updated dependencies [6f8dc3f]
  • Updated dependencies [a152328]
  • Updated dependencies [786fe41]
  • Updated dependencies [1f9a608]
  • Updated dependencies [dbe306d]
    • @lacussoft/cnpj-fmt@3.0.0
    • @lacussoft/utils@1.0.0
    • @lacussoft/cnpj-gen@3.0.0
    • @lacussoft/cnpj-val@3.0.0

@lacussoft/cnpj-val@3.0.0

Major Changes

  • dbe306d: ### 🎉 v3 at a glance 🎊

    • 🆕 Alphanumeric CNPJ — Full support for the new 14-character alphanumeric CNPJ; validates both numeric and alphanumeric formats, with optional type ('numeric' | 'alphanumeric', default 'alphanumeric').
    • 🏗️ Class-based APICnpjValidator lets you set default options once and reuse them; isValid(cnpjInput, options?) accepts optional per-call overrides. The cnpjVal() helper remains for one-off usage.
    • type and caseSensitive options — Control validation mode: type restricts to digits only or allows letters; caseSensitive (default true) determines whether lowercase letters are accepted for alphanumeric CNPJ.
    • 🛡️ Structured errors — Typed exceptions (CnpjValidatorInputTypeError, CnpjValidatorOptionsTypeError, CnpjValidatorOptionTypeInvalidException) for invalid input type or options; invalid CNPJ data still returns false without throwing.
    • 📥 Flexible input — Accepts string or string[] (formatted or raw); non-alphanumeric characters are stripped according to type.

    BREAKING CHANGES

    • Invalid input type now throws: cnpjVal(cnpjInput) and CnpjValidator#isValid(cnpjInput) now throw CnpjValidatorInputTypeError when cnpjInput is not a string or array of strings (e.g. passing a number). In v2, such calls likely returned false or had unspecified behavior; they now fail fast with a typed error.
    • New optional second parameter: cnpjVal(cnpjInput, options?) accepts an optional second argument. Existing one-argument calls remain valid; code that relied on a second argument being ignored or on cnpjVal having a single parameter in its type signature may need to be updated.
    • Class-based API and new exports: The package now exports CnpjValidator, CnpjValidatorOptions, exception classes, and types alongside the default cnpjVal. If you depended on the package exposing only a single default function or on a specific export surface, update your imports or bundler config.
    • Default validation is alphanumeric and case-sensitive: Without options, validation accepts 14-character alphanumeric CNPJ and is case-sensitive (lowercase letters in an otherwise valid alphanumeric CNPJ yield false). Use type: 'numeric' for numeric-only validation and caseSensitive: false to accept lowercase letters. Numeric-only CNPJ strings behave the same as in v2 when passed as a string.
    • Stricter validation rules:
      • Base ID composed only by zeros (first 8 characters "00000000") is considered invalid and will cause validation to return false.
      • CNPJs whose first 12 characters are composed by numbers and the same number ("111111111111", "222222222222", "333333333333", etc.) are invalid. Note that this rule only applies to numbers, not letters. Alphanumeric CNPJs with repeated letters are acceptable according to the official government agencies.

    New features

    • Alphanumeric CNPJ validation: Validates the new alphanumeric format; type: 'numeric' restricts to digits-only (legacy behavior).
    • CnpjValidator class: Reusable validator with default options; isValid(cnpjInput, options?) supports per-call option overrides. Constructor accepts a plain options object or a CnpjValidatorOptions instance (used by reference when passed).
    • CnpjValidatorOptions class: Options with getters/setters (caseSensitive, type), set() for bulk updates, and constructor merge (defaultOptions?, ...overrides). Read-only all getter returns a frozen snapshot. Static defaults: DEFAULT_CASE_SENSITIVE, DEFAULT_TYPE.
    • Exception hierarchy: CnpjValidatorTypeError (base for type errors), CnpjValidatorInputTypeError, CnpjValidatorOptionsTypeError, CnpjValidatorException (base for option value exceptions), CnpjValidatorOptionTypeInvalidException. Invalid option values (e.g. type: 'invalid') throw; invalid CNPJ data (wrong length, bad check digits, ineligible base/branch) still returns false.
    • Array input: CnpjInput is string | string[]; array of strings is joined and validated like a single string.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Check digits: Validation uses @lacussoft/cnpj-dv for check-digit verification; ineligible base/branch or repeated digits result in false (no throw).
    • Exports: ESM entry exports cnpjVal, CnpjValidator, CnpjValidatorOptions, CNPJ_LENGTH, exception classes, and types; CJS/UMD default export is cnpjVal with the same members on its namespace.

Patch Changes

  • Updated dependencies [f795b64]
  • Updated dependencies [a152328]
    • @lacussoft/cnpj-dv@1.0.0
    • @lacussoft/utils@1.0.0

@lacussoft/cpf-dv@1.0.0

Major Changes

  • fbe56e2: ### 🚀 Stable Version Released!

    Utility class to calculate check digits on CPF (Brazilian individual taxpayer ID). Main features:

    • Support to different input formats: accepts CPF as string or lists of strings
    • Only numbers matter: automatically strips non-numeric characters from input
    • Lazy evaluation & Caching: check digits are calculated only when accessed for the first time
    • Minimal dependencies: No external dependencies, only on internal package @lacussoft/utils
    • Comprehensive error handling: specific exceptions for different error scenarios

    For detailed usage and API reference, see the README.

Patch Changes

  • Updated dependencies [a152328]
    • @lacussoft/utils@1.0.0

@lacussoft/cpf-fmt@3.0.0

Major Changes

  • 2023f36: ### 🎉 v3 at a glance 🎊

    • 🏗️ Class-based APICpfFormatter lets you set default options once and reuse them; format() accepts string or array of strings.
    • Flat options — Delimiters and masking use top-level options (dotKey, dashKey, hiddenKey, hiddenStart, hiddenEnd) plus escape, encode, and onFail.
    • 🛡️ Structured errors — Typed exceptions (CpfFormatterInputTypeError, CpfFormatterInputLengthException, options errors) for clearer error handling.

    BREAKING CHANGES

    • Object-oriented API: The package still exports the cpfFmt() helper, but the main programmable API is the CpfFormatter class. You can create an instance with default options and call format() without passing options every time.
    • Options are now flat (no nested objects):
      • delimiters.dot is now dotKey
      • delimiters.dash is now dashKey
      • hiddenRange.start is now hiddenStart
      • hiddenRange.end is now hiddenEnd
      • hiddenKey and escape keep the same names.
      • New: encode (URL-encode output).
      • onFail callback: The signature has changed; it now receives (value, error?) and the return value is used as the formatted result.
    • Nullish options: Setting an option to null or undefined now falls back to the existing value (constructor or default) instead of causing runtime issues.

    New features

    • encode option: When true, the formatted CPF is URL-encoded (e.g. for query parameters or paths).
    • Exception hierarchy: Dedicated error classes for type errors (CpfFormatterTypeError, CpfFormatterInputTypeError, CpfFormatterOptionsTypeError) and validation/range errors (CpfFormatterException, CpfFormatterInputLengthException, CpfFormatterOptionsHiddenRangeInvalidException, CpfFormatterOptionsForbiddenKeyCharacterException). Failures can still be handled via the onFail callback without throwing.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Minimal dependencies: Removed html-escaper, deepmerge, and num-only; in-house HTML escaping and option handling. It only depends on internal package @lacussoft/utils now.

Patch Changes

  • Updated dependencies [a152328]
    • @lacussoft/utils@1.0.0

@lacussoft/cpf-gen@3.0.0

Major Changes

  • e812b8d: ### 🎉 v3 at a glance 🎊

    • 🏗️ Class-based APICpfGenerator lets you set default options once and reuse them; generate() accepts optional per-call options. The cpfGen() helper remains for one-off usage.
    • Reusable optionsCpfGeneratorOptions with getters/setters, set() for bulk updates, and constructor merge; read-only all getter for a frozen snapshot.
    • 🛡️ Structured errors — Typed exceptions (CpfGeneratorOptionsTypeError, CpfGeneratorOptionPrefixInvalidException) for invalid option types and prefix validation.
    • 📐 Stricter prefix validation — Prefix rejects zeroed base (first 9 digits all zeros) and 9 repeated digits (e.g. 999999999).

    BREAKING CHANGES

    • Object-oriented API: The package still exports the cpfGen() helper, but the main programmable API is the CpfGenerator class. You can create an instance with default options and call generate() without passing options every time. When a CpfGeneratorOptions instance is passed to the constructor, it is used by reference; mutating it affects future generate() calls.
    • Prefix validation: Invalid prefixes now throw CpfGeneratorOptionPrefixInvalidException (e.g. base all zeros, or 9 repeated digits). Option type errors (e.g. non-string prefix) throw CpfGeneratorOptionsTypeError. Code that relied on the previous behavior or on generic errors may need to catch these exceptions.
    • Nullish options: Setting an option to null or undefined when using CpfGeneratorOptions falls back to the existing value (constructor or default) instead of causing runtime issues.

    New features

    • CpfGenerator class: Constructor accepts optional default options (plain object or CpfGeneratorOptions). generate(options?) returns a valid CPF; per-call options override instance defaults for that call only. options getter returns the default options instance (mutations affect future generate() calls).
    • CpfGeneratorOptions class: Reusable options with getters/setters for format and prefix, and set() for bulk updates; supports constructor merge and overrides. Static defaults: DEFAULT_FORMAT, DEFAULT_PREFIX. Read-only all getter returns a frozen snapshot.
    • Exception hierarchy: CpfGeneratorTypeError (base for option type errors), CpfGeneratorOptionsTypeError, CpfGeneratorException (base for rule errors), CpfGeneratorOptionPrefixInvalidException.
    • New exports: Constants CPF_LENGTH (11) and CPF_PREFIX_MAX_LENGTH (9); types CpfGeneratorOptionsInput, CpfGeneratorOptionsType, Nullable<T>.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Check digits: Generation uses @lacussoft/cpf-dv for check-digit calculation. Invalid sequences (e.g. after prefix) trigger retry until a valid CPF is produced.
    • Exports: ESM entry exports cpfGen, CpfGenerator, CpfGeneratorOptions, constants (CPF_LENGTH, CPF_PREFIX_MAX_LENGTH), exception classes, and types; CJS/UMD default export is cpfGen with the same members on its namespace.

Patch Changes

  • Updated dependencies [fbe56e2]
  • Updated dependencies [a152328]
    • @lacussoft/cpf-dv@1.0.0
    • @lacussoft/utils@1.0.0

cpf-utils@3.0.0

Major Changes

  • beb126e: ### 🎉 v3 at a glance 🎊

    • 🏗️ Class-based customizationCpfUtils class with optional default formatter, generator, and validator (options or instances); default export remains a pre-built instance for one-off use.
    • Flat format options — Format options no longer use nested objects: delimiters.dotdotKey, delimiters.dashdashKey, hiddenRange.start/endhiddenStart/hiddenEnd. New encode option for URL-encoding.
    • 📦 Full re-exports — All formatter, generator, and validator classes, options, errors, and types from @lacussoft/cpf-fmt, @lacussoft/cpf-gen, and @lacussoft/cpf-val are re-exported; you can use CpfFormatter, CpfGenerator, CpfValidator and the helpers cpfFmt, cpfGen, cpfVal directly from cpf-utils.
    • 🛡️ Structured errors — Format, generate, and isValid can throw the same typed exceptions as the underlying packages (input type, options type, invalid prefix, etc.).

    BREAKING CHANGES

    • Named exports format, generate, isValid removed: The package no longer exports standalone format, generate, and isValid functions. Use the default instance (cpfUtils.format(), cpfUtils.generate(), cpfUtils.isValid()) or import the helpers cpfFmt, cpfGen, cpfVal for one-off calls. Code that did import { format, generate, isValid } from 'cpf-utils' must switch to import cpfUtils from 'cpf-utils' and call cpfUtils.format() etc., or use import { cpfFmt, cpfGen, cpfVal } from 'cpf-utils'.
    • Format options are now flat (aligned with @lacussoft/cpf-fmt v3). Nested option shapes are no longer supported:
      • delimiters.dot is now dotKey
      • delimiters.dash is now dashKey
      • hiddenRange.start is now hiddenStart
      • hiddenRange.end is now hiddenEnd
      • onFail callback signature may differ (e.g. receives (value, exception)); return value is still used as the result when input length ≠ 11.
    • isValid() throws on invalid input type: Passing a non-string, non–array-of-strings (e.g. a number) to cpfUtils.isValid() now throws CpfValidatorInputTypeError instead of returning false or unspecified behavior. Valid CPF data (wrong length, ineligible base, bad check digits) still returns false without throwing.
    • Generator prefix validation: Invalid prefixes (e.g. base all zeros, 9 repeated digits) now throw CpfGeneratorOptionPrefixInvalidException. Option type errors (e.g. non-string prefix) throw CpfGeneratorOptionsTypeError.
    • New exports and default shape: The package now exports the CpfUtils class and re-exports cpfFmt, cpfGen, cpfVal and all their classes, options, errors, and types. Code that assumed only a minimal default (only format, generate, isValid methods) or a specific tree-shaking surface may need updates.

    New features

    • CpfUtils class: Construct with optional CpfUtilsSettingsInput (formatter, generator, validator as options objects or instances of CpfFormatter / CpfGenerator / CpfValidator). Instance has format(), generate(), isValid() and getters/setters for formatter, generator, validator.
    • Direct use of underlying APIs: Import and use cpfFmt, CpfFormatter, cpfGen, CpfGenerator, cpfVal, CpfValidator, options classes, and exception classes from cpf-utils without depending on the three packages directly.
    • Format encode option: When true, the formatted CPF is URL-encoded (e.g. for query params or paths).

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Documentation: README updated to match current API (flat options, CpfUtils class, re-exports, default instance) and aligned structure with cnpj-utils, cpf-fmt, cpf-gen, and cpf-val.
    • Wrapper consistency: cpf-utils behavior and options now fully reflect the v3 APIs of @lacussoft/cpf-fmt, @lacussoft/cpf-gen, and @lacussoft/cpf-val.

Patch Changes

  • Updated dependencies [a152328]
  • Updated dependencies [2023f36]
  • Updated dependencies [e812b8d]
  • Updated dependencies [ffb9078]
    • @lacussoft/utils@1.0.0
    • @lacussoft/cpf-fmt@3.0.0
    • @lacussoft/cpf-gen@3.0.0
    • @lacussoft/cpf-val@3.0.0

@lacussoft/cpf-val@3.0.0

Major Changes

  • ffb9078: ### 🎉 v3 at a glance 🎊

    • Class-based APICpfValidator for reusable validation; isValid(cpfInput) returns true/false. The cpfVal(cpfInput) helper remains for one-off usage.
    • Flexible input — Accepts string or readonly string[] (formatted or raw); non-numeric characters are stripped before validation.
    • Structured errors — Invalid input type throws CpfValidatorInputTypeError; invalid CPF data (wrong length, ineligible base, bad check digits) still returns false without throwing.
    • Explicit exports — Package exports cpfVal, CpfValidator, CPF_LENGTH, exception classes, and types; uses @lacussoft/cpf-dv for check-digit verification.

    BREAKING CHANGES

    • Invalid input type now throws: cpfVal(cpfInput) and CpfValidator#isValid(cpfInput) throw CpfValidatorInputTypeError when cpfInput is not a string or array of strings (e.g. cpfVal(123), cpfVal(null)). In v2, such calls had unspecified behavior; they now fail fast with a typed error.
    • New exports: The package now exports CpfValidator, CPF_LENGTH, CpfValidatorTypeError, CpfValidatorInputTypeError, CpfValidatorException, and CpfInput. Code that assumed only a default export or a specific bundle surface may need to be updated.

    New features

    • CpfValidator class: new CpfValidator() with isValid(cpfInput); no options (CPF is numeric-only).
    • Array input: CpfInput is string | readonly string[]; array of strings is joined and validated like a single string.
    • Exception hierarchy: CpfValidatorTypeError (base), CpfValidatorInputTypeError (invalid input type), CpfValidatorException (base for future use). Invalid CPF values still return false.

    Improvements

    • New PT-BR documentation: New README in Brazilian Portuguese.
    • Check digits: Validation delegates to @lacussoft/cpf-dv; ineligible base (e.g. repeated digits) or wrong length yields false (no throw).
    • Platform support: README documents Node, Bun, Deno, and browsers with a unified Platform Support table.

Patch Changes

  • Updated dependencies [fbe56e2]
  • Updated dependencies [a152328]
    • @lacussoft/cpf-dv@1.0.0
    • @lacussoft/utils@1.0.0

@lacussoft/utils@1.0.0

Major Changes

  • a152328: Reusable JavaScript/TypeScript utilities for LacusSolutions' packages. This major release establishes the public API:

    • describeType(value) — Returns human-readable type strings for error messages (primitives, NaN, Infinity, arrays like number[] or (number | string)[], empty arrays, and plain objects).
    • escapeHTML(value) — Escapes &, <, >, ", ' with HTML entities for safe output and XSS mitigation.
    • generateRandomSequence(size, type) — Generates random sequences of given length; type is 'numeric' (0–9), 'alphabetic' (A–Z), or 'alphanumeric' (0–9, A–Z). Exported type: SequenceType.

    Named exports and a default object export; ESM, CommonJS, and UMD builds; zero dependencies; full TypeScript declarations. For installation, usage, and API details, see the package README.

Summary by CodeRabbit

Release Notes

  • New Features
    • Major version updates (v3.0.0) across document formatting and validation packages with class-based APIs.
    • Added alphanumeric support for document formatting and generation.
    • Introduced flattened option structures for simplified configuration.
    • New encode option for output formatting control.
    • Expanded error handling with structured exception types.
    • Stable v1.0.0 releases for foundational utility packages.

@github-actions github-actions bot requested a review from a team as a code owner March 7, 2026 20:47
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 7, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cpf-utils Ready Ready Preview, Comment Mar 8, 2026 2:51am

Comment thread packages/br-utils/CHANGELOG.md Outdated
@juliolmuller
Copy link
Copy Markdown
Collaborator

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 8, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 8, 2026

📝 Walkthrough

Walkthrough

This PR releases version 3.0.0 for multiple br-utils packages with class-based APIs, removes processed changeset documentation files, and updates CHANGELOG.md entries with detailed release notes. Additionally, utility packages are bumped to v1.0.0, and @lacussoft/cnpj-fmt removes external dependencies.

Changes

Cohort / File(s) Summary
Changeset Cleanup
.changeset/twenty-hands-go.md, .changeset/twenty-hands-join.md, .changeset/twenty-hands-keep.md, .changeset/twenty-hands-laugh.md, .changeset/twenty-hands-melt.md, .changeset/twenty-hands-navigate.md, .changeset/twenty-hands-owe.md, .changeset/twenty-hands-pay.md, .changeset/twenty-hands-queue.md
Deleted processed v3 release notes documenting breaking changes, new class-based APIs, and improvements across cnpj-fmt, cpf-fmt, cnpj-gen, cpf-gen, cnpj-val, cpf-val, cnpj-utils, cpf-utils, and br-utils packages.
Dependency Reduction
.changeset/curvy-hands-shop.md
Removed external dependencies (deepmerge, html-escaper, num-only) from @lacussoft/cnpj-fmt as part of major version bump.
Version Bumps (v3.0.0)
packages/br-utils/package.json, packages/cnpj-fmt/package.json, packages/cnpj-gen/package.json, packages/cnpj-utils/package.json, packages/cnpj-val/package.json, packages/cpf-fmt/package.json, packages/cpf-gen/package.json, packages/cpf-utils/package.json, packages/cpf-val/package.json
Updated version fields from 2.0.2 to 3.0.0 across multiple core packages.
Version Bumps (v1.0.0)
packages/cnpj-dv/package.json, packages/cpf-dv/package.json, packages/utils/package.json
Updated version fields from 0.0.0 to 1.0.0 for utility/foundation packages.
CHANGELOG Updates
packages/br-utils/CHANGELOG.md, packages/cnpj-fmt/CHANGELOG.md, packages/cnpj-gen/CHANGELOG.md, packages/cnpj-utils/CHANGELOG.md, packages/cnpj-val/CHANGELOG.md, packages/cpf-fmt/CHANGELOG.md, packages/cpf-gen/CHANGELOG.md, packages/cpf-utils/CHANGELOG.md, packages/cpf-val/CHANGELOG.md
Added comprehensive v3.0.0 release documentation detailing class-based APIs (CnpjFormatter, CpfFormatter, etc.), flattened options, encode/onFail options, structured error hierarchies, breaking changes, and Portuguese documentation updates.
CHANGELOG Formatting
packages/cnpj-dv/CHANGELOG.md, packages/cpf-dv/CHANGELOG.md, packages/utils/CHANGELOG.md
Reformatted version headers from semantic tags to explicit markdown headings (e.g., "## 1.0.0") with stable release annotations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

dependencies, enhancement, release

Poem

🐰 Through version bumps and changelogs we bound,
From v2 to v3, such progress we've found!
Class APIs shine with options so flat,
Deps trimmed down—we like the look of that.
A hop forward for every package packed! 🚀

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'New Packages Release' is vague and generic, failing to convey specific details about the changeset which involves major version bumps across 12 packages with significant API redesigns. Consider a more descriptive title such as 'Release v3 major versions with class-based APIs and dependency updates' to better reflect the scope and nature of the changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch changeset-release/main

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai bot added enhancement New minor or major features. dependencies Changes to the project dependencies. refactoring Non-functional improvements or changes. labels Mar 8, 2026
@juliolmuller juliolmuller self-assigned this Mar 8, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (8)
packages/br-utils/package.json (1)

72-76: ⚠️ Potential issue | 🔴 Critical

Fix the workspace: dependency resolution before publishing.*

The release script depends on a non-existent workspace-version-resolver tool (^0.1.0) that will cause the release to fail. Additionally, workspace:* dependencies must not be published to npm—they break consumer installations.

Replace workspace:* with concrete semver ranges:

  • @lacussoft/utils: workspace:*^1.0.0 (stable)
  • cnpj-utils: workspace:*^3.0.0 (stable)
  • cpf-utils: workspace:*^3.0.0 (stable)

Remove the non-functional workspace-version-resolver from devDependencies and release script, then rely on changeset publish alone (which handles version bumping) or implement a proper pre-publish transformation step using an existing, available tool.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/br-utils/package.json` around lines 72 - 76, Update package.json so
published dependencies are real semver ranges and remove the broken workspace
resolver: replace the three dependencies "@lacussoft/utils", "cnpj-utils", and
"cpf-utils" currently set to "workspace:*" with concrete ranges "^1.0.0",
"^3.0.0", and "^3.0.0" respectively, and remove any devDependency entry named
"workspace-version-resolver" as well as any invocation of it in the "release"
script; rely on "changeset publish" (or implement a supported pre-publish
transformer) instead of calling the non-existent resolver.
packages/cnpj-gen/package.json (1)

64-67: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifiers before publishing.

The workspace:* protocol won't resolve for npm consumers. Since both @lacussoft/cnpj-dv and @lacussoft/utils are now at 1.0.0, use ^ specifiers per repo conventions.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/cnpj-dv": "workspace:*",
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/cnpj-dv": "^1.0.0",
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ~ for pre-1.0.0 versions and ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cnpj-gen/package.json` around lines 64 - 67, Update the dependency
specifiers in package.json for the cnpj-gen package to replace workspace:* with
concrete semver ranges: change "@lacussoft/cnpj-dv" and "@lacussoft/utils" from
"workspace:*" to "^1.0.0" (per repo convention for packages >=1.0.0). Edit the
"dependencies" block in packages/cnpj-gen/package.json so the two package
entries use the caret semver specifier to ensure npm consumers can resolve them.
packages/cnpj-utils/package.json (1)

68-73: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifiers before publishing.

All dependencies are now at stable versions (>=1.0.0), so use ^ specifiers.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/cnpj-fmt": "workspace:*",
-    "@lacussoft/cnpj-gen": "workspace:*",
-    "@lacussoft/cnpj-val": "workspace:*",
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/cnpj-fmt": "^3.0.0",
+    "@lacussoft/cnpj-gen": "^3.0.0",
+    "@lacussoft/cnpj-val": "^3.0.0",
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ~ for pre-1.0.0 versions and ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cnpj-utils/package.json` around lines 68 - 73, Update package.json
dependencies to replace all "workspace:*" specifiers with concrete semver ranges
using caret (^) for the stable packages; specifically change the versions for
"@lacussoft/cnpj-fmt", "@lacussoft/cnpj-gen", "@lacussoft/cnpj-val", and
"@lacussoft/utils" from "workspace:*" to the appropriate "^<version>" values
(use the current published >=1.0.0 versions for each package) so the
package.json no longer contains workspace:* entries before publishing.
packages/cnpj-val/package.json (1)

63-66: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifiers before publishing.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/cnpj-dv": "workspace:*",
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/cnpj-dv": "^1.0.0",
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cnpj-val/package.json` around lines 63 - 66, package.json currently
lists workspace:* for dependencies which must be replaced with concrete semver
ranges before publishing; update the dependencies entry for "@lacussoft/cnpj-dv"
and "@lacussoft/utils" in package.json to explicit semver specifiers (e.g., use
caret ranges like ^1.0.0 or the exact versions you intend to publish) so
consumers don’t receive workspace:* at install time and ensure the chosen
versions reflect the released package compatibility.
packages/cpf-fmt/package.json (1)

63-65: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifier before publishing.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cpf-fmt/package.json` around lines 63 - 65, Replace the placeholder
workspace specifier for the dependency "@lacussoft/utils": "workspace:*" with a
concrete semver range (e.g., "^1.0.0" or the actual package version you intend
to publish) so the released package does not reference workspace:*; update the
dependency entry in package.json to the chosen semver (prefer a caret range like
^<major>.<minor>.<patch> for published packages) and verify the version matches
the published `@lacussoft/utils` release.
packages/cpf-utils/package.json (1)

68-73: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifiers before publishing.

All dependencies are now at stable versions (>=1.0.0), so use ^ specifiers.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/cpf-fmt": "workspace:*",
-    "@lacussoft/cpf-gen": "workspace:*",
-    "@lacussoft/cpf-val": "workspace:*",
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/cpf-fmt": "^3.0.0",
+    "@lacussoft/cpf-gen": "^3.0.0",
+    "@lacussoft/cpf-val": "^3.0.0",
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ~ for pre-1.0.0 versions and ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cpf-utils/package.json` around lines 68 - 73, Replace the four
workspace:* dependency specs in package.json for "@lacussoft/cpf-fmt",
"@lacussoft/cpf-gen", "@lacussoft/cpf-val", and "@lacussoft/utils" with concrete
caret semver ranges (e.g. ^1.0.0 or, better, ^<current-stable-version>) so
published packages don't reference workspace:*; update each dependency value to
a ^ version string reflecting the stable (>=1.0.0) release.
packages/cpf-val/package.json (1)

63-66: ⚠️ Potential issue | 🟠 Major

Replace workspace:* with concrete semver specifiers before publishing.

🔧 Proposed fix
   "dependencies": {
-    "@lacussoft/cpf-dv": "workspace:*",
-    "@lacussoft/utils": "workspace:*"
+    "@lacussoft/cpf-dv": "^1.0.0",
+    "@lacussoft/utils": "^1.0.0"
   }

Based on learnings: "In monorepos, avoid leaving workspace:* dependencies in released packages... use ^ for >=1.0.0 versions."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/cpf-val/package.json` around lines 63 - 66, The package.json
currently pins internal deps "@lacussoft/cpf-dv" and "@lacussoft/utils" to
workspace:* which must be replaced before publishing; update those dependency
entries to concrete semver specifiers (e.g., ^1.0.0 or the matching release
versions for cpf-dv and utils) instead of "workspace:*", ensure package.json's
"dependencies" entries for "@lacussoft/cpf-dv" and "@lacussoft/utils" use caret
semver ranges for released versions, run a quick npm/yarn install or validation
to confirm the resolved versions, and commit the updated package.json.
packages/utils/CHANGELOG.md (1)

11-11: ⚠️ Potential issue | 🟡 Minor

Use a package-local README link here.

../../packages/utils/README.md depends on the repository layout. ./README.md keeps the link valid when this changelog is viewed from the published package contents too.

Proposed fix
-Named exports and a default object export; ESM, CommonJS, and UMD builds; zero dependencies; full TypeScript declarations. For installation, usage, and API details, see the [package README](../../packages/utils/README.md).
+Named exports and a default object export; ESM, CommonJS, and UMD builds; zero dependencies; full TypeScript declarations. For installation, usage, and API details, see the [package README](./README.md).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/utils/CHANGELOG.md` at line 11, The changelog's README link is
repository-relative and will break when the package is published; update the
link in packages/utils/CHANGELOG.md (the line containing the README link) to use
a package-local relative path by replacing "../../packages/utils/README.md" with
"./README.md" so the changelog points to the README bundled with the published
package.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/cnpj-dv/package.json`:
- Line 3: The package.json currently uses the monorepo-only specifier
"workspace:*" for the dependency "@lacussoft/utils", which prevents consumers
from installing the published package; update the dependency entry for
"@lacussoft/utils" in package.json to a published semver range (e.g., "^1.0.0")
so npm clients can resolve it, ensuring the change replaces "workspace:*" with
"^1.0.0" before publishing.

In `@packages/cnpj-fmt/package.json`:
- Line 3: Update the dependency entry for "@lacussoft/utils" in package.json to
replace the workspace:* specifier with the concrete published semver range
(e.g., ^1.0.0) so the package manifest is release-ready; locate the dependency
key "@lacussoft/utils" in packages/cnpj-fmt's package.json and change its value
from "workspace:*" to the appropriate version range before publishing.

In `@packages/cpf-fmt/CHANGELOG.md`:
- Around line 7-9: Update the CHANGELOG entry to note that the UMD bundle
exposes abbreviated exception/type aliases while CommonJS exports the full
`CpfFormatter...` names; specifically amend the paragraph listing
`CpfFormatterInputTypeError` and `CpfFormatterInputLengthException` (and related
options error names) to add a sentence clarifying that browser consumers using
the UMD build should reference the abbreviated alias names (the UMD namespace
does not include the full `CpfFormatter*` identifiers) while CJS consumers can
use the full names.

In `@packages/cpf-gen/package.json`:
- Line 3: The package.json currently sets "version": "3.0.0" while some
dependencies still use the workspace:* specifier; before publishing replace all
workspace:* entries in dependencies and devDependencies with concrete semver
ranges (prefer caret-prefixed ranges like ^x.y.z) so consumers don’t receive an
install-broken manifest; locate the dependency entries in package.json (look for
any values equal to "workspace:*") and update them to the actual released
versions (or appropriate ^ ranges) and verify package-lock/yarn lock is
regenerated before publishing.

---

Outside diff comments:
In `@packages/br-utils/package.json`:
- Around line 72-76: Update package.json so published dependencies are real
semver ranges and remove the broken workspace resolver: replace the three
dependencies "@lacussoft/utils", "cnpj-utils", and "cpf-utils" currently set to
"workspace:*" with concrete ranges "^1.0.0", "^3.0.0", and "^3.0.0"
respectively, and remove any devDependency entry named
"workspace-version-resolver" as well as any invocation of it in the "release"
script; rely on "changeset publish" (or implement a supported pre-publish
transformer) instead of calling the non-existent resolver.

In `@packages/cnpj-gen/package.json`:
- Around line 64-67: Update the dependency specifiers in package.json for the
cnpj-gen package to replace workspace:* with concrete semver ranges: change
"@lacussoft/cnpj-dv" and "@lacussoft/utils" from "workspace:*" to "^1.0.0" (per
repo convention for packages >=1.0.0). Edit the "dependencies" block in
packages/cnpj-gen/package.json so the two package entries use the caret semver
specifier to ensure npm consumers can resolve them.

In `@packages/cnpj-utils/package.json`:
- Around line 68-73: Update package.json dependencies to replace all
"workspace:*" specifiers with concrete semver ranges using caret (^) for the
stable packages; specifically change the versions for "@lacussoft/cnpj-fmt",
"@lacussoft/cnpj-gen", "@lacussoft/cnpj-val", and "@lacussoft/utils" from
"workspace:*" to the appropriate "^<version>" values (use the current published
>=1.0.0 versions for each package) so the package.json no longer contains
workspace:* entries before publishing.

In `@packages/cnpj-val/package.json`:
- Around line 63-66: package.json currently lists workspace:* for dependencies
which must be replaced with concrete semver ranges before publishing; update the
dependencies entry for "@lacussoft/cnpj-dv" and "@lacussoft/utils" in
package.json to explicit semver specifiers (e.g., use caret ranges like ^1.0.0
or the exact versions you intend to publish) so consumers don’t receive
workspace:* at install time and ensure the chosen versions reflect the released
package compatibility.

In `@packages/cpf-fmt/package.json`:
- Around line 63-65: Replace the placeholder workspace specifier for the
dependency "@lacussoft/utils": "workspace:*" with a concrete semver range (e.g.,
"^1.0.0" or the actual package version you intend to publish) so the released
package does not reference workspace:*; update the dependency entry in
package.json to the chosen semver (prefer a caret range like
^<major>.<minor>.<patch> for published packages) and verify the version matches
the published `@lacussoft/utils` release.

In `@packages/cpf-utils/package.json`:
- Around line 68-73: Replace the four workspace:* dependency specs in
package.json for "@lacussoft/cpf-fmt", "@lacussoft/cpf-gen",
"@lacussoft/cpf-val", and "@lacussoft/utils" with concrete caret semver ranges
(e.g. ^1.0.0 or, better, ^<current-stable-version>) so published packages don't
reference workspace:*; update each dependency value to a ^ version string
reflecting the stable (>=1.0.0) release.

In `@packages/cpf-val/package.json`:
- Around line 63-66: The package.json currently pins internal deps
"@lacussoft/cpf-dv" and "@lacussoft/utils" to workspace:* which must be replaced
before publishing; update those dependency entries to concrete semver specifiers
(e.g., ^1.0.0 or the matching release versions for cpf-dv and utils) instead of
"workspace:*", ensure package.json's "dependencies" entries for
"@lacussoft/cpf-dv" and "@lacussoft/utils" use caret semver ranges for released
versions, run a quick npm/yarn install or validation to confirm the resolved
versions, and commit the updated package.json.

In `@packages/utils/CHANGELOG.md`:
- Line 11: The changelog's README link is repository-relative and will break
when the package is published; update the link in packages/utils/CHANGELOG.md
(the line containing the README link) to use a package-local relative path by
replacing "../../packages/utils/README.md" with "./README.md" so the changelog
points to the README bundled with the published package.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: a72926dd-f6ad-4dd4-96de-fb7ffd0cd692

📥 Commits

Reviewing files that changed from the base of the PR and between b26cd5a and 4272e7d.

📒 Files selected for processing (34)
  • .changeset/curvy-hands-shop.md
  • .changeset/twenty-hands-go.md
  • .changeset/twenty-hands-join.md
  • .changeset/twenty-hands-keep.md
  • .changeset/twenty-hands-laugh.md
  • .changeset/twenty-hands-melt.md
  • .changeset/twenty-hands-navigate.md
  • .changeset/twenty-hands-owe.md
  • .changeset/twenty-hands-pay.md
  • .changeset/twenty-hands-queue.md
  • packages/br-utils/CHANGELOG.md
  • packages/br-utils/package.json
  • packages/cnpj-dv/CHANGELOG.md
  • packages/cnpj-dv/package.json
  • packages/cnpj-fmt/CHANGELOG.md
  • packages/cnpj-fmt/package.json
  • packages/cnpj-gen/CHANGELOG.md
  • packages/cnpj-gen/package.json
  • packages/cnpj-utils/CHANGELOG.md
  • packages/cnpj-utils/package.json
  • packages/cnpj-val/CHANGELOG.md
  • packages/cnpj-val/package.json
  • packages/cpf-dv/CHANGELOG.md
  • packages/cpf-dv/package.json
  • packages/cpf-fmt/CHANGELOG.md
  • packages/cpf-fmt/package.json
  • packages/cpf-gen/CHANGELOG.md
  • packages/cpf-gen/package.json
  • packages/cpf-utils/CHANGELOG.md
  • packages/cpf-utils/package.json
  • packages/cpf-val/CHANGELOG.md
  • packages/cpf-val/package.json
  • packages/utils/CHANGELOG.md
  • packages/utils/package.json
💤 Files with no reviewable changes (10)
  • .changeset/curvy-hands-shop.md
  • .changeset/twenty-hands-join.md
  • .changeset/twenty-hands-go.md
  • .changeset/twenty-hands-keep.md
  • .changeset/twenty-hands-queue.md
  • .changeset/twenty-hands-owe.md
  • .changeset/twenty-hands-melt.md
  • .changeset/twenty-hands-pay.md
  • .changeset/twenty-hands-navigate.md
  • .changeset/twenty-hands-laugh.md

Comment thread packages/cnpj-dv/package.json
Comment thread packages/cnpj-fmt/package.json
Comment thread packages/cpf-fmt/CHANGELOG.md
Comment thread packages/cpf-gen/package.json
@juliolmuller juliolmuller added bug Something wrong isn't right. documentation Documentation or isntructions additions or changes. released Automation related to releases runs. labels Mar 8, 2026
@juliolmuller juliolmuller merged commit c55f6e4 into main Mar 8, 2026
10 checks passed
@juliolmuller juliolmuller deleted the changeset-release/main branch March 8, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something wrong isn't right. dependencies Changes to the project dependencies. documentation Documentation or isntructions additions or changes. enhancement New minor or major features. refactoring Non-functional improvements or changes. released Automation related to releases runs.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant