@atlasauth/vue 0.2.1 → 0.4.0
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/CHANGELOG.md +98 -0
- package/README.md +1 -1
- package/dist/components.d.ts +7 -0
- package/dist/components.js +325 -22
- package/dist/components.js.map +1 -1
- package/dist/composables.d.ts +3 -2
- package/dist/composables.js.map +1 -1
- package/dist/flow.d.ts +32 -3
- package/dist/flow.js +63 -17
- package/dist/flow.js.map +1 -1
- package/dist/i18n.js +18 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +18 -3
- package/dist/plugin.js +78 -29
- package/dist/plugin.js.map +1 -1
- package/package.json +6 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# @atlasauth/vue changelog
|
|
2
|
+
|
|
3
|
+
## 0.4.0
|
|
4
|
+
- **Safer sign-out.** `signOut(options?)` now resolves `SignOutResult` (`{ revoked: boolean; activeSessionId?: string }`)
|
|
5
|
+
instead of `void` (on `AtlasClient.signOut` and `useAuth().signOut`; existing `await signOut()` call sites keep
|
|
6
|
+
working). The session is remembered before it is revoked (a tombstone in `localStorage`, per Frontend API origin)
|
|
7
|
+
and the revoke is retried once; when the server still can't confirm it, the local sign-out happens anyway and
|
|
8
|
+
`revoked` is `false`. A reload, a token refresh or a tab opened later never re-adopts that session while the
|
|
9
|
+
browser's cookie still carries it, and the revoke is re-tried in the background (the tombstone is dropped once
|
|
10
|
+
it lands). A refresh in flight during sign-out can no longer put the token back. With no session in memory the
|
|
11
|
+
revoke still runs (the session is read from `GET /v1/client`). Built on `SignOutGuard` from `@atlasauth/js`.
|
|
12
|
+
- **`signOut({ strict: true })`** rejects with a `SignOutError` (`code: 'SIGN_OUT_REVOKE_FAILED'`, `sessionId`,
|
|
13
|
+
`status`) when the revoke was not confirmed — after the local sign-out.
|
|
14
|
+
- **Promoted sessions are adopted.** When the server promotes another account signed in on this browser
|
|
15
|
+
(`active_session_id` on the revoke), `signOut()` adopts it and resolves `activeSessionId`.
|
|
16
|
+
- **Sibling tabs.** A tab whose session another tab signed out of (the tombstone reaches it through `localStorage`)
|
|
17
|
+
drops its token and re-checks, so it signs out too.
|
|
18
|
+
- **Popup OAuth landing.** On startup the plugin completes a popup OAuth landing first
|
|
19
|
+
(`completeOAuthPopupLanding()` from `@atlasauth/js`): the result is relayed to the opener and the window closes,
|
|
20
|
+
or, when no opener takes it, the ticket is exchanged here (or the page continues to the step's
|
|
21
|
+
`continuationUrl`). After a ticket exchange inside the Atlas popup the popup hands back to the opener and
|
|
22
|
+
closes (`closeOAuthPopupAfterSignIn()`); an ordinary tab never closes.
|
|
23
|
+
- **Email delivery in the prebuilt components** (from `settings.emailDelivery`, all `true` when the server omits it):
|
|
24
|
+
- `<SignUp>` shows a "can't send email" notice instead of the email + password form when
|
|
25
|
+
`emailDelivery.passwordSignUp` is `false` (new catalog key `signUp.emailUnavailable`, default
|
|
26
|
+
`"This app can't send email right now. Try another sign-in method or contact the app owner."`).
|
|
27
|
+
- `<SignIn>`'s first-factor step now offers "Email me a code" / "Email me a sign-in link" for the server's
|
|
28
|
+
`email_code` / `email_link` strategies, filtered with `offeredFirstFactors()` so they are hidden while the app
|
|
29
|
+
can't deliver email (new catalog keys `signIn.useEmailCode`, `signIn.useEmailLink`; buttons carry
|
|
30
|
+
`data-strategy`).
|
|
31
|
+
- **Added to `FlowController`**: `prepare(strategy: 'email_code' | 'email_link'): Promise<boolean>`
|
|
32
|
+
(`prepare_first_factor`).
|
|
33
|
+
- **Added exports** `SignOutError` and `type SignOutResult` (re-exported from `@atlasauth/js`).
|
|
34
|
+
|
|
35
|
+
## 0.3.0
|
|
36
|
+
- **`<SignUp>` now creates accounts.** Its first step is a create-account form (the instance's
|
|
37
|
+
configured sign-up fields, email, password and the legal-consent row) that posts
|
|
38
|
+
`POST /v1/client/sign_ups`; the emailed-code step and the ticket exchange then run through the shared
|
|
39
|
+
flow. Previously `<SignUp>` rendered the sign-in identifier step and could not create an account.
|
|
40
|
+
- **Captcha renders automatically.** When the instance turns captcha on for a flow, `<SignUp>` and
|
|
41
|
+
`<SignIn>` show the provider's widget (Turnstile, hCaptcha, reCAPTCHA v2/v3/Enterprise) in the
|
|
42
|
+
configured mode (`visible`, `managed`, or `invisible` — run on submit), send its token as
|
|
43
|
+
`captcha_token`, answer the sign-in `needs_captcha` step (continuing as soon as it is solved), and on
|
|
44
|
+
`CAPTCHA_REQUIRED` / `CAPTCHA_FAILED` show a localized message and a fresh widget.
|
|
45
|
+
- **Added to `FlowController`** (returned by `useSignIn()` / `useSignUp()`): `create(values, consent?)`,
|
|
46
|
+
`settings: ShallowRef<InstanceSettings | null>`, `captcha: CaptchaController`,
|
|
47
|
+
`signUpCaptcha: CaptchaController`.
|
|
48
|
+
- **Added type re-exports** `InstanceSettings`, `PublicSignUpField`, `CaptchaController`,
|
|
49
|
+
`CaptchaFlowKey`, `CaptchaWidgetMode`, `FlowCaptcha` from `@atlasauth/js`.
|
|
50
|
+
- **Added catalog keys** (en-US): `signUp.emailLabel`, `signUp.passwordLabel`, `signUp.optionalField`,
|
|
51
|
+
`signUp.selectPlaceholder`, `signUp.consentAgree`, `signUp.consentNotice`, `signUp.terms`,
|
|
52
|
+
`signUp.privacy`, `signUp.and`, `captcha.prompt`, `captcha.required`, `captcha.failed`.
|
|
53
|
+
- New element classes `atlas-captcha`, `atlas-consent`, `atlas-choices`, `atlas-choice`, `atlas-text`,
|
|
54
|
+
`atlas-link`; the flow's inputs now carry `name` attributes.
|
|
55
|
+
- **`frontendApi` is validated at `createAtlas()`.** A missing (or non-string) or malformed value now throws an
|
|
56
|
+
`AtlasConfigError` (from `@atlasauth/js`; `code: 'FRONTEND_API_REQUIRED'` or `'FRONTEND_API_INVALID'`)
|
|
57
|
+
instead of silently sending requests to relative URLs on the app's own origin. Accepted: an absolute
|
|
58
|
+
`https:` URL (`http:` only for localhost / local development hosts), or `"same-origin"` / a root-relative path such as `"/atlas"` for a reverse proxy.
|
|
59
|
+
- **Deprecated:** `frontendApi: ""` (the original same-origin spelling) still works as same-origin, with a
|
|
60
|
+
one-time console warning; use `"same-origin"` instead.
|
|
61
|
+
|
|
62
|
+
## 0.2.1
|
|
63
|
+
- **Front-channel logout on sign-out.** `signOut()` now loads the `frontchannel_logout_urls` the
|
|
64
|
+
Frontend API returns (apps signed in with "Sign in with Atlas" through this session) in hidden,
|
|
65
|
+
sandboxed iframes, so those apps clear their sessions in this browser too. It waits until the frames
|
|
66
|
+
load or 5 s pass, never fails the sign-out, only loads `https:` URLs (and `http://localhost`), and
|
|
67
|
+
does nothing during SSR. Pass `signOut({ frontchannel: false })` to skip it.
|
|
68
|
+
|
|
69
|
+
## 0.2.0
|
|
70
|
+
- **Design system.** `createAtlas` now applies the design configured in the Atlas dashboard
|
|
71
|
+
automatically (fetched from the Frontend API; opt out with `appearance.instanceDesign: false`).
|
|
72
|
+
- **New `appearance.preset` and `appearance.design`** — the same settings and semantics as
|
|
73
|
+
`@atlasauth/react`: dashboard design < `preset` < `variables` < `design`. Invalid values are dropped
|
|
74
|
+
with a development warning and never reach CSS. The document root gets stable `data-atlas-*`
|
|
75
|
+
attributes and the `--atlas-*` design variables; web fonts are linked from your Frontend API.
|
|
76
|
+
- `appearance.variables` / `baseTheme` are unchanged when no design is in play.
|
|
77
|
+
- New dependency: `@atlasauth/design`.
|
|
78
|
+
|
|
79
|
+
## 0.1.5
|
|
80
|
+
- **`useAuth()` now also returns `status` and `session`.** `status` is a ref holding the three-state `AuthStatus` (`loading` | `signed_in` | `signed_out`) and `session` a ref holding the active session or `null`; both come from the same source as `isLoaded` / `isSignedIn`.
|
|
81
|
+
- README uses the published `@atlasauth/*` package names.
|
|
82
|
+
|
|
83
|
+
## 0.1.4
|
|
84
|
+
- **Docs fix.** Frontend API host example uses a single-label host (`your-instance-fapi.atlasauth.net`).
|
|
85
|
+
|
|
86
|
+
## 0.1.3
|
|
87
|
+
- **Metadata.** Added `repository` (monorepo + package directory), `homepage`, and `bugs` so the npm page links back to source.
|
|
88
|
+
|
|
89
|
+
## 0.1.2
|
|
90
|
+
- **Docs fix.** README Frontend API example now uses `https://your-instance.fapi.atlasauth.net` (was `.atlas.dev`).
|
|
91
|
+
|
|
92
|
+
## 0.1.1
|
|
93
|
+
- First published release.
|
|
94
|
+
- **Plugin.** `app.use(createAtlas({ publishableKey, frontendApi, ... }))` installs Atlas app-wide.
|
|
95
|
+
- **Composables.** `useAtlas()`, `useUser()`, `useSession()`, `useAuth()`, `useOrganization()`, and the headless flow composables `useSignIn()`, `useSignUp()` and `useFlow()`.
|
|
96
|
+
- **Components.** `SignedIn`, `SignedOut`, `AtlasLoading`, `AtlasLoaded`, `Protect`, `SignIn`, `SignUp`, `UserButton`, `OrganizationSwitcher`, `UserProfile` and `OrganizationProfile`.
|
|
97
|
+
- Appearance, localization and authorization helpers shared with the other Atlas UI SDKs.
|
|
98
|
+
|
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ createApp(App)
|
|
|
35
35
|
.use(
|
|
36
36
|
createAtlas({
|
|
37
37
|
publishableKey: 'pk_live_…',
|
|
38
|
-
|
|
38
|
+
frontendApi: 'https://your-instance-fapi.atlasauth.net', // required; 'same-origin' behind a reverse proxy
|
|
39
39
|
// appearance: { baseTheme: 'dark', elements: { formButtonPrimary: 'rounded-xl' } },
|
|
40
40
|
// localization: myCatalog,
|
|
41
41
|
}),
|
package/dist/components.d.ts
CHANGED
|
@@ -85,6 +85,13 @@ export declare const SignIn: import("vue").DefineComponent<import("vue").Extract
|
|
|
85
85
|
}>> & Readonly<{}>, {
|
|
86
86
|
afterUrl: string;
|
|
87
87
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
88
|
+
/**
|
|
89
|
+
* §10.2 `<SignUp/>` — creates an account. The first step is the create-account
|
|
90
|
+
* form, which POSTs `/v1/client/sign_ups`; from there the flow is server-driven
|
|
91
|
+
* exactly like `<SignIn>` (the emailed-code step, then the ticket exchange).
|
|
92
|
+
* Fields, consent and captcha come from the instance's settings, so turning
|
|
93
|
+
* them on in the dashboard needs no code change.
|
|
94
|
+
*/
|
|
88
95
|
export declare const SignUp: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
89
96
|
afterUrl: {
|
|
90
97
|
type: StringConstructor;
|
package/dist/components.js
CHANGED
|
@@ -100,6 +100,34 @@ exports.Protect = (0, vue_1.defineComponent)({
|
|
|
100
100
|
};
|
|
101
101
|
},
|
|
102
102
|
});
|
|
103
|
+
/**
|
|
104
|
+
* The element a flow's captcha widget draws into (see `createCaptchaController`
|
|
105
|
+
* in `@atlasauth/js`). Renders nothing when the flow needs no captcha.
|
|
106
|
+
*/
|
|
107
|
+
function captchaSlot(controller) {
|
|
108
|
+
if (!controller?.needed)
|
|
109
|
+
return null;
|
|
110
|
+
return (0, vue_1.h)('div', {
|
|
111
|
+
key: 'captcha',
|
|
112
|
+
class: 'atlas-captcha',
|
|
113
|
+
'data-atlas-captcha': '',
|
|
114
|
+
ref: slotRef(controller),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* One stable ref callback per controller: Vue re-invokes a CHANGED function
|
|
119
|
+
* ref with null and then the element, which would tear down and redraw the
|
|
120
|
+
* widget on every render (losing a solved token).
|
|
121
|
+
*/
|
|
122
|
+
const slotRefs = new WeakMap();
|
|
123
|
+
function slotRef(controller) {
|
|
124
|
+
let ref = slotRefs.get(controller);
|
|
125
|
+
if (!ref) {
|
|
126
|
+
ref = (el) => controller.attach(el ?? null);
|
|
127
|
+
slotRefs.set(controller, ref);
|
|
128
|
+
}
|
|
129
|
+
return ref;
|
|
130
|
+
}
|
|
103
131
|
/**
|
|
104
132
|
* The server-driven flow shell.
|
|
105
133
|
*
|
|
@@ -114,16 +142,55 @@ const AttemptFlow = (0, vue_1.defineComponent)({
|
|
|
114
142
|
errors: { type: Array, default: () => [] },
|
|
115
143
|
titleKey: { type: String, required: true },
|
|
116
144
|
onSubmit: { type: Function, required: true },
|
|
145
|
+
/**
|
|
146
|
+
* The sign-in captcha, drawn above the submit button on the identifier step
|
|
147
|
+
* (an always-on sign-in captcha) and on the challenge step the server
|
|
148
|
+
* demands with `needs_captcha`.
|
|
149
|
+
*/
|
|
150
|
+
captcha: { type: Object, default: null },
|
|
151
|
+
/**
|
|
152
|
+
* The instance's `emailDelivery` (from its settings). While the app cannot
|
|
153
|
+
* deliver email, the first-factor step offers no emailed code or link.
|
|
154
|
+
*/
|
|
155
|
+
emailDelivery: { type: Object, default: null },
|
|
156
|
+
/**
|
|
157
|
+
* Email a sign-in code or link (sign-in only). Without it the first-factor
|
|
158
|
+
* step offers the password alone.
|
|
159
|
+
*/
|
|
160
|
+
onPrepare: {
|
|
161
|
+
type: Function,
|
|
162
|
+
default: undefined,
|
|
163
|
+
},
|
|
117
164
|
},
|
|
118
165
|
setup(props) {
|
|
119
166
|
const t = useText();
|
|
120
167
|
const cls = useClass();
|
|
121
168
|
const values = (0, vue_1.reactive)({});
|
|
169
|
+
// The first factor the user picked: the password field by default, or the
|
|
170
|
+
// code field / "check your email" once an emailed code / link was sent.
|
|
171
|
+
const factor = (0, vue_1.ref)('password');
|
|
172
|
+
(0, vue_1.watch)(() => props.attempt?.id, () => {
|
|
173
|
+
factor.value = 'password';
|
|
174
|
+
});
|
|
175
|
+
const emailChoice = (strategy, labelKey) => (0, vue_1.h)('button', {
|
|
176
|
+
key: strategy,
|
|
177
|
+
class: cls('formButtonSecondary', 'atlas-button-secondary'),
|
|
178
|
+
type: 'button',
|
|
179
|
+
'data-strategy': strategy,
|
|
180
|
+
disabled: props.busy,
|
|
181
|
+
onClick: () => {
|
|
182
|
+
void props.onPrepare?.(strategy).then((sent) => {
|
|
183
|
+
if (sent)
|
|
184
|
+
factor.value = strategy;
|
|
185
|
+
});
|
|
186
|
+
},
|
|
187
|
+
}, t(labelKey));
|
|
122
188
|
const field = (name, labelKey, type = 'text') => (0, vue_1.h)('label', { class: 'atlas-field', key: name }, [
|
|
123
189
|
(0, vue_1.h)('span', t(labelKey)),
|
|
124
190
|
(0, vue_1.h)('input', {
|
|
125
191
|
class: cls('formFieldInput', 'atlas-input'),
|
|
126
192
|
type,
|
|
193
|
+
name,
|
|
127
194
|
value: values[name] ?? '',
|
|
128
195
|
onInput: (event) => {
|
|
129
196
|
values[name] = event.target.value;
|
|
@@ -133,12 +200,25 @@ const AttemptFlow = (0, vue_1.defineComponent)({
|
|
|
133
200
|
.filter((error) => error.param === name)
|
|
134
201
|
.map((error) => (0, vue_1.h)('span', { class: cls('formFieldError', 'atlas-error'), key: error.code }, error.message)),
|
|
135
202
|
]);
|
|
136
|
-
const fields = (
|
|
137
|
-
switch (kind) {
|
|
203
|
+
const fields = (step) => {
|
|
204
|
+
switch (step.kind) {
|
|
138
205
|
case 'collect_identifier':
|
|
139
206
|
return [field('identifier', 'signIn.identifierLabel', 'email')];
|
|
140
|
-
case 'collect_first_factor':
|
|
141
|
-
|
|
207
|
+
case 'collect_first_factor': {
|
|
208
|
+
if (factor.value === 'email_code')
|
|
209
|
+
return [field('code', 'signIn.emailCodeLabel')];
|
|
210
|
+
if (factor.value === 'email_link') {
|
|
211
|
+
return [(0, vue_1.h)('p', { key: 'link-sent', class: 'atlas-text' }, t('signIn.magicLinkSent'))];
|
|
212
|
+
}
|
|
213
|
+
// The server's list, minus email code / link while the app cannot
|
|
214
|
+
// deliver email (a capability of the app, never of the user).
|
|
215
|
+
const offered = props.onPrepare ? (0, js_1.offeredFirstFactors)(step.strategies, props.emailDelivery) : [];
|
|
216
|
+
return [
|
|
217
|
+
field('password', 'signIn.passwordLabel', 'password'),
|
|
218
|
+
offered.includes('email_code') ? emailChoice('email_code', 'signIn.useEmailCode') : null,
|
|
219
|
+
offered.includes('email_link') ? emailChoice('email_link', 'signIn.useEmailLink') : null,
|
|
220
|
+
].filter((node) => node !== null);
|
|
221
|
+
}
|
|
142
222
|
case 'collect_second_factor':
|
|
143
223
|
return [field('code', 'mfa.codeLabel')];
|
|
144
224
|
case 'enroll_second_factor':
|
|
@@ -152,6 +232,10 @@ const AttemptFlow = (0, vue_1.defineComponent)({
|
|
|
152
232
|
return [field('code', 'signIn.emailCodeLabel')];
|
|
153
233
|
case 'collect_new_password':
|
|
154
234
|
return [field('password', 'reset.newPasswordLabel', 'password')];
|
|
235
|
+
case 'collect_captcha':
|
|
236
|
+
// §5 the server withheld the attempt until a captcha clears. Solving
|
|
237
|
+
// the widget resubmits the identifier on its own; the button retries.
|
|
238
|
+
return [(0, vue_1.h)('p', { key: 'captcha-prompt', class: 'atlas-text' }, t('captcha.prompt'))];
|
|
155
239
|
case 'await_oauth':
|
|
156
240
|
return [(0, vue_1.h)('p', { key: 'oauth' }, t('signIn.magicLinkSent'))];
|
|
157
241
|
case 'done':
|
|
@@ -181,8 +265,13 @@ const AttemptFlow = (0, vue_1.defineComponent)({
|
|
|
181
265
|
props.onSubmit({ ...values });
|
|
182
266
|
},
|
|
183
267
|
}, [
|
|
184
|
-
...fields(step
|
|
185
|
-
step.kind
|
|
268
|
+
...fields(step),
|
|
269
|
+
step.kind === 'collect_identifier' || step.kind === 'collect_captcha'
|
|
270
|
+
? captchaSlot(props.captcha)
|
|
271
|
+
: null,
|
|
272
|
+
step.kind !== 'done' &&
|
|
273
|
+
step.kind !== 'await_oauth' &&
|
|
274
|
+
!(step.kind === 'collect_first_factor' && factor.value === 'email_link')
|
|
186
275
|
? (0, vue_1.h)('button', {
|
|
187
276
|
class: cls('formButtonPrimary', 'atlas-button'),
|
|
188
277
|
disabled: props.busy,
|
|
@@ -201,30 +290,244 @@ exports.SignIn = (0, vue_1.defineComponent)({
|
|
|
201
290
|
afterUrl: { type: String, default: undefined },
|
|
202
291
|
},
|
|
203
292
|
setup() {
|
|
204
|
-
const { state, submit } = (0, flow_1.useFlow)();
|
|
205
|
-
return () =>
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
293
|
+
const { state, submit, prepare, captcha, settings } = (0, flow_1.useFlow)();
|
|
294
|
+
return () => {
|
|
295
|
+
// Read the settings so the form re-renders (drawing the captcha slot)
|
|
296
|
+
// once the instance's captcha config has loaded; the controller is passed
|
|
297
|
+
// only while it draws, so the child sees a changed prop.
|
|
298
|
+
void settings.value;
|
|
299
|
+
return (0, vue_1.h)(AttemptFlow, {
|
|
300
|
+
attempt: state.value.attempt,
|
|
301
|
+
busy: state.value.busy,
|
|
302
|
+
errors: state.value.errors,
|
|
303
|
+
titleKey: 'signIn.title',
|
|
304
|
+
onSubmit: submit,
|
|
305
|
+
captcha: captcha.needed ? captcha : null,
|
|
306
|
+
emailDelivery: settings.value?.emailDelivery ?? null,
|
|
307
|
+
onPrepare: prepare,
|
|
308
|
+
});
|
|
309
|
+
};
|
|
212
310
|
},
|
|
213
311
|
});
|
|
312
|
+
/**
|
|
313
|
+
* The create-account step: the instance's configured extra fields, email +
|
|
314
|
+
* password, the legal-consent row and — when the instance requires one on
|
|
315
|
+
* sign-up — the captcha widget. Values live in local state so a refused submit
|
|
316
|
+
* never clears them.
|
|
317
|
+
*/
|
|
318
|
+
const SignUpForm = (0, vue_1.defineComponent)({
|
|
319
|
+
name: 'SignUpForm',
|
|
320
|
+
props: {
|
|
321
|
+
settings: { type: Object, default: null },
|
|
322
|
+
busy: { type: Boolean, default: false },
|
|
323
|
+
errors: { type: Array, default: () => [] },
|
|
324
|
+
captcha: { type: Object, default: null },
|
|
325
|
+
onSubmit: {
|
|
326
|
+
type: Function,
|
|
327
|
+
required: true,
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
setup(props) {
|
|
331
|
+
const t = useText();
|
|
332
|
+
const cls = useClass();
|
|
333
|
+
const values = (0, vue_1.reactive)({});
|
|
334
|
+
const agreed = (0, vue_1.ref)(false);
|
|
335
|
+
const fieldErrors = (name) => props.errors
|
|
336
|
+
.filter((error) => error.param === name)
|
|
337
|
+
.map((error) => (0, vue_1.h)('span', { class: cls('formFieldError', 'atlas-error'), key: error.code }, error.message));
|
|
338
|
+
const label = (f) => f.required ? f.label : t('signUp.optionalField', { label: f.label });
|
|
339
|
+
const control = (f) => {
|
|
340
|
+
const value = values[f.key] ?? '';
|
|
341
|
+
const set = (v) => {
|
|
342
|
+
values[f.key] = v;
|
|
343
|
+
};
|
|
344
|
+
switch (f.type) {
|
|
345
|
+
case 'checkbox':
|
|
346
|
+
return (0, vue_1.h)('input', {
|
|
347
|
+
type: 'checkbox',
|
|
348
|
+
name: f.key,
|
|
349
|
+
checked: value === 'true',
|
|
350
|
+
onChange: (e) => set(e.target.checked ? 'true' : ''),
|
|
351
|
+
});
|
|
352
|
+
case 'select':
|
|
353
|
+
return (0, vue_1.h)('select', {
|
|
354
|
+
class: cls('formFieldInput', 'atlas-input'),
|
|
355
|
+
name: f.key,
|
|
356
|
+
value,
|
|
357
|
+
required: f.required,
|
|
358
|
+
onChange: (e) => set(e.target.value),
|
|
359
|
+
}, [
|
|
360
|
+
(0, vue_1.h)('option', { value: '' }, f.placeholder ?? t('signUp.selectPlaceholder')),
|
|
361
|
+
...f.options.map((o) => (0, vue_1.h)('option', { key: o, value: o }, o)),
|
|
362
|
+
]);
|
|
363
|
+
case 'textarea':
|
|
364
|
+
return (0, vue_1.h)('textarea', {
|
|
365
|
+
class: cls('formFieldInput', 'atlas-input'),
|
|
366
|
+
name: f.key,
|
|
367
|
+
rows: 3,
|
|
368
|
+
value,
|
|
369
|
+
required: f.required,
|
|
370
|
+
placeholder: f.placeholder ?? undefined,
|
|
371
|
+
onInput: (e) => set(e.target.value),
|
|
372
|
+
});
|
|
373
|
+
case 'radio':
|
|
374
|
+
case 'multiselect': {
|
|
375
|
+
// Same encoding as React, the embed widget and the hosted page: one
|
|
376
|
+
// value, or a comma-joined list for multiselect.
|
|
377
|
+
const picked = value ? value.split(', ') : [];
|
|
378
|
+
return (0, vue_1.h)('span', { class: 'atlas-choices' }, f.options.map((o) => (0, vue_1.h)('label', { key: o, class: 'atlas-choice' }, [
|
|
379
|
+
(0, vue_1.h)('input', {
|
|
380
|
+
type: f.type === 'radio' ? 'radio' : 'checkbox',
|
|
381
|
+
name: f.key,
|
|
382
|
+
value: o,
|
|
383
|
+
checked: picked.includes(o),
|
|
384
|
+
onChange: (e) => {
|
|
385
|
+
if (f.type === 'radio')
|
|
386
|
+
set(o);
|
|
387
|
+
else {
|
|
388
|
+
const on = e.target.checked;
|
|
389
|
+
set((on ? [...picked, o] : picked.filter((p) => p !== o)).join(', '));
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
}),
|
|
393
|
+
o,
|
|
394
|
+
])));
|
|
395
|
+
}
|
|
396
|
+
default: {
|
|
397
|
+
const type = ['email', 'tel', 'url', 'number', 'date'].includes(f.type) ? f.type : 'text';
|
|
398
|
+
return (0, vue_1.h)('input', {
|
|
399
|
+
class: cls('formFieldInput', 'atlas-input'),
|
|
400
|
+
type,
|
|
401
|
+
name: f.key,
|
|
402
|
+
value,
|
|
403
|
+
required: f.required,
|
|
404
|
+
placeholder: f.placeholder ?? undefined,
|
|
405
|
+
onInput: (e) => set(e.target.value),
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
const textField = (name, labelKey, type, autocomplete) => (0, vue_1.h)('label', { key: name, class: cls('formField', 'atlas-field') }, [
|
|
411
|
+
(0, vue_1.h)('span', { class: cls('formFieldLabel', 'atlas-field-label') }, t(labelKey)),
|
|
412
|
+
(0, vue_1.h)('input', {
|
|
413
|
+
class: cls('formFieldInput', 'atlas-input'),
|
|
414
|
+
type,
|
|
415
|
+
name,
|
|
416
|
+
autocomplete,
|
|
417
|
+
required: true,
|
|
418
|
+
value: values[name] ?? '',
|
|
419
|
+
onInput: (e) => {
|
|
420
|
+
values[name] = e.target.value;
|
|
421
|
+
},
|
|
422
|
+
}),
|
|
423
|
+
...fieldErrors(name),
|
|
424
|
+
]);
|
|
425
|
+
return () => {
|
|
426
|
+
const legal = props.settings?.legal;
|
|
427
|
+
const showLegal = !!legal && (!!legal.termsUrl || !!legal.privacyUrl);
|
|
428
|
+
const consentOk = !legal?.required || agreed.value;
|
|
429
|
+
const links = showLegal
|
|
430
|
+
? [
|
|
431
|
+
legal.termsUrl
|
|
432
|
+
? (0, vue_1.h)('a', { key: 'terms', class: 'atlas-link', href: legal.termsUrl, target: '_blank', rel: 'noopener noreferrer' }, t('signUp.terms'))
|
|
433
|
+
: null,
|
|
434
|
+
legal.privacyUrl
|
|
435
|
+
? (0, vue_1.h)('a', { key: 'privacy', class: 'atlas-link', href: legal.privacyUrl, target: '_blank', rel: 'noopener noreferrer' }, t('signUp.privacy'))
|
|
436
|
+
: null,
|
|
437
|
+
].filter((x) => x !== null)
|
|
438
|
+
: [];
|
|
439
|
+
// The app can't deliver the verification email, so an email + password
|
|
440
|
+
// sign-up could never complete: say so up front instead of a form that
|
|
441
|
+
// fails on submit.
|
|
442
|
+
if (props.settings?.emailDelivery?.passwordSignUp === false) {
|
|
443
|
+
return (0, vue_1.h)('div', { class: cls('card', 'atlas-card') }, [
|
|
444
|
+
(0, vue_1.h)('h1', { class: cls('headerTitle', 'atlas-title') }, t('signUp.title')),
|
|
445
|
+
(0, vue_1.h)('p', { class: cls('formFieldError', 'atlas-error'), role: 'alert', 'data-atlas-email-unavailable': '' }, t('signUp.emailUnavailable')),
|
|
446
|
+
]);
|
|
447
|
+
}
|
|
448
|
+
return (0, vue_1.h)('div', { class: cls('card', 'atlas-card') }, [
|
|
449
|
+
(0, vue_1.h)('h1', { class: cls('headerTitle', 'atlas-title') }, t('signUp.title')),
|
|
450
|
+
...props.errors
|
|
451
|
+
.filter((error) => !error.param)
|
|
452
|
+
.map((error) => (0, vue_1.h)('p', { class: cls('formFieldError', 'atlas-error'), role: 'alert', key: error.code }, error.message)),
|
|
453
|
+
(0, vue_1.h)('form', {
|
|
454
|
+
onSubmit: (event) => {
|
|
455
|
+
event.preventDefault();
|
|
456
|
+
if (!consentOk)
|
|
457
|
+
return;
|
|
458
|
+
props.onSubmit({ ...values }, legal?.required ? agreed.value : true);
|
|
459
|
+
},
|
|
460
|
+
}, [
|
|
461
|
+
...(props.settings?.signUpFields ?? []).map((f) => (0, vue_1.h)(
|
|
462
|
+
// A choice group holds several inputs, so it can't sit inside one <label>.
|
|
463
|
+
f.type === 'radio' || f.type === 'multiselect' ? 'div' : 'label', { key: f.key, class: cls('formField', 'atlas-field') }, [
|
|
464
|
+
(0, vue_1.h)('span', { class: cls('formFieldLabel', 'atlas-field-label') }, label(f)),
|
|
465
|
+
control(f),
|
|
466
|
+
...fieldErrors(f.key),
|
|
467
|
+
])),
|
|
468
|
+
textField('email', 'signUp.emailLabel', 'email', 'email'),
|
|
469
|
+
textField('password', 'signUp.passwordLabel', 'password', 'new-password'),
|
|
470
|
+
showLegal
|
|
471
|
+
? (0, vue_1.h)('label', { key: 'consent', class: cls('formField', 'atlas-consent') }, [
|
|
472
|
+
legal.required
|
|
473
|
+
? (0, vue_1.h)('input', {
|
|
474
|
+
type: 'checkbox',
|
|
475
|
+
name: 'consent',
|
|
476
|
+
checked: agreed.value,
|
|
477
|
+
onChange: (e) => {
|
|
478
|
+
agreed.value = e.target.checked;
|
|
479
|
+
},
|
|
480
|
+
})
|
|
481
|
+
: null,
|
|
482
|
+
(0, vue_1.h)('span', { class: 'atlas-text' }, [
|
|
483
|
+
t(legal.required ? 'signUp.consentAgree' : 'signUp.consentNotice'),
|
|
484
|
+
' ',
|
|
485
|
+
...links.flatMap((link, i) => (i > 0 ? [` ${t('signUp.and')} `, link] : [link])),
|
|
486
|
+
'.',
|
|
487
|
+
]),
|
|
488
|
+
...fieldErrors('consent'),
|
|
489
|
+
])
|
|
490
|
+
: null,
|
|
491
|
+
captchaSlot(props.captcha),
|
|
492
|
+
(0, vue_1.h)('button', {
|
|
493
|
+
class: cls('formButtonPrimary', 'atlas-button'),
|
|
494
|
+
disabled: props.busy || !consentOk,
|
|
495
|
+
type: 'submit',
|
|
496
|
+
}, t('signUp.submit')),
|
|
497
|
+
]),
|
|
498
|
+
]);
|
|
499
|
+
};
|
|
500
|
+
},
|
|
501
|
+
});
|
|
502
|
+
/**
|
|
503
|
+
* §10.2 `<SignUp/>` — creates an account. The first step is the create-account
|
|
504
|
+
* form, which POSTs `/v1/client/sign_ups`; from there the flow is server-driven
|
|
505
|
+
* exactly like `<SignIn>` (the emailed-code step, then the ticket exchange).
|
|
506
|
+
* Fields, consent and captcha come from the instance's settings, so turning
|
|
507
|
+
* them on in the dashboard needs no code change.
|
|
508
|
+
*/
|
|
214
509
|
exports.SignUp = (0, vue_1.defineComponent)({
|
|
215
510
|
name: 'SignUp',
|
|
216
511
|
props: {
|
|
217
512
|
afterUrl: { type: String, default: undefined },
|
|
218
513
|
},
|
|
219
514
|
setup() {
|
|
220
|
-
const { state, submit } = (0, flow_1.useFlow)();
|
|
221
|
-
return () =>
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
515
|
+
const { state, submit, create, settings, signUpCaptcha } = (0, flow_1.useFlow)();
|
|
516
|
+
return () => state.value.attempt
|
|
517
|
+
? (0, vue_1.h)(AttemptFlow, {
|
|
518
|
+
attempt: state.value.attempt,
|
|
519
|
+
busy: state.value.busy,
|
|
520
|
+
errors: state.value.errors,
|
|
521
|
+
titleKey: 'signUp.title',
|
|
522
|
+
onSubmit: submit,
|
|
523
|
+
})
|
|
524
|
+
: (0, vue_1.h)(SignUpForm, {
|
|
525
|
+
settings: settings.value,
|
|
526
|
+
busy: state.value.busy,
|
|
527
|
+
errors: state.value.errors,
|
|
528
|
+
captcha: signUpCaptcha.needed ? signUpCaptcha : null,
|
|
529
|
+
onSubmit: create,
|
|
530
|
+
});
|
|
228
531
|
},
|
|
229
532
|
});
|
|
230
533
|
exports.UserButton = (0, vue_1.defineComponent)({
|
package/dist/components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"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"}
|
package/dist/composables.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ComputedRef, type ShallowRef } from 'vue';
|
|
2
|
-
import type { ProviderToken, SignOutOptions } from '@atlasauth/js';
|
|
2
|
+
import type { ProviderToken, SignOutOptions, SignOutResult } from '@atlasauth/js';
|
|
3
3
|
import type { AuthStatus } from './plugin';
|
|
4
4
|
import { type ProtectCondition } from './protect';
|
|
5
5
|
import type { AtlasOrganizationMembership, AtlasSession, AtlasUser } from './types';
|
|
@@ -42,7 +42,8 @@ export declare function useAuth(): {
|
|
|
42
42
|
orgRole: ComputedRef<string | null>;
|
|
43
43
|
getToken(): Promise<string | null>;
|
|
44
44
|
getProviderToken(provider: string): Promise<ProviderToken | null>;
|
|
45
|
-
|
|
45
|
+
/** Resolves `{ revoked, activeSessionId? }`; `{ strict: true }` rejects with `SignOutError` (see `AtlasClient.signOut`). */
|
|
46
|
+
signOut(options?: SignOutOptions): Promise<SignOutResult>;
|
|
46
47
|
has(condition: ProtectCondition): boolean;
|
|
47
48
|
};
|
|
48
49
|
export declare function useOrganization(): {
|
package/dist/composables.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composables.js","sourceRoot":"","sources":["../src/composables.ts"],"names":[],"mappings":";;AAkBA,0BAmBC;AAED,gCASC;AAED,
|
|
1
|
+
{"version":3,"file":"composables.js","sourceRoot":"","sources":["../src/composables.ts"],"names":[],"mappings":";;AAkBA,0BAmBC;AAED,gCASC;AAED,0BAmCC;AAED,0CAmBC;AA1GD,6BAAkE;AAElE,uCAAqC;AAErC,uCAA4D;AAG5D;;;;;;;;;GASG;AAEH,SAAgB,OAAO;IAYrB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,IAAA,kBAAQ,GAAE,CAAC;IACtD,OAAO;QACL,QAAQ,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACpD,UAAU,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC;QACxD,IAAI;QACJ,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU;IAIxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAQ,GAAE,CAAC;IACvC,OAAO;QACL,QAAQ,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACpD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAgB,OAAO;IAiBrB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAQ,GAAE,CAAC;IACpF,OAAO;QACL,QAAQ,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACpD,UAAU,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC;QACxD,MAAM;QACN,OAAO;QACP,MAAM,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;QACjD,SAAS,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;QACpD,KAAK,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAE,MAAM,CAAC,KAAK,EAAE,MAA6B,IAAI,IAAI,CAAC;QAC3E,OAAO,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAE,MAAM,CAAC,KAAK,EAAE,QAA+B,IAAI,IAAI,CAAC;QAC/E,4EAA4E;QAC5E,QAAQ;QACR,4EAA4E;QAC5E,gBAAgB;QAChB,OAAO;QACP,kEAAkE;QAClE,GAAG,EAAE,CAAC,SAA2B,EAAE,EAAE,CAAC,IAAA,kBAAQ,EAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,OAAO;KAChF,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe;IAO7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAA,kBAAQ,GAAE,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAA,cAAQ,EACrB,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CACxF,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;QACpD,YAAY,EAAE,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC;QAChE,UAAU,EAAE,MAAM;QAClB,WAAW;QACX,SAAS,EAAE,qBAAqB;KACjC,CAAC;AACJ,CAAC"}
|
package/dist/flow.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ShallowRef } from 'vue';
|
|
2
|
+
import { type CaptchaController, type InstanceSettings } from '@atlasauth/js';
|
|
2
3
|
import { type FlowState } from './fapi';
|
|
3
4
|
/**
|
|
4
5
|
* §10.2 the server-driven sign-in / sign-up flow, as a composable.
|
|
@@ -6,17 +7,45 @@ import { type FlowState } from './fapi';
|
|
|
6
7
|
* The Vue peer of the React SDK's internal `useFlow`. It never decides what
|
|
7
8
|
* comes next — it drives the flow through `advance`, which owns the
|
|
8
9
|
* step-to-endpoint mapping in `@atlasauth/js`, and renders whatever `status` the
|
|
9
|
-
* server returned.
|
|
10
|
-
*
|
|
10
|
+
* server returned. Sign-in and sign-up share it: `<SignUp>` starts the attempt
|
|
11
|
+
* with {@link FlowController.create} (`POST /v1/client/sign_ups`), then the
|
|
12
|
+
* emailed-code step runs through the same `submit`, exactly as in React.
|
|
11
13
|
*/
|
|
12
14
|
export interface FlowController {
|
|
13
15
|
/** The current server-driven attempt state. */
|
|
14
16
|
state: ShallowRef<FlowState>;
|
|
15
17
|
/** Post the current step's fields; the server decides the next status. */
|
|
16
18
|
submit(values: Record<string, string>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Create an account (`POST /v1/client/sign_ups`) from a create-account form's
|
|
21
|
+
* values — email, password and any configured sign-up fields — carrying the
|
|
22
|
+
* sign-up captcha's token when the instance requires one. The emailed code is
|
|
23
|
+
* then posted with {@link submit}.
|
|
24
|
+
*/
|
|
25
|
+
create(values: Record<string, string>, consent?: boolean): void;
|
|
26
|
+
/**
|
|
27
|
+
* Ask the server to email a sign-in code or link for the current first-factor
|
|
28
|
+
* step (`prepare_first_factor`). Resolves whether it was sent; the code is then
|
|
29
|
+
* posted with {@link submit}, and a link is collected by the poll.
|
|
30
|
+
*/
|
|
31
|
+
prepare(strategy: 'email_code' | 'email_link'): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* The instance's public sign-in / sign-up settings (captcha, sign-up fields,
|
|
34
|
+
* legal consent, `emailDelivery`) from `GET /v1/appearance`; null until loaded
|
|
35
|
+
* or when the server could not be reached.
|
|
36
|
+
*/
|
|
37
|
+
settings: ShallowRef<InstanceSettings | null>;
|
|
38
|
+
/** The sign-in captcha (identifier step / `needs_captcha` challenge). */
|
|
39
|
+
captcha: CaptchaController;
|
|
40
|
+
/** The sign-up captcha (the create-account step). */
|
|
41
|
+
signUpCaptcha: CaptchaController;
|
|
17
42
|
}
|
|
18
43
|
export declare function useFlow(): FlowController;
|
|
19
44
|
/** §10.2 `useSignIn()` — drive a sign-in attempt. */
|
|
20
45
|
export declare function useSignIn(): FlowController;
|
|
21
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* §10.2 `useSignUp()` — drive a sign-up attempt: `create(values)` posts
|
|
48
|
+
* `/v1/client/sign_ups` (the account is created there), then `submit({ code })`
|
|
49
|
+
* verifies the emailed code and completes the session.
|
|
50
|
+
*/
|
|
22
51
|
export declare function useSignUp(): FlowController;
|
package/dist/flow.js
CHANGED
|
@@ -4,37 +4,79 @@ exports.useFlow = useFlow;
|
|
|
4
4
|
exports.useSignIn = useSignIn;
|
|
5
5
|
exports.useSignUp = useSignUp;
|
|
6
6
|
const vue_1 = require("vue");
|
|
7
|
+
const js_1 = require("@atlasauth/js");
|
|
7
8
|
const fapi_1 = require("./fapi");
|
|
8
9
|
const context_1 = require("./context");
|
|
10
|
+
const i18n_1 = require("./i18n");
|
|
9
11
|
function useFlow() {
|
|
10
12
|
const atlas = (0, context_1.useAtlas)();
|
|
11
13
|
// Seeded from a redirect that came back mid-flow (e.g. OAuth needing a second
|
|
12
14
|
// factor), so the user resumes at the demanded step instead of starting over.
|
|
13
15
|
const state = (0, vue_1.shallowRef)((0, fapi_1.flowFromPending)(atlas.pendingAttempt));
|
|
16
|
+
const settings = (0, vue_1.shallowRef)(null);
|
|
17
|
+
const t = (key) => (0, i18n_1.translate)(atlas.catalog, key);
|
|
14
18
|
const client = new fapi_1.FapiClient({
|
|
15
19
|
publishableKey: atlas.publishableKey,
|
|
16
20
|
baseUrl: atlas.frontendApi,
|
|
17
21
|
});
|
|
22
|
+
// §5 the per-flow captcha, driven by the instance's settings so turning it on
|
|
23
|
+
// in the dashboard needs no code change. The widgets draw into the slots the
|
|
24
|
+
// components attach.
|
|
25
|
+
const captcha = (0, js_1.createCaptchaController)();
|
|
26
|
+
const signUpCaptcha = (0, js_1.createCaptchaController)();
|
|
27
|
+
let identifier = '';
|
|
28
|
+
// On completion the response carries a one-time ticket (§7.1). Exchange it
|
|
29
|
+
// for cookies over a same-origin request — FAPI is cross-origin to the app
|
|
30
|
+
// and cannot set the cookie on the completion response itself — THEN
|
|
31
|
+
// re-boot so the rest of the app sees a signed-in user.
|
|
32
|
+
const finish = async (next) => {
|
|
33
|
+
state.value = next;
|
|
34
|
+
if (next.attempt?.status === 'complete') {
|
|
35
|
+
if (next.ticket) {
|
|
36
|
+
await client.post('/v1/client/tickets/exchange', {
|
|
37
|
+
attempt_id: next.attempt.id,
|
|
38
|
+
ticket: next.ticket,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
await atlas.reload();
|
|
42
|
+
}
|
|
43
|
+
};
|
|
18
44
|
const submit = (values) => {
|
|
19
45
|
void (async () => {
|
|
20
46
|
state.value = { ...state.value, busy: true, errors: [] };
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// for cookies over a same-origin request — FAPI is cross-origin to the app
|
|
25
|
-
// and cannot set the cookie on the completion response itself — THEN
|
|
26
|
-
// re-boot so the rest of the app sees a signed-in user.
|
|
27
|
-
if (next.attempt?.status === 'complete') {
|
|
28
|
-
if (next.ticket) {
|
|
29
|
-
await client.post('/v1/client/tickets/exchange', {
|
|
30
|
-
attempt_id: next.attempt.id,
|
|
31
|
-
ticket: next.ticket,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
await atlas.reload();
|
|
35
|
-
}
|
|
47
|
+
const out = await (0, js_1.advanceWithCaptcha)(client, state.value, values, { captcha, identifier, t });
|
|
48
|
+
identifier = out.identifier;
|
|
49
|
+
await finish(out.state);
|
|
36
50
|
})();
|
|
37
51
|
};
|
|
52
|
+
const create = (values, consent = true) => {
|
|
53
|
+
void (async () => {
|
|
54
|
+
state.value = { ...state.value, busy: true, errors: [] };
|
|
55
|
+
await finish(await (0, js_1.createSignUp)(client, values, { consent, captcha: signUpCaptcha, t }));
|
|
56
|
+
})();
|
|
57
|
+
};
|
|
58
|
+
const prepare = async (strategy) => {
|
|
59
|
+
state.value = { ...state.value, busy: true, errors: [] };
|
|
60
|
+
const next = await (0, fapi_1.prepareFactor)(client, state.value, strategy);
|
|
61
|
+
state.value = { ...next, busy: false };
|
|
62
|
+
return next.errors.length === 0;
|
|
63
|
+
};
|
|
64
|
+
// Keep both captchas in step with the settings and the flow's current step.
|
|
65
|
+
(0, vue_1.watch)([settings, state], ([current, flow]) => {
|
|
66
|
+
captcha.configure((0, js_1.signInCaptchaOptions)(current?.captchaFlows.signIn, flow, () => submit({})));
|
|
67
|
+
const signUpFlow = current?.captchaFlows.signUp;
|
|
68
|
+
signUpCaptcha.configure({ flow: signUpFlow, active: !flow.attempt && (0, js_1.flowNeedsCaptcha)(signUpFlow) });
|
|
69
|
+
}, { immediate: true });
|
|
70
|
+
if (typeof window !== 'undefined') {
|
|
71
|
+
void (0, js_1.fetchInstanceSettings)(client).then((loaded) => {
|
|
72
|
+
if (loaded)
|
|
73
|
+
settings.value = loaded;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
(0, vue_1.onScopeDispose)(() => {
|
|
77
|
+
captcha.destroy();
|
|
78
|
+
signUpCaptcha.destroy();
|
|
79
|
+
});
|
|
38
80
|
// §5.3: collect a sign-in completed by a link opened on another device. The
|
|
39
81
|
// poll restarts whenever the flow state changes and only runs while the state
|
|
40
82
|
// says it should — the Vue peer of React's polling effect.
|
|
@@ -66,13 +108,17 @@ function useFlow() {
|
|
|
66
108
|
}, 2_000);
|
|
67
109
|
}, { immediate: true });
|
|
68
110
|
(0, vue_1.onScopeDispose)(stopPolling);
|
|
69
|
-
return { state, submit };
|
|
111
|
+
return { state, submit, create, prepare, settings, captcha, signUpCaptcha };
|
|
70
112
|
}
|
|
71
113
|
/** §10.2 `useSignIn()` — drive a sign-in attempt. */
|
|
72
114
|
function useSignIn() {
|
|
73
115
|
return useFlow();
|
|
74
116
|
}
|
|
75
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* §10.2 `useSignUp()` — drive a sign-up attempt: `create(values)` posts
|
|
119
|
+
* `/v1/client/sign_ups` (the account is created there), then `submit({ code })`
|
|
120
|
+
* verifies the emailed code and completes the session.
|
|
121
|
+
*/
|
|
76
122
|
function useSignUp() {
|
|
77
123
|
return useFlow();
|
|
78
124
|
}
|
package/dist/flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n.js
CHANGED
|
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.EN_US = void 0;
|
|
15
15
|
exports.translate = translate;
|
|
16
16
|
exports.withFallback = withFallback;
|
|
17
|
+
const js_1 = require("@atlasauth/js");
|
|
17
18
|
exports.EN_US = {
|
|
18
19
|
'signIn.title': 'Sign in',
|
|
19
20
|
'signIn.subtitle': 'to continue to {application}',
|
|
@@ -26,12 +27,29 @@ exports.EN_US = {
|
|
|
26
27
|
'signIn.orDivider': 'or',
|
|
27
28
|
'signIn.socialButton': 'Continue with {provider}',
|
|
28
29
|
'signIn.emailCodeLabel': 'Verification code',
|
|
30
|
+
'signIn.useEmailCode': 'Email me a code',
|
|
31
|
+
'signIn.useEmailLink': 'Email me a sign-in link',
|
|
29
32
|
'signIn.magicLinkSent': 'Check your email for a sign-in link.',
|
|
30
33
|
'signIn.checkOtherTab': 'You can close this tab — you are signed in where you started.',
|
|
31
34
|
'signUp.title': 'Create your account',
|
|
32
35
|
'signUp.submit': 'Continue',
|
|
33
36
|
'signUp.haveAccount': 'Already have an account?',
|
|
34
37
|
'signUp.signInLink': 'Sign in',
|
|
38
|
+
'signUp.emailLabel': 'Email address',
|
|
39
|
+
'signUp.passwordLabel': 'Password',
|
|
40
|
+
'signUp.optionalField': '{label} (optional)',
|
|
41
|
+
'signUp.selectPlaceholder': 'Select…',
|
|
42
|
+
'signUp.consentAgree': 'I agree to the',
|
|
43
|
+
'signUp.consentNotice': 'By continuing you agree to the',
|
|
44
|
+
'signUp.terms': 'Terms of Service',
|
|
45
|
+
'signUp.privacy': 'Privacy Policy',
|
|
46
|
+
'signUp.and': 'and',
|
|
47
|
+
// Shown instead of the email + password form when the app can't deliver the
|
|
48
|
+
// verification email (`emailDelivery.passwordSignUp === false`).
|
|
49
|
+
'signUp.emailUnavailable': js_1.EMAIL_UNAVAILABLE_MESSAGE,
|
|
50
|
+
'captcha.prompt': 'Complete the security check to continue.',
|
|
51
|
+
'captcha.required': 'Please complete the security check, then try again.',
|
|
52
|
+
'captcha.failed': "The security check didn't pass. Please try again.",
|
|
35
53
|
'mfa.title': 'Two-step verification',
|
|
36
54
|
'mfa.subtitle': 'Enter the code from your authenticator app.',
|
|
37
55
|
'mfa.codeLabel': 'Code',
|
package/dist/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,3 +8,5 @@ export * from './composables';
|
|
|
8
8
|
export * from './flow';
|
|
9
9
|
export * from './fapi';
|
|
10
10
|
export * from './components';
|
|
11
|
+
export type { InstanceSettings, PublicSignUpField, CaptchaController, CaptchaFlowKey, CaptchaWidgetMode, FlowCaptcha, } from '@atlasauth/js';
|
|
12
|
+
export { SignOutError, type SignOutResult } from '@atlasauth/js';
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.SignOutError = void 0;
|
|
17
18
|
__exportStar(require("./appearance"), exports);
|
|
18
19
|
__exportStar(require("./protect"), exports);
|
|
19
20
|
__exportStar(require("./i18n"), exports);
|
|
@@ -24,4 +25,7 @@ __exportStar(require("./composables"), exports);
|
|
|
24
25
|
__exportStar(require("./flow"), exports);
|
|
25
26
|
__exportStar(require("./fapi"), exports);
|
|
26
27
|
__exportStar(require("./components"), exports);
|
|
28
|
+
// What `signOut()` resolves with, and what `signOut({ strict: true })` rejects with.
|
|
29
|
+
var js_1 = require("@atlasauth/js");
|
|
30
|
+
Object.defineProperty(exports, "SignOutError", { enumerable: true, get: function () { return js_1.SignOutError; } });
|
|
27
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,gDAA8B;AAC9B,yCAAuB;AACvB,yCAAuB;AACvB,+CAA6B;AAa7B,qFAAqF;AACrF,oCAAiE;AAAxD,kGAAA,YAAY,OAAA"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Plugin, type ShallowRef } from 'vue';
|
|
2
|
-
import { type ProviderToken, type SignOutOptions } from '@atlasauth/js';
|
|
2
|
+
import { type ProviderToken, type SignOutOptions, type SignOutResult } from '@atlasauth/js';
|
|
3
3
|
import { type Appearance } from './appearance';
|
|
4
4
|
import { type Catalog } from './i18n';
|
|
5
5
|
import type { AtlasOrganizationMembership, AtlasSession, AtlasUser, SessionClaims } from './types';
|
|
@@ -51,13 +51,28 @@ export interface AtlasClient {
|
|
|
51
51
|
* server refreshes a stale token on read; the refresh token is never exposed.
|
|
52
52
|
*/
|
|
53
53
|
getProviderToken(provider: string): Promise<ProviderToken | null>;
|
|
54
|
-
|
|
54
|
+
/**
|
|
55
|
+
* End the session: revoke it on the Frontend API (retried once), sign out
|
|
56
|
+
* locally, and resolve `{ revoked, activeSessionId? }`. A revoke the server
|
|
57
|
+
* never confirmed still signs out here, and this browser never re-adopts the
|
|
58
|
+
* session (it is remembered and the revoke re-tried in the background);
|
|
59
|
+
* `{ strict: true }` rejects with a `SignOutError` in that case. When the
|
|
60
|
+
* server promotes another account signed in on this browser, it is adopted.
|
|
61
|
+
*/
|
|
62
|
+
signOut(options?: SignOutOptions): Promise<SignOutResult>;
|
|
55
63
|
setActiveOrganization(organizationId: string | null): Promise<void>;
|
|
56
64
|
reload(): Promise<void>;
|
|
57
65
|
}
|
|
58
66
|
export interface CreateAtlasOptions {
|
|
59
67
|
publishableKey: string;
|
|
60
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* The instance's Frontend API: an absolute URL such as
|
|
70
|
+
* `"https://auth.example.com"`, or `"same-origin"` / a path such as `"/atlas"`
|
|
71
|
+
* behind a reverse proxy on the app's own origin. Required at runtime —
|
|
72
|
+
* `createAtlas()` throws an `AtlasConfigError` (`FRONTEND_API_REQUIRED` /
|
|
73
|
+
* `FRONTEND_API_INVALID`) when it is missing or malformed. Optional in the
|
|
74
|
+
* type only so existing call sites keep compiling.
|
|
75
|
+
*/
|
|
61
76
|
frontendApi?: string;
|
|
62
77
|
appearance?: Appearance;
|
|
63
78
|
localization?: Catalog;
|
package/dist/plugin.js
CHANGED
|
@@ -28,13 +28,13 @@ function createAtlas(options) {
|
|
|
28
28
|
if (typeof document !== 'undefined') {
|
|
29
29
|
const root = document.documentElement;
|
|
30
30
|
root.classList.add('atlas-root');
|
|
31
|
-
let applied = (0, runtime_1.applyAppearanceToDom)(document, root, (0, appearance_1.renderAppearance)(options.appearance, null, { frontendApi:
|
|
31
|
+
let applied = (0, runtime_1.applyAppearanceToDom)(document, root, (0, appearance_1.renderAppearance)(options.appearance, null, { frontendApi: client.frontendApi }));
|
|
32
32
|
if (typeof window !== 'undefined' && options.appearance?.instanceDesign !== false) {
|
|
33
33
|
// Deferred a tick so the session boot request goes first.
|
|
34
34
|
void Promise.resolve().then(loadInstanceDesign).then((design) => {
|
|
35
35
|
if (!design)
|
|
36
36
|
return;
|
|
37
|
-
applied = (0, runtime_1.applyAppearanceToDom)(document, root, (0, appearance_1.renderAppearance)(options.appearance, design, { frontendApi:
|
|
37
|
+
applied = (0, runtime_1.applyAppearanceToDom)(document, root, (0, appearance_1.renderAppearance)(options.appearance, design, { frontendApi: client.frontendApi }), applied);
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -54,7 +54,9 @@ function createAtlas(options) {
|
|
|
54
54
|
*/
|
|
55
55
|
function createAtlasClient(options) {
|
|
56
56
|
const publishableKey = options.publishableKey;
|
|
57
|
-
|
|
57
|
+
// Throws (synchronously, from `createAtlas()`) on a missing/invalid value
|
|
58
|
+
// rather than quietly sending every request to a relative path.
|
|
59
|
+
const baseUrl = (0, js_1.resolveFrontendApi)(options.frontendApi, { component: '`createAtlas()`' });
|
|
58
60
|
const doFetch = options.fetchImpl ?? fetch;
|
|
59
61
|
const status = (0, vue_1.shallowRef)('loading');
|
|
60
62
|
const user = (0, vue_1.shallowRef)(null);
|
|
@@ -82,7 +84,23 @@ function createAtlasClient(options) {
|
|
|
82
84
|
...init?.headers,
|
|
83
85
|
},
|
|
84
86
|
});
|
|
87
|
+
// The safer sign-out shared with every framework SDK: tombstones (kept in
|
|
88
|
+
// localStorage per FAPI origin, so a tab opened later stays signed out), the
|
|
89
|
+
// retried revoke and front-channel logout, the background re-try.
|
|
90
|
+
const guard = new js_1.SignOutGuard({ request: call, frontendApi: baseUrl });
|
|
91
|
+
const clearState = () => {
|
|
92
|
+
cache.clear();
|
|
93
|
+
status.value = 'signed_out';
|
|
94
|
+
user.value = null;
|
|
95
|
+
session.value = null;
|
|
96
|
+
claims.value = null;
|
|
97
|
+
memberships.value = [];
|
|
98
|
+
};
|
|
85
99
|
const applyToken = (jwt, sessionId) => {
|
|
100
|
+
// A refresh that was in flight when the user signed out must not put the
|
|
101
|
+
// signed-out session's token back.
|
|
102
|
+
if (guard.isSignedOut(sessionId))
|
|
103
|
+
return;
|
|
86
104
|
const expiresAt = (0, js_1.readExpiry)(jwt);
|
|
87
105
|
if (!expiresAt)
|
|
88
106
|
return;
|
|
@@ -95,13 +113,11 @@ function createAtlasClient(options) {
|
|
|
95
113
|
if (!response.ok)
|
|
96
114
|
throw new Error('boot failed');
|
|
97
115
|
const body = (await response.json());
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
claims.value = null;
|
|
104
|
-
memberships.value = [];
|
|
116
|
+
// The browser may still hold a refresh cookie for a session this browser
|
|
117
|
+
// signed out of (the revoke never landed): stay signed out. The guard
|
|
118
|
+
// re-tries the revoke in the background and drops the tombstone once it lands.
|
|
119
|
+
if (!body.session || !body.user || guard.refuse(body.session.id)) {
|
|
120
|
+
clearState();
|
|
105
121
|
return;
|
|
106
122
|
}
|
|
107
123
|
user.value = body.user;
|
|
@@ -165,23 +181,19 @@ function createAtlasClient(options) {
|
|
|
165
181
|
// implementation the Vue SDK surfaces.
|
|
166
182
|
const fapiClient = new js_1.FapiClient({ publishableKey, baseUrl, fetchImpl: doFetch });
|
|
167
183
|
const getProviderToken = (provider) => (0, js_1.getProviderToken)(fapiClient, provider);
|
|
184
|
+
/** The session this client holds: the token cache's, else the booted one. */
|
|
185
|
+
const currentSessionId = () => cache.peek()?.sessionId ?? session.value?.id ?? null;
|
|
168
186
|
const signOut = async (options) => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
cache.clear();
|
|
180
|
-
status.value = 'signed_out';
|
|
181
|
-
user.value = null;
|
|
182
|
-
session.value = null;
|
|
183
|
-
claims.value = null;
|
|
184
|
-
memberships.value = [];
|
|
187
|
+
// Tombstone → revoke (retried once) → front-channel logout. With no session
|
|
188
|
+
// in memory (e.g. called before boot finished) the guard finds the one the
|
|
189
|
+
// cookies carry, so a missing token never skips the server-side sign-out.
|
|
190
|
+
const attempt = await guard.revoke(currentSessionId(), options);
|
|
191
|
+
clearState();
|
|
192
|
+
// §L1 the server promoted another account signed in on this browser: adopt
|
|
193
|
+
// it deliberately (the revoke response already set its cookies).
|
|
194
|
+
if (guard.promoted(attempt))
|
|
195
|
+
await reload();
|
|
196
|
+
return guard.settle(attempt, options);
|
|
185
197
|
};
|
|
186
198
|
const setActiveOrganization = async (organizationId) => {
|
|
187
199
|
const current = cache.peek();
|
|
@@ -209,25 +221,62 @@ function createAtlasClient(options) {
|
|
|
209
221
|
scope.run(() => {
|
|
210
222
|
(0, vue_1.watch)([status, claims], () => scheduleRefresh(), { flush: 'post' });
|
|
211
223
|
});
|
|
224
|
+
// Another tab signed out of THIS session (its tombstone reached the shared
|
|
225
|
+
// localStorage): drop the token and re-check, which now refuses it. Lives for
|
|
226
|
+
// the app's lifetime, like the refresh watcher.
|
|
227
|
+
guard.watch(currentSessionId, () => {
|
|
228
|
+
cache.clear();
|
|
229
|
+
void reload();
|
|
230
|
+
});
|
|
212
231
|
/**
|
|
213
232
|
* §6.3 step 3: complete a redirect-based sign-in. An OAuth or hosted-page flow
|
|
214
233
|
* lands back here with a one-time ticket in the URL; exchange it for cookies,
|
|
215
234
|
* scrub the URL so a reload can't replay it, THEN boot. A redirect that only
|
|
216
235
|
* carries a `__atlas_status` (a second factor is still owed) has no ticket, so
|
|
217
236
|
* nothing is exchanged and the app boots signed-out — exactly as intended.
|
|
237
|
+
*
|
|
238
|
+
* §oauth popup mode: this page may also be running INSIDE the sign-in popup.
|
|
239
|
+
* - As the landing of a popup whose opener was severed by a
|
|
240
|
+
* Cross-Origin-Opener-Policy (`#atlas_popup_result=…`): relay the result
|
|
241
|
+
* to the opener over BroadcastChannel and close. If no opener takes it
|
|
242
|
+
* (its tab is gone), finish the sign-in here like a redirect.
|
|
243
|
+
* - After finishing a sign-in here (the redirect flow ran in the popup): tell
|
|
244
|
+
* the waiting opener and close the popup.
|
|
218
245
|
*/
|
|
219
246
|
const boot = async () => {
|
|
220
|
-
const
|
|
247
|
+
const fromUrl = typeof window !== 'undefined' ? (0, js_1.readRedirectResult)(window.location.search) : null;
|
|
248
|
+
let result = fromUrl;
|
|
249
|
+
// Checked synchronously first so an ordinary page load sends the session
|
|
250
|
+
// request before anything else (the design fetch is deferred behind it).
|
|
251
|
+
const landing = typeof window !== 'undefined' && (0, js_1.readPopupLanding)(window.location.hash)
|
|
252
|
+
? await (0, js_1.completeOAuthPopupLanding)().catch(() => null)
|
|
253
|
+
: null;
|
|
254
|
+
if (landing && !landing.delivered) {
|
|
255
|
+
const outcome = (0, js_1.mapOAuthPopupPayload)(landing.payload);
|
|
256
|
+
if (outcome?.ticket && outcome.attemptId) {
|
|
257
|
+
result = { attemptId: outcome.attemptId, ticket: outcome.ticket };
|
|
258
|
+
}
|
|
259
|
+
else if (outcome?.continuationUrl) {
|
|
260
|
+
// A second factor / connect / provider error: the redirect flow's page.
|
|
261
|
+
window.location.replace(outcome.continuationUrl);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
let exchanged = false;
|
|
221
266
|
if (result?.ticket) {
|
|
222
|
-
await call('/v1/client/tickets/exchange', {
|
|
267
|
+
const response = await call('/v1/client/tickets/exchange', {
|
|
223
268
|
method: 'POST',
|
|
224
269
|
body: JSON.stringify({ attempt_id: result.attemptId, ticket: result.ticket }),
|
|
225
270
|
}).catch(() => undefined);
|
|
271
|
+
exchanged = !!response?.ok;
|
|
226
272
|
}
|
|
227
|
-
if (
|
|
273
|
+
if (fromUrl && typeof window !== 'undefined') {
|
|
228
274
|
window.history.replaceState({}, document.title, (0, js_1.stripRedirectParams)(window.location.href));
|
|
229
275
|
}
|
|
230
276
|
await reload();
|
|
277
|
+
// Signed in inside the Atlas popup: hand back to the opener and close.
|
|
278
|
+
if (exchanged)
|
|
279
|
+
void (0, js_1.closeOAuthPopupAfterSignIn)();
|
|
231
280
|
};
|
|
232
281
|
/** The dashboard design from `GET /v1/appearance`; null on any failure (best-effort). */
|
|
233
282
|
const loadInstanceDesign = async () => {
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;AAmHA,kCA4CC;AA/JD,6BAOa;AACb,sCAkBuB;AACvB,uDAAiE;AACjE,6CAA0G;AAC1G,iCAA2D;AAC3D,uCAAgD;AA+EhD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,OAA2B;IACrD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAExE,OAAO;QACL,OAAO,CAAC,GAAQ;YACd,GAAG,CAAC,OAAO,CAAC,6BAAmB,EAAE,MAAM,CAAC,CAAC;YAEzC,2EAA2E;YAC3E,yEAAyE;YACzE,4EAA4E;YAC5E,qEAAqE;YACrE,yEAAyE;YACzE,2EAA2E;YAC3E,8DAA8D;YAC9D,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACjC,IAAI,OAAO,GAAG,IAAA,8BAAoB,EAChC,QAAQ,EACR,IAAI,EACJ,IAAA,6BAAgB,EAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAChF,CAAC;gBACF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,cAAc,KAAK,KAAK,EAAE,CAAC;oBAClF,0DAA0D;oBAC1D,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC9D,IAAI,CAAC,MAAM;4BAAE,OAAO;wBACpB,OAAO,GAAG,IAAA,8BAAoB,EAC5B,QAAQ,EACR,IAAI,EACJ,IAAA,6BAAgB,EAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,EACjF,OAAO,CACR,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,2EAA2E;YAC3E,qEAAqE;YACrE,6DAA6D;YAC7D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,KAAK,IAAI,EAAE,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAA2B;IAKpD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,0EAA0E;IAC1E,gEAAgE;IAChE,MAAM,OAAO,GAAG,IAAA,uBAAkB,EAAC,OAAO,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAA,gBAAU,EAAa,SAAS,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAA,gBAAU,EAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAsB,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAA,gBAAU,EAAuB,IAAI,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAA,gBAAU,EAAgC,EAAE,CAAC,CAAC;IAElE,MAAM,KAAK,GAAG,IAAI,eAAU,EAAE,CAAC;IAC/B,IAAI,KAAK,GAAyC,IAAI,CAAC;IAEvD,MAAM,cAAc,GAA0C,CAAC,GAAG,EAAE;QAClE,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAA,uBAAkB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YACjD,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAkB,EAAE,EAAE,CAChD,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAC3B,GAAG,IAAI;QACP,qEAAqE;QACrE,oBAAoB;QACpB,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE;YACP,mBAAmB,EAAE,cAAc;YACnC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,IAAI,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;IAEL,0EAA0E;IAC1E,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,KAAK,GAAG,IAAI,iBAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAExE,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,SAAiB,EAAE,EAAE;QACpD,yEAAyE;QACzE,mCAAmC;QACnC,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YAAE,OAAO;QACzC,MAAM,SAAS,GAAG,IAAA,eAAU,EAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YAEjD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAKlC,CAAC;YAEF,yEAAyE;YACzE,sEAAsE;YACtE,+EAA+E;YAC/E,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjE,UAAU,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC;YACxD,IAAI,IAAI,CAAC,GAAG;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,sEAAsE;YACtE,sCAAsC;YACtC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,YAAY,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,OAAO,CAAC,SAAS,SAAS,EAAE;gBAC7E,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAEpD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwC,CAAC;YAC5E,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;YAChE,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IAEF,+EAA+E;IAC/E,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,KAAK,GAAG,IAAA,mBAAc,EAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzD,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QAC9B,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;IACvC,CAAC,CAAC;IAEF,4EAA4E;IAC5E,2EAA2E;IAC3E,uCAAuC;IACvC,MAAM,UAAU,GAAG,IAAI,eAAU,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACnF,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAA,qBAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAExF,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;IAEpF,MAAM,OAAO,GAAG,KAAK,EAAE,OAAwB,EAA0B,EAAE;QACzE,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,UAAU,EAAE,CAAC;QACb,2EAA2E;QAC3E,iEAAiE;QACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,MAAM,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,cAA6B,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,OAAO,CAAC,SAAS,QAAQ,EAAE;YAC5E,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,cAAc,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO;QAEzB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;QACxD,uEAAuE;QACvE,sDAAsD;QACtD,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,mBAAY,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAK,CAAC;IAElF,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,KAAK,GAAG,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;QACb,IAAA,WAAK,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,8EAA8E;IAC9E,gDAAgD;IAChD,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACjC,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,KAAK,MAAM,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;OAcG;IACH,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GACX,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAA,uBAAkB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpF,IAAI,MAAM,GAA0B,OAAO,CAAC;QAC5C,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,OAAO,GACX,OAAO,MAAM,KAAK,WAAW,IAAI,IAAA,qBAAgB,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrE,CAAC,CAAC,MAAM,IAAA,8BAAyB,GAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAA,yBAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACzC,MAAM,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACpE,CAAC;iBAAM,IAAI,OAAO,EAAE,eAAe,EAAE,CAAC;gBACpC,wEAAwE;gBACxE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACjD,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE;gBACzD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;aAC9E,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAA,wBAAmB,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,MAAM,EAAE,CAAC;QACf,uEAAuE;QACvE,IAAI,SAAS;YAAE,KAAK,IAAA,+BAA0B,GAAE,CAAC;IACnD,CAAC,CAAC;IAEF,yFAAyF;IACzF,MAAM,kBAAkB,GAAG,KAAK,IAAoC,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,+BAAkB,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,2EAA2E;IAC3E,8EAA8E;IAC9E,4CAA4C;IAC5C,OAAO;QACL,MAAM,EAAE;YACN,cAAc;YACd,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO;YACP,MAAM;YACN,IAAI;YACJ,OAAO;YACP,MAAM;YACN,WAAW;YACX,cAAc;YACd,QAAQ;YACR,gBAAgB;YAChB,OAAO;YACP,qBAAqB;YACrB,MAAM;SACP;QACD,IAAI;QACJ,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAkB,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlasauth/vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@atlasauth/js": "0.
|
|
8
|
-
"@atlasauth/
|
|
9
|
-
"@atlasauth/
|
|
7
|
+
"@atlasauth/js": "0.8.0",
|
|
8
|
+
"@atlasauth/authz": "0.1.1",
|
|
9
|
+
"@atlasauth/design": "0.2.0"
|
|
10
10
|
},
|
|
11
11
|
"peerDependencies": {
|
|
12
12
|
"vue": ">=3.3"
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
|
-
"README.md"
|
|
26
|
+
"README.md",
|
|
27
|
+
"CHANGELOG.md"
|
|
27
28
|
],
|
|
28
29
|
"repository": {
|
|
29
30
|
"type": "git",
|