@frontegg/ionic-capacitor 2.0.11-alpha.15110508160 → 2.0.11-alpha.22584795706
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/FronteggIonicCapacitor.podspec +1 -1
- package/android/build.gradle +12 -5
- package/android/settings.gradle +9 -0
- package/android/src/main/java/com/frontegg/ionic/FronteggNativePlugin.java +74 -21
- package/dist/esm/definitions.d.ts +18 -1
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/frontegg.service.d.ts +1 -1
- package/dist/esm/frontegg.service.js +2 -2
- package/dist/esm/frontegg.service.js.map +1 -1
- package/dist/esm/web.d.ts +3 -1
- package/dist/esm/web.js +2 -2
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +4 -4
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +4 -4
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/FronteggNativePlugin.swift +27 -9
- package/package.json +5 -4
|
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
|
|
|
13
13
|
s.source_files = 'ios/Plugin/**/*.{swift,h,m,c,cc,mm,cpp}'
|
|
14
14
|
s.ios.deployment_target = '14.0'
|
|
15
15
|
s.dependency 'Capacitor'
|
|
16
|
-
s.dependency "FronteggSwift", "1.2.
|
|
16
|
+
s.dependency "FronteggSwift", "1.2.76"
|
|
17
17
|
s.swift_version = '5.1'
|
|
18
18
|
s.pod_target_xcconfig = {
|
|
19
19
|
'CODE_SIGNING_ALLOWED' => 'YES'
|
package/android/build.gradle
CHANGED
|
@@ -11,7 +11,7 @@ buildscript {
|
|
|
11
11
|
mavenCentral()
|
|
12
12
|
}
|
|
13
13
|
dependencies {
|
|
14
|
-
classpath 'com.android.tools.build:gradle:8.
|
|
14
|
+
classpath 'com.android.tools.build:gradle:8.6.0'
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -19,13 +19,20 @@ apply plugin: 'com.android.library'
|
|
|
19
19
|
|
|
20
20
|
android {
|
|
21
21
|
namespace "com.frontegg.ionic"
|
|
22
|
-
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion :
|
|
22
|
+
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 34
|
|
23
23
|
defaultConfig {
|
|
24
24
|
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 26
|
|
25
|
-
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion :
|
|
25
|
+
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 34
|
|
26
26
|
versionCode 1
|
|
27
27
|
versionName "1.0"
|
|
28
28
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
manifestPlaceholders = [
|
|
32
|
+
package_name : "com.frontegg.demo",
|
|
33
|
+
frontegg_domain : "auth.davidantoon.me",
|
|
34
|
+
frontegg_client_id: "b6adfe4c-d695-4c04-b95f-3ec9fd0c6cca"
|
|
35
|
+
]
|
|
29
36
|
}
|
|
30
37
|
buildTypes {
|
|
31
38
|
release {
|
|
@@ -52,10 +59,10 @@ dependencies {
|
|
|
52
59
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
53
60
|
implementation project(':capacitor-android')
|
|
54
61
|
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
|
|
55
|
-
implementation "androidx.browser:browser:1.
|
|
62
|
+
implementation "androidx.browser:browser:1.8.0"
|
|
56
63
|
implementation 'io.reactivex.rxjava3:rxkotlin:3.0.1'
|
|
57
64
|
implementation 'com.google.code.gson:gson:2.10'
|
|
58
|
-
implementation 'com.frontegg.sdk:android:1.
|
|
65
|
+
implementation 'com.frontegg.sdk:android:1.3.18'
|
|
59
66
|
|
|
60
67
|
testImplementation "junit:junit:$junitVersion"
|
|
61
68
|
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Resolve path: repo root (../node_modules) or plugin inside app's node_modules (../../../node_modules)
|
|
2
|
+
def capacitorAndroidDir = new File(settingsDir, '../node_modules/@capacitor/android/capacitor')
|
|
3
|
+
if (!capacitorAndroidDir.exists()) {
|
|
4
|
+
capacitorAndroidDir = new File(settingsDir, '../../../node_modules/@capacitor/android/capacitor')
|
|
5
|
+
}
|
|
6
|
+
if (capacitorAndroidDir.exists()) {
|
|
7
|
+
include ':capacitor-android'
|
|
8
|
+
project(':capacitor-android').projectDir = capacitorAndroidDir
|
|
9
|
+
}
|
|
@@ -5,7 +5,10 @@ import android.os.Handler;
|
|
|
5
5
|
import android.os.Looper;
|
|
6
6
|
import android.util.Log;
|
|
7
7
|
|
|
8
|
+
import kotlin.Unit;
|
|
9
|
+
|
|
8
10
|
import com.frontegg.android.FronteggApp;
|
|
11
|
+
import com.frontegg.android.FronteggAppKt;
|
|
9
12
|
import com.frontegg.android.FronteggAuth;
|
|
10
13
|
import com.frontegg.android.models.User;
|
|
11
14
|
import com.frontegg.android.regions.RegionConfig;
|
|
@@ -43,11 +46,21 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
43
46
|
Log.d("FronteggNative", "Loading FronteggNativePlugin");
|
|
44
47
|
// for regions initialization
|
|
45
48
|
List<RegionConfig> regions = new ArrayList<>();
|
|
46
|
-
boolean useAssetLinks =
|
|
47
|
-
boolean useChromeCustomTabs =
|
|
49
|
+
boolean useAssetLinks = false;
|
|
50
|
+
boolean useChromeCustomTabs = false;
|
|
48
51
|
JSONArray array;
|
|
49
52
|
try {
|
|
50
|
-
|
|
53
|
+
JSONObject configJson = this.getConfig().getConfigJSON();
|
|
54
|
+
|
|
55
|
+
useAssetLinks = configJson.has("useAssetLinks")
|
|
56
|
+
? configJson.optBoolean("useAssetLinks", false)
|
|
57
|
+
: false;
|
|
58
|
+
|
|
59
|
+
useChromeCustomTabs = configJson.has("useChromeCustomTabs")
|
|
60
|
+
? configJson.optBoolean("useChromeCustomTabs", false)
|
|
61
|
+
: false;
|
|
62
|
+
|
|
63
|
+
array = configJson.optJSONArray("regions");
|
|
51
64
|
|
|
52
65
|
if (array == null) {
|
|
53
66
|
array = new JSONArray();
|
|
@@ -70,6 +83,18 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
70
83
|
throw new RuntimeException(e);
|
|
71
84
|
}
|
|
72
85
|
|
|
86
|
+
Class<?> mainActivityClass = resolveMainActivityClass();
|
|
87
|
+
String deepLinkScheme;
|
|
88
|
+
if (useAssetLinks) {
|
|
89
|
+
deepLinkScheme = null;
|
|
90
|
+
} else {
|
|
91
|
+
deepLinkScheme = this.getConfig().getString("deepLinkScheme");
|
|
92
|
+
if (deepLinkScheme == null || deepLinkScheme.isEmpty()) {
|
|
93
|
+
deepLinkScheme = this.getContext().getPackageName();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
boolean useDiskCacheWebView = this.getConfig().getBoolean("useDiskCacheWebView", false);
|
|
97
|
+
|
|
73
98
|
if (regions.isEmpty()) {
|
|
74
99
|
PluginConfig config = this.getConfig();
|
|
75
100
|
String baseUrl = config.getString("baseUrl");
|
|
@@ -82,13 +107,18 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
82
107
|
if (baseUrl.startsWith("https://")) {
|
|
83
108
|
baseUrl = baseUrl.substring(baseUrl.indexOf("://") + 3);
|
|
84
109
|
}
|
|
85
|
-
FronteggApp.Companion.init(
|
|
110
|
+
FronteggApp.Companion.init$android_release(
|
|
86
111
|
baseUrl,
|
|
87
112
|
clientId,
|
|
88
113
|
this.getContext(),
|
|
89
114
|
applicationId,
|
|
90
115
|
useAssetLinks,
|
|
91
116
|
useChromeCustomTabs,
|
|
117
|
+
mainActivityClass,
|
|
118
|
+
deepLinkScheme,
|
|
119
|
+
useDiskCacheWebView,
|
|
120
|
+
false,
|
|
121
|
+
false,
|
|
92
122
|
null
|
|
93
123
|
);
|
|
94
124
|
} else {
|
|
@@ -97,11 +127,15 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
97
127
|
this.getContext(),
|
|
98
128
|
useAssetLinks,
|
|
99
129
|
useChromeCustomTabs,
|
|
130
|
+
mainActivityClass,
|
|
131
|
+
useDiskCacheWebView,
|
|
132
|
+
false,
|
|
133
|
+
false,
|
|
100
134
|
null
|
|
101
135
|
);
|
|
102
136
|
}
|
|
103
137
|
|
|
104
|
-
FronteggAuth auth =
|
|
138
|
+
FronteggAuth auth = FronteggAppKt.getFronteggAuth(this.getContext());
|
|
105
139
|
|
|
106
140
|
if (this.disposable != null) {
|
|
107
141
|
this.disposable.dispose();
|
|
@@ -113,7 +147,8 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
113
147
|
auth.isAuthenticated().getObservable(),
|
|
114
148
|
auth.isLoading().getObservable(),
|
|
115
149
|
auth.getInitializing().getObservable(),
|
|
116
|
-
auth.getShowLoader().getObservable()
|
|
150
|
+
auth.getShowLoader().getObservable(),
|
|
151
|
+
auth.getRefreshingToken().getObservable()
|
|
117
152
|
).subscribe(nullableObject -> {
|
|
118
153
|
debouncer.debounce(this::sendEvent);
|
|
119
154
|
});
|
|
@@ -121,20 +156,34 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
121
156
|
sendEvent();
|
|
122
157
|
}
|
|
123
158
|
|
|
159
|
+
private Class<?> resolveMainActivityClass() {
|
|
160
|
+
String className = this.getConfig().getString("mainActivityClass");
|
|
161
|
+
if (className == null || className.isEmpty()) {
|
|
162
|
+
className = this.getContext().getPackageName() + ".MainActivity";
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
return Class.forName(className);
|
|
166
|
+
} catch (ClassNotFoundException e) {
|
|
167
|
+
Log.w("FronteggNative", "MainActivity class not found: " + className + ", using null");
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
124
172
|
private void sendEvent() {
|
|
125
173
|
JSObject data = getData();
|
|
126
174
|
notifyListeners("onFronteggAuthEvent", data);
|
|
127
175
|
}
|
|
128
176
|
|
|
129
177
|
private JSObject getData() {
|
|
130
|
-
FronteggAuth auth =
|
|
178
|
+
FronteggAuth auth = FronteggAppKt.getFronteggAuth(this.getContext());
|
|
131
179
|
String accessToken = auth.getAccessToken().getValue();
|
|
132
180
|
String refreshToken = auth.getRefreshToken().getValue();
|
|
133
181
|
User user = auth.getUser().getValue();
|
|
134
182
|
boolean isAuthenticated = auth.isAuthenticated().getValue();
|
|
135
|
-
boolean isLoading = auth.isLoading().getValue();
|
|
136
|
-
boolean initializing = auth.getInitializing().getValue();
|
|
137
183
|
boolean showLoader = auth.getShowLoader().getValue();
|
|
184
|
+
boolean isLoading = showLoader;
|
|
185
|
+
boolean initializing = auth.getInitializing().getValue();
|
|
186
|
+
boolean refreshingToken = auth.getRefreshingToken().getValue();
|
|
138
187
|
RegionConfig selectedRegion = auth.getSelectedRegion();
|
|
139
188
|
|
|
140
189
|
JSObject data = new JSObject();
|
|
@@ -148,6 +197,7 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
148
197
|
data.put("isLoading", isLoading);
|
|
149
198
|
data.put("initializing", initializing);
|
|
150
199
|
data.put("showLoader", showLoader);
|
|
200
|
+
data.put("refreshingToken", refreshingToken);
|
|
151
201
|
data.put("selectedRegion", Parser.regionToJSONObject(selectedRegion));
|
|
152
202
|
|
|
153
203
|
return data;
|
|
@@ -156,8 +206,11 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
156
206
|
|
|
157
207
|
@PluginMethod
|
|
158
208
|
public void login(PluginCall call) {
|
|
159
|
-
|
|
160
|
-
|
|
209
|
+
String loginHint = call.getString("loginHint");
|
|
210
|
+
FronteggAppKt.getFronteggAuth(this.getContext()).login(this.getActivity(), loginHint != null ? loginHint : "", null, (Exception e) -> {
|
|
211
|
+
call.resolve();
|
|
212
|
+
return Unit.INSTANCE;
|
|
213
|
+
});
|
|
161
214
|
}
|
|
162
215
|
|
|
163
216
|
@PluginMethod
|
|
@@ -169,15 +222,15 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
169
222
|
call.reject("No type or data provided");
|
|
170
223
|
return;
|
|
171
224
|
}
|
|
172
|
-
|
|
225
|
+
FronteggAppKt.getFronteggAuth(this.getContext()).directLoginAction(this.getActivity(), type, data, (Exception e) -> {
|
|
173
226
|
call.resolve();
|
|
174
|
-
return
|
|
227
|
+
return Unit.INSTANCE;
|
|
175
228
|
});
|
|
176
229
|
}
|
|
177
230
|
|
|
178
231
|
@PluginMethod
|
|
179
232
|
public void logout(PluginCall call) {
|
|
180
|
-
|
|
233
|
+
FronteggAppKt.getFronteggAuth(this.getContext()).logout(() -> {
|
|
181
234
|
call.resolve();
|
|
182
235
|
return null;
|
|
183
236
|
});
|
|
@@ -190,7 +243,7 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
190
243
|
call.reject("No tenantId provided");
|
|
191
244
|
return;
|
|
192
245
|
}
|
|
193
|
-
|
|
246
|
+
FronteggAppKt.getFronteggAuth(this.getContext()).switchTenant(tenantId, (success) -> {
|
|
194
247
|
JSObject result = new JSObject();
|
|
195
248
|
result.put("success", success);
|
|
196
249
|
call.resolve((JSObject) result);
|
|
@@ -208,7 +261,7 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
208
261
|
}
|
|
209
262
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
210
263
|
executor.submit(() -> {
|
|
211
|
-
FronteggApp.Companion.getInstance().initWithRegion(regionKey);
|
|
264
|
+
FronteggApp.Companion.getInstance$android_release().initWithRegion(regionKey);
|
|
212
265
|
Handler handler = new Handler(Looper.getMainLooper());
|
|
213
266
|
handler.post(call::resolve);
|
|
214
267
|
});
|
|
@@ -220,7 +273,7 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
220
273
|
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
221
274
|
executor.submit(() -> {
|
|
222
275
|
Handler handler = new Handler(Looper.getMainLooper());
|
|
223
|
-
FronteggAuth fronteggAuth =
|
|
276
|
+
FronteggAuth fronteggAuth = FronteggAppKt.getFronteggAuth(this.getContext());
|
|
224
277
|
if (!fronteggAuth.refreshTokenIfNeeded()) {
|
|
225
278
|
fronteggAuth.logout(() -> {
|
|
226
279
|
handler.post(call::resolve);
|
|
@@ -242,12 +295,12 @@ public class FronteggNativePlugin extends Plugin {
|
|
|
242
295
|
@PluginMethod
|
|
243
296
|
public void getConstants(PluginCall call) {
|
|
244
297
|
|
|
245
|
-
String baseUrl =
|
|
246
|
-
String clientId =
|
|
247
|
-
String applicationId =
|
|
298
|
+
String baseUrl = FronteggAppKt.getFronteggAuth(this.getContext()).getBaseUrl();
|
|
299
|
+
String clientId = FronteggAppKt.getFronteggAuth(this.getContext()).getClientId();
|
|
300
|
+
String applicationId = FronteggAppKt.getFronteggAuth(this.getContext()).getApplicationId();
|
|
248
301
|
String packageName = getContext().getPackageName();
|
|
249
302
|
|
|
250
|
-
List<RegionConfig> regionsData =
|
|
303
|
+
List<RegionConfig> regionsData = FronteggAppKt.getFronteggAuth(this.getContext()).getRegions();
|
|
251
304
|
|
|
252
305
|
JSObject resultMap = new JSObject();
|
|
253
306
|
resultMap.put("baseUrl", baseUrl);
|
|
@@ -128,7 +128,9 @@ export interface FronteggNativePlugin {
|
|
|
128
128
|
* Initiates the login process.
|
|
129
129
|
* @returns A promise that resolves when the login process is completed.
|
|
130
130
|
*/
|
|
131
|
-
login(
|
|
131
|
+
login(payload: {
|
|
132
|
+
loginHint?: string;
|
|
133
|
+
}): Promise<void>;
|
|
132
134
|
/**
|
|
133
135
|
* Used to log in with a social login provider directly without visiting the login page.
|
|
134
136
|
* @param payload - The payload containing the details for the direct login action.
|
|
@@ -254,6 +256,21 @@ declare type FronteggNativeOptions = (FronteggNativeStandardOptions | FronteggNa
|
|
|
254
256
|
* @default true
|
|
255
257
|
*/
|
|
256
258
|
useChromeCustomTabs?: boolean;
|
|
259
|
+
/**
|
|
260
|
+
* Android only. Full class name of the MainActivity for deep links (e.g. "com.example.app.MainActivity").
|
|
261
|
+
* If not set, defaults to {packageName}.MainActivity.
|
|
262
|
+
*/
|
|
263
|
+
mainActivityClass?: string;
|
|
264
|
+
/**
|
|
265
|
+
* Android only. Custom deep link scheme for OAuth callback (e.g. "myapp").
|
|
266
|
+
* If not set, asset links or default scheme is used.
|
|
267
|
+
*/
|
|
268
|
+
deepLinkScheme?: string;
|
|
269
|
+
/**
|
|
270
|
+
* Android only. Enable WebView disk cache.
|
|
271
|
+
* @default false
|
|
272
|
+
*/
|
|
273
|
+
useDiskCacheWebView?: boolean;
|
|
257
274
|
};
|
|
258
275
|
export interface FronteggServiceOptions {
|
|
259
276
|
logLevel: LogLevel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { ListenerCallback, PluginListenerHandle } from '@capacitor/core';\nimport type { ITenantsResponse, IUserProfile } from '@frontegg/rest-api';\n\nimport type { LogLevel } from './logger';\n\nexport type User = IUserProfile & {\n tenants: ITenantsResponse[];\n activeTenant: ITenantsResponse;\n};\n\n/**\n * Represents the state of the Frontegg authentication.\n */\nexport interface FronteggState {\n /**\n * The access token used for authenticating API requests.\n * This token is typically a JWT and should be refreshed periodically before it expires.\n * It is `null` when the user is not authenticated.\n */\n accessToken: string | null;\n\n /**\n * The refresh token used to obtain a new access token.\n * This token is used when the access token has expired and a new token is required.\n * It is `null` when the user is not authenticated.\n */\n refreshToken: string | null;\n\n /**\n * Indicates whether the user is currently authenticated.\n * It is `true` if the user has successfully logged in and holds a valid access token; otherwise, `false`.\n */\n isAuthenticated: boolean;\n\n /**\n * Represents the current authenticated user.\n * It is an object containing user details if the user is authenticated; otherwise, `null`.\n */\n user: User | null;\n\n /**\n * Controls whether the loader or spinner should be displayed.\n * This is `true` when the application is loading or performing an action that requires user feedback.\n * @deprecated use isLoading instead\n */\n showLoader: boolean;\n\n /**\n * Controls whether the loader or spinner should be displayed.\n * This is `true` when the application is loading or performing an action that requires user feedback.\n */\n isLoading: boolean;\n\n /**\n * The selected region configuration.\n * This is typically used in multi-regional setups where different regions have different configurations.\n * It is `null` if no region is selected or if the application is not configured for multiple regions.\n */\n selectedRegion: string | null;\n\n /**\n * Indicates whether a token refresh operation is currently in progress.\n * This is `true` when the refresh token is being used to obtain a new access token.\n */\n refreshingToken: boolean;\n\n /**\n * Indicates whether the application is in the initialization phase.\n * This is `true` when the application is initializing, such as during the initial load or when setting up the authentication state.\n */\n initializing: boolean;\n}\n\nexport type SubscribeFunc<T, K extends keyof T> = (value: T[K]) => void;\nexport type SubscribeMap<T> = {\n [K in keyof T]: Set<SubscribeFunc<T, K>>;\n};\n\n/**\n * Represents the constant configuration values used by the Frontegg authentication module.\n */\nexport interface FronteggConstants {\n /**\n * The base URL of the Frontegg API.\n * This is the primary endpoint for all API requests.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests.\n * This is a unique identifier for the client application.\n */\n clientId: string;\n\n /**\n * The application ID associated with the Frontegg setup.\n * It may be `null` if the application ID is not required.\n */\n applicationId: string | null;\n\n /**\n * The bundle ID of the application.\n * This is typically used to uniquely identify the application in a multi-app environment.\n */\n bundleId: string;\n\n /**\n * Indicates whether the application is configured for regional deployment.\n * This is `true` if the application supports multiple regions, otherwise `false`.\n */\n isRegional: boolean;\n\n /**\n * The data associated with each region.\n * This is an optional array containing configuration details for each region, including the region key, base URL, and client ID.\n * It is present only if `isRegional` is `true`.\n */\n regionData?: { key: string; baseUrl: string; clientId: string }[];\n}\n\n/**\n * Represents the Frontegg Native Plugin interface that provides methods for interacting with the Frontegg authentication system.\n */\nexport interface FronteggNativePlugin {\n /**\n * Adds an event listener for the specified event name.\n * @param eventName - The name of the event to listen for.\n * @param listenerFunc - The callback function that will be called when the event is triggered.\n * @returns A promise that resolves to a PluginListenerHandle, which can be used to manage the listener.\n */\n addListener(\n eventName: string,\n listenerFunc: ListenerCallback,\n ): Promise<PluginListenerHandle> & PluginListenerHandle;\n\n /**\n * Retrieves the constant configuration values used by the Frontegg authentication module.\n * @returns A promise that resolves to an object containing the FronteggConstants.\n */\n getConstants(): Promise<FronteggConstants>;\n\n /**\n * Retrieves the current authentication state.\n * @returns A promise that resolves to an object containing the current FronteggState.\n */\n getAuthState(): Promise<FronteggState>;\n\n /**\n * Initiates the login process.\n * @returns A promise that resolves when the login process is completed.\n */\n login(): Promise<void>;\n\n /**\n * Used to log in with a social login provider directly without visiting the login page.\n * @param payload - The payload containing the details for the direct login action.\n * @param payload.type - The direct login type (e.g., direct, social-login, custom-social-login).\n * @param payload.data - The direct login data (e.g., SAML URL request, provider name, provider entity ID).\n * @param payload.ephemeralSession - If true, the session will be ephemeral and will not be saved in the browser.\n * @returns A promise that resolves when the direct login action is completed.\n */\n directLoginAction(payload: {\n type: string;\n data: string;\n ephemeralSession: boolean;\n }): Promise<boolean>;\n\n /**\n * Logs out the current user.\n * This method does not return a promise, and the logout process is performed asynchronously.\n */\n logout(): void;\n\n /**\n * Switches the current tenant in the application.\n * @param payload - The payload containing the tenant ID to switch to.\n * @returns A promise that resolves when the tenant switch is completed.\n */\n switchTenant(payload: { tenantId: string }): Promise<void>;\n\n /**\n * Initializes the plugin with the specified region.\n * This method is used to set up the plugin for multi-region support.\n * For more information, see the documentation for iOS and Android multi-region support.\n * @param payload - The payload containing the region key to initialize.\n * @returns A promise that resolves when the initialization with the region is completed.\n */\n initWithRegion(payload: { regionKey: string }): Promise<void>;\n\n /**\n * Refreshes the authentication token.\n * @returns A promise that resolves when the token refresh is completed.\n */\n refreshToken(): Promise<void>;\n}\n\n/**\n * Represents the configuration for a specific region.\n * This is used in multi-regional setups where different regions have different configurations.\n */\nexport type RegionConfig = {\n /**\n * The unique key identifying the region.\n */\n key: string;\n\n /**\n * The base URL for the API endpoint in this region.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests in this region.\n */\n clientId: string;\n\n /**\n * The application ID associated with this region.\n * This is optional and may be undefined.\n */\n applicationId?: string;\n};\n\n/**\n * Represents the standard options for initializing the Frontegg Native Plugin.\n */\ntype FronteggNativeStandardOptions = {\n /**\n * The base URL of the Frontegg API.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests.\n */\n clientId: string;\n\n /**\n * The application ID associated with the Frontegg setup.\n * This is optional and may be undefined.\n */\n applicationId?: string;\n};\n\ntype FronteggNativeRegionOptions = {\n /**\n * This is an array of regions to be used as frontegg app.\n *\n * @since 1.0.0\n * @example [{key: \"us\", baseUrl: \"https://us-api.frontegg.com\", clientId: \"us-client-id\"}]\n */\n regions: RegionConfig[];\n};\ntype FronteggNativeOptions = (\n | FronteggNativeStandardOptions\n | FronteggNativeRegionOptions\n) & {\n /**\n * Weather to handle login with social login in external browser.\n * If set to false, the plugin will navigate to the social login page with application webview.\n *\n * NOTE: some of the social login providers prevent login from embedded webview.\n *\n * @default true\n */\n handleLoginWithSocialLogin?: boolean;\n /**\n * Weather to handle login with SSO in external browser.\n * If set to false, the plugin will navigate to the sso page with application webview.\n *\n * @default false\n */\n handleLoginWithSSO?: boolean;\n /**\n * Weather to use the assetlinks to for oauth/callback, this is the default behavior.\n * disabling this will cause the plugin to use custom url scheme for oauth/callback.\n *\n * NOTE: custom url scheme require user interaction to return to the app.\n * @default true\n */\n useAssetLinks?: boolean;\n\n /**\n * Weather to To enable social login via Chrome Custom Tabs, set the useChromeCustomTabs flag to true.\n * By default, the SDK uses the Chrome browser for social login.\n *\n * NOTE: custom url scheme require user interaction to return to the app.\n * @default true\n */\n useChromeCustomTabs?: boolean;\n};\n\nexport interface FronteggServiceOptions {\n logLevel: LogLevel;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\ndeclare module '@capacitor/cli' {\n export interface PluginsConfig {\n /**\n * You can configure the way the push notifications are displayed when the app is in foreground.\n */\n FronteggNative?: FronteggNativeOptions;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["import type { ListenerCallback, PluginListenerHandle } from '@capacitor/core';\nimport type { ITenantsResponse, IUserProfile } from '@frontegg/rest-api';\n\nimport type { LogLevel } from './logger';\n\nexport type User = IUserProfile & {\n tenants: ITenantsResponse[];\n activeTenant: ITenantsResponse;\n};\n\n/**\n * Represents the state of the Frontegg authentication.\n */\nexport interface FronteggState {\n /**\n * The access token used for authenticating API requests.\n * This token is typically a JWT and should be refreshed periodically before it expires.\n * It is `null` when the user is not authenticated.\n */\n accessToken: string | null;\n\n /**\n * The refresh token used to obtain a new access token.\n * This token is used when the access token has expired and a new token is required.\n * It is `null` when the user is not authenticated.\n */\n refreshToken: string | null;\n\n /**\n * Indicates whether the user is currently authenticated.\n * It is `true` if the user has successfully logged in and holds a valid access token; otherwise, `false`.\n */\n isAuthenticated: boolean;\n\n /**\n * Represents the current authenticated user.\n * It is an object containing user details if the user is authenticated; otherwise, `null`.\n */\n user: User | null;\n\n /**\n * Controls whether the loader or spinner should be displayed.\n * This is `true` when the application is loading or performing an action that requires user feedback.\n * @deprecated use isLoading instead\n */\n showLoader: boolean;\n\n /**\n * Controls whether the loader or spinner should be displayed.\n * This is `true` when the application is loading or performing an action that requires user feedback.\n */\n isLoading: boolean;\n\n /**\n * The selected region configuration.\n * This is typically used in multi-regional setups where different regions have different configurations.\n * It is `null` if no region is selected or if the application is not configured for multiple regions.\n */\n selectedRegion: string | null;\n\n /**\n * Indicates whether a token refresh operation is currently in progress.\n * This is `true` when the refresh token is being used to obtain a new access token.\n */\n refreshingToken: boolean;\n\n /**\n * Indicates whether the application is in the initialization phase.\n * This is `true` when the application is initializing, such as during the initial load or when setting up the authentication state.\n */\n initializing: boolean;\n}\n\nexport type SubscribeFunc<T, K extends keyof T> = (value: T[K]) => void;\nexport type SubscribeMap<T> = {\n [K in keyof T]: Set<SubscribeFunc<T, K>>;\n};\n\n/**\n * Represents the constant configuration values used by the Frontegg authentication module.\n */\nexport interface FronteggConstants {\n /**\n * The base URL of the Frontegg API.\n * This is the primary endpoint for all API requests.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests.\n * This is a unique identifier for the client application.\n */\n clientId: string;\n\n /**\n * The application ID associated with the Frontegg setup.\n * It may be `null` if the application ID is not required.\n */\n applicationId: string | null;\n\n /**\n * The bundle ID of the application.\n * This is typically used to uniquely identify the application in a multi-app environment.\n */\n bundleId: string;\n\n /**\n * Indicates whether the application is configured for regional deployment.\n * This is `true` if the application supports multiple regions, otherwise `false`.\n */\n isRegional: boolean;\n\n /**\n * The data associated with each region.\n * This is an optional array containing configuration details for each region, including the region key, base URL, and client ID.\n * It is present only if `isRegional` is `true`.\n */\n regionData?: { key: string; baseUrl: string; clientId: string }[];\n}\n\n/**\n * Represents the Frontegg Native Plugin interface that provides methods for interacting with the Frontegg authentication system.\n */\nexport interface FronteggNativePlugin {\n /**\n * Adds an event listener for the specified event name.\n * @param eventName - The name of the event to listen for.\n * @param listenerFunc - The callback function that will be called when the event is triggered.\n * @returns A promise that resolves to a PluginListenerHandle, which can be used to manage the listener.\n */\n addListener(\n eventName: string,\n listenerFunc: ListenerCallback,\n ): Promise<PluginListenerHandle> & PluginListenerHandle;\n\n /**\n * Retrieves the constant configuration values used by the Frontegg authentication module.\n * @returns A promise that resolves to an object containing the FronteggConstants.\n */\n getConstants(): Promise<FronteggConstants>;\n\n /**\n * Retrieves the current authentication state.\n * @returns A promise that resolves to an object containing the current FronteggState.\n */\n getAuthState(): Promise<FronteggState>;\n\n /**\n * Initiates the login process.\n * @returns A promise that resolves when the login process is completed.\n */\n login(payload: { loginHint?: string }): Promise<void>;\n\n /**\n * Used to log in with a social login provider directly without visiting the login page.\n * @param payload - The payload containing the details for the direct login action.\n * @param payload.type - The direct login type (e.g., direct, social-login, custom-social-login).\n * @param payload.data - The direct login data (e.g., SAML URL request, provider name, provider entity ID).\n * @param payload.ephemeralSession - If true, the session will be ephemeral and will not be saved in the browser.\n * @returns A promise that resolves when the direct login action is completed.\n */\n directLoginAction(payload: {\n type: string;\n data: string;\n ephemeralSession: boolean;\n }): Promise<boolean>;\n\n /**\n * Logs out the current user.\n * This method does not return a promise, and the logout process is performed asynchronously.\n */\n logout(): void;\n\n /**\n * Switches the current tenant in the application.\n * @param payload - The payload containing the tenant ID to switch to.\n * @returns A promise that resolves when the tenant switch is completed.\n */\n switchTenant(payload: { tenantId: string }): Promise<void>;\n\n /**\n * Initializes the plugin with the specified region.\n * This method is used to set up the plugin for multi-region support.\n * For more information, see the documentation for iOS and Android multi-region support.\n * @param payload - The payload containing the region key to initialize.\n * @returns A promise that resolves when the initialization with the region is completed.\n */\n initWithRegion(payload: { regionKey: string }): Promise<void>;\n\n /**\n * Refreshes the authentication token.\n * @returns A promise that resolves when the token refresh is completed.\n */\n refreshToken(): Promise<void>;\n}\n\n/**\n * Represents the configuration for a specific region.\n * This is used in multi-regional setups where different regions have different configurations.\n */\nexport type RegionConfig = {\n /**\n * The unique key identifying the region.\n */\n key: string;\n\n /**\n * The base URL for the API endpoint in this region.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests in this region.\n */\n clientId: string;\n\n /**\n * The application ID associated with this region.\n * This is optional and may be undefined.\n */\n applicationId?: string;\n};\n\n/**\n * Represents the standard options for initializing the Frontegg Native Plugin.\n */\ntype FronteggNativeStandardOptions = {\n /**\n * The base URL of the Frontegg API.\n */\n baseUrl: string;\n\n /**\n * The client ID used for authenticating API requests.\n */\n clientId: string;\n\n /**\n * The application ID associated with the Frontegg setup.\n * This is optional and may be undefined.\n */\n applicationId?: string;\n};\n\ntype FronteggNativeRegionOptions = {\n /**\n * This is an array of regions to be used as frontegg app.\n *\n * @since 1.0.0\n * @example [{key: \"us\", baseUrl: \"https://us-api.frontegg.com\", clientId: \"us-client-id\"}]\n */\n regions: RegionConfig[];\n};\ntype FronteggNativeOptions = (\n | FronteggNativeStandardOptions\n | FronteggNativeRegionOptions\n) & {\n /**\n * Weather to handle login with social login in external browser.\n * If set to false, the plugin will navigate to the social login page with application webview.\n *\n * NOTE: some of the social login providers prevent login from embedded webview.\n *\n * @default true\n */\n handleLoginWithSocialLogin?: boolean;\n /**\n * Weather to handle login with SSO in external browser.\n * If set to false, the plugin will navigate to the sso page with application webview.\n *\n * @default false\n */\n handleLoginWithSSO?: boolean;\n /**\n * Weather to use the assetlinks to for oauth/callback, this is the default behavior.\n * disabling this will cause the plugin to use custom url scheme for oauth/callback.\n *\n * NOTE: custom url scheme require user interaction to return to the app.\n * @default true\n */\n useAssetLinks?: boolean;\n\n /**\n * Weather to To enable social login via Chrome Custom Tabs, set the useChromeCustomTabs flag to true.\n * By default, the SDK uses the Chrome browser for social login.\n *\n * NOTE: custom url scheme require user interaction to return to the app.\n * @default true\n */\n useChromeCustomTabs?: boolean;\n\n /**\n * Android only. Full class name of the MainActivity for deep links (e.g. \"com.example.app.MainActivity\").\n * If not set, defaults to {packageName}.MainActivity.\n */\n mainActivityClass?: string;\n\n /**\n * Android only. Custom deep link scheme for OAuth callback (e.g. \"myapp\").\n * If not set, asset links or default scheme is used.\n */\n deepLinkScheme?: string;\n\n /**\n * Android only. Enable WebView disk cache.\n * @default false\n */\n useDiskCacheWebView?: boolean;\n};\n\nexport interface FronteggServiceOptions {\n logLevel: LogLevel;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\ndeclare module '@capacitor/cli' {\n export interface PluginsConfig {\n /**\n * You can configure the way the push notifications are displayed when the app is in foreground.\n */\n FronteggNative?: FronteggNativeOptions;\n }\n}\n"]}
|
|
@@ -151,8 +151,8 @@ export class FronteggService {
|
|
|
151
151
|
/**
|
|
152
152
|
* Call frontegg native login method
|
|
153
153
|
*/
|
|
154
|
-
login() {
|
|
155
|
-
return FronteggNative.login();
|
|
154
|
+
login(loginHint) {
|
|
155
|
+
return FronteggNative.login({ loginHint });
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Wait for loader to finish
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontegg.service.js","sourceRoot":"","sources":["../../src/frontegg.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type {\n FronteggConstants,\n FronteggNativePlugin,\n FronteggServiceOptions,\n FronteggState,\n SubscribeMap,\n} from './definitions';\nimport { Logger } from './logger';\nimport type { FronteggObservable } from './observables';\nimport { createObservable } from './observables';\n\nconst FronteggNative = registerPlugin<FronteggNativePlugin>('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\n\nexport class FronteggService {\n private state: FronteggState;\n private logger: Logger;\n private mapListeners: SubscribeMap<FronteggState>;\n private readonly orderedListenerKeys: (keyof FronteggState)[] = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n\n constructor(options?: FronteggServiceOptions) {\n this.logger = new Logger(options?.logLevel);\n\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n\n FronteggNative.addListener(\n 'onFronteggAuthEvent',\n (state: FronteggState) => {\n this.logger.info(\n 'onFronteggAuthEvent',\n JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`, // prevent log full user object // null | undefined | [object Object]\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }),\n );\n\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n (this.state as any)[key] = state[key];\n this.mapListeners[key].forEach((listener: any) =>\n listener(state[key]),\n );\n }\n });\n this.state = state;\n },\n );\n\n FronteggNative.getAuthState().then((state: FronteggState) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item as keyof FronteggState;\n\n (this.state as any)[key] = state[key];\n this.mapListeners[key].forEach((listener: any) => listener(state[key]));\n }\n\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener: any) =>\n listener(false),\n );\n });\n }\n\n private isChanged(obj1: any, obj2: any): boolean {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n\n // Check for null and undefined\n if (\n obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined\n ) {\n return obj1 !== obj2;\n }\n\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return true;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n\n // If none of the above conditions match, the values have changed\n return true;\n }\n\n public getState(): FronteggState {\n return this.state;\n }\n\n public getNativeState(): Promise<FronteggState> {\n return FronteggNative.getAuthState();\n }\n\n public get $isLoading(): FronteggObservable<'isLoading'> {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n\n // @deprecated use $isLoading instead\n public get $showLoader(): FronteggObservable<'showLoader'> {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n\n public get $isAuthenticated(): FronteggObservable<'isAuthenticated'> {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n\n public get $user(): FronteggObservable<'user'> {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n\n public get $accessToken(): FronteggObservable<'accessToken'> {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n\n public get $refreshingToken(): FronteggObservable<'refreshingToken'> {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n\n public get $selectedRegion(): FronteggObservable<'selectedRegion'> {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n\n /**\n * Call frontegg native login method\n */\n public login(): Promise<void> {\n return FronteggNative.login();\n }\n\n /**\n * Wait for loader to finish\n * @private\n */\n public async waitForLoader(): Promise<boolean> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<boolean>(async resolve => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n public async directLoginAction(\n type: string,\n data: string,\n ephemeralSession = true,\n ): Promise<boolean> {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener: any) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n\n public logout(): void {\n FronteggNative.logout();\n }\n\n public getConstants(): Promise<FronteggConstants> {\n return FronteggNative.getConstants();\n }\n\n public switchTenant(tenantId: string): Promise<void> {\n return FronteggNative.switchTenant({ tenantId });\n }\n\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n public initWithRegion(regionKey: string): Promise<void> {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n\n public refreshToken(): Promise<void> {\n return FronteggNative.refreshToken();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"frontegg.service.js","sourceRoot":"","sources":["../../src/frontegg.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type {\n FronteggConstants,\n FronteggNativePlugin,\n FronteggServiceOptions,\n FronteggState,\n SubscribeMap,\n} from './definitions';\nimport { Logger } from './logger';\nimport type { FronteggObservable } from './observables';\nimport { createObservable } from './observables';\n\nconst FronteggNative = registerPlugin<FronteggNativePlugin>('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\n\nexport class FronteggService {\n private state: FronteggState;\n private logger: Logger;\n private mapListeners: SubscribeMap<FronteggState>;\n private readonly orderedListenerKeys: (keyof FronteggState)[] = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n\n constructor(options?: FronteggServiceOptions) {\n this.logger = new Logger(options?.logLevel);\n\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n\n FronteggNative.addListener(\n 'onFronteggAuthEvent',\n (state: FronteggState) => {\n this.logger.info(\n 'onFronteggAuthEvent',\n JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`, // prevent log full user object // null | undefined | [object Object]\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }),\n );\n\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n (this.state as any)[key] = state[key];\n this.mapListeners[key].forEach((listener: any) =>\n listener(state[key]),\n );\n }\n });\n this.state = state;\n },\n );\n\n FronteggNative.getAuthState().then((state: FronteggState) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item as keyof FronteggState;\n\n (this.state as any)[key] = state[key];\n this.mapListeners[key].forEach((listener: any) => listener(state[key]));\n }\n\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener: any) =>\n listener(false),\n );\n });\n }\n\n private isChanged(obj1: any, obj2: any): boolean {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n\n // Check for null and undefined\n if (\n obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined\n ) {\n return obj1 !== obj2;\n }\n\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) {\n return true;\n }\n\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n\n // If none of the above conditions match, the values have changed\n return true;\n }\n\n public getState(): FronteggState {\n return this.state;\n }\n\n public getNativeState(): Promise<FronteggState> {\n return FronteggNative.getAuthState();\n }\n\n public get $isLoading(): FronteggObservable<'isLoading'> {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n\n // @deprecated use $isLoading instead\n public get $showLoader(): FronteggObservable<'showLoader'> {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n\n public get $isAuthenticated(): FronteggObservable<'isAuthenticated'> {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n\n public get $user(): FronteggObservable<'user'> {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n\n public get $accessToken(): FronteggObservable<'accessToken'> {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n\n public get $refreshingToken(): FronteggObservable<'refreshingToken'> {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n\n public get $selectedRegion(): FronteggObservable<'selectedRegion'> {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n\n /**\n * Call frontegg native login method\n */\n public login(loginHint?: string): Promise<void> {\n return FronteggNative.login({ loginHint });\n }\n\n /**\n * Wait for loader to finish\n * @private\n */\n public async waitForLoader(): Promise<boolean> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<boolean>(async resolve => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n public async directLoginAction(\n type: string,\n data: string,\n ephemeralSession = true,\n ): Promise<boolean> {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener: any) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n\n public logout(): void {\n FronteggNative.logout();\n }\n\n public getConstants(): Promise<FronteggConstants> {\n return FronteggNative.getConstants();\n }\n\n public switchTenant(tenantId: string): Promise<void> {\n return FronteggNative.switchTenant({ tenantId });\n }\n\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n public initWithRegion(regionKey: string): Promise<void> {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n\n public refreshToken(): Promise<void> {\n return FronteggNative.refreshToken();\n }\n}\n"]}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -3,7 +3,9 @@ import type { FronteggConstants, FronteggNativePlugin, FronteggState } from './d
|
|
|
3
3
|
export declare class FronteggNativeWeb extends WebPlugin implements FronteggNativePlugin {
|
|
4
4
|
getConstants(): Promise<FronteggConstants>;
|
|
5
5
|
getAuthState(): Promise<FronteggState>;
|
|
6
|
-
login(
|
|
6
|
+
login(payload: {
|
|
7
|
+
loginHint?: string;
|
|
8
|
+
}): Promise<void>;
|
|
7
9
|
directLoginAction(payload: {
|
|
8
10
|
type: string;
|
|
9
11
|
data: string;
|
package/dist/esm/web.js
CHANGED
|
@@ -6,8 +6,8 @@ export class FronteggNativeWeb extends WebPlugin {
|
|
|
6
6
|
async getAuthState() {
|
|
7
7
|
throw Error('FronteggNative.getAuthState not implemented in web');
|
|
8
8
|
}
|
|
9
|
-
async login() {
|
|
10
|
-
throw Error(
|
|
9
|
+
async login(payload) {
|
|
10
|
+
throw Error(`FronteggNative.login(${payload}) not implemented in web`);
|
|
11
11
|
}
|
|
12
12
|
async directLoginAction(payload) {
|
|
13
13
|
throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);
|
package/dist/esm/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,MAAM,OAAO,iBACX,SAAQ,SAAS;IAGjB,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,MAAM,OAAO,iBACX,SAAQ,SAAS;IAGjB,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAA+B;QACzC,MAAM,KAAK,CAAC,wBAAwB,OAAO,0BAA0B,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAIvB;QACC,MAAM,KAAK,CACT,oCAAoC,OAAO,yBAAyB,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA6B;QAC9C,MAAM,KAAK,CACT,+BAA+B,OAAO,yBAAyB,CAChE,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,MAAM,KAAK,CACT,iCAAiC,OAAO,yBAAyB,CAClE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n FronteggConstants,\n FronteggNativePlugin,\n FronteggState,\n} from './definitions';\n\nexport class FronteggNativeWeb\n extends WebPlugin\n implements FronteggNativePlugin\n{\n async getConstants(): Promise<FronteggConstants> {\n throw Error('FronteggNative.getConstants not implemented in web');\n }\n\n async getAuthState(): Promise<FronteggState> {\n throw Error('FronteggNative.getAuthState not implemented in web');\n }\n\n async login(payload: { loginHint?: string }): Promise<void> {\n throw Error(`FronteggNative.login(${payload}) not implemented in web`);\n }\n\n async directLoginAction(payload: {\n type: string;\n data: string;\n ephemeralSession?: boolean;\n }): Promise<boolean> {\n throw Error(\n `FronteggNative.directLoginAction ${payload} not implemented in web`,\n );\n }\n\n async logout(): Promise<void> {\n throw Error('FronteggNative.logout not implemented in web');\n }\n\n async switchTenant(payload: { tenantId: string }): Promise<void> {\n throw Error(\n `FronteggNative.switchTenant ${payload} not implemented in web`,\n );\n }\n\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n async initWithRegion(payload: { regionKey: string }): Promise<void> {\n throw Error(\n `FronteggNative.initWithRegion ${payload} not implemented in web`,\n );\n }\n\n async refreshToken(): Promise<void> {\n throw Error(`FronteggNative.refreshToken not implemented in web`);\n }\n}\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -206,8 +206,8 @@ class FronteggService {
|
|
|
206
206
|
/**
|
|
207
207
|
* Call frontegg native login method
|
|
208
208
|
*/
|
|
209
|
-
login() {
|
|
210
|
-
return FronteggNative.login();
|
|
209
|
+
login(loginHint) {
|
|
210
|
+
return FronteggNative.login({ loginHint });
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
213
213
|
* Wait for loader to finish
|
|
@@ -287,8 +287,8 @@ class FronteggNativeWeb extends core.WebPlugin {
|
|
|
287
287
|
async getAuthState() {
|
|
288
288
|
throw Error('FronteggNative.getAuthState not implemented in web');
|
|
289
289
|
}
|
|
290
|
-
async login() {
|
|
291
|
-
throw Error(
|
|
290
|
+
async login(payload) {
|
|
291
|
+
throw Error(`FronteggNative.login(${payload}) not implemented in web`);
|
|
292
292
|
}
|
|
293
293
|
async directLoginAction(payload) {
|
|
294
294
|
throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/logger.js","esm/observables.js","esm/frontegg.service.js","esm/web.js"],"sourcesContent":["/**\n * Enum representing different log levels.\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"INFO\"] = \"info\";\n LogLevel[\"WARN\"] = \"warn\";\n LogLevel[\"ERROR\"] = \"error\";\n LogLevel[\"NONE\"] = \"none\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Logger class to handle logging with a configurable log level.\n */\nexport class Logger {\n constructor(logLevel = LogLevel.WARN) {\n this.logLevel = logLevel;\n }\n info(message, ...args) {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(message, ...args);\n }\n }\n warn(message, ...args) {\n if (this.shouldLog(LogLevel.WARN)) {\n console.info(message, ...args);\n }\n }\n error(message, ...args) {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.info(message, ...args);\n }\n }\n shouldLog(level) {\n const levels = [LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];\n return levels.indexOf(level) >= levels.indexOf(this.logLevel);\n }\n}\n//# sourceMappingURL=logger.js.map","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createObservable = (map, state, key) => {\n return {\n value: state[key],\n subscribe(listener) {\n const mapKey = map[key];\n mapKey.add(listener);\n return () => {\n mapKey.delete(listener);\n };\n },\n };\n};\n//# sourceMappingURL=observables.js.map","import { registerPlugin } from '@capacitor/core';\nimport { Logger } from './logger';\nimport { createObservable } from './observables';\nconst FronteggNative = registerPlugin('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\nexport class FronteggService {\n constructor(options) {\n this.orderedListenerKeys = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n this.logger = new Logger(options === null || options === void 0 ? void 0 : options.logLevel);\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n FronteggNative.addListener('onFronteggAuthEvent', (state) => {\n this.logger.info('onFronteggAuthEvent', JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`,\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }));\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n });\n this.state = state;\n });\n FronteggNative.getAuthState().then((state) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item;\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener) => listener(false));\n });\n }\n isChanged(obj1, obj2) {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n // Check for null and undefined\n if (obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined) {\n return obj1 !== obj2;\n }\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n // If none of the above conditions match, the values have changed\n return true;\n }\n getState() {\n return this.state;\n }\n getNativeState() {\n return FronteggNative.getAuthState();\n }\n get $isLoading() {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n // @deprecated use $isLoading instead\n get $showLoader() {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n get $isAuthenticated() {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n get $user() {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n get $accessToken() {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n get $refreshingToken() {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n get $selectedRegion() {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n /**\n * Call frontegg native login method\n */\n login() {\n return FronteggNative.login();\n }\n /**\n * Wait for loader to finish\n * @private\n */\n async waitForLoader() {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n async directLoginAction(type, data, ephemeralSession = true) {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n logout() {\n FronteggNative.logout();\n }\n getConstants() {\n return FronteggNative.getConstants();\n }\n switchTenant(tenantId) {\n return FronteggNative.switchTenant({ tenantId });\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n initWithRegion(regionKey) {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n refreshToken() {\n return FronteggNative.refreshToken();\n }\n}\n//# sourceMappingURL=frontegg.service.js.map","import { WebPlugin } from '@capacitor/core';\nexport class FronteggNativeWeb extends WebPlugin {\n async getConstants() {\n throw Error('FronteggNative.getConstants not implemented in web');\n }\n async getAuthState() {\n throw Error('FronteggNative.getAuthState not implemented in web');\n }\n async login() {\n throw Error('FronteggNative.login not implemented in web');\n }\n async directLoginAction(payload) {\n throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);\n }\n async logout() {\n throw Error('FronteggNative.logout not implemented in web');\n }\n async switchTenant(payload) {\n throw Error(`FronteggNative.switchTenant ${payload} not implemented in web`);\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n async initWithRegion(payload) {\n throw Error(`FronteggNative.initWithRegion ${payload} not implemented in web`);\n }\n async refreshToken() {\n throw Error(`FronteggNative.refreshToken not implemented in web`);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["LogLevel","registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/logger.js","esm/observables.js","esm/frontegg.service.js","esm/web.js"],"sourcesContent":["/**\n * Enum representing different log levels.\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"INFO\"] = \"info\";\n LogLevel[\"WARN\"] = \"warn\";\n LogLevel[\"ERROR\"] = \"error\";\n LogLevel[\"NONE\"] = \"none\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Logger class to handle logging with a configurable log level.\n */\nexport class Logger {\n constructor(logLevel = LogLevel.WARN) {\n this.logLevel = logLevel;\n }\n info(message, ...args) {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(message, ...args);\n }\n }\n warn(message, ...args) {\n if (this.shouldLog(LogLevel.WARN)) {\n console.info(message, ...args);\n }\n }\n error(message, ...args) {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.info(message, ...args);\n }\n }\n shouldLog(level) {\n const levels = [LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];\n return levels.indexOf(level) >= levels.indexOf(this.logLevel);\n }\n}\n//# sourceMappingURL=logger.js.map","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createObservable = (map, state, key) => {\n return {\n value: state[key],\n subscribe(listener) {\n const mapKey = map[key];\n mapKey.add(listener);\n return () => {\n mapKey.delete(listener);\n };\n },\n };\n};\n//# sourceMappingURL=observables.js.map","import { registerPlugin } from '@capacitor/core';\nimport { Logger } from './logger';\nimport { createObservable } from './observables';\nconst FronteggNative = registerPlugin('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\nexport class FronteggService {\n constructor(options) {\n this.orderedListenerKeys = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n this.logger = new Logger(options === null || options === void 0 ? void 0 : options.logLevel);\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n FronteggNative.addListener('onFronteggAuthEvent', (state) => {\n this.logger.info('onFronteggAuthEvent', JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`,\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }));\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n });\n this.state = state;\n });\n FronteggNative.getAuthState().then((state) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item;\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener) => listener(false));\n });\n }\n isChanged(obj1, obj2) {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n // Check for null and undefined\n if (obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined) {\n return obj1 !== obj2;\n }\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n // If none of the above conditions match, the values have changed\n return true;\n }\n getState() {\n return this.state;\n }\n getNativeState() {\n return FronteggNative.getAuthState();\n }\n get $isLoading() {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n // @deprecated use $isLoading instead\n get $showLoader() {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n get $isAuthenticated() {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n get $user() {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n get $accessToken() {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n get $refreshingToken() {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n get $selectedRegion() {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n /**\n * Call frontegg native login method\n */\n login(loginHint) {\n return FronteggNative.login({ loginHint });\n }\n /**\n * Wait for loader to finish\n * @private\n */\n async waitForLoader() {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n async directLoginAction(type, data, ephemeralSession = true) {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n logout() {\n FronteggNative.logout();\n }\n getConstants() {\n return FronteggNative.getConstants();\n }\n switchTenant(tenantId) {\n return FronteggNative.switchTenant({ tenantId });\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n initWithRegion(regionKey) {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n refreshToken() {\n return FronteggNative.refreshToken();\n }\n}\n//# sourceMappingURL=frontegg.service.js.map","import { WebPlugin } from '@capacitor/core';\nexport class FronteggNativeWeb extends WebPlugin {\n async getConstants() {\n throw Error('FronteggNative.getConstants not implemented in web');\n }\n async getAuthState() {\n throw Error('FronteggNative.getAuthState not implemented in web');\n }\n async login(payload) {\n throw Error(`FronteggNative.login(${payload}) not implemented in web`);\n }\n async directLoginAction(payload) {\n throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);\n }\n async logout() {\n throw Error('FronteggNative.logout not implemented in web');\n }\n async switchTenant(payload) {\n throw Error(`FronteggNative.switchTenant ${payload} not implemented in web`);\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n async initWithRegion(payload) {\n throw Error(`FronteggNative.initWithRegion ${payload} not implemented in web`);\n }\n async refreshToken() {\n throw Error(`FronteggNative.refreshToken not implemented in web`);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["LogLevel","registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -203,8 +203,8 @@ var capacitorFronteggNative = (function (exports, core) {
|
|
|
203
203
|
/**
|
|
204
204
|
* Call frontegg native login method
|
|
205
205
|
*/
|
|
206
|
-
login() {
|
|
207
|
-
return FronteggNative.login();
|
|
206
|
+
login(loginHint) {
|
|
207
|
+
return FronteggNative.login({ loginHint });
|
|
208
208
|
}
|
|
209
209
|
/**
|
|
210
210
|
* Wait for loader to finish
|
|
@@ -284,8 +284,8 @@ var capacitorFronteggNative = (function (exports, core) {
|
|
|
284
284
|
async getAuthState() {
|
|
285
285
|
throw Error('FronteggNative.getAuthState not implemented in web');
|
|
286
286
|
}
|
|
287
|
-
async login() {
|
|
288
|
-
throw Error(
|
|
287
|
+
async login(payload) {
|
|
288
|
+
throw Error(`FronteggNative.login(${payload}) not implemented in web`);
|
|
289
289
|
}
|
|
290
290
|
async directLoginAction(payload) {
|
|
291
291
|
throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/logger.js","esm/observables.js","esm/frontegg.service.js","esm/web.js"],"sourcesContent":["/**\n * Enum representing different log levels.\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"INFO\"] = \"info\";\n LogLevel[\"WARN\"] = \"warn\";\n LogLevel[\"ERROR\"] = \"error\";\n LogLevel[\"NONE\"] = \"none\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Logger class to handle logging with a configurable log level.\n */\nexport class Logger {\n constructor(logLevel = LogLevel.WARN) {\n this.logLevel = logLevel;\n }\n info(message, ...args) {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(message, ...args);\n }\n }\n warn(message, ...args) {\n if (this.shouldLog(LogLevel.WARN)) {\n console.info(message, ...args);\n }\n }\n error(message, ...args) {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.info(message, ...args);\n }\n }\n shouldLog(level) {\n const levels = [LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];\n return levels.indexOf(level) >= levels.indexOf(this.logLevel);\n }\n}\n//# sourceMappingURL=logger.js.map","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createObservable = (map, state, key) => {\n return {\n value: state[key],\n subscribe(listener) {\n const mapKey = map[key];\n mapKey.add(listener);\n return () => {\n mapKey.delete(listener);\n };\n },\n };\n};\n//# sourceMappingURL=observables.js.map","import { registerPlugin } from '@capacitor/core';\nimport { Logger } from './logger';\nimport { createObservable } from './observables';\nconst FronteggNative = registerPlugin('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\nexport class FronteggService {\n constructor(options) {\n this.orderedListenerKeys = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n this.logger = new Logger(options === null || options === void 0 ? void 0 : options.logLevel);\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n FronteggNative.addListener('onFronteggAuthEvent', (state) => {\n this.logger.info('onFronteggAuthEvent', JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`,\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }));\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n });\n this.state = state;\n });\n FronteggNative.getAuthState().then((state) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item;\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener) => listener(false));\n });\n }\n isChanged(obj1, obj2) {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n // Check for null and undefined\n if (obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined) {\n return obj1 !== obj2;\n }\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n // If none of the above conditions match, the values have changed\n return true;\n }\n getState() {\n return this.state;\n }\n getNativeState() {\n return FronteggNative.getAuthState();\n }\n get $isLoading() {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n // @deprecated use $isLoading instead\n get $showLoader() {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n get $isAuthenticated() {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n get $user() {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n get $accessToken() {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n get $refreshingToken() {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n get $selectedRegion() {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n /**\n * Call frontegg native login method\n */\n login() {\n return FronteggNative.login();\n }\n /**\n * Wait for loader to finish\n * @private\n */\n async waitForLoader() {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n async directLoginAction(type, data, ephemeralSession = true) {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n logout() {\n FronteggNative.logout();\n }\n getConstants() {\n return FronteggNative.getConstants();\n }\n switchTenant(tenantId) {\n return FronteggNative.switchTenant({ tenantId });\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n initWithRegion(regionKey) {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n refreshToken() {\n return FronteggNative.refreshToken();\n }\n}\n//# sourceMappingURL=frontegg.service.js.map","import { WebPlugin } from '@capacitor/core';\nexport class FronteggNativeWeb extends WebPlugin {\n async getConstants() {\n throw Error('FronteggNative.getConstants not implemented in web');\n }\n async getAuthState() {\n throw Error('FronteggNative.getAuthState not implemented in web');\n }\n async login() {\n throw Error('FronteggNative.login not implemented in web');\n }\n async directLoginAction(payload) {\n throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);\n }\n async logout() {\n throw Error('FronteggNative.logout not implemented in web');\n }\n async switchTenant(payload) {\n throw Error(`FronteggNative.switchTenant ${payload} not implemented in web`);\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n async initWithRegion(payload) {\n throw Error(`FronteggNative.initWithRegion ${payload} not implemented in web`);\n }\n async refreshToken() {\n throw Error(`FronteggNative.refreshToken not implemented in web`);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["LogLevel","registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/logger.js","esm/observables.js","esm/frontegg.service.js","esm/web.js"],"sourcesContent":["/**\n * Enum representing different log levels.\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"INFO\"] = \"info\";\n LogLevel[\"WARN\"] = \"warn\";\n LogLevel[\"ERROR\"] = \"error\";\n LogLevel[\"NONE\"] = \"none\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Logger class to handle logging with a configurable log level.\n */\nexport class Logger {\n constructor(logLevel = LogLevel.WARN) {\n this.logLevel = logLevel;\n }\n info(message, ...args) {\n if (this.shouldLog(LogLevel.INFO)) {\n console.info(message, ...args);\n }\n }\n warn(message, ...args) {\n if (this.shouldLog(LogLevel.WARN)) {\n console.info(message, ...args);\n }\n }\n error(message, ...args) {\n if (this.shouldLog(LogLevel.ERROR)) {\n console.info(message, ...args);\n }\n }\n shouldLog(level) {\n const levels = [LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];\n return levels.indexOf(level) >= levels.indexOf(this.logLevel);\n }\n}\n//# sourceMappingURL=logger.js.map","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const createObservable = (map, state, key) => {\n return {\n value: state[key],\n subscribe(listener) {\n const mapKey = map[key];\n mapKey.add(listener);\n return () => {\n mapKey.delete(listener);\n };\n },\n };\n};\n//# sourceMappingURL=observables.js.map","import { registerPlugin } from '@capacitor/core';\nimport { Logger } from './logger';\nimport { createObservable } from './observables';\nconst FronteggNative = registerPlugin('FronteggNative', {\n web: () => import('./web').then(m => new m.FronteggNativeWeb()),\n});\nexport class FronteggService {\n constructor(options) {\n this.orderedListenerKeys = [\n 'refreshToken',\n 'accessToken',\n 'user',\n 'isAuthenticated',\n 'selectedRegion',\n 'showLoader',\n 'refreshingToken',\n 'initializing',\n 'isLoading',\n ];\n this.logger = new Logger(options === null || options === void 0 ? void 0 : options.logLevel);\n this.logger.info('FronteggService created');\n this.state = {\n isAuthenticated: false,\n showLoader: true,\n isLoading: true,\n user: null,\n accessToken: null,\n refreshToken: null,\n selectedRegion: null,\n refreshingToken: false,\n initializing: true,\n };\n this.mapListeners = {\n isAuthenticated: new Set(),\n showLoader: new Set(),\n isLoading: new Set(),\n user: new Set(),\n accessToken: new Set(),\n refreshToken: new Set(),\n selectedRegion: new Set(),\n refreshingToken: new Set(),\n initializing: new Set(),\n };\n FronteggNative.addListener('onFronteggAuthEvent', (state) => {\n this.logger.info('onFronteggAuthEvent', JSON.stringify({\n isAuthenticated: state.isAuthenticated,\n showLoader: state.isLoading,\n isLoading: state.isLoading,\n user: `${state.user}`,\n accessToken: state.accessToken ? '****' : null,\n refreshToken: state.refreshToken,\n selectedRegion: state.selectedRegion,\n refreshingToken: state.refreshingToken,\n initializing: state.initializing,\n }));\n const keys = this.orderedListenerKeys;\n keys.forEach(key => {\n if (this.isChanged(this.state[key], state[key])) {\n this.logger.info('onFronteggAuthEvent', key, state[key]);\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n });\n this.state = state;\n });\n FronteggNative.getAuthState().then((state) => {\n this.logger.info(`getAuthState(): \\n ${JSON.stringify(state)} DONE`);\n const keys = Object.keys(this.mapListeners);\n for (const item of keys.filter(key => key !== 'initializing')) {\n const key = item;\n this.state[key] = state[key];\n this.mapListeners[key].forEach((listener) => listener(state[key]));\n }\n this.state.initializing = false;\n this.mapListeners.initializing.forEach((listener) => listener(false));\n });\n }\n isChanged(obj1, obj2) {\n // Strict equality check\n if (obj1 === obj2) {\n return false;\n }\n // Check for null and undefined\n if (obj1 === null ||\n obj1 === undefined ||\n obj2 === null ||\n obj2 === undefined) {\n return obj1 !== obj2;\n }\n // Handle primitive types (number, string, boolean)\n if (typeof obj1 !== 'object' && typeof obj2 !== 'object') {\n return obj1 !== obj2;\n }\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) {\n return true;\n }\n for (let i = 0; i < obj1.length; i++) {\n if (this.isChanged(obj1[i], obj2[i])) {\n return true;\n }\n }\n return false;\n }\n // Handle objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return true;\n }\n for (const key of keys1) {\n if (!keys2.includes(key) || this.isChanged(obj1[key], obj2[key])) {\n return true;\n }\n }\n return false;\n }\n // If none of the above conditions match, the values have changed\n return true;\n }\n getState() {\n return this.state;\n }\n getNativeState() {\n return FronteggNative.getAuthState();\n }\n get $isLoading() {\n return createObservable(this.mapListeners, this.state, 'isLoading');\n }\n // @deprecated use $isLoading instead\n get $showLoader() {\n return createObservable(this.mapListeners, this.state, 'showLoader');\n }\n get $isAuthenticated() {\n return createObservable(this.mapListeners, this.state, 'isAuthenticated');\n }\n get $user() {\n return createObservable(this.mapListeners, this.state, 'user');\n }\n get $accessToken() {\n return createObservable(this.mapListeners, this.state, 'accessToken');\n }\n get $refreshingToken() {\n return createObservable(this.mapListeners, this.state, 'refreshingToken');\n }\n get $selectedRegion() {\n return createObservable(this.mapListeners, this.state, 'selectedRegion');\n }\n /**\n * Call frontegg native login method\n */\n login(loginHint) {\n return FronteggNative.login({ loginHint });\n }\n /**\n * Wait for loader to finish\n * @private\n */\n async waitForLoader() {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve) => {\n console.log('checking is loading');\n const state = await this.getNativeState();\n let isLoading = state.isLoading;\n console.log('checking is loading', JSON.stringify({ isLoading }));\n if (!isLoading) {\n resolve(true);\n return;\n }\n console.log('isLoading is true, waiting for it to be false');\n while (isLoading) {\n const { isLoading: newIsLoading } = await this.getNativeState();\n if (!newIsLoading) {\n resolve(true);\n return;\n }\n isLoading = newIsLoading;\n await new Promise(r => setTimeout(r, 100));\n }\n });\n }\n /**\n * Used to log in with social login provider directly without visiting the login page\n * @param type - the direct login type (direct, social-login, custom-social-login)\n * @param data - the direct login data (for direct it's saml url request, for social-login it's the provider name, for custom-social-login it's the provider entity id)\n * @param ephemeralSession - if true, the session will be ephemeral and will not be saved in the browser\n */\n async directLoginAction(type, data, ephemeralSession = true) {\n const state = await this.getNativeState();\n console.log('direct login action', state);\n await this.waitForLoader();\n if (state.isAuthenticated) {\n return true;\n }\n this.state.isLoading = true;\n this.mapListeners.isLoading.forEach((listener) => listener(true));\n return FronteggNative.directLoginAction({ type, data, ephemeralSession });\n }\n logout() {\n FronteggNative.logout();\n }\n getConstants() {\n return FronteggNative.getConstants();\n }\n switchTenant(tenantId) {\n return FronteggNative.switchTenant({ tenantId });\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n initWithRegion(regionKey) {\n // check if current region is the same as the new region\n if (this.getState().selectedRegion === regionKey) {\n return Promise.resolve();\n }\n return FronteggNative.initWithRegion({ regionKey });\n }\n refreshToken() {\n return FronteggNative.refreshToken();\n }\n}\n//# sourceMappingURL=frontegg.service.js.map","import { WebPlugin } from '@capacitor/core';\nexport class FronteggNativeWeb extends WebPlugin {\n async getConstants() {\n throw Error('FronteggNative.getConstants not implemented in web');\n }\n async getAuthState() {\n throw Error('FronteggNative.getAuthState not implemented in web');\n }\n async login(payload) {\n throw Error(`FronteggNative.login(${payload}) not implemented in web`);\n }\n async directLoginAction(payload) {\n throw Error(`FronteggNative.directLoginAction ${payload} not implemented in web`);\n }\n async logout() {\n throw Error('FronteggNative.logout not implemented in web');\n }\n async switchTenant(payload) {\n throw Error(`FronteggNative.switchTenant ${payload} not implemented in web`);\n }\n /**\n * used to initialize the plugin with multiple regions\n * for more information see:\n * iOS: https://github.com/frontegg/frontegg-ios-swift#multi-region-support\n * Android: https://github.com/frontegg/frontegg-android-kotlin#multi-region-support\n */\n async initWithRegion(payload) {\n throw Error(`FronteggNative.initWithRegion ${payload} not implemented in web`);\n }\n async refreshToken() {\n throw Error(`FronteggNative.refreshToken not implemented in web`);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["LogLevel","registerPlugin","WebPlugin"],"mappings":";;;IAAA;IACA;IACA;AACWA,8BAAS;IACpB,CAAC,UAAU,QAAQ,EAAE;IACrB,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9B,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC9B,CAAC,EAAEA,gBAAQ,KAAKA,gBAAQ,GAAG,EAAE,CAAC,CAAC,CAAC;IAChC;IACA;IACA;IACO,MAAM,MAAM,CAAC;IACpB,IAAI,WAAW,CAAC,QAAQ,GAAGA,gBAAQ,CAAC,IAAI,EAAE;IAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,KAAK;IACL,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;IAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,CAACA,gBAAQ,CAAC,IAAI,CAAC,EAAE;IAC3C,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,SAAS;IACT,KAAK;IACL,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;IAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,CAACA,gBAAQ,CAAC,IAAI,CAAC,EAAE;IAC3C,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,SAAS;IACT,KAAK;IACL,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;IAC5B,QAAQ,IAAI,IAAI,CAAC,SAAS,CAACA,gBAAQ,CAAC,KAAK,CAAC,EAAE;IAC5C,YAAY,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,SAAS;IACT,KAAK;IACL,IAAI,SAAS,CAAC,KAAK,EAAE;IACrB,QAAQ,MAAM,MAAM,GAAG,CAACA,gBAAQ,CAAC,IAAI,EAAEA,gBAAQ,CAAC,IAAI,EAAEA,gBAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,QAAQ,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,KAAK;IACL;;ICpCA;IACO,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK;IACrD,IAAI,OAAO;IACX,QAAQ,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IACzB,QAAQ,SAAS,CAAC,QAAQ,EAAE;IAC5B,YAAY,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,YAAY,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,YAAY,OAAO,MAAM;IACzB,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,CAAC;IACd,SAAS;IACT,KAAK,CAAC;IACN,CAAC;;ICTD,MAAM,cAAc,GAAGC,mBAAc,CAAC,gBAAgB,EAAE;IACxD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IACI,MAAM,eAAe,CAAC;IAC7B,IAAI,WAAW,CAAC,OAAO,EAAE;IACzB,QAAQ,IAAI,CAAC,mBAAmB,GAAG;IACnC,YAAY,cAAc;IAC1B,YAAY,aAAa;IACzB,YAAY,MAAM;IAClB,YAAY,iBAAiB;IAC7B,YAAY,gBAAgB;IAC5B,YAAY,YAAY;IACxB,YAAY,iBAAiB;IAC7B,YAAY,cAAc;IAC1B,YAAY,WAAW;IACvB,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrG,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpD,QAAQ,IAAI,CAAC,KAAK,GAAG;IACrB,YAAY,eAAe,EAAE,KAAK;IAClC,YAAY,UAAU,EAAE,IAAI;IAC5B,YAAY,SAAS,EAAE,IAAI;IAC3B,YAAY,IAAI,EAAE,IAAI;IACtB,YAAY,WAAW,EAAE,IAAI;IAC7B,YAAY,YAAY,EAAE,IAAI;IAC9B,YAAY,cAAc,EAAE,IAAI;IAChC,YAAY,eAAe,EAAE,KAAK;IAClC,YAAY,YAAY,EAAE,IAAI;IAC9B,SAAS,CAAC;IACV,QAAQ,IAAI,CAAC,YAAY,GAAG;IAC5B,YAAY,eAAe,EAAE,IAAI,GAAG,EAAE;IACtC,YAAY,UAAU,EAAE,IAAI,GAAG,EAAE;IACjC,YAAY,SAAS,EAAE,IAAI,GAAG,EAAE;IAChC,YAAY,IAAI,EAAE,IAAI,GAAG,EAAE;IAC3B,YAAY,WAAW,EAAE,IAAI,GAAG,EAAE;IAClC,YAAY,YAAY,EAAE,IAAI,GAAG,EAAE;IACnC,YAAY,cAAc,EAAE,IAAI,GAAG,EAAE;IACrC,YAAY,eAAe,EAAE,IAAI,GAAG,EAAE;IACtC,YAAY,YAAY,EAAE,IAAI,GAAG,EAAE;IACnC,SAAS,CAAC;IACV,QAAQ,cAAc,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,KAAK;IACrE,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC;IACnE,gBAAgB,eAAe,EAAE,KAAK,CAAC,eAAe;IACtD,gBAAgB,UAAU,EAAE,KAAK,CAAC,SAAS;IAC3C,gBAAgB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1C,gBAAgB,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,gBAAgB,WAAW,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI;IAC9D,gBAAgB,YAAY,EAAE,KAAK,CAAC,YAAY;IAChD,gBAAgB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpD,gBAAgB,eAAe,EAAE,KAAK,CAAC,eAAe;IACtD,gBAAgB,YAAY,EAAE,KAAK,CAAC,YAAY;IAChD,aAAa,CAAC,CAAC,CAAC;IAChB,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAClD,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;IAChC,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;IACjE,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,oBAAoB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,oBAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,iBAAiB;IACjB,aAAa,CAAC,CAAC;IACf,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,SAAS,CAAC,CAAC;IACX,QAAQ,cAAc,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;IACtD,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,YAAY,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,cAAc,CAAC,EAAE;IAC3E,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC;IACjC,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,gBAAgB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnF,aAAa;IACb,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5C,YAAY,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,SAAS,CAAC,CAAC;IACX,KAAK;IACL,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;IAC1B;IACA,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;IAC3B,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT;IACA,QAAQ,IAAI,IAAI,KAAK,IAAI;IACzB,YAAY,IAAI,KAAK,SAAS;IAC9B,YAAY,IAAI,KAAK,IAAI;IACzB,YAAY,IAAI,KAAK,SAAS,EAAE;IAChC,YAAY,OAAO,IAAI,KAAK,IAAI,CAAC;IACjC,SAAS;IACT;IACA,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAClE,YAAY,OAAO,IAAI,KAAK,IAAI,CAAC;IACjC,SAAS;IACT;IACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IACxD,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;IAC7C,gBAAgB,OAAO,IAAI,CAAC;IAC5B,aAAa;IACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAClD,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IACtD,oBAAoB,OAAO,IAAI,CAAC;IAChC,iBAAiB;IACjB,aAAa;IACb,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT;IACA,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAClE,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;IAC/C,gBAAgB,OAAO,IAAI,CAAC;IAC5B,aAAa;IACb,YAAY,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;IACrC,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;IAClF,oBAAoB,OAAO,IAAI,CAAC;IAChC,iBAAiB;IACjB,aAAa;IACb,YAAY,OAAO,KAAK,CAAC;IACzB,SAAS;IACT;IACA,QAAQ,OAAO,IAAI,CAAC;IACpB,KAAK;IACL,IAAI,QAAQ,GAAG;IACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;IAC1B,KAAK;IACL,IAAI,cAAc,GAAG;IACrB,QAAQ,OAAO,cAAc,CAAC,YAAY,EAAE,CAAC;IAC7C,KAAK;IACL,IAAI,IAAI,UAAU,GAAG;IACrB,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5E,KAAK;IACL;IACA,IAAI,IAAI,WAAW,GAAG;IACtB,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC7E,KAAK;IACL,IAAI,IAAI,gBAAgB,GAAG;IAC3B,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAClF,KAAK;IACL,IAAI,IAAI,KAAK,GAAG;IAChB,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvE,KAAK;IACL,IAAI,IAAI,YAAY,GAAG;IACvB,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC9E,KAAK;IACL,IAAI,IAAI,gBAAgB,GAAG;IAC3B,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAClF,KAAK;IACL,IAAI,IAAI,eAAe,GAAG;IAC1B,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACjF,KAAK;IACL;IACA;IACA;IACA,IAAI,KAAK,CAAC,SAAS,EAAE;IACrB,QAAQ,OAAO,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,KAAK;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,aAAa,GAAG;IAC1B;IACA,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,KAAK;IAC9C,YAAY,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC/C,YAAY,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IACtD,YAAY,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5C,YAAY,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9E,YAAY,IAAI,CAAC,SAAS,EAAE;IAC5B,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,gBAAgB,OAAO;IACvB,aAAa;IACb,YAAY,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IACzE,YAAY,OAAO,SAAS,EAAE;IAC9B,gBAAgB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAChF,gBAAgB,IAAI,CAAC,YAAY,EAAE;IACnC,oBAAoB,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,oBAAoB,OAAO;IAC3B,iBAAiB;IACjB,gBAAgB,SAAS,GAAG,YAAY,CAAC;IACzC,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,aAAa;IACb,SAAS,CAAC,CAAC;IACX,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAAE;IACjE,QAAQ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAClD,QAAQ,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAClD,QAAQ,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACnC,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE;IACnC,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS;IACT,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IACpC,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,QAAQ,OAAO,cAAc,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClF,KAAK;IACL,IAAI,MAAM,GAAG;IACb,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;IAChC,KAAK;IACL,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO,cAAc,CAAC,YAAY,EAAE,CAAC;IAC7C,KAAK;IACL,IAAI,YAAY,CAAC,QAAQ,EAAE;IAC3B,QAAQ,OAAO,cAAc,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,cAAc,CAAC,SAAS,EAAE;IAC9B;IACA,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,cAAc,KAAK,SAAS,EAAE;IAC1D,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,SAAS;IACT,QAAQ,OAAO,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5D,KAAK;IACL,IAAI,YAAY,GAAG;IACnB,QAAQ,OAAO,cAAc,CAAC,YAAY,EAAE,CAAC;IAC7C,KAAK;IACL;;IChOO,MAAM,iBAAiB,SAASC,cAAS,CAAC;IACjD,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,KAAK;IACL,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,KAAK;IACL,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE;IACzB,QAAQ,MAAM,KAAK,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/E,KAAK;IACL,IAAI,MAAM,iBAAiB,CAAC,OAAO,EAAE;IACrC,QAAQ,MAAM,KAAK,CAAC,CAAC,iCAAiC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC1F,KAAK;IACL,IAAI,MAAM,MAAM,GAAG;IACnB,QAAQ,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,KAAK;IACL,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;IAChC,QAAQ,MAAM,KAAK,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACrF,KAAK;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;IAClC,QAAQ,MAAM,KAAK,CAAC,CAAC,8BAA8B,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACvF,KAAK;IACL,IAAI,MAAM,YAAY,GAAG;IACzB,QAAQ,MAAM,KAAK,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC1E,KAAK;IACL;;;;;;;;;;;;;;;;;"}
|
|
@@ -71,21 +71,34 @@ public class FronteggNativePlugin: CAPPlugin {
|
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
let auth = fronteggApp.auth
|
|
74
|
-
var
|
|
75
|
-
return Publishers.
|
|
76
|
-
auth.$
|
|
77
|
-
auth.$refreshToken.map {_ in },
|
|
78
|
-
auth.$user.map {_ in },
|
|
74
|
+
var stateChange: AnyPublisher<Void, Never> {
|
|
75
|
+
return Publishers.Merge5 (
|
|
76
|
+
auth.$refreshingToken.map { _ in },
|
|
79
77
|
auth.$isAuthenticated.map {_ in },
|
|
80
78
|
auth.$isLoading.map {_ in },
|
|
81
79
|
auth.$initializing.map {_ in },
|
|
82
|
-
auth.$showLoader.map {_ in }
|
|
80
|
+
auth.$showLoader.map {_ in }
|
|
81
|
+
)
|
|
82
|
+
.eraseToAnyPublisher()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
var dataChange: AnyPublisher<Void, Never> {
|
|
86
|
+
return Publishers.Merge4 (
|
|
87
|
+
auth.$accessToken.map { _ in },
|
|
88
|
+
auth.$refreshToken.map {_ in },
|
|
89
|
+
auth.$user.map {_ in },
|
|
83
90
|
auth.$selectedRegion.map{_ in}
|
|
84
91
|
)
|
|
85
92
|
.eraseToAnyPublisher()
|
|
86
93
|
}
|
|
87
94
|
|
|
88
|
-
|
|
95
|
+
stateChange.sink(receiveValue: { () in
|
|
96
|
+
self.debounce() {
|
|
97
|
+
self.sendEvent()
|
|
98
|
+
}
|
|
99
|
+
}).store(in: &cancellables)
|
|
100
|
+
|
|
101
|
+
dataChange.sink(receiveValue: { () in
|
|
89
102
|
self.debounce() {
|
|
90
103
|
self.sendEvent()
|
|
91
104
|
}
|
|
@@ -107,6 +120,7 @@ public class FronteggNativePlugin: CAPPlugin {
|
|
|
107
120
|
let body: [String: Any?] = [
|
|
108
121
|
"accessToken": auth.accessToken,
|
|
109
122
|
"refreshToken": auth.refreshToken,
|
|
123
|
+
"refreshingToken": auth.refreshingToken,
|
|
110
124
|
"user": jsonUser,
|
|
111
125
|
"isAuthenticated": auth.isAuthenticated,
|
|
112
126
|
"isLoading": auth.isLoading,
|
|
@@ -156,10 +170,13 @@ public class FronteggNativePlugin: CAPPlugin {
|
|
|
156
170
|
}
|
|
157
171
|
|
|
158
172
|
@objc func login(_ call: CAPPluginCall) {
|
|
173
|
+
let loginHint = call.options["loginHint"] as? String
|
|
159
174
|
DispatchQueue.main.sync {
|
|
160
|
-
fronteggApp.auth.login(
|
|
175
|
+
fronteggApp.auth.login({ _ in
|
|
176
|
+
call.resolve()
|
|
177
|
+
}, loginHint: loginHint)
|
|
161
178
|
}
|
|
162
|
-
|
|
179
|
+
|
|
163
180
|
}
|
|
164
181
|
|
|
165
182
|
|
|
@@ -234,6 +251,7 @@ public class FronteggNativePlugin: CAPPlugin {
|
|
|
234
251
|
let body: [String: Any?] = [
|
|
235
252
|
"accessToken": auth.accessToken,
|
|
236
253
|
"refreshToken": auth.refreshToken,
|
|
254
|
+
"refreshingToken": auth.refreshingToken,
|
|
237
255
|
"user": jsonUser,
|
|
238
256
|
"isAuthenticated": auth.isAuthenticated,
|
|
239
257
|
"isLoading": auth.isLoading,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontegg/ionic-capacitor",
|
|
3
|
-
"version": "2.0.11-alpha.
|
|
3
|
+
"version": "2.0.11-alpha.22584795706",
|
|
4
4
|
"description": "Frontegg Ionic Capacitor SDK",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"android/src/main/",
|
|
11
11
|
"android/build.gradle",
|
|
12
|
+
"android/settings.gradle",
|
|
12
13
|
"dist/",
|
|
13
14
|
"ios/Plugin/",
|
|
14
15
|
"FronteggIonicCapacitor.podspec"
|
|
@@ -44,11 +45,11 @@
|
|
|
44
45
|
"prepublishOnly": "npm run build",
|
|
45
46
|
"prepack": "npm run build",
|
|
46
47
|
"sync": "npm run verify && npm pack && node scripts/postpack.js && cd example && ionic capacitor sync",
|
|
47
|
-
"start:android": "cd example &&
|
|
48
|
-
"start:ios": "cd example &&
|
|
48
|
+
"start:android": "cd example && npx cap run android --livereload --external",
|
|
49
|
+
"start:ios": "cd example && npx cap run ios --livereload --external"
|
|
49
50
|
},
|
|
50
51
|
"dependencies": {
|
|
51
|
-
"@frontegg/rest-api": "^
|
|
52
|
+
"@frontegg/rest-api": "^7.0.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"@angular-eslint/builder": "^16.0.0",
|