@happyvertical/smrt-users 0.51.13 → 0.51.14

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.
@@ -0,0 +1,8 @@
1
+ import { SmrtCollection } from '@happyvertical/smrt-core';
2
+ import { ResourceGrant } from '../models/ResourceGrant.js';
3
+ export declare class ResourceGrantCollection extends SmrtCollection<ResourceGrant> {
4
+ static readonly _itemClass: typeof ResourceGrant;
5
+ findExact(tenantId: string, userId: string, resourceType: string, resourceId: string, permission: string): Promise<ResourceGrant[]>;
6
+ findChildren(parentGrantId: string): Promise<ResourceGrant[]>;
7
+ }
8
+ //# sourceMappingURL=ResourceGrantCollection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceGrantCollection.d.ts","sourceRoot":"","sources":["../../src/collections/ResourceGrantCollection.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,qBAAa,uBAAwB,SAAQ,cAAc,CAAC,aAAa,CAAC;IACxE,MAAM,CAAC,QAAQ,CAAC,UAAU,uBAAiB;IACrC,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC;IAKrB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAGpE"}
@@ -12,6 +12,7 @@ export { MagicLinkTokenCollection, UsersMagicLinkTokenCollection, } from './Magi
12
12
  export { MembershipCollection } from './MembershipCollection.js';
13
13
  export { MembershipOverrideCollection } from './MembershipOverrideCollection.js';
14
14
  export { PermissionCollection } from './PermissionCollection.js';
15
+ export { ResourceGrantCollection } from './ResourceGrantCollection.js';
15
16
  export { RoleCollection, type SeedSystemRolesOptions, } from './RoleCollection.js';
16
17
  export { DEFAULT_ROLE_PERMISSION_PATTERNS, RolePermissionCollection, type RolePermissionPatternMatrix, type SeedRolePermissionsOptions, type SeedRolePermissionsResult, } from './RolePermissionCollection.js';
17
18
  export { type CreateSessionOptions, SessionCollection, } from './SessionCollection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EACL,KAAK,yBAAyB,EAC9B,kCAAkC,GACnC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,wBAAwB,EAC7B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,KAAK,8BAA8B,GACpC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,cAAc,GACf,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/collections/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EACL,KAAK,yBAAyB,EAC9B,kCAAkC,GACnC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EACL,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,KAAK,oBAAoB,EACzB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,wBAAwB,EAC7B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,KAAK,8BAA8B,GACpC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,cAAc,GACf,MAAM,qBAAqB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export { AccessRequestCollection, type CliAuthApproveReservation, CliAuthRequestCollection, type CreateChildTenantOptions, type CreateSessionOptions, DEFAULT_ROLE_PERMISSION_PATTERNS, type GetOrCreateFromOidcOptions, GroupCollection, GroupMemberCollection, GroupRoleCollection, MagicLinkTokenCollection, MembershipCollection, MembershipOverrideCollection, type NormalizedOidcClaims, type OidcClaims, type OidcIdentityResult, type OidcProfileOwnerAuthorization, type OidcProfileOwnerAuthorizer, type OidcProfileOwnerAuthorizerContext, type OidcProfileResolver, type OidcProfileResolverContext, OidcProvisioningError, type OidcProvisioningErrorCode, PermissionCollection, RoleCollection, RolePermissionCollection, type RolePermissionPatternMatrix, type SeedRolePermissionsOptions, type SeedRolePermissionsResult, type SeedSystemRolesOptions, SessionCollection, TenantCollection, TenantHierarchyError, TenantIntegrationCollection, TenantPermissionOverrideCollection, type TenantPermissionOverrideResult, UserCollection, UsersCliAuthApproveLimitCollection, UsersCliAuthRequestCollection, UsersMagicLinkTokenCollection, } from './collections/index.js';
1
+ export { AccessRequestCollection, type CliAuthApproveReservation, CliAuthRequestCollection, type CreateChildTenantOptions, type CreateSessionOptions, DEFAULT_ROLE_PERMISSION_PATTERNS, type GetOrCreateFromOidcOptions, GroupCollection, GroupMemberCollection, GroupRoleCollection, MagicLinkTokenCollection, MembershipCollection, MembershipOverrideCollection, type NormalizedOidcClaims, type OidcClaims, type OidcIdentityResult, type OidcProfileOwnerAuthorization, type OidcProfileOwnerAuthorizer, type OidcProfileOwnerAuthorizerContext, type OidcProfileResolver, type OidcProfileResolverContext, OidcProvisioningError, type OidcProvisioningErrorCode, PermissionCollection, ResourceGrantCollection, RoleCollection, RolePermissionCollection, type RolePermissionPatternMatrix, type SeedRolePermissionsOptions, type SeedRolePermissionsResult, type SeedSystemRolesOptions, SessionCollection, TenantCollection, TenantHierarchyError, TenantIntegrationCollection, TenantPermissionOverrideCollection, type TenantPermissionOverrideResult, UserCollection, UsersCliAuthApproveLimitCollection, UsersCliAuthRequestCollection, UsersMagicLinkTokenCollection, } from './collections/index.js';
2
2
  export { type BackfillLegacyUserProfilesResult, backfillLegacyUserProfiles, LEGACY_USER_PROFILE_BACKFILL_NAME, LegacyUserProfileBackfillError, type LegacyUserProfileBackfillErrorCode, } from './migrations/backfillLegacyUserProfiles.js';
3
3
  export { type BackfillUserEmailKeysResult, backfillUserEmailKeys, type DuplicateUserEmailKey, UserEmailKeyBackfillError, type UserEmailKeyBackfillErrorCode, } from './migrations/backfillUserEmailKeys.js';
4
- export { AccessRequest, type AccessRequestOptions, CliAuthRequest, type CliAuthRequestStatus, DEFAULT_SESSION_TTL, DEFAULT_TOKEN_EXPIRY_SECONDS, Group, GroupMember, GroupRole, generateSessionId, MAX_TENANT_HIERARCHY_DEPTH, MagicLinkToken, Membership, MembershipOverride, Permission, Role, RolePermission, Session, Tenant, TenantIntegration, type TenantIntegrationCheckSummary, type TenantIntegrationOptions, type TenantIntegrationProvider, type TenantIntegrationStatus, TenantPermissionOverride, User, UsersCliAuthApproveLimit, UsersCliAuthRequest, UsersMagicLinkToken, } from './models/index.js';
4
+ export { AccessRequest, type AccessRequestOptions, CliAuthRequest, type CliAuthRequestStatus, DEFAULT_SESSION_TTL, DEFAULT_TOKEN_EXPIRY_SECONDS, Group, GroupMember, GroupRole, generateSessionId, MAX_TENANT_HIERARCHY_DEPTH, MagicLinkToken, Membership, MembershipOverride, Permission, ResourceGrant, type ResourceGrantEffect, type ResourceGrantOptions, Role, RolePermission, Session, Tenant, TenantIntegration, type TenantIntegrationCheckSummary, type TenantIntegrationOptions, type TenantIntegrationProvider, type TenantIntegrationStatus, TenantPermissionOverride, User, UsersCliAuthApproveLimit, UsersCliAuthRequest, UsersMagicLinkToken, } from './models/index.js';
5
5
  export { CLI_AUTH_RETENTION_TASK, MAGIC_LINK_RETENTION_TASK, registerUserRetentionTasks, SESSIONS_RETENTION_TASK, USER_RETENTION_TASKS, unregisterUserRetentionTasks, } from './retention.js';
6
- export { ACCESS_REQUEST_CAPABILITIES, type AccessRequestAuthorizationContext, type AccessRequestAuthorizer, type AccessRequestCapability, AccessRequestError, type AccessRequestErrorCode, type AccessRequestEvent, type AccessRequestEventHandler, type AccessRequestEventType, AccessRequestService, type AccessRequestServiceOptions, ANCESTOR_READ_ACTION, type AncestorReadPackageConfig, type AncestorReadPolicy, type ApproveAccessRequestOptions, type ApproveCliAuthRequestInput, applyPostgresPermissionPolicies, assertOperationPermission, type CancelAccessRequestOptions, type CliAuthStartResult, type CliAuthTokenResult, type CreateAccessRequestInput, type CreateAuthorizationUrlOptions, checkOperationPermission, DEFAULT_ANCESTOR_READ_MAX_DEPTH, DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, DEFAULT_CLI_SESSION_TTL_SECONDS, type DeclineAccessRequestOptions, decodeOidcTransaction, deriveOperationPermissionCollectionName, deriveOperationPermissionSlug, type EnsureTenantResult, encodeOidcTransaction, type GeneratePostgresPermissionSqlResult, type GraduateAccessRequestOptions, type GraduateAccessRequestResult, type GraduateExistingTenantOption, type GraduateNewTenantOption, type GraduateTenantOption, generatePostgresPermissionSql, getConfiguredAncestorReadPolicy, getCurrentSessionPermissionContext, getRequestScopedDatabase, getUsersOidcConfig, hasOperationPermission, isAncestorReadableSlug, type ListAccessRequestsFilter, MagicLinkError, type MagicLinkResult, MagicLinkService, type MagicLinkServiceOptions, type MagicLinkVerifyResult, MobileAuthError, type MobileAuthErrorCode, MobileAuthService, type MobileAuthServiceOptions, type MobileBootstrapContext, type MobileLoginContext, type MobileLogoutResult, type MobileRequestMeta, type MobileResolvedUser, type MobileTenantContext, type NormalizedAncestorReadPolicy, normalizeAncestorReadPolicy, normalizeOperationPermissionAction, type OidcCallbackResult, OidcLoginError, type OidcLoginResult, OidcLoginService, type OidcLoginServiceOptions, type OidcProviderConfig, type OidcProviderKind, type OidcProviderMetadata, type OidcProviderResolution, type OidcProviderResolutionOptions, type OidcTokenEndpointAuthMethod, type OidcTokenSet, type OidcTransaction, type OperationPermissionAllowReason, type OperationPermissionCollectionInput, type OperationPermissionDecision, type OperationPermissionDenyReason, OperationPermissionError, type OperationPermissionOptions, type PermissionCatalog, PermissionCatalogService, type PermissionCatalogSource, type PermissionCatalogSyncResult, type PermissionDefinition, type PermissionResolutionOptions, type PermissionResolutionResult, PermissionResolver, type PermissionResolverOptions, type PostgresPermissionAction, type PostgresPermissionBinding, type PostgresPermissionPolicyReportItem, type PostgresPermissionPolicyTarget, type PrincipalPermissionRuntimeOptions, type ResolvedOidcProviderConfig, readMobileBearerToken, registerPermissionDefinitions, resolveOidcProviderConfig, type SessionContext, type SessionPermissionRuntimeContext, type SessionPermissionRuntimeOptions, SessionService, type SessionServiceOptions, type SwitchTenantResult, syncPermissionCatalog, type TenantPermissionInheritanceResult, TenantService, type TenantWithOwnershipResult, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, type TerminalAuthServiceOptions, type UsersConfig, type UsersOidcConfig, validateMobileRedirectUri, withPrincipalPermissionContext, withSessionPermissionContext, } from './services/index.js';
6
+ export { ACCESS_REQUEST_CAPABILITIES, type AccessRequestAuthorizationContext, type AccessRequestAuthorizer, type AccessRequestCapability, AccessRequestError, type AccessRequestErrorCode, type AccessRequestEvent, type AccessRequestEventHandler, type AccessRequestEventType, AccessRequestService, type AccessRequestServiceOptions, ANCESTOR_READ_ACTION, type AncestorReadPackageConfig, type AncestorReadPolicy, type ApproveAccessRequestOptions, type ApproveCliAuthRequestInput, applyPostgresPermissionPolicies, assertOperationPermission, type CancelAccessRequestOptions, type CliAuthStartResult, type CliAuthTokenResult, type CreateAccessRequestInput, type CreateAuthorizationUrlOptions, type CreateResourceGrantOptions, checkOperationPermission, checkResourceOperationPermission, DEFAULT_ANCESTOR_READ_MAX_DEPTH, DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, DEFAULT_CLI_SESSION_TTL_SECONDS, type DeclineAccessRequestOptions, decodeOidcTransaction, deriveOperationPermissionCollectionName, deriveOperationPermissionSlug, type EnsureTenantResult, encodeOidcTransaction, type GeneratePostgresPermissionSqlResult, type GraduateAccessRequestOptions, type GraduateAccessRequestResult, type GraduateExistingTenantOption, type GraduateNewTenantOption, type GraduateTenantOption, generatePostgresPermissionSql, getConfiguredAncestorReadPolicy, getCurrentSessionPermissionContext, getRequestScopedDatabase, getUsersOidcConfig, hasOperationPermission, isAncestorReadableSlug, type ListAccessRequestsFilter, MAX_RESOURCE_GRANT_DELEGATION_DEPTH, MagicLinkError, type MagicLinkResult, MagicLinkService, type MagicLinkServiceOptions, type MagicLinkVerifyResult, MobileAuthError, type MobileAuthErrorCode, MobileAuthService, type MobileAuthServiceOptions, type MobileBootstrapContext, type MobileLoginContext, type MobileLogoutResult, type MobileRequestMeta, type MobileResolvedUser, type MobileTenantContext, type NormalizedAncestorReadPolicy, normalizeAncestorReadPolicy, normalizeOperationPermissionAction, type OidcCallbackResult, OidcLoginError, type OidcLoginResult, OidcLoginService, type OidcLoginServiceOptions, type OidcProviderConfig, type OidcProviderKind, type OidcProviderMetadata, type OidcProviderResolution, type OidcProviderResolutionOptions, type OidcTokenEndpointAuthMethod, type OidcTokenSet, type OidcTransaction, type OperationPermissionAllowReason, type OperationPermissionCollectionInput, type OperationPermissionDecision, type OperationPermissionDenyReason, OperationPermissionError, type OperationPermissionOptions, type PermissionCatalog, PermissionCatalogService, type PermissionCatalogSource, type PermissionCatalogSyncResult, type PermissionDefinition, type PermissionResolutionOptions, type PermissionResolutionResult, PermissionResolver, type PermissionResolverOptions, type PostgresPermissionAction, type PostgresPermissionBinding, type PostgresPermissionPolicyReportItem, type PostgresPermissionPolicyTarget, type PrincipalPermissionRuntimeOptions, type ResolvedOidcProviderConfig, type ResourceGrantDecision, ResourceGrantService, type ResourceIdentity, type ResourceIdentityVerifier, type ResourceOperationPermissionOptions, type RevokeResourceGrantOptions, readMobileBearerToken, registerPermissionDefinitions, resolveOidcProviderConfig, type SessionContext, type SessionPermissionRuntimeContext, type SessionPermissionRuntimeOptions, SessionService, type SessionServiceOptions, type SwitchTenantResult, syncPermissionCatalog, type TenantPermissionInheritanceResult, TenantService, type TenantWithOwnershipResult, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, type TerminalAuthServiceOptions, type UsersConfig, type UsersOidcConfig, validateMobileRedirectUri, withPrincipalPermissionContext, withSessionPermissionContext, } from './services/index.js';
7
7
  export { AccessRequestStatus, DEFAULT_ROLE_SLUGS, DEFAULT_ROLES, DEFAULT_TENANT_POLICY, type DefaultRoleSlug, MembershipStatus, OverrideEffect, SessionStatus, TenantPermissionEffect, type TenantPolicy, type TenantPolicyMode, TenantStatus, UserStatus, } from './types/index.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- import { $ as RoleCollection, A as getConfiguredAncestorReadPolicy, At as TenantPermissionEffect, B as TenantCollection, C as decodeOidcTransaction, Ct as AccessRequestStatus, Dt as MembershipStatus, E as resolveOidcProviderConfig, Et as DEFAULT_TENANT_POLICY, G as RolePermissionCollection, H as MAX_TENANT_HIERARCHY_DEPTH, I as UserEmailKeyBackfillError, J as deriveOperationPermissionSlug, K as PermissionCatalogService, L as backfillUserEmailKeys, M as normalizeAncestorReadPolicy, Mt as UserStatus, N as OidcProvisioningError, Nt as UsersCliAuthRequest, O as ANCESTOR_READ_ACTION, Ot as OverrideEffect, P as UserCollection, Q as RolePermission, R as TenantPermissionOverrideCollection, S as OidcLoginService, St as generateSessionId, T as getUsersOidcConfig, Tt as DEFAULT_ROLE_SLUGS, U as Tenant, V as TenantHierarchyError, W as DEFAULT_ROLE_PERMISSION_PATTERNS, X as registerPermissionDefinitions, Y as normalizeOperationPermissionAction, Z as syncPermissionCatalog, _ as readMobileBearerToken, _t as normalizeEmail, a as TerminalAuthRateLimitError, at as MembershipCollection, b as PermissionResolver, bt as DEFAULT_SESSION_TTL, c as assertOperationPermission, ct as GroupRole, d as getCurrentSessionPermissionContext, dt as GroupCollection, et as Role, f as getRequestScopedDatabase, ft as Group, g as MobileAuthService, gt as isValidEmail, h as MobileAuthError, ht as User, i as TerminalAuthError, it as MembershipOverride, j as isAncestorReadableSlug, jt as TenantStatus, k as DEFAULT_ANCESTOR_READ_MAX_DEPTH, kt as SessionStatus, l as checkOperationPermission, lt as GroupMemberCollection, m as withSessionPermissionContext, mt as UsersCliAuthApproveLimit, n as DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, nt as Permission, o as TerminalAuthService, ot as Membership, p as withPrincipalPermissionContext, pt as UsersCliAuthApproveLimitCollection, q as deriveOperationPermissionCollectionName, r as DEFAULT_CLI_SESSION_TTL_SECONDS, rt as MembershipOverrideCollection, s as OperationPermissionError, st as GroupRoleCollection, t as DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, tt as PermissionCollection, u as hasOperationPermission, ut as GroupMember, v as validateMobileRedirectUri, vt as UsersCliAuthRequestCollection, w as encodeOidcTransaction, wt as DEFAULT_ROLES, x as OidcLoginError, xt as Session, y as SessionService, yt as SessionCollection, z as TenantPermissionOverride } from "./chunks/TerminalAuthService-jJc-uqDc.js";
2
- import { ObjectRegistry, SmrtCollection, SmrtObject, field, findManifestEntryByQualifiedName, isUniqueViolationError, registerRetentionTask, smrt, unregisterRetentionTask } from "@happyvertical/smrt-core";
1
+ import { $ as RoleCollection, A as getConfiguredAncestorReadPolicy, At as TenantPermissionEffect, B as TenantCollection, C as decodeOidcTransaction, Ct as AccessRequestStatus, Dt as MembershipStatus, E as resolveOidcProviderConfig, Et as DEFAULT_TENANT_POLICY, G as RolePermissionCollection, H as MAX_TENANT_HIERARCHY_DEPTH, I as UserEmailKeyBackfillError, J as deriveOperationPermissionSlug, K as PermissionCatalogService, L as backfillUserEmailKeys, M as normalizeAncestorReadPolicy, Mt as UserStatus, N as OidcProvisioningError, Nt as UsersCliAuthRequest, O as ANCESTOR_READ_ACTION, Ot as OverrideEffect, P as UserCollection, Q as RolePermission, R as TenantPermissionOverrideCollection, S as OidcLoginService, St as generateSessionId, T as getUsersOidcConfig, Tt as DEFAULT_ROLE_SLUGS, U as Tenant, V as TenantHierarchyError, W as DEFAULT_ROLE_PERMISSION_PATTERNS, X as registerPermissionDefinitions, Y as normalizeOperationPermissionAction, Z as syncPermissionCatalog, _ as readMobileBearerToken, _t as normalizeEmail, a as TerminalAuthRateLimitError, at as MembershipCollection, b as PermissionResolver, bt as DEFAULT_SESSION_TTL, c as assertOperationPermission, ct as GroupRole, d as getCurrentSessionPermissionContext, dt as GroupCollection, et as Role, f as getRequestScopedDatabase, ft as Group, g as MobileAuthService, gt as isValidEmail, h as MobileAuthError, ht as User, i as TerminalAuthError, it as MembershipOverride, j as isAncestorReadableSlug, jt as TenantStatus, k as DEFAULT_ANCESTOR_READ_MAX_DEPTH, kt as SessionStatus, l as checkOperationPermission, lt as GroupMemberCollection, m as withSessionPermissionContext, mt as UsersCliAuthApproveLimit, n as DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, nt as Permission, o as TerminalAuthService, ot as Membership, p as withPrincipalPermissionContext, pt as UsersCliAuthApproveLimitCollection, q as deriveOperationPermissionCollectionName, r as DEFAULT_CLI_SESSION_TTL_SECONDS, rt as MembershipOverrideCollection, s as OperationPermissionError, st as GroupRoleCollection, t as DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, tt as PermissionCollection, u as hasOperationPermission, ut as GroupMember, v as validateMobileRedirectUri, vt as UsersCliAuthRequestCollection, w as encodeOidcTransaction, wt as DEFAULT_ROLES, x as OidcLoginError, xt as Session, y as SessionService, yt as SessionCollection, z as TenantPermissionOverride } from "./chunks/TerminalAuthService-DgAU4Fz1.js";
2
+ import { ObjectRegistry, SmrtCollection, SmrtObject, field, findManifestEntryByQualifiedName, foreignKey, isUniqueViolationError, registerRetentionTask, smrt, unregisterRetentionTask } from "@happyvertical/smrt-core";
3
3
  import { PROFILE_EMAIL_KEY_BACKFILL_NAME, Person, ProfileCollection, ProfileTypeCollection, normalizeIdentityEmail } from "@happyvertical/smrt-profiles";
4
4
  import { createHash } from "node:crypto";
5
5
  import { TenantScoped, tenantId, withSystemContext } from "@happyvertical/smrt-tenancy";
6
6
  import { BackfillTracker } from "@happyvertical/smrt-core/migrations";
7
7
  import { createLogger } from "@happyvertical/logger";
8
8
  //#region src/models/MagicLinkToken.ts
9
- var __defProp$2 = Object.defineProperty;
10
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
11
- var __decorateClass$2 = (decorators, target, key, kind) => {
12
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
9
+ var __defProp$3 = Object.defineProperty;
10
+ var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
11
+ var __decorateClass$3 = (decorators, target, key, kind) => {
12
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
13
13
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
14
- if (kind && result) __defProp$2(target, key, result);
14
+ if (kind && result) __defProp$3(target, key, result);
15
15
  return result;
16
16
  };
17
17
  var DEFAULT_TOKEN_EXPIRY_SECONDS = 600;
@@ -38,15 +38,15 @@ var UsersMagicLinkToken = class extends SmrtObject {
38
38
  return !this.used && !this.isExpired();
39
39
  }
40
40
  };
41
- __decorateClass$2([field({
41
+ __decorateClass$3([field({
42
42
  required: true,
43
43
  unique: true
44
44
  })], UsersMagicLinkToken.prototype, "nonce", 2);
45
- __decorateClass$2([field({
45
+ __decorateClass$3([field({
46
46
  type: "datetime",
47
47
  indexed: true
48
48
  })], UsersMagicLinkToken.prototype, "expiresAt", 2);
49
- UsersMagicLinkToken = __decorateClass$2([smrt({
49
+ UsersMagicLinkToken = __decorateClass$3([smrt({
50
50
  tableName: "users_magic_link_tokens",
51
51
  sensitive: true,
52
52
  api: { include: [] },
@@ -135,12 +135,12 @@ function unregisterUserRetentionTasks() {
135
135
  }
136
136
  //#endregion
137
137
  //#region src/models/AccessRequest.ts
138
- var __defProp$1 = Object.defineProperty;
139
- var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
140
- var __decorateClass$1 = (decorators, target, key, kind) => {
141
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
138
+ var __defProp$2 = Object.defineProperty;
139
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
140
+ var __decorateClass$2 = (decorators, target, key, kind) => {
141
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
142
142
  for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
143
- if (kind && result) __defProp$1(target, key, result);
143
+ if (kind && result) __defProp$2(target, key, result);
144
144
  return result;
145
145
  };
146
146
  var AccessRequest = class extends SmrtObject {
@@ -225,24 +225,24 @@ var AccessRequest = class extends SmrtObject {
225
225
  return this.status === AccessRequestStatus.DECLINED || this.status === AccessRequestStatus.GRADUATED || this.status === AccessRequestStatus.CANCELED;
226
226
  }
227
227
  };
228
- __decorateClass$1([field({
228
+ __decorateClass$2([field({
229
229
  required: true,
230
230
  indexed: true
231
231
  })], AccessRequest.prototype, "email", 2);
232
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "name", 2);
233
- __decorateClass$1([field({
232
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "name", 2);
233
+ __decorateClass$2([field({
234
234
  type: "text",
235
235
  indexed: true
236
236
  })], AccessRequest.prototype, "status", 2);
237
- __decorateClass$1([field({ indexed: true })], AccessRequest.prototype, "source", 2);
238
- __decorateClass$1([field()], AccessRequest.prototype, "requestContext", 2);
239
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "note", 2);
240
- __decorateClass$1([field()], AccessRequest.prototype, "requestedAt", 2);
241
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "decidedAt", 2);
242
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "decidedBy", 2);
243
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "resultingUserId", 2);
244
- __decorateClass$1([field({ nullable: true })], AccessRequest.prototype, "tenantHint", 2);
245
- AccessRequest = __decorateClass$1([smrt({
237
+ __decorateClass$2([field({ indexed: true })], AccessRequest.prototype, "source", 2);
238
+ __decorateClass$2([field()], AccessRequest.prototype, "requestContext", 2);
239
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "note", 2);
240
+ __decorateClass$2([field()], AccessRequest.prototype, "requestedAt", 2);
241
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "decidedAt", 2);
242
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "decidedBy", 2);
243
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "resultingUserId", 2);
244
+ __decorateClass$2([field({ nullable: true })], AccessRequest.prototype, "tenantHint", 2);
245
+ AccessRequest = __decorateClass$2([smrt({
246
246
  tableName: "access_requests",
247
247
  conflictColumns: ["id"],
248
248
  api: { include: [] },
@@ -295,6 +295,77 @@ var AccessRequestCollection = class extends SmrtCollection {
295
295
  }
296
296
  };
297
297
  //#endregion
298
+ //#region src/models/ResourceGrant.ts
299
+ var __defProp$1 = Object.defineProperty;
300
+ var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
301
+ var __decorateClass$1 = (decorators, target, key, kind) => {
302
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;
303
+ for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
304
+ if (kind && result) __defProp$1(target, key, result);
305
+ return result;
306
+ };
307
+ var ResourceGrant = class extends SmrtObject {
308
+ tenantId;
309
+ userId;
310
+ resourceType = "";
311
+ resourceId = "";
312
+ permission = "";
313
+ effect = "grant";
314
+ canDelegate = false;
315
+ parentGrantId;
316
+ revokedAt;
317
+ constructor(options = {}) {
318
+ super(options);
319
+ if (options.tenantId !== void 0) this.tenantId = options.tenantId;
320
+ if (options.userId !== void 0) this.userId = options.userId;
321
+ if (options.resourceType !== void 0) this.resourceType = options.resourceType;
322
+ if (options.resourceId !== void 0) this.resourceId = options.resourceId;
323
+ if (options.permission !== void 0) this.permission = options.permission;
324
+ if (options.effect !== void 0) this.effect = options.effect;
325
+ if (options.canDelegate !== void 0) this.canDelegate = options.canDelegate;
326
+ if (options.parentGrantId !== void 0) this.parentGrantId = options.parentGrantId;
327
+ if (options.revokedAt !== void 0) this.revokedAt = options.revokedAt;
328
+ }
329
+ isActive() {
330
+ return !this.revokedAt;
331
+ }
332
+ };
333
+ __decorateClass$1([foreignKey("Tenant", { required: true })], ResourceGrant.prototype, "tenantId", 2);
334
+ __decorateClass$1([foreignKey("User", { required: true })], ResourceGrant.prototype, "userId", 2);
335
+ __decorateClass$1([field({ type: "text" })], ResourceGrant.prototype, "resourceType", 2);
336
+ __decorateClass$1([field({ type: "text" })], ResourceGrant.prototype, "resourceId", 2);
337
+ __decorateClass$1([field({ type: "text" })], ResourceGrant.prototype, "permission", 2);
338
+ __decorateClass$1([field({ type: "text" })], ResourceGrant.prototype, "effect", 2);
339
+ __decorateClass$1([foreignKey("ResourceGrant")], ResourceGrant.prototype, "parentGrantId", 2);
340
+ __decorateClass$1([field({ type: "text" })], ResourceGrant.prototype, "revokedAt", 2);
341
+ ResourceGrant = __decorateClass$1([smrt({
342
+ tenantScoped: true,
343
+ api: { include: [] },
344
+ mcp: { include: [] },
345
+ cli: { skipApiCheck: true },
346
+ indexes: [{
347
+ name: "resource_grants_lookup_idx",
348
+ columns: ["tenantId", "userId"]
349
+ }]
350
+ })], ResourceGrant);
351
+ //#endregion
352
+ //#region src/collections/ResourceGrantCollection.ts
353
+ var ResourceGrantCollection = class extends SmrtCollection {
354
+ static _itemClass = ResourceGrant;
355
+ async findExact(tenantId, userId, resourceType, resourceId, permission) {
356
+ return this.list({ where: {
357
+ tenantId,
358
+ userId,
359
+ resourceType,
360
+ resourceId,
361
+ permission
362
+ } });
363
+ }
364
+ async findChildren(parentGrantId) {
365
+ return this.list({ where: { parentGrantId } });
366
+ }
367
+ };
368
+ //#endregion
298
369
  //#region src/models/TenantIntegration.ts
299
370
  var __defProp = Object.defineProperty;
300
371
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1076,7 +1147,7 @@ var MagicLinkService = class MagicLinkService {
1076
1147
  * The caller is responsible for emailing the token to the user.
1077
1148
  */
1078
1149
  async generate(email) {
1079
- const { SignJWT } = await import("./chunks/TerminalAuthService-jJc-uqDc.js").then((n) => n.D);
1150
+ const { SignJWT } = await import("./chunks/TerminalAuthService-DgAU4Fz1.js").then((n) => n.D);
1080
1151
  const key = await this.getSigningKey();
1081
1152
  const nonce = crypto.randomUUID();
1082
1153
  const normalizedEmail = normalizeEmail(email);
@@ -1105,7 +1176,7 @@ var MagicLinkService = class MagicLinkService {
1105
1176
  * @throws {MagicLinkError} If the token is invalid, expired, or already used
1106
1177
  */
1107
1178
  async verify(token) {
1108
- const { jwtVerify, errors } = await import("./chunks/TerminalAuthService-jJc-uqDc.js").then((n) => n.D);
1179
+ const { jwtVerify, errors } = await import("./chunks/TerminalAuthService-DgAU4Fz1.js").then((n) => n.D);
1109
1180
  const key = await this.getSigningKey();
1110
1181
  let payload;
1111
1182
  try {
@@ -1418,6 +1489,127 @@ ${statement}`, { cause: error });
1418
1489
  return result;
1419
1490
  }
1420
1491
  //#endregion
1492
+ //#region src/services/ResourceGrantService.ts
1493
+ var MAX_RESOURCE_GRANT_DELEGATION_DEPTH = 8;
1494
+ async function checkResourceOperationPermission(options) {
1495
+ if (!await options.verifyResource(options.resource)) return {
1496
+ allowed: false,
1497
+ reason: "resource_not_verified"
1498
+ };
1499
+ const tenant = await assertOperationPermission({
1500
+ ...options,
1501
+ tenantId: options.resource.tenantId,
1502
+ onDeny: "return"
1503
+ });
1504
+ if (!tenant.allowed) return {
1505
+ allowed: false,
1506
+ reason: "tenant_permission_denied"
1507
+ };
1508
+ if (!tenant.permission) return {
1509
+ allowed: false,
1510
+ reason: "tenant_permission_denied"
1511
+ };
1512
+ const userId = options.userId ?? getCurrentSessionPermissionContext()?.userId;
1513
+ if (!userId) return {
1514
+ allowed: false,
1515
+ reason: "resource_grant_missing"
1516
+ };
1517
+ const grants = await (await ResourceGrantCollection.create(options)).findExact(options.resource.tenantId, userId, options.resource.resourceType, options.resource.resourceId, tenant.permission);
1518
+ const collection = await ResourceGrantCollection.create(options);
1519
+ const active = [];
1520
+ for (const grant2 of grants) if (await hasActiveAncestors(collection, grant2)) active.push(grant2);
1521
+ const deny = active.find((grant2) => grant2.effect === "deny");
1522
+ if (deny) return {
1523
+ allowed: false,
1524
+ reason: "resource_grant_denied",
1525
+ grant: deny
1526
+ };
1527
+ const grant = active.find((candidate) => candidate.effect === "grant");
1528
+ return grant ? {
1529
+ allowed: true,
1530
+ reason: "resource_grant_allowed",
1531
+ grant
1532
+ } : {
1533
+ allowed: false,
1534
+ reason: "resource_grant_missing"
1535
+ };
1536
+ }
1537
+ var ResourceGrantService = class {
1538
+ constructor(options) {
1539
+ this.options = options;
1540
+ }
1541
+ options;
1542
+ async create(input) {
1543
+ const { authorization, grant } = input;
1544
+ if (!await authorization.verifyResource(authorization.resource)) throw new Error("Resource identity was not verified.");
1545
+ await assertOperationPermission({
1546
+ ...input.actor,
1547
+ ...this.options,
1548
+ tenantId: grant.tenantId,
1549
+ onDeny: "throw"
1550
+ });
1551
+ if (authorization.resource.tenantId !== grant.tenantId || authorization.resource.resourceType !== grant.resourceType || authorization.resource.resourceId !== grant.resourceId) throw new Error("Grant must be authorized for its exact resource.");
1552
+ const collection = await ResourceGrantCollection.create(this.options);
1553
+ if (grant.parentGrantId) await this.assertDelegationParent(collection, input.actor.userId ?? "", grant);
1554
+ const record = await collection.create({
1555
+ ...grant,
1556
+ effect: grant.effect ?? "grant",
1557
+ canDelegate: grant.canDelegate ?? false
1558
+ });
1559
+ await record.save();
1560
+ return record;
1561
+ }
1562
+ async revoke(grantId, options) {
1563
+ const grant = await (await ResourceGrantCollection.create(this.options)).get({ id: grantId });
1564
+ if (!grant) throw new Error("Resource grant not found.");
1565
+ const resource = {
1566
+ tenantId: grant.tenantId ?? "",
1567
+ resourceType: grant.resourceType,
1568
+ resourceId: grant.resourceId
1569
+ };
1570
+ if (!resource.tenantId || !await options.verifyResource(resource)) throw new Error("Resource identity was not verified.");
1571
+ await assertOperationPermission({
1572
+ ...options.actor,
1573
+ ...this.options,
1574
+ tenantId: resource.tenantId,
1575
+ onDeny: "throw"
1576
+ });
1577
+ grant.revokedAt = (/* @__PURE__ */ new Date()).toISOString();
1578
+ await grant.save();
1579
+ }
1580
+ async assertDelegationParent(collection, actorUserId, grant) {
1581
+ const parentGrantId = grant.parentGrantId;
1582
+ if (!parentGrantId) throw new Error("Delegation parent is required.");
1583
+ const parent = await collection.get({ id: parentGrantId });
1584
+ if (!parent || !parent.isActive() || !parent.canDelegate || parent.effect !== "grant" || parent.userId !== actorUserId || parent.tenantId !== grant.tenantId || parent.resourceType !== grant.resourceType || parent.resourceId !== grant.resourceId || parent.permission !== grant.permission) throw new Error("Delegation parent does not cover this grant.");
1585
+ let depth = 1;
1586
+ let cursor = parent;
1587
+ const visited = /* @__PURE__ */ new Set();
1588
+ while (cursor?.parentGrantId) {
1589
+ if (!cursor.id || visited.has(cursor.id) || ++depth > 8) throw new Error("Invalid resource grant delegation chain.");
1590
+ visited.add(cursor.id);
1591
+ cursor = await collection.get({ id: cursor.parentGrantId });
1592
+ if (!cursor?.isActive()) throw new Error("Delegation ancestor is revoked or missing.");
1593
+ }
1594
+ }
1595
+ };
1596
+ async function hasActiveAncestors(collection, grant) {
1597
+ let cursor = grant;
1598
+ const visited = /* @__PURE__ */ new Set();
1599
+ let depth = 0;
1600
+ while (cursor) {
1601
+ if (!cursor.isActive() || !cursor.id || visited.has(cursor.id) || depth++ > 8) return false;
1602
+ visited.add(cursor.id);
1603
+ if (!cursor.parentGrantId) {
1604
+ cursor = null;
1605
+ continue;
1606
+ }
1607
+ cursor = await collection.get({ id: cursor.parentGrantId });
1608
+ if (!cursor) return false;
1609
+ }
1610
+ return true;
1611
+ }
1612
+ //#endregion
1421
1613
  //#region src/services/TenantService.ts
1422
1614
  var TenantService = class TenantService {
1423
1615
  options;
@@ -1581,6 +1773,6 @@ var TenantService = class TenantService {
1581
1773
  //#region src/index.ts
1582
1774
  registerUserRetentionTasks();
1583
1775
  //#endregion
1584
- export { ACCESS_REQUEST_CAPABILITIES, ANCESTOR_READ_ACTION, AccessRequest, AccessRequestCollection, AccessRequestError, AccessRequestService, AccessRequestStatus, CLI_AUTH_RETENTION_TASK, UsersCliAuthRequest as CliAuthRequest, UsersCliAuthRequest, UsersCliAuthRequestCollection as CliAuthRequestCollection, UsersCliAuthRequestCollection, DEFAULT_ANCESTOR_READ_MAX_DEPTH, DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, DEFAULT_CLI_SESSION_TTL_SECONDS, DEFAULT_ROLES, DEFAULT_ROLE_PERMISSION_PATTERNS, DEFAULT_ROLE_SLUGS, DEFAULT_SESSION_TTL, DEFAULT_TENANT_POLICY, DEFAULT_TOKEN_EXPIRY_SECONDS, Group, GroupCollection, GroupMember, GroupMemberCollection, GroupRole, GroupRoleCollection, LEGACY_USER_PROFILE_BACKFILL_NAME, LegacyUserProfileBackfillError, MAGIC_LINK_RETENTION_TASK, MAX_TENANT_HIERARCHY_DEPTH, MagicLinkError, MagicLinkService, UsersMagicLinkToken as MagicLinkToken, UsersMagicLinkToken, UsersMagicLinkTokenCollection as MagicLinkTokenCollection, UsersMagicLinkTokenCollection, Membership, MembershipCollection, MembershipOverride, MembershipOverrideCollection, MembershipStatus, MobileAuthError, MobileAuthService, OidcLoginError, OidcLoginService, OidcProvisioningError, OperationPermissionError, OverrideEffect, Permission, PermissionCatalogService, PermissionCollection, PermissionResolver, Role, RoleCollection, RolePermission, RolePermissionCollection, SESSIONS_RETENTION_TASK, Session, SessionCollection, SessionService, SessionStatus, Tenant, TenantCollection, TenantHierarchyError, TenantIntegration, TenantIntegrationCollection, TenantPermissionEffect, TenantPermissionOverride, TenantPermissionOverrideCollection, TenantService, TenantStatus, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, USER_RETENTION_TASKS, User, UserCollection, UserEmailKeyBackfillError, UserStatus, UsersCliAuthApproveLimit, UsersCliAuthApproveLimitCollection, applyPostgresPermissionPolicies, assertOperationPermission, backfillLegacyUserProfiles, backfillUserEmailKeys, checkOperationPermission, decodeOidcTransaction, deriveOperationPermissionCollectionName, deriveOperationPermissionSlug, encodeOidcTransaction, generatePostgresPermissionSql, generateSessionId, getConfiguredAncestorReadPolicy, getCurrentSessionPermissionContext, getRequestScopedDatabase, getUsersOidcConfig, hasOperationPermission, isAncestorReadableSlug, normalizeAncestorReadPolicy, normalizeOperationPermissionAction, readMobileBearerToken, registerPermissionDefinitions, registerUserRetentionTasks, resolveOidcProviderConfig, syncPermissionCatalog, unregisterUserRetentionTasks, validateMobileRedirectUri, withPrincipalPermissionContext, withSessionPermissionContext };
1776
+ export { ACCESS_REQUEST_CAPABILITIES, ANCESTOR_READ_ACTION, AccessRequest, AccessRequestCollection, AccessRequestError, AccessRequestService, AccessRequestStatus, CLI_AUTH_RETENTION_TASK, UsersCliAuthRequest as CliAuthRequest, UsersCliAuthRequest, UsersCliAuthRequestCollection as CliAuthRequestCollection, UsersCliAuthRequestCollection, DEFAULT_ANCESTOR_READ_MAX_DEPTH, DEFAULT_CLI_AUTH_POLL_INTERVAL_SECONDS, DEFAULT_CLI_AUTH_REQUEST_TTL_SECONDS, DEFAULT_CLI_SESSION_TTL_SECONDS, DEFAULT_ROLES, DEFAULT_ROLE_PERMISSION_PATTERNS, DEFAULT_ROLE_SLUGS, DEFAULT_SESSION_TTL, DEFAULT_TENANT_POLICY, DEFAULT_TOKEN_EXPIRY_SECONDS, Group, GroupCollection, GroupMember, GroupMemberCollection, GroupRole, GroupRoleCollection, LEGACY_USER_PROFILE_BACKFILL_NAME, LegacyUserProfileBackfillError, MAGIC_LINK_RETENTION_TASK, MAX_RESOURCE_GRANT_DELEGATION_DEPTH, MAX_TENANT_HIERARCHY_DEPTH, MagicLinkError, MagicLinkService, UsersMagicLinkToken as MagicLinkToken, UsersMagicLinkToken, UsersMagicLinkTokenCollection as MagicLinkTokenCollection, UsersMagicLinkTokenCollection, Membership, MembershipCollection, MembershipOverride, MembershipOverrideCollection, MembershipStatus, MobileAuthError, MobileAuthService, OidcLoginError, OidcLoginService, OidcProvisioningError, OperationPermissionError, OverrideEffect, Permission, PermissionCatalogService, PermissionCollection, PermissionResolver, ResourceGrant, ResourceGrantCollection, ResourceGrantService, Role, RoleCollection, RolePermission, RolePermissionCollection, SESSIONS_RETENTION_TASK, Session, SessionCollection, SessionService, SessionStatus, Tenant, TenantCollection, TenantHierarchyError, TenantIntegration, TenantIntegrationCollection, TenantPermissionEffect, TenantPermissionOverride, TenantPermissionOverrideCollection, TenantService, TenantStatus, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, USER_RETENTION_TASKS, User, UserCollection, UserEmailKeyBackfillError, UserStatus, UsersCliAuthApproveLimit, UsersCliAuthApproveLimitCollection, applyPostgresPermissionPolicies, assertOperationPermission, backfillLegacyUserProfiles, backfillUserEmailKeys, checkOperationPermission, checkResourceOperationPermission, decodeOidcTransaction, deriveOperationPermissionCollectionName, deriveOperationPermissionSlug, encodeOidcTransaction, generatePostgresPermissionSql, generateSessionId, getConfiguredAncestorReadPolicy, getCurrentSessionPermissionContext, getRequestScopedDatabase, getUsersOidcConfig, hasOperationPermission, isAncestorReadableSlug, normalizeAncestorReadPolicy, normalizeOperationPermissionAction, readMobileBearerToken, registerPermissionDefinitions, registerUserRetentionTasks, resolveOidcProviderConfig, syncPermissionCatalog, unregisterUserRetentionTasks, validateMobileRedirectUri, withPrincipalPermissionContext, withSessionPermissionContext };
1585
1777
 
1586
1778
  //# sourceMappingURL=index.js.map