@wssto2/vue-core 0.9.4 → 0.10.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 +24 -0
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js +87 -0
- package/dist/Activity-CeAG0ZtJ.js +169 -0
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-DdJOodn8.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-D5i77H6S.js} +147 -159
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-BdeOKqz_.js → AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js} +1 -1
- package/dist/BottomDockPortal.vue_vue_type_script_setup_true_lang-DmwR-2SP.js +17 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js +123 -0
- package/dist/Changes-B9-zpDxG.js +69 -0
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-DHcekGNn.js → CollectionPage.vue_vue_type_script_setup_true_lang-Cn0YOWJF.js} +19 -18
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-8kBsNRuq.js → DataTable.vue_vue_type_script_setup_true_lang-BQRG8bpH.js} +1 -1
- package/dist/{DateField.vue_vue_type_script_setup_true_lang-BhKdCVFn.js → DateField.vue_vue_type_script_setup_true_lang-CeNwBbJT.js} +1 -1
- package/dist/{DeadLetters-Bb5pPlOY.js → DeadLetters-BP03yC4R.js} +5 -6
- package/dist/DrawnCheck.vue_vue_type_script_setup_true_lang-9DzDJlIA.js +38 -0
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js +427 -0
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-aaNnMIOi.js → FormView.vue_vue_type_script_setup_true_lang-DvbPEiNQ.js} +2 -2
- package/dist/{General-BAG7S6wV.js → General-BDmCJr3H.js} +35 -38
- package/dist/{IncidentRecord-D8aOpNHo.js → IncidentRecord-DEhl6AyA.js} +14 -15
- package/dist/{IncidentsList-C0cFl0Db.js → IncidentsList-COgRPdk3.js} +3 -3
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-BlHhdmMy.js → Modal.vue_vue_type_script_setup_true_lang-DDS0iEnn.js} +9 -8
- package/dist/{NewRolePage-C6Iu-EQJ.js → NewRolePage-DhGFwvk3.js} +4 -4
- package/dist/{NumberField.vue_vue_type_script_setup_true_lang-TGGAq8J-.js → NumberField.vue_vue_type_script_setup_true_lang-B3UrXNqH.js} +1 -1
- package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-qz1tmYpF.js → PersonAccess.vue_vue_type_script_setup_true_lang-DbGZSNQc.js} +56 -56
- package/dist/ProfilePage-BQCK2w8R.js +684 -0
- package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-DrOm8k--.js +30 -0
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B9mN7UxZ.js → RecordHeader.vue_vue_type_script_setup_true_lang-DqGc3Jyo.js} +1 -1
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-Cw8mGf_B.js → ResourcePage.vue_vue_type_script_setup_true_lang-DljhsTU4.js} +3 -3
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-CJPvOVDV.js → RoleEditor.vue_vue_type_script_setup_true_lang-C0FIotFA.js} +11 -12
- package/dist/{RolePage-Dj_ocMnM.js → RolePage-DaNv049g.js} +10 -10
- package/dist/{RolesPage-PXrs4O-1.js → RolesPage-6hlzJes_.js} +6 -6
- package/dist/SearchInput.vue_vue_type_script_setup_true_lang-w4eAqyZ9.js +32 -0
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CtdF1zuv.js → SectionList.vue_vue_type_script_setup_true_lang-DR0_NsqC.js} +1 -1
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-B5ove3rM.js → SectionNavigator.vue_vue_type_script_setup_true_lang-Dh3sXUt_.js} +2 -2
- package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-ChfDFAA2.js → SegmentedField.vue_vue_type_script_setup_true_lang-zv_AxpBn.js} +1 -1
- package/dist/{SelectField.vue_vue_type_script_setup_true_lang-BP8nAQwo.js → SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js} +3 -3
- package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-aWkKwxNe.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-C0OIBrSp.js} +20 -20
- package/dist/{ServiceAccountRecord-bxX9yQkC.js → ServiceAccountRecord-gtlhYaAz.js} +37 -37
- package/dist/{ServiceAccountsList-BXE6htxk.js → ServiceAccountsList-BM7GGcvw.js} +33 -33
- package/dist/{Sessions--Gvc0kxw.js → Sessions-BCDJYuV2.js} +23 -24
- package/dist/{SettingsPage-DzDC7gD-.js → SettingsPage-DUhMsYBf.js} +27 -30
- package/dist/{SignIn-CTI_699e.js → SignIn-4D7WohI8.js} +9 -10
- package/dist/{SignInPage-HKC1bm2E.js → SignInPage-B6B-34GG.js} +4 -4
- package/dist/SignIns-CFoe4hpX.js +64 -0
- package/dist/StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js +56 -0
- package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-BMA2YXTZ.js → SwitchField.vue_vue_type_script_setup_true_lang-Ds4q0bbl.js} +1 -1
- package/dist/{TextField.vue_vue_type_script_setup_true_lang-BFVsqcBX.js → TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js} +2 -2
- package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-Dyh4Hhyl.js → TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js} +1 -1
- package/dist/{TimeField.vue_vue_type_script_setup_true_lang-gGFfQLuK.js → TimeField.vue_vue_type_script_setup_true_lang-D-Em4glH.js} +1 -1
- package/dist/UserRecord-Cd1TCpJZ.js +202 -0
- package/dist/UsersList-GJU5-CTG.js +74 -0
- package/dist/access/index.js +4 -4
- package/dist/app/index.js +1 -1
- package/dist/{application-BmXW6iW_.js → application-CuzT-0vW.js} +1 -1
- package/dist/button/index.js +6 -5
- package/dist/collection/PickerModal.vue.d.ts +26 -0
- package/dist/collection/definition.d.ts +6 -6
- package/dist/collection/http.d.ts +6 -6
- package/dist/collection/index.d.ts +5 -1
- package/dist/collection/index.js +144 -85
- package/dist/collection/picker.d.ts +39 -0
- package/dist/collection/types.d.ts +9 -4
- package/dist/collection/useCollection.d.ts +5 -5
- package/dist/content/ActivityStream.vue.d.ts +62 -0
- package/dist/content/CommentThread.vue.d.ts +52 -0
- package/dist/content/Composer.vue.d.ts +36 -0
- package/dist/content/index.d.ts +3 -0
- package/dist/content/index.js +321 -56
- package/dist/controls/index.js +28 -54
- package/dist/form/index.js +132 -134
- package/dist/format/index.d.ts +1 -0
- package/dist/format/index.js +10 -6
- package/dist/format/slug.d.ts +8 -0
- package/dist/highlight-DnYhLXnu.js +9 -0
- package/dist/http-Dm0uXY9O.js +95 -0
- package/dist/i18n/index.d.ts +14 -0
- package/dist/i18n/index.js +87 -63
- package/dist/i18n/plural.d.ts +23 -0
- package/dist/identity/embed.d.ts +39 -0
- package/dist/identity/index.d.ts +20 -0
- package/dist/identity/index.js +40 -21
- package/dist/identity/session.d.ts +9 -1
- package/dist/identity/shared/ChangeFeed.vue.d.ts +6 -3
- package/dist/identity/users/context.d.ts +8 -0
- package/dist/identity/users/dialogs.d.ts +10 -0
- package/dist/identity/users/ext.d.ts +8 -0
- package/dist/identity/users/feature.d.ts +10 -0
- package/dist/identity/users/list.d.ts +1 -1
- package/dist/identity/users/personSections.d.ts +1 -1
- package/dist/identity/users/replace.d.ts +45 -0
- package/dist/identity/users/words.d.ts +28 -0
- package/dist/incidents/api.d.ts +1 -1
- package/dist/incidents/index.js +1 -1
- package/dist/{index-Dz0LkLM8.js → index-CTkG-acm.js} +4 -4
- package/dist/{index-Dm-sdJJr.js → index-DUs7WSz-.js} +31 -32
- package/dist/index-pJ_eRg80.js +1257 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modal/index.js +3 -3
- package/dist/modules/identity/entities.d.ts +7 -0
- package/dist/modules/identity/routes.d.ts +8 -4
- package/dist/modules/identity/schemas.d.ts +16 -0
- package/dist/{neighbors-DVfU9T0o.js → neighbors-OyvGi233.js} +2 -2
- package/dist/notifications/deadletters/list.d.ts +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/{options-QuOkMKVZ.js → options-B48UiYsG.js} +2 -2
- package/dist/page/index.js +11 -11
- package/dist/phone/index.js +1 -1
- package/dist/pwa/AndroidInstallBanner.vue.d.ts +18 -0
- package/dist/pwa/InstallQrSheet.vue.d.ts +21 -0
- package/dist/pwa/IosInstallGuide.vue.d.ts +19 -0
- package/dist/pwa/QrCode.vue.d.ts +16 -0
- package/dist/pwa/index.d.ts +4 -0
- package/dist/pwa/index.js +244 -24
- package/dist/resource/index.js +1 -1
- package/dist/{rowLayout-CT8vWYgI.js → rowLayout-Il4psyXN.js} +183 -188
- package/dist/shell/DarkModeRow.vue.d.ts +15 -0
- package/dist/shell/OfflineNotice.vue.d.ts +2 -0
- package/dist/shell/QuickSearchButton.vue.d.ts +2 -0
- package/dist/shell/QuickSearchPalette.vue.d.ts +12 -0
- package/dist/shell/darkMode.d.ts +26 -0
- package/dist/shell/index.d.ts +10 -0
- package/dist/shell/index.js +963 -580
- package/dist/shell/offlineNotice.d.ts +3 -0
- package/dist/shell/quickSearch.d.ts +14 -0
- package/dist/shell/quickSearchControl.d.ts +66 -0
- package/dist/shortcut-DUR6yPWA.js +93 -0
- package/dist/state/BackgroundTaskCapsule.vue.d.ts +18 -0
- package/dist/state/backgroundTasks.d.ts +58 -0
- package/dist/state/index.d.ts +4 -0
- package/dist/state/index.js +194 -80
- package/dist/state/useCountUp.d.ts +9 -0
- package/dist/styles.css +1 -1
- package/dist/{suggestions-BVQhoXzS.js → suggestions-q_v3M7G6.js} +1 -1
- package/dist/testing/collection.d.ts +1 -1
- package/dist/{useCommand-Dc8Lgs9h.js → useCommand-Ch_nx1AQ.js} +4 -4
- package/dist/{useGroupSheet-DQ6cVG-z.js → useGroupSheet-CPjHydQV.js} +14 -15
- package/dist/{useRecordDialog-BTsbHY38.js → useRecordDialog-DdkauXnU.js} +1 -1
- package/dist/{useResourceForm-DJ4Q75pq.js → useResourceForm-Dl6YFYyz.js} +1 -1
- package/package.json +3 -2
- package/dist/ActionRow.vue_vue_type_script_setup_true_lang-Cg1lhpcA.js +0 -45
- package/dist/Activity-29hsZ28j.js +0 -156
- package/dist/Button.vue_vue_type_script_setup_true_lang-Dp7OB-eF.js +0 -192
- package/dist/Changes-Dxjdkd_5.js +0 -129
- package/dist/FormErrors.vue_vue_type_script_setup_true_lang-CIggKPtq.js +0 -295
- package/dist/FormGroup.vue_vue_type_script_setup_true_lang-B37dixvJ.js +0 -137
- package/dist/PageBar.vue_vue_type_script_setup_true_lang-qI94fjJv.js +0 -47
- package/dist/ProfilePage-BnohZIEg.js +0 -764
- package/dist/ProgressTrack.vue_vue_type_script_setup_true_lang-B6Prw9hi.js +0 -64
- package/dist/SectionIntro.vue_vue_type_script_setup_true_lang-CZtPrmXD.js +0 -23
- package/dist/SessionList.vue_vue_type_script_setup_true_lang-Cnyt5V8T.js +0 -133
- package/dist/SignIns-BcqBgWgN.js +0 -121
- package/dist/UserRecord-CtUPpbCt.js +0 -267
- package/dist/UsersList-BMkIgIg8.js +0 -155
- package/dist/definition-C7QuyV3i.js +0 -54
- package/dist/fieldMessages-B6GHgi40.js +0 -25
- package/dist/http-nz92KjdS.js +0 -42
- package/dist/index-CdtofdcJ.js +0 -501
- package/dist/languages-BShG9LpE.js +0 -10
- package/dist/signInEvents-DWShrJox.js +0 -30
- package/dist/status-BRA14qwX.js +0 -34
- package/dist/useWaitStatus-fsacMl4W.js +0 -24
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PluralizationRule } from "vue-i18n";
|
|
2
|
+
/**
|
|
3
|
+
* Plural rules for the Slavic locales the library ships, ready for `pluralRules` of `createApplication`
|
|
4
|
+
* (or of `createI18n`). vue-i18n picks the form of `t("key", { count })` by the index a rule returns
|
|
5
|
+
* for the number of forms the message has, so the message is written in the order of its layout:
|
|
6
|
+
*
|
|
7
|
+
* | forms | layout | hr, bs, sr-Latn | sl |
|
|
8
|
+
* |-------|-----------------------------------|----------------------------------|-------------------------------|
|
|
9
|
+
* | 2 | one \| other | 1, 21, 101 … / the rest | 1, 101 … / the rest |
|
|
10
|
+
* | 3 | none \| one \| other | 0 / 1, 21 … / the rest | the same |
|
|
11
|
+
* | 4 | none \| one \| few \| other | + 2-4, 22-24 … (not 12-14) | + 2-4, 102-104 … (two is few) |
|
|
12
|
+
* | 5 | none \| one \| two \| few \| other | as 4 (no dual: two is few) | + 2, 102 … / 3-4, 103 … |
|
|
13
|
+
*
|
|
14
|
+
* "{count} osoba | {count} osoba | {count} osobe | {count} osoba" // hr: none | one | few | other
|
|
15
|
+
* createApplication({ pluralRules: slavicPluralRules, … })
|
|
16
|
+
*/
|
|
17
|
+
export type PluralCategory = "none" | "one" | "two" | "few" | "other";
|
|
18
|
+
/** Croatian, Bosnian and Serbian: one (1, 21, 101 …), few (2-4, 22-24 …), other (5-20, 25 …; 111-114 …). */
|
|
19
|
+
export declare const slavicPluralRule: PluralizationRule;
|
|
20
|
+
/** Slovenian: one (1, 101 …), two (2, 102 …), few (3-4, 103-104 …), other (5-100 …); without a dual form two is few. */
|
|
21
|
+
export declare const slovenianPluralRule: PluralizationRule;
|
|
22
|
+
/** The rules of every locale the library ships a Slavic language for, by vue-i18n locale code. */
|
|
23
|
+
export declare const slavicPluralRules: Readonly<Record<"hr" | "bs" | "sr-Latn" | "sl", PluralizationRule>>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type HttpClient } from "../client";
|
|
2
|
+
import { type SessionAdapter, type SessionUser, type UserParser } from "../platform";
|
|
3
|
+
/** Where an embed session keeps its token: the part of `Storage` it uses. */
|
|
4
|
+
export type EmbedStorage = Pick<Storage, "getItem" | "setItem" | "removeItem">;
|
|
5
|
+
export interface EmbedSessionOptions {
|
|
6
|
+
/** Default `sessionStorage`: tab-scoped and same-origin, which a cross-origin iframe's browser (Safari's tracking prevention) still allows where cookies and `localStorage` are blocked. */
|
|
7
|
+
storage?: EmbedStorage;
|
|
8
|
+
/** The storage key of the token. Default `embed_access_token`. */
|
|
9
|
+
tokenKey?: string;
|
|
10
|
+
/** The storage key of the moment the token ends (an ISO date). Default `embed_expires_at`. */
|
|
11
|
+
expiresKey?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A session an iframe's host page hands over as a bearer token (the cookies of an embedded page are blocked): kept in
|
|
15
|
+
* the tab's storage, sent as `Authorization: Bearer`, and not renewable, as there is no refresh token. The page that
|
|
16
|
+
* receives the token calls `start`; everything else is wired by `identityPlatform({ embed })`.
|
|
17
|
+
*/
|
|
18
|
+
export interface EmbedSession {
|
|
19
|
+
/** Keeps the token the server handed out, and the moment it ends. */
|
|
20
|
+
start(token: string, expiresAt: string): void;
|
|
21
|
+
/** Forgets the token: the page goes back to the cookie session, if there is one. */
|
|
22
|
+
end(): void;
|
|
23
|
+
/** The token, or null when there is none (or the storage is not available). */
|
|
24
|
+
token(): string | null;
|
|
25
|
+
/** Whether an embed token is held; the session then cannot be renewed. */
|
|
26
|
+
active(): boolean;
|
|
27
|
+
/** Whether the held token has run out (a missing end counts as run out). */
|
|
28
|
+
expired(): boolean;
|
|
29
|
+
}
|
|
30
|
+
/** The embed session over the tab's storage; a storage that throws (blocked, private mode) reads as no session and keeps nothing. */
|
|
31
|
+
export declare function embedSession(options?: EmbedSessionOptions): EmbedSession;
|
|
32
|
+
/** The headers every request carries for an embed session: the bearer token, or none. */
|
|
33
|
+
export declare const embedHeaders: (embed: EmbedSession) => () => Record<string, string>;
|
|
34
|
+
/**
|
|
35
|
+
* The session adapter while an embed token is held: read with the bearer token (`/auth/me`, no refresh), none when the
|
|
36
|
+
* token ran out or is refused (and then forgotten); sign-out ends the server's session and forgets the token. Without a
|
|
37
|
+
* token it is the cookie session `inner`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function embeddedSessionAdapter<U extends SessionUser>(inner: SessionAdapter<U>, http: HttpClient, parseUser: UserParser<U>, embed: EmbedSession): SessionAdapter<U>;
|
package/dist/identity/index.d.ts
CHANGED
|
@@ -5,9 +5,29 @@ export { identityFeature } from "./feature";
|
|
|
5
5
|
export type { IdentityFeatureOptions } from "./feature";
|
|
6
6
|
export { identityPlatform, identitySessionAdapter } from "./session";
|
|
7
7
|
export type { IdentityPlatformOptions } from "./session";
|
|
8
|
+
export { embedHeaders, embedSession } from "./embed";
|
|
9
|
+
export type { EmbedSession, EmbedSessionOptions, EmbedStorage } from "./embed";
|
|
8
10
|
export { usersFeature } from "./users/feature";
|
|
9
11
|
export type { UsersFeatureOptions } from "./users/feature";
|
|
10
12
|
export type { PersonSection } from "./users/personSections";
|
|
13
|
+
export type { UsersReplace, NewUserDialogHandle, NewUserDialogEmits, DeactivateDialogProps, DeactivateDialogHandle, DeactivateDialogEmits } from "./users/replace";
|
|
14
|
+
export type { ActivityRecord, ChangeDetail, ChangeWords, ChangeWordsFn, Translate } from "./users/words";
|
|
15
|
+
export type { OpenChangeRow } from "./users/ext";
|
|
16
|
+
export { PERSON, personActionsKey, usePersonActions, usePersonSessions } from "./users/person";
|
|
17
|
+
export type { PersonActions } from "./users/person";
|
|
18
|
+
export { useUsersContext } from "./users/context";
|
|
19
|
+
export type { UsersContext } from "./users/context";
|
|
20
|
+
export { useUserDialogs } from "./users/dialogs";
|
|
21
|
+
export { USER_VIEWS, userList } from "./users/list";
|
|
22
|
+
export { default as NewUserDialog } from "./users/NewUserDialog.vue";
|
|
23
|
+
export { default as DeactivateDialog } from "./users/DeactivateDialog.vue";
|
|
24
|
+
export { statusTone } from "./users/status";
|
|
25
|
+
export { default as PageBar } from "./shared/PageBar.vue";
|
|
26
|
+
export { default as SectionIntro } from "./shared/SectionIntro.vue";
|
|
27
|
+
export { default as SessionList } from "./shared/SessionList.vue";
|
|
28
|
+
export { default as SignInList } from "./shared/SignInList.vue";
|
|
29
|
+
export { default as SignInTable } from "./shared/SignInTable.vue";
|
|
30
|
+
export { default as ChangeFeed } from "./shared/ChangeFeed.vue";
|
|
11
31
|
export type { ProfilePanel, ProfileSection } from "./profile/profileSections";
|
|
12
32
|
export { profileRoutes } from "./profile/routes";
|
|
13
33
|
export { usersRoutes } from "./users/routes";
|
package/dist/identity/index.js
CHANGED
|
@@ -1,23 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { _ as
|
|
3
|
-
import { s as
|
|
1
|
+
import { n as a, w as t, x as n, P as o, m as i, k as r, _ as u, v as c, l as d, U as S, y as g, z as A, A as l, B as I, i as R, C as m, h as p, D as y, E as U, t as P, F as f, G as v, H as x, q as D, I as E, J as F, s as b, e as w, j as B, b as C, g as L, d as T, K as _, c as h } from "../index-pJ_eRg80.js";
|
|
2
|
+
import { a as H, _ as K } from "../ActionRow.vue_vue_type_script_setup_true_lang-IpcP3Bjc.js";
|
|
3
|
+
import { s as O } from "../routes-Beyr5NQo.js";
|
|
4
4
|
export {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
i as
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
H as ActionRow,
|
|
6
|
+
a as ChangeFeed,
|
|
7
|
+
t as DeactivateDialog,
|
|
8
|
+
n as NewUserDialog,
|
|
9
|
+
o as PERSON,
|
|
10
|
+
i as PageBar,
|
|
11
|
+
K as SectionIntro,
|
|
12
|
+
r as SessionList,
|
|
13
|
+
u as SignInAsButton,
|
|
14
|
+
c as SignInList,
|
|
15
|
+
d as SignInTable,
|
|
16
|
+
S as USER_VIEWS,
|
|
17
|
+
g as embedHeaders,
|
|
18
|
+
A as embedSession,
|
|
19
|
+
l as identityFeature,
|
|
20
|
+
I as identityPlatform,
|
|
21
|
+
R as identityRoutes,
|
|
22
|
+
m as identitySessionAdapter,
|
|
23
|
+
p as isSessionEnded,
|
|
24
|
+
y as lockedUntil,
|
|
25
|
+
U as parseIdentityUser,
|
|
26
|
+
P as personActionsKey,
|
|
27
|
+
f as profileRoutes,
|
|
28
|
+
v as returnToOwnAccount,
|
|
29
|
+
x as serviceAccountsFeature,
|
|
30
|
+
D as serviceAccountsRoutes,
|
|
31
|
+
O as serviceaccountRoutes,
|
|
32
|
+
E as signIn,
|
|
33
|
+
F as signInAs,
|
|
34
|
+
b as statusTone,
|
|
35
|
+
w as usePersonActions,
|
|
36
|
+
B as usePersonSessions,
|
|
37
|
+
C as useUserDialogs,
|
|
38
|
+
L as useUsersContext,
|
|
39
|
+
T as userList,
|
|
40
|
+
_ as usersFeature,
|
|
41
|
+
h as usersRoutes
|
|
23
42
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type HttpClient } from "../client";
|
|
2
2
|
import { type PlatformOptions, type SessionAdapter, type SessionUser, type UserParser } from "../platform";
|
|
3
3
|
import type { BootstrapConfig } from "../platform";
|
|
4
|
+
import { type EmbedSession } from "./embed";
|
|
4
5
|
import { type IdentityUser } from "./user";
|
|
5
6
|
/**
|
|
6
7
|
* The session over go-core's identity routes: `GET /v1/auth/me`; when that says 401 (the access token ran
|
|
@@ -8,13 +9,20 @@ import { type IdentityUser } from "./user";
|
|
|
8
9
|
*/
|
|
9
10
|
export declare function identitySessionAdapter<U extends SessionUser>(http: HttpClient, parseUser: UserParser<U>): SessionAdapter<U>;
|
|
10
11
|
/** What `createPlatform` is given to run on go-core's identity module. */
|
|
11
|
-
export type IdentityPlatformOptions<U extends SessionUser> = Required<Pick<PlatformOptions<U, BootstrapConfig>, "session" | "renewSession">> & Pick<PlatformOptions<U, BootstrapConfig>, "renewable">;
|
|
12
|
+
export type IdentityPlatformOptions<U extends SessionUser> = Required<Pick<PlatformOptions<U, BootstrapConfig>, "session" | "renewSession">> & Pick<PlatformOptions<U, BootstrapConfig>, "renewable" | "headers" | "onSessionExpired">;
|
|
12
13
|
/** What `identityPlatform` takes. */
|
|
13
14
|
export interface IdentityPlatformInput<U extends SessionUser> {
|
|
14
15
|
/** The application's own user projection; see `identityPlatform`. */
|
|
15
16
|
parseUser?: UserParser<U>;
|
|
16
17
|
/** False while the session has no refresh token (an embed bearer session): nothing renews it, a 401 ends it. See `PlatformOptions.renewable`. */
|
|
17
18
|
renewable?: () => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* A session handed over as a bearer token (an iframe whose cookies are blocked): while one is held the requests carry it,
|
|
21
|
+
* the session is read with it and cannot be renewed, a refused or run-out token is forgotten, and signing out forgets
|
|
22
|
+
* it. It sets `headers` and `onSessionExpired` of the platform, so spread `identityPlatform()` first and, when you set
|
|
23
|
+
* either yourself, keep the embed's part (`embed.end()` on expiry, `embedHeaders(embed)`).
|
|
24
|
+
*/
|
|
25
|
+
embed?: EmbedSession;
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
20
28
|
* The platform options that wire the session to go-core's identity routes: reading it (`/auth/me`, with one
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OpenChangeRow } from "../users/ext";
|
|
2
|
+
import type { ChangeWordsFn } from "../users/words";
|
|
2
3
|
/**
|
|
3
4
|
* What was changed on a person's account, newest first, one sentence per change ("Details changed", "Password changed"),
|
|
4
5
|
* with who did it (by the name the row carries, "somebody else" when the person is gone; nothing when it was the person themselves), what changed from what to what, and when. An action or a
|
|
5
|
-
* field this version does not know reads as a generic one, never as its key; a password is never shown.
|
|
6
|
+
* field this version does not know reads as a generic one, never as its key; a password is never shown. `words` is the
|
|
7
|
+
* application's own wording (`usersFeature({ changeWords })`): its sentence replaces the library's, its details follow them.
|
|
6
8
|
*/
|
|
7
9
|
type __VLS_Props = {
|
|
8
|
-
rows: readonly
|
|
10
|
+
rows: readonly OpenChangeRow[];
|
|
11
|
+
words?: ChangeWordsFn;
|
|
9
12
|
};
|
|
10
13
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
14
|
export default _default;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ProfileSection } from "../profile/profileSections";
|
|
2
2
|
import { type Permission } from "../../platform";
|
|
3
|
+
import type { UsersReplace } from "./replace";
|
|
4
|
+
import type { ActivityRecord, ChangeWordsFn } from "./words";
|
|
3
5
|
/** What the screens of `usersFeature` need from the feature that installed them. */
|
|
4
6
|
export interface UsersContext {
|
|
5
7
|
/** The permission that shows "Sign in as" on a person's record; false leaves it out. */
|
|
@@ -8,5 +10,11 @@ export interface UsersContext {
|
|
|
8
10
|
readonly activityAreas: Readonly<Record<string, string>>;
|
|
9
11
|
/** The panels the application adds to "My profile". */
|
|
10
12
|
readonly profileSections: readonly ProfileSection[];
|
|
13
|
+
/** The screens the application swapped for its own (`useUserDialogs()` resolves the dialogs). */
|
|
14
|
+
readonly replace: UsersReplace;
|
|
15
|
+
/** The records the Activity section names and links, by the server's `record_type`. */
|
|
16
|
+
readonly activityRecords: Readonly<Record<string, ActivityRecord>>;
|
|
17
|
+
/** The application's wording of a change; without it the library's. */
|
|
18
|
+
readonly changeWords: ChangeWordsFn | undefined;
|
|
11
19
|
}
|
|
12
20
|
export declare const usersContextKey: import("vue").InjectionKey<UsersContext>, useUsersContext: () => UsersContext;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Component } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* The New user and Deactivate dialogs the screens use: the application's (`usersFeature({ replace })`) or the library's. A
|
|
4
|
+
* replaced list or record mounts these, so one replacement of a dialog serves every screen. Use them through a template ref
|
|
5
|
+
* (`NewUserDialogHandle`, `DeactivateDialogHandle`).
|
|
6
|
+
*/
|
|
7
|
+
export declare function useUserDialogs(): {
|
|
8
|
+
newUser: Component;
|
|
9
|
+
deactivate: Component;
|
|
10
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ChangeRow } from "../../modules/identity/entities";
|
|
2
|
+
/**
|
|
3
|
+
* A change as the server's change log writes it: go-core's `ChangeRow` (with its `ext`), except that the `action` can be one
|
|
4
|
+
* go-core does not know (a role granted, a binding changed), which the application words with `changeWords`.
|
|
5
|
+
*/
|
|
6
|
+
export type OpenChangeRow = Omit<ChangeRow, "action"> & {
|
|
7
|
+
action: ChangeRow["action"] | (string & {});
|
|
8
|
+
};
|
|
@@ -3,6 +3,8 @@ import type { Permission } from "../../platform";
|
|
|
3
3
|
import type { Destination } from "../../router";
|
|
4
4
|
import type { ProfileSection } from "../profile/profileSections";
|
|
5
5
|
import { type PersonSection } from "./personSections";
|
|
6
|
+
import type { UsersReplace } from "./replace";
|
|
7
|
+
import type { ActivityRecord, ChangeWordsFn } from "./words";
|
|
6
8
|
export interface UsersFeatureOptions {
|
|
7
9
|
/** The users list and a person's record (`/users`), for whoever holds `iam.user:view`. Default true. */
|
|
8
10
|
people?: boolean;
|
|
@@ -18,6 +20,14 @@ export interface UsersFeatureOptions {
|
|
|
18
20
|
profileSections?: readonly ProfileSection[];
|
|
19
21
|
/** The destination of the backend's menu that opens the users list. Without it the application binds the list itself. */
|
|
20
22
|
destination?: Destination;
|
|
23
|
+
/** The base path of the list; a record is `<path>/:id`. Default `/users`. The route names stay (`users.index`, `users.record`), so links by name follow it. */
|
|
24
|
+
path?: `/${string}`;
|
|
25
|
+
/** Whole screens the application swaps for its own, each keeping the contract documented on `UsersReplace`: the list, the details section, the New user and the Deactivate dialogs. */
|
|
26
|
+
replace?: UsersReplace;
|
|
27
|
+
/** What the Activity section calls and links the records the application knows, by the server's `record_type`; an unknown type reads as the type itself. */
|
|
28
|
+
activityRecords?: Readonly<Record<string, ActivityRecord>>;
|
|
29
|
+
/** The application's wording for a change (sentence and details, with links), asked for every row of the Changes section with its `ext`; the library words what it returns nothing for. */
|
|
30
|
+
changeWords?: ChangeWordsFn;
|
|
21
31
|
}
|
|
22
32
|
/**
|
|
23
33
|
* The screens of go-core's users and profile routes, one feature to install:
|
|
@@ -5,4 +5,4 @@ export declare const USER_VIEWS: readonly ["active", "locked", "inactive", "all"
|
|
|
5
5
|
* The list of people, one definition for the list page and for the previous / next of a person's record, so both ask
|
|
6
6
|
* the server the same question. The sorts and views are the ones go-core accepts.
|
|
7
7
|
*/
|
|
8
|
-
export declare function userList(http: HttpClient): import("../../collection").CollectionDefinition<import("..").UserRow, "name" | "email" | "login" | "created_at",
|
|
8
|
+
export declare function userList(http: HttpClient): import("../../collection").CollectionDefinition<import("..").UserRow, "name" | "email" | "login" | "created_at", "last_sign_in", "inactive" | "all" | "locked" | "active", Readonly<Record<string, unknown>>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Component } from "vue";
|
|
2
2
|
import type { RouteRecordRaw } from "vue-router";
|
|
3
|
-
import type { UserDetail } from "../../modules/identity/entities";
|
|
4
3
|
import type { AccessRequirement, RouteSection } from "../../router";
|
|
4
|
+
import type { UserDetail } from "../../modules/identity/entities";
|
|
5
5
|
/**
|
|
6
6
|
* A section the application adds to a person's record (their roles, say), listed after the feature's own. The component
|
|
7
7
|
* gets what `props` makes of the loaded person; `meta` is the section's route meta (its label, icon and `access`).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Component } from "vue";
|
|
2
|
+
import type { UserDetail } from "../../modules/identity/entities";
|
|
3
|
+
/**
|
|
4
|
+
* Whole screens of `usersFeature` an application swaps for its own, with the contract each one keeps. A replacement is
|
|
5
|
+
* mounted where the built-in was, with the same props and events, and finds the same context: `usePlatform()`, the record
|
|
6
|
+
* (`useRouteResourceContext(PERSON)`), the actions (`usePersonActions()`), `useUsersContext()`, the collection (`userList`),
|
|
7
|
+
* and the shared pieces exported beside them.
|
|
8
|
+
*/
|
|
9
|
+
export interface UsersReplace {
|
|
10
|
+
/** The users list, the page of `users.index`. No props. Open the New user dialog with `useUserDialogs().newUser`. */
|
|
11
|
+
readonly list?: Component;
|
|
12
|
+
/** The "Basic details" section of a person's record (`users.record.general`). No props; reads the person with `useRouteResourceContext(PERSON)`, and its save chrome and rows are its own. */
|
|
13
|
+
readonly general?: Component;
|
|
14
|
+
/** The New user dialog: no props, emits `created` with the new person, exposes `create()` (a `NewUserDialogHandle`). */
|
|
15
|
+
readonly newUser?: Component;
|
|
16
|
+
/** The Deactivate dialog: props `DeactivateDialogProps`, emits `done` after it deactivated, exposes `open()` (a `DeactivateDialogHandle`). */
|
|
17
|
+
readonly deactivate?: Component;
|
|
18
|
+
}
|
|
19
|
+
/** What the users list and any other screen call on the New user dialog (`replace.newUser`), through a template ref. */
|
|
20
|
+
export interface NewUserDialogHandle {
|
|
21
|
+
/** Opens the dialog on an empty form. */
|
|
22
|
+
create(): void;
|
|
23
|
+
}
|
|
24
|
+
/** The events of the New user dialog. */
|
|
25
|
+
export interface NewUserDialogEmits {
|
|
26
|
+
/** The person was created; the list opens their record. */
|
|
27
|
+
created: [user: UserDetail];
|
|
28
|
+
}
|
|
29
|
+
/** The props of the Deactivate dialog (`replace.deactivate`). */
|
|
30
|
+
export interface DeactivateDialogProps {
|
|
31
|
+
readonly id: number;
|
|
32
|
+
readonly name: string;
|
|
33
|
+
/** How many sessions the person has now; null while they are being counted. */
|
|
34
|
+
readonly sessionCount: number | null;
|
|
35
|
+
}
|
|
36
|
+
/** What the record page calls on the Deactivate dialog. */
|
|
37
|
+
export interface DeactivateDialogHandle {
|
|
38
|
+
/** Opens the dialog. */
|
|
39
|
+
open(): void;
|
|
40
|
+
}
|
|
41
|
+
/** The events of the Deactivate dialog. */
|
|
42
|
+
export interface DeactivateDialogEmits {
|
|
43
|
+
/** The person was deactivated; the record reloads. */
|
|
44
|
+
done: [];
|
|
45
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RouteLocationRaw } from "vue-router";
|
|
2
|
+
import type { OpenChangeRow } from "./ext";
|
|
3
|
+
/** Where the Activity section sends a record the application knows: its name (an i18n key) and, when it has a page, the link. */
|
|
4
|
+
export interface ActivityRecord {
|
|
5
|
+
/** The i18n key of the kind of record ("Lead"); shown instead of the server's `record_type`. */
|
|
6
|
+
readonly labelKey: string;
|
|
7
|
+
/** The page of the record with this id; without it the row names the record and does not link. */
|
|
8
|
+
readonly to?: (id: number) => RouteLocationRaw;
|
|
9
|
+
}
|
|
10
|
+
/** A piece of a change's details: plain text, or text that links (a hand-over recipient, a binding). */
|
|
11
|
+
export type ChangeDetail = string | {
|
|
12
|
+
readonly text: string;
|
|
13
|
+
readonly to: RouteLocationRaw;
|
|
14
|
+
};
|
|
15
|
+
/** What the application says about one change in the Changes section; every part left out keeps the library's wording. */
|
|
16
|
+
export interface ChangeWords {
|
|
17
|
+
/** The sentence ("Role granted"), already translated. */
|
|
18
|
+
readonly sentence?: string;
|
|
19
|
+
/** Details after the library's own ("Dealer: A to B"). */
|
|
20
|
+
readonly details?: readonly ChangeDetail[];
|
|
21
|
+
}
|
|
22
|
+
/** `t` as `useI18n()` gives it. */
|
|
23
|
+
export type Translate = (key: string, named?: Record<string, unknown>) => string;
|
|
24
|
+
/**
|
|
25
|
+
* The application's wording for a change: asked for every row (with its `ext`, as the server's change log wrote it); return
|
|
26
|
+
* `undefined` for a row the library already words well. Used by `usersFeature({ changeWords })`.
|
|
27
|
+
*/
|
|
28
|
+
export type ChangeWordsFn = (row: OpenChangeRow, t: Translate) => ChangeWords | undefined;
|
package/dist/incidents/api.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { CommentRequest, ReportInput, UpdateRequest } from "../modules/inci
|
|
|
4
4
|
export type IncidentSort = "title" | "last_seen_at";
|
|
5
5
|
export type IncidentFilter = "created_at" | "status" | "severity" | "source";
|
|
6
6
|
/** The incident list: last seen first. Made over the platform's client, in `setup`; the list and the record's previous / next share its id. */
|
|
7
|
-
export declare function incidentList(http: HttpClient): import("../collection").CollectionDefinition<Incident, IncidentSort, IncidentFilter, string
|
|
7
|
+
export declare function incidentList(http: HttpClient): import("../collection").CollectionDefinition<Incident, IncidentSort, IncidentFilter, string, Readonly<Record<string, unknown>>>;
|
|
8
8
|
/** An incident's page: the incident, the user reports behind it and its comments, from one read. */
|
|
9
9
|
export interface IncidentDetail {
|
|
10
10
|
readonly incident: Incident;
|
package/dist/incidents/index.js
CHANGED
|
@@ -12,10 +12,10 @@ import { _ as ke } from "./Sheet.vue_vue_type_script_setup_true_lang-B91aRD_y.js
|
|
|
12
12
|
import { _ as Se } from "./Popover.vue_vue_type_script_setup_true_lang-C20Hf3Hl.js";
|
|
13
13
|
import { _ as J } from "./HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js";
|
|
14
14
|
import { useRouter as Te } from "vue-router";
|
|
15
|
-
import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-
|
|
15
|
+
import { _ as K } from "./Button.vue_vue_type_script_setup_true_lang-C74hcb0N.js";
|
|
16
16
|
import { u as Ee } from "./format-D8KUBmbS.js";
|
|
17
17
|
import { _ as Pe } from "./Icon.vue_vue_type_script_lang-BhhsFYwp.js";
|
|
18
|
-
import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-
|
|
18
|
+
import { _ as Ce } from "./AsyncSection.vue_vue_type_script_setup_true_lang-DGzQ-Snp.js";
|
|
19
19
|
const E = {
|
|
20
20
|
list: v("GET", "/v1/notifications"),
|
|
21
21
|
unread: v("GET", "/v1/notifications/unread"),
|
|
@@ -135,9 +135,9 @@ function Me(n = ee().http, t = W()) {
|
|
|
135
135
|
return { state: $(e), hash: $(i), busy: $(a), inspect: c, enable: u, disable: g };
|
|
136
136
|
}
|
|
137
137
|
const Ne = "events.deadletter:view", $t = "events.deadletter:retry", Y = te({
|
|
138
|
-
index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-
|
|
138
|
+
index: { name: "events.deadletters", path: "/events/dead-letters", component: () => import("./DeadLetters-BP03yC4R.js"), meta: { access: Ne, titleKey: "core.notifications.dead_letters.title" } }
|
|
139
139
|
}), j = te({
|
|
140
|
-
index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-
|
|
140
|
+
index: { name: "notifications.settings", path: "/profile/notifications", component: () => import("./SettingsPage-DUhMsYBf.js"), meta: { titleKey: "core.notifications.settings.title" } }
|
|
141
141
|
}), Oe = /* @__PURE__ */ q({
|
|
142
142
|
__name: "SettingsMenuItem",
|
|
143
143
|
setup(n) {
|
|
@@ -3,18 +3,17 @@ import { d as V, p as U } from "./feature-DdUAfyi4.js";
|
|
|
3
3
|
import { defineComponent as A, computed as O, onMounted as L, watch as B, openBlock as S, createBlock as y, unref as e, withCtx as I, createElementVNode as X, createVNode as c, mergeProps as d, createCommentVNode as R, ref as F } from "vue";
|
|
4
4
|
import { d as j } from "./context-Ch1r4fdN.js";
|
|
5
5
|
import { useI18n as P } from "vue-i18n";
|
|
6
|
-
import {
|
|
7
|
-
import { _ as G } from "./SelectField.vue_vue_type_script_setup_true_lang-
|
|
8
|
-
import { _ as g } from "./TextareaField.vue_vue_type_script_setup_true_lang-
|
|
9
|
-
import { _ as E } from "./TextField.vue_vue_type_script_setup_true_lang-
|
|
10
|
-
import { u as K, _ as z } from "./useCommand-
|
|
6
|
+
import { a as N } from "./FormGroup.vue_vue_type_script_setup_true_lang-D6jYfNjW.js";
|
|
7
|
+
import { _ as G } from "./SelectField.vue_vue_type_script_setup_true_lang-BZwdANL3.js";
|
|
8
|
+
import { _ as g } from "./TextareaField.vue_vue_type_script_setup_true_lang-D2j4s96s.js";
|
|
9
|
+
import { _ as E } from "./TextField.vue_vue_type_script_setup_true_lang-CWIeeZRE.js";
|
|
10
|
+
import { u as K, _ as z } from "./useCommand-Ch_nx1AQ.js";
|
|
11
11
|
import { t as H } from "./toast-CqSDTWRX.js";
|
|
12
12
|
import { u as k } from "./platform-BQOX_Ntw.js";
|
|
13
|
-
import { d as Q } from "./
|
|
14
|
-
import { r as W, l as Y } from "./http-nz92KjdS.js";
|
|
13
|
+
import { d as Q, r as W, l as Y } from "./http-Dm0uXY9O.js";
|
|
15
14
|
import { _ as J } from "./AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js";
|
|
16
15
|
import { d as Z } from "./defineRoutes-BGAdiIrt.js";
|
|
17
|
-
import { d as ee } from "./application-
|
|
16
|
+
import { d as ee } from "./application-CuzT-0vW.js";
|
|
18
17
|
import { R as te } from "./client-Dg303Pmc.js";
|
|
19
18
|
import { a as ne } from "./error-CD7x0Jrz.js";
|
|
20
19
|
const v = {
|
|
@@ -25,8 +24,8 @@ const v = {
|
|
|
25
24
|
comment: p("POST", "/v1/incidents/:incidentID/comments", { permission: "incident:create" }),
|
|
26
25
|
update: p("PATCH", "/v1/incidents/:incidentID", { permission: "incident:update" }),
|
|
27
26
|
clientError: p("POST", "/v1/incidents/client-errors")
|
|
28
|
-
}, [ie, C] = j("vue-core.incidents"), q = "incident:view", se = "incident:create",
|
|
29
|
-
function
|
|
27
|
+
}, [ie, C] = j("vue-core.incidents"), q = "incident:view", se = "incident:create", Fe = "incident:update", re = "incident:manage";
|
|
28
|
+
function je(t) {
|
|
30
29
|
return Q({
|
|
31
30
|
id: "incidents",
|
|
32
31
|
stateVersion: 1,
|
|
@@ -77,8 +76,8 @@ function de(t) {
|
|
|
77
76
|
extra_json: ""
|
|
78
77
|
};
|
|
79
78
|
}
|
|
80
|
-
const
|
|
81
|
-
function
|
|
79
|
+
const Ge = () => ({ body: "", visibility: "public" });
|
|
80
|
+
function Ke() {
|
|
82
81
|
return {
|
|
83
82
|
status: "",
|
|
84
83
|
severity: "",
|
|
@@ -91,7 +90,7 @@ function ze() {
|
|
|
91
90
|
external_ticket_url: ""
|
|
92
91
|
};
|
|
93
92
|
}
|
|
94
|
-
function
|
|
93
|
+
function ze({ incident: t }) {
|
|
95
94
|
return {
|
|
96
95
|
status: t.status,
|
|
97
96
|
severity: t.severity,
|
|
@@ -104,7 +103,7 @@ function He({ incident: t }) {
|
|
|
104
103
|
external_ticket_url: t.external_ticket_url ?? ""
|
|
105
104
|
};
|
|
106
105
|
}
|
|
107
|
-
const
|
|
106
|
+
const He = {
|
|
108
107
|
new: "core.incidents.statuses.new",
|
|
109
108
|
triaged: "core.incidents.statuses.triaged",
|
|
110
109
|
in_progress: "core.incidents.statuses.in_progress",
|
|
@@ -116,19 +115,19 @@ const Qe = {
|
|
|
116
115
|
medium: "core.incidents.severities.medium",
|
|
117
116
|
high: "core.incidents.severities.high",
|
|
118
117
|
critical: "core.incidents.severities.critical"
|
|
119
|
-
},
|
|
118
|
+
}, Qe = {
|
|
120
119
|
user_report: "core.incidents.sources.user_report",
|
|
121
120
|
runtime_error: "core.incidents.sources.runtime_error",
|
|
122
121
|
client_error: "core.incidents.sources.client_error",
|
|
123
122
|
mixed: "core.incidents.sources.mixed"
|
|
124
|
-
},
|
|
123
|
+
}, We = {
|
|
125
124
|
new: "info",
|
|
126
125
|
triaged: "warning",
|
|
127
126
|
in_progress: "warning",
|
|
128
127
|
resolved: "positive",
|
|
129
128
|
ignored: "neutral",
|
|
130
129
|
duplicate: "neutral"
|
|
131
|
-
},
|
|
130
|
+
}, Ye = {
|
|
132
131
|
low: "neutral",
|
|
133
132
|
medium: "info",
|
|
134
133
|
high: "warning",
|
|
@@ -263,16 +262,16 @@ const Qe = {
|
|
|
263
262
|
}, null, 8, ["label"])) : R("", !0);
|
|
264
263
|
}
|
|
265
264
|
}), M = Z({
|
|
266
|
-
index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-
|
|
265
|
+
index: { name: "incidents.index", path: "/incidents", component: () => import("./IncidentsList-COgRPdk3.js"), meta: { access: q, titleKey: "core.incidents.title" } },
|
|
267
266
|
details: {
|
|
268
267
|
name: "incidents.details",
|
|
269
268
|
path: "/incidents/:incidentID",
|
|
270
|
-
component: () => import("./IncidentRecord-
|
|
269
|
+
component: () => import("./IncidentRecord-DEhl6AyA.js"),
|
|
271
270
|
// Previous / next record swaps the id in place.
|
|
272
271
|
meta: { access: q, titleKey: "core.incidents.title", remountOnParam: "incidentID" }
|
|
273
272
|
}
|
|
274
273
|
});
|
|
275
|
-
function
|
|
274
|
+
function Je(t = {}) {
|
|
276
275
|
return V({
|
|
277
276
|
id: "incidents",
|
|
278
277
|
routes: M.records,
|
|
@@ -286,7 +285,7 @@ function Ze(t = {}) {
|
|
|
286
285
|
}
|
|
287
286
|
const fe = 2e3, ge = 2e4, be = 255, ve = 500, he = 100, xe = 100, Ee = 20, we = /* @__PURE__ */ new Set(["vue", "unhandledrejection", "window"]), b = (t, n) => t.slice(0, n), Se = (t) => /^script error\.?$/i.test(t.trim()), ye = (t) => t.split(`
|
|
288
287
|
`).find((n) => /^\s*at\s|@\S/.test(n))?.trim() ?? "";
|
|
289
|
-
function
|
|
288
|
+
function Ze(t) {
|
|
290
289
|
const { platform: n, appVersion: s = "", onError: r = ee } = t, o = /* @__PURE__ */ new Set();
|
|
291
290
|
function i(l) {
|
|
292
291
|
const { error: u } = l;
|
|
@@ -319,22 +318,22 @@ ${ye(x)}`;
|
|
|
319
318
|
export {
|
|
320
319
|
se as C,
|
|
321
320
|
re as M,
|
|
322
|
-
|
|
323
|
-
|
|
321
|
+
Qe as S,
|
|
322
|
+
Fe as U,
|
|
324
323
|
me as _,
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
324
|
+
je as a,
|
|
325
|
+
We as b,
|
|
326
|
+
He as c,
|
|
327
|
+
Ye as d,
|
|
329
328
|
le as e,
|
|
330
|
-
|
|
331
|
-
|
|
329
|
+
Ke as f,
|
|
330
|
+
Ge as g,
|
|
332
331
|
Ee as h,
|
|
333
332
|
M as i,
|
|
334
|
-
|
|
333
|
+
Ze as j,
|
|
335
334
|
v as k,
|
|
336
|
-
|
|
337
|
-
|
|
335
|
+
Je as l,
|
|
336
|
+
ze as m,
|
|
338
337
|
ce as r,
|
|
339
338
|
ae as u
|
|
340
339
|
};
|