@wssto2/vue-core 0.16.0 → 0.18.0
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 +32 -0
- package/README.md +5 -3
- package/bin/architecture/engine.mjs +3 -0
- package/bin/architecture/permissions.mjs +56 -0
- package/bin/architecture/rules.mjs +17 -0
- package/bin/commands/check-architecture.mjs +19 -0
- package/bin/config.mjs +2 -0
- package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-BH3f0hda.js → AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js} +1 -1
- package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-DybAIOHS.js → ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js} +4 -4
- package/dist/{Activity-DOUuIkZR.js → Activity-CiYn5E6A.js} +7 -7
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-d_dPurWG.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js} +1 -1
- package/dist/{Changes-BfcbVgmu.js → Changes-Cy8STpLX.js} +3 -3
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-B5hSkJ2N.js → CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js} +6 -6
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-DbRS37n3.js → DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js} +1 -1
- package/dist/{DateField.vue_vue_type_script_setup_true_lang-DzCvYHAf.js → DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js} +17 -16
- package/dist/{DeadLetters-CuMvfXH8.js → DeadLetters-DhJkMpd_.js} +4 -4
- package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-dsO1m9Mm.js → FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js} +2 -2
- package/dist/FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js +160 -0
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-Bq_Qa4py.js → FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js} +5 -5
- package/dist/{General-B5vcSEhP.js → General-CwTPC5UP.js} +10 -10
- package/dist/{IncidentRecord-wmStcEag.js → IncidentRecord-hXEGuLGg.js} +13 -13
- package/dist/{IncidentsList-CFx5tsxP.js → IncidentsList-C41VyDwK.js} +6 -6
- package/dist/{NewRolePage-CZxAp7LR.js → NewRolePage-BYYZJkK7.js} +3 -3
- package/dist/{NumberField.vue_vue_type_script_setup_true_lang-U-_kcnGr.js → NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js} +7 -6
- package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-BPDh9s2m.js → PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js} +56 -56
- package/dist/{ProfilePage-B-T8kBcc.js → ProfilePage-DGEsIycR.js} +13 -13
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-Bt5mT19g.js → RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-DOiFuJnH.js → ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js} +1 -1
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CqSsNPCw.js → RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js} +9 -9
- package/dist/{RolePage-zcUWpuDE.js → RolePage-C08ZUqw1.js} +9 -9
- package/dist/{RolesPage-C7_zWw-c.js → RolesPage-FOuY1VKg.js} +10 -10
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-BlCx9dVL.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js} +2 -2
- package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js → SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js} +13 -12
- package/dist/{SelectField.vue_vue_type_script_setup_true_lang-CLkoPbGm.js → SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js} +10 -9
- package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C2D_D5Hi.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js} +9 -9
- package/dist/{ServiceAccountRecord-BYxpHzTR.js → ServiceAccountRecord-kWwIQGZb.js} +12 -12
- package/dist/{ServiceAccountsList-BUuK-RUj.js → ServiceAccountsList-CKy9_YHP.js} +8 -8
- package/dist/{Sessions-Cm-Kilwl.js → Sessions-BDc8gdYH.js} +4 -4
- package/dist/{SettingsPage-Bavl0K-F.js → SettingsPage-t-8kmFVT.js} +13 -13
- package/dist/{SignIn-SfEhFiyM.js → SignIn-CqtkvtCZ.js} +7 -7
- package/dist/{SignInPage-BU0n2ehq.js → SignInPage-DcdNKZIb.js} +4 -4
- package/dist/{SignIns-Ahbn5cO6.js → SignIns-D4-nGu0B.js} +3 -3
- package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js → SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js} +15 -14
- package/dist/{TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js → TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js} +7 -6
- package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js → TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js} +6 -5
- package/dist/{TimeField.vue_vue_type_script_setup_true_lang-C1mLvOkc.js → TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js} +30 -29
- package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-jCXYFLtq.js → Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js} +1 -1
- package/dist/{UserRecord-3pCKMHkq.js → UserRecord-CwZCr9Im.js} +10 -10
- package/dist/{UsersList-vw3aDpvo.js → UsersList-Cn19sFgv.js} +4 -4
- package/dist/access/index.js +4 -4
- package/dist/app/application.d.ts +2 -0
- package/dist/app/index.js +2 -2
- package/dist/app/validate.d.ts +3 -1
- package/dist/{application-CHPpOssP.js → application-CDSweJb9.js} +144 -142
- package/dist/collection/DynamicCollection.vue.d.ts +69 -0
- package/dist/collection/authors.d.ts +27 -0
- package/dist/collection/definition.d.ts +4 -4
- package/dist/collection/dynamicColumns.d.ts +13 -0
- package/dist/collection/index.d.ts +3 -0
- package/dist/collection/index.js +196 -142
- package/dist/config/index.d.ts +42 -0
- package/dist/config/index.js +12 -3
- package/dist/content/Panel.vue.d.ts +1 -1
- package/dist/content/index.js +2 -2
- package/dist/{contributions-9CPT-Z5v.js → contributions-B0x5x5xD.js} +1 -1
- package/dist/form/CommandDialog.vue.d.ts +1 -1
- package/dist/form/DateField.vue.d.ts +1 -1
- package/dist/form/DateTimeField.vue.d.ts +1 -1
- package/dist/form/FileField.vue.d.ts +1 -1
- package/dist/form/FormRow.vue.d.ts +2 -2
- package/dist/form/I18nField.vue.d.ts +2 -2
- package/dist/form/TextField.vue.d.ts +1 -1
- package/dist/form/TextareaField.vue.d.ts +2 -2
- package/dist/form/date/value.d.ts +21 -0
- package/dist/form/dynamic/DynamicForm.vue.d.ts +46 -0
- package/dist/form/dynamic/RepeatField.vue.d.ts +47 -0
- package/dist/form/dynamic/ResourceField.vue.d.ts +38 -0
- package/dist/form/dynamic/ResourcePickerList.vue.d.ts +12 -0
- package/dist/form/dynamic/RichTextField.vue.d.ts +40 -0
- package/dist/form/dynamic/localeMode.d.ts +5 -0
- package/dist/form/dynamic/resources.d.ts +34 -0
- package/dist/form/dynamic/schema.d.ts +73 -0
- package/dist/form/dynamic/validator.d.ts +30 -0
- package/dist/form/dynamic/visibility.d.ts +12 -0
- package/dist/form/index.d.ts +12 -0
- package/dist/form/index.js +2100 -1260
- package/dist/format/format.d.ts +8 -2
- package/dist/format/index.js +1 -1
- package/dist/format-C_HXlOYQ.js +136 -0
- package/dist/{guards-6fJxfUtk.js → guards-CNJ0ATVC.js} +1 -1
- package/dist/i18n/index.d.ts +14 -2
- package/dist/i18n/index.js +86 -75
- package/dist/i18n/messages.d.ts +10 -1
- package/dist/i18n/runtime.d.ts +3 -1
- package/dist/identity/index.js +3 -3
- package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
- package/dist/identity/users/list.d.ts +1 -1
- package/dist/incidents/index.js +1 -1
- package/dist/{index-D9_xqF5g.js → index-1HS7O2-e.js} +9 -9
- package/dist/{index-nByFc1eL.js → index-BA2w8uwD.js} +86 -86
- package/dist/{index-Ct7W_gYE.js → index-SLJWm40T.js} +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modal/DiscardChangesModal.vue.d.ts +2 -2
- package/dist/modal/Modal.vue.d.ts +2 -2
- package/dist/modal/Sheet.vue.d.ts +2 -2
- package/dist/modules/identity/routes.d.ts +1 -1
- package/dist/modules/identity/schemas.d.ts +2 -2
- package/dist/{navigation-DMJ6akat.js → navigation-d-JAPBGA.js} +1 -1
- package/dist/{neighbors-BpypL3Wb.js → neighbors-Dg_LU9ry.js} +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/onboarding/index.js +1 -1
- package/dist/options-mOOX6JSS.js +214 -0
- package/dist/overlay/AlertDialog.vue.d.ts +3 -3
- package/dist/overlay/Menu.vue.d.ts +2 -2
- package/dist/overlay/PhotoViewer.vue.d.ts +2 -2
- package/dist/overlay/Popover.vue.d.ts +2 -2
- package/dist/page/SectionNavigator.vue.d.ts +1 -1
- package/dist/page/SectionPanel.vue.d.ts +1 -1
- package/dist/page/index.js +3 -3
- package/dist/phone/index.js +57 -56
- package/dist/platform/index.d.ts +10 -1
- package/dist/platform/index.js +16 -15
- package/dist/platform/platform.d.ts +4 -2
- package/dist/{platform-ORzRR3Tw.js → platform-DU9QFts8.js} +7 -6
- package/dist/playwright/config.d.ts +33 -0
- package/dist/playwright/index.d.ts +2 -0
- package/dist/playwright/index.js +192 -171
- package/dist/resource/index.js +1 -1
- package/dist/resources-BZLlAtoS.js +62 -0
- package/dist/router/index.js +3 -3
- package/dist/{rowLayout-QKfNHsML.js → rowLayout-PIuD7MGo.js} +2 -2
- package/dist/{sections-CSpJN0Z7.js → sections-BpiRLntE.js} +1 -1
- package/dist/{serverMessages-Ce8-MK4e.js → serverMessages-C_KkDvpT.js} +1 -1
- package/dist/shell/index.js +4 -4
- package/dist/state/NextStepPanel.vue.d.ts +63 -0
- package/dist/state/PhaseTiles.vue.d.ts +20 -0
- package/dist/state/PhaseTrack.vue.d.ts +48 -0
- package/dist/state/RequirementList.vue.d.ts +10 -0
- package/dist/state/TodoRow.vue.d.ts +52 -0
- package/dist/state/index.d.ts +9 -0
- package/dist/state/index.js +731 -126
- package/dist/state/phaseStep.d.ts +7 -0
- package/dist/state/phaseTile.d.ts +10 -0
- package/dist/state/requirementItem.d.ts +16 -0
- package/dist/state/todoRow.d.ts +8 -0
- package/dist/{state-QDaxntgR.js → state-z1iPF1DT.js} +1 -1
- package/dist/styles.css +1 -1
- package/dist/{suggestions-q_v3M7G6.js → suggestions-DeMgs_ki.js} +1 -1
- package/dist/testing/format.d.ts +1 -1
- package/dist/testing/index.js +31 -31
- package/dist/{useCommand-DAMgQ5NE.js → useCommand-DQKvro1n.js} +2 -2
- package/dist/{useGroupSheet-B-Hs4gNO.js → useGroupSheet-CRw3MUmX.js} +3 -3
- package/dist/{usePreferences-BfMXVbSO.js → usePreferences-DB29UTFD.js} +1 -1
- package/dist/{useRecordDialog-QPKFH1Ww.js → useRecordDialog-0azHxxvm.js} +1 -1
- package/dist/{useResourceForm-Oa6bk3NI.js → useResourceForm-zVuWerSn.js} +1 -1
- package/dist/{useTypedEntry-CITij2C_.js → useTypedEntry-BsMV66Yc.js} +46 -45
- package/package.json +6 -1
- package/dist/format-Cp1h0vsC.js +0 -125
- package/dist/options-B48UiYsG.js +0 -368
package/dist/playwright/index.js
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
import { devices as j } from "@playwright/test";
|
|
2
|
+
const f = (n, s) => ({ success: !0, data: n, ...s === void 0 ? {} : { meta: s } }), ae = (n, s = {}) => f(n, { total: n.length, page: 1, per_page: 20, last_page: 1, from: n.length === 0 ? 0 : 1, to: n.length, ...s }), O = (n, s, e = {}) => f({ data: n, total: n.length, per_page: 20, current_page: 1, last_page: 1, from: n.length ? 1 : 0, to: n.length, ...s ? { meta: { views: s } } : {}, ...e }), a = (n, s = 200) => ({ status: s, contentType: "application/json", body: JSON.stringify(n) }), w = () => ({ status: 204, body: "" }), M = (n) => ({ status: 200, contentType: "text/event-stream", body: n.map((s) => `data: ${JSON.stringify(s)}
|
|
2
3
|
|
|
3
|
-
`).join("") }),
|
|
4
|
-
function
|
|
4
|
+
`).join("") }), R = (n, s, e = {}) => a({ success: !1, error: s, code: s, ...e.params === void 0 ? {} : { params: e.params }, ...e.field ? { fields: { [e.field]: s } } : {} }, n), F = "2099-01-01T00:00:00.000Z", Z = { id: 1, login: "admin", name: "Test Admin", email: "admin@test.com", locale: "en" };
|
|
5
|
+
function z(n, s = {}, e = { level: "organization" }) {
|
|
5
6
|
const i = e.id === void 0 ? { level: e.level } : { level: e.level, id: e.id };
|
|
6
7
|
return {
|
|
7
8
|
subject: { kind: "user", id: 1 },
|
|
8
9
|
root: e.level === "organization",
|
|
9
|
-
permissions: Object.fromEntries(n.map((
|
|
10
|
+
permissions: Object.fromEntries(n.map((l) => [l, { scope: i, qualifier: s[l] ?? "all", clauses: [] }]))
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
|
-
function
|
|
13
|
-
return { user: Z, expires_at:
|
|
13
|
+
function J(n = [], s = {}) {
|
|
14
|
+
return { user: Z, expires_at: F, navigation: [], access: z(n), ...s };
|
|
14
15
|
}
|
|
15
|
-
const
|
|
16
|
-
async function
|
|
16
|
+
const W = (n = [], s = {}) => f(J(n, s));
|
|
17
|
+
async function le(n, s = [], e = {}) {
|
|
17
18
|
await n.route(
|
|
18
19
|
"**/api/v1/auth/me",
|
|
19
|
-
(i) => i.fulfill(a(
|
|
20
|
+
(i) => i.fulfill(a(W(s, { user: { ...Z, ...e.user }, navigation: e.navigation ?? [], access: z(s, e.access, e.scope) })))
|
|
20
21
|
);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
const s = n.request(), e = new URL(s.url()), i = s.method(),
|
|
24
|
-
return { method: i, url: e, path: e.pathname.replace(/^\/api\/v1/, ""), body:
|
|
23
|
+
function D(n) {
|
|
24
|
+
const s = n.request(), e = new URL(s.url()), i = s.method(), l = i === "GET" || !s.postData() ? void 0 : s.postDataJSON();
|
|
25
|
+
return { method: i, url: e, path: e.pathname.replace(/^\/api\/v1/, ""), body: l };
|
|
25
26
|
}
|
|
26
|
-
const
|
|
27
|
+
const B = { level: "organization", id: null, name: null }, ce = (n, s, e) => ({ level: n, id: s, name: e }), A = (n, s = {}) => {
|
|
27
28
|
const e = /^\d+$/.test(n), i = s.grants ?? [];
|
|
28
29
|
return {
|
|
29
30
|
ref: n,
|
|
@@ -39,73 +40,73 @@ const W = { level: "organization", id: null, name: null }, re = (n, s, e) => ({
|
|
|
39
40
|
...s,
|
|
40
41
|
grants: i
|
|
41
42
|
};
|
|
42
|
-
},
|
|
43
|
-
const e = new Map(n.grants.map((
|
|
43
|
+
}, I = ({ grants: n, ...s }) => s, H = (n, s, e, i = null) => ({ id: n, role: I(s), scope: e, created_by: i, created_at: "2026-01-01T00:00:00Z" }), oe = (n) => R(400, "authz.invalid", { params: { problems: n } }), X = (n, s) => {
|
|
44
|
+
const e = new Map(n.grants.map((l) => [l.permission, l.qualifier])), i = new Map(s.grants.map((l) => [l.permission, l.qualifier]));
|
|
44
45
|
return {
|
|
45
|
-
only_in_role: n.grants.filter((
|
|
46
|
-
only_in_other: s.grants.filter((
|
|
47
|
-
different: n.grants.filter((
|
|
46
|
+
only_in_role: n.grants.filter((l) => !i.has(l.permission)),
|
|
47
|
+
only_in_other: s.grants.filter((l) => !e.has(l.permission)),
|
|
48
|
+
different: n.grants.filter((l) => i.has(l.permission) && i.get(l.permission) !== l.qualifier).map((l) => ({ permission: l.permission, role: l.qualifier, other: i.get(l.permission) }))
|
|
48
49
|
};
|
|
49
|
-
},
|
|
50
|
+
}, Y = (n, s) => {
|
|
50
51
|
const e = /* @__PURE__ */ new Map();
|
|
51
52
|
for (const i of n)
|
|
52
|
-
for (const
|
|
53
|
-
const t = e.get(
|
|
54
|
-
t.grants.push({ qualifier:
|
|
53
|
+
for (const l of s.find((t) => t.ref === i.role.ref)?.grants ?? []) {
|
|
54
|
+
const t = e.get(l.permission) ?? { permission: l.permission, unavailable: !1, grants: [] };
|
|
55
|
+
t.grants.push({ qualifier: l.qualifier, scope: i.scope, attrs: i.role.attrs, binding_id: i.id, role_key: i.role.key ?? "", role_name: i.role.name }), e.set(l.permission, t);
|
|
55
56
|
}
|
|
56
57
|
return [...e.values()];
|
|
57
|
-
},
|
|
58
|
-
async function
|
|
58
|
+
}, C = (n) => Math.max(0, ...n) + 1;
|
|
59
|
+
async function ue(n, s = {}) {
|
|
59
60
|
const e = {
|
|
60
61
|
calls: [],
|
|
61
62
|
roles: structuredClone(s.roles ?? []),
|
|
62
63
|
bindings: structuredClone(s.bindings ?? {}),
|
|
63
64
|
reads: []
|
|
64
65
|
}, i = s.places ?? { root_level: "organization", root: !0, places: [] };
|
|
65
|
-
let
|
|
66
|
-
const
|
|
67
|
-
return await n.route(/\/api\/v1\/iam\/(roles|bindable-roles|service-accounts\/bindable-roles|users\/\d+\/(access|scopes|bindings)|service-accounts\/\d+\/(access|scopes|bindings))/, async (
|
|
66
|
+
let l = s.next?.role ?? C(e.roles.flatMap((r) => r.id === null ? [] : [r.id])), t = s.next?.binding ?? C(Object.values(e.bindings).flat().map((r) => r.id));
|
|
67
|
+
const u = (r) => e.roles.find((d) => d.ref === r);
|
|
68
|
+
return await n.route(/\/api\/v1\/iam\/(roles|bindable-roles|service-accounts\/bindable-roles|users\/\d+\/(access|scopes|bindings)|service-accounts\/\d+\/(access|scopes|bindings))/, async (r) => {
|
|
68
69
|
var _;
|
|
69
|
-
const { method: d, url: p, path: v, body: g } =
|
|
70
|
-
if (d !== "GET" ? e.calls.push({ method: d, path: v, body: g }) : e.reads.push(`${v}${p.search}`), await s.hook?.(
|
|
71
|
-
if (v === "/iam/bindable-roles" || v === "/iam/service-accounts/bindable-roles") return
|
|
70
|
+
const { method: d, url: p, path: v, body: g } = D(r);
|
|
71
|
+
if (d !== "GET" ? e.calls.push({ method: d, path: v, body: g }) : e.reads.push(`${v}${p.search}`), await s.hook?.(r, p, d, g)) return;
|
|
72
|
+
if (v === "/iam/bindable-roles" || v === "/iam/service-accounts/bindable-roles") return r.fulfill(a(f({ roles: s.bindable ?? e.roles.filter((c) => c.predefined) })));
|
|
72
73
|
const m = /^\/iam\/roles(?:\/([^/]+)(?:\/(holders|compare|replace))?)?$/.exec(v);
|
|
73
74
|
if (m) {
|
|
74
|
-
const [,
|
|
75
|
-
if (!
|
|
76
|
-
if (d === "GET") return
|
|
77
|
-
const b = g, E =
|
|
78
|
-
return e.roles.push(E),
|
|
75
|
+
const [, c, o] = m;
|
|
76
|
+
if (!c) {
|
|
77
|
+
if (d === "GET") return r.fulfill(a(f({ roles: e.roles.map(I) })));
|
|
78
|
+
const b = g, E = A(String(l++), { name: b.name, description: b.description, grants: b.grants, attrs: b.attrs, holders: 0 });
|
|
79
|
+
return e.roles.push(E), r.fulfill(a(f(E), 201));
|
|
79
80
|
}
|
|
80
|
-
const h =
|
|
81
|
-
if (!h) return
|
|
82
|
-
if (
|
|
83
|
-
if (
|
|
84
|
-
const b =
|
|
85
|
-
return b ?
|
|
81
|
+
const h = u(c);
|
|
82
|
+
if (!h) return r.fulfill(a({ success: !1, message: "not found", code: "access.role_not_found" }, 404));
|
|
83
|
+
if (o === "holders") return r.fulfill(a(f({ holders: s.holders?.[c] ?? [] })));
|
|
84
|
+
if (o === "compare") {
|
|
85
|
+
const b = u(p.searchParams.get("with") ?? "");
|
|
86
|
+
return b ? r.fulfill(a(f(X(h, b)))) : r.fulfill(a({ success: !1, message: "not found" }, 404));
|
|
86
87
|
}
|
|
87
|
-
if (
|
|
88
|
-
if (d === "GET") return
|
|
88
|
+
if (o === "replace") return r.fulfill(a(f({ rebound: h.holders })));
|
|
89
|
+
if (d === "GET") return r.fulfill(a(f(h)));
|
|
89
90
|
if (d === "DELETE")
|
|
90
|
-
return e.roles = e.roles.filter((b) => b.ref !==
|
|
91
|
+
return e.roles = e.roles.filter((b) => b.ref !== c), r.fulfill(w());
|
|
91
92
|
const T = g;
|
|
92
|
-
return Object.assign(h, { name: T.name, description: T.description, grants: T.grants, attrs: T.attrs, permission_count: T.grants.length }),
|
|
93
|
+
return Object.assign(h, { name: T.name, description: T.description, grants: T.grants, attrs: T.attrs, permission_count: T.grants.length }), r.fulfill(a(f(h)));
|
|
93
94
|
}
|
|
94
95
|
const y = /^\/iam\/(users|service-accounts)\/(\d+)\/(access|scopes|bindings)(?:\/(\d+))?$/.exec(v);
|
|
95
96
|
if (y) {
|
|
96
|
-
const [,
|
|
97
|
-
if (h === "scopes") return
|
|
97
|
+
const [, c, o, h, T] = y, b = `${c === "users" ? "user" : "service"}:${o}`, E = (_ = e.bindings)[b] ?? (_[b] = []);
|
|
98
|
+
if (h === "scopes") return r.fulfill(a(f(i)));
|
|
98
99
|
if (h === "access")
|
|
99
|
-
return
|
|
100
|
+
return r.fulfill(a(f({ subject: { kind: c === "users" ? "user" : "service", id: Number(o) }, bindings: E, effective: Y(E, e.roles), can_manage: s.canManage ?? !0 })));
|
|
100
101
|
if (d === "DELETE")
|
|
101
|
-
return e.bindings[b] = E.filter((
|
|
102
|
-
const k = g,
|
|
103
|
-
return E.push(
|
|
102
|
+
return e.bindings[b] = E.filter((S) => S.id !== Number(T)), r.fulfill(w());
|
|
103
|
+
const k = g, U = k.level === "organization" ? B : { level: k.level, id: k.scope_id ?? null, name: i.places.find((S) => S.id === k.scope_id && S.level === k.level)?.name ?? null }, q = H(t++, u(k.role_ref) ?? A(k.role_ref), U);
|
|
104
|
+
return E.push(q), r.fulfill(a(f(q), 201));
|
|
104
105
|
}
|
|
105
|
-
return
|
|
106
|
+
return r.fallback();
|
|
106
107
|
}), e;
|
|
107
108
|
}
|
|
108
|
-
const
|
|
109
|
+
const fe = (n, s, e = {}) => ({
|
|
109
110
|
id: n,
|
|
110
111
|
category: e.category ?? "general",
|
|
111
112
|
title: s,
|
|
@@ -114,7 +115,7 @@ const oe = (n, s, e = {}) => ({
|
|
|
114
115
|
data: {},
|
|
115
116
|
read_at: e.read ? "2026-09-14T11:00:00Z" : null,
|
|
116
117
|
created_at: "2026-09-14T12:00:00Z"
|
|
117
|
-
}),
|
|
118
|
+
}), N = (n, s = "default") => ({ enabled: n, source: s }), K = (n, s, e = {}) => ({
|
|
118
119
|
id: n,
|
|
119
120
|
label: s,
|
|
120
121
|
platform: "windows",
|
|
@@ -125,7 +126,7 @@ const oe = (n, s, e = {}) => ({
|
|
|
125
126
|
last_success_at: null,
|
|
126
127
|
...e
|
|
127
128
|
});
|
|
128
|
-
async function
|
|
129
|
+
async function de(n, s = {}) {
|
|
129
130
|
const e = {
|
|
130
131
|
calls: [],
|
|
131
132
|
items: s.items ?? [],
|
|
@@ -135,32 +136,32 @@ async function fe(n, s = {}) {
|
|
|
135
136
|
devices: s.devices ?? [],
|
|
136
137
|
streams: 0
|
|
137
138
|
}, i = () => e.unread = s.unread ?? e.items.filter((t) => t.read_at === null).length;
|
|
138
|
-
i(), await n.route(/\/api\/v1\/notifications(\/|\?|$)/, (t) =>
|
|
139
|
-
async function
|
|
140
|
-
const { method:
|
|
141
|
-
|
|
142
|
-
const v = () => a(
|
|
139
|
+
i(), await n.route(/\/api\/v1\/notifications(\/|\?|$)/, (t) => l(t));
|
|
140
|
+
async function l(t) {
|
|
141
|
+
const { method: u, url: r, body: d } = D(t), p = r.pathname.replace("/api/v1/notifications", "") || "/";
|
|
142
|
+
u !== "GET" && e.calls.push({ method: u, path: p, body: d });
|
|
143
|
+
const v = () => a(f({ unread_count: e.unread })), g = () => f({ items: e.devices });
|
|
143
144
|
if (p === "/stream")
|
|
144
|
-
return e.streams++, t.fulfill(
|
|
145
|
-
if (p === "/" &&
|
|
145
|
+
return e.streams++, t.fulfill(M(s.stream?.(e.streams, e) ?? [{ type: "unread", unread_count: e.unread }]));
|
|
146
|
+
if (p === "/" && u === "GET") {
|
|
146
147
|
if (s.failList?.()) return t.fulfill(a({ success: !1, message: "Server error" }, 500));
|
|
147
|
-
const
|
|
148
|
-
return t.fulfill(a(
|
|
148
|
+
const c = Number(r.searchParams.get("before_id") ?? 0);
|
|
149
|
+
return t.fulfill(a(f({ items: e.items.filter((o) => !c || o.id < c), has_more: !1 })));
|
|
149
150
|
}
|
|
150
151
|
if (p === "/unread") return t.fulfill(v());
|
|
151
152
|
if (p === "/read") {
|
|
152
|
-
const
|
|
153
|
-
return e.items.forEach((
|
|
154
|
-
|
|
153
|
+
const c = d.up_to_id;
|
|
154
|
+
return e.items.forEach((o) => {
|
|
155
|
+
o.id <= c && o.read_at === null && (o.read_at = "2026-09-14T12:30:00Z");
|
|
155
156
|
}), i(), t.fulfill(v());
|
|
156
157
|
}
|
|
157
158
|
const m = p.match(/^\/(\d+)\/read$/);
|
|
158
159
|
if (m) {
|
|
159
|
-
const
|
|
160
|
-
return
|
|
160
|
+
const c = e.items.find((o) => o.id === Number(m[1]));
|
|
161
|
+
return c && (c.read_at = "2026-09-14T12:30:00Z"), i(), t.fulfill(v());
|
|
161
162
|
}
|
|
162
163
|
if (p === "/preferences")
|
|
163
|
-
return t.fulfill(a(
|
|
164
|
+
return t.fulfill(a(f({
|
|
164
165
|
email_available: s.emailAvailable ?? !0,
|
|
165
166
|
push_available: s.pushAvailable ?? s.push?.enabled ?? !1,
|
|
166
167
|
categories: e.categories,
|
|
@@ -168,32 +169,32 @@ async function fe(n, s = {}) {
|
|
|
168
169
|
time_zone: s.timeZone ?? "UTC"
|
|
169
170
|
})));
|
|
170
171
|
const y = p.match(/^\/preferences\/([^/]+?)(\/push)?$/);
|
|
171
|
-
if (y &&
|
|
172
|
-
const
|
|
173
|
-
return y[2] ?
|
|
172
|
+
if (y && u === "PUT") {
|
|
173
|
+
const c = e.categories.find((o) => o.category === decodeURIComponent(y[1]));
|
|
174
|
+
return y[2] ? c.push = N(d.push, "person") : c.email = N(d.email, "person"), t.fulfill(a(f(c)));
|
|
174
175
|
}
|
|
175
176
|
if (p === "/quiet-hours")
|
|
176
|
-
return e.quiet = d, t.fulfill(a(
|
|
177
|
-
if (p === "/push") return t.fulfill(a(
|
|
178
|
-
if (p === "/devices" &&
|
|
179
|
-
if (p === "/devices" &&
|
|
180
|
-
const
|
|
181
|
-
return e.devices = [
|
|
177
|
+
return e.quiet = d, t.fulfill(a(f(e.quiet)));
|
|
178
|
+
if (p === "/push") return t.fulfill(a(f(s.push ?? { enabled: !1, public_key: "" })));
|
|
179
|
+
if (p === "/devices" && u === "GET") return t.fulfill(a(g()));
|
|
180
|
+
if (p === "/devices" && u === "POST") {
|
|
181
|
+
const c = s.registers ?? K(1, "Mac · Chrome", { platform: "macos" });
|
|
182
|
+
return e.devices = [c, ...e.devices.filter((o) => o.id !== c.id)], t.fulfill(a(f(c)));
|
|
182
183
|
}
|
|
183
184
|
if (p === "/devices/unsubscribe") {
|
|
184
|
-
const
|
|
185
|
-
return e.devices = e.devices.filter((
|
|
185
|
+
const c = s.registers;
|
|
186
|
+
return e.devices = e.devices.filter((o) => o.endpoint_hash !== c?.endpoint_hash), t.fulfill(a(g()));
|
|
186
187
|
}
|
|
187
188
|
const _ = p.match(/^\/devices\/(\d+)(\/test)?$/);
|
|
188
189
|
if (_) {
|
|
189
|
-
const
|
|
190
|
-
return
|
|
190
|
+
const c = Number(_[1]);
|
|
191
|
+
return u === "PATCH" && (e.devices = e.devices.map((o) => o.id === c ? { ...o, label: d.label } : o)), u === "DELETE" && (e.devices = e.devices.filter((o) => o.id !== c)), t.fulfill(a(u === "PATCH" ? f(e.devices.find((o) => o.id === c)) : g()));
|
|
191
192
|
}
|
|
192
|
-
return t.fulfill(a(
|
|
193
|
+
return t.fulfill(a(f({})));
|
|
193
194
|
}
|
|
194
195
|
return e;
|
|
195
196
|
}
|
|
196
|
-
const
|
|
197
|
+
const Q = "2099-01-01T09:30:00.000Z", V = "2020-01-01T00:00:00.000Z", $ = "new@example.test", P = (n) => new Date(Date.now() - n * 6e4).toISOString(), ee = (n = {}) => ({
|
|
197
198
|
id: 1,
|
|
198
199
|
login: "admin",
|
|
199
200
|
name: "Test Admin",
|
|
@@ -203,44 +204,44 @@ const K = "2099-01-01T09:30:00.000Z", Q = "2020-01-01T00:00:00.000Z", $ = "new@e
|
|
|
203
204
|
created_at: "2025-02-03T10:12:00Z",
|
|
204
205
|
pending_email: null,
|
|
205
206
|
...n
|
|
206
|
-
}),
|
|
207
|
+
}), se = (n = {}) => ({ email: $, expires_at: Q, resend_available_at: V, attempts_left: 3, ...n }), ne = (n, s, e = {}) => ({
|
|
207
208
|
id: n,
|
|
208
209
|
device: s,
|
|
209
210
|
ip: "10.20.4.12",
|
|
210
211
|
opened_by: null,
|
|
211
212
|
current: !1,
|
|
212
|
-
last_used_at:
|
|
213
|
+
last_used_at: P(2),
|
|
213
214
|
expires_at: new Date(Date.now() + 6 * 36e5).toISOString(),
|
|
214
|
-
created_at:
|
|
215
|
+
created_at: P(300),
|
|
215
216
|
...e
|
|
216
|
-
}),
|
|
217
|
+
}), ie = (n, s, e = {}) => ({
|
|
217
218
|
id: n,
|
|
218
219
|
event: s,
|
|
219
220
|
ip: "93.142.8.201",
|
|
220
221
|
device: "Chrome · Windows",
|
|
221
222
|
actor: null,
|
|
222
|
-
created_at:
|
|
223
|
+
created_at: P(n * 20),
|
|
223
224
|
...e
|
|
224
225
|
});
|
|
225
|
-
async function
|
|
226
|
-
const e = [], i = s.answers ?? {},
|
|
227
|
-
return await n.route("**/api/v1/iam/profile**", (
|
|
228
|
-
const { method:
|
|
229
|
-
if (
|
|
230
|
-
if (d === "/iam/profile/email" &&
|
|
231
|
-
return i.request ?
|
|
232
|
-
if (d === "/iam/profile/email/resend") return
|
|
226
|
+
async function me(n, s = {}) {
|
|
227
|
+
const e = [], i = s.answers ?? {}, l = () => se({ email: s.newEmail ?? $ }), t = { profile: s.profile ?? ee(), sessions: s.sessions ?? [ne(11, "Chrome · Linux", { current: !0 })], signins: s.signins ?? [ie(1, "signed_in")] };
|
|
228
|
+
return await n.route("**/api/v1/iam/profile**", (u) => {
|
|
229
|
+
const { method: r, path: d, body: p } = D(u);
|
|
230
|
+
if (r !== "GET" && e.push({ method: r, path: d, body: p ?? null }), d === "/iam/profile" && r === "GET") return u.fulfill(a(f(t.profile)));
|
|
231
|
+
if (d === "/iam/profile/email" && r === "POST")
|
|
232
|
+
return i.request ? u.fulfill(i.request()) : (t.profile = { ...t.profile, pending_email: l() }, u.fulfill(a(f(l()))));
|
|
233
|
+
if (d === "/iam/profile/email/resend") return u.fulfill(i.resend ? i.resend() : a(f(l())));
|
|
233
234
|
if (d === "/iam/profile/email/confirm")
|
|
234
|
-
return i.confirm ?
|
|
235
|
-
if (d === "/iam/profile/email" &&
|
|
236
|
-
return i.cancel ?
|
|
237
|
-
if (d === "/iam/profile/password") return
|
|
238
|
-
if (d === "/iam/profile/sessions" &&
|
|
235
|
+
return i.confirm ? u.fulfill(i.confirm()) : (t.profile = { ...t.profile, email: s.newEmail ?? $, pending_email: null }, u.fulfill(a(f(t.profile))));
|
|
236
|
+
if (d === "/iam/profile/email" && r === "DELETE")
|
|
237
|
+
return i.cancel ? u.fulfill(i.cancel()) : (t.profile = { ...t.profile, pending_email: null }, u.fulfill(w()));
|
|
238
|
+
if (d === "/iam/profile/password") return u.fulfill(i.password ? i.password() : w());
|
|
239
|
+
if (d === "/iam/profile/sessions" && r === "GET") return u.fulfill(a(f({ sessions: t.sessions })));
|
|
239
240
|
const v = /^\/iam\/profile\/sessions\/(\d+)$/.exec(d);
|
|
240
|
-
return v &&
|
|
241
|
+
return v && r === "DELETE" ? (t.sessions = t.sessions.filter((g) => g.id !== Number(v[1])), u.fulfill(w())) : d === "/iam/profile/signins" ? u.fulfill(a(O(t.signins))) : u.fallback();
|
|
241
242
|
}), { calls: e, state: t };
|
|
242
243
|
}
|
|
243
|
-
const x = (n) => new Date(Date.now() - n * 6e4).toISOString(),
|
|
244
|
+
const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), L = (n, s, e = {}) => ({
|
|
244
245
|
id: n,
|
|
245
246
|
login: s.split(" ")[0].toLowerCase(),
|
|
246
247
|
name: s,
|
|
@@ -253,7 +254,7 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
253
254
|
locked_until: null,
|
|
254
255
|
created_at: "2025-02-03T10:12:00Z",
|
|
255
256
|
...e
|
|
256
|
-
}),
|
|
257
|
+
}), pe = (n, s, e = {}) => ({
|
|
257
258
|
id: n,
|
|
258
259
|
device: s,
|
|
259
260
|
ip: "10.20.4.12",
|
|
@@ -263,7 +264,7 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
263
264
|
opened_by: null,
|
|
264
265
|
current: !1,
|
|
265
266
|
...e
|
|
266
|
-
}),
|
|
267
|
+
}), ge = (n, s, e = {}) => ({
|
|
267
268
|
id: n,
|
|
268
269
|
event: s,
|
|
269
270
|
ip: "93.142.8.201",
|
|
@@ -271,7 +272,7 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
271
272
|
actor: null,
|
|
272
273
|
created_at: x(n * 20),
|
|
273
274
|
...e
|
|
274
|
-
}),
|
|
275
|
+
}), ve = (n, s, e = {}) => ({
|
|
275
276
|
id: n,
|
|
276
277
|
action: s,
|
|
277
278
|
fields: [],
|
|
@@ -280,7 +281,7 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
280
281
|
actor: { id: 4, name: "Test Manager" },
|
|
281
282
|
created_at: x(n * 90),
|
|
282
283
|
...e
|
|
283
|
-
}),
|
|
284
|
+
}), he = (n, s, e, i, l = {}) => ({
|
|
284
285
|
id: n,
|
|
285
286
|
area: "general",
|
|
286
287
|
record_type: s,
|
|
@@ -288,8 +289,8 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
288
289
|
action: i,
|
|
289
290
|
signed_in_as: null,
|
|
290
291
|
created_at: x(n * 40),
|
|
291
|
-
...
|
|
292
|
-
}),
|
|
292
|
+
...l
|
|
293
|
+
}), _e = (n, s, e = {}) => ({
|
|
293
294
|
id: n,
|
|
294
295
|
name: s,
|
|
295
296
|
description: "",
|
|
@@ -301,7 +302,7 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
301
302
|
last_used_at: x(3),
|
|
302
303
|
deactivated_at: null,
|
|
303
304
|
...e
|
|
304
|
-
}),
|
|
305
|
+
}), te = (n = {}) => ({
|
|
305
306
|
people: [],
|
|
306
307
|
sessions: [],
|
|
307
308
|
signins: [],
|
|
@@ -311,93 +312,113 @@ const x = (n) => new Date(Date.now() - n * 6e4).toISOString(), G = (n, s, e = {}
|
|
|
311
312
|
keys: {},
|
|
312
313
|
notManageable: !1,
|
|
313
314
|
...n
|
|
314
|
-
}),
|
|
315
|
-
async function
|
|
316
|
-
const e = s.writes ?? [], i = s.state ??
|
|
317
|
-
if (
|
|
318
|
-
const g =
|
|
319
|
-
return a(O(y.filter((
|
|
315
|
+
}), G = (n) => a({ success: !1, error: "not found", message: "not found", ...n ? { code: n } : {} }, 404);
|
|
316
|
+
async function be(n, s = {}) {
|
|
317
|
+
const e = s.writes ?? [], i = s.state ?? te(), l = ({ method: t, path: u, url: r, body: d }) => {
|
|
318
|
+
if (u === "/iam/users" && t === "GET") {
|
|
319
|
+
const g = r.searchParams.get("view") ?? "active", m = (r.searchParams.get("search") ?? "").toLowerCase(), y = i.people.filter((c) => (!m || c.name.toLowerCase().includes(m)) && (s.filter?.(c, r.searchParams) ?? !0)), _ = (c) => y.filter((o) => c === "all" || o.status === c).length;
|
|
320
|
+
return a(O(y.filter((c) => g === "all" || c.status === g), ["active", "locked", "inactive", "all"].map((c) => ({ key: c, count: _(c) }))));
|
|
320
321
|
}
|
|
321
|
-
if (
|
|
322
|
-
const g = d, m =
|
|
323
|
-
return i.people.push(m), a(
|
|
322
|
+
if (u === "/iam/users" && t === "POST") {
|
|
323
|
+
const g = d, m = L(Math.max(0, ...i.people.map((y) => y.id)) + 1, g.name, g);
|
|
324
|
+
return i.people.push(m), a(f(m));
|
|
324
325
|
}
|
|
325
|
-
const p = /^\/iam\/users\/(\d+)(?:\/(.*))?$/.exec(
|
|
326
|
+
const p = /^\/iam\/users\/(\d+)(?:\/(.*))?$/.exec(u);
|
|
326
327
|
if (p) {
|
|
327
|
-
const g = Number(p[1]), m = p[2] ?? "", _ = i.people.find((
|
|
328
|
+
const g = Number(p[1]), m = p[2] ?? "", _ = i.people.find((o) => o.id === g) ?? L(g, "Unknown Person");
|
|
328
329
|
if (m === "") {
|
|
329
330
|
if (t === "PUT") {
|
|
330
|
-
const
|
|
331
|
-
return a(
|
|
331
|
+
const o = d, h = o.ext === void 0 ? _.ext : { ..._.ext, ...o.ext };
|
|
332
|
+
return a(f({ ..._, ...o, ...h === void 0 ? {} : { ext: h } }));
|
|
332
333
|
}
|
|
333
|
-
return t === "DELETE" ? w() : a(
|
|
334
|
+
return t === "DELETE" ? w() : a(f(_));
|
|
334
335
|
}
|
|
335
|
-
if (m === "sessions" && t === "GET") return a(
|
|
336
|
+
if (m === "sessions" && t === "GET") return a(f({ sessions: i.sessions }));
|
|
336
337
|
if (m === "sessions" && t === "DELETE")
|
|
337
338
|
return i.sessions = [], w();
|
|
338
|
-
const
|
|
339
|
-
if (
|
|
340
|
-
return i.sessions = i.sessions.filter((
|
|
339
|
+
const c = /^sessions\/(\d+)$/.exec(m);
|
|
340
|
+
if (c && t === "DELETE")
|
|
341
|
+
return i.sessions = i.sessions.filter((o) => o.id !== Number(c[1])), w();
|
|
341
342
|
if (m === "signins") {
|
|
342
|
-
const h =
|
|
343
|
+
const h = r.searchParams.get("view") === "failed" ? i.signins.filter((T) => ["wrong_password", "locked_out", "refused_inactive"].includes(T.event)) : i.signins;
|
|
343
344
|
return a(O(h, [{ key: "all", count: i.signins.length }, { key: "failed", count: i.signins.filter((T) => ["wrong_password", "locked_out", "refused_inactive"].includes(T.event)).length }]));
|
|
344
345
|
}
|
|
345
346
|
if (m === "changes") return a(O(i.changes, [{ key: "all", count: i.changes.length }]));
|
|
346
347
|
if (m === "activity") {
|
|
347
|
-
const
|
|
348
|
-
return a(O(
|
|
348
|
+
const o = r.searchParams.get("area");
|
|
349
|
+
return a(O(o ? i.activity.filter((h) => h.area === o) : i.activity, [{ key: "all", count: i.activity.length }]));
|
|
349
350
|
}
|
|
350
|
-
return m === "deactivate" || m === "activate" ? a(
|
|
351
|
+
return m === "deactivate" || m === "activate" ? a(f({})) : m === "password" ? w() : m === "unlock" ? (_.locked_until = null, _.status = "active", a(f({ unlocked: !0 }))) : void 0;
|
|
351
352
|
}
|
|
352
|
-
if (
|
|
353
|
-
const v = /^\/iam\/service-accounts\/(\d+)(?:\/(keys))?$/.exec(
|
|
353
|
+
if (u === "/iam/service-accounts") return a(f({ service_accounts: i.serviceAccounts }));
|
|
354
|
+
const v = /^\/iam\/service-accounts\/(\d+)(?:\/(keys))?$/.exec(u);
|
|
354
355
|
if (v && t === "GET") {
|
|
355
356
|
const g = i.serviceAccounts.find((m) => m.id === Number(v[1]));
|
|
356
|
-
return g ? a(
|
|
357
|
+
return g ? a(f(v[2] ? { keys: i.keys[g.id] ?? [] } : g)) : G();
|
|
357
358
|
}
|
|
358
359
|
};
|
|
359
360
|
return await n.route(/\/api\/v1\/iam\/(users|service-accounts)(\/|\?|$)/, (t) => {
|
|
360
|
-
const { method:
|
|
361
|
-
return m ? (
|
|
361
|
+
const { method: u, url: r, path: d, body: p } = D(t), v = { method: u, path: d, url: r, body: p }, m = (u !== "GET" && i.notManageable && /^\/iam\/users\/\d+/.test(d) ? G("identity.account.not_found") : void 0) ?? s.hook?.(v, i) ?? l(v);
|
|
362
|
+
return m ? (u !== "GET" && e.push({ method: u, path: d, body: p ?? null }), t.fulfill(m)) : t.fallback();
|
|
362
363
|
}), { writes: e, state: i };
|
|
363
364
|
}
|
|
365
|
+
function ye(n = {}, s = {}) {
|
|
366
|
+
const e = Number(process.env.E2E_PORT || n.port || 5173), i = `http://127.0.0.1:${e}`, l = !!process.env.CI;
|
|
367
|
+
n.timezone && (process.env.TZ = n.timezone);
|
|
368
|
+
const { use: t, webServer: u, ...r } = s;
|
|
369
|
+
return {
|
|
370
|
+
testDir: n.testDir ?? "./e2e",
|
|
371
|
+
testIgnore: n.ignore ?? [],
|
|
372
|
+
outputDir: "./e2e-results",
|
|
373
|
+
fullyParallel: !0,
|
|
374
|
+
forbidOnly: l,
|
|
375
|
+
retries: l ? 2 : 0,
|
|
376
|
+
workers: l ? 2 : void 0,
|
|
377
|
+
reporter: [[l ? "github" : "html"], ["json", { outputFile: n.report ?? "e2e-timings/results.json" }]],
|
|
378
|
+
use: { baseURL: i, ...n.timezone ? { timezoneId: n.timezone } : {}, trace: "on-first-retry", ...t },
|
|
379
|
+
projects: [{ name: "chromium", use: { ...j["Desktop Chrome"] } }],
|
|
380
|
+
webServer: { command: `npm run dev -- --port ${e}`, url: i, reuseExistingServer: !l, timeout: 3e4, ...u },
|
|
381
|
+
...r
|
|
382
|
+
};
|
|
383
|
+
}
|
|
364
384
|
export {
|
|
365
385
|
$ as NEW_EMAIL,
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
386
|
+
B as ORGANIZATION,
|
|
387
|
+
z as accessOf,
|
|
388
|
+
he as activity,
|
|
369
389
|
x as ago,
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
390
|
+
W as authBody,
|
|
391
|
+
J as authResponse,
|
|
392
|
+
H as bindingOf,
|
|
393
|
+
ve as change,
|
|
374
394
|
O as datatable,
|
|
375
395
|
Z as defaultUser,
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
396
|
+
K as device,
|
|
397
|
+
te as freshState,
|
|
398
|
+
oe as invalid,
|
|
379
399
|
a as json,
|
|
380
|
-
|
|
400
|
+
le as mockAuth,
|
|
381
401
|
w as noContent,
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
ce as
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
402
|
+
fe as notification,
|
|
403
|
+
f as ok,
|
|
404
|
+
ne as ownSession,
|
|
405
|
+
ie as ownSignin,
|
|
406
|
+
ae as pageOk,
|
|
407
|
+
se as pendingChange,
|
|
408
|
+
L as person,
|
|
409
|
+
ye as playwrightConfig,
|
|
410
|
+
ee as profile,
|
|
411
|
+
R as refusal,
|
|
412
|
+
A as role,
|
|
413
|
+
ce as scopeOf,
|
|
414
|
+
ue as serveAccess,
|
|
415
|
+
de as serveNotifications,
|
|
416
|
+
me as serveProfile,
|
|
417
|
+
be as serveUsers,
|
|
418
|
+
_e as serviceAccount,
|
|
419
|
+
pe as session,
|
|
420
|
+
N as setting,
|
|
421
|
+
ge as signin,
|
|
422
|
+
M as sse,
|
|
423
|
+
I as summary
|
|
403
424
|
};
|
package/dist/resource/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { p as g, u as m, a as l, b as R } from "../routeResource-DlTsGTg_.js";
|
|
2
2
|
import { c as a } from "../current-CslcEPXp.js";
|
|
3
3
|
import { A as n } from "../error-CD7x0Jrz.js";
|
|
4
|
-
import { _ as w, a as x } from "../ResourcePage.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { _ as w, a as x } from "../ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js";
|
|
5
5
|
async function i(t, e) {
|
|
6
6
|
return (await a().platform.http.get(t, { signal: e.signal })).data;
|
|
7
7
|
}
|