@feelflow/ffid-sdk 0.3.0 → 1.0.1
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/{chunk-A6YJDYIX.cjs → chunk-53CYDXU3.cjs} +560 -22
- package/dist/{chunk-VXBUXOLF.js → chunk-GAAFEPIY.js} +556 -23
- package/dist/components/index.cjs +7 -7
- package/dist/components/index.d.cts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +1 -1
- package/dist/{index-DBp3Ulyl.d.cts → index-DKBSoAHg.d.cts} +14 -1
- package/dist/{index-DBp3Ulyl.d.ts → index-DKBSoAHg.d.ts} +14 -1
- package/dist/index.cjs +36 -16
- package/dist/index.d.cts +77 -4
- package/dist/index.d.ts +77 -4
- package/dist/index.js +2 -2
- package/package.json +1 -1
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk53CYDXU3_cjs = require('../chunk-53CYDXU3.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "FFIDAnnouncementBadge", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDAnnouncementBadge; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "FFIDAnnouncementList", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDAnnouncementList; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "FFIDLoginButton", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDLoginButton; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDOrganizationSwitcher; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "FFIDSubscriptionBadge", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDSubscriptionBadge; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "FFIDUserMenu", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDUserMenu; }
|
|
30
30
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { k as FFIDAnnouncementBadge,
|
|
1
|
+
export { k as FFIDAnnouncementBadge, C as FFIDAnnouncementBadgeClassNames, D as FFIDAnnouncementBadgeProps, l as FFIDAnnouncementList, E as FFIDAnnouncementListClassNames, G as FFIDAnnouncementListProps, s as FFIDLoginButton, H as FFIDLoginButtonProps, u as FFIDOrganizationSwitcher, I as FFIDOrganizationSwitcherClassNames, J as FFIDOrganizationSwitcherProps, x as FFIDSubscriptionBadge, K as FFIDSubscriptionBadgeClassNames, M as FFIDSubscriptionBadgeProps, y as FFIDUserMenu, N as FFIDUserMenuClassNames, O as FFIDUserMenuProps } from '../index-DKBSoAHg.cjs';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { k as FFIDAnnouncementBadge,
|
|
1
|
+
export { k as FFIDAnnouncementBadge, C as FFIDAnnouncementBadgeClassNames, D as FFIDAnnouncementBadgeProps, l as FFIDAnnouncementList, E as FFIDAnnouncementListClassNames, G as FFIDAnnouncementListProps, s as FFIDLoginButton, H as FFIDLoginButtonProps, u as FFIDOrganizationSwitcher, I as FFIDOrganizationSwitcherClassNames, J as FFIDOrganizationSwitcherProps, x as FFIDSubscriptionBadge, K as FFIDSubscriptionBadgeClassNames, M as FFIDSubscriptionBadgeProps, y as FFIDUserMenu, N as FFIDUserMenuClassNames, O as FFIDUserMenuProps } from '../index-DKBSoAHg.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDSubscriptionBadge, FFIDUserMenu } from '../chunk-
|
|
1
|
+
export { FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDSubscriptionBadge, FFIDUserMenu } from '../chunk-GAAFEPIY.js';
|
|
@@ -107,6 +107,10 @@ interface FFIDConfig {
|
|
|
107
107
|
onAuthStateChange?: ((user: FFIDUser | null) => void) | undefined;
|
|
108
108
|
/** Callback on authentication error */
|
|
109
109
|
onError?: ((error: FFIDError) => void) | undefined;
|
|
110
|
+
/** Authentication mode: 'cookie' (default) or 'token' (OAuth Bearer) */
|
|
111
|
+
authMode?: 'cookie' | 'token' | undefined;
|
|
112
|
+
/** Client ID for token mode (defaults to serviceCode if not set) */
|
|
113
|
+
clientId?: string | undefined;
|
|
110
114
|
}
|
|
111
115
|
/**
|
|
112
116
|
* FFID context value provided to consumers
|
|
@@ -202,6 +206,15 @@ type FFIDApiResponse<T> = {
|
|
|
202
206
|
data?: undefined;
|
|
203
207
|
error: FFIDError;
|
|
204
208
|
};
|
|
209
|
+
/**
|
|
210
|
+
* OAuth 2.0 token response from FFID token endpoint
|
|
211
|
+
*/
|
|
212
|
+
interface FFIDOAuthTokenResponse {
|
|
213
|
+
access_token: string;
|
|
214
|
+
token_type: 'Bearer';
|
|
215
|
+
expires_in: number;
|
|
216
|
+
refresh_token: string;
|
|
217
|
+
}
|
|
205
218
|
|
|
206
219
|
/**
|
|
207
220
|
* FFID Announcements SDK Type Definitions
|
|
@@ -564,4 +577,4 @@ interface FFIDAnnouncementListProps {
|
|
|
564
577
|
*/
|
|
565
578
|
declare function FFIDAnnouncementList({ announcements, isLoading, className, classNames, style, formatDate, emptyMessage, loadingRender, renderItem, maxContentLines, }: FFIDAnnouncementListProps): react_jsx_runtime.JSX.Element;
|
|
566
579
|
|
|
567
|
-
export { type AnnouncementListResponse as A,
|
|
580
|
+
export { type AnnouncementListResponse as A, useFFIDAnnouncements as B, type FFIDAnnouncementBadgeClassNames as C, type FFIDAnnouncementBadgeProps as D, type FFIDAnnouncementListClassNames as E, type FFIDConfig as F, type FFIDAnnouncementListProps as G, type FFIDLoginButtonProps as H, type FFIDOrganizationSwitcherClassNames as I, type FFIDOrganizationSwitcherProps as J, type FFIDSubscriptionBadgeClassNames as K, type ListAnnouncementsOptions as L, type FFIDSubscriptionBadgeProps as M, type FFIDUserMenuClassNames as N, type FFIDUserMenuProps as O, type UseFFIDAnnouncementsOptions as U, type FFIDUser as a, type FFIDOrganization as b, type FFIDError as c, type FFIDSubscriptionContextValue as d, type FFIDAnnouncementsClientConfig as e, type FFIDAnnouncementsApiResponse as f, type FFIDAnnouncementsLogger as g, type Announcement as h, type AnnouncementStatus as i, type AnnouncementType as j, FFIDAnnouncementBadge as k, FFIDAnnouncementList as l, type FFIDAnnouncementsError as m, type FFIDAnnouncementsErrorCode as n, type FFIDAnnouncementsServerResponse as o, type FFIDApiResponse as p, type FFIDContextValue as q, type FFIDLogger as r, FFIDLoginButton as s, type FFIDOAuthTokenResponse as t, FFIDOrganizationSwitcher as u, type FFIDSessionResponse as v, type FFIDSubscription as w, FFIDSubscriptionBadge as x, FFIDUserMenu as y, type UseFFIDAnnouncementsReturn as z };
|
|
@@ -107,6 +107,10 @@ interface FFIDConfig {
|
|
|
107
107
|
onAuthStateChange?: ((user: FFIDUser | null) => void) | undefined;
|
|
108
108
|
/** Callback on authentication error */
|
|
109
109
|
onError?: ((error: FFIDError) => void) | undefined;
|
|
110
|
+
/** Authentication mode: 'cookie' (default) or 'token' (OAuth Bearer) */
|
|
111
|
+
authMode?: 'cookie' | 'token' | undefined;
|
|
112
|
+
/** Client ID for token mode (defaults to serviceCode if not set) */
|
|
113
|
+
clientId?: string | undefined;
|
|
110
114
|
}
|
|
111
115
|
/**
|
|
112
116
|
* FFID context value provided to consumers
|
|
@@ -202,6 +206,15 @@ type FFIDApiResponse<T> = {
|
|
|
202
206
|
data?: undefined;
|
|
203
207
|
error: FFIDError;
|
|
204
208
|
};
|
|
209
|
+
/**
|
|
210
|
+
* OAuth 2.0 token response from FFID token endpoint
|
|
211
|
+
*/
|
|
212
|
+
interface FFIDOAuthTokenResponse {
|
|
213
|
+
access_token: string;
|
|
214
|
+
token_type: 'Bearer';
|
|
215
|
+
expires_in: number;
|
|
216
|
+
refresh_token: string;
|
|
217
|
+
}
|
|
205
218
|
|
|
206
219
|
/**
|
|
207
220
|
* FFID Announcements SDK Type Definitions
|
|
@@ -564,4 +577,4 @@ interface FFIDAnnouncementListProps {
|
|
|
564
577
|
*/
|
|
565
578
|
declare function FFIDAnnouncementList({ announcements, isLoading, className, classNames, style, formatDate, emptyMessage, loadingRender, renderItem, maxContentLines, }: FFIDAnnouncementListProps): react_jsx_runtime.JSX.Element;
|
|
566
579
|
|
|
567
|
-
export { type AnnouncementListResponse as A,
|
|
580
|
+
export { type AnnouncementListResponse as A, useFFIDAnnouncements as B, type FFIDAnnouncementBadgeClassNames as C, type FFIDAnnouncementBadgeProps as D, type FFIDAnnouncementListClassNames as E, type FFIDConfig as F, type FFIDAnnouncementListProps as G, type FFIDLoginButtonProps as H, type FFIDOrganizationSwitcherClassNames as I, type FFIDOrganizationSwitcherProps as J, type FFIDSubscriptionBadgeClassNames as K, type ListAnnouncementsOptions as L, type FFIDSubscriptionBadgeProps as M, type FFIDUserMenuClassNames as N, type FFIDUserMenuProps as O, type UseFFIDAnnouncementsOptions as U, type FFIDUser as a, type FFIDOrganization as b, type FFIDError as c, type FFIDSubscriptionContextValue as d, type FFIDAnnouncementsClientConfig as e, type FFIDAnnouncementsApiResponse as f, type FFIDAnnouncementsLogger as g, type Announcement as h, type AnnouncementStatus as i, type AnnouncementType as j, FFIDAnnouncementBadge as k, FFIDAnnouncementList as l, type FFIDAnnouncementsError as m, type FFIDAnnouncementsErrorCode as n, type FFIDAnnouncementsServerResponse as o, type FFIDApiResponse as p, type FFIDContextValue as q, type FFIDLogger as r, FFIDLoginButton as s, type FFIDOAuthTokenResponse as t, FFIDOrganizationSwitcher as u, type FFIDSessionResponse as v, type FFIDSubscription as w, FFIDSubscriptionBadge as x, FFIDUserMenu as y, type UseFFIDAnnouncementsReturn as z };
|
package/dist/index.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk53CYDXU3_cjs = require('./chunk-53CYDXU3.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
7
7
|
function withFFIDAuth(Component, options = {}) {
|
|
8
8
|
const WrappedComponent = (props) => {
|
|
9
|
-
const { isLoading, isAuthenticated, login } =
|
|
9
|
+
const { isLoading, isAuthenticated, login } = chunk53CYDXU3_cjs.useFFIDContext();
|
|
10
10
|
const hasRedirected = react.useRef(false);
|
|
11
11
|
react.useEffect(() => {
|
|
12
12
|
if (!isLoading && !isAuthenticated && options.redirectToLogin && !hasRedirected.current) {
|
|
@@ -31,58 +31,78 @@ function withFFIDAuth(Component, options = {}) {
|
|
|
31
31
|
|
|
32
32
|
Object.defineProperty(exports, "DEFAULT_API_BASE_URL", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk53CYDXU3_cjs.DEFAULT_API_BASE_URL; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "FFIDAnnouncementBadge", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDAnnouncementBadge; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "FFIDAnnouncementList", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDAnnouncementList; }
|
|
43
43
|
});
|
|
44
44
|
Object.defineProperty(exports, "FFIDLoginButton", {
|
|
45
45
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
46
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDLoginButton; }
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDOrganizationSwitcher; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "FFIDProvider", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDProvider; }
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "FFIDSubscriptionBadge", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDSubscriptionBadge; }
|
|
59
59
|
});
|
|
60
60
|
Object.defineProperty(exports, "FFIDUserMenu", {
|
|
61
61
|
enumerable: true,
|
|
62
|
-
get: function () { return
|
|
62
|
+
get: function () { return chunk53CYDXU3_cjs.FFIDUserMenu; }
|
|
63
63
|
});
|
|
64
64
|
Object.defineProperty(exports, "FFID_ANNOUNCEMENTS_ERROR_CODES", {
|
|
65
65
|
enumerable: true,
|
|
66
|
-
get: function () { return
|
|
66
|
+
get: function () { return chunk53CYDXU3_cjs.FFID_ANNOUNCEMENTS_ERROR_CODES; }
|
|
67
67
|
});
|
|
68
68
|
Object.defineProperty(exports, "createFFIDAnnouncementsClient", {
|
|
69
69
|
enumerable: true,
|
|
70
|
-
get: function () { return
|
|
70
|
+
get: function () { return chunk53CYDXU3_cjs.createFFIDAnnouncementsClient; }
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "createTokenStore", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () { return chunk53CYDXU3_cjs.createTokenStore; }
|
|
75
|
+
});
|
|
76
|
+
Object.defineProperty(exports, "generateCodeChallenge", {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () { return chunk53CYDXU3_cjs.generateCodeChallenge; }
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(exports, "generateCodeVerifier", {
|
|
81
|
+
enumerable: true,
|
|
82
|
+
get: function () { return chunk53CYDXU3_cjs.generateCodeVerifier; }
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, "retrieveCodeVerifier", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () { return chunk53CYDXU3_cjs.retrieveCodeVerifier; }
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(exports, "storeCodeVerifier", {
|
|
89
|
+
enumerable: true,
|
|
90
|
+
get: function () { return chunk53CYDXU3_cjs.storeCodeVerifier; }
|
|
71
91
|
});
|
|
72
92
|
Object.defineProperty(exports, "useFFID", {
|
|
73
93
|
enumerable: true,
|
|
74
|
-
get: function () { return
|
|
94
|
+
get: function () { return chunk53CYDXU3_cjs.useFFID; }
|
|
75
95
|
});
|
|
76
96
|
Object.defineProperty(exports, "useFFIDAnnouncements", {
|
|
77
97
|
enumerable: true,
|
|
78
|
-
get: function () { return
|
|
98
|
+
get: function () { return chunk53CYDXU3_cjs.useFFIDAnnouncements; }
|
|
79
99
|
});
|
|
80
100
|
Object.defineProperty(exports, "useSubscription", {
|
|
81
101
|
enumerable: true,
|
|
82
|
-
get: function () { return
|
|
102
|
+
get: function () { return chunk53CYDXU3_cjs.useSubscription; }
|
|
83
103
|
});
|
|
84
104
|
Object.defineProperty(exports, "withSubscription", {
|
|
85
105
|
enumerable: true,
|
|
86
|
-
get: function () { return
|
|
106
|
+
get: function () { return chunk53CYDXU3_cjs.withSubscription; }
|
|
87
107
|
});
|
|
88
108
|
exports.withFFIDAuth = withFFIDAuth;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ReactNode, ComponentType, FC } from 'react';
|
|
3
|
-
import { F as FFIDConfig, a as FFIDUser, b as FFIDOrganization, c as FFIDError, d as FFIDSubscriptionContextValue, e as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, f as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, g as FFIDAnnouncementsLogger } from './index-
|
|
4
|
-
export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as FFIDAnnouncementBadge, l as FFIDAnnouncementList, m as FFIDAnnouncementsError, n as FFIDAnnouncementsErrorCode, o as FFIDAnnouncementsServerResponse, p as FFIDApiResponse, q as FFIDContextValue, r as FFIDLogger, s as FFIDLoginButton, t as
|
|
3
|
+
import { F as FFIDConfig, a as FFIDUser, b as FFIDOrganization, c as FFIDError, d as FFIDSubscriptionContextValue, e as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, f as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, g as FFIDAnnouncementsLogger } from './index-DKBSoAHg.cjs';
|
|
4
|
+
export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as FFIDAnnouncementBadge, l as FFIDAnnouncementList, m as FFIDAnnouncementsError, n as FFIDAnnouncementsErrorCode, o as FFIDAnnouncementsServerResponse, p as FFIDApiResponse, q as FFIDContextValue, r as FFIDLogger, s as FFIDLoginButton, t as FFIDOAuthTokenResponse, u as FFIDOrganizationSwitcher, v as FFIDSessionResponse, w as FFIDSubscription, x as FFIDSubscriptionBadge, y as FFIDUserMenu, U as UseFFIDAnnouncementsOptions, z as UseFFIDAnnouncementsReturn, B as useFFIDAnnouncements } from './index-DKBSoAHg.cjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* FFID SDK Shared Constants
|
|
@@ -12,6 +12,78 @@ export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as
|
|
|
12
12
|
/** Default FFID API base URL (production) */
|
|
13
13
|
declare const DEFAULT_API_BASE_URL = "https://id.feelflow.co.jp";
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Token Store
|
|
17
|
+
*
|
|
18
|
+
* Manages OAuth 2.0 tokens (access + refresh) with dual-storage support.
|
|
19
|
+
* Falls back to in-memory storage when localStorage is unavailable
|
|
20
|
+
* (e.g., Safari private browsing mode).
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Token data stored by the token store
|
|
24
|
+
*/
|
|
25
|
+
interface TokenData {
|
|
26
|
+
/** OAuth 2.0 access token */
|
|
27
|
+
accessToken: string;
|
|
28
|
+
/** OAuth 2.0 refresh token */
|
|
29
|
+
refreshToken: string;
|
|
30
|
+
/** Expiration timestamp in milliseconds (Unix epoch) */
|
|
31
|
+
expiresAt: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Token store interface for managing OAuth tokens
|
|
35
|
+
*/
|
|
36
|
+
interface TokenStore {
|
|
37
|
+
/** Get stored tokens (null if not stored) */
|
|
38
|
+
getTokens(): TokenData | null;
|
|
39
|
+
/** Store new tokens */
|
|
40
|
+
setTokens(tokens: TokenData): void;
|
|
41
|
+
/** Clear all stored tokens */
|
|
42
|
+
clearTokens(): void;
|
|
43
|
+
/** Check if access token is expired (with 30s buffer) */
|
|
44
|
+
isAccessTokenExpired(): boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a token store with the specified storage type.
|
|
48
|
+
*
|
|
49
|
+
* When storageType is 'localStorage' (default in browser), falls back
|
|
50
|
+
* to memory if localStorage is not available (e.g., Safari private mode).
|
|
51
|
+
*
|
|
52
|
+
* @param storageType - 'localStorage' (default) or 'memory'
|
|
53
|
+
*/
|
|
54
|
+
declare function createTokenStore(storageType?: 'localStorage' | 'memory'): TokenStore;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Generate a random code verifier (43-128 characters, RFC 7636 Section 4.1).
|
|
58
|
+
*
|
|
59
|
+
* Uses crypto.getRandomValues for cryptographic randomness.
|
|
60
|
+
*/
|
|
61
|
+
declare function generateCodeVerifier(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Generate S256 code challenge from a code verifier (RFC 7636 Section 4.2).
|
|
64
|
+
*
|
|
65
|
+
* Computes SHA-256 hash of the verifier, then base64url-encodes the result.
|
|
66
|
+
*
|
|
67
|
+
* @param verifier - The code verifier string
|
|
68
|
+
* @returns base64url-encoded SHA-256 hash
|
|
69
|
+
*/
|
|
70
|
+
declare function generateCodeChallenge(verifier: string): Promise<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Store code verifier in sessionStorage for later retrieval.
|
|
73
|
+
* Uses window.sessionStorage explicitly to ensure browser Web Storage API.
|
|
74
|
+
*
|
|
75
|
+
* @param verifier - The code verifier to store
|
|
76
|
+
*/
|
|
77
|
+
declare function storeCodeVerifier(verifier: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Retrieve and remove the code verifier from sessionStorage.
|
|
80
|
+
* Uses window.sessionStorage explicitly to ensure browser Web Storage API.
|
|
81
|
+
*
|
|
82
|
+
* Returns null if no verifier is stored.
|
|
83
|
+
* Removes the verifier after retrieval (one-time use).
|
|
84
|
+
*/
|
|
85
|
+
declare function retrieveCodeVerifier(): string | null;
|
|
86
|
+
|
|
15
87
|
/**
|
|
16
88
|
* Props for FFIDProvider component
|
|
17
89
|
*/
|
|
@@ -27,8 +99,9 @@ interface FFIDProviderProps extends FFIDConfig {
|
|
|
27
99
|
* - User authentication state
|
|
28
100
|
* - Organization switching
|
|
29
101
|
* - Automatic session refresh
|
|
102
|
+
* - Token mode: automatic code exchange and token refresh
|
|
30
103
|
*/
|
|
31
|
-
declare function FFIDProvider({ children, serviceCode, apiBaseUrl, debug, logger, refreshInterval, onAuthStateChange, onError, }: FFIDProviderProps): react_jsx_runtime.JSX.Element;
|
|
104
|
+
declare function FFIDProvider({ children, serviceCode, apiBaseUrl, debug, logger, refreshInterval, onAuthStateChange, onError, authMode, clientId, }: FFIDProviderProps): react_jsx_runtime.JSX.Element;
|
|
32
105
|
|
|
33
106
|
/**
|
|
34
107
|
* Return type for useFFID hook
|
|
@@ -233,4 +306,4 @@ declare function createFFIDAnnouncementsClient(config?: FFIDAnnouncementsClientC
|
|
|
233
306
|
/** Type of the FFID Announcements client */
|
|
234
307
|
type FFIDAnnouncementsClient = ReturnType<typeof createFFIDAnnouncementsClient>;
|
|
235
308
|
|
|
236
|
-
export { AnnouncementListResponse, DEFAULT_API_BASE_URL, FFIDAnnouncementsApiResponse, type FFIDAnnouncementsClient, FFIDAnnouncementsClientConfig, FFIDAnnouncementsLogger, FFIDConfig, FFIDError, FFIDOrganization, FFIDProvider, type FFIDProviderProps, FFIDSubscriptionContextValue, FFIDUser, FFID_ANNOUNCEMENTS_ERROR_CODES, ListAnnouncementsOptions, type UseFFIDReturn, type WithFFIDAuthOptions, type WithSubscriptionOptions, createFFIDAnnouncementsClient, useFFID, useSubscription, withFFIDAuth, withSubscription };
|
|
309
|
+
export { AnnouncementListResponse, DEFAULT_API_BASE_URL, FFIDAnnouncementsApiResponse, type FFIDAnnouncementsClient, FFIDAnnouncementsClientConfig, FFIDAnnouncementsLogger, FFIDConfig, FFIDError, FFIDOrganization, FFIDProvider, type FFIDProviderProps, FFIDSubscriptionContextValue, FFIDUser, FFID_ANNOUNCEMENTS_ERROR_CODES, ListAnnouncementsOptions, type TokenData, type TokenStore, type UseFFIDReturn, type WithFFIDAuthOptions, type WithSubscriptionOptions, createFFIDAnnouncementsClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, retrieveCodeVerifier, storeCodeVerifier, useFFID, useSubscription, withFFIDAuth, withSubscription };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ReactNode, ComponentType, FC } from 'react';
|
|
3
|
-
import { F as FFIDConfig, a as FFIDUser, b as FFIDOrganization, c as FFIDError, d as FFIDSubscriptionContextValue, e as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, f as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, g as FFIDAnnouncementsLogger } from './index-
|
|
4
|
-
export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as FFIDAnnouncementBadge, l as FFIDAnnouncementList, m as FFIDAnnouncementsError, n as FFIDAnnouncementsErrorCode, o as FFIDAnnouncementsServerResponse, p as FFIDApiResponse, q as FFIDContextValue, r as FFIDLogger, s as FFIDLoginButton, t as
|
|
3
|
+
import { F as FFIDConfig, a as FFIDUser, b as FFIDOrganization, c as FFIDError, d as FFIDSubscriptionContextValue, e as FFIDAnnouncementsClientConfig, L as ListAnnouncementsOptions, f as FFIDAnnouncementsApiResponse, A as AnnouncementListResponse, g as FFIDAnnouncementsLogger } from './index-DKBSoAHg.js';
|
|
4
|
+
export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as FFIDAnnouncementBadge, l as FFIDAnnouncementList, m as FFIDAnnouncementsError, n as FFIDAnnouncementsErrorCode, o as FFIDAnnouncementsServerResponse, p as FFIDApiResponse, q as FFIDContextValue, r as FFIDLogger, s as FFIDLoginButton, t as FFIDOAuthTokenResponse, u as FFIDOrganizationSwitcher, v as FFIDSessionResponse, w as FFIDSubscription, x as FFIDSubscriptionBadge, y as FFIDUserMenu, U as UseFFIDAnnouncementsOptions, z as UseFFIDAnnouncementsReturn, B as useFFIDAnnouncements } from './index-DKBSoAHg.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* FFID SDK Shared Constants
|
|
@@ -12,6 +12,78 @@ export { h as Announcement, i as AnnouncementStatus, j as AnnouncementType, k as
|
|
|
12
12
|
/** Default FFID API base URL (production) */
|
|
13
13
|
declare const DEFAULT_API_BASE_URL = "https://id.feelflow.co.jp";
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Token Store
|
|
17
|
+
*
|
|
18
|
+
* Manages OAuth 2.0 tokens (access + refresh) with dual-storage support.
|
|
19
|
+
* Falls back to in-memory storage when localStorage is unavailable
|
|
20
|
+
* (e.g., Safari private browsing mode).
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Token data stored by the token store
|
|
24
|
+
*/
|
|
25
|
+
interface TokenData {
|
|
26
|
+
/** OAuth 2.0 access token */
|
|
27
|
+
accessToken: string;
|
|
28
|
+
/** OAuth 2.0 refresh token */
|
|
29
|
+
refreshToken: string;
|
|
30
|
+
/** Expiration timestamp in milliseconds (Unix epoch) */
|
|
31
|
+
expiresAt: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Token store interface for managing OAuth tokens
|
|
35
|
+
*/
|
|
36
|
+
interface TokenStore {
|
|
37
|
+
/** Get stored tokens (null if not stored) */
|
|
38
|
+
getTokens(): TokenData | null;
|
|
39
|
+
/** Store new tokens */
|
|
40
|
+
setTokens(tokens: TokenData): void;
|
|
41
|
+
/** Clear all stored tokens */
|
|
42
|
+
clearTokens(): void;
|
|
43
|
+
/** Check if access token is expired (with 30s buffer) */
|
|
44
|
+
isAccessTokenExpired(): boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a token store with the specified storage type.
|
|
48
|
+
*
|
|
49
|
+
* When storageType is 'localStorage' (default in browser), falls back
|
|
50
|
+
* to memory if localStorage is not available (e.g., Safari private mode).
|
|
51
|
+
*
|
|
52
|
+
* @param storageType - 'localStorage' (default) or 'memory'
|
|
53
|
+
*/
|
|
54
|
+
declare function createTokenStore(storageType?: 'localStorage' | 'memory'): TokenStore;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Generate a random code verifier (43-128 characters, RFC 7636 Section 4.1).
|
|
58
|
+
*
|
|
59
|
+
* Uses crypto.getRandomValues for cryptographic randomness.
|
|
60
|
+
*/
|
|
61
|
+
declare function generateCodeVerifier(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Generate S256 code challenge from a code verifier (RFC 7636 Section 4.2).
|
|
64
|
+
*
|
|
65
|
+
* Computes SHA-256 hash of the verifier, then base64url-encodes the result.
|
|
66
|
+
*
|
|
67
|
+
* @param verifier - The code verifier string
|
|
68
|
+
* @returns base64url-encoded SHA-256 hash
|
|
69
|
+
*/
|
|
70
|
+
declare function generateCodeChallenge(verifier: string): Promise<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Store code verifier in sessionStorage for later retrieval.
|
|
73
|
+
* Uses window.sessionStorage explicitly to ensure browser Web Storage API.
|
|
74
|
+
*
|
|
75
|
+
* @param verifier - The code verifier to store
|
|
76
|
+
*/
|
|
77
|
+
declare function storeCodeVerifier(verifier: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Retrieve and remove the code verifier from sessionStorage.
|
|
80
|
+
* Uses window.sessionStorage explicitly to ensure browser Web Storage API.
|
|
81
|
+
*
|
|
82
|
+
* Returns null if no verifier is stored.
|
|
83
|
+
* Removes the verifier after retrieval (one-time use).
|
|
84
|
+
*/
|
|
85
|
+
declare function retrieveCodeVerifier(): string | null;
|
|
86
|
+
|
|
15
87
|
/**
|
|
16
88
|
* Props for FFIDProvider component
|
|
17
89
|
*/
|
|
@@ -27,8 +99,9 @@ interface FFIDProviderProps extends FFIDConfig {
|
|
|
27
99
|
* - User authentication state
|
|
28
100
|
* - Organization switching
|
|
29
101
|
* - Automatic session refresh
|
|
102
|
+
* - Token mode: automatic code exchange and token refresh
|
|
30
103
|
*/
|
|
31
|
-
declare function FFIDProvider({ children, serviceCode, apiBaseUrl, debug, logger, refreshInterval, onAuthStateChange, onError, }: FFIDProviderProps): react_jsx_runtime.JSX.Element;
|
|
104
|
+
declare function FFIDProvider({ children, serviceCode, apiBaseUrl, debug, logger, refreshInterval, onAuthStateChange, onError, authMode, clientId, }: FFIDProviderProps): react_jsx_runtime.JSX.Element;
|
|
32
105
|
|
|
33
106
|
/**
|
|
34
107
|
* Return type for useFFID hook
|
|
@@ -233,4 +306,4 @@ declare function createFFIDAnnouncementsClient(config?: FFIDAnnouncementsClientC
|
|
|
233
306
|
/** Type of the FFID Announcements client */
|
|
234
307
|
type FFIDAnnouncementsClient = ReturnType<typeof createFFIDAnnouncementsClient>;
|
|
235
308
|
|
|
236
|
-
export { AnnouncementListResponse, DEFAULT_API_BASE_URL, FFIDAnnouncementsApiResponse, type FFIDAnnouncementsClient, FFIDAnnouncementsClientConfig, FFIDAnnouncementsLogger, FFIDConfig, FFIDError, FFIDOrganization, FFIDProvider, type FFIDProviderProps, FFIDSubscriptionContextValue, FFIDUser, FFID_ANNOUNCEMENTS_ERROR_CODES, ListAnnouncementsOptions, type UseFFIDReturn, type WithFFIDAuthOptions, type WithSubscriptionOptions, createFFIDAnnouncementsClient, useFFID, useSubscription, withFFIDAuth, withSubscription };
|
|
309
|
+
export { AnnouncementListResponse, DEFAULT_API_BASE_URL, FFIDAnnouncementsApiResponse, type FFIDAnnouncementsClient, FFIDAnnouncementsClientConfig, FFIDAnnouncementsLogger, FFIDConfig, FFIDError, FFIDOrganization, FFIDProvider, type FFIDProviderProps, FFIDSubscriptionContextValue, FFIDUser, FFID_ANNOUNCEMENTS_ERROR_CODES, ListAnnouncementsOptions, type TokenData, type TokenStore, type UseFFIDReturn, type WithFFIDAuthOptions, type WithSubscriptionOptions, createFFIDAnnouncementsClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, retrieveCodeVerifier, storeCodeVerifier, useFFID, useSubscription, withFFIDAuth, withSubscription };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useFFIDContext } from './chunk-
|
|
2
|
-
export { DEFAULT_API_BASE_URL, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, createFFIDAnnouncementsClient, useFFID, useFFIDAnnouncements, useSubscription, withSubscription } from './chunk-
|
|
1
|
+
import { useFFIDContext } from './chunk-GAAFEPIY.js';
|
|
2
|
+
export { DEFAULT_API_BASE_URL, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, createFFIDAnnouncementsClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, retrieveCodeVerifier, storeCodeVerifier, useFFID, useFFIDAnnouncements, useSubscription, withSubscription } from './chunk-GAAFEPIY.js';
|
|
3
3
|
import { useRef, useEffect } from 'react';
|
|
4
4
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
|