@owlmeans/web-client 0.1.18-rc.2 → 0.1.18-rc.21

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 (107) hide show
  1. package/README.md +16 -13
  2. package/agent-meta/manifest.json +2 -2
  3. package/agent-meta/skills/web-client/SKILL.md +70 -11
  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/parametrise.d.ts.map +1 -1
  8. package/build/components/dispatcher/types.d.ts +2 -2
  9. package/build/components/dispatcher/types.d.ts.map +1 -1
  10. package/build/context.d.ts.map +1 -1
  11. package/build/context.js +2 -1
  12. package/build/context.js.map +1 -1
  13. package/build/entrypoints.d.ts +2 -0
  14. package/build/entrypoints.d.ts.map +1 -0
  15. package/build/entrypoints.js +18 -0
  16. package/build/entrypoints.js.map +1 -0
  17. package/build/errors.d.ts.map +1 -1
  18. package/build/errors.js.map +1 -1
  19. package/build/exports.d.ts +1 -0
  20. package/build/exports.d.ts.map +1 -1
  21. package/build/helper.d.ts.map +1 -1
  22. package/build/i18n/auth-be.json +32 -0
  23. package/build/i18n/auth-de.json +32 -0
  24. package/build/i18n/auth-en.json +32 -0
  25. package/build/i18n/auth-es.json +32 -0
  26. package/build/i18n/auth-pl.json +32 -0
  27. package/build/i18n/auth-ru.json +32 -0
  28. package/build/i18n/auth-uk.json +32 -0
  29. package/build/index.d.ts +2 -1
  30. package/build/index.d.ts.map +1 -1
  31. package/build/index.js +2 -1
  32. package/build/index.js.map +1 -1
  33. package/build/login/consts.d.ts +11 -0
  34. package/build/login/consts.d.ts.map +1 -0
  35. package/build/login/consts.js +11 -0
  36. package/build/login/consts.js.map +1 -0
  37. package/build/login/index.d.ts +8 -0
  38. package/build/login/index.d.ts.map +1 -0
  39. package/build/login/index.js +8 -0
  40. package/build/login/index.js.map +1 -0
  41. package/build/login/pump.d.ts +20 -0
  42. package/build/login/pump.d.ts.map +1 -0
  43. package/build/login/pump.js +46 -0
  44. package/build/login/pump.js.map +1 -0
  45. package/build/login/redirect.d.ts +9 -0
  46. package/build/login/redirect.d.ts.map +1 -0
  47. package/build/login/redirect.js +47 -0
  48. package/build/login/redirect.js.map +1 -0
  49. package/build/login/screen.d.ts +15 -0
  50. package/build/login/screen.d.ts.map +1 -0
  51. package/build/login/screen.js +97 -0
  52. package/build/login/screen.js.map +1 -0
  53. package/build/login/service.d.ts +10 -0
  54. package/build/login/service.d.ts.map +1 -0
  55. package/build/login/service.js +17 -0
  56. package/build/login/service.js.map +1 -0
  57. package/build/login/surrogate.d.ts +21 -0
  58. package/build/login/surrogate.d.ts.map +1 -0
  59. package/build/login/surrogate.js +144 -0
  60. package/build/login/surrogate.js.map +1 -0
  61. package/build/login/view.d.ts +26 -0
  62. package/build/login/view.d.ts.map +1 -0
  63. package/build/login/view.js +73 -0
  64. package/build/login/view.js.map +1 -0
  65. package/build/main.d.ts +9 -1
  66. package/build/main.d.ts.map +1 -1
  67. package/build/main.js +9 -1
  68. package/build/main.js.map +1 -1
  69. package/build/middleware.d.ts.map +1 -1
  70. package/build/middleware.js +7 -6
  71. package/build/middleware.js.map +1 -1
  72. package/build/service.d.ts.map +1 -1
  73. package/build/service.js +1 -1
  74. package/build/service.js.map +1 -1
  75. package/build/types.d.ts +2 -1
  76. package/build/types.d.ts.map +1 -1
  77. package/package.json +17 -17
  78. package/src/components/dispatcher/component.tsx +72 -8
  79. package/src/components/dispatcher/types.ts +2 -2
  80. package/src/context.ts +2 -2
  81. package/src/entrypoints.ts +20 -0
  82. package/src/exports.ts +1 -0
  83. package/src/i18n/auth-be.json +32 -0
  84. package/src/i18n/auth-de.json +32 -0
  85. package/src/i18n/auth-en.json +32 -0
  86. package/src/i18n/auth-es.json +32 -0
  87. package/src/i18n/auth-pl.json +32 -0
  88. package/src/i18n/auth-ru.json +32 -0
  89. package/src/i18n/auth-uk.json +32 -0
  90. package/src/index.ts +2 -1
  91. package/src/login/consts.ts +12 -0
  92. package/src/login/index.ts +7 -0
  93. package/src/login/pump.ts +53 -0
  94. package/src/login/redirect.ts +59 -0
  95. package/src/login/screen.tsx +119 -0
  96. package/src/login/service.ts +19 -0
  97. package/src/login/surrogate.ts +175 -0
  98. package/src/login/view.tsx +94 -0
  99. package/src/main.tsx +11 -2
  100. package/src/middleware.ts +7 -6
  101. package/src/service.ts +1 -1
  102. package/src/types.ts +2 -1
  103. package/build/modules.d.ts +0 -2
  104. package/build/modules.d.ts.map +0 -1
  105. package/build/modules.js +0 -8
  106. package/build/modules.js.map +0 -1
  107. package/src/modules.ts +0 -9
package/README.md CHANGED
@@ -1,14 +1,16 @@
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: `entrypoint`, `route`, `frontend`, `handler`, `elevate`
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
+ - `ClientEntrypoint<T>` (also exported as `Module<T>`) — the typed entrypoint interface behind
13
+ `call()` / `invoke()` / `url()`
12
14
 
13
15
  ## Installation
14
16
 
@@ -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 { BASE, HOME, elevate, entrypoint, frontend, handler, route } from '@owlmeans/web-client'
36
38
 
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)
39
+ appEntrypoints.push(entrypoint(route(BASE, '/', frontend()), handler(PublicLayout)))
40
+ appEntrypoints.push(entrypoint(route(HOME, '/', frontend({ default: true, parent: BASE })), handler(HomeScreen)))
41
+ elevate(appEntrypoints, manager.back.account.base)
40
42
  ```
41
43
 
42
- Call an API module from a component:
44
+ A screen entrypoint carries a renderer, so it is addressed by `url()` and never called over the
45
+ wire. Call an API entrypoint from a component:
43
46
 
44
47
  ```typescript
45
- import type { Module } from '@owlmeans/web-client'
48
+ import type { ClientEntrypoint } from '@owlmeans/web-client'
46
49
 
47
- const [result] = await context.module<Module<MyType>>(moduleAlias)
50
+ const result = await context.entrypoint<ClientEntrypoint<MyType>>(alias)
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) — the `ClientEntrypoint<T>` implementation
79
82
 
80
83
  <!-- owlmeans:agent-guidance:start -->
81
84
  ## Agent guidance
@@ -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.21",
5
+ "generatedAt": "2026-09-01T16:28:56.990Z",
6
6
  "canonicalRepo": "https://github.com/owlmeans/common",
7
7
  "entries": [
8
8
  {
@@ -8,19 +8,22 @@ user-invocable: false
8
8
  # @owlmeans/web-client
9
9
 
10
10
  **Layer:** Web (React)
11
- **Install:** `"@owlmeans/web-client": "^0.1.18-rc.0"` in `dependencies`
11
+ **Install:** `"@owlmeans/web-client": "^0.1.18-rc.21"` in `dependencies`
12
12
 
13
13
  ## Key Exports
14
14
 
15
15
  | Export | Description |
16
16
  |--------|-------------|
17
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 |
18
+ | `elevate(entrypoints, alias, handler?)` | Attach a React component (`handler(Component)`) to an entrypoint, or opt a backend alias into client-side calling |
19
+ | `entrypoint(route, handler?)` | Build a client entrypoint from a route declaration |
19
20
  | `handler(Component)` | Wrap a React component as an entrypoint handler |
20
- | `context.registerEntrypoints(modules)` | Register the full entrypoint list on the context |
21
+ | `context.registerEntrypoints(entrypoints)` | Register the full entrypoint list on the context |
21
22
  | `context.serviceRoute(alias, isDefault?)` | Mark a service's routing root |
23
+ | `makeContext(cfg)` | Build the browser context — auth, web db, client resource, router and login are all appended here |
24
+ | `appendWebLogin(context)` | Register the login host plus the redirect and surrogate-window plugins |
22
25
  | `router`, `components`, `service`, `i18n`, `helpers`, `errors` | Web-specific helpers |
23
- | Constants | Default aliases (BASE, HOME) |
26
+ | Constants | Default aliases (BASE, HOME), `REDIRECT_LOGIN`, `SURROGATE_LOGIN` |
24
27
 
25
28
  ## Usage
26
29
 
@@ -29,31 +32,87 @@ user-invocable: false
29
32
  // index.tsx
30
33
  import { renderApp } from '@owlmeans/web-client'
31
34
  import { makeContext } from './context.js'
32
- import { appModules } from './modules.js'
35
+ import { appEntrypoints } from './entrypoints.js'
33
36
  import { MANAGER, MANAGER_API } from 'my-common'
34
37
  import config from './config.js'
35
38
 
36
39
  const context = makeContext(config)
37
- context.registerEntrypoints(appModules)
40
+ context.registerEntrypoints(appEntrypoints)
38
41
  context.serviceRoute(MANAGER, true)
39
42
  context.serviceRoute(MANAGER_API, true)
40
43
  renderApp<Config, Context>(context)
41
44
  ```
42
45
 
43
- ### Module elevation with React components
46
+ ### Entrypoint elevation with React components
44
47
  ```typescript
45
- import { elevate, route, frontend, handler, entrypoint, guard } from '@owlmeans/web-client'
48
+ import { elevate, route, frontend, handler, entrypoint } from '@owlmeans/web-client'
46
49
  import { HomeScreen, ProjectDashboardScreen } from './screens/index.js'
47
50
 
48
- elevate(modules, manager.front.project.dashboard, handler(ProjectDashboardScreen))
51
+ elevate(entrypoints, manager.front.project.dashboard, handler(ProjectDashboardScreen))
49
52
 
50
- modules.push(
53
+ entrypoints.push(
51
54
  entrypoint(route(HOME, '/', frontend({ default: true, parent: BASE })), handler(HomeScreen))
52
55
  )
53
56
  ```
54
57
 
58
+ `elevate` is idempotent — it replaces the declaration in the list, so re-elevating an alias (a
59
+ screen swapped for a variant build, a guard added to an already-elevated one) is allowed, and
60
+ guards named at elevation are unioned with the declared ones rather than replacing them. A backend
61
+ alias takes no handler at all: giving one is a wiring error and throws.
62
+
63
+ A **backend** alias the client calls needs a bare `elevate(entrypoints, alias)` — no handler. That
64
+ opts the alias into client-side callability, so:
65
+
66
+ ```typescript
67
+ const project = await context.entrypoint<ClientEntrypoint<Project>>(alias)
68
+ .call({ params, body, query }) // the value; the reply's error is thrown
69
+ const { value, outcome } = await context.entrypoint<ClientEntrypoint<Project>>(alias)
70
+ .invoke({ params }) // when the outcome decides what happens next
71
+ const href = await context.entrypoint<ClientEntrypoint<Project>>(alias)
72
+ .url({ params }, { absolute: true }) // the address, not the round trip
73
+ ```
74
+
75
+ The auth header is attached automatically for guarded entrypoints. An entrypoint that renders a
76
+ screen answers `url()` and throws from `call()`/`invoke()` — a screen is navigated to, not called.
77
+
78
+ ### Login comes with the context
79
+
80
+ `makeContext` calls `appendWebLogin`, which registers the login host (`@owlmeans/client-auth/login`)
81
+ and both browser plugins on it — redirect (`REDIRECT_LOGIN`, priority 0, applies always) and
82
+ surrogate window (`SURROGATE_LOGIN`, priority 100, applies in a frame or in the surrogate itself).
83
+ So every web app — and everything built on `web-panel` or `mui-panel` — has working sign-in,
84
+ including from an embedded app, with nothing registered by hand:
85
+
86
+ ```typescript
87
+ import { useLogin, useLogout } from '@owlmeans/client-auth/login'
88
+
89
+ const [, onLogIn] = useLogin() // one control, one handler, no environment checks
90
+ ```
91
+
92
+ An app that needs a different mechanic registers its own plugin at a higher priority after building
93
+ the base context (`context.login().registerPlugin(...)`); it never replaces these. The contract, the
94
+ cascade and the invariants are the `login-plugins` skill.
95
+
96
+ ### Navigation
97
+ ```typescript
98
+ import { useNavigate } from '@owlmeans/client' // not re-exported by web-client
99
+ import { useStoreList, useStoreModel } from '@owlmeans/client' // client state — also not re-exported
100
+
101
+ const nav = useNavigate()
102
+ <Button onClick={nav.press(manager.front.project.dashboard, { params: { projectId } })}>Open</Button>
103
+ await nav.go(alias, { params }) // programmatic; nav.back() to go back
104
+ ```
105
+
106
+ The navigator resolves its target through the entrypoint's own `url(request)`, so a screen names an
107
+ alias and never assembles a path. Render a plain `<a href>` the same way — `await
108
+ context.entrypoint(alias).url({ params })`, or the `Link` component from `@owlmeans/web-panel`,
109
+ which does it for you.
110
+
55
111
  ## Depends On
56
112
 
57
113
  - `@owlmeans/client`, `@owlmeans/web-router` (default OwlMeans browser routing), `@owlmeans/web-panel` (typically), `@owlmeans/client-i18n`
114
+ - `@owlmeans/client-auth` — `AUTH_RESOURCE` and the `./login` host the browser plugins register on
58
115
  - `@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`.
116
+ - `react`, `react-dom` (peer). It does not depend on `react-router` — opt into it with
117
+ `@owlmeans/web-router-react-router` (`appendReactRouter`). Routing needs no explicit provider:
118
+ `PanelApp`/`App` compile through `context.router()`, so nothing passes a `provide` prop.
@@ -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":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EACL,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,GAC3E,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,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;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAEhC,8FAA8F;IAC9F,iGAAiG;IACjG,+FAA+F;IAC/F,sEAAsE;IACtE,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IACnD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsB,IAAI,CAAC,CAAA;IACjE,6FAA6F;IAC7F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,4FAA4F;QAC5F,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;QAEvB,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;YAE/B,OAAM;QACR,CAAC;QAED,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,EAAC,UAAU,EAAC,EAAE;YAC1D,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;gBAC5C,SAAS,CAAC,IAAI,CAAC,CAAA;gBAEf,OAAM;YACR,CAAC;YACD,0FAA0F;YAC1F,2FAA2F;YAC3F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACxD,QAAQ,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,KAAK,YAAY,CAAC,IAAI;oBACpB,OAAM;gBACR,KAAK,YAAY,CAAC,MAAM;oBACtB,UAAU,CAAC,OAAO,CAAC,CAAA;oBAEnB,OAAM;gBACR;oBACE,MAAM,QAAQ,EAAE,CAAA;YACpB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,4FAA4F;IAC5F,8CAA8C;IAC9C,EAAE;IACF,4FAA4F;IAC5F,8FAA8F;IAC9F,0FAA0F;IAC1F,8FAA8F;IAC9F,iGAAiG;IACjG,0FAA0F;IAC1F,wDAAwD;IACxD,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,KAAC,kBAAkB,IACxB,MAAM,EAAE,WAAW,CAAC,KAAK,EACzB,KAAK,EACH,OAAO,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ;gBACzD,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM;oBACvD,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO;wBACzD,CAAC,CAAC,cAAc,CAAC,OAAO,EAEhC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAC9B,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,GAC9D,CAAA;IACJ,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,mBAAmB,CAAA;QAE9D,OAAO,KAAC,MAAM,IAAC,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,GAAI,CAAA;IACnF,CAAC;IAED,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 +1 @@
1
- {"version":3,"file":"parametrise.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/parametrise.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,qBAAqB,QAAS,OAAO,CAAC,iBAAiB,CAAC,QAAQ,eAAe,CAAC,eAAe,CAAC,aAE5F,iBAAiB,gCAiBjC,CAAA"}
1
+ {"version":3,"file":"parametrise.d.ts","sourceRoot":"","sources":["../../../src/components/dispatcher/parametrise.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,qBAAqB,GAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,eAAe,CAAC,eAAe,CAAC,MAEnG,OAAO,iBAAiB,gCAiBjC,CAAA"}
@@ -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,EAClG,KAAK,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,2 @@
1
+ export declare const entrypoints: import("@owlmeans/client-entrypoint").ClientEntrypoint<{}, import("@owlmeans/client-entrypoint").ClientRequest<{}>>[];
2
+ //# sourceMappingURL=entrypoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,uHAAO,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { DISPATCHER, DISPATCHER_SURROGATE } from '@owlmeans/auth';
2
+ import { entrypoints as list } from '@owlmeans/client-auth';
3
+ import { elevate } 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
+ elevate(list, DISPATCHER, handler(Dispatcher));
8
+ /**
9
+ * Elevated here rather than in a relying-party package on purpose.
10
+ *
11
+ * The surrogate mechanic is not OIDC-specific — it is "run the login route one window up and hand
12
+ * the result back" — and every web application already spreads this list. Putting the screen here
13
+ * means `web-panel`, `mui-panel` and every generated target gain a working login window with no
14
+ * edit of their own, which is the only way an application that is already deployed can get it.
15
+ */
16
+ elevate(list, DISPATCHER_SURROGATE, handler(SurrogateScreen));
17
+ export const entrypoints = list;
18
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../src/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAE9C;;;;;;;GAOG;AACH,OAAO,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAuB,QAAQ,EAAE,MAAM,CAAuC;IAE9E,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,QAAQ,EAAE,MAAM,CAA2C;IAE3E,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;IAElC,YAAY,OAAO,GAAE,MAAgB,EAGpC;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAuB,QAAQ,EAAE,MAAM,CAAuC;gBAElE,OAAO,GAAE,MAAgB;CAItC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,QAAQ,EAAE,MAAM,CAA2C;IAE3E,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;gBAEtB,OAAO,GAAE,MAAgB;CAItC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,MAAM,OAAO,aAAc,SAAQ,cAAc;IACxC,MAAM,CAAU,QAAQ,GAAW,GAAG,cAAc,CAAC,QAAQ,UAAU,CAAA;IAE9E,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAA;IACpC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAC5C,MAAM,CAAU,QAAQ,GAAW,GAAG,aAAa,CAAC,QAAQ,eAAe,CAAA;IAE3E,QAAQ,CAAmB;IAElC,YAAY,OAAO,GAAW,OAAO;QACnC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAA;IACzC,CAAC;CACF;AAED,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;AAChD,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,MAAM,OAAO,aAAc,SAAQ,cAAc;IACxC,MAAM,CAAU,QAAQ,GAAW,GAAG,cAAc,CAAC,QAAQ,UAAU,CAAA;IAE9E,YAAY,UAAkB,OAAO;QACnC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAA;IACpC,CAAC;;AAGH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAC5C,MAAM,CAAU,QAAQ,GAAW,GAAG,aAAa,CAAC,QAAQ,eAAe,CAAA;IAE3E,QAAQ,CAAmB;IAElC,YAAY,UAAkB,OAAO;QACnC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAA;IACzC,CAAC;;AAGH,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;AAChD,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA"}
@@ -4,6 +4,7 @@ export { service } from '@owlmeans/config';
4
4
  export { AppType, HOME, ROOT, BASE, GUEST } from '@owlmeans/context';
5
5
  export { entrypoint, elevate, 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,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,EAAE,MAAM,6BAA6B,CAAA;AACnE,YAAY,EAAE,gBAAgB,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAC7E,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,SAKtH,CAAA"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,SAKtH,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
  }