@owlmeans/web-oauth 0.1.18-rc.2 → 0.1.18-rc.20
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/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/web-oauth/SKILL.md +1 -1
- package/build/hooks/types.d.ts +16 -0
- package/build/hooks/types.d.ts.map +1 -0
- package/build/hooks/types.js +2 -0
- package/build/hooks/types.js.map +1 -0
- package/build/hooks/use-oauth-consent.d.ts +2 -15
- package/build/hooks/use-oauth-consent.d.ts.map +1 -1
- package/build/hooks/use-oauth-consent.js.map +1 -1
- package/build/i18n/fr.json +35 -0
- package/build/i18n.js +2 -0
- package/build/i18n.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/package.json +33 -33
- package/src/hooks/types.ts +18 -0
- package/src/hooks/use-oauth-consent.ts +2 -21
- package/src/i18n/fr.json +35 -0
- package/src/i18n.ts +2 -0
- package/src/index.ts +1 -0
- package/tests/harness/css.d.ts +1 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
6
6
|
your project's skill store (`.agents/skills/`):
|
|
7
7
|
|
|
8
8
|
```sh
|
|
9
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
9
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.48
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/web-oauth",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-
|
|
4
|
+
"version": "0.1.18-rc.20",
|
|
5
|
+
"generatedAt": "2026-10-05T08:32:19.130Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/web-oauth
|
|
9
9
|
|
|
10
10
|
**Layer:** Web (React, shadcn + Tailwind v4)
|
|
11
|
-
**Install:** `"@owlmeans/web-oauth": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/web-oauth": "^0.1.18-rc.20"` in `dependencies`
|
|
12
12
|
**Contracts:** `@owlmeans/oauth` — aliases, `makeOAuthProtocols`, `oauthFlow`, `ConsentView`
|
|
13
13
|
**Server half:** `@owlmeans/server-oauth` (its `consentUrl`/`deviceUrl` must point at these screens)
|
|
14
14
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ConsentView } from '@owlmeans/oauth';
|
|
2
|
+
export type ConsentStage = 'checking' | 'signing-in' | 'loading' | 'ready' | 'deciding' | 'done' | 'error';
|
|
3
|
+
/** Why the screen cannot go on — the screen phrases each kind as ONE sentence, never the wire text. */
|
|
4
|
+
export type ConsentErrorKind = 'missing' | 'not-found' | 'expired' | 'forbidden' | 'failed';
|
|
5
|
+
export interface UseOAuthConsent {
|
|
6
|
+
stage: ConsentStage;
|
|
7
|
+
view: ConsentView | null;
|
|
8
|
+
/** The raw failure, for a log; what a person reads is `errorKind`. */
|
|
9
|
+
error: string | null;
|
|
10
|
+
errorKind: ConsentErrorKind | null;
|
|
11
|
+
approve: () => Promise<void>;
|
|
12
|
+
deny: () => Promise<void>;
|
|
13
|
+
/** Sign the current session out and go through the sign-in again, returning to this request. */
|
|
14
|
+
switchAccount: () => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1G,uGAAuG;AACvG,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;AAE3F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAA;IACnB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,gGAAgG;IAChG,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
/** Why the screen cannot go on — the screen phrases each kind as ONE sentence, never the wire text. */
|
|
4
|
-
export type ConsentErrorKind = 'missing' | 'not-found' | 'expired' | 'forbidden' | 'failed';
|
|
5
|
-
export interface UseOAuthConsent {
|
|
6
|
-
stage: ConsentStage;
|
|
7
|
-
view: ConsentView | null;
|
|
8
|
-
/** The raw failure, for a log; what a person reads is `errorKind`. */
|
|
9
|
-
error: string | null;
|
|
10
|
-
errorKind: ConsentErrorKind | null;
|
|
11
|
-
approve: () => Promise<void>;
|
|
12
|
-
deny: () => Promise<void>;
|
|
13
|
-
/** Sign the current session out and go through the sign-in again, returning to this request. */
|
|
14
|
-
switchAccount: () => Promise<void>;
|
|
15
|
-
}
|
|
1
|
+
import { type OAuthEntrypointOptions } from '@owlmeans/oauth';
|
|
2
|
+
import type { UseOAuthConsent } from './types.js';
|
|
16
3
|
/**
|
|
17
4
|
* The whole consent screen's logic, headless — so the rendered component stays a thin shell over
|
|
18
5
|
* whatever a consuming app's own primitives look like, the same split `@owlmeans/web-auth-token`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-oauth-consent.d.ts","sourceRoot":"","sources":["../../src/hooks/use-oauth-consent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-oauth-consent.d.ts","sourceRoot":"","sources":["../../src/hooks/use-oauth-consent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyG,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAGpK,OAAO,KAAK,EAAkC,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,IAAI,YAAY,sBAAsB,KAAG,eAkHtF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-oauth-consent.js","sourceRoot":"","sources":["../../src/hooks/use-oauth-consent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"use-oauth-consent.js","sourceRoot":"","sources":["../../src/hooks/use-oauth-consent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"consent": {
|
|
3
|
+
"checking": "Vérification de votre session…",
|
|
4
|
+
"loading": "Chargement de la demande…",
|
|
5
|
+
"framed": "Cet écran ne peut pas s’afficher dans une autre page. Ouvrez-le directement.",
|
|
6
|
+
"error": "Une erreur est survenue. Réessayez depuis l’application qui vous a envoyé ici.",
|
|
7
|
+
"title": "{{client}} souhaite accéder à votre compte",
|
|
8
|
+
"known": "Vous avez déjà utilisé cette application.",
|
|
9
|
+
"known-by-host": "Demande provenant de {{host}}.",
|
|
10
|
+
"unverified": "Cette application s’est enregistrée elle-même et n’a pas été vérifiée.",
|
|
11
|
+
"device-code": "Code : {{code}}",
|
|
12
|
+
"device-name": "Appareil : {{name}}",
|
|
13
|
+
"redirect-host": "Vous retournerez vers {{host}}.",
|
|
14
|
+
"localhost-warning": "Cette application n’a enregistré que des adresses de votre ordinateur. N’approuvez que si vous venez de démarrer vous-même la connexion.",
|
|
15
|
+
"scope": "Accès demandé : {{scopes}}",
|
|
16
|
+
"approve": "Autoriser",
|
|
17
|
+
"deny": "Refuser",
|
|
18
|
+
"error-missing": "Il n’y a rien à autoriser ici. Redémarrez la connexion depuis l’application.",
|
|
19
|
+
"error-not-found": "Cette demande est inconnue ou a déjà été utilisée. Redémarrez la connexion depuis l’application.",
|
|
20
|
+
"error-expired": "Cette demande a expiré. Redémarrez la connexion depuis l’application.",
|
|
21
|
+
"error-forbidden": "Ce type de compte ne peut pas autoriser l’accès. Connectez-vous avec le compte que vous utilisez pour OwlMeans puis réessayez.",
|
|
22
|
+
"switch-account": "Utiliser un autre compte"
|
|
23
|
+
},
|
|
24
|
+
"device": {
|
|
25
|
+
"title": "Connecter un appareil",
|
|
26
|
+
"description": "Saisissez le code affiché par l’application que vous connectez.",
|
|
27
|
+
"code-label": "Code",
|
|
28
|
+
"continue": "Continuer"
|
|
29
|
+
},
|
|
30
|
+
"done": {
|
|
31
|
+
"title": "Vous êtes connecté",
|
|
32
|
+
"message": "Vous pouvez fermer cette fenêtre et continuer dans l’application qui vous a envoyé ici.",
|
|
33
|
+
"device-message": "Vous pouvez fermer cette fenêtre. L’application poursuivra automatiquement."
|
|
34
|
+
}
|
|
35
|
+
}
|
package/build/i18n.js
CHANGED
|
@@ -7,6 +7,7 @@ import be from './i18n/be.json' with { type: 'json' };
|
|
|
7
7
|
import uk from './i18n/uk.json' with { type: 'json' };
|
|
8
8
|
import es from './i18n/es.json' with { type: 'json' };
|
|
9
9
|
import de from './i18n/de.json' with { type: 'json' };
|
|
10
|
+
import fr from './i18n/fr.json' with { type: 'json' };
|
|
10
11
|
addI18nLib('en', OAUTH_I18N, en);
|
|
11
12
|
addI18nLib('pl', OAUTH_I18N, pl);
|
|
12
13
|
addI18nLib('ru', OAUTH_I18N, ru);
|
|
@@ -14,4 +15,5 @@ addI18nLib('be', OAUTH_I18N, be);
|
|
|
14
15
|
addI18nLib('uk', OAUTH_I18N, uk);
|
|
15
16
|
addI18nLib('es', OAUTH_I18N, es);
|
|
16
17
|
addI18nLib('de', OAUTH_I18N, de);
|
|
18
|
+
addI18nLib('fr', OAUTH_I18N, fr);
|
|
17
19
|
//# sourceMappingURL=i18n.js.map
|
package/build/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './consts.js';
|
|
|
2
2
|
export * from './append.js';
|
|
3
3
|
export * from './entrypoints.js';
|
|
4
4
|
export * from './hooks/use-oauth-consent.js';
|
|
5
|
+
export type * from './hooks/types.js';
|
|
5
6
|
export * from './components/index.js';
|
|
6
7
|
export * from './i18n.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,mBAAmB,kBAAkB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA"}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/web-oauth",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.20",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The browser half of @owlmeans/oauth — the consent, device-code and done screens an OAuth 2.1 sign-in ends on, driven by the shared consent flow, plus the entrypoints and app-config helper that put them on a web app with no wiring beyond configuration.",
|
|
6
6
|
"type": "module",
|
|
@@ -23,20 +23,20 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@owlmeans/auth-common": "^0.1.18-rc.
|
|
27
|
-
"@owlmeans/client": "^0.1.18-rc.
|
|
28
|
-
"@owlmeans/client-auth": "^0.1.18-rc.
|
|
29
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
30
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
31
|
-
"@owlmeans/client-flow": "^0.1.18-rc.
|
|
32
|
-
"@owlmeans/client-i18n": "^0.1.18-rc.
|
|
33
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
34
|
-
"@owlmeans/entrypoint": "^0.1.18-rc.
|
|
35
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
36
|
-
"@owlmeans/flow": "^0.1.18-rc.
|
|
37
|
-
"@owlmeans/i18n": "^0.1.18-rc.
|
|
38
|
-
"@owlmeans/oauth": "^0.1.18-rc.
|
|
39
|
-
"@owlmeans/route": "^0.1.18-rc.
|
|
26
|
+
"@owlmeans/auth-common": "^0.1.18-rc.46",
|
|
27
|
+
"@owlmeans/client": "^0.1.18-rc.50",
|
|
28
|
+
"@owlmeans/client-auth": "^0.1.18-rc.57",
|
|
29
|
+
"@owlmeans/client-context": "^0.1.18-rc.47",
|
|
30
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.46",
|
|
31
|
+
"@owlmeans/client-flow": "^0.1.18-rc.53",
|
|
32
|
+
"@owlmeans/client-i18n": "^0.1.18-rc.49",
|
|
33
|
+
"@owlmeans/context": "^0.1.18-rc.33",
|
|
34
|
+
"@owlmeans/entrypoint": "^0.1.18-rc.40",
|
|
35
|
+
"@owlmeans/error": "^0.1.18-rc.37",
|
|
36
|
+
"@owlmeans/flow": "^0.1.18-rc.44",
|
|
37
|
+
"@owlmeans/i18n": "^0.1.18-rc.38",
|
|
38
|
+
"@owlmeans/oauth": "^0.1.18-rc.15",
|
|
39
|
+
"@owlmeans/route": "^0.1.18-rc.34"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@radix-ui/react-label": "*",
|
|
@@ -50,26 +50,26 @@
|
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@owlmeans/dep-config": "workspace:*",
|
|
53
|
-
"@owlmeans/test-auth": "^0.1.18-rc.
|
|
54
|
-
"@owlmeans/test-ui": "^0.1.18-rc.
|
|
55
|
-
"@owlmeans/web-client": "^0.1.18-rc.
|
|
56
|
-
"@owlmeans/web-flow": "^0.1.18-rc.
|
|
57
|
-
"@radix-ui/react-label": "^2.1.
|
|
58
|
-
"@radix-ui/react-slot": "^1.
|
|
59
|
-
"@tailwindcss/vite": "^4.
|
|
60
|
-
"@types/bun": "^1.4.
|
|
61
|
-
"@types/react": "^19.
|
|
62
|
-
"@types/react-dom": "^19.
|
|
63
|
-
"@vitejs/plugin-react": "^6.
|
|
64
|
-
"class-variance-authority": "^0.7.
|
|
65
|
-
"clsx": "^2.1.
|
|
66
|
-
"idb-keyval": "^6.
|
|
53
|
+
"@owlmeans/test-auth": "^0.1.18-rc.45",
|
|
54
|
+
"@owlmeans/test-ui": "^0.1.18-rc.48",
|
|
55
|
+
"@owlmeans/web-client": "^0.1.18-rc.60",
|
|
56
|
+
"@owlmeans/web-flow": "^0.1.18-rc.52",
|
|
57
|
+
"@radix-ui/react-label": "^2.1.15",
|
|
58
|
+
"@radix-ui/react-slot": "^1.3.3",
|
|
59
|
+
"@tailwindcss/vite": "^4.3.3",
|
|
60
|
+
"@types/bun": "^1.4.2",
|
|
61
|
+
"@types/react": "^19.3.0",
|
|
62
|
+
"@types/react-dom": "^19.3.0",
|
|
63
|
+
"@vitejs/plugin-react": "^6.1.1",
|
|
64
|
+
"class-variance-authority": "^0.7.1",
|
|
65
|
+
"clsx": "^2.1.1",
|
|
66
|
+
"idb-keyval": "^6.3.0",
|
|
67
67
|
"nodemon": "^3.1.14",
|
|
68
|
-
"playwright": "^1.
|
|
69
|
-
"tailwind-merge": "^3.
|
|
70
|
-
"tailwindcss": "^4.
|
|
68
|
+
"playwright": "^1.63.0",
|
|
69
|
+
"tailwind-merge": "^3.7.0",
|
|
70
|
+
"tailwindcss": "^4.3.3",
|
|
71
71
|
"typescript": "^7.0.2",
|
|
72
|
-
"vite": "^8.
|
|
72
|
+
"vite": "^8.3.2"
|
|
73
73
|
},
|
|
74
74
|
"publishConfig": {
|
|
75
75
|
"access": "public"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ConsentView } from '@owlmeans/oauth'
|
|
2
|
+
|
|
3
|
+
export type ConsentStage = 'checking' | 'signing-in' | 'loading' | 'ready' | 'deciding' | 'done' | 'error'
|
|
4
|
+
|
|
5
|
+
/** Why the screen cannot go on — the screen phrases each kind as ONE sentence, never the wire text. */
|
|
6
|
+
export type ConsentErrorKind = 'missing' | 'not-found' | 'expired' | 'forbidden' | 'failed'
|
|
7
|
+
|
|
8
|
+
export interface UseOAuthConsent {
|
|
9
|
+
stage: ConsentStage
|
|
10
|
+
view: ConsentView | null
|
|
11
|
+
/** The raw failure, for a log; what a person reads is `errorKind`. */
|
|
12
|
+
error: string | null
|
|
13
|
+
errorKind: ConsentErrorKind | null
|
|
14
|
+
approve: () => Promise<void>
|
|
15
|
+
deny: () => Promise<void>
|
|
16
|
+
/** Sign the current session out and go through the sign-in again, returning to this request. */
|
|
17
|
+
switchAccount: () => Promise<void>
|
|
18
|
+
}
|
|
@@ -6,29 +6,10 @@ import { DISPATCHER } from '@owlmeans/auth'
|
|
|
6
6
|
import { suspendFlow } from '@owlmeans/client-flow'
|
|
7
7
|
import { makeFlowModel } from '@owlmeans/flow'
|
|
8
8
|
import { ResilientError } from '@owlmeans/error'
|
|
9
|
-
import {
|
|
10
|
-
makeOAuthProtocols, oauthFlow, OAuthFlowStep, OAUTH_PAYLOAD_KIND, OAUTH_PAYLOAD_REF
|
|
11
|
-
} from '@owlmeans/oauth'
|
|
12
|
-
import type { ConsentView, OAuthEntrypointOptions } from '@owlmeans/oauth'
|
|
9
|
+
import { makeOAuthProtocols, oauthFlow, OAuthFlowStep, OAUTH_PAYLOAD_KIND, OAUTH_PAYLOAD_REF, type ConsentView, type OAuthEntrypointOptions } from '@owlmeans/oauth'
|
|
13
10
|
import type { ClientEntrypoint } from '@owlmeans/client-entrypoint'
|
|
14
11
|
import { OAUTH_SUSPEND_TTL_MS } from '../consts.js'
|
|
15
|
-
|
|
16
|
-
export type ConsentStage = 'checking' | 'signing-in' | 'loading' | 'ready' | 'deciding' | 'done' | 'error'
|
|
17
|
-
|
|
18
|
-
/** Why the screen cannot go on — the screen phrases each kind as ONE sentence, never the wire text. */
|
|
19
|
-
export type ConsentErrorKind = 'missing' | 'not-found' | 'expired' | 'forbidden' | 'failed'
|
|
20
|
-
|
|
21
|
-
export interface UseOAuthConsent {
|
|
22
|
-
stage: ConsentStage
|
|
23
|
-
view: ConsentView | null
|
|
24
|
-
/** The raw failure, for a log; what a person reads is `errorKind`. */
|
|
25
|
-
error: string | null
|
|
26
|
-
errorKind: ConsentErrorKind | null
|
|
27
|
-
approve: () => Promise<void>
|
|
28
|
-
deny: () => Promise<void>
|
|
29
|
-
/** Sign the current session out and go through the sign-in again, returning to this request. */
|
|
30
|
-
switchAccount: () => Promise<void>
|
|
31
|
-
}
|
|
12
|
+
import type { ConsentErrorKind, ConsentStage, UseOAuthConsent } from './types.js'
|
|
32
13
|
|
|
33
14
|
const errorKindOf = (message: string): ConsentErrorKind =>
|
|
34
15
|
message.includes('request-expired') ? 'expired'
|
package/src/i18n/fr.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"consent": {
|
|
3
|
+
"checking": "Vérification de votre session…",
|
|
4
|
+
"loading": "Chargement de la demande…",
|
|
5
|
+
"framed": "Cet écran ne peut pas s’afficher dans une autre page. Ouvrez-le directement.",
|
|
6
|
+
"error": "Une erreur est survenue. Réessayez depuis l’application qui vous a envoyé ici.",
|
|
7
|
+
"title": "{{client}} souhaite accéder à votre compte",
|
|
8
|
+
"known": "Vous avez déjà utilisé cette application.",
|
|
9
|
+
"known-by-host": "Demande provenant de {{host}}.",
|
|
10
|
+
"unverified": "Cette application s’est enregistrée elle-même et n’a pas été vérifiée.",
|
|
11
|
+
"device-code": "Code : {{code}}",
|
|
12
|
+
"device-name": "Appareil : {{name}}",
|
|
13
|
+
"redirect-host": "Vous retournerez vers {{host}}.",
|
|
14
|
+
"localhost-warning": "Cette application n’a enregistré que des adresses de votre ordinateur. N’approuvez que si vous venez de démarrer vous-même la connexion.",
|
|
15
|
+
"scope": "Accès demandé : {{scopes}}",
|
|
16
|
+
"approve": "Autoriser",
|
|
17
|
+
"deny": "Refuser",
|
|
18
|
+
"error-missing": "Il n’y a rien à autoriser ici. Redémarrez la connexion depuis l’application.",
|
|
19
|
+
"error-not-found": "Cette demande est inconnue ou a déjà été utilisée. Redémarrez la connexion depuis l’application.",
|
|
20
|
+
"error-expired": "Cette demande a expiré. Redémarrez la connexion depuis l’application.",
|
|
21
|
+
"error-forbidden": "Ce type de compte ne peut pas autoriser l’accès. Connectez-vous avec le compte que vous utilisez pour OwlMeans puis réessayez.",
|
|
22
|
+
"switch-account": "Utiliser un autre compte"
|
|
23
|
+
},
|
|
24
|
+
"device": {
|
|
25
|
+
"title": "Connecter un appareil",
|
|
26
|
+
"description": "Saisissez le code affiché par l’application que vous connectez.",
|
|
27
|
+
"code-label": "Code",
|
|
28
|
+
"continue": "Continuer"
|
|
29
|
+
},
|
|
30
|
+
"done": {
|
|
31
|
+
"title": "Vous êtes connecté",
|
|
32
|
+
"message": "Vous pouvez fermer cette fenêtre et continuer dans l’application qui vous a envoyé ici.",
|
|
33
|
+
"device-message": "Vous pouvez fermer cette fenêtre. L’application poursuivra automatiquement."
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/i18n.ts
CHANGED
|
@@ -8,6 +8,7 @@ import be from './i18n/be.json' with { type: 'json' }
|
|
|
8
8
|
import uk from './i18n/uk.json' with { type: 'json' }
|
|
9
9
|
import es from './i18n/es.json' with { type: 'json' }
|
|
10
10
|
import de from './i18n/de.json' with { type: 'json' }
|
|
11
|
+
import fr from './i18n/fr.json' with { type: 'json' }
|
|
11
12
|
|
|
12
13
|
addI18nLib('en', OAUTH_I18N, en)
|
|
13
14
|
addI18nLib('pl', OAUTH_I18N, pl)
|
|
@@ -16,3 +17,4 @@ addI18nLib('be', OAUTH_I18N, be)
|
|
|
16
17
|
addI18nLib('uk', OAUTH_I18N, uk)
|
|
17
18
|
addI18nLib('es', OAUTH_I18N, es)
|
|
18
19
|
addI18nLib('de', OAUTH_I18N, de)
|
|
20
|
+
addI18nLib('fr', OAUTH_I18N, fr)
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module '*.css'
|