@lvce-editor/auth-worker 3.3.0 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authWorkerMain.js +102 -93
- package/package.json +1 -1
package/dist/authWorkerMain.js
CHANGED
|
@@ -1060,6 +1060,100 @@ const initializeOpenerWorker = async () => {
|
|
|
1060
1060
|
set(rpc);
|
|
1061
1061
|
};
|
|
1062
1062
|
|
|
1063
|
+
const databaseName = 'auth-worker';
|
|
1064
|
+
const objectStoreName = 'auth';
|
|
1065
|
+
const memoryStorage = new Map();
|
|
1066
|
+
const state$1 = {
|
|
1067
|
+
databasePromise: undefined
|
|
1068
|
+
};
|
|
1069
|
+
|
|
1070
|
+
// IndexedDB request objects are mutable browser primitives and cannot satisfy the readonly rule structurally.
|
|
1071
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1072
|
+
const requestToPromise = request => {
|
|
1073
|
+
return new Promise((resolve, reject) => {
|
|
1074
|
+
request.addEventListener('success', () => {
|
|
1075
|
+
resolve(request.result);
|
|
1076
|
+
});
|
|
1077
|
+
request.addEventListener('error', () => {
|
|
1078
|
+
reject(request.error ?? new Error('Persistent storage request failed.'));
|
|
1079
|
+
});
|
|
1080
|
+
});
|
|
1081
|
+
};
|
|
1082
|
+
|
|
1083
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1084
|
+
const transactionToPromise = transaction => {
|
|
1085
|
+
return new Promise((resolve, reject) => {
|
|
1086
|
+
transaction.addEventListener('complete', () => {
|
|
1087
|
+
resolve();
|
|
1088
|
+
});
|
|
1089
|
+
transaction.addEventListener('abort', () => {
|
|
1090
|
+
reject(transaction.error ?? new Error('Persistent storage transaction failed.'));
|
|
1091
|
+
});
|
|
1092
|
+
transaction.addEventListener('error', () => {
|
|
1093
|
+
reject(transaction.error ?? new Error('Persistent storage transaction failed.'));
|
|
1094
|
+
});
|
|
1095
|
+
});
|
|
1096
|
+
};
|
|
1097
|
+
const getDatabase = async () => {
|
|
1098
|
+
if (typeof indexedDB === 'undefined') {
|
|
1099
|
+
return undefined;
|
|
1100
|
+
}
|
|
1101
|
+
if (!state$1.databasePromise) {
|
|
1102
|
+
state$1.databasePromise = new Promise((resolve, reject) => {
|
|
1103
|
+
const request = indexedDB.open(databaseName, 1);
|
|
1104
|
+
request.addEventListener('upgradeneeded', () => {
|
|
1105
|
+
const database = request.result;
|
|
1106
|
+
if (!database.objectStoreNames.contains(objectStoreName)) {
|
|
1107
|
+
database.createObjectStore(objectStoreName);
|
|
1108
|
+
}
|
|
1109
|
+
});
|
|
1110
|
+
request.addEventListener('success', () => {
|
|
1111
|
+
resolve(request.result);
|
|
1112
|
+
});
|
|
1113
|
+
request.addEventListener('error', () => {
|
|
1114
|
+
reject(request.error ?? new Error('Failed to open persistent auth storage.'));
|
|
1115
|
+
});
|
|
1116
|
+
});
|
|
1117
|
+
}
|
|
1118
|
+
return state$1.databasePromise;
|
|
1119
|
+
};
|
|
1120
|
+
const getPersistentAuthValue = async key => {
|
|
1121
|
+
const database = await getDatabase();
|
|
1122
|
+
if (!database) {
|
|
1123
|
+
return memoryStorage.get(key) ?? '';
|
|
1124
|
+
}
|
|
1125
|
+
const transaction = database.transaction(objectStoreName, 'readonly');
|
|
1126
|
+
const objectStore = transaction.objectStore(objectStoreName);
|
|
1127
|
+
const value = await requestToPromise(objectStore.get(key));
|
|
1128
|
+
return typeof value === 'string' ? value : '';
|
|
1129
|
+
};
|
|
1130
|
+
const setPersistentAuthValue = async (key, value) => {
|
|
1131
|
+
memoryStorage.set(key, value);
|
|
1132
|
+
const database = await getDatabase();
|
|
1133
|
+
if (!database) {
|
|
1134
|
+
return;
|
|
1135
|
+
}
|
|
1136
|
+
const transaction = database.transaction(objectStoreName, 'readwrite');
|
|
1137
|
+
const objectStore = transaction.objectStore(objectStoreName);
|
|
1138
|
+
objectStore.put(value, key);
|
|
1139
|
+
await transactionToPromise(transaction);
|
|
1140
|
+
};
|
|
1141
|
+
const clearPersistentAuthValue = async key => {
|
|
1142
|
+
memoryStorage.delete(key);
|
|
1143
|
+
const database = await getDatabase();
|
|
1144
|
+
if (!database) {
|
|
1145
|
+
return;
|
|
1146
|
+
}
|
|
1147
|
+
const transaction = database.transaction(objectStoreName, 'readwrite');
|
|
1148
|
+
const objectStore = transaction.objectStore(objectStoreName);
|
|
1149
|
+
objectStore.delete(key);
|
|
1150
|
+
await transactionToPromise(transaction);
|
|
1151
|
+
};
|
|
1152
|
+
|
|
1153
|
+
const getAccessToken = () => {
|
|
1154
|
+
return getPersistentAuthValue('accessToken');
|
|
1155
|
+
};
|
|
1156
|
+
|
|
1063
1157
|
const handleMessagePort = async (port, rpcId) => {
|
|
1064
1158
|
const rpc = await create$4({
|
|
1065
1159
|
commandMap: commandMap,
|
|
@@ -1957,96 +2051,6 @@ const getOidcUserName = async (backendUrl, accessToken, fetchFn = fetch) => {
|
|
|
1957
2051
|
return typeof displayName === 'string' ? displayName : '';
|
|
1958
2052
|
};
|
|
1959
2053
|
|
|
1960
|
-
const databaseName = 'auth-worker';
|
|
1961
|
-
const objectStoreName = 'auth';
|
|
1962
|
-
const memoryStorage = new Map();
|
|
1963
|
-
const state$1 = {
|
|
1964
|
-
databasePromise: undefined
|
|
1965
|
-
};
|
|
1966
|
-
|
|
1967
|
-
// IndexedDB request objects are mutable browser primitives and cannot satisfy the readonly rule structurally.
|
|
1968
|
-
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1969
|
-
const requestToPromise = request => {
|
|
1970
|
-
return new Promise((resolve, reject) => {
|
|
1971
|
-
request.addEventListener('success', () => {
|
|
1972
|
-
resolve(request.result);
|
|
1973
|
-
});
|
|
1974
|
-
request.addEventListener('error', () => {
|
|
1975
|
-
reject(request.error ?? new Error('Persistent storage request failed.'));
|
|
1976
|
-
});
|
|
1977
|
-
});
|
|
1978
|
-
};
|
|
1979
|
-
|
|
1980
|
-
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1981
|
-
const transactionToPromise = transaction => {
|
|
1982
|
-
return new Promise((resolve, reject) => {
|
|
1983
|
-
transaction.addEventListener('complete', () => {
|
|
1984
|
-
resolve();
|
|
1985
|
-
});
|
|
1986
|
-
transaction.addEventListener('abort', () => {
|
|
1987
|
-
reject(transaction.error ?? new Error('Persistent storage transaction failed.'));
|
|
1988
|
-
});
|
|
1989
|
-
transaction.addEventListener('error', () => {
|
|
1990
|
-
reject(transaction.error ?? new Error('Persistent storage transaction failed.'));
|
|
1991
|
-
});
|
|
1992
|
-
});
|
|
1993
|
-
};
|
|
1994
|
-
const getDatabase = async () => {
|
|
1995
|
-
if (typeof indexedDB === 'undefined') {
|
|
1996
|
-
return undefined;
|
|
1997
|
-
}
|
|
1998
|
-
if (!state$1.databasePromise) {
|
|
1999
|
-
state$1.databasePromise = new Promise((resolve, reject) => {
|
|
2000
|
-
const request = indexedDB.open(databaseName, 1);
|
|
2001
|
-
request.addEventListener('upgradeneeded', () => {
|
|
2002
|
-
const database = request.result;
|
|
2003
|
-
if (!database.objectStoreNames.contains(objectStoreName)) {
|
|
2004
|
-
database.createObjectStore(objectStoreName);
|
|
2005
|
-
}
|
|
2006
|
-
});
|
|
2007
|
-
request.addEventListener('success', () => {
|
|
2008
|
-
resolve(request.result);
|
|
2009
|
-
});
|
|
2010
|
-
request.addEventListener('error', () => {
|
|
2011
|
-
reject(request.error ?? new Error('Failed to open persistent auth storage.'));
|
|
2012
|
-
});
|
|
2013
|
-
});
|
|
2014
|
-
}
|
|
2015
|
-
return state$1.databasePromise;
|
|
2016
|
-
};
|
|
2017
|
-
const getPersistentAuthValue = async key => {
|
|
2018
|
-
const database = await getDatabase();
|
|
2019
|
-
if (!database) {
|
|
2020
|
-
return memoryStorage.get(key) ?? '';
|
|
2021
|
-
}
|
|
2022
|
-
const transaction = database.transaction(objectStoreName, 'readonly');
|
|
2023
|
-
const objectStore = transaction.objectStore(objectStoreName);
|
|
2024
|
-
const value = await requestToPromise(objectStore.get(key));
|
|
2025
|
-
return typeof value === 'string' ? value : '';
|
|
2026
|
-
};
|
|
2027
|
-
const setPersistentAuthValue = async (key, value) => {
|
|
2028
|
-
memoryStorage.set(key, value);
|
|
2029
|
-
const database = await getDatabase();
|
|
2030
|
-
if (!database) {
|
|
2031
|
-
return;
|
|
2032
|
-
}
|
|
2033
|
-
const transaction = database.transaction(objectStoreName, 'readwrite');
|
|
2034
|
-
const objectStore = transaction.objectStore(objectStoreName);
|
|
2035
|
-
objectStore.put(value, key);
|
|
2036
|
-
await transactionToPromise(transaction);
|
|
2037
|
-
};
|
|
2038
|
-
const clearPersistentAuthValue = async key => {
|
|
2039
|
-
memoryStorage.delete(key);
|
|
2040
|
-
const database = await getDatabase();
|
|
2041
|
-
if (!database) {
|
|
2042
|
-
return;
|
|
2043
|
-
}
|
|
2044
|
-
const transaction = database.transaction(objectStoreName, 'readwrite');
|
|
2045
|
-
const objectStore = transaction.objectStore(objectStoreName);
|
|
2046
|
-
objectStore.delete(key);
|
|
2047
|
-
await transactionToPromise(transaction);
|
|
2048
|
-
};
|
|
2049
|
-
|
|
2050
2054
|
const callbackUrlKey = 'oidcCallbackUrl';
|
|
2051
2055
|
const clientIdKey = 'oidcClientId';
|
|
2052
2056
|
const pendingClientIdKey = 'pendingOidcClientId';
|
|
@@ -2494,6 +2498,10 @@ const waitForBackendLogin = async (backendUrl, timeoutMs = 30_000, pollIntervalM
|
|
|
2494
2498
|
return getLoggedOutBackendAuthState(lastErrorMessage);
|
|
2495
2499
|
};
|
|
2496
2500
|
|
|
2501
|
+
const getAuthUseRedirect = platform => {
|
|
2502
|
+
return platform !== Electron;
|
|
2503
|
+
};
|
|
2504
|
+
|
|
2497
2505
|
// cspell:ignore pkce
|
|
2498
2506
|
|
|
2499
2507
|
const createPkceValues = async () => {
|
|
@@ -2894,7 +2902,8 @@ const getMockLoginResult = async signingInState => {
|
|
|
2894
2902
|
}
|
|
2895
2903
|
return persistLoginResult(getLoggedInState(signingInState, response));
|
|
2896
2904
|
};
|
|
2897
|
-
const getInteractiveLoginResult = async (backendUrl, platform,
|
|
2905
|
+
const getInteractiveLoginResult = async (backendUrl, platform, signingInState) => {
|
|
2906
|
+
const authUseRedirect = getAuthUseRedirect(platform);
|
|
2898
2907
|
const uid = 0;
|
|
2899
2908
|
const {
|
|
2900
2909
|
clientId,
|
|
@@ -2926,7 +2935,6 @@ const getInteractiveLoginResult = async (backendUrl, platform, authUseRedirect,
|
|
|
2926
2935
|
};
|
|
2927
2936
|
const handleClickLogin = async options => {
|
|
2928
2937
|
const {
|
|
2929
|
-
authUseRedirect,
|
|
2930
2938
|
backendUrl,
|
|
2931
2939
|
platform
|
|
2932
2940
|
} = options;
|
|
@@ -2945,7 +2953,7 @@ const handleClickLogin = async options => {
|
|
|
2945
2953
|
if (mockLoginResult) {
|
|
2946
2954
|
return mockLoginResult;
|
|
2947
2955
|
}
|
|
2948
|
-
return getInteractiveLoginResult(backendUrl, platform,
|
|
2956
|
+
return getInteractiveLoginResult(backendUrl, platform, signingInState);
|
|
2949
2957
|
} catch (error) {
|
|
2950
2958
|
await clearPendingOidcAuthState();
|
|
2951
2959
|
const errorMessage = error instanceof Error && error.message ? error.message : 'Backend authentication failed.';
|
|
@@ -2973,6 +2981,7 @@ const commandMap = {
|
|
|
2973
2981
|
'Auth.clearMocks': clear,
|
|
2974
2982
|
'Auth.consumeNextLoginResponse': consumeNextLoginResponse,
|
|
2975
2983
|
'Auth.consumeNextRefreshResponse': consumeNextRefreshResponse,
|
|
2984
|
+
'Auth.getAccessToken': getAccessToken,
|
|
2976
2985
|
'Auth.hasPendingMockLoginResponse': hasPendingMockLoginResponse,
|
|
2977
2986
|
'Auth.hasPendingMockRefreshResponse': hasPendingMockRefreshResponse,
|
|
2978
2987
|
'Auth.initialize': initialize,
|