@atlasauth/js 0.1.1 → 0.1.3
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/native.d.ts +24 -0
- package/dist/native.js +42 -0
- package/dist/native.js.map +1 -1
- package/package.json +1 -1
package/dist/native.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* id_token. The app posts that to `/v1/client/sign_ins/id_token` and then reads
|
|
8
8
|
* the result exactly like any other attempt (nextStep / a returned ticket).
|
|
9
9
|
*/
|
|
10
|
+
import { type FapiClient, type FlowState } from './fapi';
|
|
10
11
|
export interface NativeSignInBody {
|
|
11
12
|
provider: string;
|
|
12
13
|
id_token: string;
|
|
@@ -31,6 +32,27 @@ export interface NativeSignInResult {
|
|
|
31
32
|
* signed-in.
|
|
32
33
|
*/
|
|
33
34
|
export declare function parseNativeSignInResponse(body: unknown): NativeSignInResult | null;
|
|
35
|
+
/**
|
|
36
|
+
* Mint a single-use, replay-binding nonce for a native id_token sign-in. Call
|
|
37
|
+
* this FIRST, hand the returned nonce to the provider SDK (Google GSI
|
|
38
|
+
* `initialize({ nonce })`), then post the resulting id_token with the SAME nonce
|
|
39
|
+
* via {@link nativeSignIn}. Returns null if the mint failed (e.g. the provider
|
|
40
|
+
* doesn't support native sign-in) — the caller should surface an error rather
|
|
41
|
+
* than fall back to a nonce-less sign-in.
|
|
42
|
+
*/
|
|
43
|
+
export declare function mintNativeNonce(client: FapiClient, provider: string): Promise<string | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Post a provider id_token (+ the nonce from {@link mintNativeNonce}) to the
|
|
46
|
+
* native sign-in endpoint and return a {@link FlowState} — the same shape the
|
|
47
|
+
* password/redirect drivers return, so a caller drives completion identically:
|
|
48
|
+
* a `complete` attempt carries the one-time `ticket` to exchange for cookies; a
|
|
49
|
+
* `needs_second_factor` status means a factor is still owed.
|
|
50
|
+
*/
|
|
51
|
+
export declare function nativeSignIn(client: FapiClient, input: {
|
|
52
|
+
provider: string;
|
|
53
|
+
idToken: string;
|
|
54
|
+
nonce?: string;
|
|
55
|
+
}): Promise<FlowState>;
|
|
34
56
|
interface GsiId {
|
|
35
57
|
initialize(config: Record<string, unknown>): void;
|
|
36
58
|
prompt(listener?: (notification: unknown) => void): void;
|
|
@@ -105,6 +127,8 @@ export declare function renderGoogleOverlayButton(opts: {
|
|
|
105
127
|
onCredential: (idToken: string) => void;
|
|
106
128
|
onError?: (error: Error) => void;
|
|
107
129
|
size?: 'large' | 'medium' | 'small';
|
|
130
|
+
/** Also show the One-Tap prompt (OFF by default; the overlay button always shows). */
|
|
131
|
+
oneTap?: boolean;
|
|
108
132
|
host?: GsiHost;
|
|
109
133
|
}): Promise<{
|
|
110
134
|
destroy: () => void;
|
package/dist/native.js
CHANGED
|
@@ -11,11 +11,14 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.nativeSignInBody = nativeSignInBody;
|
|
13
13
|
exports.parseNativeSignInResponse = parseNativeSignInResponse;
|
|
14
|
+
exports.mintNativeNonce = mintNativeNonce;
|
|
15
|
+
exports.nativeSignIn = nativeSignIn;
|
|
14
16
|
exports.loadGoogleIdentityServices = loadGoogleIdentityServices;
|
|
15
17
|
exports.resetGoogleIdentityServices = resetGoogleIdentityServices;
|
|
16
18
|
exports.requestGoogleCredential = requestGoogleCredential;
|
|
17
19
|
exports.renderGoogleButton = renderGoogleButton;
|
|
18
20
|
exports.renderGoogleOverlayButton = renderGoogleOverlayButton;
|
|
21
|
+
const fapi_1 = require("./fapi");
|
|
19
22
|
/** Build the POST body for `/v1/client/sign_ins/id_token`. */
|
|
20
23
|
function nativeSignInBody(input) {
|
|
21
24
|
return {
|
|
@@ -42,6 +45,40 @@ function parseNativeSignInResponse(body) {
|
|
|
42
45
|
...(typeof b.ticket === 'string' ? { ticket: b.ticket } : {}),
|
|
43
46
|
};
|
|
44
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Mint a single-use, replay-binding nonce for a native id_token sign-in. Call
|
|
50
|
+
* this FIRST, hand the returned nonce to the provider SDK (Google GSI
|
|
51
|
+
* `initialize({ nonce })`), then post the resulting id_token with the SAME nonce
|
|
52
|
+
* via {@link nativeSignIn}. Returns null if the mint failed (e.g. the provider
|
|
53
|
+
* doesn't support native sign-in) — the caller should surface an error rather
|
|
54
|
+
* than fall back to a nonce-less sign-in.
|
|
55
|
+
*/
|
|
56
|
+
async function mintNativeNonce(client, provider) {
|
|
57
|
+
const response = await client.post('/v1/client/sign_ins/id_token/nonce', {
|
|
58
|
+
provider,
|
|
59
|
+
});
|
|
60
|
+
return response.ok && response.data?.nonce ? response.data.nonce : null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Post a provider id_token (+ the nonce from {@link mintNativeNonce}) to the
|
|
64
|
+
* native sign-in endpoint and return a {@link FlowState} — the same shape the
|
|
65
|
+
* password/redirect drivers return, so a caller drives completion identically:
|
|
66
|
+
* a `complete` attempt carries the one-time `ticket` to exchange for cookies; a
|
|
67
|
+
* `needs_second_factor` status means a factor is still owed.
|
|
68
|
+
*/
|
|
69
|
+
async function nativeSignIn(client, input) {
|
|
70
|
+
const response = await client.post('/v1/client/sign_ins/id_token', nativeSignInBody(input));
|
|
71
|
+
if (!response.ok || !response.data) {
|
|
72
|
+
return { ...fapi_1.initialFlow, busy: false, errors: response.errors };
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
attempt: response.data,
|
|
76
|
+
errors: [],
|
|
77
|
+
busy: false,
|
|
78
|
+
pollSecret: fapi_1.initialFlow.pollSecret,
|
|
79
|
+
ticket: response.data.ticket ?? null,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
45
82
|
/* ---- Google Identity Services (One-Tap / GSI) ---------------------------- */
|
|
46
83
|
const GSI_SRC = 'https://accounts.google.com/gsi/client';
|
|
47
84
|
let gsiLoad = null;
|
|
@@ -189,6 +226,11 @@ async function renderGoogleOverlayButton(opts) {
|
|
|
189
226
|
observer = new RO(() => draw());
|
|
190
227
|
observer.observe(opts.wrapper);
|
|
191
228
|
}
|
|
229
|
+
// One-Tap is opt-in and independent of the button: the same initialized `id`
|
|
230
|
+
// (with the same nonce + callback) drives the prompt, so a One-Tap credential
|
|
231
|
+
// flows through the identical `onCredential` path.
|
|
232
|
+
if (opts.oneTap)
|
|
233
|
+
id.prompt();
|
|
192
234
|
return {
|
|
193
235
|
destroy: () => {
|
|
194
236
|
observer?.disconnect();
|
package/dist/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
|