@feelflow/ffid-sdk 5.7.0 → 5.9.0

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.
@@ -33,22 +33,18 @@
33
33
  * This is the FFID-internal runtime-expired case (see
34
34
  * `getEffectiveSubscriptionStatus` on the server). Deny access.
35
35
  *
36
- * **SDK / server asymmetry `active_canceling` is session-only (#3460).**
37
- * The backend `EffectiveSubscriptionStatus` in
38
- * `src/lib/common/subscription-helpers.ts` does NOT currently include
39
- * `active_canceling`; cancellation-scheduled subscriptions surface as plain
40
- * `'active'` on `/api/v1/subscriptions/ext/check` and `/oauth/userinfo`, and
41
- * consumers that branch on the server verdict will not see the new literal.
42
- * The SDK enriches `computeEffectiveStatusFromSession` with
43
- * `cancelAtPeriodEnd` (carried on `FFIDSubscription` for FFID backends from
44
- * #3460 onward older backends omit the field and the helper defaults to
45
- * `false`, preserving the pre-#3460 `'active'` verdict) so `useSubscription`
46
- * can surface a "cancellation scheduled" badge without waiting for an
47
- * `/ext/check` round-trip. The asymmetry is safe because the new literal is
48
- * access-granting (no security regression on the userinfo path); when the
49
- * server's `EffectiveSubscriptionStatus` is later extended to emit
50
- * `active_canceling`, this docstring MUST be updated to drop the
51
- * session-only note.
36
+ * **`active_canceling` is mirrored on the server (#3464, SDK 5.8.0).**
37
+ * Earlier (#3460, SDK 5.7.0) the literal was a session-only enrichment;
38
+ * since FFID #3464 the backend `EffectiveSubscriptionStatus` and both
39
+ * `/api/v1/subscriptions/ext/check` + `/oauth/userinfo` emit
40
+ * `active_canceling` directly when `cancel_at_period_end=true` and the
41
+ * period is still live. SDK consumers receive the same literal whether
42
+ * they read it from the session-derived `computeEffectiveStatusFromSession`
43
+ * or the server-derived `effectiveStatus` on the userinfo / ext-check
44
+ * paths. Pre-#3464 FFID backends omit `cancelAtPeriodEnd` on the wire; the
45
+ * SDK `normalizeUserinfo` boundary defaults it to `false`, so downstream
46
+ * consumers see a plain boolean and `computeEffectiveStatus` returns the
47
+ * original `'active'` verdict for legacy deployments.
52
48
  *
53
49
  * @see /api/v1/subscriptions/ext/check
54
50
  * @see docs/03-implementation/EXPIRED_CONTRACT_HANDLING.md
@@ -1,4 +1,4 @@
1
- import { E as EffectiveSubscriptionStatus } from '../types-s3y11uT6.cjs';
1
+ import { E as EffectiveSubscriptionStatus } from '../types-BYdtyO_2.cjs';
2
2
 
3
3
  /**
4
4
  * FFID Webhook SDK Constants
@@ -1,4 +1,4 @@
1
- import { E as EffectiveSubscriptionStatus } from '../types-s3y11uT6.js';
1
+ import { E as EffectiveSubscriptionStatus } from '../types-BYdtyO_2.js';
2
2
 
3
3
  /**
4
4
  * FFID Webhook SDK Constants
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feelflow/ffid-sdk",
3
- "version": "5.7.0",
3
+ "version": "5.9.0",
4
4
  "description": "FeelFlow ID Platform SDK for React/Next.js applications",
5
5
  "keywords": [
6
6
  "feelflow",