@feelflow/ffid-sdk 5.35.0 → 7.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.
- package/dist/{FFIDCookieLink-BJgVcJyw.d.cts → FFIDCookieLink-Bwr0FBrV.d.cts} +13 -46
- package/dist/{FFIDCookieLink-BJgVcJyw.d.ts → FFIDCookieLink-Bwr0FBrV.d.ts} +13 -46
- package/dist/{chunk-53IBN7NO.js → chunk-32VOLLNV.js} +1 -1
- package/dist/{chunk-WG2YHUGO.cjs → chunk-BI6UM2EJ.cjs} +1 -1
- package/dist/{chunk-G7VOX64X.js → chunk-RHBZHSRD.js} +4 -30
- package/dist/{chunk-H5O2CCAY.cjs → chunk-XELXXL2F.cjs} +2 -29
- package/dist/components/index.cjs +8 -8
- package/dist/components/index.js +1 -1
- package/dist/consent/index.cjs +63 -67
- package/dist/consent/index.d.cts +2 -2
- package/dist/consent/index.d.ts +2 -2
- package/dist/consent/index.js +1 -1
- package/dist/index.cjs +79 -79
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/legal/index.cjs +16 -1
- package/dist/legal/index.d.cts +32 -5
- package/dist/legal/index.d.ts +32 -5
- package/dist/legal/index.js +16 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkBI6UM2EJ_cjs = require('./chunk-BI6UM2EJ.cjs');
|
|
4
|
+
var chunkXELXXL2F_cjs = require('./chunk-XELXXL2F.cjs');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
|
|
@@ -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 } =
|
|
58
|
-
const { effectiveStatus, isBlocked, isGrace } =
|
|
57
|
+
const { isLoading, error } = chunkBI6UM2EJ_cjs.useFFIDContext();
|
|
58
|
+
const { effectiveStatus, isBlocked, isGrace } = chunkBI6UM2EJ_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 } =
|
|
79
|
+
const { isLoading, isAuthenticated, login } = chunkBI6UM2EJ_cjs.useFFIDContext();
|
|
80
80
|
const hasRedirected = react.useRef(false);
|
|
81
81
|
react.useEffect(() => {
|
|
82
82
|
if (!isLoading && !isAuthenticated && options.redirectToLogin && !hasRedirected.current) {
|
|
@@ -105,299 +105,299 @@ 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
|
|
108
|
+
get: function () { return chunkBI6UM2EJ_cjs.ACCESS_GRANTING_EFFECTIVE_STATUSES; }
|
|
109
109
|
});
|
|
110
110
|
Object.defineProperty(exports, "BLOCKING_EFFECTIVE_STATUSES", {
|
|
111
111
|
enumerable: true,
|
|
112
|
-
get: function () { return
|
|
112
|
+
get: function () { return chunkBI6UM2EJ_cjs.BLOCKING_EFFECTIVE_STATUSES; }
|
|
113
113
|
});
|
|
114
114
|
Object.defineProperty(exports, "CATALOG_HASH_PATTERN", {
|
|
115
115
|
enumerable: true,
|
|
116
|
-
get: function () { return
|
|
116
|
+
get: function () { return chunkBI6UM2EJ_cjs.CATALOG_HASH_PATTERN; }
|
|
117
117
|
});
|
|
118
118
|
Object.defineProperty(exports, "DEFAULT_API_BASE_URL", {
|
|
119
119
|
enumerable: true,
|
|
120
|
-
get: function () { return
|
|
120
|
+
get: function () { return chunkBI6UM2EJ_cjs.DEFAULT_API_BASE_URL; }
|
|
121
121
|
});
|
|
122
122
|
Object.defineProperty(exports, "DEFAULT_OAUTH_SCOPES", {
|
|
123
123
|
enumerable: true,
|
|
124
|
-
get: function () { return
|
|
124
|
+
get: function () { return chunkBI6UM2EJ_cjs.DEFAULT_OAUTH_SCOPES; }
|
|
125
125
|
});
|
|
126
126
|
Object.defineProperty(exports, "EFFECTIVE_SUBSCRIPTION_STATUSES", {
|
|
127
127
|
enumerable: true,
|
|
128
|
-
get: function () { return
|
|
128
|
+
get: function () { return chunkBI6UM2EJ_cjs.EFFECTIVE_SUBSCRIPTION_STATUSES; }
|
|
129
129
|
});
|
|
130
130
|
Object.defineProperty(exports, "FFIDAnnouncementBadge", {
|
|
131
131
|
enumerable: true,
|
|
132
|
-
get: function () { return
|
|
132
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDAnnouncementBadge; }
|
|
133
133
|
});
|
|
134
134
|
Object.defineProperty(exports, "FFIDAnnouncementList", {
|
|
135
135
|
enumerable: true,
|
|
136
|
-
get: function () { return
|
|
136
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDAnnouncementList; }
|
|
137
137
|
});
|
|
138
138
|
Object.defineProperty(exports, "FFIDCatalogHashError", {
|
|
139
139
|
enumerable: true,
|
|
140
|
-
get: function () { return
|
|
140
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDCatalogHashError; }
|
|
141
141
|
});
|
|
142
142
|
Object.defineProperty(exports, "FFIDInquiryForm", {
|
|
143
143
|
enumerable: true,
|
|
144
|
-
get: function () { return
|
|
144
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDInquiryForm; }
|
|
145
145
|
});
|
|
146
146
|
Object.defineProperty(exports, "FFIDLoginButton", {
|
|
147
147
|
enumerable: true,
|
|
148
|
-
get: function () { return
|
|
148
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDLoginButton; }
|
|
149
149
|
});
|
|
150
150
|
Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
|
|
151
151
|
enumerable: true,
|
|
152
|
-
get: function () { return
|
|
152
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDOrganizationSwitcher; }
|
|
153
153
|
});
|
|
154
154
|
Object.defineProperty(exports, "FFIDProvider", {
|
|
155
155
|
enumerable: true,
|
|
156
|
-
get: function () { return
|
|
156
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDProvider; }
|
|
157
157
|
});
|
|
158
158
|
Object.defineProperty(exports, "FFIDSDKError", {
|
|
159
159
|
enumerable: true,
|
|
160
|
-
get: function () { return
|
|
160
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDSDKError; }
|
|
161
161
|
});
|
|
162
162
|
Object.defineProperty(exports, "FFIDSubscriptionBadge", {
|
|
163
163
|
enumerable: true,
|
|
164
|
-
get: function () { return
|
|
164
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDSubscriptionBadge; }
|
|
165
165
|
});
|
|
166
166
|
Object.defineProperty(exports, "FFIDUserMenu", {
|
|
167
167
|
enumerable: true,
|
|
168
|
-
get: function () { return
|
|
168
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFIDUserMenu; }
|
|
169
169
|
});
|
|
170
170
|
Object.defineProperty(exports, "FFID_ANNOUNCEMENTS_ERROR_CODES", {
|
|
171
171
|
enumerable: true,
|
|
172
|
-
get: function () { return
|
|
172
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
|
|
173
173
|
});
|
|
174
174
|
Object.defineProperty(exports, "FFID_CATALOG_ENVIRONMENTS", {
|
|
175
175
|
enumerable: true,
|
|
176
|
-
get: function () { return
|
|
176
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_CATALOG_ENVIRONMENTS; }
|
|
177
177
|
});
|
|
178
178
|
Object.defineProperty(exports, "FFID_CATALOG_PUBLICATION_STATUSES", {
|
|
179
179
|
enumerable: true,
|
|
180
|
-
get: function () { return
|
|
180
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_CATALOG_PUBLICATION_STATUSES; }
|
|
181
181
|
});
|
|
182
182
|
Object.defineProperty(exports, "FFID_ERROR_CODES", {
|
|
183
183
|
enumerable: true,
|
|
184
|
-
get: function () { return
|
|
184
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_ERROR_CODES; }
|
|
185
185
|
});
|
|
186
186
|
Object.defineProperty(exports, "FFID_INQUIRY_ACQUISITION_SOURCES", {
|
|
187
187
|
enumerable: true,
|
|
188
|
-
get: function () { return
|
|
188
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_INQUIRY_ACQUISITION_SOURCES; }
|
|
189
189
|
});
|
|
190
190
|
Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES", {
|
|
191
191
|
enumerable: true,
|
|
192
|
-
get: function () { return
|
|
192
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_INQUIRY_CATEGORIES; }
|
|
193
193
|
});
|
|
194
194
|
Object.defineProperty(exports, "FFID_INQUIRY_CATEGORIES_SITE_2026", {
|
|
195
195
|
enumerable: true,
|
|
196
|
-
get: function () { return
|
|
196
|
+
get: function () { return chunkBI6UM2EJ_cjs.FFID_INQUIRY_CATEGORIES_SITE_2026; }
|
|
197
197
|
});
|
|
198
198
|
Object.defineProperty(exports, "canonicalizeCatalogValue", {
|
|
199
199
|
enumerable: true,
|
|
200
|
-
get: function () { return
|
|
200
|
+
get: function () { return chunkBI6UM2EJ_cjs.canonicalizeCatalogValue; }
|
|
201
201
|
});
|
|
202
202
|
Object.defineProperty(exports, "clearState", {
|
|
203
203
|
enumerable: true,
|
|
204
|
-
get: function () { return
|
|
204
|
+
get: function () { return chunkBI6UM2EJ_cjs.cleanupStateStorage; }
|
|
205
205
|
});
|
|
206
206
|
Object.defineProperty(exports, "computeEffectiveStatusFromSession", {
|
|
207
207
|
enumerable: true,
|
|
208
|
-
get: function () { return
|
|
208
|
+
get: function () { return chunkBI6UM2EJ_cjs.computeEffectiveStatusFromSession; }
|
|
209
209
|
});
|
|
210
210
|
Object.defineProperty(exports, "computeFFIDCheckoutCopyHash", {
|
|
211
211
|
enumerable: true,
|
|
212
|
-
get: function () { return
|
|
212
|
+
get: function () { return chunkBI6UM2EJ_cjs.computeFFIDCheckoutCopyHash; }
|
|
213
213
|
});
|
|
214
214
|
Object.defineProperty(exports, "computeLegalDisclosureHash", {
|
|
215
215
|
enumerable: true,
|
|
216
|
-
get: function () { return
|
|
216
|
+
get: function () { return chunkBI6UM2EJ_cjs.computeLegalDisclosureHash; }
|
|
217
217
|
});
|
|
218
218
|
Object.defineProperty(exports, "computePaymentConfigurationHash", {
|
|
219
219
|
enumerable: true,
|
|
220
|
-
get: function () { return
|
|
220
|
+
get: function () { return chunkBI6UM2EJ_cjs.computePaymentConfigurationHash; }
|
|
221
221
|
});
|
|
222
222
|
Object.defineProperty(exports, "computePraxisCopyHash", {
|
|
223
223
|
enumerable: true,
|
|
224
|
-
get: function () { return
|
|
224
|
+
get: function () { return chunkBI6UM2EJ_cjs.computePraxisCopyHash; }
|
|
225
225
|
});
|
|
226
226
|
Object.defineProperty(exports, "computeScopeHash", {
|
|
227
227
|
enumerable: true,
|
|
228
|
-
get: function () { return
|
|
228
|
+
get: function () { return chunkBI6UM2EJ_cjs.computeScopeHash; }
|
|
229
229
|
});
|
|
230
230
|
Object.defineProperty(exports, "computeTaxConfigurationHash", {
|
|
231
231
|
enumerable: true,
|
|
232
|
-
get: function () { return
|
|
232
|
+
get: function () { return chunkBI6UM2EJ_cjs.computeTaxConfigurationHash; }
|
|
233
233
|
});
|
|
234
234
|
Object.defineProperty(exports, "createFFIDAnnouncementsClient", {
|
|
235
235
|
enumerable: true,
|
|
236
|
-
get: function () { return
|
|
236
|
+
get: function () { return chunkBI6UM2EJ_cjs.createFFIDAnnouncementsClient; }
|
|
237
237
|
});
|
|
238
238
|
Object.defineProperty(exports, "createFFIDClient", {
|
|
239
239
|
enumerable: true,
|
|
240
|
-
get: function () { return
|
|
240
|
+
get: function () { return chunkBI6UM2EJ_cjs.createFFIDClient; }
|
|
241
241
|
});
|
|
242
242
|
Object.defineProperty(exports, "createTokenStore", {
|
|
243
243
|
enumerable: true,
|
|
244
|
-
get: function () { return
|
|
244
|
+
get: function () { return chunkBI6UM2EJ_cjs.createTokenStore; }
|
|
245
245
|
});
|
|
246
246
|
Object.defineProperty(exports, "generateCodeChallenge", {
|
|
247
247
|
enumerable: true,
|
|
248
|
-
get: function () { return
|
|
248
|
+
get: function () { return chunkBI6UM2EJ_cjs.generateCodeChallenge; }
|
|
249
249
|
});
|
|
250
250
|
Object.defineProperty(exports, "generateCodeVerifier", {
|
|
251
251
|
enumerable: true,
|
|
252
|
-
get: function () { return
|
|
252
|
+
get: function () { return chunkBI6UM2EJ_cjs.generateCodeVerifier; }
|
|
253
253
|
});
|
|
254
254
|
Object.defineProperty(exports, "handleRedirectCallback", {
|
|
255
255
|
enumerable: true,
|
|
256
|
-
get: function () { return
|
|
256
|
+
get: function () { return chunkBI6UM2EJ_cjs.handleRedirectCallback; }
|
|
257
257
|
});
|
|
258
258
|
Object.defineProperty(exports, "hasAccessFromUserinfo", {
|
|
259
259
|
enumerable: true,
|
|
260
|
-
get: function () { return
|
|
260
|
+
get: function () { return chunkBI6UM2EJ_cjs.hasAccessFromUserinfo; }
|
|
261
261
|
});
|
|
262
262
|
Object.defineProperty(exports, "hashCanonicalJson", {
|
|
263
263
|
enumerable: true,
|
|
264
|
-
get: function () { return
|
|
264
|
+
get: function () { return chunkBI6UM2EJ_cjs.hashCanonicalJson; }
|
|
265
265
|
});
|
|
266
266
|
Object.defineProperty(exports, "isBlockedFromUserinfo", {
|
|
267
267
|
enumerable: true,
|
|
268
|
-
get: function () { return
|
|
268
|
+
get: function () { return chunkBI6UM2EJ_cjs.isBlockedFromUserinfo; }
|
|
269
269
|
});
|
|
270
270
|
Object.defineProperty(exports, "isFFIDInquiryAcquisitionSource", {
|
|
271
271
|
enumerable: true,
|
|
272
|
-
get: function () { return
|
|
272
|
+
get: function () { return chunkBI6UM2EJ_cjs.isFFIDInquiryAcquisitionSource; }
|
|
273
273
|
});
|
|
274
274
|
Object.defineProperty(exports, "isFFIDInquiryCategorySite2026", {
|
|
275
275
|
enumerable: true,
|
|
276
|
-
get: function () { return
|
|
276
|
+
get: function () { return chunkBI6UM2EJ_cjs.isFFIDInquiryCategorySite2026; }
|
|
277
277
|
});
|
|
278
278
|
Object.defineProperty(exports, "normalizeRedirectUri", {
|
|
279
279
|
enumerable: true,
|
|
280
|
-
get: function () { return
|
|
280
|
+
get: function () { return chunkBI6UM2EJ_cjs.normalizeRedirectUri; }
|
|
281
281
|
});
|
|
282
282
|
Object.defineProperty(exports, "retrieveCodeVerifier", {
|
|
283
283
|
enumerable: true,
|
|
284
|
-
get: function () { return
|
|
284
|
+
get: function () { return chunkBI6UM2EJ_cjs.retrieveCodeVerifier; }
|
|
285
285
|
});
|
|
286
286
|
Object.defineProperty(exports, "retrieveState", {
|
|
287
287
|
enumerable: true,
|
|
288
|
-
get: function () { return
|
|
288
|
+
get: function () { return chunkBI6UM2EJ_cjs.retrieveState; }
|
|
289
289
|
});
|
|
290
290
|
Object.defineProperty(exports, "sha256Hex", {
|
|
291
291
|
enumerable: true,
|
|
292
|
-
get: function () { return
|
|
292
|
+
get: function () { return chunkBI6UM2EJ_cjs.sha256Hex; }
|
|
293
293
|
});
|
|
294
294
|
Object.defineProperty(exports, "storeCodeVerifier", {
|
|
295
295
|
enumerable: true,
|
|
296
|
-
get: function () { return
|
|
296
|
+
get: function () { return chunkBI6UM2EJ_cjs.storeCodeVerifier; }
|
|
297
297
|
});
|
|
298
298
|
Object.defineProperty(exports, "storeState", {
|
|
299
299
|
enumerable: true,
|
|
300
|
-
get: function () { return
|
|
300
|
+
get: function () { return chunkBI6UM2EJ_cjs.storeState; }
|
|
301
301
|
});
|
|
302
302
|
Object.defineProperty(exports, "useFFID", {
|
|
303
303
|
enumerable: true,
|
|
304
|
-
get: function () { return
|
|
304
|
+
get: function () { return chunkBI6UM2EJ_cjs.useFFID; }
|
|
305
305
|
});
|
|
306
306
|
Object.defineProperty(exports, "useFFIDAnnouncements", {
|
|
307
307
|
enumerable: true,
|
|
308
|
-
get: function () { return
|
|
308
|
+
get: function () { return chunkBI6UM2EJ_cjs.useFFIDAnnouncements; }
|
|
309
309
|
});
|
|
310
310
|
Object.defineProperty(exports, "useSubscription", {
|
|
311
311
|
enumerable: true,
|
|
312
|
-
get: function () { return
|
|
312
|
+
get: function () { return chunkBI6UM2EJ_cjs.useSubscription; }
|
|
313
313
|
});
|
|
314
314
|
Object.defineProperty(exports, "validatePublishedCatalog", {
|
|
315
315
|
enumerable: true,
|
|
316
|
-
get: function () { return
|
|
316
|
+
get: function () { return chunkBI6UM2EJ_cjs.validatePublishedCatalog; }
|
|
317
317
|
});
|
|
318
318
|
Object.defineProperty(exports, "withSubscription", {
|
|
319
319
|
enumerable: true,
|
|
320
|
-
get: function () { return
|
|
320
|
+
get: function () { return chunkBI6UM2EJ_cjs.withSubscription; }
|
|
321
321
|
});
|
|
322
322
|
Object.defineProperty(exports, "ALL_DENIED_EXCEPT_NECESSARY", {
|
|
323
323
|
enumerable: true,
|
|
324
|
-
get: function () { return
|
|
324
|
+
get: function () { return chunkXELXXL2F_cjs.ALL_DENIED_EXCEPT_NECESSARY; }
|
|
325
325
|
});
|
|
326
326
|
Object.defineProperty(exports, "CONSENT_COOKIE_NAME", {
|
|
327
327
|
enumerable: true,
|
|
328
|
-
get: function () { return
|
|
328
|
+
get: function () { return chunkXELXXL2F_cjs.CONSENT_COOKIE_NAME; }
|
|
329
329
|
});
|
|
330
330
|
Object.defineProperty(exports, "CONSENT_DISMISSAL_TIMESTAMP_KEY", {
|
|
331
331
|
enumerable: true,
|
|
332
|
-
get: function () { return
|
|
332
|
+
get: function () { return chunkXELXXL2F_cjs.CONSENT_DISMISSAL_TIMESTAMP_KEY; }
|
|
333
333
|
});
|
|
334
334
|
Object.defineProperty(exports, "COOKIE_VERSION", {
|
|
335
335
|
enumerable: true,
|
|
336
|
-
get: function () { return
|
|
336
|
+
get: function () { return chunkXELXXL2F_cjs.COOKIE_VERSION; }
|
|
337
337
|
});
|
|
338
338
|
Object.defineProperty(exports, "DEFAULT_CONSENT_ERROR_MESSAGES", {
|
|
339
339
|
enumerable: true,
|
|
340
|
-
get: function () { return
|
|
340
|
+
get: function () { return chunkXELXXL2F_cjs.DEFAULT_CONSENT_ERROR_MESSAGES; }
|
|
341
341
|
});
|
|
342
342
|
Object.defineProperty(exports, "FFIDAnalyticsProvider", {
|
|
343
343
|
enumerable: true,
|
|
344
|
-
get: function () { return
|
|
344
|
+
get: function () { return chunkXELXXL2F_cjs.FFIDAnalyticsProvider; }
|
|
345
345
|
});
|
|
346
346
|
Object.defineProperty(exports, "FFIDConsentError", {
|
|
347
347
|
enumerable: true,
|
|
348
|
-
get: function () { return
|
|
348
|
+
get: function () { return chunkXELXXL2F_cjs.FFIDConsentError; }
|
|
349
349
|
});
|
|
350
350
|
Object.defineProperty(exports, "FFIDCookieBanner", {
|
|
351
351
|
enumerable: true,
|
|
352
|
-
get: function () { return
|
|
352
|
+
get: function () { return chunkXELXXL2F_cjs.FFIDCookieBanner; }
|
|
353
353
|
});
|
|
354
354
|
Object.defineProperty(exports, "FFIDCookieLink", {
|
|
355
355
|
enumerable: true,
|
|
356
|
-
get: function () { return
|
|
356
|
+
get: function () { return chunkXELXXL2F_cjs.FFIDCookieLink; }
|
|
357
357
|
});
|
|
358
358
|
Object.defineProperty(exports, "FFIDCookieSettings", {
|
|
359
359
|
enumerable: true,
|
|
360
|
-
get: function () { return
|
|
360
|
+
get: function () { return chunkXELXXL2F_cjs.FFIDCookieSettings; }
|
|
361
361
|
});
|
|
362
362
|
Object.defineProperty(exports, "FFID_CONSENT_ERROR_CODES", {
|
|
363
363
|
enumerable: true,
|
|
364
|
-
get: function () { return
|
|
364
|
+
get: function () { return chunkXELXXL2F_cjs.FFID_CONSENT_ERROR_CODES; }
|
|
365
365
|
});
|
|
366
366
|
Object.defineProperty(exports, "clearConsentDismissalTimestamp", {
|
|
367
367
|
enumerable: true,
|
|
368
|
-
get: function () { return
|
|
368
|
+
get: function () { return chunkXELXXL2F_cjs.clearConsentDismissalTimestamp; }
|
|
369
369
|
});
|
|
370
370
|
Object.defineProperty(exports, "decodeConsentCookie", {
|
|
371
371
|
enumerable: true,
|
|
372
|
-
get: function () { return
|
|
372
|
+
get: function () { return chunkXELXXL2F_cjs.decodeConsentCookie; }
|
|
373
373
|
});
|
|
374
374
|
Object.defineProperty(exports, "encodeConsentCookie", {
|
|
375
375
|
enumerable: true,
|
|
376
|
-
get: function () { return
|
|
376
|
+
get: function () { return chunkXELXXL2F_cjs.encodeConsentCookie; }
|
|
377
377
|
});
|
|
378
378
|
Object.defineProperty(exports, "readConsentCookie", {
|
|
379
379
|
enumerable: true,
|
|
380
|
-
get: function () { return
|
|
380
|
+
get: function () { return chunkXELXXL2F_cjs.readConsentCookie; }
|
|
381
381
|
});
|
|
382
382
|
Object.defineProperty(exports, "readConsentDismissalTimestamp", {
|
|
383
383
|
enumerable: true,
|
|
384
|
-
get: function () { return
|
|
384
|
+
get: function () { return chunkXELXXL2F_cjs.readConsentDismissalTimestamp; }
|
|
385
385
|
});
|
|
386
386
|
Object.defineProperty(exports, "useFFIDConsent", {
|
|
387
387
|
enumerable: true,
|
|
388
|
-
get: function () { return
|
|
388
|
+
get: function () { return chunkXELXXL2F_cjs.useFFIDConsent; }
|
|
389
389
|
});
|
|
390
390
|
Object.defineProperty(exports, "useFFIDConsentPreferences", {
|
|
391
391
|
enumerable: true,
|
|
392
|
-
get: function () { return
|
|
392
|
+
get: function () { return chunkXELXXL2F_cjs.useFFIDConsentPreferences; }
|
|
393
393
|
});
|
|
394
394
|
Object.defineProperty(exports, "writeConsentCookie", {
|
|
395
395
|
enumerable: true,
|
|
396
|
-
get: function () { return
|
|
396
|
+
get: function () { return chunkXELXXL2F_cjs.writeConsentCookie; }
|
|
397
397
|
});
|
|
398
398
|
Object.defineProperty(exports, "writeConsentDismissalTimestamp", {
|
|
399
399
|
enumerable: true,
|
|
400
|
-
get: function () { return
|
|
400
|
+
get: function () { return chunkXELXXL2F_cjs.writeConsentDismissalTimestamp; }
|
|
401
401
|
});
|
|
402
402
|
exports.FFID_NEWSLETTER_DISPATCH_MAX_RECIPIENTS = FFID_NEWSLETTER_DISPATCH_MAX_RECIPIENTS;
|
|
403
403
|
exports.FFID_NEWSLETTER_TYPES = FFID_NEWSLETTER_TYPES;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as FFIDSubscriptionStatus, a as FFIDOAuthUserInfoSubscription, b as FFIDAccountType, c as FFIDPrompt, d as FFIDConfig, e as FFIDApiResponse, f as FFIDSessionResponse, g as FFIDSignOutResult, h as FFIDError, i as FFIDSubscriptionCheckResponse, j as FFIDCheckServiceAccessParams, k as FFIDServiceAccessDecision, l as FFIDAnalyticsConfig, m as FFIDVerifyAccessTokenOptions, n as FFIDOAuthUserInfo, o as FFIDInquiryCreateParams, p as FFIDInquiryCreateResponse, T as TokenStore, q as FFIDAuthMode, r as FFIDLogger, s as FFIDCacheAdapter, t as FFIDUser, u as FFIDOrganization, v as FFIDSubscription, w as FFIDSubscriptionContextValue, E as EffectiveSubscriptionStatus, x as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, y as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, z as FFIDAnnouncementsLogger } from './index-BMKhKhzF.cjs';
|
|
2
2
|
export { B as Announcement, C as AnnouncementStatus, D as AnnouncementType, G as EFFECTIVE_SUBSCRIPTION_STATUSES, H as FFIDAnnouncementBadge, I as FFIDAnnouncementList, J as FFIDAnnouncementsError, K as FFIDAnnouncementsErrorCode, M as FFIDAnnouncementsServerResponse, N as FFIDApiResponseMeta, O as FFIDCacheConfig, P as FFIDContextValue, Q as FFIDInquiryAcquisitionSource, R as FFIDInquiryCategory, S as FFIDInquiryCategorySite2026, U as FFIDInquiryForm, V as FFIDInquiryFormCategoryItem, W as FFIDInquiryFormClassNames, X as FFIDInquiryFormLegalLayout, Y as FFIDInquiryFormOrganization, Z as FFIDInquiryFormPlaceholderContext, _ as FFIDInquiryFormPrefill, $ as FFIDInquiryFormProps, a0 as FFIDInquiryFormSubmitData, a1 as FFIDInquiryFormSubmitResult, a2 as FFIDJwtClaims, a3 as FFIDLoginButton, a4 as FFIDOAuthUserInfoMemberRole, a5 as FFIDOrganizationSwitcher, a6 as FFIDSeatAssignmentClaim, a7 as FFIDSeatAssignmentStatus, a8 as FFIDSeatModel, a9 as FFIDServiceAccessDenialReason, aa as FFIDServiceAccessFailPolicy, ab as FFIDSubscriptionBadge, ac as FFIDUserMenu, ad as FFID_INQUIRY_ACQUISITION_SOURCES, ae as FFID_INQUIRY_CATEGORIES, af as FFID_INQUIRY_CATEGORIES_SITE_2026, ag as TokenData, ah as UseFFIDAnnouncementsOptions, ai as UseFFIDAnnouncementsReturn, aj as createTokenStore, ak as isFFIDInquiryAcquisitionSource, al as isFFIDInquiryCategorySite2026, am as useFFIDAnnouncements } from './index-BMKhKhzF.cjs';
|
|
3
|
-
export { A as ALL_DENIED_EXCEPT_NECESSARY, i as CONSENT_COOKIE_NAME, j as CONSENT_DISMISSAL_TIMESTAMP_KEY, l as COOKIE_VERSION, D as DEFAULT_CONSENT_ERROR_MESSAGES,
|
|
3
|
+
export { A as ALL_DENIED_EXCEPT_NECESSARY, i as CONSENT_COOKIE_NAME, j as CONSENT_DISMISSAL_TIMESTAMP_KEY, l as COOKIE_VERSION, D as DEFAULT_CONSENT_ERROR_MESSAGES, n as FFIDAnalyticsProvider, o as FFIDAnalyticsProviderProps, c as FFIDConsentCategories, q as FFIDConsentCategoryCode, e as FFIDConsentCategoryMetadata, v as FFIDConsentError, w as FFIDConsentErrorCode, x as FFIDConsentMergeStrategy, z as FFIDConsentMergeWarning, B as FFIDConsentMergeWarningEvent, F as FFIDConsentResult, H as FFIDConsentSource, a as FFIDConsentState, d as FFIDConsentSyncResult, L as FFIDCookieBanner, M as FFIDCookieBannerClassNames, N as FFIDCookieBannerProps, O as FFIDCookieLink, Q as FFIDCookieLinkProps, f as FFIDCookiePolicy, S as FFIDCookieSettings, T as FFIDCookieSettingsClassNames, U as FFIDCookieSettingsProps, Z as FFID_CONSENT_ERROR_CODES, ad as UseFFIDConsentPreferencesReturn, ae as UseFFIDConsentReturn, af as clearConsentDismissalTimestamp, ai as decodeConsentCookie, ak as encodeConsentCookie, am as readConsentCookie, an as readConsentDismissalTimestamp, ap as useFFIDConsent, aq as useFFIDConsentPreferences, ar as writeConsentCookie, as as writeConsentDismissalTimestamp } from './FFIDCookieLink-Bwr0FBrV.cjs';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import { ReactNode, ComponentType, FC } from 'react';
|
|
6
6
|
import 'zod';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { F as FFIDSubscriptionStatus, a as FFIDOAuthUserInfoSubscription, b as FFIDAccountType, c as FFIDPrompt, d as FFIDConfig, e as FFIDApiResponse, f as FFIDSessionResponse, g as FFIDSignOutResult, h as FFIDError, i as FFIDSubscriptionCheckResponse, j as FFIDCheckServiceAccessParams, k as FFIDServiceAccessDecision, l as FFIDAnalyticsConfig, m as FFIDVerifyAccessTokenOptions, n as FFIDOAuthUserInfo, o as FFIDInquiryCreateParams, p as FFIDInquiryCreateResponse, T as TokenStore, q as FFIDAuthMode, r as FFIDLogger, s as FFIDCacheAdapter, t as FFIDUser, u as FFIDOrganization, v as FFIDSubscription, w as FFIDSubscriptionContextValue, E as EffectiveSubscriptionStatus, x as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, y as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, z as FFIDAnnouncementsLogger } from './index-BMKhKhzF.js';
|
|
2
2
|
export { B as Announcement, C as AnnouncementStatus, D as AnnouncementType, G as EFFECTIVE_SUBSCRIPTION_STATUSES, H as FFIDAnnouncementBadge, I as FFIDAnnouncementList, J as FFIDAnnouncementsError, K as FFIDAnnouncementsErrorCode, M as FFIDAnnouncementsServerResponse, N as FFIDApiResponseMeta, O as FFIDCacheConfig, P as FFIDContextValue, Q as FFIDInquiryAcquisitionSource, R as FFIDInquiryCategory, S as FFIDInquiryCategorySite2026, U as FFIDInquiryForm, V as FFIDInquiryFormCategoryItem, W as FFIDInquiryFormClassNames, X as FFIDInquiryFormLegalLayout, Y as FFIDInquiryFormOrganization, Z as FFIDInquiryFormPlaceholderContext, _ as FFIDInquiryFormPrefill, $ as FFIDInquiryFormProps, a0 as FFIDInquiryFormSubmitData, a1 as FFIDInquiryFormSubmitResult, a2 as FFIDJwtClaims, a3 as FFIDLoginButton, a4 as FFIDOAuthUserInfoMemberRole, a5 as FFIDOrganizationSwitcher, a6 as FFIDSeatAssignmentClaim, a7 as FFIDSeatAssignmentStatus, a8 as FFIDSeatModel, a9 as FFIDServiceAccessDenialReason, aa as FFIDServiceAccessFailPolicy, ab as FFIDSubscriptionBadge, ac as FFIDUserMenu, ad as FFID_INQUIRY_ACQUISITION_SOURCES, ae as FFID_INQUIRY_CATEGORIES, af as FFID_INQUIRY_CATEGORIES_SITE_2026, ag as TokenData, ah as UseFFIDAnnouncementsOptions, ai as UseFFIDAnnouncementsReturn, aj as createTokenStore, ak as isFFIDInquiryAcquisitionSource, al as isFFIDInquiryCategorySite2026, am as useFFIDAnnouncements } from './index-BMKhKhzF.js';
|
|
3
|
-
export { A as ALL_DENIED_EXCEPT_NECESSARY, i as CONSENT_COOKIE_NAME, j as CONSENT_DISMISSAL_TIMESTAMP_KEY, l as COOKIE_VERSION, D as DEFAULT_CONSENT_ERROR_MESSAGES,
|
|
3
|
+
export { A as ALL_DENIED_EXCEPT_NECESSARY, i as CONSENT_COOKIE_NAME, j as CONSENT_DISMISSAL_TIMESTAMP_KEY, l as COOKIE_VERSION, D as DEFAULT_CONSENT_ERROR_MESSAGES, n as FFIDAnalyticsProvider, o as FFIDAnalyticsProviderProps, c as FFIDConsentCategories, q as FFIDConsentCategoryCode, e as FFIDConsentCategoryMetadata, v as FFIDConsentError, w as FFIDConsentErrorCode, x as FFIDConsentMergeStrategy, z as FFIDConsentMergeWarning, B as FFIDConsentMergeWarningEvent, F as FFIDConsentResult, H as FFIDConsentSource, a as FFIDConsentState, d as FFIDConsentSyncResult, L as FFIDCookieBanner, M as FFIDCookieBannerClassNames, N as FFIDCookieBannerProps, O as FFIDCookieLink, Q as FFIDCookieLinkProps, f as FFIDCookiePolicy, S as FFIDCookieSettings, T as FFIDCookieSettingsClassNames, U as FFIDCookieSettingsProps, Z as FFID_CONSENT_ERROR_CODES, ad as UseFFIDConsentPreferencesReturn, ae as UseFFIDConsentReturn, af as clearConsentDismissalTimestamp, ai as decodeConsentCookie, ak as encodeConsentCookie, am as readConsentCookie, an as readConsentDismissalTimestamp, ap as useFFIDConsent, aq as useFFIDConsentPreferences, ar as writeConsentCookie, as as writeConsentDismissalTimestamp } from './FFIDCookieLink-Bwr0FBrV.js';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import { ReactNode, ComponentType, FC } from 'react';
|
|
6
6
|
import 'zod';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useFFIDContext, useSubscription } from './chunk-
|
|
2
|
-
export { ACCESS_GRANTING_EFFECTIVE_STATUSES, BLOCKING_EFFECTIVE_STATUSES, CATALOG_HASH_PATTERN, DEFAULT_API_BASE_URL, DEFAULT_OAUTH_SCOPES, EFFECTIVE_SUBSCRIPTION_STATUSES, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDCatalogHashError, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSDKError, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, FFID_CATALOG_ENVIRONMENTS, FFID_CATALOG_PUBLICATION_STATUSES, FFID_ERROR_CODES, FFID_INQUIRY_ACQUISITION_SOURCES, FFID_INQUIRY_CATEGORIES, FFID_INQUIRY_CATEGORIES_SITE_2026, canonicalizeCatalogValue, cleanupStateStorage as clearState, computeEffectiveStatusFromSession, computeFFIDCheckoutCopyHash, computeLegalDisclosureHash, computePaymentConfigurationHash, computePraxisCopyHash, computeScopeHash, computeTaxConfigurationHash, createFFIDAnnouncementsClient, createFFIDClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, handleRedirectCallback, hasAccessFromUserinfo, hashCanonicalJson, isBlockedFromUserinfo, isFFIDInquiryAcquisitionSource, isFFIDInquiryCategorySite2026, normalizeRedirectUri, retrieveCodeVerifier, retrieveState, sha256Hex, storeCodeVerifier, storeState, useFFID, useFFIDAnnouncements, useSubscription, validatePublishedCatalog, withSubscription } from './chunk-
|
|
3
|
-
export { ALL_DENIED_EXCEPT_NECESSARY, CONSENT_COOKIE_NAME, CONSENT_DISMISSAL_TIMESTAMP_KEY, COOKIE_VERSION, DEFAULT_CONSENT_ERROR_MESSAGES, FFIDAnalyticsProvider, FFIDConsentError, FFIDCookieBanner, FFIDCookieLink, FFIDCookieSettings, FFID_CONSENT_ERROR_CODES, clearConsentDismissalTimestamp, decodeConsentCookie, encodeConsentCookie, readConsentCookie, readConsentDismissalTimestamp, useFFIDConsent, useFFIDConsentPreferences, writeConsentCookie, writeConsentDismissalTimestamp } from './chunk-
|
|
1
|
+
import { useFFIDContext, useSubscription } from './chunk-32VOLLNV.js';
|
|
2
|
+
export { ACCESS_GRANTING_EFFECTIVE_STATUSES, BLOCKING_EFFECTIVE_STATUSES, CATALOG_HASH_PATTERN, DEFAULT_API_BASE_URL, DEFAULT_OAUTH_SCOPES, EFFECTIVE_SUBSCRIPTION_STATUSES, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDCatalogHashError, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSDKError, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, FFID_CATALOG_ENVIRONMENTS, FFID_CATALOG_PUBLICATION_STATUSES, FFID_ERROR_CODES, FFID_INQUIRY_ACQUISITION_SOURCES, FFID_INQUIRY_CATEGORIES, FFID_INQUIRY_CATEGORIES_SITE_2026, canonicalizeCatalogValue, cleanupStateStorage as clearState, computeEffectiveStatusFromSession, computeFFIDCheckoutCopyHash, computeLegalDisclosureHash, computePaymentConfigurationHash, computePraxisCopyHash, computeScopeHash, computeTaxConfigurationHash, createFFIDAnnouncementsClient, createFFIDClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, handleRedirectCallback, hasAccessFromUserinfo, hashCanonicalJson, isBlockedFromUserinfo, isFFIDInquiryAcquisitionSource, isFFIDInquiryCategorySite2026, normalizeRedirectUri, retrieveCodeVerifier, retrieveState, sha256Hex, storeCodeVerifier, storeState, useFFID, useFFIDAnnouncements, useSubscription, validatePublishedCatalog, withSubscription } from './chunk-32VOLLNV.js';
|
|
3
|
+
export { ALL_DENIED_EXCEPT_NECESSARY, CONSENT_COOKIE_NAME, CONSENT_DISMISSAL_TIMESTAMP_KEY, COOKIE_VERSION, DEFAULT_CONSENT_ERROR_MESSAGES, FFIDAnalyticsProvider, FFIDConsentError, FFIDCookieBanner, FFIDCookieLink, FFIDCookieSettings, FFID_CONSENT_ERROR_CODES, clearConsentDismissalTimestamp, decodeConsentCookie, encodeConsentCookie, readConsentCookie, readConsentDismissalTimestamp, useFFIDConsent, useFFIDConsentPreferences, writeConsentCookie, writeConsentDismissalTimestamp } from './chunk-RHBZHSRD.js';
|
|
4
4
|
import { useEffect, useRef } from 'react';
|
|
5
5
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
6
6
|
|
package/dist/legal/index.cjs
CHANGED
|
@@ -16,7 +16,14 @@ var FFID_LEGAL_ERROR_CODES = {
|
|
|
16
16
|
/** Server returned error without structured error body */
|
|
17
17
|
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
18
18
|
/** Input validation failed (empty required parameters) */
|
|
19
|
-
VALIDATION_ERROR: "VALIDATION_ERROR"
|
|
19
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
20
|
+
/**
|
|
21
|
+
* `externalUserEmail` was missing or blank (since 6.0.0).
|
|
22
|
+
*
|
|
23
|
+
* The same code the API returns with HTTP 422, so a consumer can branch on
|
|
24
|
+
* one value whether the request was refused locally or by the server.
|
|
25
|
+
*/
|
|
26
|
+
EXTERNAL_USER_EMAIL_REQUIRED: "EXTERNAL_USER_EMAIL_REQUIRED"
|
|
20
27
|
};
|
|
21
28
|
var noopLogger = {
|
|
22
29
|
debug: () => {
|
|
@@ -125,6 +132,14 @@ function createFFIDLegalClient(config) {
|
|
|
125
132
|
}
|
|
126
133
|
};
|
|
127
134
|
}
|
|
135
|
+
if (typeof request.externalUserEmail !== "string" || !request.externalUserEmail.trim()) {
|
|
136
|
+
return {
|
|
137
|
+
error: {
|
|
138
|
+
code: FFID_LEGAL_ERROR_CODES.EXTERNAL_USER_EMAIL_REQUIRED,
|
|
139
|
+
message: "externalUserEmail is required"
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
128
143
|
return fetchWithApiKey("/agreements", {
|
|
129
144
|
method: "POST",
|
|
130
145
|
body: JSON.stringify(request)
|
package/dist/legal/index.d.cts
CHANGED
|
@@ -79,10 +79,21 @@ interface FFIDServiceUserAgreement {
|
|
|
79
79
|
id: string;
|
|
80
80
|
/** Service ID (UUID) */
|
|
81
81
|
serviceId: string;
|
|
82
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Opaque user identifier owned by the calling service (its own primary key,
|
|
84
|
+
* or the upstream IdP's `sub`).
|
|
85
|
+
*
|
|
86
|
+
* Do **not** put an FFID user ID here — FFID resolves its own linkage from
|
|
87
|
+
* `externalUserEmail` and exposes it as {@link FFIDServiceUserAgreement.userId}.
|
|
88
|
+
*/
|
|
83
89
|
externalUserId: string;
|
|
84
|
-
/** External user email
|
|
90
|
+
/** External user email recorded at agreement time */
|
|
85
91
|
externalUserEmail: string | null;
|
|
92
|
+
/**
|
|
93
|
+
* FFID user this consent resolved to, or `null` when no FFID account matched
|
|
94
|
+
* `externalUserEmail`. The consent record is kept either way.
|
|
95
|
+
*/
|
|
96
|
+
userId: string | null;
|
|
86
97
|
/** Document ID (UUID) */
|
|
87
98
|
documentId: string;
|
|
88
99
|
/** Agreement timestamp (ISO 8601) */
|
|
@@ -108,10 +119,19 @@ interface FFIDServiceUserAgreement {
|
|
|
108
119
|
* Request to record an agreement
|
|
109
120
|
*/
|
|
110
121
|
interface FFIDRecordAgreementRequest {
|
|
111
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Opaque user identifier owned by the calling service (its own primary key,
|
|
124
|
+
* or the upstream IdP's `sub`). Do **not** send an FFID user ID.
|
|
125
|
+
*/
|
|
112
126
|
externalUserId: string;
|
|
113
|
-
/**
|
|
114
|
-
|
|
127
|
+
/**
|
|
128
|
+
* External user email. **Required.**
|
|
129
|
+
*
|
|
130
|
+
* FFID uses it as the only input for resolving this consent to an FFID user,
|
|
131
|
+
* and rejects the request with HTTP 422 (`EXTERNAL_USER_EMAIL_REQUIRED`) when
|
|
132
|
+
* it is missing or blank.
|
|
133
|
+
*/
|
|
134
|
+
externalUserEmail: string;
|
|
115
135
|
/** Document ID to agree to */
|
|
116
136
|
documentId: string;
|
|
117
137
|
/** Method of agreement (defaults to 'click_through') */
|
|
@@ -295,6 +315,13 @@ declare const FFID_LEGAL_ERROR_CODES: {
|
|
|
295
315
|
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
|
296
316
|
/** Input validation failed (empty required parameters) */
|
|
297
317
|
readonly VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
318
|
+
/**
|
|
319
|
+
* `externalUserEmail` was missing or blank (since 6.0.0).
|
|
320
|
+
*
|
|
321
|
+
* The same code the API returns with HTTP 422, so a consumer can branch on
|
|
322
|
+
* one value whether the request was refused locally or by the server.
|
|
323
|
+
*/
|
|
324
|
+
readonly EXTERNAL_USER_EMAIL_REQUIRED: "EXTERNAL_USER_EMAIL_REQUIRED";
|
|
298
325
|
};
|
|
299
326
|
/**
|
|
300
327
|
* Creates an FFID Legal API client instance
|
package/dist/legal/index.d.ts
CHANGED
|
@@ -79,10 +79,21 @@ interface FFIDServiceUserAgreement {
|
|
|
79
79
|
id: string;
|
|
80
80
|
/** Service ID (UUID) */
|
|
81
81
|
serviceId: string;
|
|
82
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Opaque user identifier owned by the calling service (its own primary key,
|
|
84
|
+
* or the upstream IdP's `sub`).
|
|
85
|
+
*
|
|
86
|
+
* Do **not** put an FFID user ID here — FFID resolves its own linkage from
|
|
87
|
+
* `externalUserEmail` and exposes it as {@link FFIDServiceUserAgreement.userId}.
|
|
88
|
+
*/
|
|
83
89
|
externalUserId: string;
|
|
84
|
-
/** External user email
|
|
90
|
+
/** External user email recorded at agreement time */
|
|
85
91
|
externalUserEmail: string | null;
|
|
92
|
+
/**
|
|
93
|
+
* FFID user this consent resolved to, or `null` when no FFID account matched
|
|
94
|
+
* `externalUserEmail`. The consent record is kept either way.
|
|
95
|
+
*/
|
|
96
|
+
userId: string | null;
|
|
86
97
|
/** Document ID (UUID) */
|
|
87
98
|
documentId: string;
|
|
88
99
|
/** Agreement timestamp (ISO 8601) */
|
|
@@ -108,10 +119,19 @@ interface FFIDServiceUserAgreement {
|
|
|
108
119
|
* Request to record an agreement
|
|
109
120
|
*/
|
|
110
121
|
interface FFIDRecordAgreementRequest {
|
|
111
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Opaque user identifier owned by the calling service (its own primary key,
|
|
124
|
+
* or the upstream IdP's `sub`). Do **not** send an FFID user ID.
|
|
125
|
+
*/
|
|
112
126
|
externalUserId: string;
|
|
113
|
-
/**
|
|
114
|
-
|
|
127
|
+
/**
|
|
128
|
+
* External user email. **Required.**
|
|
129
|
+
*
|
|
130
|
+
* FFID uses it as the only input for resolving this consent to an FFID user,
|
|
131
|
+
* and rejects the request with HTTP 422 (`EXTERNAL_USER_EMAIL_REQUIRED`) when
|
|
132
|
+
* it is missing or blank.
|
|
133
|
+
*/
|
|
134
|
+
externalUserEmail: string;
|
|
115
135
|
/** Document ID to agree to */
|
|
116
136
|
documentId: string;
|
|
117
137
|
/** Method of agreement (defaults to 'click_through') */
|
|
@@ -295,6 +315,13 @@ declare const FFID_LEGAL_ERROR_CODES: {
|
|
|
295
315
|
readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
|
|
296
316
|
/** Input validation failed (empty required parameters) */
|
|
297
317
|
readonly VALIDATION_ERROR: "VALIDATION_ERROR";
|
|
318
|
+
/**
|
|
319
|
+
* `externalUserEmail` was missing or blank (since 6.0.0).
|
|
320
|
+
*
|
|
321
|
+
* The same code the API returns with HTTP 422, so a consumer can branch on
|
|
322
|
+
* one value whether the request was refused locally or by the server.
|
|
323
|
+
*/
|
|
324
|
+
readonly EXTERNAL_USER_EMAIL_REQUIRED: "EXTERNAL_USER_EMAIL_REQUIRED";
|
|
298
325
|
};
|
|
299
326
|
/**
|
|
300
327
|
* Creates an FFID Legal API client instance
|
package/dist/legal/index.js
CHANGED
|
@@ -15,7 +15,14 @@ var FFID_LEGAL_ERROR_CODES = {
|
|
|
15
15
|
/** Server returned error without structured error body */
|
|
16
16
|
UNKNOWN_ERROR: "UNKNOWN_ERROR",
|
|
17
17
|
/** Input validation failed (empty required parameters) */
|
|
18
|
-
VALIDATION_ERROR: "VALIDATION_ERROR"
|
|
18
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
19
|
+
/**
|
|
20
|
+
* `externalUserEmail` was missing or blank (since 6.0.0).
|
|
21
|
+
*
|
|
22
|
+
* The same code the API returns with HTTP 422, so a consumer can branch on
|
|
23
|
+
* one value whether the request was refused locally or by the server.
|
|
24
|
+
*/
|
|
25
|
+
EXTERNAL_USER_EMAIL_REQUIRED: "EXTERNAL_USER_EMAIL_REQUIRED"
|
|
19
26
|
};
|
|
20
27
|
var noopLogger = {
|
|
21
28
|
debug: () => {
|
|
@@ -124,6 +131,14 @@ function createFFIDLegalClient(config) {
|
|
|
124
131
|
}
|
|
125
132
|
};
|
|
126
133
|
}
|
|
134
|
+
if (typeof request.externalUserEmail !== "string" || !request.externalUserEmail.trim()) {
|
|
135
|
+
return {
|
|
136
|
+
error: {
|
|
137
|
+
code: FFID_LEGAL_ERROR_CODES.EXTERNAL_USER_EMAIL_REQUIRED,
|
|
138
|
+
message: "externalUserEmail is required"
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
127
142
|
return fetchWithApiKey("/agreements", {
|
|
128
143
|
method: "POST",
|
|
129
144
|
body: JSON.stringify(request)
|
package/dist/server/index.cjs
CHANGED
|
@@ -1672,7 +1672,7 @@ function validateTokenResponse(tokenResponse) {
|
|
|
1672
1672
|
}
|
|
1673
1673
|
|
|
1674
1674
|
// src/client/version-check.ts
|
|
1675
|
-
var SDK_VERSION = "
|
|
1675
|
+
var SDK_VERSION = "7.0.0";
|
|
1676
1676
|
var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
|
|
1677
1677
|
var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
|
|
1678
1678
|
function sdkHeaders() {
|