@feelflow/ffid-sdk 7.2.0 → 8.0.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.
@@ -450,12 +450,31 @@ interface FFIDSubscriptionDetail {
450
450
  trialStart: string | null;
451
451
  trialEnd: string | null;
452
452
  canceledAt: string | null;
453
+ /**
454
+ * `true` while a cancellation is reserved until the period end. `status` stays
455
+ * `active` until then; the subscription becomes `canceled` at `currentPeriodEnd`.
456
+ * The reservation can only be withdrawn in the FFID portal (there is no SDK method).
457
+ */
453
458
  cancelAtPeriodEnd: boolean;
454
- /** Pending period-end downgrade info (null = no scheduled downgrade) */
459
+ /**
460
+ * Change reserved until the period end (null = nothing reserved).
461
+ *
462
+ * Every decrease — a lower plan, paid → free, fewer seats, yearly → monthly — is
463
+ * reserved instead of applied immediately (FFID #6327). The current plan, seats and
464
+ * interval stay in effect until `scheduledAt`. Withdraw it with `cancelPendingDowngrade()`.
465
+ */
455
466
  pendingDowngrade: {
467
+ /** Plan in effect after the period end. Equals `planCode` for a seat-only or interval-only reservation. */
456
468
  planCode: string;
457
469
  planName: string;
470
+ /** Billing interval in effect after the period end */
458
471
  billingInterval: FFIDBillingInterval;
472
+ /**
473
+ * Seat count in effect after the period end. `null` = the seat count does not change.
474
+ * Seat reductions are made in the FFID portal; this lets you show them (8.0.0).
475
+ * FFID servers released before #6327 omit it, so compare with `== null` at runtime.
476
+ */
477
+ quantity: number | null;
459
478
  scheduledAt: string;
460
479
  requestedAt: string;
461
480
  } | null;
@@ -522,7 +541,17 @@ interface FFIDChangePlanParams {
522
541
  /** New billing interval (default: keeps current) */
523
542
  billingInterval?: FFIDBillingInterval;
524
543
  }
525
- /** Response from change plan endpoint */
544
+ /**
545
+ * Response from change plan endpoint.
546
+ *
547
+ * - An increase (higher plan / monthly → yearly) applies immediately and the difference up to
548
+ * the current period end is charged now. `pendingDowngrade` is absent.
549
+ * - A decrease (lower plan / paid → free / yearly → monthly) is reserved until the period end:
550
+ * `pendingDowngrade` is present and `subscription.planCode` is still the current plan.
551
+ * Nothing is charged or refunded. A contract that cannot be reserved still changes
552
+ * immediately, without a refund: one with no period end, or a paid → paid decrease on a
553
+ * contract without a Stripe subscription.
554
+ */
526
555
  interface FFIDChangePlanResponse {
527
556
  message: string;
528
557
  subscription: {
@@ -535,7 +564,7 @@ interface FFIDChangePlanResponse {
535
564
  status: FFIDSubscriptionStatus;
536
565
  isUpgrade: boolean;
537
566
  };
538
- /** Present when downgrade is scheduled for period end instead of immediate */
567
+ /** Present when the change is a decrease reserved until the period end */
539
568
  pendingDowngrade?: {
540
569
  planCode: string;
541
570
  planName: string;
@@ -551,17 +580,41 @@ interface FFIDCancelSubscriptionParams {
551
580
  /** Additional cancellation details */
552
581
  reasonDetails?: string;
553
582
  }
554
- /** Response from cancel subscription endpoint */
583
+ /**
584
+ * Response from cancel subscription endpoint.
585
+ *
586
+ * Since 8.0.0 a contract billed through Stripe is **reserved** for cancellation at the period
587
+ * end (FFID #6327): `status` stays `active`, `cancelAtPeriodEnd` is `true` and `cancelAt` is the
588
+ * period end. Access continues until then and nothing is refunded. A contract that cannot be
589
+ * reserved (no Stripe subscription, no period end yet, or Stripe not configured on FFID) is
590
+ * canceled immediately (`status: 'canceled'`, `cancelAtPeriodEnd: false`, `cancelAt: null`).
591
+ * Branch on `cancelAtPeriodEnd`, not on whether the contract uses Stripe.
592
+ *
593
+ * Do not treat this response as "access revoked". The `subscription.canceled` webhook arrives
594
+ * at reservation (`source: 'user_initiated'`) and again at the period end
595
+ * (`source: 'stripe_confirmed'`); see `FFIDSubscriptionCanceledPayload`.
596
+ */
555
597
  interface FFIDCancelSubscriptionResponse {
556
598
  message: string;
557
599
  subscription: {
558
600
  id: string;
559
601
  organizationId: string;
602
+ /** `active` while the cancellation is reserved; `canceled` only for an immediate cancellation */
560
603
  status: FFIDSubscriptionStatus;
561
604
  canceledAt: string | null;
605
+ /** `true` when the cancellation is reserved until the period end */
606
+ cancelAtPeriodEnd: boolean;
607
+ /** When the reserved cancellation takes effect (the period end). `null` for an immediate cancellation */
608
+ cancelAt: string | null;
562
609
  };
563
610
  }
564
- /** Response from cancel pending downgrade endpoint */
611
+ /**
612
+ * Response from cancel pending downgrade endpoint.
613
+ *
614
+ * Withdraws the reserved change on the Stripe side as well, so the current plan, seats and
615
+ * interval simply continue after the period end. It does not withdraw a reserved
616
+ * cancellation — that is done in the FFID portal.
617
+ */
565
618
  interface FFIDCancelPendingDowngradeResponse {
566
619
  message: string;
567
620
  subscription: {
@@ -616,14 +669,18 @@ interface FFIDPlanChangePreviewBase {
616
669
  lineItems: FFIDPlanChangeLineItem[];
617
670
  }
618
671
  /**
619
- * Plan change proration preview.
672
+ * Plan change proration preview. It is computed with the same rules as `changePlan()`.
620
673
  *
621
674
  * `willApplyAtPeriodEnd` is a discriminant that constrains related fields at the type level:
622
- * - `true`: period-end-deferred downgrade. `proratedAmount` is always 0; `effectiveDate` mirrors
623
- * the subscription's `currentPeriodEnd` (may be `null` when the subscription has no active
624
- * billing cycle yet — e.g. a pre-Stripe trial or a subscription whose billing cycle is unset).
625
- * - `false`: immediate change. `effectiveDate` is always `null`; `proratedAmount` is the live
626
- * (possibly Stripe-refined) day-basis difference.
675
+ * - `true`: a decrease reserved until the period end. `proratedAmount` is always 0 (nothing is
676
+ * charged or refunded now); `effectiveDate` mirrors the subscription's `currentPeriodEnd`
677
+ * (may be `null` when the subscription has no active billing cycle yet).
678
+ * - `false`: immediate change. `effectiveDate` is always `null`. For an increase,
679
+ * `proratedAmount` is the difference up to the current period end that is charged now
680
+ * (possibly Stripe-refined). A decrease on a contract that cannot be reserved also lands here:
681
+ * `0` for a contract without a Stripe subscription (no refund), but Stripe's prorated amount —
682
+ * negative, credited on the next invoice — for a Stripe contract with no period end yet
683
+ * (e.g. during a trial).
627
684
  */
628
685
  type FFIDPlanChangePreview = FFIDPlanChangePreviewBase & ({
629
686
  willApplyAtPeriodEnd: true;
@@ -633,7 +690,7 @@ type FFIDPlanChangePreview = FFIDPlanChangePreviewBase & ({
633
690
  } | {
634
691
  willApplyAtPeriodEnd: false;
635
692
  effectiveDate: null;
636
- /** Prorated difference charged within the current billing period */
693
+ /** Difference up to the current period end charged now (see the type doc for the decrease cases) */
637
694
  proratedAmount: number;
638
695
  });
639
696
  /** Response from plan change preview endpoint */
@@ -658,14 +715,27 @@ interface FFIDSeatChangeLineItem {
658
715
  * Sister type to `FFIDPlanChangePreview`. The shared `type` discriminant lets
659
716
  * consumers narrow a preview payload without inspecting unrelated fields.
660
717
  *
718
+ * - `willApplyAtPeriodEnd=true`: a seat reduction reserved until the period end.
719
+ * `proratedAmount` is 0 and `effectiveDate` is when the new seat count applies.
720
+ * - Otherwise the change applies immediately. For an increase, `proratedAmount` is the amount
721
+ * charged now up to the current period end. A reduction that cannot be reserved is normally
722
+ * `0`, but can be negative (a credit on the next invoice) for a Stripe contract with no period
723
+ * end yet or when only the contract unit price is known.
661
724
  * - `isEstimate=true` (default when Stripe is not configured or data is unavailable):
662
- * `proratedAmount` is computed locally as `(newQuantity - currentQuantity) * unitPrice`.
663
- * - `isEstimate=false`: `proratedAmount` reflects Stripe's live proration calculation.
725
+ * `proratedAmount` is computed locally. `isEstimate=false`: it reflects Stripe's live
726
+ * proration calculation.
664
727
  *
665
728
  * `nextInvoiceAmount` is always a local estimate (`unitPrice * newQuantity`).
666
729
  *
667
- * `pricingUnavailable=true` indicates the plan uses custom pricing with a zero unit
668
- * price (Enterprise). Consumers should hide monetary amounts in this case.
730
+ * `pricingUnavailable=true` means custom pricing or an unverified contracted Stripe
731
+ * Price. Hide amounts; zero is not a quote. `custom_pricing` permits the existing
732
+ * unbilled seat-change flow. Require another preview before confirmation only when
733
+ * pricing is unavailable and the reason is not `custom_pricing`. `stripe_error` also
734
+ * covers invoice/address failures after the contract price is known; use
735
+ * `pricingUnavailable`, not the reason alone, to decide whether to hide amounts.
736
+ * `no_stripe_data` means invoice proration is unavailable even if the contract unit
737
+ * price is known. Portal seat PUT independently enforces subscription limits;
738
+ * external consumers should guide users to the FFID portal for seat changes.
669
739
  */
670
740
  interface FFIDSeatChangePreview {
671
741
  /** Discriminant for preview response variants (pairs with `FFIDPlanChangePreview.type`) */
@@ -676,20 +746,28 @@ interface FFIDSeatChangePreview {
676
746
  unitPrice: number;
677
747
  billingInterval: FFIDBillingInterval;
678
748
  /**
679
- * Prorated cost for the current billing period. Negative when seats are decreased
680
- * (credit). `0` when `pricingUnavailable === true` (Enterprise custom pricing).
749
+ * Amount charged now for the rest of the current billing period. A reserved seat reduction
750
+ * (`willApplyAtPeriodEnd: true`) is always `0`; see the type doc for reductions that cannot
751
+ * be reserved. Also `0` when `pricingUnavailable === true`; hide it instead of quoting zero.
681
752
  */
682
753
  proratedAmount: number;
683
754
  /** Next invoice full amount — always a local estimate (`unitPrice * newQuantity`) */
684
755
  nextInvoiceAmount: number;
685
756
  nextInvoiceDate: string | null;
686
757
  currency: FFIDSupportedCurrency;
687
- /** true when proratedAmount is estimated from local prices rather than Stripe proration data */
758
+ /** true when proratedAmount is a local estimate rather than Stripe invoice/proration data */
688
759
  isEstimate: boolean;
689
- /** true when unit price is 0 due to custom pricing (Enterprise) — hide monetary amounts */
760
+ /** Hide amounts: custom pricing or contracted Stripe Price could not be verified. */
690
761
  pricingUnavailable?: boolean;
691
762
  /** Reason why `isEstimate` is true. Only meaningful when `isEstimate === true`. */
692
763
  estimateReason?: 'no_stripe_data' | 'custom_pricing' | 'stripe_error';
764
+ /**
765
+ * `true` when the seat reduction would be reserved until the period end (8.0.0).
766
+ * Absent or `false` = the change applies immediately.
767
+ */
768
+ willApplyAtPeriodEnd?: boolean;
769
+ /** When the reserved seat count applies (present when `willApplyAtPeriodEnd` is `true`) */
770
+ effectiveDate?: string | null;
693
771
  lineItems: FFIDSeatChangeLineItem[];
694
772
  }
695
773
  /** Response from seat change preview endpoint */
@@ -774,6 +852,7 @@ interface FFIDProvisionUserProfileInput {
774
852
  /** Display name (1–255 chars). */
775
853
  displayName?: string;
776
854
  /** Company name (≤255 chars). */
855
+ /** @deprecated Accepted for compatibility but ignored by FFID. */
777
856
  companyName?: string;
778
857
  /** Department (≤255 chars). */
779
858
  department?: string;
@@ -1475,7 +1554,7 @@ interface FFIDUserProfile {
1475
1554
  avatarUrl: string | null;
1476
1555
  /** Phone number (nullable when not set) */
1477
1556
  phone: string | null;
1478
- /** Company name (nullable when not set) */
1557
+ /** @deprecated Individual employer name is retired; this field is always null. Use the organization entity's name. */
1479
1558
  companyName: string | null;
1480
1559
  /** Department (nullable when not set) */
1481
1560
  department: string | null;
@@ -1556,7 +1635,7 @@ interface FFIDUpdateUserProfileRequest {
1556
1635
  displayName?: string | null;
1557
1636
  /** Phone number (null clears the field) */
1558
1637
  phone?: string | null;
1559
- /** Company name (null clears the field) */
1638
+ /** @deprecated Accepted for compatibility but ignored. Use the organization entity's name. */
1560
1639
  companyName?: string | null;
1561
1640
  /** Department (null clears the field) */
1562
1641
  department?: string | null;
@@ -1922,6 +2001,7 @@ interface FFIDOAuthUserInfo {
1922
2001
  emailVerified?: boolean | undefined;
1923
2002
  name: string | null;
1924
2003
  picture: string | null;
2004
+ /** @deprecated Individual employer name is retired; always null. Use organizationName. */
1925
2005
  companyName?: string | null | undefined;
1926
2006
  department?: string | null | undefined;
1927
2007
  position?: string | null | undefined;
@@ -2356,7 +2436,9 @@ declare function createFFIDClient(config: FFIDConfig): {
2356
2436
  prompt?: FFIDPrompt;
2357
2437
  }) => string;
2358
2438
  getLogoutUrl: (postLogoutRedirectUri?: string) => string;
2359
- getSignupUrl: (redirectUrl?: string) => string;
2439
+ getSignupUrl: (redirectUrl?: string, options?: {
2440
+ inviteToken?: string;
2441
+ }) => string;
2360
2442
  createError: (code: string, message: string) => FFIDError;
2361
2443
  exchangeCodeForTokens: (code: string, codeVerifier?: string, opts?: ExchangeCodeForTokensOptions) => Promise<FFIDApiResponse<void>>;
2362
2444
  refreshAccessToken: () => Promise<FFIDApiResponse<void>>;
@@ -411,6 +411,7 @@ interface FFIDOAuthUserInfo {
411
411
  emailVerified?: boolean | undefined;
412
412
  name: string | null;
413
413
  picture: string | null;
414
+ /** @deprecated Individual employer name is retired; always null. Use organizationName. */
414
415
  companyName?: string | null | undefined;
415
416
  department?: string | null | undefined;
416
417
  position?: string | null | undefined;
@@ -411,6 +411,7 @@ interface FFIDOAuthUserInfo {
411
411
  emailVerified?: boolean | undefined;
412
412
  name: string | null;
413
413
  picture: string | null;
414
+ /** @deprecated Individual employer name is retired; always null. Use organizationName. */
414
415
  companyName?: string | null | undefined;
415
416
  department?: string | null | undefined;
416
417
  position?: string | null | undefined;
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkSOZ2B2ZL_cjs = require('./chunk-SOZ2B2ZL.cjs');
3
+ var chunkRNCK5E3Y_cjs = require('./chunk-RNCK5E3Y.cjs');
4
4
  var chunkXELXXL2F_cjs = require('./chunk-XELXXL2F.cjs');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -54,8 +54,8 @@ function defaultRedirect(url) {
54
54
  }
55
55
  function useRequireActiveSubscription(options) {
56
56
  const { redirectTo, allowGrace = true, onRedirect } = options;
57
- const { isLoading, error } = chunkSOZ2B2ZL_cjs.useFFIDContext();
58
- const { effectiveStatus, isBlocked, isGrace } = chunkSOZ2B2ZL_cjs.useSubscription();
57
+ const { isLoading, error } = chunkRNCK5E3Y_cjs.useFFIDContext();
58
+ const { effectiveStatus, isBlocked, isGrace } = chunkRNCK5E3Y_cjs.useSubscription();
59
59
  const hasFetchError = error !== null && effectiveStatus === null;
60
60
  const shouldRedirect = !isLoading && !hasFetchError && (isBlocked || !allowGrace && isGrace || effectiveStatus === null);
61
61
  react.useEffect(() => {
@@ -76,7 +76,7 @@ function useRequireActiveSubscription(options) {
76
76
  }
77
77
  function withFFIDAuth(Component, options = {}) {
78
78
  const WrappedComponent = (props) => {
79
- const { isLoading, isAuthenticated, login } = chunkSOZ2B2ZL_cjs.useFFIDContext();
79
+ const { isLoading, isAuthenticated, login } = chunkRNCK5E3Y_cjs.useFFIDContext();
80
80
  const hasRedirected = react.useRef(false);
81
81
  react.useEffect(() => {
82
82
  if (!isLoading && !isAuthenticated && options.redirectToLogin && !hasRedirected.current) {
@@ -105,243 +105,283 @@ var FFID_NEWSLETTER_DISPATCH_MAX_RECIPIENTS = 1e3;
105
105
 
106
106
  Object.defineProperty(exports, "ACCESS_GRANTING_EFFECTIVE_STATUSES", {
107
107
  enumerable: true,
108
- get: function () { return chunkSOZ2B2ZL_cjs.ACCESS_GRANTING_EFFECTIVE_STATUSES; }
108
+ get: function () { return chunkRNCK5E3Y_cjs.ACCESS_GRANTING_EFFECTIVE_STATUSES; }
109
+ });
110
+ Object.defineProperty(exports, "AGENCY_INVITE_COOKIE_MAX_AGE_SEC", {
111
+ enumerable: true,
112
+ get: function () { return chunkRNCK5E3Y_cjs.AGENCY_INVITE_COOKIE_MAX_AGE_SEC; }
113
+ });
114
+ Object.defineProperty(exports, "AGENCY_INVITE_COOKIE_NAME", {
115
+ enumerable: true,
116
+ get: function () { return chunkRNCK5E3Y_cjs.AGENCY_INVITE_COOKIE_NAME; }
117
+ });
118
+ Object.defineProperty(exports, "AGENCY_INVITE_TOKEN_PARAM", {
119
+ enumerable: true,
120
+ get: function () { return chunkRNCK5E3Y_cjs.AGENCY_INVITE_TOKEN_PARAM; }
121
+ });
122
+ Object.defineProperty(exports, "AGENCY_INVITE_TOKEN_REDACTION", {
123
+ enumerable: true,
124
+ get: function () { return chunkRNCK5E3Y_cjs.AGENCY_INVITE_TOKEN_REDACTION; }
109
125
  });
110
126
  Object.defineProperty(exports, "BLOCKING_EFFECTIVE_STATUSES", {
111
127
  enumerable: true,
112
- get: function () { return chunkSOZ2B2ZL_cjs.BLOCKING_EFFECTIVE_STATUSES; }
128
+ get: function () { return chunkRNCK5E3Y_cjs.BLOCKING_EFFECTIVE_STATUSES; }
113
129
  });
114
130
  Object.defineProperty(exports, "CATALOG_HASH_PATTERN", {
115
131
  enumerable: true,
116
- get: function () { return chunkSOZ2B2ZL_cjs.CATALOG_HASH_PATTERN; }
132
+ get: function () { return chunkRNCK5E3Y_cjs.CATALOG_HASH_PATTERN; }
117
133
  });
118
134
  Object.defineProperty(exports, "DEFAULT_API_BASE_URL", {
119
135
  enumerable: true,
120
- get: function () { return chunkSOZ2B2ZL_cjs.DEFAULT_API_BASE_URL; }
136
+ get: function () { return chunkRNCK5E3Y_cjs.DEFAULT_API_BASE_URL; }
121
137
  });
122
138
  Object.defineProperty(exports, "DEFAULT_OAUTH_SCOPES", {
123
139
  enumerable: true,
124
- get: function () { return chunkSOZ2B2ZL_cjs.DEFAULT_OAUTH_SCOPES; }
140
+ get: function () { return chunkRNCK5E3Y_cjs.DEFAULT_OAUTH_SCOPES; }
125
141
  });
126
142
  Object.defineProperty(exports, "EFFECTIVE_SUBSCRIPTION_STATUSES", {
127
143
  enumerable: true,
128
- get: function () { return chunkSOZ2B2ZL_cjs.EFFECTIVE_SUBSCRIPTION_STATUSES; }
144
+ get: function () { return chunkRNCK5E3Y_cjs.EFFECTIVE_SUBSCRIPTION_STATUSES; }
129
145
  });
130
146
  Object.defineProperty(exports, "FFIDAnnouncementBadge", {
131
147
  enumerable: true,
132
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDAnnouncementBadge; }
148
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDAnnouncementBadge; }
133
149
  });
134
150
  Object.defineProperty(exports, "FFIDAnnouncementList", {
135
151
  enumerable: true,
136
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDAnnouncementList; }
152
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDAnnouncementList; }
137
153
  });
138
154
  Object.defineProperty(exports, "FFIDCatalogHashError", {
139
155
  enumerable: true,
140
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDCatalogHashError; }
156
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDCatalogHashError; }
141
157
  });
142
158
  Object.defineProperty(exports, "FFIDInquiryForm", {
143
159
  enumerable: true,
144
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDInquiryForm; }
160
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDInquiryForm; }
145
161
  });
146
162
  Object.defineProperty(exports, "FFIDLoginButton", {
147
163
  enumerable: true,
148
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDLoginButton; }
164
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDLoginButton; }
149
165
  });
150
166
  Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
151
167
  enumerable: true,
152
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDOrganizationSwitcher; }
168
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDOrganizationSwitcher; }
153
169
  });
154
170
  Object.defineProperty(exports, "FFIDProvider", {
155
171
  enumerable: true,
156
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDProvider; }
172
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDProvider; }
157
173
  });
158
174
  Object.defineProperty(exports, "FFIDSDKError", {
159
175
  enumerable: true,
160
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDSDKError; }
176
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDSDKError; }
161
177
  });
162
178
  Object.defineProperty(exports, "FFIDSubscriptionBadge", {
163
179
  enumerable: true,
164
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDSubscriptionBadge; }
180
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDSubscriptionBadge; }
165
181
  });
166
182
  Object.defineProperty(exports, "FFIDUserMenu", {
167
183
  enumerable: true,
168
- get: function () { return chunkSOZ2B2ZL_cjs.FFIDUserMenu; }
184
+ get: function () { return chunkRNCK5E3Y_cjs.FFIDUserMenu; }
169
185
  });
170
186
  Object.defineProperty(exports, "FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES", {
171
187
  enumerable: true,
172
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES; }
188
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_ALLOWED_ORGANIZATION_LOGO_MIME_TYPES; }
173
189
  });
174
190
  Object.defineProperty(exports, "FFID_ANNOUNCEMENTS_ERROR_CODES", {
175
191
  enumerable: true,
176
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
192
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
177
193
  });
178
194
  Object.defineProperty(exports, "FFID_CATALOG_ENVIRONMENTS", {
179
195
  enumerable: true,
180
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_CATALOG_ENVIRONMENTS; }
196
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_CATALOG_ENVIRONMENTS; }
181
197
  });
182
198
  Object.defineProperty(exports, "FFID_CATALOG_PUBLICATION_STATUSES", {
183
199
  enumerable: true,
184
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_CATALOG_PUBLICATION_STATUSES; }
200
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_CATALOG_PUBLICATION_STATUSES; }
185
201
  });
186
202
  Object.defineProperty(exports, "FFID_COMPANY_SIZE_CODES", {
187
203
  enumerable: true,
188
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_COMPANY_SIZE_CODES; }
204
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_COMPANY_SIZE_CODES; }
189
205
  });
190
206
  Object.defineProperty(exports, "FFID_ERROR_CODES", {
191
207
  enumerable: true,
192
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_ERROR_CODES; }
208
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_ERROR_CODES; }
193
209
  });
194
210
  Object.defineProperty(exports, "FFID_INDUSTRY_CODES", {
195
211
  enumerable: true,
196
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_INDUSTRY_CODES; }
212
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_INDUSTRY_CODES; }
197
213
  });
198
214
  Object.defineProperty(exports, "FFID_INQUIRY_ACQUISITION_SOURCES", {
199
215
  enumerable: true,
200
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_INQUIRY_ACQUISITION_SOURCES; }
216
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_INQUIRY_ACQUISITION_SOURCES; }
201
217
  });
202
218
  Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES", {
203
219
  enumerable: true,
204
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_INQUIRY_CATEGORIES; }
220
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_INQUIRY_CATEGORIES; }
205
221
  });
206
222
  Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES_SITE_2026", {
207
223
  enumerable: true,
208
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_INQUIRY_CATEGORIES_SITE_2026; }
224
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_INQUIRY_CATEGORIES_SITE_2026; }
209
225
  });
210
226
  Object.defineProperty(exports, "FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES", {
211
227
  enumerable: true,
212
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES; }
228
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_BYTES; }
213
229
  });
214
230
  Object.defineProperty(exports, "FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB", {
215
231
  enumerable: true,
216
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB; }
232
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_MAX_ORGANIZATION_LOGO_FILE_SIZE_MB; }
217
233
  });
218
234
  Object.defineProperty(exports, "FFID_ORGANIZATION_PROFILE_ERROR_CODES", {
219
235
  enumerable: true,
220
- get: function () { return chunkSOZ2B2ZL_cjs.FFID_ORGANIZATION_PROFILE_ERROR_CODES; }
236
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_ORGANIZATION_PROFILE_ERROR_CODES; }
237
+ });
238
+ Object.defineProperty(exports, "FFID_SUBSCRIPTION_ERROR_CODES", {
239
+ enumerable: true,
240
+ get: function () { return chunkRNCK5E3Y_cjs.FFID_SUBSCRIPTION_ERROR_CODES; }
221
241
  });
222
242
  Object.defineProperty(exports, "canonicalizeCatalogValue", {
223
243
  enumerable: true,
224
- get: function () { return chunkSOZ2B2ZL_cjs.canonicalizeCatalogValue; }
244
+ get: function () { return chunkRNCK5E3Y_cjs.canonicalizeCatalogValue; }
245
+ });
246
+ Object.defineProperty(exports, "captureAgencyInviteToken", {
247
+ enumerable: true,
248
+ get: function () { return chunkRNCK5E3Y_cjs.captureAgencyInviteToken; }
249
+ });
250
+ Object.defineProperty(exports, "clearAgencyInviteToken", {
251
+ enumerable: true,
252
+ get: function () { return chunkRNCK5E3Y_cjs.clearAgencyInviteToken; }
225
253
  });
226
254
  Object.defineProperty(exports, "clearState", {
227
255
  enumerable: true,
228
- get: function () { return chunkSOZ2B2ZL_cjs.cleanupStateStorage; }
256
+ get: function () { return chunkRNCK5E3Y_cjs.cleanupStateStorage; }
229
257
  });
230
258
  Object.defineProperty(exports, "computeEffectiveStatusFromSession", {
231
259
  enumerable: true,
232
- get: function () { return chunkSOZ2B2ZL_cjs.computeEffectiveStatusFromSession; }
260
+ get: function () { return chunkRNCK5E3Y_cjs.computeEffectiveStatusFromSession; }
233
261
  });
234
262
  Object.defineProperty(exports, "computeFFIDCheckoutCopyHash", {
235
263
  enumerable: true,
236
- get: function () { return chunkSOZ2B2ZL_cjs.computeFFIDCheckoutCopyHash; }
264
+ get: function () { return chunkRNCK5E3Y_cjs.computeFFIDCheckoutCopyHash; }
237
265
  });
238
266
  Object.defineProperty(exports, "computeLegalDisclosureHash", {
239
267
  enumerable: true,
240
- get: function () { return chunkSOZ2B2ZL_cjs.computeLegalDisclosureHash; }
268
+ get: function () { return chunkRNCK5E3Y_cjs.computeLegalDisclosureHash; }
241
269
  });
242
270
  Object.defineProperty(exports, "computePaymentConfigurationHash", {
243
271
  enumerable: true,
244
- get: function () { return chunkSOZ2B2ZL_cjs.computePaymentConfigurationHash; }
272
+ get: function () { return chunkRNCK5E3Y_cjs.computePaymentConfigurationHash; }
245
273
  });
246
274
  Object.defineProperty(exports, "computePraxisCopyHash", {
247
275
  enumerable: true,
248
- get: function () { return chunkSOZ2B2ZL_cjs.computePraxisCopyHash; }
276
+ get: function () { return chunkRNCK5E3Y_cjs.computePraxisCopyHash; }
249
277
  });
250
278
  Object.defineProperty(exports, "computeScopeHash", {
251
279
  enumerable: true,
252
- get: function () { return chunkSOZ2B2ZL_cjs.computeScopeHash; }
280
+ get: function () { return chunkRNCK5E3Y_cjs.computeScopeHash; }
253
281
  });
254
282
  Object.defineProperty(exports, "computeTaxConfigurationHash", {
255
283
  enumerable: true,
256
- get: function () { return chunkSOZ2B2ZL_cjs.computeTaxConfigurationHash; }
284
+ get: function () { return chunkRNCK5E3Y_cjs.computeTaxConfigurationHash; }
257
285
  });
258
286
  Object.defineProperty(exports, "createFFIDAnnouncementsClient", {
259
287
  enumerable: true,
260
- get: function () { return chunkSOZ2B2ZL_cjs.createFFIDAnnouncementsClient; }
288
+ get: function () { return chunkRNCK5E3Y_cjs.createFFIDAnnouncementsClient; }
261
289
  });
262
290
  Object.defineProperty(exports, "createFFIDClient", {
263
291
  enumerable: true,
264
- get: function () { return chunkSOZ2B2ZL_cjs.createFFIDClient; }
292
+ get: function () { return chunkRNCK5E3Y_cjs.createFFIDClient; }
265
293
  });
266
294
  Object.defineProperty(exports, "createTokenStore", {
267
295
  enumerable: true,
268
- get: function () { return chunkSOZ2B2ZL_cjs.createTokenStore; }
296
+ get: function () { return chunkRNCK5E3Y_cjs.createTokenStore; }
269
297
  });
270
298
  Object.defineProperty(exports, "generateCodeChallenge", {
271
299
  enumerable: true,
272
- get: function () { return chunkSOZ2B2ZL_cjs.generateCodeChallenge; }
300
+ get: function () { return chunkRNCK5E3Y_cjs.generateCodeChallenge; }
273
301
  });
274
302
  Object.defineProperty(exports, "generateCodeVerifier", {
275
303
  enumerable: true,
276
- get: function () { return chunkSOZ2B2ZL_cjs.generateCodeVerifier; }
304
+ get: function () { return chunkRNCK5E3Y_cjs.generateCodeVerifier; }
277
305
  });
278
306
  Object.defineProperty(exports, "handleRedirectCallback", {
279
307
  enumerable: true,
280
- get: function () { return chunkSOZ2B2ZL_cjs.handleRedirectCallback; }
308
+ get: function () { return chunkRNCK5E3Y_cjs.handleRedirectCallback; }
281
309
  });
282
310
  Object.defineProperty(exports, "hasAccessFromUserinfo", {
283
311
  enumerable: true,
284
- get: function () { return chunkSOZ2B2ZL_cjs.hasAccessFromUserinfo; }
312
+ get: function () { return chunkRNCK5E3Y_cjs.hasAccessFromUserinfo; }
285
313
  });
286
314
  Object.defineProperty(exports, "hashCanonicalJson", {
287
315
  enumerable: true,
288
- get: function () { return chunkSOZ2B2ZL_cjs.hashCanonicalJson; }
316
+ get: function () { return chunkRNCK5E3Y_cjs.hashCanonicalJson; }
289
317
  });
290
318
  Object.defineProperty(exports, "isBlockedFromUserinfo", {
291
319
  enumerable: true,
292
- get: function () { return chunkSOZ2B2ZL_cjs.isBlockedFromUserinfo; }
320
+ get: function () { return chunkRNCK5E3Y_cjs.isBlockedFromUserinfo; }
293
321
  });
294
322
  Object.defineProperty(exports, "isFFIDInquiryAcquisitionSource", {
295
323
  enumerable: true,
296
- get: function () { return chunkSOZ2B2ZL_cjs.isFFIDInquiryAcquisitionSource; }
324
+ get: function () { return chunkRNCK5E3Y_cjs.isFFIDInquiryAcquisitionSource; }
297
325
  });
298
326
  Object.defineProperty(exports, "isFFIDInquiryCategorySite2026", {
299
327
  enumerable: true,
300
- get: function () { return chunkSOZ2B2ZL_cjs.isFFIDInquiryCategorySite2026; }
328
+ get: function () { return chunkRNCK5E3Y_cjs.isFFIDInquiryCategorySite2026; }
301
329
  });
302
330
  Object.defineProperty(exports, "normalizeRedirectUri", {
303
331
  enumerable: true,
304
- get: function () { return chunkSOZ2B2ZL_cjs.normalizeRedirectUri; }
332
+ get: function () { return chunkRNCK5E3Y_cjs.normalizeRedirectUri; }
333
+ });
334
+ Object.defineProperty(exports, "readAgencyInviteCookie", {
335
+ enumerable: true,
336
+ get: function () { return chunkRNCK5E3Y_cjs.readAgencyInviteCookie; }
337
+ });
338
+ Object.defineProperty(exports, "readAgencyInviteToken", {
339
+ enumerable: true,
340
+ get: function () { return chunkRNCK5E3Y_cjs.readAgencyInviteToken; }
341
+ });
342
+ Object.defineProperty(exports, "redactAgencyInviteToken", {
343
+ enumerable: true,
344
+ get: function () { return chunkRNCK5E3Y_cjs.redactAgencyInviteToken; }
305
345
  });
306
346
  Object.defineProperty(exports, "retrieveCodeVerifier", {
307
347
  enumerable: true,
308
- get: function () { return chunkSOZ2B2ZL_cjs.retrieveCodeVerifier; }
348
+ get: function () { return chunkRNCK5E3Y_cjs.retrieveCodeVerifier; }
309
349
  });
310
350
  Object.defineProperty(exports, "retrieveState", {
311
351
  enumerable: true,
312
- get: function () { return chunkSOZ2B2ZL_cjs.retrieveState; }
352
+ get: function () { return chunkRNCK5E3Y_cjs.retrieveState; }
313
353
  });
314
354
  Object.defineProperty(exports, "sha256Hex", {
315
355
  enumerable: true,
316
- get: function () { return chunkSOZ2B2ZL_cjs.sha256Hex; }
356
+ get: function () { return chunkRNCK5E3Y_cjs.sha256Hex; }
317
357
  });
318
358
  Object.defineProperty(exports, "storeCodeVerifier", {
319
359
  enumerable: true,
320
- get: function () { return chunkSOZ2B2ZL_cjs.storeCodeVerifier; }
360
+ get: function () { return chunkRNCK5E3Y_cjs.storeCodeVerifier; }
321
361
  });
322
362
  Object.defineProperty(exports, "storeState", {
323
363
  enumerable: true,
324
- get: function () { return chunkSOZ2B2ZL_cjs.storeState; }
364
+ get: function () { return chunkRNCK5E3Y_cjs.storeState; }
325
365
  });
326
366
  Object.defineProperty(exports, "useFFID", {
327
367
  enumerable: true,
328
- get: function () { return chunkSOZ2B2ZL_cjs.useFFID; }
368
+ get: function () { return chunkRNCK5E3Y_cjs.useFFID; }
329
369
  });
330
370
  Object.defineProperty(exports, "useFFIDAnnouncements", {
331
371
  enumerable: true,
332
- get: function () { return chunkSOZ2B2ZL_cjs.useFFIDAnnouncements; }
372
+ get: function () { return chunkRNCK5E3Y_cjs.useFFIDAnnouncements; }
333
373
  });
334
374
  Object.defineProperty(exports, "useSubscription", {
335
375
  enumerable: true,
336
- get: function () { return chunkSOZ2B2ZL_cjs.useSubscription; }
376
+ get: function () { return chunkRNCK5E3Y_cjs.useSubscription; }
337
377
  });
338
378
  Object.defineProperty(exports, "validatePublishedCatalog", {
339
379
  enumerable: true,
340
- get: function () { return chunkSOZ2B2ZL_cjs.validatePublishedCatalog; }
380
+ get: function () { return chunkRNCK5E3Y_cjs.validatePublishedCatalog; }
341
381
  });
342
382
  Object.defineProperty(exports, "withSubscription", {
343
383
  enumerable: true,
344
- get: function () { return chunkSOZ2B2ZL_cjs.withSubscription; }
384
+ get: function () { return chunkRNCK5E3Y_cjs.withSubscription; }
345
385
  });
346
386
  Object.defineProperty(exports, "ALL_DENIED_EXCEPT_NECESSARY", {
347
387
  enumerable: true,