@owlmeans/client-auth 0.1.18-rc.59 → 0.1.18-rc.60
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/client-auth/SKILL.md +8 -2
- package/build/login/terms/types.d.ts +4 -0
- package/build/login/terms/types.d.ts.map +1 -1
- package/build/login/terms-config.d.ts +6 -0
- package/build/login/terms-config.d.ts.map +1 -1
- package/build/login/terms.d.ts.map +1 -1
- package/build/login/terms.js +21 -7
- package/build/login/terms.js.map +1 -1
- package/build/login/types.d.ts +1 -1
- package/package.json +16 -16
- package/src/login/terms/types.ts +4 -0
- package/src/login/terms-config.ts +6 -0
- package/src/login/terms.ts +25 -7
- package/src/login/types.ts +1 -1
- package/src/manager/README.md +1 -1
- package/tests/terms.spec.ts +59 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ legacy). The server-side counterpart is `@owlmeans/server-auth`.
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/client-auth@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/client-auth@^0.1.18-rc.60
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Concepts
|
|
@@ -322,7 +322,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
322
322
|
your project's skill store (`.agents/skills/`):
|
|
323
323
|
|
|
324
324
|
```sh
|
|
325
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
325
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.52
|
|
326
326
|
```
|
|
327
327
|
|
|
328
328
|
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/client-auth",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.60",
|
|
5
|
+
"generatedAt": "2026-10-08T21:27:54.282Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/client-auth
|
|
9
9
|
|
|
10
10
|
**Layer:** Client
|
|
11
|
-
**Install:** `"@owlmeans/client-auth": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/client-auth": "^0.1.18-rc.60"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
Five subpaths, five jobs:
|
|
14
14
|
|
|
@@ -90,7 +90,7 @@ browsing context the round trip can complete at all.
|
|
|
90
90
|
| `loginLandingOf(ctx)` → `.landAfterLogin(opts?)`, `.continueLogin(opts?)`, `.landingUrl(landing)`; `useContinueLogin()` | The post-login landing decision (`src/login/land.ts`) — see `login-plugins`. `landAfterLogin` runs due landing hooks then delegates to `continueLogin`, which walks pending `LoginStep`s, then `flowLandingOf(ctx).resumeSuspendedFlow`, then `LandOptions.fallback ?? { alias: HOME }`; `landingUrl` builds the absolute URL a plugin's own `window.location.href` needs; `useContinueLogin()` is what a step's own screen calls once satisfied |
|
|
91
91
|
| `LoginStep`, `LoginLanding`, `LoginLandingHook`, `LandOptions`, `LoginLandingParams` | Landing-seam types. `registerStep`/`steps`/`onLanded`/`landingHooks` on `LoginService` are the same replace-by-alias, priority-sorted registries as `registerPlugin`. `LoginStep` also carries `confirmsTerms?: boolean` (this step is where the Terms confirmation lives — see `loginTermsHelper.termsDeferred` below) and `required?: boolean` (a throw/timeout in `pending` reads as PENDING, not "not pending" — see `login-plugins`) |
|
|
92
92
|
| `LOGIN_STEP_TIMEOUT`, `LOGIN_LANDED_STORAGE` | A step's `pending`/a hook's `landed` is bounded by the former; the latter is where the last-landed token is recorded (the raw string, never a digest) |
|
|
93
|
-
| `loginTermsHelper` → `.resolveTerms`, `.termsAccepted`, `.acceptTerms`, `.termsSentence`, `ResolvedTerms`, `ResolvedTermsDocument`, `TermsSentencePart` | The confirmation. `resolveTerms` produces `documents` (what the checkbox agrees to: terms, then billing/product/custom when configured) and `notices` (what is only disclosed: privacy, plus cookies per its own inclusion rule) — see the terms-confirmation section of `login-methods`. The extra `LoginTermsConfig` fields (`billing`, `product`, `documents`, `revisions`, `showRevision`) are added by module augmentation in `src/login/terms-config.ts`, never by editing `@owlmeans/config` — importing anything from `@owlmeans/client-auth/login` pulls it in |
|
|
93
|
+
| `loginTermsHelper` → `.resolveTerms`, `.termsAccepted`, `.acceptTerms`, `.termsSentence`, `ResolvedTerms`, `ResolvedTermsDocument`, `TermsSentencePart` | The confirmation. `resolveTerms` produces `documents` (what the checkbox agrees to: terms, then billing/product/custom when configured) and `notices` (what is only disclosed: privacy, plus cookies per its own inclusion rule) — see the terms-confirmation section of `login-methods`. The extra `LoginTermsConfig` fields (`billing`, `product`, `documents`, `revisions`, `showRevision`, `localizedHrefs`) are added by module augmentation in `src/login/terms-config.ts`, never by editing `@owlmeans/config` — importing anything from `@owlmeans/client-auth/login` pulls it in |
|
|
94
94
|
| `loginTermsHelper.termsLabelResolver(translate, locale)`, `loginTermsHelper.termsAcceptanceOf(resolved, locale?)`, `TermsAcceptanceRef` | The ONE document-label resolver and ONE wire-shape builder every terms renderer/recorder shares (`FallbackLoginScreen`, `web-panel`'s `LoginTerms`, `web-marketing-consent`'s Terms box and `termsRecorder`) — no more hand-kept duplicate `DEFAULT_LABEL`/`resolveLabelFor` per package. `termsAcceptanceOf` keeps only `{key, href, revisedAt}` per document — structurally `@owlmeans/marketing-consent`'s `TermsAcceptance`, with no dependency on that package |
|
|
95
95
|
| `loginTermsHelper.termsDeferred(ctx)` | True once a registered AND BOUND `LoginStep` declares `confirmsTerms` — see the "Deferring the confirmation" section of `login-methods`. Reads `ctx.hasService`/`.hasEntrypoint` directly, never `ensureLoginService` (which has the side effect of registering an empty host) |
|
|
96
96
|
| `resolveCredit`, `ResolvedCredit` | The credit and copyright line |
|
|
@@ -159,6 +159,12 @@ a web application only calls these when it builds its context by hand.
|
|
|
159
159
|
|
|
160
160
|
## Rules
|
|
161
161
|
|
|
162
|
+
- An application's translated legal destinations are opt-in `login.terms.localizedHrefs`, keyed by
|
|
163
|
+
document/notice key, then locale. `loginTermsHelper.termsHrefOf(doc, locale?)` selects the exact
|
|
164
|
+
configured locale, then its base language, then `doc.href`. `termsSentence` and `termsAcceptanceOf`
|
|
165
|
+
share that resolver: pass the same live UI language to both. The canonical href and revisions still
|
|
166
|
+
determine the agreement digest; translations alone never ask for a new acceptance. Supply known
|
|
167
|
+
published destinations, never infer another application's URL layout. Omitted maps preserve defaults.
|
|
162
168
|
- The bearer token lives in the `AUTH_RESOURCE` resource under the single id `USER_ID`. Read and
|
|
163
169
|
write it through the auth service or through `loginTokenOf(ctx).adoptToken` / `.revokeToken`;
|
|
164
170
|
hand-written storage access drifts from the envelope decoding that happens beside it.
|
|
@@ -4,6 +4,8 @@ import type { LoginContext } from '../types.js';
|
|
|
4
4
|
export interface ResolvedTermsDocument {
|
|
5
5
|
key: string;
|
|
6
6
|
href: string;
|
|
7
|
+
/** Published translations, selected at render/record time; `href` remains canonical. */
|
|
8
|
+
hrefMap?: Record<string, string>;
|
|
7
9
|
/** A caller's own label, already resolved to one string — only ever set for a custom document. */
|
|
8
10
|
label?: string;
|
|
9
11
|
/** A locale map for the label, when the config supplied one — resolved by the renderer, not here. */
|
|
@@ -74,6 +76,8 @@ export interface LoginTermsHelper {
|
|
|
74
76
|
* exactly one place instead of two hand-kept copies.
|
|
75
77
|
*/
|
|
76
78
|
termsLabelResolver: (translate: (key: string, defaultValue: string) => string, locale: string | undefined) => (doc: ResolvedTermsDocument) => string;
|
|
79
|
+
/** Explicit locale destination, then base language, then canonical href; never rewrites paths. */
|
|
80
|
+
termsHrefOf: (doc: ResolvedTermsDocument, locale?: string) => string;
|
|
77
81
|
/**
|
|
78
82
|
* What a sign-in-time terms acceptance sends the server — structurally
|
|
79
83
|
* `@owlmeans/marketing-consent`'s `TermsAcceptance`, so `client.recordTerms(termsAcceptanceOf(...))`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/login/terms/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/login/terms/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,12 @@ declare module '@owlmeans/config' {
|
|
|
27
27
|
interface LoginTermsConfig {
|
|
28
28
|
/** `documents[].key` (or a custom document's own key) → the ISO date it was last revised. */
|
|
29
29
|
revisions?: Record<string, string>;
|
|
30
|
+
/**
|
|
31
|
+
* Document/notice key → locale → published href. Opt-in; omitted locales use the canonical
|
|
32
|
+
* href. Renderers and acceptance evidence resolve the same current locale, while these
|
|
33
|
+
* translated destinations leave the canonical agreement version and revisions unchanged.
|
|
34
|
+
*/
|
|
35
|
+
localizedHrefs?: Record<string, Record<string, string>>;
|
|
30
36
|
/** Off by default. A bare string is `{ href }`. */
|
|
31
37
|
billing?: string | {
|
|
32
38
|
href: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terms-config.d.ts","sourceRoot":"","sources":["../../src/login/terms-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,gBAAgB;QACxB,6FAA6F;QAC7F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,mDAAmD;QACnD,OAAO,CAAC,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,CAAA;QAC/D,yFAAyF;QACzF,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,CAAA;QACpE;;;;;WAKG;QACH,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YACrF,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC,CAAA;QACF,6EAA6E;QAC7E,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB;CACF;AAED,OAAO,EAAG,CAAA"}
|
|
1
|
+
{"version":3,"file":"terms-config.d.ts","sourceRoot":"","sources":["../../src/login/terms-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,gBAAgB;QACxB,6FAA6F;QAC7F,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC;;;;WAIG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QACvD,mDAAmD;QACnD,OAAO,CAAC,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,CAAA;QAC/D,yFAAyF;QACzF,OAAO,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,CAAA;QACpE;;;;;WAKG;QACH,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YACrF,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC,CAAA;QACF,6EAA6E;QAC7E,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB;CACF;AAED,OAAO,EAAG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../src/login/terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EACV,oBAAoB,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAChG,MAAM,kBAAkB,CAAA;AACzB,OAAO,mBAAmB,CAAA;AAG1B,eAAO,MAAM,sBAAsB,QAAO,
|
|
1
|
+
{"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../src/login/terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EACV,oBAAoB,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAChG,MAAM,kBAAkB,CAAA;AACzB,OAAO,mBAAmB,CAAA;AAG1B,eAAO,MAAM,sBAAsB,QAAO,gBAgRzC,CAAA;AAED,eAAO,MAAM,gBAAgB,kBAA2B,CAAA;AAExD,mFAAmF;AACnF,eAAO,MAAM,YAAY,SAAU,gBAAgB,GAAG,KAAK,KAAG,aAAa,GAAG,IAA0C,CAAA;AAExH,oFAAoF;AACpF,eAAO,MAAM,aAAa,aAAc,aAAa,GAAG,IAAI,KAAG,OAAmD,CAAA;AAElH,kFAAkF;AAClF,eAAO,MAAM,WAAW,aAAc,aAAa,GAAG,IAAI,YAAY,OAAO,KAAG,IAC9B,CAAA;AAElD,yFAAyF;AACzF,eAAO,MAAM,kBAAkB,cAClB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,UAAU,MAAM,GAAG,SAAS,KACnF,CAAC,CAAC,GAAG,EAAE,qBAAqB,KAAK,MAAM,CAA2D,CAAA;AAErG,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,aAClB,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC,WAAW,MAAM,KAClF,oBAA4E,CAAA;AAE/E,oFAAoF;AACpF,eAAO,MAAM,aAAa,QAAS,YAAY,KAAG,OAA8C,CAAA;AAEhG,oFAAoF;AACpF,eAAO,MAAM,aAAa,aACd,MAAM,YACN,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC,UAC9C,MAAM,GAAG,SAAS,gBACZ,CAAC,GAAG,EAAE,qBAAqB,KAAK,MAAM,KACnD,iBAAiB,EAA8E,CAAA"}
|
package/build/login/terms.js
CHANGED
|
@@ -86,10 +86,24 @@ export const createLoginTermsHelper = () => {
|
|
|
86
86
|
required: cfg?.required ?? true,
|
|
87
87
|
terms, privacy, cookies,
|
|
88
88
|
version: cfg?.version ?? digest(digestInput),
|
|
89
|
-
|
|
89
|
+
// Translations are alternate destinations for this canonical revision, not a new agreement.
|
|
90
|
+
documents: documents.map(doc => withLocalizedHrefs(doc, cfg)),
|
|
91
|
+
notices: notices.map(doc => withLocalizedHrefs(doc, cfg)),
|
|
92
|
+
showRevision,
|
|
90
93
|
...(revisedAt != null ? { revisedAt } : {}),
|
|
91
94
|
};
|
|
92
95
|
};
|
|
96
|
+
const withLocalizedHrefs = (doc, cfg) => {
|
|
97
|
+
const hrefMap = cfg?.localizedHrefs?.[doc.key];
|
|
98
|
+
return hrefMap != null ? { ...doc, hrefMap } : doc;
|
|
99
|
+
};
|
|
100
|
+
const termsHrefOf = (doc, locale) => {
|
|
101
|
+
const localized = locale != null
|
|
102
|
+
? doc.hrefMap?.[locale] ?? doc.hrefMap?.[locale.toLowerCase()]
|
|
103
|
+
?? doc.hrefMap?.[locale.split('-')[0].toLowerCase()]
|
|
104
|
+
: undefined;
|
|
105
|
+
return typeof localized === 'string' && localized.trim() !== '' ? localized : doc.href;
|
|
106
|
+
};
|
|
93
107
|
const termsAccepted = (resolved) => {
|
|
94
108
|
if (resolved == null || !resolved.required) {
|
|
95
109
|
return true;
|
|
@@ -131,8 +145,8 @@ export const createLoginTermsHelper = () => {
|
|
|
131
145
|
return label;
|
|
132
146
|
};
|
|
133
147
|
const termsAcceptanceOf = (resolved, locale) => ({
|
|
134
|
-
documents: resolved.documents.map(doc => ({ key: doc.key, href: doc
|
|
135
|
-
notices: resolved.notices.map(doc => ({ key: doc.key, href: doc
|
|
148
|
+
documents: resolved.documents.map(doc => ({ key: doc.key, href: termsHrefOf(doc, locale), revisedAt: doc.revisedAt })),
|
|
149
|
+
notices: resolved.notices.map(doc => ({ key: doc.key, href: termsHrefOf(doc, locale), revisedAt: doc.revisedAt })),
|
|
136
150
|
version: resolved.version,
|
|
137
151
|
...(locale != null ? { locale } : {}),
|
|
138
152
|
});
|
|
@@ -155,7 +169,7 @@ export const createLoginTermsHelper = () => {
|
|
|
155
169
|
return formatter.formatToParts(labels).map(part => {
|
|
156
170
|
if (part.type === 'element') {
|
|
157
171
|
const doc = docs[cursor++];
|
|
158
|
-
return { text: part.value, href: doc
|
|
172
|
+
return { text: part.value, href: termsHrefOf(doc, locale), documentKey: doc.key };
|
|
159
173
|
}
|
|
160
174
|
return { text: part.value };
|
|
161
175
|
});
|
|
@@ -165,7 +179,7 @@ export const createLoginTermsHelper = () => {
|
|
|
165
179
|
if (index > 0) {
|
|
166
180
|
parts.push({ text: index === docs.length - 1 ? ' and ' : ', ' });
|
|
167
181
|
}
|
|
168
|
-
parts.push({ text: labels[index], href: doc
|
|
182
|
+
parts.push({ text: labels[index], href: termsHrefOf(doc, locale), documentKey: doc.key });
|
|
169
183
|
});
|
|
170
184
|
return parts;
|
|
171
185
|
};
|
|
@@ -189,7 +203,7 @@ export const createLoginTermsHelper = () => {
|
|
|
189
203
|
else {
|
|
190
204
|
const doc = byKey(token);
|
|
191
205
|
if (doc != null) {
|
|
192
|
-
parts.push({ text: resolveLabel(doc), href: doc
|
|
206
|
+
parts.push({ text: resolveLabel(doc), href: termsHrefOf(doc, locale), documentKey: doc.key });
|
|
193
207
|
}
|
|
194
208
|
}
|
|
195
209
|
lastIndex = placeholder.lastIndex;
|
|
@@ -200,7 +214,7 @@ export const createLoginTermsHelper = () => {
|
|
|
200
214
|
return parts;
|
|
201
215
|
};
|
|
202
216
|
return {
|
|
203
|
-
resolveTerms, termsAccepted, acceptTerms, termsLabelResolver, termsAcceptanceOf, termsDeferred, termsSentence,
|
|
217
|
+
resolveTerms, termsAccepted, acceptTerms, termsLabelResolver, termsHrefOf, termsAcceptanceOf, termsDeferred, termsSentence,
|
|
204
218
|
};
|
|
205
219
|
};
|
|
206
220
|
export const loginTermsHelper = createLoginTermsHelper();
|
package/build/login/terms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terms.js","sourceRoot":"","sources":["../../src/login/terms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terms.js","sourceRoot":"","sources":["../../src/login/terms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,kBAAkB,EAAyB,MAAM,kBAAkB,CAAA;AACxH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAKhE,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAqB,EAAE;IAC3D;;;;;;;;;;OAUG;IACH,MAAM,MAAM,GAAG,CAAC,KAAe,EAAU,EAAE;QACzC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CACpB,GAA6C,EAAE,SAA6B,EACrD,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAE3E,MAAM,YAAY,GAAG,CAAC,GAA8B,EAAwB,EAAE;QAC5E,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAClB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,kBAAkB,CAAA;QAC9C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,oBAAoB,CAAA;QACpD,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,oBAAoB,CAAA;QAEpD,MAAM,SAAS,GAA4B;YACzC,aAAa,CACX,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CACnF;SACF,CAAA;QAED,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAA;YACrF,SAAS,CAAC,IAAI,CAAC,aAAa,CAC1B,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,EACtE,GAAG,EAAE,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAC7C,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,aAAa,CAC1B;gBACE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,qBAAqB;gBACtE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;aACtC,EACD,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,CACjD,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;YAC1C,SAAS,CAAC,IAAI,CAAC,aAAa,CAC1B;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;gBAClC,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/F,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,EACD,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC,CAAA;QACJ,CAAC;QAED,gGAAgG;QAChG,iGAAiG;QACjG,gEAAgE;QAChE,MAAM,UAAU,GAAG,KAAK,KAAK,kBAAkB,IAAI,OAAO,KAAK,oBAAoB;eAC9E,OAAO,KAAK,oBAAoB,CAAA;QACrC,MAAM,cAAc,GAAG,GAAG,EAAE,OAAO,IAAI,IAAI,IAAI,UAAU,CAAA;QAEzD,MAAM,OAAO,GAA4B;YACvC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC;YACzG,GAAG,CAAC,cAAc;gBAChB,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7G,CAAC,CAAC,EAAE,CAAC;SACR,CAAA;QAED,iGAAiG;QACjG,sEAAsE;QACtE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC7C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC1B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,EAAE,YAAY,KAAK,IAAI,CAAA;QAC/C,MAAM,eAAe,GAAG,SAAS;aAC9B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;QACpD,MAAM,SAAS,GAAG,YAAY,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;YAC1D,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;YACnE,CAAC,CAAC,SAAS,CAAA;QAEb,OAAO;YACL,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,IAAI;YAC/B,KAAK,EAAE,OAAO,EAAE,OAAO;YACvB,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;YAC5C,4FAA4F;YAC5F,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACzD,YAAY;YACZ,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAA;IACH,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,CAAC,GAA0B,EAAE,GAAsB,EAAyB,EAAE;QACvG,MAAM,OAAO,GAAG,GAAG,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE9C,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,GAA0B,EAAE,MAAe,EAAU,EAAE;QAC1E,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI;YAC9B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;mBACzD,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACtD,CAAC,CAAC,SAAS,CAAA;QAEb,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA;IACxF,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,QAA8B,EAAW,EAAE;QAChE,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAA;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,2FAA2F;YAC3F,yFAAyF;YACzF,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,QAA8B,EAAE,QAAiB,EAAQ,EAAE;QAC9E,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,wDAAwD,CAAC,CAAC;IACtE,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,CACzB,SAAwD,EAAE,MAA0B,EACpF,EAAE,CAAC,CAAC,GAA0B,EAAU,EAAE;QAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI;YAClC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvF,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,OAAO;eAC3B,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAEhG,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CACxB,QAAkE,EAAE,MAAe,EAC7D,EAAE,CAAC,CAAC;QAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACtH,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAClH,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,CAAC,GAAiB,EAAW,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;WAC1B,GAAG,CAAC,OAAO,CAAe,aAAa,CAAC,CAAC,KAAK,EAAE;aAChD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAEpF;;;;OAIG;IACH,MAAM,kBAAkB,GAAG,CACzB,IAA6B,EAAE,MAA0B,EAAE,YAAoD,EAC1F,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAErC,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACzE,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;YAErF,OAAO,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;oBAE1B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAA;gBACnF,CAAC;gBAED,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,KAAK,GAAwB,EAAE,CAAA;QACrC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAClE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CACpB,QAAgB,EAChB,QAAsD,EACtD,MAA0B,EAC1B,YAAoD,EAC/B,EAAE;QACvB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAqC,EAAE,CAC/D,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QAElG,MAAM,WAAW,GAAG,oDAAoD,CAAA;QACxE,MAAM,KAAK,GAAwB,EAAE,CAAA;QACrC,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,KAA6B,CAAA;QAEjC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACpD,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC9D,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;YAC7E,CAAC;iBAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;YAC3E,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;gBACxB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC/F,CAAC;YACH,CAAC;YAED,SAAS,GAAG,WAAW,CAAC,SAAS,CAAA;QACnC,CAAC;QACD,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,OAAO;QACL,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa;KAC3H,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAA;AAExD,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAA8B,EAAwB,EAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;AAExH,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAA8B,EAAW,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;AAElH,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAA8B,EAAE,QAAiB,EAAQ,EAAE,CACrF,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAElD,yFAAyF;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAwD,EAAE,MAA0B,EAC1C,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAErG,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAkE,EAAE,MAAe,EAC7D,EAAE,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AAE/E,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAiB,EAAW,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAEhG,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAgB,EAChB,QAAsD,EACtD,MAA0B,EAC1B,YAAoD,EAC/B,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA"}
|
package/build/login/types.d.ts
CHANGED
|
@@ -174,7 +174,7 @@ export interface LoginScreenProps {
|
|
|
174
174
|
*/
|
|
175
175
|
translate?: (key: string, defaultValue: string) => string;
|
|
176
176
|
/**
|
|
177
|
-
* The current language, for `Intl.ListFormat
|
|
177
|
+
* The current language, for `Intl.ListFormat`, locale-keyed document labels and explicit hrefs.
|
|
178
178
|
*
|
|
179
179
|
* A prop for the same reason `translate` is: a component that reaches for an i18n context
|
|
180
180
|
* directly crashes the whole render in an app mounted without one.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/client-auth",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.60",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -50,27 +50,27 @@
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@owlmeans/auth": "^0.1.18-rc.
|
|
54
|
-
"@owlmeans/auth-common": "^0.1.18-rc.
|
|
55
|
-
"@owlmeans/basic-envelope": "^0.1.18-rc.
|
|
56
|
-
"@owlmeans/basic-keys": "^0.1.18-rc.
|
|
57
|
-
"@owlmeans/client": "^0.1.18-rc.
|
|
58
|
-
"@owlmeans/client-context": "^0.1.18-rc.
|
|
59
|
-
"@owlmeans/client-entrypoint": "^0.1.18-rc.
|
|
60
|
-
"@owlmeans/client-flow": "^0.1.18-rc.
|
|
61
|
-
"@owlmeans/client-resource": "^0.1.18-rc.
|
|
62
|
-
"@owlmeans/client-socket": "^0.1.18-rc.
|
|
53
|
+
"@owlmeans/auth": "^0.1.18-rc.41",
|
|
54
|
+
"@owlmeans/auth-common": "^0.1.18-rc.49",
|
|
55
|
+
"@owlmeans/basic-envelope": "^0.1.18-rc.48",
|
|
56
|
+
"@owlmeans/basic-keys": "^0.1.18-rc.50",
|
|
57
|
+
"@owlmeans/client": "^0.1.18-rc.53",
|
|
58
|
+
"@owlmeans/client-context": "^0.1.18-rc.50",
|
|
59
|
+
"@owlmeans/client-entrypoint": "^0.1.18-rc.49",
|
|
60
|
+
"@owlmeans/client-flow": "^0.1.18-rc.56",
|
|
61
|
+
"@owlmeans/client-resource": "^0.1.18-rc.49",
|
|
62
|
+
"@owlmeans/client-socket": "^0.1.18-rc.51",
|
|
63
63
|
"@owlmeans/config": "^0.1.18-rc.44",
|
|
64
64
|
"@owlmeans/context": "^0.1.18-rc.34",
|
|
65
|
-
"@owlmeans/did": "^0.1.18-rc.
|
|
65
|
+
"@owlmeans/did": "^0.1.18-rc.48",
|
|
66
66
|
"@owlmeans/entrypoint": "^0.1.18-rc.41",
|
|
67
67
|
"@owlmeans/error": "^0.1.18-rc.38",
|
|
68
68
|
"@owlmeans/flow": "^0.1.18-rc.45",
|
|
69
69
|
"@owlmeans/i18n": "^0.1.18-rc.39",
|
|
70
|
-
"@owlmeans/log": "^0.1.18-rc.
|
|
70
|
+
"@owlmeans/log": "^0.1.18-rc.3",
|
|
71
71
|
"@owlmeans/resource": "^0.1.18-rc.40",
|
|
72
|
-
"@owlmeans/socket": "^0.1.18-rc.
|
|
73
|
-
"@owlmeans/web-flow": "^0.1.18-rc.
|
|
72
|
+
"@owlmeans/socket": "^0.1.18-rc.42",
|
|
73
|
+
"@owlmeans/web-flow": "^0.1.18-rc.55",
|
|
74
74
|
"@scure/base": "^2.4.0"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
81
|
"@owlmeans/dep-config": "workspace:*",
|
|
82
|
-
"@owlmeans/test-auth": "^0.1.18-rc.
|
|
82
|
+
"@owlmeans/test-auth": "^0.1.18-rc.48",
|
|
83
83
|
"@types/bun": "^1.4.2",
|
|
84
84
|
"@types/react": "^19.3.0",
|
|
85
85
|
"nodemon": "^3.1.14",
|
package/src/login/terms/types.ts
CHANGED
|
@@ -5,6 +5,8 @@ import type { LoginContext } from '../types.js'
|
|
|
5
5
|
export interface ResolvedTermsDocument {
|
|
6
6
|
key: string
|
|
7
7
|
href: string
|
|
8
|
+
/** Published translations, selected at render/record time; `href` remains canonical. */
|
|
9
|
+
hrefMap?: Record<string, string>
|
|
8
10
|
/** A caller's own label, already resolved to one string — only ever set for a custom document. */
|
|
9
11
|
label?: string
|
|
10
12
|
/** A locale map for the label, when the config supplied one — resolved by the renderer, not here. */
|
|
@@ -82,6 +84,8 @@ export interface LoginTermsHelper {
|
|
|
82
84
|
termsLabelResolver: (
|
|
83
85
|
translate: (key: string, defaultValue: string) => string, locale: string | undefined
|
|
84
86
|
) => (doc: ResolvedTermsDocument) => string
|
|
87
|
+
/** Explicit locale destination, then base language, then canonical href; never rewrites paths. */
|
|
88
|
+
termsHrefOf: (doc: ResolvedTermsDocument, locale?: string) => string
|
|
85
89
|
/**
|
|
86
90
|
* What a sign-in-time terms acceptance sends the server — structurally
|
|
87
91
|
* `@owlmeans/marketing-consent`'s `TermsAcceptance`, so `client.recordTerms(termsAcceptanceOf(...))`
|
|
@@ -27,6 +27,12 @@ declare module '@owlmeans/config' {
|
|
|
27
27
|
interface LoginTermsConfig {
|
|
28
28
|
/** `documents[].key` (or a custom document's own key) → the ISO date it was last revised. */
|
|
29
29
|
revisions?: Record<string, string>
|
|
30
|
+
/**
|
|
31
|
+
* Document/notice key → locale → published href. Opt-in; omitted locales use the canonical
|
|
32
|
+
* href. Renderers and acceptance evidence resolve the same current locale, while these
|
|
33
|
+
* translated destinations leave the canonical agreement version and revisions unchanged.
|
|
34
|
+
*/
|
|
35
|
+
localizedHrefs?: Record<string, Record<string, string>>
|
|
30
36
|
/** Off by default. A bare string is `{ href }`. */
|
|
31
37
|
billing?: string | { href: string, revisedAt?: string } | false
|
|
32
38
|
/** Off by default. `name` is interpolated into the `login.terms.product` translation. */
|
package/src/login/terms.ts
CHANGED
|
@@ -116,11 +116,29 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
116
116
|
required: cfg?.required ?? true,
|
|
117
117
|
terms, privacy, cookies,
|
|
118
118
|
version: cfg?.version ?? digest(digestInput),
|
|
119
|
-
|
|
119
|
+
// Translations are alternate destinations for this canonical revision, not a new agreement.
|
|
120
|
+
documents: documents.map(doc => withLocalizedHrefs(doc, cfg)),
|
|
121
|
+
notices: notices.map(doc => withLocalizedHrefs(doc, cfg)),
|
|
122
|
+
showRevision,
|
|
120
123
|
...(revisedAt != null ? { revisedAt } : {}),
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
|
|
127
|
+
const withLocalizedHrefs = (doc: ResolvedTermsDocument, cfg?: LoginTermsConfig): ResolvedTermsDocument => {
|
|
128
|
+
const hrefMap = cfg?.localizedHrefs?.[doc.key]
|
|
129
|
+
|
|
130
|
+
return hrefMap != null ? { ...doc, hrefMap } : doc
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const termsHrefOf = (doc: ResolvedTermsDocument, locale?: string): string => {
|
|
134
|
+
const localized = locale != null
|
|
135
|
+
? doc.hrefMap?.[locale] ?? doc.hrefMap?.[locale.toLowerCase()]
|
|
136
|
+
?? doc.hrefMap?.[locale.split('-')[0].toLowerCase()]
|
|
137
|
+
: undefined
|
|
138
|
+
|
|
139
|
+
return typeof localized === 'string' && localized.trim() !== '' ? localized : doc.href
|
|
140
|
+
}
|
|
141
|
+
|
|
124
142
|
const termsAccepted = (resolved: ResolvedTerms | null): boolean => {
|
|
125
143
|
if (resolved == null || !resolved.required) {
|
|
126
144
|
return true
|
|
@@ -168,8 +186,8 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
168
186
|
const termsAcceptanceOf = (
|
|
169
187
|
resolved: Pick<ResolvedTerms, 'documents' | 'notices' | 'version'>, locale?: string
|
|
170
188
|
): LoginTermsAcceptance => ({
|
|
171
|
-
documents: resolved.documents.map(doc => ({ key: doc.key, href: doc
|
|
172
|
-
notices: resolved.notices.map(doc => ({ key: doc.key, href: doc
|
|
189
|
+
documents: resolved.documents.map(doc => ({ key: doc.key, href: termsHrefOf(doc, locale), revisedAt: doc.revisedAt })),
|
|
190
|
+
notices: resolved.notices.map(doc => ({ key: doc.key, href: termsHrefOf(doc, locale), revisedAt: doc.revisedAt })),
|
|
173
191
|
version: resolved.version,
|
|
174
192
|
...(locale != null ? { locale } : {}),
|
|
175
193
|
})
|
|
@@ -200,7 +218,7 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
200
218
|
if (part.type === 'element') {
|
|
201
219
|
const doc = docs[cursor++]
|
|
202
220
|
|
|
203
|
-
return { text: part.value, href: doc
|
|
221
|
+
return { text: part.value, href: termsHrefOf(doc, locale), documentKey: doc.key }
|
|
204
222
|
}
|
|
205
223
|
|
|
206
224
|
return { text: part.value }
|
|
@@ -212,7 +230,7 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
212
230
|
if (index > 0) {
|
|
213
231
|
parts.push({ text: index === docs.length - 1 ? ' and ' : ', ' })
|
|
214
232
|
}
|
|
215
|
-
parts.push({ text: labels[index], href: doc
|
|
233
|
+
parts.push({ text: labels[index], href: termsHrefOf(doc, locale), documentKey: doc.key })
|
|
216
234
|
})
|
|
217
235
|
|
|
218
236
|
return parts
|
|
@@ -245,7 +263,7 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
245
263
|
} else {
|
|
246
264
|
const doc = byKey(token)
|
|
247
265
|
if (doc != null) {
|
|
248
|
-
parts.push({ text: resolveLabel(doc), href: doc
|
|
266
|
+
parts.push({ text: resolveLabel(doc), href: termsHrefOf(doc, locale), documentKey: doc.key })
|
|
249
267
|
}
|
|
250
268
|
}
|
|
251
269
|
|
|
@@ -259,7 +277,7 @@ export const createLoginTermsHelper = (): LoginTermsHelper => {
|
|
|
259
277
|
}
|
|
260
278
|
|
|
261
279
|
return {
|
|
262
|
-
resolveTerms, termsAccepted, acceptTerms, termsLabelResolver, termsAcceptanceOf, termsDeferred, termsSentence,
|
|
280
|
+
resolveTerms, termsAccepted, acceptTerms, termsLabelResolver, termsHrefOf, termsAcceptanceOf, termsDeferred, termsSentence,
|
|
263
281
|
}
|
|
264
282
|
}
|
|
265
283
|
|
package/src/login/types.ts
CHANGED
|
@@ -189,7 +189,7 @@ export interface LoginScreenProps {
|
|
|
189
189
|
*/
|
|
190
190
|
translate?: (key: string, defaultValue: string) => string
|
|
191
191
|
/**
|
|
192
|
-
* The current language, for `Intl.ListFormat
|
|
192
|
+
* The current language, for `Intl.ListFormat`, locale-keyed document labels and explicit hrefs.
|
|
193
193
|
*
|
|
194
194
|
* A prop for the same reason `translate` is: a component that reaches for an i18n context
|
|
195
195
|
* directly crashes the whole render in an app mounted without one.
|
package/src/manager/README.md
CHANGED
|
@@ -37,7 +37,7 @@ Comprehensive error handling for authentication scenarios:
|
|
|
37
37
|
This manager is part of the `@owlmeans/client-auth` package:
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
npm install @owlmeans/client-auth@^0.1.18-rc.
|
|
40
|
+
npm install @owlmeans/client-auth@^0.1.18-rc.60
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## API Reference
|
package/tests/terms.spec.ts
CHANGED
|
@@ -253,3 +253,62 @@ describe('termsAcceptanceOf', () => {
|
|
|
253
253
|
expect(loginTermsHelper.termsAcceptanceOf(resolved)).not.toHaveProperty('locale')
|
|
254
254
|
})
|
|
255
255
|
})
|
|
256
|
+
|
|
257
|
+
describe('explicit localized document destinations', () => {
|
|
258
|
+
const cfg: LoginTermsConfig = {
|
|
259
|
+
terms: 'https://a.test/terms', privacy: 'https://a.test/privacy', cookies: 'https://a.test/cookies',
|
|
260
|
+
billing: 'https://a.test/billing',
|
|
261
|
+
revisions: { terms: '2026-05-30', privacy: '2026-05-30', billing: '2026-10-04' },
|
|
262
|
+
}
|
|
263
|
+
const localizedHrefs = {
|
|
264
|
+
terms: { pl: 'https://a.test/pl/warunki', fr: 'https://a.test/fr/conditions' },
|
|
265
|
+
billing: { pl: 'https://a.test/pl/abonament', fr: 'https://a.test/fr/abonnement' },
|
|
266
|
+
privacy: { pl: 'https://a.test/pl/prywatnosc', fr: 'https://a.test/fr/confidentialite' },
|
|
267
|
+
cookies: { pl: 'https://a.test/pl/cookies', fr: 'https://a.test/fr/cookies' },
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
test('translated paths leave the canonical digest and document revisions unchanged', () => {
|
|
271
|
+
const canonical = loginTermsHelper.resolveTerms(cfg)!
|
|
272
|
+
const localized = loginTermsHelper.resolveTerms({ ...cfg, localizedHrefs })!
|
|
273
|
+
|
|
274
|
+
expect(localized.version).toBe(canonical.version)
|
|
275
|
+
for (const locale of ['pl', 'fr']) {
|
|
276
|
+
const acceptance = loginTermsHelper.termsAcceptanceOf(localized, locale)
|
|
277
|
+
expect(acceptance.version).toBe(canonical.version)
|
|
278
|
+
expect(acceptance.documents.map(doc => doc.revisedAt)).toEqual(canonical.documents.map(doc => doc.revisedAt))
|
|
279
|
+
expect(acceptance.notices.map(doc => doc.revisedAt)).toEqual(canonical.notices.map(doc => doc.revisedAt))
|
|
280
|
+
}
|
|
281
|
+
expect(localized.documents.map(doc => doc.href)).toEqual(canonical.documents.map(doc => doc.href))
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
test('rendered lists, legacy placeholders and recorded evidence select the same PL/FR URLs', () => {
|
|
285
|
+
const resolved = loginTermsHelper.resolveTerms({ ...cfg, localizedHrefs })!
|
|
286
|
+
for (const locale of ['pl', 'fr']) {
|
|
287
|
+
const parts = loginTermsHelper.termsSentence('{{documents}}; {{notices}}', resolved, locale, label)
|
|
288
|
+
const evidence = loginTermsHelper.termsAcceptanceOf(resolved, locale)
|
|
289
|
+
expect(parts.filter(part => part.href != null).map(({ documentKey, href }) => ({ key: documentKey, href })))
|
|
290
|
+
.toEqual([...evidence.documents, ...evidence.notices].map(({ key, href }) => ({ key, href })))
|
|
291
|
+
expect(evidence.documents[0].href).toBe(localizedHrefs.terms[locale as 'pl' | 'fr'])
|
|
292
|
+
expect(evidence.notices[0].href).toBe(localizedHrefs.privacy[locale as 'pl' | 'fr'])
|
|
293
|
+
const legacy = loginTermsHelper.termsSentence('{{terms}} {{privacy}} {{cookies}}', resolved, locale, label)
|
|
294
|
+
expect(legacy.filter(part => part.href != null).map(part => part.href))
|
|
295
|
+
.toEqual([evidence.documents[0].href, ...evidence.notices.map(doc => doc.href)])
|
|
296
|
+
for (const doc of [...evidence.documents, ...evidence.notices]) {
|
|
297
|
+
expect(Object.keys(doc).sort()).toEqual(['href', 'key', 'revisedAt'])
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
test('unmapped/default locales retain canonical destinations; regional tags use a configured base language', () => {
|
|
303
|
+
const canonical = loginTermsHelper.resolveTerms(cfg)!
|
|
304
|
+
const resolved = loginTermsHelper.resolveTerms({ ...cfg, localizedHrefs })!
|
|
305
|
+
for (const locale of [undefined, 'en', 'it']) {
|
|
306
|
+
expect(loginTermsHelper.termsAcceptanceOf(resolved, locale))
|
|
307
|
+
.toEqual(loginTermsHelper.termsAcceptanceOf(canonical, locale))
|
|
308
|
+
}
|
|
309
|
+
expect(loginTermsHelper.termsHrefOf(resolved.documents[0], 'pl-PL')).toBe(localizedHrefs.terms.pl)
|
|
310
|
+
expect(loginTermsHelper.termsHrefOf(resolved.documents[0], 'fr-FR')).toBe(localizedHrefs.terms.fr)
|
|
311
|
+
// Omitted maps never rewrite a customer application's URLs, even in a non-English UI.
|
|
312
|
+
expect(loginTermsHelper.termsHrefOf(canonical.documents[0], 'pl')).toBe(cfg.terms!)
|
|
313
|
+
})
|
|
314
|
+
})
|