@wssto2/vue-core 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-Nw1IsB8N.js → AccessGate.vue_vue_type_script_setup_true_lang-DZ9GcLC1.js} +1 -1
- package/dist/{Activity-CoGI2_GL.js → Activity-dpY2kIs2.js} +2 -2
- package/dist/{Changes-Cwfe6wbX.js → Changes-CL8F1w8q.js} +2 -2
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-CtvHtFLy.js → CollectionPage.vue_vue_type_script_setup_true_lang-l-e-6WeS.js} +1 -1
- package/dist/{DeadLetters-DyA5Dqn0.js → DeadLetters-DopyRRx0.js} +4 -4
- package/dist/{General-DTEfxWls.js → General-mrVzi-5R.js} +2 -2
- package/dist/{NewRolePage-CRZoUajV.js → NewRolePage-sfr7tQs5.js} +2 -2
- package/dist/{ProfilePage-DLY81mvN.js → ProfilePage-EiTIYzZ5.js} +2 -2
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-gXbxXG2R.js → RoleEditor.vue_vue_type_script_setup_true_lang-BGtyOyWL.js} +6 -5
- package/dist/{RolePage-B9t586Q8.js → RolePage-ByUr3v_H.js} +3 -3
- package/dist/{RolesPage-BRdG-OSL.js → RolesPage-CvHrY9ZC.js} +2 -2
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-Cy9Oi0ts.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Ci04hApd.js} +1 -1
- package/dist/{Sessions-vGyUOnPG.js → Sessions-CHLokZ9e.js} +2 -2
- package/dist/{SettingsPage-V8WeADZZ.js → SettingsPage-DvOGJz9L.js} +2 -2
- package/dist/{SignIn-C-3i8RG6.js → SignIn-ypRvdmjg.js} +2 -2
- package/dist/{SignInPage-D2NA3VKU.js → SignInPage-CbPeKlAo.js} +2 -2
- package/dist/{SignIns-eoYPB6kB.js → SignIns-BApzbGq-.js} +2 -2
- package/dist/{UserRecord-BaQl2zzQ.js → UserRecord-BCTaBajE.js} +5 -5
- package/dist/{UsersList-BfXWgH5K.js → UsersList-CqSK3cQL.js} +4 -4
- package/dist/access/api.d.ts +8 -7
- package/dist/access/context.d.ts +7 -0
- package/dist/access/feature.d.ts +8 -0
- package/dist/access/index.js +1 -1
- package/dist/access/labels.d.ts +5 -0
- package/dist/app/index.js +117 -115
- package/dist/app/keepAlive.d.ts +4 -8
- package/dist/collection/index.js +3 -3
- package/dist/{contributions-DVQPcjJz.js → contributions-fx5q5n1u.js} +1 -1
- package/dist/{guards-DRh4zmxO.js → guards-D4mXf_2X.js} +1 -1
- package/dist/{http-D_pBg22D.js → http-CdQowFlW.js} +1 -1
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.js +6 -7
- package/dist/identity/session.d.ts +10 -7
- package/dist/{index-g-qbUeTk.js → index-BPwfLD7i.js} +261 -239
- package/dist/index-BVlbcaKs.js +763 -0
- package/dist/{index-kqk7Mclb.js → index-auJqVMWC.js} +90 -92
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/keepAlive-z3IRFkQq.js +46 -0
- package/dist/{navigation-DuQwti76.js → navigation-Bc5EQ_Si.js} +1 -1
- package/dist/{neighbors-IMRQ4rkm.js → neighbors-Bv6vnWlW.js} +1 -1
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +5 -4
- package/dist/notifications/push/pushState.d.ts +27 -0
- package/dist/page/index.js +1 -1
- package/dist/platform/index.js +3 -3
- package/dist/platform/platform.d.ts +7 -2
- package/dist/platform/session.d.ts +17 -0
- package/dist/platform-Dx6STiwY.js +283 -0
- package/dist/router/index.js +3 -3
- package/dist/{sections-D5rgQ4YB.js → sections-B0HxIOC2.js} +1 -1
- package/dist/shell/index.js +3 -3
- package/dist/{status-C2gHqkj6.js → status-BUFELJz2.js} +2 -2
- package/dist/testing/index.js +1 -1
- package/package.json +1 -1
- package/dist/index-WkbzC_ee.js +0 -745
- package/dist/keepAlive-CDvMQlcJ.js +0 -49
- package/dist/platform-Dl1fbScN.js +0 -268
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.2 — 2026-10-13
|
|
4
|
+
|
|
5
|
+
Access for service accounts, a working "turn on all", worded constraints, and this browser's push state for an app's own screens. Found by ARV's moves to the library's access and notifications.
|
|
6
|
+
|
|
7
|
+
### Changed (no backward compatibility)
|
|
8
|
+
- **Access takes the subject's kind.** `accessFeature({ subjects: { service: { base, bindable } } })` says where an application serves the routes of a kind other than `user` (`${base}/:id/{access,scopes,bindings,bindings/:binding_id}`, in go-core's wire). `PersonAccess` and *Add role* read and write there; a kind with no entry is refused with an error that names it, never sent to the user routes. `createAccessApi(http, subjects)` takes the entries, and its `bindable(subject, level, scopeId)` now takes the subject first.
|
|
9
|
+
|
|
10
|
+
### New
|
|
11
|
+
- **`usePushState()`** from `/notifications`: `ready`, `available`, `permission`, `subscribed`, `busy`, `enable()`, `disable()`, built on the settings page's own state. `subscribed` is true as soon as `ready` for a browser that already has push on. Type `PushState`.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Turn on all** granted only part of a module: it read "all on" inside its loop, and once the closures had granted everything the rest were revoked again.
|
|
15
|
+
- **Constraints are worded.** A role's constraints on a person's roles (`BindingRow`) use the `roleConstraints` option labels ("Used only"); an attribute or value with no label stays `attribute: value`.
|
|
16
|
+
|
|
17
|
+
### Docs
|
|
18
|
+
- The access recipe gains subjects and constraint labels; the notifications recipe gains `usePushState` and loses the stale "devices and push permission are not in these screens".
|
|
19
|
+
|
|
20
|
+
## 0.5.1 — 2026-10-13
|
|
21
|
+
|
|
22
|
+
One renewal, sessions that do not renew, and the language before the first page. Found by ARV's move to the library's sign-in.
|
|
23
|
+
|
|
24
|
+
### Changed (no backward compatibility)
|
|
25
|
+
- **`session.renew()`: one renewal for everyone.** The timer, the client's 401 path and an app's own fetch wrapper all call it. Concurrent callers share one in-flight renewal, so go-core's rotating refresh token is presented once (before, a timer and a 401 firing together signed the person out). It resolves `true` when the session goes on and `false` when it ended: a refused or throwing renewal expires the session, `onSessionExpired` runs once.
|
|
26
|
+
- **`createPlatform({ renewable })`**: `() => boolean`, asked each time; false for a session that cannot renew (an embed bearer token with no refresh token). Then `session.renew()` ends the session at once (a 401 does not call `renewSession`) and `keepSessionAlive` stays idle. `session.renewable` reads it. Without `renewSession` a session is not renewable. `identityPlatform({ renewable })` passes it through.
|
|
27
|
+
- **`keepSessionAlive()` takes no `renew` option** and calls `platform.session.renew()`. `renewIdentityTokens` is removed: `identityPlatform()`'s `renewSession` does the refresh. The old "without a renew call it only reads the session again" is gone: a session that renews with a read gives `renewSession` that read (`async (session) => (await session.refresh()).status === "authenticated"`).
|
|
28
|
+
- **The session user's language is applied before the first page.** When the session loads with a user whose `locale` is one the application offers and differs from the active one, `mount()` switches to it (loading its texts) before the first navigation. `LocaleSync` stays for later changes. Mapping the server's code to a locale code is the user parser's job.
|
|
29
|
+
|
|
3
30
|
## 0.5.0 — 2026-10-13
|
|
4
31
|
|
|
5
32
|
The screens for go-core v1.8.0. Web push comes into the library (owner 2026-10-12: push belongs in go-core and vue-core). My profile and the notification settings move to the current grouped-rows look. Apps get their own sections on both pages and their own role settings.
|
|
@@ -6,8 +6,8 @@ import { u as O } from "./format-D8X4zsx6.js";
|
|
|
6
6
|
import { _ as U } from "./DateField.vue_vue_type_script_setup_true_lang-DRuWzSaX.js";
|
|
7
7
|
import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl.js";
|
|
8
8
|
import { g as z } from "./options-g8RwEhBk.js";
|
|
9
|
-
import { P as G, c as H, i as J } from "./index-
|
|
10
|
-
import { u as K } from "./platform-
|
|
9
|
+
import { P as G, c as H, i as J } from "./index-auJqVMWC.js";
|
|
10
|
+
import { u as K } from "./platform-Dx6STiwY.js";
|
|
11
11
|
import { b as M } from "./routeResource-CcYA75T2.js";
|
|
12
12
|
import { _ as Q } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
13
13
|
import { _ as W } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as k, computed as N, openBlock as n, createBlock as u, unref as a, withCtx as g, createElementBlock as p, Fragment as _, renderList as $, createElementVNode as i, toDisplayString as h, createCommentVNode as C, ref as x, watch as b, createVNode as y } from "vue";
|
|
2
2
|
import { useI18n as E } from "vue-i18n";
|
|
3
|
-
import { P as V, i as R } from "./index-
|
|
4
|
-
import { u as S } from "./platform-
|
|
3
|
+
import { P as V, i as R } from "./index-auJqVMWC.js";
|
|
4
|
+
import { u as S } from "./platform-Dx6STiwY.js";
|
|
5
5
|
import { b as B } from "./routeResource-CcYA75T2.js";
|
|
6
6
|
import { _ as F } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
7
7
|
import { u as L } from "./useLoad-W4tfxmm5.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { hasInjectionContext as lt, inject as ot, shallowRef as xe, computed as k, watch as Ve, toValue as Se, ref as ie, getCurrentScope as nt, onScopeDispose as st, defineComponent as be, openBlock as u, createElementBlock as y, createVNode as O, unref as t, createElementVNode as i, toDisplayString as g, Fragment as ee, renderList as le, createCommentVNode as F, createBlock as W, mergeProps as ve, withCtx as q, createTextVNode as G, normalizeClass as ue, useTemplateRef as fe, withModifiers as Ke, withDirectives as Le, vModelText as Fe, nextTick as at, onBeforeUnmount as rt, onMounted as it, renderSlot as ge, useSlots as We, createSlots as Qe, normalizeProps as Xe, guardReactiveProps as Je } from "vue";
|
|
2
2
|
import { routerKey as ct } from "vue-router";
|
|
3
3
|
import { a as qe, i as ut } from "./error-Bb_dr_Ay.js";
|
|
4
|
-
import { a as dt, d as Re, o as ft, L as Te, e as je, w as pt, b as vt } from "./http-
|
|
4
|
+
import { a as dt, d as Re, o as ft, L as Te, e as je, w as pt, b as vt } from "./http-CdQowFlW.js";
|
|
5
5
|
import { a as mt } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
6
6
|
import { useI18n as he } from "vue-i18n";
|
|
7
7
|
import { _ as ce, u as Ne } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { defineComponent as B, useTemplateRef as C, computed as y, ref as v, openBlock as D, createBlock as z, unref as r, withCtx as m, createVNode as F, createElementVNode as b, normalizeClass as $, toDisplayString as h } from "vue";
|
|
2
2
|
import { useI18n as q } from "vue-i18n";
|
|
3
3
|
import { i as k } from "./error-Bb_dr_Ay.js";
|
|
4
|
-
import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { u as V, _ as N } from "./CollectionPage.vue_vue_type_script_setup_true_lang-l-e-6WeS.js";
|
|
5
5
|
import { u as P } from "./describeError-BqGAUZgX.js";
|
|
6
6
|
import { u as I } from "./format-D8X4zsx6.js";
|
|
7
|
-
import { e as a, R as O } from "./index-
|
|
7
|
+
import { e as a, R as O } from "./index-BPwfLD7i.js";
|
|
8
8
|
import { _ as W } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
9
9
|
import { t as i } from "./toast-CqSDTWRX.js";
|
|
10
10
|
import { u as Y } from "./useLoad-W4tfxmm5.js";
|
|
11
|
-
import { u as j } from "./platform-
|
|
12
|
-
import { a as G, r as H } from "./http-
|
|
11
|
+
import { u as j } from "./platform-Dx6STiwY.js";
|
|
12
|
+
import { a as G, r as H } from "./http-CdQowFlW.js";
|
|
13
13
|
function J(u) {
|
|
14
14
|
return G({
|
|
15
15
|
id: "events.deadletters",
|
|
@@ -8,9 +8,9 @@ import { _ as F } from "./FormView.vue_vue_type_script_setup_true_lang-CPSYV7iQ.
|
|
|
8
8
|
import { _ as L } from "./SelectField.vue_vue_type_script_setup_true_lang-BzQC1qDQ.js";
|
|
9
9
|
import { _ as f } from "./TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js";
|
|
10
10
|
import { u as A } from "./useSaveChrome-7huA3FzR.js";
|
|
11
|
-
import { P as D, b as G, i as I } from "./index-
|
|
11
|
+
import { P as D, b as G, i as I } from "./index-auJqVMWC.js";
|
|
12
12
|
import { t as M } from "./toast-CqSDTWRX.js";
|
|
13
|
-
import { u as O } from "./platform-
|
|
13
|
+
import { u as O } from "./platform-Dx6STiwY.js";
|
|
14
14
|
import { b as U } from "./routeResource-CcYA75T2.js";
|
|
15
15
|
import { u as j } from "./fieldMessages-DTXpWnBd.js";
|
|
16
16
|
import { _ as $ } from "./ActionRow.vue_vue_type_script_setup_true_lang-BCgKzUvG.js";
|
|
@@ -4,8 +4,8 @@ import { useRoute as k, useRouter as R } from "vue-router";
|
|
|
4
4
|
import { a as $ } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
5
5
|
import { _ as b } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
6
6
|
import { u as g } from "./useLoad-W4tfxmm5.js";
|
|
7
|
-
import { a as x, c as u } from "./index-
|
|
8
|
-
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-
|
|
7
|
+
import { a as x, c as u } from "./index-BVlbcaKs.js";
|
|
8
|
+
import { _ as P } from "./RoleEditor.vue_vue_type_script_setup_true_lang-BGtyOyWL.js";
|
|
9
9
|
const V = /* @__PURE__ */ _({
|
|
10
10
|
__name: "NewRolePage",
|
|
11
11
|
setup(h) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { defineComponent as P, openBlock as f, createBlock as E, unref as e, withCtx as m, createVNode as i, mergeProps as N, createElementVNode as A, toDisplayString as $, watch as Q, createElementBlock as b, Fragment as V, useModel as ge, useId as ye, useTemplateRef as Y, ref as x, onMounted as be, onBeforeUnmount as we, computed as L, withModifiers as he, createCommentVNode as z, createTextVNode as U, mergeModels as re, createSlots as xe, renderList as de, renderSlot as $e, resolveDynamicComponent as ne } from "vue";
|
|
2
2
|
import { useI18n as I } from "vue-i18n";
|
|
3
3
|
import { a as ke } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
4
|
-
import { u as G } from "./platform-
|
|
4
|
+
import { u as G } from "./platform-Dx6STiwY.js";
|
|
5
5
|
import { _ as ee } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
6
6
|
import { u as te } from "./useLoad-W4tfxmm5.js";
|
|
7
|
-
import { i as S, d as T, c as qe } from "./index-
|
|
7
|
+
import { i as S, d as T, c as qe } from "./index-auJqVMWC.js";
|
|
8
8
|
import { u as ce } from "./FormErrors.vue_vue_type_script_setup_true_lang-D7edzNTL.js";
|
|
9
9
|
import { _ as ue } from "./FormView.vue_vue_type_script_setup_true_lang-CPSYV7iQ.js";
|
|
10
10
|
import { u as Ce, _ as Se, a as Ee, b as Ve } from "./useGroupSheet-ATvc0IiM.js";
|
|
@@ -10,12 +10,12 @@ import { u as ne } from "./useSaveChrome-7huA3FzR.js";
|
|
|
10
10
|
import { t as le } from "./toast-CqSDTWRX.js";
|
|
11
11
|
import { _ as E } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
12
12
|
import { _ as R } from "./Banner.vue_vue_type_script_setup_true_lang-DSStj_5z.js";
|
|
13
|
-
import { d as W, u as G, p as re, o as T, r as K, g as M, s as ie, e as ce, a as ue, f as de, b as me, h as fe } from "./index-
|
|
13
|
+
import { d as W, u as G, p as re, o as T, r as K, g as M, s as ie, e as ce, a as ue, f as de, b as me, h as fe } from "./index-BVlbcaKs.js";
|
|
14
14
|
import { _ as pe } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
15
15
|
import { _ as _e } from "./Tabs.vue_vue_type_script_setup_true_lang-CcMcE38r.js";
|
|
16
16
|
import { _ as ve } from "./SegmentedField.vue_vue_type_script_setup_true_lang-BwyMvkis.js";
|
|
17
17
|
import { _ as be } from "./SwitchField.vue_vue_type_script_setup_true_lang-D_-HACqT.js";
|
|
18
|
-
import { u as ge } from "./platform-
|
|
18
|
+
import { u as ge } from "./platform-Dx6STiwY.js";
|
|
19
19
|
function ye(y, c) {
|
|
20
20
|
return Object.fromEntries(
|
|
21
21
|
y.map(({ attribute: d, options: o }) => {
|
|
@@ -50,9 +50,10 @@ const ke = {
|
|
|
50
50
|
return { granted: s.filter((e) => e in c.grants).length, total: s.length };
|
|
51
51
|
}, B = (a) => `${w(a).granted} / ${w(a).total}`, L = k(() => l.value.map((a) => ({ value: a.key, label: u.groupLabel(a.key), badge: B(a.key) }))), P = k(() => i.value !== void 0 && w(i.value.key).granted === w(i.value.key).total);
|
|
52
52
|
function m() {
|
|
53
|
-
if (i.value)
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
if (!i.value) return;
|
|
54
|
+
const a = P.value;
|
|
55
|
+
for (const s of b(i.value.key))
|
|
56
|
+
a ? K(o, c.grants, s) : M(o, c.grants, s);
|
|
56
57
|
}
|
|
57
58
|
const U = (a) => [...new Set(a.permissions.map((s) => s.ownable).filter((s) => s !== null))], N = k(() => ["own", "own_location", "all"].map((a) => ({ value: a, label: u.qualifierLabel(a) })));
|
|
58
59
|
function $(a, s) {
|
|
@@ -7,16 +7,16 @@ import { g as z } from "./options-g8RwEhBk.js";
|
|
|
7
7
|
import { _ as oe } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
8
8
|
import { t as E } from "./toast-CqSDTWRX.js";
|
|
9
9
|
import { _ as te } from "./RecordHeader.vue_vue_type_script_setup_true_lang-fmx0f8xi.js";
|
|
10
|
-
import { u as ae } from "./platform-
|
|
10
|
+
import { u as ae } from "./platform-Dx6STiwY.js";
|
|
11
11
|
import { a as le, u as se } from "./routeResource-CcYA75T2.js";
|
|
12
12
|
import { a as re } from "./ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js";
|
|
13
13
|
import { _ as ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
14
14
|
import { _ as H } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
15
|
-
import { u as O, a as U, f as ne, i as ie, d as ue, b as M, c as T } from "./index-
|
|
15
|
+
import { u as O, a as U, f as ne, i as ie, d as ue, b as M, c as T } from "./index-BVlbcaKs.js";
|
|
16
16
|
import { _ as J } from "./SelectField.vue_vue_type_script_setup_true_lang-BzQC1qDQ.js";
|
|
17
17
|
import { u as me, _ as pe } from "./useCommand-CtqheKUv.js";
|
|
18
18
|
import { _ as de } from "./Modal.vue_vue_type_script_setup_true_lang-DpBb8ans.js";
|
|
19
|
-
import { _ as fe } from "./RoleEditor.vue_vue_type_script_setup_true_lang-
|
|
19
|
+
import { _ as fe } from "./RoleEditor.vue_vue_type_script_setup_true_lang-BGtyOyWL.js";
|
|
20
20
|
const _e = { "data-test": "role-replace" }, ve = /* @__PURE__ */ I({
|
|
21
21
|
__name: "ReplaceRoleDialog",
|
|
22
22
|
props: {
|
|
@@ -7,11 +7,11 @@ import { _ as U } from "./FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl
|
|
|
7
7
|
import { g as j } from "./options-g8RwEhBk.js";
|
|
8
8
|
import { _ as D } from "./TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js";
|
|
9
9
|
import { a as I } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
10
|
-
import { u as K } from "./platform-
|
|
10
|
+
import { u as K } from "./platform-Dx6STiwY.js";
|
|
11
11
|
import { _ as T } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
12
12
|
import { _ as q } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
13
13
|
import { u as z } from "./useLoad-W4tfxmm5.js";
|
|
14
|
-
import { u as G, a as H, b as J, c as x } from "./index-
|
|
14
|
+
import { u as G, a as H, b as J, c as x } from "./index-BVlbcaKs.js";
|
|
15
15
|
const M = {
|
|
16
16
|
class: "flex min-w-0 flex-col gap-group-gap",
|
|
17
17
|
"data-test": "roles-index"
|
|
@@ -5,7 +5,7 @@ import { _ as q } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.
|
|
|
5
5
|
import { _ as G } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
6
6
|
import { a as re } from "./mediaQuery-CygcXmFW.js";
|
|
7
7
|
import { u as ie } from "./access-DmAceEo5.js";
|
|
8
|
-
import { u as ce, a as ue } from "./sections-
|
|
8
|
+
import { u as ce, a as ue } from "./sections-B0HxIOC2.js";
|
|
9
9
|
import { p as de } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang-GUTIXuNd.js";
|
|
10
10
|
import { p as me } from "./sectionIndex-BS0ic5W7.js";
|
|
11
11
|
import { _ as K, a as pe } from "./SectionList.vue_vue_type_script_setup_true_lang-wyW7n3Uq.js";
|
|
@@ -2,10 +2,10 @@ import { defineComponent as x, useTemplateRef as v, computed as w, ref as $, ope
|
|
|
2
2
|
import { useI18n as N } from "vue-i18n";
|
|
3
3
|
import { _ as q } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
4
4
|
import { u as A } from "./describeError-BqGAUZgX.js";
|
|
5
|
-
import { P as D, b as L, e as O, i as g, d as T } from "./index-
|
|
5
|
+
import { P as D, b as L, e as O, i as g, d as T } from "./index-auJqVMWC.js";
|
|
6
6
|
import { _ as k } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
7
7
|
import { t as b } from "./toast-CqSDTWRX.js";
|
|
8
|
-
import { u as V } from "./platform-
|
|
8
|
+
import { u as V } from "./platform-Dx6STiwY.js";
|
|
9
9
|
import { b as I } from "./routeResource-CcYA75T2.js";
|
|
10
10
|
import { _ as j } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
11
11
|
import { _ as z } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
|
|
@@ -5,7 +5,7 @@ import { a as oe } from "./AdaptivePageShell.vue_vue_type_script_setup_true_lang
|
|
|
5
5
|
import { t as C } from "./toast-CqSDTWRX.js";
|
|
6
6
|
import { u as U } from "./fieldMessages-DTXpWnBd.js";
|
|
7
7
|
import { _ as W } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
8
|
-
import { n as T, u as le, a as re } from "./index-
|
|
8
|
+
import { n as T, u as le, a as re } from "./index-BPwfLD7i.js";
|
|
9
9
|
import { _ as H } from "./SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js";
|
|
10
10
|
import { _ as j } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js";
|
|
11
11
|
import { _ as ce } from "./IconTile.vue_vue_type_script_setup_true_lang-_FXvaj93.js";
|
|
@@ -18,7 +18,7 @@ import { _ as me } from "./Menu.vue_vue_type_script_setup_true_lang-DsFOeCVe.js"
|
|
|
18
18
|
import { _ as pe } from "./MenuButton.vue_vue_type_script_setup_true_lang-AGbN9r5q.js";
|
|
19
19
|
import { _ as E } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
20
20
|
import { _ as I } from "./ActionRow.vue_vue_type_script_setup_true_lang-BCgKzUvG.js";
|
|
21
|
-
import { u as X } from "./platform-
|
|
21
|
+
import { u as X } from "./platform-Dx6STiwY.js";
|
|
22
22
|
import { u as Y } from "./useLoad-W4tfxmm5.js";
|
|
23
23
|
import { _ as ee } from "./SwitchField.vue_vue_type_script_setup_true_lang-D_-HACqT.js";
|
|
24
24
|
import { _ as _e } from "./Icon.vue_vue_type_script_lang-D7oC-d-S.js";
|
|
@@ -6,9 +6,9 @@ import { u as D } from "./format-D8X4zsx6.js";
|
|
|
6
6
|
import { _ as p } from "./FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl.js";
|
|
7
7
|
import { g as b } from "./options-g8RwEhBk.js";
|
|
8
8
|
import { u as U } from "./describeError-BqGAUZgX.js";
|
|
9
|
-
import { c as q, P as z, b as F, _ as L, i as O, d as T } from "./index-
|
|
9
|
+
import { c as q, P as z, b as F, _ as L, i as O, d as T } from "./index-auJqVMWC.js";
|
|
10
10
|
import { t as h } from "./toast-CqSDTWRX.js";
|
|
11
|
-
import { u as j, h as G } from "./platform-
|
|
11
|
+
import { u as j, h as G } from "./platform-Dx6STiwY.js";
|
|
12
12
|
import { b as H } from "./routeResource-CcYA75T2.js";
|
|
13
13
|
import { _ as J } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
14
14
|
import { _ as K } from "./ActionRow.vue_vue_type_script_setup_true_lang-BCgKzUvG.js";
|
|
@@ -5,8 +5,8 @@ import { _ as I } from "./Button.vue_vue_type_script_setup_true_lang-CL9Qh5yq.js
|
|
|
5
5
|
import { _ as N } from "./Panel.vue_vue_type_script_setup_true_lang-BA0u_DtS.js";
|
|
6
6
|
import { _ as S } from "./FormView.vue_vue_type_script_setup_true_lang-CPSYV7iQ.js";
|
|
7
7
|
import { _ as a } from "./TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js";
|
|
8
|
-
import { r as $ } from "./guards-
|
|
9
|
-
import { u as C, a as E } from "./index-
|
|
8
|
+
import { r as $ } from "./guards-D4mXf_2X.js";
|
|
9
|
+
import { u as C, a as E } from "./index-auJqVMWC.js";
|
|
10
10
|
const V = { class: "flex flex-1 flex-col items-center justify-center gap-8" }, k = { class: "text-xl font-semibold text-content-strong" }, H = /* @__PURE__ */ d({
|
|
11
11
|
__name: "SignInPage",
|
|
12
12
|
setup(q) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as y, computed as k, openBlock as _, createElementBlock as b, createVNode as r, unref as t, withCtx as l, createElementVNode as u, toDisplayString as d, createTextVNode as $, ref as v, watch as w, createBlock as I, createCommentVNode as S } from "vue";
|
|
2
2
|
import { useI18n as h } from "vue-i18n";
|
|
3
|
-
import { P as V, i as N } from "./index-
|
|
4
|
-
import { u as B } from "./platform-
|
|
3
|
+
import { P as V, i as N } from "./index-auJqVMWC.js";
|
|
4
|
+
import { u as B } from "./platform-Dx6STiwY.js";
|
|
5
5
|
import { b as E } from "./routeResource-CcYA75T2.js";
|
|
6
6
|
import { _ as R } from "./AsyncSection.vue_vue_type_script_setup_true_lang-B0NfvG3B.js";
|
|
7
7
|
import { u as C } from "./useLoad-W4tfxmm5.js";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { defineComponent as R, openBlock as q, createBlock as P, unref as e, withCtx as u, createVNode as t, mergeProps as L, provide as N, computed as g, useTemplateRef as $, createElementVNode as x, toDisplayString as C, createTextVNode as j } from "vue";
|
|
2
2
|
import { useI18n as A } from "vue-i18n";
|
|
3
|
-
import { a as F } from "./neighbors-
|
|
3
|
+
import { a as F } from "./neighbors-Bv6vnWlW.js";
|
|
4
4
|
import { _ as H } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
|
|
5
5
|
import { u as J } from "./describeError-BqGAUZgX.js";
|
|
6
|
-
import { i as w, P as Q, p as W, f as X, M as Y, g as Z, d as ee } from "./index-
|
|
6
|
+
import { i as w, P as Q, p as W, f as X, M as Y, g as Z, d as ee } from "./index-auJqVMWC.js";
|
|
7
7
|
import { _ as se } from "./AlertDialog.vue_vue_type_script_setup_true_lang-whA4WLdl.js";
|
|
8
8
|
import { t as k } from "./toast-CqSDTWRX.js";
|
|
9
|
-
import { _ as ae } from "./SectionNavigator.vue_vue_type_script_setup_true_lang-
|
|
10
|
-
import { u as E } from "./platform-
|
|
9
|
+
import { _ as ae } from "./SectionNavigator.vue_vue_type_script_setup_true_lang-Ci04hApd.js";
|
|
10
|
+
import { u as E } from "./platform-Dx6STiwY.js";
|
|
11
11
|
import { a as te } from "./routeResource-CcYA75T2.js";
|
|
12
12
|
import { a as oe } from "./ResourcePage.vue_vue_type_script_setup_true_lang-BFBGvevP.js";
|
|
13
13
|
import { A as re } from "./access-DmAceEo5.js";
|
|
@@ -18,7 +18,7 @@ import { _ as T } from "./FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl
|
|
|
18
18
|
import { g as B } from "./options-g8RwEhBk.js";
|
|
19
19
|
import { u as z, _ as K } from "./useCommand-CtqheKUv.js";
|
|
20
20
|
import { u as U } from "./fieldMessages-DTXpWnBd.js";
|
|
21
|
-
import { u as ce, s as le } from "./status-
|
|
21
|
+
import { u as ce, s as le } from "./status-BUFELJz2.js";
|
|
22
22
|
import { _ as M } from "./TextField.vue_vue_type_script_setup_true_lang-DTAQPbW0.js";
|
|
23
23
|
const ue = /* @__PURE__ */ R({
|
|
24
24
|
__name: "DeactivateDialog",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { defineComponent as U, openBlock as p, createBlock as C, unref as e, withCtx as c, createVNode as r, mergeProps as i, useTemplateRef as V, computed as q, createTextVNode as z, toDisplayString as $, createCommentVNode as A, createElementBlock as S, normalizeClass as N } from "vue";
|
|
2
2
|
import { useI18n as B } from "vue-i18n";
|
|
3
3
|
import { useRouter as M } from "vue-router";
|
|
4
|
-
import { u as P, _ as D } from "./CollectionPage.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { u as P, _ as D } from "./CollectionPage.vue_vue_type_script_setup_true_lang-l-e-6WeS.js";
|
|
5
5
|
import { _ as I } from "./Avatar.vue_vue_type_script_setup_true_lang-BPj_fkJR.js";
|
|
6
6
|
import { u as F } from "./format-D8X4zsx6.js";
|
|
7
|
-
import { u as L } from "./platform-
|
|
7
|
+
import { u as L } from "./platform-Dx6STiwY.js";
|
|
8
8
|
import { _ as G } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
9
|
-
import { i as K, f as E, M as W } from "./index-
|
|
10
|
-
import { U as j, u as H, s as J } from "./status-
|
|
9
|
+
import { i as K, f as E, M as W } from "./index-auJqVMWC.js";
|
|
10
|
+
import { U as j, u as H, s as J } from "./status-BUFELJz2.js";
|
|
11
11
|
import { u as O } from "./environment-Dva-SG8D.js";
|
|
12
12
|
import { u as Q } from "./languages-BShG9LpE.js";
|
|
13
13
|
import { _ as X } from "./FormGroup.vue_vue_type_script_setup_true_lang-BPchlRCl.js";
|
package/dist/access/api.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { HttpClient } from "../client";
|
|
2
2
|
import type { BindInput, CreateRoleInput, UpdateRoleInput } from "../modules/access/schemas";
|
|
3
|
-
import type { SubjectRef } from "../modules/access/entities";
|
|
3
|
+
import type { Binding, ScopeOptions, SubjectAccess, SubjectRef } from "../modules/access/entities";
|
|
4
|
+
import type { AccessSubjects } from "./context";
|
|
4
5
|
type Options = {
|
|
5
6
|
readonly signal?: AbortSignal;
|
|
6
7
|
};
|
|
7
|
-
/** go-core's access routes as calls; `data` of each answer already read. */
|
|
8
|
-
export declare function createAccessApi(http: HttpClient): {
|
|
8
|
+
/** go-core's access routes as calls; `data` of each answer already read. A subject of another kind than `user` goes to `subjects[kind]`. */
|
|
9
|
+
export declare function createAccessApi(http: HttpClient, subjects?: AccessSubjects): {
|
|
9
10
|
roles: (options?: Options) => Promise<import(".").RoleSummary[]>;
|
|
10
11
|
role: (ref: string, options?: Options) => Promise<import(".").Role>;
|
|
11
12
|
holders: (ref: string, options?: Options) => Promise<import(".").RoleHolder[]>;
|
|
@@ -14,10 +15,10 @@ export declare function createAccessApi(http: HttpClient): {
|
|
|
14
15
|
update: (input: UpdateRoleInput) => Promise<import(".").Role>;
|
|
15
16
|
remove: (ref: string) => Promise<undefined>;
|
|
16
17
|
replace: (ref: string, other: string) => Promise<number>;
|
|
17
|
-
access: (subject: SubjectRef, options?: Options) => Promise<
|
|
18
|
-
scopes: (subject: SubjectRef, options?: Options) => Promise<
|
|
19
|
-
bindable: (level: string, scopeId: number | null, options?: Options) => Promise<import(".").Role[]>;
|
|
20
|
-
bind: (subject: SubjectRef, input: Omit<BindInput, "id">) => Promise<
|
|
18
|
+
access: (subject: SubjectRef, options?: Options) => Promise<SubjectAccess>;
|
|
19
|
+
scopes: (subject: SubjectRef, options?: Options) => Promise<ScopeOptions>;
|
|
20
|
+
bindable: (subject: SubjectRef, level: string, scopeId: number | null, options?: Options) => Promise<import(".").Role[]>;
|
|
21
|
+
bind: (subject: SubjectRef, input: Omit<BindInput, "id">) => Promise<Binding>;
|
|
21
22
|
unbind: (subject: SubjectRef, bindingId: number) => Promise<undefined>;
|
|
22
23
|
};
|
|
23
24
|
export type AccessApi = ReturnType<typeof createAccessApi>;
|
package/dist/access/context.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import type { RouteLocationRaw } from "vue-router";
|
|
|
2
2
|
import type { ScopeOptions, SubjectRef } from "../modules/access/entities";
|
|
3
3
|
import type { PermissionCatalogue } from "./catalogue";
|
|
4
4
|
import type { RoleConstraint } from "./constraints";
|
|
5
|
+
/** Where an application serves the access routes of a subject kind other than `user`: `${base}/:id/{access,scopes,bindings,bindings/:binding_id}`, and the roles it may be given. */
|
|
6
|
+
export interface SubjectRoutes {
|
|
7
|
+
readonly base: string;
|
|
8
|
+
readonly bindable: string;
|
|
9
|
+
}
|
|
10
|
+
export type AccessSubjects = Readonly<Partial<Record<Exclude<SubjectRef["kind"], "user">, SubjectRoutes>>>;
|
|
5
11
|
/** What the access screens need from the feature that installed them. */
|
|
6
12
|
export interface AccessContext {
|
|
7
13
|
readonly catalogue: PermissionCatalogue;
|
|
@@ -12,6 +18,7 @@ export interface AccessContext {
|
|
|
12
18
|
readonly constraints: readonly RoleConstraint[];
|
|
13
19
|
/** The i18n key of the sentence for each of the application's own role-problem codes (`authz.invalid`). */
|
|
14
20
|
readonly problems: Readonly<Record<string, string>>;
|
|
21
|
+
readonly subjects: AccessSubjects;
|
|
15
22
|
readonly scopes: ((subject: SubjectRef, signal: AbortSignal) => Promise<ScopeOptions>) | null;
|
|
16
23
|
}
|
|
17
24
|
export declare const accessContextKey: import("vue").InjectionKey<AccessContext>, useAccessContext: () => AccessContext;
|
package/dist/access/feature.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { ScopeOptions, SubjectRef } from "../modules/access/entities";
|
|
|
4
4
|
import type { Destination } from "../router";
|
|
5
5
|
import type { PermissionCatalogue } from "./catalogue";
|
|
6
6
|
import type { RoleConstraint } from "./constraints";
|
|
7
|
+
import { type AccessSubjects } from "./context";
|
|
7
8
|
export interface AccessFeatureOptions {
|
|
8
9
|
/**
|
|
9
10
|
* The application's permissions: the `permissions` object go-core's `authzts` writes (`frontend/generated/permissions.ts`).
|
|
@@ -30,6 +31,13 @@ export interface AccessFeatureOptions {
|
|
|
30
31
|
* accessFeature({ catalogue, problems: { vehicle_kind_conflict: "roles.problems.vehicle_kind_conflict" } })
|
|
31
32
|
*/
|
|
32
33
|
problems?: Readonly<Record<string, string>>;
|
|
34
|
+
/**
|
|
35
|
+
* Where the routes of a subject kind other than `user` are (go-core leaves them to the application); the paths answer in go-core's own wire.
|
|
36
|
+
* `PersonAccess` and the add dialog with such a subject read and write there. Without an entry the subject is refused, never sent to the user routes.
|
|
37
|
+
*
|
|
38
|
+
* accessFeature({ catalogue, subjects: { service: { base: "/v1/iam/service-accounts", bindable: "/v1/iam/service-accounts/bindable-roles" } } })
|
|
39
|
+
*/
|
|
40
|
+
subjects?: AccessSubjects;
|
|
33
41
|
/** The backend's navigation destination that opens the roles list. Without it the application links to `accessPages.roles` itself. */
|
|
34
42
|
destination?: Destination;
|
|
35
43
|
}
|
package/dist/access/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as a, j as c, k as r, c as o, b as u, l as i, m as n, p as l, n as t, q as m, t as p, u as R, i as b, f as d } from "../index-
|
|
1
|
+
import { _ as a, j as c, k as r, c as o, b as u, l as i, m as n, p as l, n as t, q as m, t as p, u as R, i as b, f as d } from "../index-BVlbcaKs.js";
|
|
2
2
|
export {
|
|
3
3
|
a as BindingRow,
|
|
4
4
|
c as PersonAccess,
|
package/dist/access/labels.d.ts
CHANGED
|
@@ -28,6 +28,11 @@ export declare function useAccessLabels(): {
|
|
|
28
28
|
levelLabel: (level: string) => string;
|
|
29
29
|
/** A place: the level and its name (`Dealer · Auto Zagreb`); the root, which has no name, by its level. */
|
|
30
30
|
scopeLabel: (scope: ScopeName) => string;
|
|
31
|
+
/** A role's constraint as the application worded it (`Used only`); an attribute or value it gave no text for stays as `attribute: value`. */
|
|
32
|
+
constraintLabel: (attr: {
|
|
33
|
+
attribute: string;
|
|
34
|
+
values: readonly string[];
|
|
35
|
+
}) => string;
|
|
31
36
|
roleKind: (role: {
|
|
32
37
|
predefined: boolean;
|
|
33
38
|
computed: boolean;
|