@ankhorage/studio 2.0.4 → 2.0.5
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/README.md +1 -1
- package/dist/host/layout/templates/auth/callback.d.ts.map +1 -1
- package/dist/host/layout/templates/auth/callback.js +1 -28
- package/dist/host/layout/templates/auth/callback.js.map +1 -1
- package/dist/host/layout/templates/auth/oauthCompletion.d.ts.map +1 -1
- package/dist/host/layout/templates/auth/oauthCompletion.js +23 -1
- package/dist/host/layout/templates/auth/oauthCompletion.js.map +1 -1
- package/dist/host/orchestrator/templates.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/studio
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Standalone Studio authoring package for Ankhorage apps.
|
|
9
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/callback.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/callback.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,UA+J7F"}
|
|
@@ -14,33 +14,6 @@ const SIGN_IN_ROUTE = '${signInTarget}';
|
|
|
14
14
|
const POST_SIGN_IN_ROUTE = '${postSignInTarget}';
|
|
15
15
|
const callbackScreenOptions = { title: 'Completing sign in' };
|
|
16
16
|
|
|
17
|
-
interface ActiveCallbackCompletion {
|
|
18
|
-
callbackUrl: string;
|
|
19
|
-
promise: ReturnType<typeof completeOAuthCallback>;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
let activeCallbackCompletion: ActiveCallbackCompletion | null = null;
|
|
23
|
-
|
|
24
|
-
function completeOAuthCallbackOnce(callbackUrl: string) {
|
|
25
|
-
if (activeCallbackCompletion?.callbackUrl !== callbackUrl) {
|
|
26
|
-
const completion: ActiveCallbackCompletion = {
|
|
27
|
-
callbackUrl,
|
|
28
|
-
promise: completeOAuthCallback(callbackUrl),
|
|
29
|
-
};
|
|
30
|
-
activeCallbackCompletion = completion;
|
|
31
|
-
void completion.promise
|
|
32
|
-
.finally(() => {
|
|
33
|
-
if (activeCallbackCompletion === completion) {
|
|
34
|
-
activeCallbackCompletion = null;
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
.catch(() => {
|
|
38
|
-
// The original promise remains the callback screen's error boundary.
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return activeCallbackCompletion.promise;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
17
|
function useOAuthCallbackOutcome(callbackUrl: string | null) {
|
|
45
18
|
const router = useRouter();
|
|
46
19
|
const handledOutcomeRef = useRef(false);
|
|
@@ -126,7 +99,7 @@ async function completeCallbackRouteAsync(args: {
|
|
|
126
99
|
return;
|
|
127
100
|
}
|
|
128
101
|
|
|
129
|
-
const outcome = await
|
|
102
|
+
const outcome = await completeOAuthCallback(callbackUrl);
|
|
130
103
|
if (signal.aborted || handledOutcomeRef.current) return;
|
|
131
104
|
handledOutcomeRef.current = true;
|
|
132
105
|
if (outcome.status === 'authenticated') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,UAAU,uBAAuB,CAAC,IAAsD;IAC5F,MAAM,YAAY,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAElG,OAAO;;;;;;;yBAOgB,YAAY;8BACP,gBAAgB
|
|
1
|
+
{"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,UAAU,uBAAuB,CAAC,IAAsD;IAC5F,MAAM,YAAY,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;IAElG,OAAO;;;;;;;yBAOgB,YAAY;8BACP,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJ7C,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCompletion.d.ts","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/oauthCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAInF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,0BAA0B,CAAC;CAC3C,
|
|
1
|
+
{"version":3,"file":"oauthCompletion.d.ts","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/oauthCompletion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAInF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,0BAA0B,CAAC;CAC3C,UAoKA"}
|
|
@@ -20,6 +20,8 @@ const GENERATED_NATIVE_SCHEMES = {
|
|
|
20
20
|
|
|
21
21
|
export type OAuthCallbackRouteParams = Readonly<Record<string, string | string[] | undefined>>;
|
|
22
22
|
|
|
23
|
+
const activeCallbackCompletions = new Map<string, Promise<GeneratedOAuthTransportOutcome>>();
|
|
24
|
+
|
|
23
25
|
export function resolveOAuthCallbackUrl(params: OAuthCallbackRouteParams): string {
|
|
24
26
|
const callbackUrl = new URL(resolveOAuthRedirectUri());
|
|
25
27
|
for (const [name, value] of Object.entries(params)) {
|
|
@@ -33,7 +35,27 @@ export function resolveOAuthCallbackUrl(params: OAuthCallbackRouteParams): strin
|
|
|
33
35
|
return callbackUrl.toString();
|
|
34
36
|
}
|
|
35
37
|
|
|
36
|
-
export
|
|
38
|
+
export function completeOAuthCallback(
|
|
39
|
+
callbackUrl: string,
|
|
40
|
+
): Promise<GeneratedOAuthTransportOutcome> {
|
|
41
|
+
const activeCompletion = activeCallbackCompletions.get(callbackUrl);
|
|
42
|
+
if (activeCompletion) return activeCompletion;
|
|
43
|
+
|
|
44
|
+
const completion = completeOAuthCallbackAsync(callbackUrl);
|
|
45
|
+
activeCallbackCompletions.set(callbackUrl, completion);
|
|
46
|
+
void completion
|
|
47
|
+
.finally(() => {
|
|
48
|
+
if (activeCallbackCompletions.get(callbackUrl) === completion) {
|
|
49
|
+
activeCallbackCompletions.delete(callbackUrl);
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
.catch(() => {
|
|
53
|
+
// The original promise remains the caller's error boundary.
|
|
54
|
+
});
|
|
55
|
+
return completion;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function completeOAuthCallbackAsync(
|
|
37
59
|
callbackUrl: string,
|
|
38
60
|
): Promise<GeneratedOAuthTransportOutcome> {
|
|
39
61
|
const { oauth } = authAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCompletion.js","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/oauthCompletion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,UAAU,wBAAwB,CAAC,IAGxC;IACC,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAElE,OAAO;;;;;;;;;gCASuB,aAAa;;aAEhC,aAAa;SACjB,SAAS
|
|
1
|
+
{"version":3,"file":"oauthCompletion.js","sourceRoot":"","sources":["../../../../../src/host/layout/templates/auth/oauthCompletion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,UAAU,wBAAwB,CAAC,IAGxC;IACC,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAElE,OAAO;;;;;;;;;gCASuB,aAAa;;aAEhC,aAAa;SACjB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJjB,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA0B;IACzD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;AACjF,CAAC"}
|
|
@@ -5,7 +5,7 @@ const DATA_SOURCES_VERSION = '^2.0.0';
|
|
|
5
5
|
const RUNTIME_VERSION = '^2.2.0';
|
|
6
6
|
const STUDIO_VERSION = '^2.0.2';
|
|
7
7
|
const UTILITY_VERSION = '^0.2.0';
|
|
8
|
-
const SUPABASE_AUTH_VERSION = '^1.2.
|
|
8
|
+
const SUPABASE_AUTH_VERSION = '^1.2.5';
|
|
9
9
|
const SUPABASE_STORAGE_VERSION = '^0.2.0';
|
|
10
10
|
const ZORA_VERSION = '^3.0.0';
|
|
11
11
|
const EXPO_RUNTIME_VERSION = '^3.0.4';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
"@ankhorage/orchestrator-module-expo-localization": "^0.6.0",
|
|
219
219
|
"@ankhorage/react-native-reanimated-dnd-web": "^0.4.0",
|
|
220
220
|
"@ankhorage/runtime": "^2.2.0",
|
|
221
|
-
"@ankhorage/supabase-auth": "^1.2.
|
|
221
|
+
"@ankhorage/supabase-auth": "^1.2.5",
|
|
222
222
|
"@ankhorage/supabase-storage": "^0.2.0",
|
|
223
223
|
"@ankhorage/supabase-vault": "^0.2.4",
|
|
224
224
|
"@ankhorage/templates": "^7.0.0",
|