[PASO 2.15] Add CookiesModule (EXTENDED #20) — core@0.16.0#39
Merged
Conversation
Define public contracts for EXTENDED module #20 (cookies): - CookieCategory type (essential/analytics/preferences + extensible) - CookieOptions interface (per-cookie set options with GDPR category) - ConsentPreferences interface (category consent map, essential always true) - CookieModuleOptions interface (provideCookies input) - CookieConfig interface (resolved config with defaults) - COOKIE_CONFIG InjectionToken
Implement signal-based consent service with 6 public methods: - consentGiven() / preferences() as reactive Signal reads - acceptAll() / rejectAll() / updatePreferences() for mutations - isCategoryAllowed() returns computed Signal per category Persists preferences in dedicated cookie (ff_cookie_consent) via direct document.cookie access (no CookieService dependency — D4). 24 tests covering all methods, persistence and edge cases.
…ment Implement CookieService with get/set/delete/getAll methods wrapping document.cookie. Optionally injects CookieConsentService to enforce GDPR consent before writing non-essential cookies. 34 tests covering basic operations, consent enforcement, and consent-disabled mode.
Implement *ffCookieConsent structural directive that conditionally renders content based on GDPR cookie consent for a given category. Reactive to consent changes via Angular signals and effect(). First standalone structural directive in the framework. 7 tests covering initial render, reactive updates, category switching, and essential.
… re-export Create provideCookies(options?) provider factory with conditional CookieConsentService registration. Add cookies/index.ts barrel exporting 10 public symbols. Re-export from src/index.ts.
- Version bump 0.15.0 → 0.16.0 in package.json - Add CHANGELOG entry for 0.16.0 documenting CookiesModule (EXTENDED #20) - Update compare links for [Unreleased] and [0.16.0]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
provideCookies(options?)factory with configurable consent, categories, and cookie attributesCookieService— typed CRUD (get,set,delete,getAll) with consent enforcementCookieConsentService— signal-based reactive consent management (acceptAll,rejectAll,updatePreferences,isCategoryAllowed)FfCookieConsentDirective— structural directive*ffCookieConsent="'category'"for conditional renderingSTEPs
cookie.types.ts)Test plan
provideCookies,CookieService,CookieConsentService,FfCookieConsentDirective,COOKIE_CONFIG