@happyvertical/smrt-users 0.43.10 → 0.44.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/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as MembershipCollection, A as UserEmailKeyBackfillError, B as PermissionCatalogService, C as decodeOidcTransaction, Ct as SessionStatus, Dt as UsersCliAuthRequest, E as resolveOidcProviderConfig, Et as UserStatus, F as TenantHierarchyError, G as syncPermissionCatalog, H as deriveOperationPermissionSlug, I as MAX_TENANT_HIERARCHY_DEPTH, J as Role, K as RolePermission, L as Tenant, M as TenantPermissionOverrideCollection, N as TenantPermissionOverride, O as OidcProvisioningError, P as TenantCollection, Q as MembershipOverride, R as DEFAULT_ROLE_PERMISSION_PATTERNS, S as OidcLoginService, St as OverrideEffect, T as getUsersOidcConfig, Tt as TenantStatus, U as normalizeOperationPermissionAction, V as deriveOperationPermissionCollectionName, W as registerPermissionDefinitions, X as Permission, Y as PermissionCollection, Z as MembershipOverrideCollection, _ as readMobileBearerToken, _t as AccessRequestStatus, a as TerminalAuthRateLimitError, at as GroupCollection, b as PermissionResolver, bt as DEFAULT_TENANT_POLICY, c as assertOperationPermission, ct as UsersCliAuthApproveLimit, d as getCurrentSessionPermissionContext, dt as normalizeEmail, et as Membership, f as getRequestScopedDatabase, ft as UsersCliAuthRequestCollection, g as MobileAuthService, gt as generateSessionId, h as MobileAuthError, ht as Session, i as TerminalAuthError, it as GroupMember, j as backfillUserEmailKeys, k as UserCollection, l as checkOperationPermission, lt as User, m as withSessionPermissionContext, mt as DEFAULT_SESSION_TTL, n as DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, nt as GroupRole, o as TerminalAuthService, ot as Group, p as withPrincipalPermissionContext, pt as SessionCollection, q as RoleCollection, r as DEFAULT_CLI_SESSION_TTL_SECONDS, rt as GroupMemberCollection, s as OperationPermissionError, st as UsersCliAuthApproveLimitCollection, t as DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, tt as GroupRoleCollection, u as hasOperationPermission, ut as isValidEmail, v as validateMobileRedirectUri, vt as DEFAULT_ROLES, w as encodeOidcTransaction, wt as TenantPermissionEffect, x as OidcLoginError, xt as MembershipStatus, y as SessionService, yt as DEFAULT_ROLE_SLUGS, z as RolePermissionCollection } from "./chunks/TerminalAuthService-CN8ATZwO.js";
1
+ import { $ as MembershipCollection, A as UserEmailKeyBackfillError, B as PermissionCatalogService, C as decodeOidcTransaction, Ct as SessionStatus, Dt as UsersCliAuthRequest, E as resolveOidcProviderConfig, Et as UserStatus, F as TenantHierarchyError, G as syncPermissionCatalog, H as deriveOperationPermissionSlug, I as MAX_TENANT_HIERARCHY_DEPTH, J as Role, K as RolePermission, L as Tenant, M as TenantPermissionOverrideCollection, N as TenantPermissionOverride, O as OidcProvisioningError, P as TenantCollection, Q as MembershipOverride, R as DEFAULT_ROLE_PERMISSION_PATTERNS, S as OidcLoginService, St as OverrideEffect, T as getUsersOidcConfig, Tt as TenantStatus, U as normalizeOperationPermissionAction, V as deriveOperationPermissionCollectionName, W as registerPermissionDefinitions, X as Permission, Y as PermissionCollection, Z as MembershipOverrideCollection, _ as readMobileBearerToken, _t as AccessRequestStatus, a as TerminalAuthRateLimitError, at as GroupCollection, b as PermissionResolver, bt as DEFAULT_TENANT_POLICY, c as assertOperationPermission, ct as UsersCliAuthApproveLimit, d as getCurrentSessionPermissionContext, dt as normalizeEmail, et as Membership, f as getRequestScopedDatabase, ft as UsersCliAuthRequestCollection, g as MobileAuthService, gt as generateSessionId, h as MobileAuthError, ht as Session, i as TerminalAuthError, it as GroupMember, j as backfillUserEmailKeys, k as UserCollection, l as checkOperationPermission, lt as User, m as withSessionPermissionContext, mt as DEFAULT_SESSION_TTL, n as DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, nt as GroupRole, o as TerminalAuthService, ot as Group, p as withPrincipalPermissionContext, pt as SessionCollection, q as RoleCollection, r as DEFAULT_CLI_SESSION_TTL_SECONDS, rt as GroupMemberCollection, s as OperationPermissionError, st as UsersCliAuthApproveLimitCollection, t as DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, tt as GroupRoleCollection, u as hasOperationPermission, ut as isValidEmail, v as validateMobileRedirectUri, vt as DEFAULT_ROLES, w as encodeOidcTransaction, wt as TenantPermissionEffect, x as OidcLoginError, xt as MembershipStatus, y as SessionService, yt as DEFAULT_ROLE_SLUGS, z as RolePermissionCollection } from "./chunks/TerminalAuthService-BZ2GaC1d.js";
2
2
  import { ObjectRegistry, SmrtCollection, SmrtObject, field, findManifestEntryByQualifiedName, isUniqueViolationError, registerRetentionTask, smrt, unregisterRetentionTask } from "@happyvertical/smrt-core";
3
3
  import { createHash } from "node:crypto";
4
4
  import { TenantScoped, tenantId } from "@happyvertical/smrt-tenancy";
@@ -953,7 +953,7 @@ var MagicLinkService = class MagicLinkService {
953
953
  * The caller is responsible for emailing the token to the user.
954
954
  */
955
955
  async generate(email) {
956
- const { SignJWT } = await import("./chunks/TerminalAuthService-CN8ATZwO.js").then((n) => n.D);
956
+ const { SignJWT } = await import("./chunks/TerminalAuthService-BZ2GaC1d.js").then((n) => n.D);
957
957
  const key = await this.getSigningKey();
958
958
  const nonce = crypto.randomUUID();
959
959
  const normalizedEmail = normalizeEmail(email);
@@ -982,7 +982,7 @@ var MagicLinkService = class MagicLinkService {
982
982
  * @throws {MagicLinkError} If the token is invalid, expired, or already used
983
983
  */
984
984
  async verify(token) {
985
- const { jwtVerify, errors } = await import("./chunks/TerminalAuthService-CN8ATZwO.js").then((n) => n.D);
985
+ const { jwtVerify, errors } = await import("./chunks/TerminalAuthService-BZ2GaC1d.js").then((n) => n.D);
986
986
  const key = await this.getSigningKey();
987
987
  let payload;
988
988
  try {
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-users",
5
- "packageVersion": "0.43.10",
5
+ "packageVersion": "0.44.0",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-users:AccessRequestCollection": {
8
8
  "name": "accessrequestcollection",
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-users",
6
- "packageVersion": "0.43.10",
6
+ "packageVersion": "0.44.0",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "5e87ecd4259a6686e8c8efbcddfa48d67db94f597cc83a0b275db8f3b3da55af",
11
- "packageJson": "db3a06d9f9d9bde10bf2159318417e1b6f2395b92665105a7a487563a8c1230b",
10
+ "manifest": "3fe1b292403152b837c996a7483f6382de097649a06d9ca72601da6985b1a1c0",
11
+ "packageJson": "fc28dfd3bfbc0c42daf4809d2b0532379b764ed82d4165c19dc1b16e4ba2db0f",
12
12
  "agents": "0b36b90b6859635caf8854d833f6b89a494e4b55d538fd3597bc03d8dc8b3234",
13
13
  "moduleDoc:agents/retention.md": "425c0a34ed33969badfef699751bfa670bdf618eda65e079e00815620aabed68"
14
14
  },
@@ -10,15 +10,21 @@ import { M } from '../i18n.js';
10
10
  const { t } = useI18n();
11
11
 
12
12
  export interface Props {
13
+ /** Controls whether the invitation modal is visible. */
13
14
  open: boolean;
15
+ /** Tenant context for the invitation. */
14
16
  tenant: Tenant;
17
+ /** Available roles that can be assigned to the invited user. */
15
18
  roles: Role[];
19
+ /** Callback invoked with email, role, and send preference when form is submitted. */
16
20
  onsubmit: (data: {
17
21
  email: string;
18
22
  roleId: string;
19
23
  sendEmail: boolean;
20
24
  }) => void;
25
+ /** Callback invoked to close the invitation modal. */
21
26
  onclose: () => void;
27
+ /** Blocks form submission while invitation is being processed. */
22
28
  loading?: boolean;
23
29
  }
24
30
 
@@ -1,14 +1,20 @@
1
1
  import type { Role, Tenant } from '@happyvertical/smrt-users';
2
2
  export interface Props {
3
+ /** Controls whether the invitation modal is visible. */
3
4
  open: boolean;
5
+ /** Tenant context for the invitation. */
4
6
  tenant: Tenant;
7
+ /** Available roles that can be assigned to the invited user. */
5
8
  roles: Role[];
9
+ /** Callback invoked with email, role, and send preference when form is submitted. */
6
10
  onsubmit: (data: {
7
11
  email: string;
8
12
  roleId: string;
9
13
  sendEmail: boolean;
10
14
  }) => void;
15
+ /** Callback invoked to close the invitation modal. */
11
16
  onclose: () => void;
17
+ /** Blocks form submission while invitation is being processed. */
12
18
  loading?: boolean;
13
19
  }
14
20
  declare const InviteUserModal: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"InviteUserModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/InviteUserModal.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,KAAK,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgHD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"InviteUserModal.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/InviteUserModal.svelte.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAI9D,MAAM,WAAW,KAAK;IACpB,wDAAwD;IACxD,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,qFAAqF;IACrF,QAAQ,EAAE,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB,KAAK,IAAI,CAAC;IACX,sDAAsD;IACtD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgHD,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -2,8 +2,11 @@
2
2
  import type { Profile } from '@happyvertical/smrt-profiles';
3
3
 
4
4
  export interface Props {
5
+ /** User profile containing name and avatar details. */
5
6
  profile: Profile;
7
+ /** Avatar size: sm, md, lg, or xl. */
6
8
  size?: 'sm' | 'md' | 'lg' | 'xl';
9
+ /** Displays the user's name next to the avatar. */
7
10
  showName?: boolean;
8
11
  }
9
12
 
@@ -1,7 +1,10 @@
1
1
  import type { Profile } from '@happyvertical/smrt-profiles';
2
2
  export interface Props {
3
+ /** User profile containing name and avatar details. */
3
4
  profile: Profile;
5
+ /** Avatar size: sm, md, lg, or xl. */
4
6
  size?: 'sm' | 'md' | 'lg' | 'xl';
7
+ /** Displays the user's name next to the avatar. */
5
8
  showName?: boolean;
6
9
  }
7
10
  declare const UserAvatar: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"UserAvatar.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserAvatar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAG5D,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4DD,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"UserAvatar.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserAvatar.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAG5D,MAAM,WAAW,KAAK;IACpB,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4DD,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -9,11 +9,17 @@ import type { User } from '@happyvertical/smrt-users';
9
9
  import UserAvatar from './UserAvatar.svelte';
10
10
 
11
11
  export interface Props {
12
+ /** User account containing email and identification. */
12
13
  user: User;
14
+ /** User profile containing name and avatar data. */
13
15
  profile: Profile;
16
+ /** User's role or position title. */
14
17
  role?: string;
18
+ /** User status (active, pending, suspended, or inactive). */
15
19
  status?: string;
20
+ /** Callback invoked when the card is clicked. */
16
21
  onclick?: () => void;
22
+ /** Indicates whether the card is in a selected state. */
17
23
  selected?: boolean;
18
24
  }
19
25
 
@@ -5,11 +5,17 @@
5
5
  import type { Profile } from '@happyvertical/smrt-profiles';
6
6
  import type { User } from '@happyvertical/smrt-users';
7
7
  export interface Props {
8
+ /** User account containing email and identification. */
8
9
  user: User;
10
+ /** User profile containing name and avatar data. */
9
11
  profile: Profile;
12
+ /** User's role or position title. */
10
13
  role?: string;
14
+ /** User status (active, pending, suspended, or inactive). */
11
15
  status?: string;
16
+ /** Callback invoked when the card is clicked. */
12
17
  onclick?: () => void;
18
+ /** Indicates whether the card is in a selected state. */
13
19
  selected?: boolean;
14
20
  }
15
21
  declare const UserCard: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"UserCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserCard.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyDD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserCard.svelte.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,wDAAwD;IACxD,IAAI,EAAE,IAAI,CAAC;IACX,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyDD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -10,10 +10,15 @@ import { M } from '../i18n.js';
10
10
  const { t } = useI18n();
11
11
 
12
12
  export interface Props {
13
+ /** Optional user account for editing; null creates a new user. */
13
14
  user?: User | null;
15
+ /** Optional user profile for editing. */
14
16
  profile?: Profile | null;
17
+ /** Callback invoked with name, email, and status when form is submitted. */
15
18
  onsubmit: (data: { name: string; email: string; status: UserStatus }) => void;
19
+ /** Callback invoked when the form is canceled. */
16
20
  oncancel?: () => void;
21
+ /** Blocks form input while user changes are being processed. */
17
22
  loading?: boolean;
18
23
  }
19
24
 
@@ -2,14 +2,19 @@ import type { Profile } from '@happyvertical/smrt-profiles';
2
2
  import { UserStatus } from '@happyvertical/smrt-types';
3
3
  import type { User } from '@happyvertical/smrt-users';
4
4
  export interface Props {
5
+ /** Optional user account for editing; null creates a new user. */
5
6
  user?: User | null;
7
+ /** Optional user profile for editing. */
6
8
  profile?: Profile | null;
9
+ /** Callback invoked with name, email, and status when form is submitted. */
7
10
  onsubmit: (data: {
8
11
  name: string;
9
12
  email: string;
10
13
  status: UserStatus;
11
14
  }) => void;
15
+ /** Callback invoked when the form is canceled. */
12
16
  oncancel?: () => void;
17
+ /** Blocks form input while user changes are being processed. */
13
18
  loading?: boolean;
14
19
  }
15
20
  declare const UserForm: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"UserForm.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserForm.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0GD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserForm.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserForm.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAItD,MAAM,WAAW,KAAK;IACpB,kEAAkE;IAClE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9E,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA0GD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -15,11 +15,17 @@ interface UserWithProfile {
15
15
  }
16
16
 
17
17
  export interface Props {
18
+ /** Array of users with profiles to display. */
18
19
  users: UserWithProfile[];
20
+ /** ID of the currently selected user. */
19
21
  selectedId?: string | null;
22
+ /** Callback invoked with the user when a user is selected. */
20
23
  onselect?: (user: User) => void;
24
+ /** Message displayed when the user list is empty. */
21
25
  emptyMessage?: string;
26
+ /** Optional snippet to render a custom empty state. */
22
27
  empty?: Snippet;
28
+ /** Shows a loading spinner while users are being fetched. */
23
29
  loading?: boolean;
24
30
  }
25
31
 
@@ -7,11 +7,17 @@ interface UserWithProfile {
7
7
  role?: string;
8
8
  }
9
9
  export interface Props {
10
+ /** Array of users with profiles to display. */
10
11
  users: UserWithProfile[];
12
+ /** ID of the currently selected user. */
11
13
  selectedId?: string | null;
14
+ /** Callback invoked with the user when a user is selected. */
12
15
  onselect?: (user: User) => void;
16
+ /** Message displayed when the user list is empty. */
13
17
  emptyMessage?: string;
18
+ /** Optional snippet to render a custom empty state. */
14
19
  empty?: Snippet;
20
+ /** Shows a loading spinner while users are being fetched. */
15
21
  loading?: boolean;
16
22
  }
17
23
  declare const UserList: import("svelte").Component<Props, {}, "">;
@@ -1 +1 @@
1
- {"version":3,"file":"UserList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserList.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAKtC,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA8CD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"UserList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/UserList.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAKtC,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,+CAA+C;IAC/C,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA8CD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
package/dist/sveltekit.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as decodeOidcTransaction, E as resolveOidcProviderConfig, S as OidcLoginService, T as getUsersOidcConfig, _ as readMobileBearerToken, a as TerminalAuthRateLimitError, g as MobileAuthService, h as MobileAuthError, i as TerminalAuthError, m as withSessionPermissionContext, o as TerminalAuthService, s as OperationPermissionError, v as validateMobileRedirectUri, w as encodeOidcTransaction, x as OidcLoginError, y as SessionService } from "./chunks/TerminalAuthService-CN8ATZwO.js";
1
+ import { C as decodeOidcTransaction, E as resolveOidcProviderConfig, S as OidcLoginService, T as getUsersOidcConfig, _ as readMobileBearerToken, a as TerminalAuthRateLimitError, g as MobileAuthService, h as MobileAuthError, i as TerminalAuthError, m as withSessionPermissionContext, o as TerminalAuthService, s as OperationPermissionError, v as validateMobileRedirectUri, w as encodeOidcTransaction, x as OidcLoginError, y as SessionService } from "./chunks/TerminalAuthService-BZ2GaC1d.js";
2
2
  import { DiscoveryArtifactValidationError, SMRT_APP_RESULT_CONTRACT, SMRT_APP_RESULT_SCHEMA, SMRT_APP_RESULT_VERSION, SMRT_DISCOVERY_CONFORMANCE_ARTIFACT_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_VERSION, SMRT_MCP_RESULT_METADATA_KEY, canonicalizeDiscoveryArtifact, createDiscoveryConformanceArtifact, deriveCommandRequirements, validateDiscoveryConformanceArtifact } from "./app-contract.js";
3
3
  import { ObjectRegistry } from "@happyvertical/smrt-core";
4
4
  import { createLogger } from "@happyvertical/logger";
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-users",
3
- "version": "0.43.10",
3
+ "version": "0.44.0",
4
+ "smrtJsdoc": "strict",
4
5
  "description": "Multi-tenant user management for the SMRT framework - users, tenants, roles, permissions, groups",
5
6
  "type": "module",
6
7
  "smrtRawPrimitives": "strict",
@@ -48,13 +49,13 @@
48
49
  "@happyvertical/logger": "^0.89.4",
49
50
  "@happyvertical/sql": "^0.89.4",
50
51
  "jose": "^6.2.3",
51
- "@happyvertical/smrt-config": "0.43.10",
52
- "@happyvertical/smrt-mobile-contract": "0.43.10",
53
- "@happyvertical/smrt-profiles": "0.43.10",
54
- "@happyvertical/smrt-core": "0.43.10",
55
- "@happyvertical/smrt-types": "0.43.10",
56
- "@happyvertical/smrt-tenancy": "0.43.10",
57
- "@happyvertical/smrt-ui": "0.43.10"
52
+ "@happyvertical/smrt-config": "0.44.0",
53
+ "@happyvertical/smrt-core": "0.44.0",
54
+ "@happyvertical/smrt-mobile-contract": "0.44.0",
55
+ "@happyvertical/smrt-tenancy": "0.44.0",
56
+ "@happyvertical/smrt-profiles": "0.44.0",
57
+ "@happyvertical/smrt-types": "0.44.0",
58
+ "@happyvertical/smrt-ui": "0.44.0"
58
59
  },
59
60
  "devDependencies": {
60
61
  "@sveltejs/package": "^2.5.8",
@@ -66,7 +67,7 @@
66
67
  "typescript": "5.9.3",
67
68
  "vite": "8.1.4",
68
69
  "vitest": "4.1.10",
69
- "@happyvertical/smrt-vitest": "0.43.10"
70
+ "@happyvertical/smrt-vitest": "0.44.0"
70
71
  },
71
72
  "keywords": [
72
73
  "smrt",