@memberjunction/ng-list-management 6.1.4 → 6.2.0-edge.1

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.
Files changed (53) hide show
  1. package/dist/lib/components/audience-source-picker/audience-source-picker.component.d.ts +74 -14
  2. package/dist/lib/components/audience-source-picker/audience-source-picker.component.d.ts.map +1 -1
  3. package/dist/lib/components/audience-source-picker/audience-source-picker.component.js +177 -57
  4. package/dist/lib/components/audience-source-picker/audience-source-picker.component.js.map +1 -1
  5. package/dist/lib/components/audience-source-summary/audience-source-summary.component.d.ts +7 -1
  6. package/dist/lib/components/audience-source-summary/audience-source-summary.component.d.ts.map +1 -1
  7. package/dist/lib/components/audience-source-summary/audience-source-summary.component.js +17 -5
  8. package/dist/lib/components/audience-source-summary/audience-source-summary.component.js.map +1 -1
  9. package/dist/lib/components/list-audit-log/list-audit-log.component.d.ts +30 -4
  10. package/dist/lib/components/list-audit-log/list-audit-log.component.d.ts.map +1 -1
  11. package/dist/lib/components/list-audit-log/list-audit-log.component.js +54 -14
  12. package/dist/lib/components/list-audit-log/list-audit-log.component.js.map +1 -1
  13. package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.d.ts +17 -1
  14. package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.d.ts.map +1 -1
  15. package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.js +45 -13
  16. package/dist/lib/components/list-delta-confirm/list-delta-confirm.component.js.map +1 -1
  17. package/dist/lib/components/list-invitations/list-invitations.component.d.ts +48 -8
  18. package/dist/lib/components/list-invitations/list-invitations.component.d.ts.map +1 -1
  19. package/dist/lib/components/list-invitations/list-invitations.component.js +108 -28
  20. package/dist/lib/components/list-invitations/list-invitations.component.js.map +1 -1
  21. package/dist/lib/components/list-management-dialog/list-management-dialog.component.d.ts +123 -15
  22. package/dist/lib/components/list-management-dialog/list-management-dialog.component.d.ts.map +1 -1
  23. package/dist/lib/components/list-management-dialog/list-management-dialog.component.js +312 -100
  24. package/dist/lib/components/list-management-dialog/list-management-dialog.component.js.map +1 -1
  25. package/dist/lib/components/list-share-dialog/list-share-dialog.component.d.ts +128 -14
  26. package/dist/lib/components/list-share-dialog/list-share-dialog.component.d.ts.map +1 -1
  27. package/dist/lib/components/list-share-dialog/list-share-dialog.component.js +288 -92
  28. package/dist/lib/components/list-share-dialog/list-share-dialog.component.js.map +1 -1
  29. package/dist/lib/components/list-stats/list-stats.component.d.ts +32 -6
  30. package/dist/lib/components/list-stats/list-stats.component.d.ts.map +1 -1
  31. package/dist/lib/components/list-stats/list-stats.component.js +67 -15
  32. package/dist/lib/components/list-stats/list-stats.component.js.map +1 -1
  33. package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.d.ts +44 -8
  34. package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.d.ts.map +1 -1
  35. package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.js +100 -28
  36. package/dist/lib/components/save-view-as-list-dialog/save-view-as-list-dialog.component.js.map +1 -1
  37. package/dist/lib/components/shared-with-me/shared-with-me.component.d.ts +18 -2
  38. package/dist/lib/components/shared-with-me/shared-with-me.component.d.ts.map +1 -1
  39. package/dist/lib/components/shared-with-me/shared-with-me.component.js +41 -9
  40. package/dist/lib/components/shared-with-me/shared-with-me.component.js.map +1 -1
  41. package/dist/lib/components/tag-chips/tag-chips.component.d.ts +30 -6
  42. package/dist/lib/components/tag-chips/tag-chips.component.d.ts.map +1 -1
  43. package/dist/lib/components/tag-chips/tag-chips.component.js +76 -28
  44. package/dist/lib/components/tag-chips/tag-chips.component.js.map +1 -1
  45. package/dist/lib/services/list-management.service.d.ts +25 -1
  46. package/dist/lib/services/list-management.service.d.ts.map +1 -1
  47. package/dist/lib/services/list-management.service.js +59 -11
  48. package/dist/lib/services/list-management.service.js.map +1 -1
  49. package/dist/lib/services/list-sharing.service.d.ts +42 -1
  50. package/dist/lib/services/list-sharing.service.d.ts.map +1 -1
  51. package/dist/lib/services/list-sharing.service.js +85 -17
  52. package/dist/lib/services/list-sharing.service.js.map +1 -1
  53. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"list-sharing.service.js","sourceRoot":"","sources":["../../../src/lib/services/list-sharing.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { IMetadataProvider, Metadata, RunView, UserInfo } from '@memberjunction/core';\nimport {\n MJListEntity,\n MJResourcePermissionEntity,\n MJResourceTypeEntity,\n MJUserEntity,\n MJRoleEntity,\n ResourceTypeEngine,\n} from '@memberjunction/core-entities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ListShareInfo, ListPermissionLevel, ShareRecipient, ListShareResult } from '../models/list-sharing.models';\n\n/** Name of the row in `MJ: Resource Types` that scopes List shares. */\nconst LIST_RESOURCE_TYPE_NAME = 'Lists';\n\n/**\n * Service for managing list sharing using the existing ResourcePermission system.\n * Lists are already registered as a ResourceType, so we use ResourcePermissions\n * to share lists with users and roles.\n *\n * Multi-provider note: callers under a non-default provider should set\n * `service.Provider = component.ProviderToUse` before invoking any methods.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ListSharingService {\n private loadingSubject = new BehaviorSubject<boolean>(false);\n public loading$: Observable<boolean> = this.loadingSubject.asObservable();\n\n // Cache for users and roles (for autocomplete)\n private usersCache: MJUserEntity[] | null = null;\n private rolesCache: MJRoleEntity[] | null = null;\n\n private _provider: IMetadataProvider | null = null;\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n constructor() {}\n\n /**\n * Resolve the `MJ: Resource Types.ID` for the row named \"Lists\" via the\n * shared `ResourceTypeEngine`. Throws if missing — that indicates a\n * misconfigured environment (seed data never pushed) and we'd rather fail\n * loud than write `MJResourcePermission` rows with an undefined\n * `ResourceTypeID`. `Engine.Config()` is idempotent (BaseEngine semantics)\n * so calling this on every method that needs it is cheap.\n */\n private async resolveListResourceTypeId(): Promise<string> {\n await ResourceTypeEngine.Instance.Config(false, undefined, this.Provider);\n const rt = ResourceTypeEngine.Instance.ByName(LIST_RESOURCE_TYPE_NAME);\n if (!rt) {\n throw new Error(\n `MJ: Resource Types row \"${LIST_RESOURCE_TYPE_NAME}\" not found. ` +\n `Seed metadata/resource-types/ via 'mj sync push' before using ListSharingService.`,\n );\n }\n return rt.ID;\n }\n\n /**\n * Get all shares for a specific list\n */\n async getListShares(listId: string): Promise<ListShareInfo[]> {\n this.loadingSubject.next(true);\n\n try {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}'`,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n // Convert to ListShareInfo objects with user/role details\n const shares: ListShareInfo[] = [];\n\n for (const permission of result.Results) {\n const shareInfo = await this.convertToListShareInfo(permission);\n if (shareInfo) {\n shares.push(shareInfo);\n }\n }\n\n return shares;\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /**\n * Get permission level for a specific user on a specific list\n */\n async getUserPermissionLevel(listId: string, userId: string): Promise<ListPermissionLevel | null> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n // Check direct user permission\n const userResult = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Type = 'User' AND UserID = '${userId}' AND Status = 'Approved'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n return userResult.Results[0].PermissionLevel as ListPermissionLevel;\n }\n\n // If no direct permission, could check role-based permissions\n // For now, return null\n return null;\n }\n\n /**\n * Share a list with a user\n */\n async shareListWithUser(\n listId: string,\n userId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n\n // Check if share already exists\n const existing = await this.findExistingShare(listId, 'User', userId);\n\n if (existing) {\n // Update existing share\n existing.PermissionLevel = permissionLevel;\n existing.Status = 'Approved';\n const saved = await existing.Save();\n return {\n success: saved,\n shareId: existing.ID,\n message: saved ? 'Share updated successfully' : 'Failed to update share'\n };\n }\n\n // Create new share\n const resourceTypeId = await this.resolveListResourceTypeId();\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n permission.NewRecord();\n permission.ResourceTypeID = resourceTypeId;\n permission.ResourceRecordID = listId;\n permission.Type = 'User';\n permission.UserID = userId;\n permission.PermissionLevel = permissionLevel;\n permission.Status = 'Approved';\n\n const saved = await permission.Save();\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'List shared successfully' : 'Failed to share list'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error sharing list: ${errorMessage}`\n };\n }\n }\n\n /**\n * Share a list with a role\n */\n async shareListWithRole(\n listId: string,\n roleId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n\n // Check if share already exists\n const existing = await this.findExistingShare(listId, 'Role', roleId);\n\n if (existing) {\n // Update existing share\n existing.PermissionLevel = permissionLevel;\n existing.Status = 'Approved';\n const saved = await existing.Save();\n return {\n success: saved,\n shareId: existing.ID,\n message: saved ? 'Share updated successfully' : 'Failed to update share'\n };\n }\n\n // Create new share\n const resourceTypeId = await this.resolveListResourceTypeId();\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n permission.NewRecord();\n permission.ResourceTypeID = resourceTypeId;\n permission.ResourceRecordID = listId;\n permission.Type = 'Role';\n permission.RoleID = roleId;\n permission.PermissionLevel = permissionLevel;\n permission.Status = 'Approved';\n\n const saved = await permission.Save();\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'List shared with role successfully' : 'Failed to share list with role'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error sharing list: ${errorMessage}`\n };\n }\n }\n\n /**\n * Update permission level for an existing share\n */\n async updateSharePermission(\n shareId: string,\n newPermissionLevel: ListPermissionLevel\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n const loaded = await permission.Load(shareId);\n if (!loaded) {\n return {\n success: false,\n message: 'Share not found'\n };\n }\n\n permission.PermissionLevel = newPermissionLevel;\n const saved = await permission.Save();\n\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'Permission updated successfully' : 'Failed to update permission'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error updating permission: ${errorMessage}`\n };\n }\n }\n\n /**\n * Remove a share (revoke access)\n */\n async removeShare(shareId: string): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n const loaded = await permission.Load(shareId);\n if (!loaded) {\n return {\n success: false,\n message: 'Share not found'\n };\n }\n\n const deleted = await permission.Delete();\n\n return {\n success: deleted,\n message: deleted ? 'Share removed successfully' : 'Failed to remove share'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error removing share: ${errorMessage}`\n };\n }\n }\n\n /**\n * Get lists shared with the current user (that they don't own)\n */\n async getListsSharedWithUser(userId: string): Promise<string[]> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND Type = 'User' AND UserID = '${userId}' AND Status = 'Approved'`,\n Fields: ['ResourceRecordID'],\n ResultType: 'simple'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map((r: { ResourceRecordID: string }) => r.ResourceRecordID);\n }\n\n /**\n * Get lists that the user has shared with others\n */\n async getListsSharedByUser(userId: string): Promise<Map<string, number>> {\n // First get all lists owned by the user\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const listsResult = await rv.RunView<MJListEntity>({\n EntityName: 'MJ: Lists',\n ExtraFilter: `UserID = '${userId}'`,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (!listsResult.Success || !listsResult.Results || listsResult.Results.length === 0) {\n return new Map();\n }\n\n const listIds = listsResult.Results.map((l: { ID: string }) => l.ID);\n const listIdFilter = listIds.map((id: string) => `'${id}'`).join(',');\n\n // Get all shares for these lists\n const resourceTypeId = await this.resolveListResourceTypeId();\n const sharesResult = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID IN (${listIdFilter}) AND Status = 'Approved'`,\n Fields: ['ResourceRecordID'],\n ResultType: 'simple'\n });\n\n const shareCountMap = new Map<string, number>();\n\n if (sharesResult.Success && sharesResult.Results) {\n for (const share of sharesResult.Results) {\n const typedShare = share as { ResourceRecordID: string };\n const current = shareCountMap.get(typedShare.ResourceRecordID) || 0;\n shareCountMap.set(typedShare.ResourceRecordID, current + 1);\n }\n }\n\n return shareCountMap;\n }\n\n /**\n * Check if user can share a list (must be owner or have Owner permission)\n */\n async canUserShareList(listId: string, userId: string): Promise<boolean> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n // Check if user is the owner\n const listResult = await rv.RunView<MJListEntity>({\n EntityName: 'MJ: Lists',\n ExtraFilter: `ID = '${listId}' AND UserID = '${userId}'`,\n ResultType: 'simple'\n });\n\n if (listResult.Success && listResult.Results && listResult.Results.length > 0) {\n return true;\n }\n\n // Check if user has Owner permission\n const permissionLevel = await this.getUserPermissionLevel(listId, userId);\n return permissionLevel === 'Owner';\n }\n\n /**\n * Search users for sharing autocomplete\n */\n async searchUsers(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `(Name LIKE '%${searchTerm}%' OR Email LIKE '%${searchTerm}%') AND IsActive = 1`,\n OrderBy: 'Name',\n MaxRows: limit,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map(user => ({\n id: user.ID,\n name: user.Name,\n email: user.Email,\n type: 'User' as const\n }));\n }\n\n /**\n * Search roles for sharing autocomplete\n */\n async searchRoles(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ExtraFilter: `Name LIKE '%${searchTerm}%'`,\n OrderBy: 'Name',\n MaxRows: limit,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map(role => ({\n id: role.ID,\n name: role.Name,\n type: 'Role' as const\n }));\n }\n\n /**\n * Get all available users (cached)\n */\n async getAllUsers(forceRefresh: boolean = false): Promise<MJUserEntity[]> {\n if (!forceRefresh && this.usersCache) {\n return this.usersCache;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: 'IsActive = 1',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.usersCache = result.Results;\n return result.Results;\n }\n\n return [];\n }\n\n /**\n * Get all available roles (cached)\n */\n async getAllRoles(forceRefresh: boolean = false): Promise<MJRoleEntity[]> {\n if (!forceRefresh && this.rolesCache) {\n return this.rolesCache;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.rolesCache = result.Results;\n return result.Results;\n }\n\n return [];\n }\n\n /**\n * Helper to find existing share\n */\n private async findExistingShare(\n listId: string,\n type: 'User' | 'Role',\n recipientId: string\n ): Promise<MJResourcePermissionEntity | null> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n const idField = type === 'User' ? 'UserID' : 'RoleID';\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Type = '${type}' AND ${idField} = '${recipientId}'`,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results && result.Results.length > 0) {\n return result.Results[0];\n }\n\n return null;\n }\n\n /**\n * Convert MJResourcePermissionEntity to ListShareInfo\n */\n private async convertToListShareInfo(permission: MJResourcePermissionEntity): Promise<ListShareInfo | null> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n if (permission.Type === 'User' && permission.UserID) {\n const userResult = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `ID = '${permission.UserID}'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n const user = userResult.Results[0];\n return {\n shareId: permission.ID,\n listId: permission.ResourceRecordID,\n type: 'User',\n recipientId: permission.UserID,\n recipientName: user.Name,\n recipientEmail: user.Email,\n permissionLevel: permission.PermissionLevel as ListPermissionLevel,\n status: permission.Status as 'Approved' | 'Pending' | 'Rejected',\n startSharingAt: permission.StartSharingAt ? new Date(permission.StartSharingAt) : undefined,\n endSharingAt: permission.EndSharingAt ? new Date(permission.EndSharingAt) : undefined\n };\n }\n } else if (permission.Type === 'Role' && permission.RoleID) {\n const roleResult = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ExtraFilter: `ID = '${permission.RoleID}'`,\n ResultType: 'entity_object'\n });\n\n if (roleResult.Success && roleResult.Results && roleResult.Results.length > 0) {\n const role = roleResult.Results[0];\n return {\n shareId: permission.ID,\n listId: permission.ResourceRecordID,\n type: 'Role',\n recipientId: permission.RoleID,\n recipientName: role.Name,\n permissionLevel: permission.PermissionLevel as ListPermissionLevel,\n status: permission.Status as 'Approved' | 'Pending' | 'Rejected',\n startSharingAt: permission.StartSharingAt ? new Date(permission.StartSharingAt) : undefined,\n endSharingAt: permission.EndSharingAt ? new Date(permission.EndSharingAt) : undefined\n };\n }\n }\n\n return null;\n }\n\n /**\n * Get sharing summary for a single list\n */\n async getListSharingSummary(listId: string): Promise<{ listId: string; totalShares: number; userShares: number; roleShares: number; isSharedWithMe: boolean; isSharedByMe: boolean }> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Status = 'Approved'`,\n Fields: ['ID', 'Type'],\n ResultType: 'simple'\n });\n\n let userShares = 0;\n let roleShares = 0;\n\n if (result.Success && result.Results) {\n for (const share of result.Results) {\n const typedShare = share as { ID: string; Type: string };\n if (typedShare.Type === 'User') {\n userShares++;\n } else if (typedShare.Type === 'Role') {\n roleShares++;\n }\n }\n }\n\n return {\n listId,\n totalShares: userShares + roleShares,\n userShares,\n roleShares,\n isSharedWithMe: false, // Would need current user context to determine\n isSharedByMe: userShares + roleShares > 0\n };\n }\n\n /**\n * Clear internal caches\n */\n clearCache(): void {\n this.usersCache = null;\n this.rolesCache = null;\n }\n}\n"]}
1
+ {"version":3,"file":"list-sharing.service.js","sourceRoot":"","sources":["../../../src/lib/services/list-sharing.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { IMetadataProvider, Metadata, RunView, UserInfo } from '@memberjunction/core';\nimport {\n MJListEntity,\n MJResourcePermissionEntity,\n MJResourceTypeEntity,\n MJUserEntity,\n MJRoleEntity,\n ResourceTypeEngine,\n} from '@memberjunction/core-entities';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ListShareInfo, ListPermissionLevel, ShareRecipient, ListShareResult } from '../models/list-sharing.models';\n\n/** Name of the row in `MJ: Resource Types` that scopes List shares. */\nconst LIST_RESOURCE_TYPE_NAME = 'Lists';\n\n/**\n * Service for managing list sharing using the existing ResourcePermission system.\n * Lists are already registered as a ResourceType, so we use ResourcePermissions\n * to share lists with users and roles.\n *\n * Multi-provider note: callers under a non-default provider should set\n * `service.Provider = component.ProviderToUse` before invoking any methods.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ListSharingService {\n private loadingSubject = new BehaviorSubject<boolean>(false);\n public Loading$: Observable<boolean> = this.loadingSubject.asObservable();\n\n /** @deprecated Use {@link Loading$}. */\n public get loading$(): Observable<boolean> {\n return this.Loading$;\n }\n /** @deprecated Use {@link Loading$}. */\n public set loading$(value: Observable<boolean>) {\n this.Loading$ = value;\n }\n\n // Cache for users and roles (for autocomplete)\n private usersCache: MJUserEntity[] | null = null;\n private rolesCache: MJRoleEntity[] | null = null;\n\n private _provider: IMetadataProvider | null = null;\n\n public get Provider(): IMetadataProvider {\n return this._provider ?? Metadata.Provider;\n }\n public set Provider(value: IMetadataProvider | null) {\n this._provider = value;\n }\n\n constructor() {}\n\n /**\n * Resolve the `MJ: Resource Types.ID` for the row named \"Lists\" via the\n * shared `ResourceTypeEngine`. Throws if missing — that indicates a\n * misconfigured environment (seed data never pushed) and we'd rather fail\n * loud than write `MJResourcePermission` rows with an undefined\n * `ResourceTypeID`. `Engine.Config()` is idempotent (BaseEngine semantics)\n * so calling this on every method that needs it is cheap.\n */\n private async resolveListResourceTypeId(): Promise<string> {\n await ResourceTypeEngine.Instance.Config(false, undefined, this.Provider);\n const rt = ResourceTypeEngine.Instance.ByName(LIST_RESOURCE_TYPE_NAME);\n if (!rt) {\n throw new Error(\n `MJ: Resource Types row \"${LIST_RESOURCE_TYPE_NAME}\" not found. ` +\n `Seed metadata/resource-types/ via 'mj sync push' before using ListSharingService.`,\n );\n }\n return rt.ID;\n }\n\n /**\n * Get all shares for a specific list\n */\n async GetListShares(listId: string): Promise<ListShareInfo[]> {\n this.loadingSubject.next(true);\n\n try {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}'`,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n // Convert to ListShareInfo objects with user/role details\n const shares: ListShareInfo[] = [];\n\n for (const permission of result.Results) {\n const shareInfo = await this.convertToListShareInfo(permission);\n if (shareInfo) {\n shares.push(shareInfo);\n }\n }\n\n return shares;\n } finally {\n this.loadingSubject.next(false);\n }\n }\n\n /** @deprecated Use {@link GetListShares}. */\n async getListShares(listId: string): Promise<ListShareInfo[]> {\n return this.GetListShares(listId);\n }\n\n /**\n * Get permission level for a specific user on a specific list\n */\n async GetUserPermissionLevel(listId: string, userId: string): Promise<ListPermissionLevel | null> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n // Check direct user permission\n const userResult = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Type = 'User' AND UserID = '${userId}' AND Status = 'Approved'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n return userResult.Results[0].PermissionLevel as ListPermissionLevel;\n }\n\n // If no direct permission, could check role-based permissions\n // For now, return null\n return null;\n }\n\n /** @deprecated Use {@link GetUserPermissionLevel}. */\n async getUserPermissionLevel(listId: string, userId: string): Promise<ListPermissionLevel | null> {\n return this.GetUserPermissionLevel(listId, userId);\n }\n\n /**\n * Share a list with a user\n */\n async ShareListWithUser(\n listId: string,\n userId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n\n // Check if share already exists\n const existing = await this.findExistingShare(listId, 'User', userId);\n\n if (existing) {\n // Update existing share\n existing.PermissionLevel = permissionLevel;\n existing.Status = 'Approved';\n const saved = await existing.Save();\n return {\n success: saved,\n shareId: existing.ID,\n message: saved ? 'Share updated successfully' : 'Failed to update share'\n };\n }\n\n // Create new share\n const resourceTypeId = await this.resolveListResourceTypeId();\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n permission.NewRecord();\n permission.ResourceTypeID = resourceTypeId;\n permission.ResourceRecordID = listId;\n permission.Type = 'User';\n permission.UserID = userId;\n permission.PermissionLevel = permissionLevel;\n permission.Status = 'Approved';\n\n const saved = await permission.Save();\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'List shared successfully' : 'Failed to share list'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error sharing list: ${errorMessage}`\n };\n }\n }\n\n /** @deprecated Use {@link ShareListWithUser}. */\n async shareListWithUser(\n listId: string,\n userId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n return this.ShareListWithUser(listId, userId, permissionLevel, sharedByUserId);\n }\n\n /**\n * Share a list with a role\n */\n async ShareListWithRole(\n listId: string,\n roleId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n\n // Check if share already exists\n const existing = await this.findExistingShare(listId, 'Role', roleId);\n\n if (existing) {\n // Update existing share\n existing.PermissionLevel = permissionLevel;\n existing.Status = 'Approved';\n const saved = await existing.Save();\n return {\n success: saved,\n shareId: existing.ID,\n message: saved ? 'Share updated successfully' : 'Failed to update share'\n };\n }\n\n // Create new share\n const resourceTypeId = await this.resolveListResourceTypeId();\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n permission.NewRecord();\n permission.ResourceTypeID = resourceTypeId;\n permission.ResourceRecordID = listId;\n permission.Type = 'Role';\n permission.RoleID = roleId;\n permission.PermissionLevel = permissionLevel;\n permission.Status = 'Approved';\n\n const saved = await permission.Save();\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'List shared with role successfully' : 'Failed to share list with role'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error sharing list: ${errorMessage}`\n };\n }\n }\n\n /** @deprecated Use {@link ShareListWithRole}. */\n async shareListWithRole(\n listId: string,\n roleId: string,\n permissionLevel: ListPermissionLevel,\n sharedByUserId: string\n ): Promise<ListShareResult> {\n return this.ShareListWithRole(listId, roleId, permissionLevel, sharedByUserId);\n }\n\n /**\n * Update permission level for an existing share\n */\n async UpdateSharePermission(\n shareId: string,\n newPermissionLevel: ListPermissionLevel\n ): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n const loaded = await permission.Load(shareId);\n if (!loaded) {\n return {\n success: false,\n message: 'Share not found'\n };\n }\n\n permission.PermissionLevel = newPermissionLevel;\n const saved = await permission.Save();\n\n return {\n success: saved,\n shareId: permission.ID,\n message: saved ? 'Permission updated successfully' : 'Failed to update permission'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error updating permission: ${errorMessage}`\n };\n }\n }\n\n /** @deprecated Use {@link UpdateSharePermission}. */\n async updateSharePermission(\n shareId: string,\n newPermissionLevel: ListPermissionLevel\n ): Promise<ListShareResult> {\n return this.UpdateSharePermission(shareId, newPermissionLevel);\n }\n\n /**\n * Remove a share (revoke access)\n */\n async RemoveShare(shareId: string): Promise<ListShareResult> {\n try {\n const md = this.Provider;\n const permission = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n const loaded = await permission.Load(shareId);\n if (!loaded) {\n return {\n success: false,\n message: 'Share not found'\n };\n }\n\n const deleted = await permission.Delete();\n\n return {\n success: deleted,\n message: deleted ? 'Share removed successfully' : 'Failed to remove share'\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n message: `Error removing share: ${errorMessage}`\n };\n }\n }\n\n /** @deprecated Use {@link RemoveShare}. */\n async removeShare(shareId: string): Promise<ListShareResult> {\n return this.RemoveShare(shareId);\n }\n\n /**\n * Get lists shared with the current user (that they don't own)\n */\n async GetListsSharedWithUser(userId: string): Promise<string[]> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND Type = 'User' AND UserID = '${userId}' AND Status = 'Approved'`,\n Fields: ['ResourceRecordID'],\n ResultType: 'simple'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map((r: { ResourceRecordID: string }) => r.ResourceRecordID);\n }\n\n /** @deprecated Use {@link GetListsSharedWithUser}. */\n async getListsSharedWithUser(userId: string): Promise<string[]> {\n return this.GetListsSharedWithUser(userId);\n }\n\n /**\n * Get lists that the user has shared with others\n */\n async GetListsSharedByUser(userId: string): Promise<Map<string, number>> {\n // First get all lists owned by the user\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const listsResult = await rv.RunView<MJListEntity>({\n EntityName: 'MJ: Lists',\n ExtraFilter: `UserID = '${userId}'`,\n Fields: ['ID'],\n ResultType: 'simple'\n });\n\n if (!listsResult.Success || !listsResult.Results || listsResult.Results.length === 0) {\n return new Map();\n }\n\n const listIds = listsResult.Results.map((l: { ID: string }) => l.ID);\n const listIdFilter = listIds.map((id: string) => `'${id}'`).join(',');\n\n // Get all shares for these lists\n const resourceTypeId = await this.resolveListResourceTypeId();\n const sharesResult = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID IN (${listIdFilter}) AND Status = 'Approved'`,\n Fields: ['ResourceRecordID'],\n ResultType: 'simple'\n });\n\n const shareCountMap = new Map<string, number>();\n\n if (sharesResult.Success && sharesResult.Results) {\n for (const share of sharesResult.Results) {\n const typedShare = share as { ResourceRecordID: string };\n const current = shareCountMap.get(typedShare.ResourceRecordID) || 0;\n shareCountMap.set(typedShare.ResourceRecordID, current + 1);\n }\n }\n\n return shareCountMap;\n }\n\n /** @deprecated Use {@link GetListsSharedByUser}. */\n async getListsSharedByUser(userId: string): Promise<Map<string, number>> {\n return this.GetListsSharedByUser(userId);\n }\n\n /**\n * Check if user can share a list (must be owner or have Owner permission)\n */\n async CanUserShareList(listId: string, userId: string): Promise<boolean> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n // Check if user is the owner\n const listResult = await rv.RunView<MJListEntity>({\n EntityName: 'MJ: Lists',\n ExtraFilter: `ID = '${listId}' AND UserID = '${userId}'`,\n ResultType: 'simple'\n });\n\n if (listResult.Success && listResult.Results && listResult.Results.length > 0) {\n return true;\n }\n\n // Check if user has Owner permission\n const permissionLevel = await this.GetUserPermissionLevel(listId, userId);\n return permissionLevel === 'Owner';\n }\n\n /** @deprecated Use {@link CanUserShareList}. */\n async canUserShareList(listId: string, userId: string): Promise<boolean> {\n return this.CanUserShareList(listId, userId);\n }\n\n /**\n * Search users for sharing autocomplete\n */\n async SearchUsers(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `(Name LIKE '%${searchTerm}%' OR Email LIKE '%${searchTerm}%') AND IsActive = 1`,\n OrderBy: 'Name',\n MaxRows: limit,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map(user => ({\n id: user.ID,\n name: user.Name,\n email: user.Email,\n type: 'User' as const\n }));\n }\n\n /** @deprecated Use {@link SearchUsers}. */\n async searchUsers(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n return this.SearchUsers(searchTerm, limit);\n }\n\n /**\n * Search roles for sharing autocomplete\n */\n async SearchRoles(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ExtraFilter: `Name LIKE '%${searchTerm}%'`,\n OrderBy: 'Name',\n MaxRows: limit,\n ResultType: 'entity_object'\n });\n\n if (!result.Success || !result.Results) {\n return [];\n }\n\n return result.Results.map(role => ({\n id: role.ID,\n name: role.Name,\n type: 'Role' as const\n }));\n }\n\n /** @deprecated Use {@link SearchRoles}. */\n async searchRoles(searchTerm: string, limit: number = 10): Promise<ShareRecipient[]> {\n return this.SearchRoles(searchTerm, limit);\n }\n\n /**\n * Get all available users (cached)\n */\n async GetAllUsers(forceRefresh: boolean = false): Promise<MJUserEntity[]> {\n if (!forceRefresh && this.usersCache) {\n return this.usersCache;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: 'IsActive = 1',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.usersCache = result.Results;\n return result.Results;\n }\n\n return [];\n }\n\n /** @deprecated Use {@link GetAllUsers}. */\n async getAllUsers(forceRefresh: boolean = false): Promise<MJUserEntity[]> {\n return this.GetAllUsers(forceRefresh);\n }\n\n /**\n * Get all available roles (cached)\n */\n async GetAllRoles(forceRefresh: boolean = false): Promise<MJRoleEntity[]> {\n if (!forceRefresh && this.rolesCache) {\n return this.rolesCache;\n }\n\n const rv = RunView.FromMetadataProvider(this.Provider);\n const result = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.rolesCache = result.Results;\n return result.Results;\n }\n\n return [];\n }\n\n /** @deprecated Use {@link GetAllRoles}. */\n async getAllRoles(forceRefresh: boolean = false): Promise<MJRoleEntity[]> {\n return this.GetAllRoles(forceRefresh);\n }\n\n /**\n * Helper to find existing share\n */\n private async findExistingShare(\n listId: string,\n type: 'User' | 'Role',\n recipientId: string\n ): Promise<MJResourcePermissionEntity | null> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n const idField = type === 'User' ? 'UserID' : 'RoleID';\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Type = '${type}' AND ${idField} = '${recipientId}'`,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results && result.Results.length > 0) {\n return result.Results[0];\n }\n\n return null;\n }\n\n /**\n * Convert MJResourcePermissionEntity to ListShareInfo\n */\n private async convertToListShareInfo(permission: MJResourcePermissionEntity): Promise<ListShareInfo | null> {\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n if (permission.Type === 'User' && permission.UserID) {\n const userResult = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `ID = '${permission.UserID}'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n const user = userResult.Results[0];\n return {\n shareId: permission.ID,\n listId: permission.ResourceRecordID,\n type: 'User',\n recipientId: permission.UserID,\n recipientName: user.Name,\n recipientEmail: user.Email,\n permissionLevel: permission.PermissionLevel as ListPermissionLevel,\n status: permission.Status as 'Approved' | 'Pending' | 'Rejected',\n startSharingAt: permission.StartSharingAt ? new Date(permission.StartSharingAt) : undefined,\n endSharingAt: permission.EndSharingAt ? new Date(permission.EndSharingAt) : undefined\n };\n }\n } else if (permission.Type === 'Role' && permission.RoleID) {\n const roleResult = await rv.RunView<MJRoleEntity>({\n EntityName: 'MJ: Roles',\n ExtraFilter: `ID = '${permission.RoleID}'`,\n ResultType: 'entity_object'\n });\n\n if (roleResult.Success && roleResult.Results && roleResult.Results.length > 0) {\n const role = roleResult.Results[0];\n return {\n shareId: permission.ID,\n listId: permission.ResourceRecordID,\n type: 'Role',\n recipientId: permission.RoleID,\n recipientName: role.Name,\n permissionLevel: permission.PermissionLevel as ListPermissionLevel,\n status: permission.Status as 'Approved' | 'Pending' | 'Rejected',\n startSharingAt: permission.StartSharingAt ? new Date(permission.StartSharingAt) : undefined,\n endSharingAt: permission.EndSharingAt ? new Date(permission.EndSharingAt) : undefined\n };\n }\n }\n\n return null;\n }\n\n /**\n * Get sharing summary for a single list\n */\n async GetListSharingSummary(listId: string): Promise<{ listId: string; totalShares: number; userShares: number; roleShares: number; isSharedWithMe: boolean; isSharedByMe: boolean }> {\n const resourceTypeId = await this.resolveListResourceTypeId();\n const rv = RunView.FromMetadataProvider(this.Provider);\n\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID = '${resourceTypeId}' AND ResourceRecordID = '${listId}' AND Status = 'Approved'`,\n Fields: ['ID', 'Type'],\n ResultType: 'simple'\n });\n\n let userShares = 0;\n let roleShares = 0;\n\n if (result.Success && result.Results) {\n for (const share of result.Results) {\n const typedShare = share as { ID: string; Type: string };\n if (typedShare.Type === 'User') {\n userShares++;\n } else if (typedShare.Type === 'Role') {\n roleShares++;\n }\n }\n }\n\n return {\n listId,\n totalShares: userShares + roleShares,\n userShares,\n roleShares,\n isSharedWithMe: false, // Would need current user context to determine\n isSharedByMe: userShares + roleShares > 0\n };\n }\n\n /** @deprecated Use {@link GetListSharingSummary}. */\n async getListSharingSummary(listId: string): Promise<{ listId: string; totalShares: number; userShares: number; roleShares: number; isSharedWithMe: boolean; isSharedByMe: boolean }> {\n return this.GetListSharingSummary(listId);\n }\n\n /**\n * Clear internal caches\n */\n ClearCache(): void {\n this.usersCache = null;\n this.rolesCache = null;\n }\n\n /** @deprecated Use {@link ClearCache}. */\n clearCache(): void {\n return this.ClearCache();\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-list-management",
3
- "version": "6.1.4",
3
+ "version": "6.2.0-edge.1",
4
4
  "description": "MemberJunction: Angular Components for managing entity list membership with beautiful, responsive UI",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -18,7 +18,7 @@
18
18
  "devDependencies": {
19
19
  "@angular/compiler": "21.2.22",
20
20
  "@angular/compiler-cli": "21.2.22",
21
- "@memberjunction/ng-test-utils": "6.1.4",
21
+ "@memberjunction/ng-test-utils": "6.2.0-edge.1",
22
22
  "vitest": "^4.0.18"
23
23
  },
24
24
  "peerDependencies": {
@@ -28,15 +28,15 @@
28
28
  "rxjs": "^7.8.2"
29
29
  },
30
30
  "dependencies": {
31
- "@memberjunction/core": "6.1.4",
32
- "@memberjunction/core-entities": "6.1.4",
33
- "@memberjunction/global": "6.1.4",
34
- "@memberjunction/graphql-dataprovider": "6.1.4",
35
- "@memberjunction/lists-base": "6.1.4",
36
- "@memberjunction/ng-base-types": "6.1.4",
37
- "@memberjunction/ng-container-directives": "6.1.4",
38
- "@memberjunction/ng-shared-generic": "6.1.4",
39
- "@memberjunction/ng-ui-components": "6.1.4",
31
+ "@memberjunction/core": "6.2.0-edge.1",
32
+ "@memberjunction/core-entities": "6.2.0-edge.1",
33
+ "@memberjunction/global": "6.2.0-edge.1",
34
+ "@memberjunction/graphql-dataprovider": "6.2.0-edge.1",
35
+ "@memberjunction/lists-base": "6.2.0-edge.1",
36
+ "@memberjunction/ng-base-types": "6.2.0-edge.1",
37
+ "@memberjunction/ng-container-directives": "6.2.0-edge.1",
38
+ "@memberjunction/ng-shared-generic": "6.2.0-edge.1",
39
+ "@memberjunction/ng-ui-components": "6.2.0-edge.1",
40
40
  "tslib": "^2.8.1"
41
41
  },
42
42
  "sideEffects": false,