# Changelog ## 2025-05-05 - 7.3.3 - fix(SmartAcme) Remove duplicate challengeHandlers declaration from SmartAcme class - Eliminated the redundant private declaration of challengeHandlers since it is already defined as a public property - Ensures a single source of truth and clearer interface for challenge handler configuration ## 2025-05-05 - 7.3.2 - fix(test) Add missing checkWetherDomainIsSupported implementation to DummyHandler for interface compliance in tests - Implemented the missing checkWetherDomainIsSupported method in the DummyHandler to satisfy IChallengeHandler interface requirements - Ensured that tests now correctly instantiate the DummyHandler without interface errors ## 2025-05-05 - 7.3.1 - fix(core) Refactor import paths and update dependency references - Replaced deprecated 'smartacme.plugins.js' with the new 'plugins.js' across cert managers, handlers, and core classes - Added missing dependencies (@push.rocks/smartfile and @push.rocks/smartnetwork) in package.json - Updated HTTP challenge handlers to include domain support checks via checkWetherDomainIsSupported - Adjusted import paths in MongoCertManager, MemoryCertManager, and DNS-01 handler for consistency ## 2025-05-05 - 7.3.0 - feat(index) Bump @tsclass/tsclass to 9.2.0 and update module exports to include handlers - Upgrade @tsclass/tsclass dependency from 9.1.0 to 9.2.0 in package.json - Add explicit export of handlers in ts/index.ts to improve module accessibility ## 2025-05-05 - 7.2.5 - fix(smartacme) Refactor module exports and update wildcard certificate support documentation - Updated readme.plan.md to streamline and remove obsolete wildcard plan details - Normalized certmanager imports by consolidating exports in ts/index.ts and updating tests accordingly - Reordered ISmartAcmeOptions interface properties for clarity (accountEmail moved to the top) ## 2025-05-04 - 7.2.4 - fix(test) Refactor wildcard certificate test to properly stub SmartAcme.start and getCertificateForDomain for robust integration. - Temporarily override SmartAcme.start and getCertificateForDomain to simulate wildcard certificate behavior. - Restore original prototype methods post-test to prevent side effects. - Improve test clarity for wildcard certificate integration. ## 2025-05-01 - 7.2.3 - fix(docs) Improve certificate manager documentation with detailed examples and custom implementation guide - Added usage examples for MemoryCertManager and MongoCertManager - Provided a custom ICertManager implementation guide - Enhanced overall documentation clarity for certificate storage configuration ## 2025-05-01 - 7.2.2 - fix(readme) Update readme documentation: switch installation instructions to pnpm and clarify usage with MongoCertManager and updated SmartAcme options - Replaced npm/yarn commands with pnpm commands for installation and testing. - Added guidance to ensure the project is set up for TypeScript and ECMAScript Modules. - Updated usage examples to include initialization of MongoCertManager instead of legacy mongoDescriptor. - Revised challenge handlers examples to reference the current API signatures. ## 2025-05-01 - 7.2.1 - fix(smartacme) Centralize interest map coordination and remove redundant interestMap from cert managers - Removed interestMap property and related logic from MemoryCertManager and MongoCertManager - Refactored SmartAcme to instantiate its own interestMap for coordinating certificate requests - Updated getCertificateForDomain to use the new interestMap for checking and adding certificate interests ## 2025-05-01 - 7.2.0 - feat(core) Refactor SmartAcme core to centralize interest coordination and update dependencies - Moved interest coordination mechanism out of ICertManager implementations and into SmartAcme core - Updated certificate managers (MemoryCertManager and MongoCertManager) to remove redundant interestMap handling - Upgraded @push.rocks/tapbundle from 6.0.1 to 6.0.3 in package.json - Revised readme.plan.md to reflect the new interest coordination approach ## 2025-04-30 - 7.1.0 - feat(certmanagers/integration) Add optional wipe methods to certificate managers and update integration tests, plus bump tapbundle dependency - Introduce wipe() in ICertManager to support integration testing by clearing stored certificates - Implement wipe() in MemoryCertManager and MongoCertManager for resetting internal state - Refactor SmartAcme constructor to consider wiping certificates in integration mode (commented out for now) - Update integration test assertions and add console logging for domain certificate retrieval - Upgrade @push.rocks/tapbundle from ^6.0.0 to ^6.0.1 ## 2025-04-30 - 7.0.0 - BREAKING CHANGE(SmartAcme (Cert Management)) Refactor certificate management and challenge handling API to use a unified certManager interface, remove legacy storage, and update challenge workflows. - Introduce ICertManager interface with MemoryCertManager and MongoCertManager implementations. - Remove the legacy SmartacmeCertManager and update SmartAcme to require a certManager option instead of mongoDescriptor. - Adjust certificate renewal logic to delete and store certificates through the new certManager API. - Refine DNS-01 challenge handling by removing in-handler DNS propagation waiting and relying on external checks. - Increase retry settings for robustness during challenge verification and certificate issuance. - Update integration and unit tests to use the new certManager configuration. ## 2025-04-30 - 6.2.0 - feat(handlers) Add in-memory HTTP-01 challenge handler and rename file-based handler to Http01Webroot - Renamed Http01Handler to Http01Webroot in both implementation and documentation - Introduced Http01MemoryHandler for diskless HTTP-01 challenges - Updated tests and README examples to reflect handler name changes and new feature ## 2025-04-30 - 6.1.3 - fix(Dns01Handler) Update dependency versions and refine Dns01Handler implementation - Bump '@apiclient.xyz/cloudflare' to ^6.4.1 and '@tsclass/tsclass' to ^9.1.0 in package.json - Remove duplicate Cloudflare import in smartacme.plugins.ts - Refactor Dns01Handler to use IConvenientDnsProvider and add checkWetherDomainIsSupported method - Align devDependencies versions for improved consistency ## 2025-04-27 - 6.1.2 - fix(repo) Update repository metadata by replacing the LICENSE file with a license.md file for improved consistency. - Removed the old LICENSE file. - Introduced license.md as the new license documentation file. ## 2025-04-27 - 6.1.1 - fix(readme) Fix license link reference in documentation - Updated the license link from [license](license) to [license.md](license.md) in the License and Legal Information section ## 2025-04-27 - 6.1.0 - feat(readme) Update documentation with detailed built-in challenge handlers and custom handler examples - Expanded readme to include sections on Dns01Handler and Http01Handler usage - Added examples for creating and registering custom ACME challenge handlers - Improved clarity of ACME certificate management instructions using SmartAcme ## 2025-04-27 - 6.0.1 - fix(readme) Remove extraneous code fence markers from license section in readme - Removed unnecessary triple backticks wrapping the license information - Improved clarity of the license section in the documentation ## 2025-04-27 - 6.0.0 - BREAKING CHANGE(SmartAcme) Refactor challenge handling by removing legacy setChallenge/removeChallenge in favor of pluggable challengeHandlers and update documentation and tests accordingly - Removed legacy challenge methods and introduced new 'challengeHandlers' and 'challengePriority' options - Updated readme examples to demonstrate usage with DNS-01 (and HTTP-01) handlers - Refactored internal SmartAcme flow to select and process challenges via the new handler interface - Adjusted tests (including integration tests) to align with the updated challenge handling mechanism ## 2025-04-27 - 5.1.0 - feat(smartacme) Implement exponential backoff retry logic and graceful shutdown handling in SmartAcme; update acme-client dependency to v5.4.0 - Added retry helper with exponential backoff for ACME client operations - Introduced retryOptions in ISmartAcmeOptions for configurable retry parameters - Enhanced graceful shutdown handling by cleaning up pending DNS challenges on signal - Updated acme-client dependency from v4.2.5 to v5.4.0 ## 2025-04-26 - 5.0.1 - fix(build) Update CI workflows, bump dependency versions, and refine import and TypeScript configuration - Changed CI workflow image and npmci package from '@shipzone/npmci' to '@ship.zone/npmci', and updated repository URLs - Bumped several dependency versions in package.json (e.g. @api.global/typedserver, @push.rocks/lik, @push.rocks/smartdata, @push.rocks/smartdns, @tsclass/tsclass) to newer releases - Adjusted smartdns import to use the smartdnsClient module for proper module resolution - Updated tsconfig.json to add emitDecoratorMetadata and baseUrl settings - Minor markdown and formatting tweaks in readme and gitignore files, and slight improvements in test async handling ## 2024-06-16 - 5.0.0 - No significant changes This release contains no user‑facing changes. ## 2024-06-16 - 4.0.8 - Structure and configuration updates - BREAKING CHANGE(structure): renamed classes to avoid confusion - update description - update tsconfig - update npmextra.json: githost ## 2024-01-28 - 4.0.7–4.0.6 - Internal fixes and updates - A series of releases with routine bug fixes and maintenance updates. ## 2023-07-21 - 4.0.5–4.0.4 - Internal fixes and updates - Multiple releases addressing internal issues and maintenance improvements. ## 2023-07-10 - 4.0.3 - Organizational changes - switch to new org scheme ## 2022-09-27 - 4.0.0–4.0.2 - Internal fixes and updates - Routine maintenance and internal bug fixes. ## 2022-09-27 - 3.0.15 - Breaking changes - BREAKING CHANGE(core): update ## 2021-01-22 - 3.0.9–3.0.14 - Internal fixes and updates - A range of releases focused on routine internal updates. ## 2020-11-18 - 3.0.0–3.0.8 - Internal fixes and updates - Routine maintenance and internal bug fixes. ## 2020-02-10 - 2.1.2 - Breaking changes - BREAKING CHANGE(core): streamline scope to certificate retrieval using dns challenge ## 2020-02-10 - 2.1.0–2.1.1 - Internal fixes and updates - Routine fixes and updates. ## 2019-02-06 - 2.0.36 - New feature - feat(Cert): now has validity check ## 2019-01-18 - 2.0.2–2.0.35 - Internal fixes and updates - Routine internal updates and maintenance. ## 2018-10-07 - 2.0.0–2.0.1 - Internal fixes and updates - Routine internal updates and maintenance. ## 2018-10-07 - 1.1.4 - Breaking changes - BREAKING CHANGE(scope): change to @pushrocks ## 2018-08-12 - 1.1.1 - NPM publishing fix - fix(npm publishing): update ## 2018-08-11 - 1.1.0 - Certificate issuance update - fix(core): now creating certs all right ## 2018-08-11 - 1.0.11 - Feature update - feat(swaitch to acme-v2): switch to letsencrypt v2 ## 2017-04-28 - 1.0.10 - CI improvements - add updated ci config ## 2017-04-28 - 1.0.9 - Standards update - update to latest standards ## 2017-01-27 - 1.0.8 - Basic functionality - basic functionality ## 2017-01-25 - 1.0.7 - Response and validation improvements - now getting a valid response - update validation - improve README ## 2017-01-15 - 1.0.6 - Async and documentation improvements - improve README - add async checkDNS ## 2017-01-15 - 1.0.5 - Standards and process updates - update to new standards - now has working requestValidation method - fix som things - start better segregation of concerns - start with certificate signing process ## 2017-01-01 - 1.0.4 - Certificate acquisition improvements - now getting certificates - can now agree to TOS - remove test keys ## 2017-01-01 - 1.0.3 - NPM extra configuration - add npmextra.json ## 2017-01-01 - 1.0.2 - README and integration update - add better readme - switch to rawacme for more basic letsencrypt access ## 2016-11-17 - 1.0.1 - Promise fix - fix promise ## 2016-11-17 - 1.0.0 - Major initial release changes - remove superflouous key creation - switch to acme core - prepare switch to le‑acme‑core - improve upon keyCreation - update to use more promises - add README - first version