@owlmeans/web-client 0.1.18-rc.3 → 0.1.18-rc.30

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.
Files changed (104) hide show
  1. package/README.md +19 -16
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/web-client/SKILL.md +28 -48
  4. package/build/components/dispatcher/component.d.ts.map +1 -1
  5. package/build/components/dispatcher/component.js +54 -9
  6. package/build/components/dispatcher/component.js.map +1 -1
  7. package/build/components/dispatcher/types.d.ts +2 -2
  8. package/build/components/dispatcher/types.d.ts.map +1 -1
  9. package/build/context.d.ts.map +1 -1
  10. package/build/context.js +2 -1
  11. package/build/context.js.map +1 -1
  12. package/build/entrypoints.d.ts +16 -0
  13. package/build/entrypoints.d.ts.map +1 -0
  14. package/build/entrypoints.js +20 -0
  15. package/build/entrypoints.js.map +1 -0
  16. package/build/exports.d.ts +2 -1
  17. package/build/exports.d.ts.map +1 -1
  18. package/build/exports.js +1 -1
  19. package/build/exports.js.map +1 -1
  20. package/build/i18n/auth-be.json +32 -0
  21. package/build/i18n/auth-de.json +32 -0
  22. package/build/i18n/auth-en.json +32 -0
  23. package/build/i18n/auth-es.json +32 -0
  24. package/build/i18n/auth-pl.json +32 -0
  25. package/build/i18n/auth-ru.json +32 -0
  26. package/build/i18n/auth-uk.json +32 -0
  27. package/build/index.d.ts +2 -1
  28. package/build/index.d.ts.map +1 -1
  29. package/build/index.js +2 -1
  30. package/build/index.js.map +1 -1
  31. package/build/login/consts.d.ts +11 -0
  32. package/build/login/consts.d.ts.map +1 -0
  33. package/build/login/consts.js +11 -0
  34. package/build/login/consts.js.map +1 -0
  35. package/build/login/index.d.ts +8 -0
  36. package/build/login/index.d.ts.map +1 -0
  37. package/build/login/index.js +8 -0
  38. package/build/login/index.js.map +1 -0
  39. package/build/login/pump.d.ts +20 -0
  40. package/build/login/pump.d.ts.map +1 -0
  41. package/build/login/pump.js +46 -0
  42. package/build/login/pump.js.map +1 -0
  43. package/build/login/redirect.d.ts +9 -0
  44. package/build/login/redirect.d.ts.map +1 -0
  45. package/build/login/redirect.js +47 -0
  46. package/build/login/redirect.js.map +1 -0
  47. package/build/login/screen.d.ts +15 -0
  48. package/build/login/screen.d.ts.map +1 -0
  49. package/build/login/screen.js +97 -0
  50. package/build/login/screen.js.map +1 -0
  51. package/build/login/service.d.ts +10 -0
  52. package/build/login/service.d.ts.map +1 -0
  53. package/build/login/service.js +17 -0
  54. package/build/login/service.js.map +1 -0
  55. package/build/login/surrogate.d.ts +21 -0
  56. package/build/login/surrogate.d.ts.map +1 -0
  57. package/build/login/surrogate.js +144 -0
  58. package/build/login/surrogate.js.map +1 -0
  59. package/build/login/view.d.ts +26 -0
  60. package/build/login/view.d.ts.map +1 -0
  61. package/build/login/view.js +73 -0
  62. package/build/login/view.js.map +1 -0
  63. package/build/main.d.ts +9 -1
  64. package/build/main.d.ts.map +1 -1
  65. package/build/main.js +9 -1
  66. package/build/main.js.map +1 -1
  67. package/build/middleware.d.ts.map +1 -1
  68. package/build/middleware.js +7 -6
  69. package/build/middleware.js.map +1 -1
  70. package/build/service.js +1 -1
  71. package/build/service.js.map +1 -1
  72. package/build/types.d.ts +2 -1
  73. package/build/types.d.ts.map +1 -1
  74. package/package.json +17 -17
  75. package/src/components/dispatcher/component.tsx +72 -8
  76. package/src/components/dispatcher/types.ts +2 -2
  77. package/src/context.ts +2 -2
  78. package/src/entrypoints.ts +20 -0
  79. package/src/exports.ts +2 -1
  80. package/src/i18n/auth-be.json +32 -0
  81. package/src/i18n/auth-de.json +32 -0
  82. package/src/i18n/auth-en.json +32 -0
  83. package/src/i18n/auth-es.json +32 -0
  84. package/src/i18n/auth-pl.json +32 -0
  85. package/src/i18n/auth-ru.json +32 -0
  86. package/src/i18n/auth-uk.json +32 -0
  87. package/src/index.ts +2 -1
  88. package/src/login/consts.ts +12 -0
  89. package/src/login/index.ts +7 -0
  90. package/src/login/pump.ts +53 -0
  91. package/src/login/redirect.ts +59 -0
  92. package/src/login/screen.tsx +119 -0
  93. package/src/login/service.ts +19 -0
  94. package/src/login/surrogate.ts +175 -0
  95. package/src/login/view.tsx +94 -0
  96. package/src/main.tsx +11 -2
  97. package/src/middleware.ts +7 -6
  98. package/src/service.ts +1 -1
  99. package/src/types.ts +2 -1
  100. package/build/modules.d.ts +0 -2
  101. package/build/modules.d.ts.map +0 -1
  102. package/build/modules.js +0 -8
  103. package/build/modules.js.map +0 -1
  104. package/src/modules.ts +0 -9
package/README.md CHANGED
@@ -1,19 +1,21 @@
1
1
  # @owlmeans/web-client
2
2
 
3
- React web application bootstrap — context factory, module/routing utilities, and app renderer for OwlMeans web apps.
3
+ React web application bootstrap — context factory, entrypoint/routing utilities, and app renderer for OwlMeans web apps.
4
4
 
5
5
  ## Overview
6
6
 
7
7
  - `makeContext(cfg)` — creates the web application context (includes auth, router, and DB services)
8
8
  - `renderApp(context)` — mounts the React app to the DOM
9
- - Re-exports module/routing helpers: `module`, `route`, `frontend`, `handler`, `elevate`
9
+ - Re-exports entrypoint/routing helpers: `bind`, `bindAll`, `bindScreen`, `route`, `frontend`, `handler`
10
10
  - Re-exports route constants: `BASE`, `HOME`, `ROOT`, `GUEST`
11
- - `Module<T>` — typed client module interface for `.call()` API requests
11
+ - `entrypoints` — the base client entrypoints (dispatcher, login surrogate) every web app spreads
12
+ - `ClientProtocolEntrypoint<Protocol>` — the context-bound entrypoint interface inferred from a
13
+ shared protocol declaration; it exposes `call()` / `invoke()` / `url()`
12
14
 
13
15
  ## Installation
14
16
 
15
17
  ```bash
16
- bun add @owlmeans/web-client
18
+ bun add @owlmeans/web-client@^0.1.18-rc.23
17
19
  ```
18
20
 
19
21
  ## Usage
@@ -24,27 +26,28 @@ Bootstrap the app:
24
26
  import { makeContext, renderApp } from '@owlmeans/web-client'
25
27
 
26
28
  const context = makeContext(config)
27
- context.registerModules(appModules)
29
+ context.registerEntrypoints(appEntrypoints)
28
30
  context.serviceRoute(MANAGER, true)
29
31
  renderApp<Config, Context>(context)
30
32
  ```
31
33
 
32
- Define modules:
34
+ Define entrypoints:
33
35
 
34
36
  ```typescript
35
- import { BASE, HOME, elevate, frontend, handler, module, route } from '@owlmeans/web-client'
37
+ import { bindScreen, bindAll } from '@owlmeans/client-entrypoint'
38
+ import { handler } from '@owlmeans/client'
39
+ import { appEntrypoints as protocols } from 'my-app-common'
36
40
 
37
- modules.push(module(route(BASE, '/', frontend()), handler(PublicLayout)))
38
- modules.push(module(route(HOME, '/', frontend({ default: true, parent: BASE })), handler(HomeScreen)))
39
- elevate(modules, manager.back.account.base)
41
+ appEntrypoints.push(bindScreen(protocols.web.base, handler(PublicLayout)))
42
+ appEntrypoints.push(bindScreen(protocols.web.home, handler(HomeScreen)))
43
+ appEntrypoints.push(...bindAll(protocols.api))
40
44
  ```
41
45
 
42
- Call an API module from a component:
46
+ A screen entrypoint carries a renderer, so it is addressed by `url()` and never called over the
47
+ wire. Call an API entrypoint from a component:
43
48
 
44
49
  ```typescript
45
- import type { Module } from '@owlmeans/web-client'
46
-
47
- const [result] = await context.module<Module<MyType>>(moduleAlias)
50
+ const result = await context.entrypoint(appEntrypoints.api.project)
48
51
  .call({ params: { id }, body: data })
49
52
  ```
50
53
 
@@ -75,7 +78,7 @@ Component that handles authentication routing (redirect to login, etc.).
75
78
  - [`@owlmeans/client-context`](../client-context) — `ClientContext` base extended by `makeContext`
76
79
  - [`@owlmeans/web-router`](../web-router) — default OwlMeans browser routing plugin registered by `makeContext`
77
80
  - [`@owlmeans/web-db`](../web-db) — IndexedDB service registered by `makeContext`
78
- - [`@owlmeans/client-module`](../client-module) — `ClientModule<T>` / `Module<T>` implementation
81
+ - [`@owlmeans/client-entrypoint`](../client-entrypoint) — protocol binding helpers
79
82
 
80
83
  <!-- owlmeans:agent-guidance:start -->
81
84
  ## Agent guidance
@@ -85,7 +88,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
85
88
  your project's skill store (`.agents/skills/`):
86
89
 
87
90
  ```sh
88
- npx @owlmeans/agent-skills
91
+ npx @owlmeans/agent-skills@^0.1.18-rc.18
89
92
  ```
90
93
 
91
94
  The embedded files are version-matched to this package release. Do not edit them
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
3
  "package": "@owlmeans/web-client",
4
- "version": "0.1.18-rc.0",
5
- "generatedAt": "2026-08-16T22:20:50.508Z",
4
+ "version": "0.1.18-rc.30",
5
+ "generatedAt": "2026-09-12T13:35:38.912Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -1,59 +1,39 @@
1
1
  ---
2
2
  name: web-client
3
- description: How to use @owlmeans/web-client — browser entry point with renderApp(), elevate() to attach React components to entrypoint declarations, context.registerEntrypoints() and context.serviceRoute() for routing. Auto-invoked when working with the web app entry point or attaching React components to entrypoints.
4
- user-invocable: false
3
+ description: Bind OwlMeans shared entrypoint protocols in a browser application. Use when registering client routes, attaching React screens, calling API protocols, or configuring the browser context.
5
4
  ---
6
5
  <!-- AUTO-GENERATED — do not edit. Regenerate via sync-agent-meta. -->
7
6
 
8
- # @owlmeans/web-client
9
-
10
- **Layer:** Web (React)
11
- **Install:** `"@owlmeans/web-client": "^0.1.18-rc.0"` in `dependencies`
12
-
13
- ## Key Exports
14
-
15
- | Export | Description |
16
- |--------|-------------|
17
- | `renderApp<C, T>(context)` | Mount the React app (routing via the active router plugin — OwlMeans by default) |
18
- | `elevate(modules, alias, handler)` | Attach a React component (or `handler(Component)`) to an entrypoint |
19
- | `handler(Component)` | Wrap a React component as an entrypoint handler |
20
- | `context.registerEntrypoints(modules)` | Register the full entrypoint list on the context |
21
- | `context.serviceRoute(alias, isDefault?)` | Mark a service's routing root |
22
- | `router`, `components`, `service`, `i18n`, `helpers`, `errors` | Web-specific helpers |
23
- | Constants | Default aliases (BASE, HOME) |
24
-
25
- ## Usage
26
-
27
- ### Entry point
28
- ```typescript
29
- // index.tsx
30
- import { renderApp } from '@owlmeans/web-client'
31
- import { makeContext } from './context.js'
32
- import { appModules } from './modules.js'
33
- import { MANAGER, MANAGER_API } from 'my-common'
34
- import config from './config.js'
35
-
36
- const context = makeContext(config)
37
- context.registerEntrypoints(appModules)
38
- context.serviceRoute(MANAGER, true)
39
- context.serviceRoute(MANAGER_API, true)
40
- renderApp<Config, Context>(context)
41
- ```
7
+ # Browser protocol entrypoints
8
+
9
+ Shared protocol declarations are immutable. Bind a complete protocol tree for callable API routes,
10
+ then bind frontend declarations to screens.
42
11
 
43
- ### Module elevation with React components
44
- ```typescript
45
- import { elevate, route, frontend, handler, entrypoint, guard } from '@owlmeans/web-client'
46
- import { HomeScreen, ProjectDashboardScreen } from './screens/index.js'
12
+ ```ts
13
+ import { bindAll, bindScreen, entrypoints as frameworkEntrypoints, handler } from '@owlmeans/web-panel'
14
+ import { projectEntrypoints, webEntrypoints } from 'project-common'
15
+ import { ProjectScreen } from './screens/project.js'
16
+
17
+ export const appEntrypoints = [
18
+ ...frameworkEntrypoints,
19
+ ...bindAll(projectEntrypoints),
20
+ bindScreen(webEntrypoints.project, handler(ProjectScreen)),
21
+ ]
22
+ ```
47
23
 
48
- elevate(modules, manager.front.project.dashboard, handler(ProjectDashboardScreen))
24
+ Call a protocol directly. Its request and response types come from its shared contract.
49
25
 
50
- modules.push(
51
- entrypoint(route(HOME, '/', frontend({ default: true, parent: BASE })), handler(HomeScreen))
52
- )
26
+ ```ts
27
+ const project = await context.entrypoint(projectEntrypoints.get).call({
28
+ params: { id: projectId },
29
+ })
53
30
  ```
54
31
 
55
- ## Depends On
32
+ ## Rules
56
33
 
57
- - `@owlmeans/client`, `@owlmeans/web-router` (default OwlMeans browser routing), `@owlmeans/web-panel` (typically), `@owlmeans/client-i18n`
58
- - `@owlmeans/entrypoint`, `@owlmeans/route`
59
- - `react`, `react-dom` (peer). No longer depends on `react-router` — opt into it with `@owlmeans/web-router-react-router` (`appendReactRouter`). The former `provide` export is a deprecated `undefined`.
34
+ - Declare paths, guards, gates and contracts once in the shared protocol tree.
35
+ - Bind every API declaration the browser calls, including route parents.
36
+ - Use `bindScreen(protocol, handler(Component))` only for frontend route declarations.
37
+ - Do not replace request/response typing at a call site; update the shared contract instead.
38
+ - Keep framework entrypoints and application entrypoints in one registered array, without mutating a
39
+ shared declaration collection.
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/component.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,6FAmCrB,CAAA"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/component.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,UAAU,6FA+FrB,CAAA"}
@@ -1,14 +1,27 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { DispatcherHOC } from '@owlmeans/client-auth';
3
- import { useEffect } from 'react';
3
+ import { useEffect, useState } from 'react';
4
4
  import { useI18nLib } from '@owlmeans/client-i18n';
5
5
  import { AUTH_QUERY } from '@owlmeans/auth';
6
+ import { FallbackLoginScreen, LoginIntent, LoginOutcome, ResumeAction, resumeAction, } from '@owlmeans/client-auth/login';
7
+ import { LoginSurrogateView, SurrogateStage } from '../../login/view.js';
6
8
  import { useContext } from '../../context.js';
7
- export const Dispatcher = DispatcherHOC(({ provideToken }) => {
9
+ export const Dispatcher = DispatcherHOC(({ provideToken, navigate }) => {
8
10
  const context = useContext();
9
11
  const [query] = context.router().useSearchParams();
10
12
  const t = useI18nLib('auth', 'dispatcher');
13
+ const tAuth = useI18nLib('auth');
14
+ // Read in the component body, not in the effect: `window.name` is set by `window.open` before
15
+ // this document loads and `sessionStorage` carries the marker across the provider round trip, so
16
+ // the answer is already correct at first paint — and a first paint that showed the application
17
+ // before an effect corrected it is the defect this exists to prevent.
18
+ const [env] = useState(() => context.login().env());
19
+ const [outcome, setOutcome] = useState(null);
20
+ // Nothing to return from and nobody signed in: offer the choice rather than starting a flow.
21
+ const [choose, setChoose] = useState(false);
11
22
  useEffect(() => {
23
+ // First statement of the effect on purpose: everything below can navigate this window away.
24
+ context.login().enter();
12
25
  const token = query.get(AUTH_QUERY);
13
26
  if (token != null) {
14
27
  const params = {};
@@ -18,15 +31,47 @@ export const Dispatcher = DispatcherHOC(({ provideToken }) => {
18
31
  }
19
32
  });
20
33
  provideToken({ token }, params);
34
+ return;
21
35
  }
22
- else {
23
- context.auth().authenticated().then(authzToken => {
24
- if (authzToken == null) {
25
- provideToken({ token: '' }, undefined);
26
- }
27
- });
28
- }
36
+ void context.auth().authenticated().then(async (authzToken) => {
37
+ if (authzToken == null || authzToken === '') {
38
+ setChoose(true);
39
+ return;
40
+ }
41
+ // A session already exists in THIS document. Whether it is useful here, or belongs to the
42
+ // window that opened this one, is the plugin's call — the dispatcher reads no environment.
43
+ const settled = await context.login().resume(authzToken);
44
+ switch (resumeAction(settled)) {
45
+ case ResumeAction.Stop:
46
+ return;
47
+ case ResumeAction.Render:
48
+ setOutcome(settled);
49
+ return;
50
+ default:
51
+ await navigate();
52
+ }
53
+ });
29
54
  }, []);
55
+ // A surrogate window never renders the application, whatever else is true. Checked ahead of
56
+ // every other return for exactly that reason.
57
+ //
58
+ // `choose` is the one state this must NOT mask, and it is not an exception to the rule: the
59
+ // login chooser is not the application. A login window with nothing to return from and nobody
60
+ // signed in has exactly one thing left that can move it forward, and that is asking which
61
+ // provider. The surrogate URL normally carries `?method=` so the question is already settled,
62
+ // but a window opened from a bare "Log in" — the framed application's own header button — has no
63
+ // method to send. Returning the "working" panel there left the popup on "Signing you in…"
64
+ // permanently, because nothing was ever going to start.
65
+ if (env.surrogate && !choose) {
66
+ return _jsx(LoginSurrogateView, { intent: LoginIntent.Login, stage: outcome === LoginOutcome.Orphaned ? SurrogateStage.Orphaned
67
+ : outcome === LoginOutcome.Failed ? SurrogateStage.Failed
68
+ : outcome === LoginOutcome.Gesture ? SurrogateStage.Gesture
69
+ : SurrogateStage.Working, onAction: () => window.close(), translate: (key, defaultValue) => tAuth(key, { defaultValue }) });
70
+ }
71
+ if (choose) {
72
+ const Screen = context.login().screen() ?? FallbackLoginScreen;
73
+ return _jsx(Screen, { translate: (key, defaultValue) => tAuth(key, { defaultValue }) });
74
+ }
30
75
  return query.has(AUTH_QUERY) ? _jsx("div", { style: {
31
76
  width: '100%', // Makes the div occupy the full width
32
77
  display: 'flex', // Enables flexbox layout
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/dispatcher/component.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAA;IAElD,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAA2B,EAAE,CAAA;YACzC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC3B,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;gBACrB,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC/C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAK,KAAK,EAAE;YACzC,KAAK,EAAE,MAAM,EAAE,sCAAsC;YACrD,OAAO,EAAE,MAAM,EAAE,yBAAyB;YAC1C,cAAc,EAAE,QAAQ,EAAE,+BAA+B;YACzD,UAAU,EAAE,QAAQ,EAAE,yCAAyC;YAC/D,SAAS,EAAE,QAAQ,EAAE,8BAA8B;YACnD,UAAU,EAAE,MAAM,EAAE,6BAA6B;YACjD,aAAa,EAAE,MAAM,EAAE,6BAA6B;SACrD,YAAG,CAAC,CAAC,SAAS,CAAC,GAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AACrC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/dispatcher/component.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { ModuleContextParams } from "@owlmeans/client";
1
+ import type { EntrypointContextParams } from "@owlmeans/client";
2
2
  import type { DispatcherProps } from "@owlmeans/client-auth";
3
3
  import type { PropsWithChildren } from "react";
4
- export interface ParametrisedProps extends PropsWithChildren<ModuleContextParams & DispatcherProps> {
4
+ export interface ParametrisedProps extends PropsWithChildren<EntrypointContextParams & DispatcherProps> {
5
5
  }
6
6
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE9C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,CAAC,mBAAmB,GAAG,eAAe,CAAC;CAClG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE9C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,CAAC,uBAAuB,GAAG,eAAe,CAAC;CACtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AASlD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAC7F,CAAC,KACL,CAYF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,QACnF,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAUlD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAC7F,CAAC,KACL,CAWF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAC,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,QACnF,CAAA"}
package/build/context.js CHANGED
@@ -6,6 +6,7 @@ import { useContext as useCtx } from '@owlmeans/client';
6
6
  import { extractPrimaryHost } from './helper.js';
7
7
  import { appendWebAuthService } from './service.js';
8
8
  import { appendWebRouter } from '@owlmeans/web-router';
9
+ import { appendWebLogin } from './login/service.js';
9
10
  export const makeContext = (cfg) => {
10
11
  const context = makeClientContext(cfg);
11
12
  extractPrimaryHost(context);
@@ -13,7 +14,7 @@ export const makeContext = (cfg) => {
13
14
  appendWebDbService(context);
14
15
  appendClientResource(context, AUTH_RESOURCE);
15
16
  appendWebRouter(context);
16
- context.makeContext = makeContext;
17
+ appendWebLogin(context);
17
18
  return context;
18
19
  };
19
20
  export const useContext = () => useCtx();
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAM,EACH,EAAE;IACL,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAM,CAAA;IAC3C,kBAAkB,CAAO,OAAO,CAAC,CAAA;IAEjC,oBAAoB,CAAO,OAAO,CAAC,CAAA;IACnC,kBAAkB,CAAO,OAAO,CAAC,CAAA;IACjC,oBAAoB,CAAO,OAAO,EAAE,aAAa,CAAC,CAAA;IAClD,eAAe,CAAO,OAAO,CAAC,CAAA;IAE9B,OAAO,CAAC,WAAW,GAAG,WAAyC,CAAA;IAE/D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,GAA4E,EAAE,CACtG,MAAM,EAAO,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAM,EACH,EAAE;IACL,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAM,CAAA;IAC3C,kBAAkB,CAAO,OAAO,CAAC,CAAA;IAEjC,oBAAoB,CAAO,OAAO,CAAC,CAAA;IACnC,kBAAkB,CAAO,OAAO,CAAC,CAAA;IACjC,oBAAoB,CAAO,OAAO,EAAE,aAAa,CAAC,CAAA;IAClD,eAAe,CAAO,OAAO,CAAC,CAAA;IAC9B,cAAc,CAAO,OAAO,CAAC,CAAA;IAE7B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,GAA4E,EAAE,CACtG,MAAM,EAAO,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Bound here rather than in a relying-party package on purpose.
3
+ *
4
+ * The surrogate mechanic is not OIDC-specific — it is "run the login route one window up and hand
5
+ * the result back" — and every web application already spreads this list. Putting the screen here
6
+ * means `web-panel`, `mui-panel` and every generated target gain a working login window with no
7
+ * edit of their own, which is the only way an application that is already deployed can get it.
8
+ */
9
+ export declare const entrypoints: (import("@owlmeans/client-entrypoint").ClientProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{
10
+ query: import("@owlmeans/auth").AuthToken;
11
+ }, undefined>> | import("@owlmeans/client-entrypoint").ClientProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{
12
+ query: import("@owlmeans/auth-common").SurrogateQuery;
13
+ }, undefined>> | import("@owlmeans/client-entrypoint").ClientProtocolEntrypoint<import("@owlmeans/entrypoint").EntrypointProtocol<{
14
+ body: import("@owlmeans/auth").AuthToken;
15
+ }, import("@owlmeans/auth").AuthToken>>)[];
16
+ //# sourceMappingURL=entrypoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;0CAIvB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { authProtocols } from '@owlmeans/auth-common';
2
+ import { entrypoints as authBindings } from '@owlmeans/client-auth';
3
+ import { bindScreen } from '@owlmeans/client-entrypoint';
4
+ import { handler } from '@owlmeans/client';
5
+ import { Dispatcher } from './components/dispatcher/component.js';
6
+ import { SurrogateScreen } from './login/screen.js';
7
+ /**
8
+ * Bound here rather than in a relying-party package on purpose.
9
+ *
10
+ * The surrogate mechanic is not OIDC-specific — it is "run the login route one window up and hand
11
+ * the result back" — and every web application already spreads this list. Putting the screen here
12
+ * means `web-panel`, `mui-panel` and every generated target gain a working login window with no
13
+ * edit of their own, which is the only way an application that is already deployed can get it.
14
+ */
15
+ export const entrypoints = [
16
+ ...authBindings,
17
+ bindScreen(authProtocols.dispatcher, handler(Dispatcher)),
18
+ bindScreen(authProtocols.surrogate, handler(SurrogateScreen)),
19
+ ];
20
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,YAAY;IACf,UAAU,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9D,CAAA"}
@@ -2,8 +2,9 @@ export { handler } from '@owlmeans/client';
2
2
  export { config } from '@owlmeans/client-context';
3
3
  export { service } from '@owlmeans/config';
4
4
  export { AppType, HOME, ROOT, BASE, GUEST } from '@owlmeans/context';
5
- export { entrypoint, elevate, provideRequest, stab } from '@owlmeans/client-entrypoint';
5
+ export { bind, bindAll, bindScreen, provideRequest, stab } from '@owlmeans/client-entrypoint';
6
6
  export { route, frontend } from '@owlmeans/route';
7
+ export type { ClientEntrypoint } from '@owlmeans/client-entrypoint';
7
8
  export type { ClientEntrypoint as Module } from '@owlmeans/client-entrypoint';
8
9
  export type { ClientRoute as Route } from '@owlmeans/client-route';
9
10
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAC7E,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,YAAY,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAC7E,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,wBAAwB,CAAA"}
package/build/exports.js CHANGED
@@ -2,6 +2,6 @@ export { handler } from '@owlmeans/client';
2
2
  export { config } from '@owlmeans/client-context';
3
3
  export { service } from '@owlmeans/config';
4
4
  export { AppType, HOME, ROOT, BASE, GUEST } from '@owlmeans/context';
5
- export { entrypoint, elevate, provideRequest, stab } from '@owlmeans/client-entrypoint';
5
+ export { bind, bindAll, bindScreen, provideRequest, stab } from '@owlmeans/client-entrypoint';
6
6
  export { route, frontend } from '@owlmeans/route';
7
7
  //# sourceMappingURL=exports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AACvF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAC7F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA"}
@@ -2,5 +2,37 @@
2
2
  "dispatcher": {
3
3
  "loading": "Загрузка...",
4
4
  "error": "Не ўдалося прайсці аўтэнтыфікацыю: {{error}}"
5
+ },
6
+ "surrogate": {
7
+ "login": {
8
+ "working": "Выконваем уваход…",
9
+ "gesture": {
10
+ "title": "Працягніце, каб увайсці.",
11
+ "action": "Увайсці"
12
+ },
13
+ "handing": "Гатова. Вяртаемся ў праграму…",
14
+ "orphaned": "Уваход выкананы. Можаце закрыць гэтае акно і вярнуцца ў праграму.",
15
+ "failed": "Не ўдалося завяршыць. Закрыйце гэтае акно і паспрабуйце зноў.",
16
+ "standalone": {
17
+ "title": "Гэтая старонка выкарыстоўваецца для ўваходу з іншага акна.",
18
+ "action": "Адкрыць праграму"
19
+ },
20
+ "close": "Закрыць"
21
+ },
22
+ "logout": {
23
+ "working": "Выконваем выхад…",
24
+ "gesture": {
25
+ "title": "Працягніце, каб выйсці.",
26
+ "action": "Выйсці"
27
+ },
28
+ "handing": "Выхад выкананы. Вяртаемся ў праграму…",
29
+ "orphaned": "Выхад выкананы. Можаце закрыць гэтае акно.",
30
+ "failed": "Выхад тут не завершаны. Можаце закрыць гэтае акно.",
31
+ "standalone": {
32
+ "title": "Гэтая старонка выкарыстоўваецца для выхаду з іншага акна.",
33
+ "action": "Адкрыць праграму"
34
+ },
35
+ "close": "Закрыць"
36
+ }
5
37
  }
6
38
  }
@@ -2,5 +2,37 @@
2
2
  "dispatcher": {
3
3
  "loading": "Wird geladen...",
4
4
  "error": "Authentifizierung fehlgeschlagen: {{error}}"
5
+ },
6
+ "surrogate": {
7
+ "login": {
8
+ "working": "Anmeldung läuft…",
9
+ "gesture": {
10
+ "title": "Fortfahren, um sich anzumelden.",
11
+ "action": "Anmelden"
12
+ },
13
+ "handing": "Fertig. Zurück zur Anwendung…",
14
+ "orphaned": "Angemeldet. Sie können dieses Fenster schließen und in der Anwendung fortfahren.",
15
+ "failed": "Das wurde nicht abgeschlossen. Schließen Sie dieses Fenster und versuchen Sie es erneut.",
16
+ "standalone": {
17
+ "title": "Diese Seite dient der Anmeldung aus einem anderen Fenster.",
18
+ "action": "Anwendung öffnen"
19
+ },
20
+ "close": "Schließen"
21
+ },
22
+ "logout": {
23
+ "working": "Abmeldung läuft…",
24
+ "gesture": {
25
+ "title": "Fortfahren, um sich abzumelden.",
26
+ "action": "Abmelden"
27
+ },
28
+ "handing": "Abgemeldet. Zurück zur Anwendung…",
29
+ "orphaned": "Abgemeldet. Sie können dieses Fenster schließen.",
30
+ "failed": "Die Abmeldung wurde hier nicht abgeschlossen. Sie können dieses Fenster schließen.",
31
+ "standalone": {
32
+ "title": "Diese Seite dient der Abmeldung aus einem anderen Fenster.",
33
+ "action": "Anwendung öffnen"
34
+ },
35
+ "close": "Schließen"
36
+ }
5
37
  }
6
38
  }
@@ -2,5 +2,37 @@
2
2
  "dispatcher": {
3
3
  "loading": "Loading...",
4
4
  "error": "Authentication failed: {{error}}"
5
+ },
6
+ "surrogate": {
7
+ "login": {
8
+ "working": "Signing you in…",
9
+ "gesture": {
10
+ "title": "Continue to sign in.",
11
+ "action": "Sign in"
12
+ },
13
+ "handing": "Done. Returning to the application…",
14
+ "orphaned": "Signed in. You can close this window and continue in the application.",
15
+ "failed": "That did not complete. You can close this window and try again.",
16
+ "standalone": {
17
+ "title": "This page is used to sign in from another window.",
18
+ "action": "Open the application"
19
+ },
20
+ "close": "Close"
21
+ },
22
+ "logout": {
23
+ "working": "Signing you out…",
24
+ "gesture": {
25
+ "title": "Continue to sign out.",
26
+ "action": "Sign out"
27
+ },
28
+ "handing": "Signed out. Returning to the application…",
29
+ "orphaned": "Signed out. You can close this window.",
30
+ "failed": "Sign-out did not complete here. You can close this window.",
31
+ "standalone": {
32
+ "title": "This page is used to sign out from another window.",
33
+ "action": "Open the application"
34
+ },
35
+ "close": "Close"
36
+ }
5
37
  }
6
38
  }
@@ -2,5 +2,37 @@
2
2
  "dispatcher": {
3
3
  "loading": "Cargando...",
4
4
  "error": "Error de autenticación: {{error}}"
5
+ },
6
+ "surrogate": {
7
+ "login": {
8
+ "working": "Iniciando sesión…",
9
+ "gesture": {
10
+ "title": "Continúa para iniciar sesión.",
11
+ "action": "Iniciar sesión"
12
+ },
13
+ "handing": "Listo. Volviendo a la aplicación…",
14
+ "orphaned": "Sesión iniciada. Puedes cerrar esta ventana y continuar en la aplicación.",
15
+ "failed": "No se completó. Cierra esta ventana e inténtalo de nuevo.",
16
+ "standalone": {
17
+ "title": "Esta página se usa para iniciar sesión desde otra ventana.",
18
+ "action": "Abrir la aplicación"
19
+ },
20
+ "close": "Cerrar"
21
+ },
22
+ "logout": {
23
+ "working": "Cerrando sesión…",
24
+ "gesture": {
25
+ "title": "Continúa para cerrar sesión.",
26
+ "action": "Cerrar sesión"
27
+ },
28
+ "handing": "Sesión cerrada. Volviendo a la aplicación…",
29
+ "orphaned": "Sesión cerrada. Puedes cerrar esta ventana.",
30
+ "failed": "El cierre de sesión no se completó aquí. Puedes cerrar esta ventana.",
31
+ "standalone": {
32
+ "title": "Esta página se usa para cerrar sesión desde otra ventana.",
33
+ "action": "Abrir la aplicación"
34
+ },
35
+ "close": "Cerrar"
36
+ }
5
37
  }
6
38
  }
@@ -2,5 +2,37 @@
2
2
  "dispatcher": {
3
3
  "loading": "Ładowanie...",
4
4
  "error": "Uwierzytelnianie nie powiodło się: {{error}}"
5
+ },
6
+ "surrogate": {
7
+ "login": {
8
+ "working": "Trwa logowanie…",
9
+ "gesture": {
10
+ "title": "Kontynuuj, aby się zalogować.",
11
+ "action": "Zaloguj się"
12
+ },
13
+ "handing": "Gotowe. Wracamy do aplikacji…",
14
+ "orphaned": "Zalogowano. Możesz zamknąć to okno i kontynuować w aplikacji.",
15
+ "failed": "Nie udało się ukończyć. Zamknij to okno i spróbuj ponownie.",
16
+ "standalone": {
17
+ "title": "Ta strona służy do logowania z innego okna.",
18
+ "action": "Otwórz aplikację"
19
+ },
20
+ "close": "Zamknij"
21
+ },
22
+ "logout": {
23
+ "working": "Trwa wylogowywanie…",
24
+ "gesture": {
25
+ "title": "Kontynuuj, aby się wylogować.",
26
+ "action": "Wyloguj się"
27
+ },
28
+ "handing": "Wylogowano. Wracamy do aplikacji…",
29
+ "orphaned": "Wylogowano. Możesz zamknąć to okno.",
30
+ "failed": "Wylogowanie nie zostało tu ukończone. Możesz zamknąć to okno.",
31
+ "standalone": {
32
+ "title": "Ta strona służy do wylogowania z innego okna.",
33
+ "action": "Otwórz aplikację"
34
+ },
35
+ "close": "Zamknij"
36
+ }
5
37
  }
6
38
  }