mftsccs-node 0.2.15 → 0.2.17

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,144 @@
1
+ /**
2
+ * Data models for V1 Access Control Service
3
+ * These models mirror the C# FreeSchema.Models.AccessControl types
4
+ */
5
+ /**
6
+ * Permission set enum (bitwise flags)
7
+ * Mirrors C# PermissionSet enum
8
+ */
9
+ export declare enum PermissionSet {
10
+ None = 0,
11
+ Read = 1,// 1
12
+ Write = 2,// 2
13
+ Execute = 4,// 4
14
+ Delete = 8
15
+ }
16
+ /**
17
+ * Request model for single access operations (check, assign, revoke)
18
+ */
19
+ export interface AccessRequest {
20
+ accessId?: number | null;
21
+ permission: string;
22
+ entityId?: number | null;
23
+ }
24
+ /**
25
+ * Result model for access operations
26
+ */
27
+ export interface AccessResult {
28
+ accessId: number;
29
+ permission: string;
30
+ entityId?: number | null;
31
+ hasAccess: boolean;
32
+ }
33
+ /**
34
+ * Target for bulk access operations
35
+ */
36
+ export interface BulkAccessTarget {
37
+ entityId?: number | null;
38
+ permissions: string[];
39
+ }
40
+ /**
41
+ * Request model for bulk access operations
42
+ */
43
+ export interface BulkAccessRequest {
44
+ accessId?: number | null;
45
+ targets: BulkAccessTarget[];
46
+ }
47
+ /**
48
+ * Request model for bulk check access operations
49
+ */
50
+ export interface BulkCheckAccessRequest {
51
+ accessId: number;
52
+ targets: BulkAccessTarget[];
53
+ }
54
+ /**
55
+ * Request model for access inheritance operations
56
+ */
57
+ export interface AccessInheritanceRequest {
58
+ accessId?: number | null;
59
+ connectionTypeId?: number;
60
+ enable?: boolean;
61
+ }
62
+ /**
63
+ * Request model for super admin operations
64
+ */
65
+ export interface SuperAdminRequest {
66
+ accessId?: number | null;
67
+ }
68
+ /**
69
+ * Standard API response wrapper for access control endpoints
70
+ */
71
+ export interface AccessControlAPIResponse<T = unknown> {
72
+ status: boolean;
73
+ message?: string;
74
+ data?: T;
75
+ }
76
+ /**
77
+ * Valid permissions for validation
78
+ */
79
+ export declare const VALID_PERMISSIONS: Set<string>;
80
+ /**
81
+ * Check if a permission string is valid
82
+ */
83
+ export declare function isValidPermission(permission: string): boolean;
84
+ /**
85
+ * Request model for adding access by entity
86
+ * Mirrors C# AddAccessByEntityRequest
87
+ */
88
+ export interface AddAccessByEntityRequest {
89
+ conceptId: number;
90
+ access: string;
91
+ entityId: number;
92
+ makePublic: boolean;
93
+ nestedAccessLevel: number;
94
+ }
95
+ /**
96
+ * Request model for adding public access to concept
97
+ * Mirrors C# AddPublicAccessToConcept
98
+ */
99
+ export interface AddPublicAccessToConcept {
100
+ conceptId: number;
101
+ conceptIdList: number[];
102
+ accessList: string[];
103
+ nestedAccessLevel: number;
104
+ }
105
+ /**
106
+ * Request model for bulk adding access by entity
107
+ * Mirrors C# AddAccessByEntityBulkRequest
108
+ */
109
+ export interface AddAccessByEntityBulkRequest {
110
+ conceptId: number;
111
+ conceptIdList: number[];
112
+ entityIdList: number[];
113
+ accessList: string[];
114
+ nestedAccessLevel: number;
115
+ }
116
+ /**
117
+ * Request model for adding access by user
118
+ * Mirrors C# AddAccessByUserRequest
119
+ */
120
+ export interface AddAccessByUserRequest {
121
+ conceptId: number;
122
+ access: string;
123
+ userId: number;
124
+ makePublic: boolean;
125
+ }
126
+ /**
127
+ * Request model for checking bulk access
128
+ * Mirrors C# CheckAccessBulk
129
+ */
130
+ export interface CheckAccessBulk {
131
+ userId: number;
132
+ access: string;
133
+ conceptIdList: number[];
134
+ connectionIdList: number[];
135
+ }
136
+ /**
137
+ * Alternative API response format
138
+ * Mirrors C# AccessControlApiResponse
139
+ */
140
+ export interface AccessControlApiResponse {
141
+ success?: boolean | null;
142
+ data?: unknown;
143
+ message?: string | null;
144
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * APIClientService
3
+ *
4
+ * API client service for Access Control endpoints.
5
+ * Provides typed HTTP methods for all access control API operations.
6
+ *
7
+ * This is the TypeScript equivalent of the C# APIClientService class.
8
+ */
9
+ import { AccessRequest, AccessResult, AccessControlAPIResponse, BulkAccessRequest, BulkCheckAccessRequest, AccessInheritanceRequest, SuperAdminRequest } from '../../DataStructures/AccessControl/AccessControlModels';
10
+ export interface IAPIClientService {
11
+ assignAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
12
+ checkAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
13
+ revokeAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
14
+ assignAccessBulkAsync(request: BulkAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
15
+ revokeAccessBulkAsync(request: BulkAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
16
+ checkAccessBulkAsync(request: BulkCheckAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
17
+ getAccessByIdAsync(accessId: number): Promise<AccessControlAPIResponse<AccessResult[]>>;
18
+ setAccessInheritanceAsync(request: AccessInheritanceRequest): Promise<AccessControlAPIResponse>;
19
+ getAccessInheritanceStatusAsync(accessId: number, connectionTypeId?: number): Promise<AccessControlAPIResponse>;
20
+ assignSuperAdminAccessAsync(request: SuperAdminRequest): Promise<AccessControlAPIResponse>;
21
+ revokeSuperAdminAccessAsync(request: SuperAdminRequest): Promise<AccessControlAPIResponse>;
22
+ checkSuperAdminStatusAsync(accessId: number): Promise<AccessControlAPIResponse>;
23
+ }
24
+ export declare class APIClientService implements IAPIClientService {
25
+ private readonly baseUrl;
26
+ constructor(baseUrl?: string);
27
+ /**
28
+ * Perform a GET request and return typed response
29
+ */
30
+ private getAsync;
31
+ /**
32
+ * Perform a POST request with JSON body and return typed response
33
+ */
34
+ private postAsync;
35
+ /**
36
+ * Perform a DELETE request with optional JSON body and return typed response
37
+ */
38
+ private deleteAsync;
39
+ /**
40
+ * Assign access to an entity
41
+ */
42
+ assignAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
43
+ /**
44
+ * Check if an entity has access
45
+ */
46
+ checkAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
47
+ /**
48
+ * Revoke access from an entity
49
+ */
50
+ revokeAccessAsync(request: AccessRequest): Promise<AccessControlAPIResponse<AccessResult>>;
51
+ /**
52
+ * Assign access to multiple targets in bulk
53
+ */
54
+ assignAccessBulkAsync(request: BulkAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
55
+ /**
56
+ * Revoke access from multiple targets in bulk
57
+ */
58
+ revokeAccessBulkAsync(request: BulkAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
59
+ /**
60
+ * Check access for multiple targets in bulk
61
+ */
62
+ checkAccessBulkAsync(request: BulkCheckAccessRequest): Promise<AccessControlAPIResponse<AccessResult[]>>;
63
+ /**
64
+ * Get all access entries for a specific accessId
65
+ */
66
+ getAccessByIdAsync(accessId: number): Promise<AccessControlAPIResponse<AccessResult[]>>;
67
+ /**
68
+ * Set access inheritance for an access ID
69
+ */
70
+ setAccessInheritanceAsync(request: AccessInheritanceRequest): Promise<AccessControlAPIResponse>;
71
+ /**
72
+ * Get access inheritance status
73
+ */
74
+ getAccessInheritanceStatusAsync(accessId: number, connectionTypeId?: number): Promise<AccessControlAPIResponse>;
75
+ /**
76
+ * Assign super admin access
77
+ */
78
+ assignSuperAdminAccessAsync(request: SuperAdminRequest): Promise<AccessControlAPIResponse>;
79
+ /**
80
+ * Revoke super admin access
81
+ */
82
+ revokeSuperAdminAccessAsync(request: SuperAdminRequest): Promise<AccessControlAPIResponse>;
83
+ /**
84
+ * Check super admin status
85
+ */
86
+ checkSuperAdminStatusAsync(accessId: number): Promise<AccessControlAPIResponse>;
87
+ }
@@ -1,19 +1,74 @@
1
- import { PermissionSet } from './PermissionSet';
2
- export declare class AccessControlCacheService {
3
- private readonly userAccessCache;
4
- private readonly publicAccessCache;
5
- private readonly baseUrl;
6
- constructor();
7
- loadCacheFromApi(entityId?: number): Promise<void>;
8
- loadCacheFromJson(jsonData: any): void;
9
- hasAccess(entityId: number, conceptId: number, required: PermissionSet): Promise<boolean>;
10
- getAccessibleConcepts(entityId: number, conceptIds: number[], required: PermissionSet): Promise<number[]>;
11
- getAccessByUser(entityId: number): Promise<Map<number, PermissionSet>>;
12
- getAccessByConcept(conceptId: number): Promise<Map<number, PermissionSet>>;
13
- deleteRecordByUserId(entityId: number): void;
14
- deletePublicAccessRecordById(conceptId: number): void;
15
- clearCache(): void;
16
- getConceptsByPublicAccess(): Promise<Record<number, string[]>>;
17
- hasPublicAccess(conceptId: number, required: PermissionSet): Promise<boolean>;
18
- getConceptsWithPublicAccess(conceptIds: number[], required: PermissionSet): Promise<number[]>;
1
+ /**
2
+ * CacheService
3
+ *
4
+ * Thread-safe in-memory cache for access checks.
5
+ * Supports single and bulk queries with secondary indexes.
6
+ * Key format: "{accessId}:{permission}:{entityId}"
7
+ * Value: boolean (HasAccess)
8
+ *
9
+ * This is the TypeScript equivalent of the C# CacheService class.
10
+ */
11
+ export interface ICacheService {
12
+ get(accessId: number, permission: string, entityId?: number | null): boolean | null;
13
+ set(accessId: number, permission: string, entityId: number | null | undefined, hasAccess: boolean): void;
14
+ remove(accessId: number, permission: string, entityId?: number | null): void;
15
+ clear(): void;
16
+ getPermissionsByAccessAndEntity(accessId: number, entityId?: number | null): Map<string, boolean>;
17
+ getPermissionsByAccess(accessId: number): Map<string, boolean>;
18
+ getPermissionsByEntity(entityId: number): Map<string, boolean>;
19
+ getSuperAdmin(entityId: number): boolean | null;
20
+ setSuperAdmin(entityId: number, isSuperAdmin: boolean): void;
21
+ clearSuperAdminCache(): void;
22
+ }
23
+ export declare class CacheService implements ICacheService {
24
+ private readonly accessCache;
25
+ private readonly accessIndex;
26
+ private readonly entityIndex;
27
+ private static readonly superAdminCache;
28
+ /**
29
+ * Generate a cache key from accessId, permission, and entityId
30
+ */
31
+ private generateKey;
32
+ /**
33
+ * Get cached access. Returns true/false if present, null if not cached.
34
+ */
35
+ get(accessId: number, permission: string, entityId?: number | null): boolean | null;
36
+ /**
37
+ * Set or update cached access
38
+ */
39
+ set(accessId: number, permission: string, entityId: number | null | undefined, hasAccess: boolean): void;
40
+ /**
41
+ * Remove a cached entry (e.g., after revoke)
42
+ */
43
+ remove(accessId: number, permission: string, entityId?: number | null): void;
44
+ /**
45
+ * Clear all cached access entries
46
+ */
47
+ clear(): void;
48
+ /**
49
+ * Get all permissions for a specific accessId + entityId
50
+ */
51
+ getPermissionsByAccessAndEntity(accessId: number, entityId?: number | null): Map<string, boolean>;
52
+ /**
53
+ * Get all permissions for a specific accessId across all entities
54
+ * Returns a Map with key tuple (entityId, permission) and value hasAccess
55
+ */
56
+ getPermissionsByAccess(accessId: number): Map<string, boolean>;
57
+ /**
58
+ * Get all permissions for a specific entity across all accessIds
59
+ * Returns a Map with key tuple (accessId, permission) and value hasAccess
60
+ */
61
+ getPermissionsByEntity(entityId: number): Map<string, boolean>;
62
+ /**
63
+ * Get cached super admin status for an entity
64
+ */
65
+ getSuperAdmin(entityId: number): boolean | null;
66
+ /**
67
+ * Set super admin status for an entity
68
+ */
69
+ setSuperAdmin(entityId: number, isSuperAdmin: boolean): void;
70
+ /**
71
+ * Clear the super admin cache
72
+ */
73
+ clearSuperAdminCache(): void;
19
74
  }