@23blocks/block-files 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -925,6 +925,237 @@ function createDelegationsService(transport, _config) {
925
925
  };
926
926
  }
927
927
 
928
+ function parseAccessLevel(value) {
929
+ const level = parseString(value);
930
+ if (level === 'read' || level === 'write' || level === 'admin') {
931
+ return level;
932
+ }
933
+ return 'read';
934
+ }
935
+ const fileAccessMapper = {
936
+ type: 'FileAccess',
937
+ map: (resource)=>({
938
+ id: resource.id,
939
+ uniqueId: parseString(resource.attributes['unique_id']) || resource.id,
940
+ createdAt: parseDate(resource.attributes['created_at']) || new Date(),
941
+ updatedAt: parseDate(resource.attributes['updated_at']) || new Date(),
942
+ fileUniqueId: parseString(resource.attributes['file_unique_id']) || '',
943
+ granteeUniqueId: parseString(resource.attributes['grantee_unique_id']) || '',
944
+ granteeType: parseString(resource.attributes['grantee_type']) || '',
945
+ accessLevel: parseAccessLevel(resource.attributes['access_level']),
946
+ grantedByUniqueId: parseString(resource.attributes['granted_by_unique_id']) || '',
947
+ expiresAt: parseDate(resource.attributes['expires_at']),
948
+ accessedAt: parseDate(resource.attributes['accessed_at']),
949
+ accessCount: parseNumber(resource.attributes['access_count']),
950
+ status: parseStatus(resource.attributes['status']),
951
+ enabled: parseBoolean(resource.attributes['enabled']),
952
+ payload: resource.attributes['payload']
953
+ })
954
+ };
955
+
956
+ function createFileAccessService(transport, _config) {
957
+ return {
958
+ async list (params) {
959
+ const queryParams = {};
960
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
961
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
962
+ if (params == null ? void 0 : params.fileUniqueId) queryParams['file_unique_id'] = params.fileUniqueId;
963
+ if (params == null ? void 0 : params.granteeUniqueId) queryParams['grantee_unique_id'] = params.granteeUniqueId;
964
+ if (params == null ? void 0 : params.granteeType) queryParams['grantee_type'] = params.granteeType;
965
+ if (params == null ? void 0 : params.accessLevel) queryParams['access_level'] = params.accessLevel;
966
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
967
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
968
+ const response = await transport.get('/file_accesses', {
969
+ params: queryParams
970
+ });
971
+ return decodePageResult(response, fileAccessMapper);
972
+ },
973
+ async get (uniqueId) {
974
+ const response = await transport.get(`/file_accesses/${uniqueId}`);
975
+ return decodeOne(response, fileAccessMapper);
976
+ },
977
+ async grant (data) {
978
+ const response = await transport.post('/file_accesses', {
979
+ file_access: {
980
+ file_unique_id: data.fileUniqueId,
981
+ grantee_unique_id: data.granteeUniqueId,
982
+ grantee_type: data.granteeType,
983
+ access_level: data.accessLevel,
984
+ expires_at: data.expiresAt,
985
+ payload: data.payload
986
+ }
987
+ });
988
+ return decodeOne(response, fileAccessMapper);
989
+ },
990
+ async update (uniqueId, data) {
991
+ const response = await transport.put(`/file_accesses/${uniqueId}`, {
992
+ file_access: {
993
+ access_level: data.accessLevel,
994
+ expires_at: data.expiresAt,
995
+ enabled: data.enabled,
996
+ status: data.status,
997
+ payload: data.payload
998
+ }
999
+ });
1000
+ return decodeOne(response, fileAccessMapper);
1001
+ },
1002
+ async revoke (uniqueId) {
1003
+ await transport.delete(`/file_accesses/${uniqueId}`);
1004
+ },
1005
+ async listByFile (fileUniqueId, params) {
1006
+ const queryParams = {
1007
+ file_unique_id: fileUniqueId
1008
+ };
1009
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1010
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1011
+ if (params == null ? void 0 : params.accessLevel) queryParams['access_level'] = params.accessLevel;
1012
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
1013
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1014
+ const response = await transport.get('/file_accesses', {
1015
+ params: queryParams
1016
+ });
1017
+ return decodePageResult(response, fileAccessMapper);
1018
+ },
1019
+ async listByGrantee (granteeUniqueId, granteeType, params) {
1020
+ const queryParams = {
1021
+ grantee_unique_id: granteeUniqueId,
1022
+ grantee_type: granteeType
1023
+ };
1024
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1025
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1026
+ if (params == null ? void 0 : params.accessLevel) queryParams['access_level'] = params.accessLevel;
1027
+ if (params == null ? void 0 : params.status) queryParams['status'] = params.status;
1028
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1029
+ const response = await transport.get('/file_accesses', {
1030
+ params: queryParams
1031
+ });
1032
+ return decodePageResult(response, fileAccessMapper);
1033
+ },
1034
+ async checkAccess (fileUniqueId, granteeUniqueId) {
1035
+ try {
1036
+ const response = await transport.get('/file_accesses/check', {
1037
+ params: {
1038
+ file_unique_id: fileUniqueId,
1039
+ grantee_unique_id: granteeUniqueId
1040
+ }
1041
+ });
1042
+ return decodeOne(response, fileAccessMapper);
1043
+ } catch (e) {
1044
+ return null;
1045
+ }
1046
+ }
1047
+ };
1048
+ }
1049
+
1050
+ const fileAccessRequestMapper = {
1051
+ type: 'file_access_request',
1052
+ map: (resource)=>{
1053
+ var _resource_attributes, _resource_attributes1, _resource_attributes2, _resource_attributes3, _resource_attributes4, _resource_attributes5, _resource_attributes6, _resource_attributes7, _resource_attributes8, _resource_attributes9, _resource_attributes10, _resource_attributes11, _resource_attributes12, _resource_attributes13, _resource_attributes14, _resource_attributes15, _resource_attributes16, _resource_attributes17;
1054
+ var _parseDate, _parseDate1, _parseString, _parseString1, _parseString2, _parseString3, _parseString4;
1055
+ return {
1056
+ uniqueId: resource.id,
1057
+ createdAt: (_parseDate = parseDate((_resource_attributes = resource.attributes) == null ? void 0 : _resource_attributes['created_at'])) != null ? _parseDate : new Date(),
1058
+ updatedAt: (_parseDate1 = parseDate((_resource_attributes1 = resource.attributes) == null ? void 0 : _resource_attributes1['updated_at'])) != null ? _parseDate1 : new Date(),
1059
+ fileUniqueId: (_parseString = parseString((_resource_attributes2 = resource.attributes) == null ? void 0 : _resource_attributes2['file_unique_id'])) != null ? _parseString : '',
1060
+ fileName: parseString((_resource_attributes3 = resource.attributes) == null ? void 0 : _resource_attributes3['file_name']),
1061
+ requesterUniqueId: (_parseString1 = parseString((_resource_attributes4 = resource.attributes) == null ? void 0 : _resource_attributes4['requester_unique_id'])) != null ? _parseString1 : '',
1062
+ requesterName: parseString((_resource_attributes5 = resource.attributes) == null ? void 0 : _resource_attributes5['requester_name']),
1063
+ requesterEmail: parseString((_resource_attributes6 = resource.attributes) == null ? void 0 : _resource_attributes6['requester_email']),
1064
+ requesterType: (_parseString2 = parseString((_resource_attributes7 = resource.attributes) == null ? void 0 : _resource_attributes7['requester_type'])) != null ? _parseString2 : 'user',
1065
+ requestedAccessLevel: (_parseString3 = parseString((_resource_attributes8 = resource.attributes) == null ? void 0 : _resource_attributes8['requested_access_level'])) != null ? _parseString3 : 'view',
1066
+ message: parseString((_resource_attributes9 = resource.attributes) == null ? void 0 : _resource_attributes9['message']),
1067
+ requestStatus: (_parseString4 = parseString((_resource_attributes10 = resource.attributes) == null ? void 0 : _resource_attributes10['request_status'])) != null ? _parseString4 : 'pending',
1068
+ reviewedByUniqueId: parseString((_resource_attributes11 = resource.attributes) == null ? void 0 : _resource_attributes11['reviewed_by_unique_id']),
1069
+ reviewedAt: parseDate((_resource_attributes12 = resource.attributes) == null ? void 0 : _resource_attributes12['reviewed_at']),
1070
+ reviewNote: parseString((_resource_attributes13 = resource.attributes) == null ? void 0 : _resource_attributes13['review_note']),
1071
+ expiresAt: parseDate((_resource_attributes14 = resource.attributes) == null ? void 0 : _resource_attributes14['expires_at']),
1072
+ status: parseStatus((_resource_attributes15 = resource.attributes) == null ? void 0 : _resource_attributes15['status']),
1073
+ enabled: parseBoolean((_resource_attributes16 = resource.attributes) == null ? void 0 : _resource_attributes16['enabled']),
1074
+ payload: (_resource_attributes17 = resource.attributes) == null ? void 0 : _resource_attributes17['payload']
1075
+ };
1076
+ }
1077
+ };
1078
+
1079
+ /**
1080
+ * Create the File Access Requests service
1081
+ */ function createFileAccessRequestsService(transport, _config) {
1082
+ return {
1083
+ async list (params) {
1084
+ const queryParams = {};
1085
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1086
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1087
+ if (params == null ? void 0 : params.fileUniqueId) queryParams['file_unique_id'] = params.fileUniqueId;
1088
+ if (params == null ? void 0 : params.requesterUniqueId) queryParams['requester_unique_id'] = params.requesterUniqueId;
1089
+ if (params == null ? void 0 : params.requestStatus) queryParams['request_status'] = params.requestStatus;
1090
+ if (params == null ? void 0 : params.dateFrom) queryParams['date_from'] = params.dateFrom;
1091
+ if (params == null ? void 0 : params.dateTo) queryParams['date_to'] = params.dateTo;
1092
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1093
+ const response = await transport.get('/file_access_requests', {
1094
+ params: queryParams
1095
+ });
1096
+ return decodePageResult(response, fileAccessRequestMapper);
1097
+ },
1098
+ async get (uniqueId) {
1099
+ const response = await transport.get(`/file_access_requests/${uniqueId}`);
1100
+ return decodeOne(response, fileAccessRequestMapper);
1101
+ },
1102
+ async create (data) {
1103
+ const response = await transport.post('/file_access_requests', {
1104
+ file_access_request: {
1105
+ file_unique_id: data.fileUniqueId,
1106
+ requested_access_level: data.requestedAccessLevel,
1107
+ message: data.message,
1108
+ payload: data.payload
1109
+ }
1110
+ });
1111
+ return decodeOne(response, fileAccessRequestMapper);
1112
+ },
1113
+ async review (uniqueId, decision) {
1114
+ const response = await transport.put(`/file_access_requests/${uniqueId}/review`, {
1115
+ file_access_request: {
1116
+ decision: decision.decision,
1117
+ review_note: decision.reviewNote,
1118
+ grant_expires_at: decision.grantExpiresAt
1119
+ }
1120
+ });
1121
+ return decodeOne(response, fileAccessRequestMapper);
1122
+ },
1123
+ async cancel (uniqueId) {
1124
+ await transport.put(`/file_access_requests/${uniqueId}/cancel`, {});
1125
+ },
1126
+ async listByFile (fileUniqueId, params) {
1127
+ const queryParams = {
1128
+ file_unique_id: fileUniqueId
1129
+ };
1130
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1131
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1132
+ if (params == null ? void 0 : params.requestStatus) queryParams['request_status'] = params.requestStatus;
1133
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1134
+ const response = await transport.get('/file_access_requests', {
1135
+ params: queryParams
1136
+ });
1137
+ return decodePageResult(response, fileAccessRequestMapper);
1138
+ },
1139
+ async listByRequester (requesterUniqueId, params) {
1140
+ const queryParams = {
1141
+ requester_unique_id: requesterUniqueId
1142
+ };
1143
+ if (params == null ? void 0 : params.page) queryParams['page'] = String(params.page);
1144
+ if (params == null ? void 0 : params.perPage) queryParams['records'] = String(params.perPage);
1145
+ if (params == null ? void 0 : params.requestStatus) queryParams['request_status'] = params.requestStatus;
1146
+ if (params == null ? void 0 : params.sortBy) queryParams['sort'] = params.sortOrder === 'desc' ? `-${params.sortBy}` : params.sortBy;
1147
+ const response = await transport.get('/file_access_requests', {
1148
+ params: queryParams
1149
+ });
1150
+ return decodePageResult(response, fileAccessRequestMapper);
1151
+ },
1152
+ async getPendingCount () {
1153
+ const response = await transport.get('/file_access_requests/pending_count');
1154
+ return response.count;
1155
+ }
1156
+ };
1157
+ }
1158
+
928
1159
  function createFilesBlock(transport, config) {
929
1160
  return {
930
1161
  storageFiles: createStorageFilesService(transport),
@@ -933,7 +1164,9 @@ function createFilesBlock(transport, config) {
933
1164
  userFiles: createUserFilesService(transport),
934
1165
  fileCategories: createFileCategoriesService(transport),
935
1166
  fileTags: createFileTagsService(transport),
936
- delegations: createDelegationsService(transport)
1167
+ delegations: createDelegationsService(transport),
1168
+ fileAccess: createFileAccessService(transport),
1169
+ fileAccessRequests: createFileAccessRequestsService(transport)
937
1170
  };
938
1171
  }
939
1172
  const filesBlockMetadata = {
@@ -947,8 +1180,10 @@ const filesBlockMetadata = {
947
1180
  'UserFile',
948
1181
  'FileCategory',
949
1182
  'FileTag',
950
- 'FileDelegation'
1183
+ 'FileDelegation',
1184
+ 'FileAccess',
1185
+ 'FileAccessRequest'
951
1186
  ]
952
1187
  };
953
1188
 
954
- export { createDelegationsService, createEntityFilesService, createFileCategoriesService, createFileSchemasService, createFileTagsService, createFilesBlock, createStorageFilesService, createUserFilesService, entityFileMapper, fileCategoryMapper, fileDelegationMapper, fileSchemaMapper, fileTagMapper, filesBlockMetadata, parseBoolean, parseDate, parseNumber, parseOptionalNumber, parseStatus, parseString, parseStringArray, storageFileMapper, userFileMapper };
1189
+ export { createDelegationsService, createEntityFilesService, createFileAccessRequestsService, createFileAccessService, createFileCategoriesService, createFileSchemasService, createFileTagsService, createFilesBlock, createStorageFilesService, createUserFilesService, entityFileMapper, fileAccessMapper, fileAccessRequestMapper, fileCategoryMapper, fileDelegationMapper, fileSchemaMapper, fileTagMapper, filesBlockMetadata, parseBoolean, parseDate, parseNumber, parseOptionalNumber, parseStatus, parseString, parseStringArray, storageFileMapper, userFileMapper };
@@ -1,5 +1,5 @@
1
1
  import type { Transport, BlockConfig, BlockMetadata } from '@23blocks/contracts';
2
- import { type StorageFilesService, type EntityFilesService, type FileSchemasService, type UserFilesService, type FileCategoriesService, type FileTagsService, type DelegationsService } from './services';
2
+ import { type StorageFilesService, type EntityFilesService, type FileSchemasService, type UserFilesService, type FileCategoriesService, type FileTagsService, type DelegationsService, type FileAccessService, type FileAccessRequestsService } from './services';
3
3
  export interface FilesBlockConfig extends BlockConfig {
4
4
  appId: string;
5
5
  tenantId?: string;
@@ -12,6 +12,8 @@ export interface FilesBlock {
12
12
  fileCategories: FileCategoriesService;
13
13
  fileTags: FileTagsService;
14
14
  delegations: DelegationsService;
15
+ fileAccess: FileAccessService;
16
+ fileAccessRequests: FileAccessRequestsService;
15
17
  }
16
18
  export declare function createFilesBlock(transport: Transport, config: FilesBlockConfig): FilesBlock;
17
19
  export declare const filesBlockMetadata: BlockMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"files.block.d.ts","sourceRoot":"","sources":["../../../src/lib/files.block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAQL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,qBAAqB,CAAC;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,GACvB,UAAU,CAUZ;AAED,eAAO,MAAM,kBAAkB,EAAE,aAahC,CAAC"}
1
+ {"version":3,"file":"files.block.d.ts","sourceRoot":"","sources":["../../../src/lib/files.block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAUL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC/B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,kBAAkB,CAAC;IAChC,WAAW,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,cAAc,EAAE,qBAAqB,CAAC;IACtC,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,kBAAkB,EAAE,yBAAyB,CAAC;CAC/C;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,GACvB,UAAU,CAYZ;AAED,eAAO,MAAM,kBAAkB,EAAE,aAehC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
+ import type { FileAccessRequest } from '../types/file-access-request';
3
+ export declare const fileAccessRequestMapper: ResourceMapper<FileAccessRequest>;
4
+ //# sourceMappingURL=file-access-request.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access-request.mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/file-access-request.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,8BAA8B,CAAC;AAG3F,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC,iBAAiB,CAuBrE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ResourceMapper } from '@23blocks/jsonapi-codec';
2
+ import type { FileAccess } from '../types/file-access';
3
+ export declare const fileAccessMapper: ResourceMapper<FileAccess>;
4
+ //# sourceMappingURL=file-access.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access.mapper.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/file-access.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAWvD,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,UAAU,CAoBvD,CAAC"}
@@ -5,5 +5,7 @@ export * from './user-file.mapper';
5
5
  export * from './file-category.mapper';
6
6
  export * from './file-tag.mapper';
7
7
  export * from './delegation.mapper';
8
+ export * from './file-access.mapper';
9
+ export * from './file-access-request.mapper';
8
10
  export * from './utils';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/mappers/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,SAAS,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { Transport, PageResult } from '@23blocks/contracts';
2
+ import type { FileAccessRequest, CreateFileAccessRequestInput, ReviewFileAccessRequestInput, ListFileAccessRequestsParams } from '../types/file-access-request';
3
+ /**
4
+ * File Access Requests Service Interface - Manage access requests to files
5
+ */
6
+ export interface FileAccessRequestsService {
7
+ /**
8
+ * List all access requests
9
+ */
10
+ list(params?: ListFileAccessRequestsParams): Promise<PageResult<FileAccessRequest>>;
11
+ /**
12
+ * Get a specific access request
13
+ */
14
+ get(uniqueId: string): Promise<FileAccessRequest>;
15
+ /**
16
+ * Create a new access request
17
+ */
18
+ create(data: CreateFileAccessRequestInput): Promise<FileAccessRequest>;
19
+ /**
20
+ * Review (approve/reject) an access request
21
+ */
22
+ review(uniqueId: string, decision: ReviewFileAccessRequestInput): Promise<FileAccessRequest>;
23
+ /**
24
+ * Cancel a pending access request
25
+ */
26
+ cancel(uniqueId: string): Promise<void>;
27
+ /**
28
+ * List requests for a specific file (for file owners)
29
+ */
30
+ listByFile(fileUniqueId: string, params?: ListFileAccessRequestsParams): Promise<PageResult<FileAccessRequest>>;
31
+ /**
32
+ * List requests made by a specific user
33
+ */
34
+ listByRequester(requesterUniqueId: string, params?: ListFileAccessRequestsParams): Promise<PageResult<FileAccessRequest>>;
35
+ /**
36
+ * Get pending requests count for a file owner
37
+ */
38
+ getPendingCount(): Promise<number>;
39
+ }
40
+ /**
41
+ * Create the File Access Requests service
42
+ */
43
+ export declare function createFileAccessRequestsService(transport: Transport, _config: {
44
+ appId: string;
45
+ }): FileAccessRequestsService;
46
+ //# sourceMappingURL=file-access-requests.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access-requests.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/file-access-requests.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,4BAA4B,EAC5B,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AAGtC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEpF;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAElD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvE;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE7F;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEhH;;OAEG;IACH,eAAe,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE1H;;OAEG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACzB,yBAAyB,CAsF3B"}
@@ -0,0 +1,16 @@
1
+ import type { Transport, PageResult } from '@23blocks/contracts';
2
+ import type { FileAccess, CreateFileAccessRequest, UpdateFileAccessRequest, ListFileAccessParams } from '../types/file-access';
3
+ export interface FileAccessService {
4
+ list(params?: ListFileAccessParams): Promise<PageResult<FileAccess>>;
5
+ get(uniqueId: string): Promise<FileAccess>;
6
+ grant(data: CreateFileAccessRequest): Promise<FileAccess>;
7
+ update(uniqueId: string, data: UpdateFileAccessRequest): Promise<FileAccess>;
8
+ revoke(uniqueId: string): Promise<void>;
9
+ listByFile(fileUniqueId: string, params?: ListFileAccessParams): Promise<PageResult<FileAccess>>;
10
+ listByGrantee(granteeUniqueId: string, granteeType: string, params?: ListFileAccessParams): Promise<PageResult<FileAccess>>;
11
+ checkAccess(fileUniqueId: string, granteeUniqueId: string): Promise<FileAccess | null>;
12
+ }
13
+ export declare function createFileAccessService(transport: Transport, _config: {
14
+ appId: string;
15
+ }): FileAccessService;
16
+ //# sourceMappingURL=file-access.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/file-access.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACjG,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5H,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACxF;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAgG3G"}
@@ -5,4 +5,6 @@ export * from './user-files.service';
5
5
  export * from './file-categories.service';
6
6
  export * from './file-tags.service';
7
7
  export * from './delegations.service';
8
+ export * from './file-access.service';
9
+ export * from './file-access-requests.service';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
+ /**
3
+ * Access request status
4
+ */
5
+ export type AccessRequestStatus = 'pending' | 'approved' | 'rejected' | 'expired' | 'cancelled';
6
+ /**
7
+ * File access request - request to gain access to a file
8
+ */
9
+ export interface FileAccessRequest extends IdentityCore {
10
+ fileUniqueId: string;
11
+ fileName?: string;
12
+ requesterUniqueId: string;
13
+ requesterName?: string;
14
+ requesterEmail?: string;
15
+ requesterType: string;
16
+ requestedAccessLevel: 'view' | 'download' | 'edit' | 'admin';
17
+ message?: string;
18
+ requestStatus: AccessRequestStatus;
19
+ reviewedByUniqueId?: string;
20
+ reviewedAt?: Date;
21
+ reviewNote?: string;
22
+ expiresAt?: Date;
23
+ status: EntityStatus;
24
+ enabled: boolean;
25
+ payload?: Record<string, unknown>;
26
+ }
27
+ /**
28
+ * Create file access request
29
+ */
30
+ export interface CreateFileAccessRequestInput {
31
+ fileUniqueId: string;
32
+ requestedAccessLevel: 'view' | 'download' | 'edit' | 'admin';
33
+ message?: string;
34
+ payload?: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * Review file access request (approve/reject)
38
+ */
39
+ export interface ReviewFileAccessRequestInput {
40
+ decision: 'approve' | 'reject';
41
+ reviewNote?: string;
42
+ grantExpiresAt?: string;
43
+ }
44
+ /**
45
+ * List file access requests params
46
+ */
47
+ export interface ListFileAccessRequestsParams {
48
+ page?: number;
49
+ perPage?: number;
50
+ fileUniqueId?: string;
51
+ requesterUniqueId?: string;
52
+ requestStatus?: AccessRequestStatus;
53
+ dateFrom?: string;
54
+ dateTo?: string;
55
+ sortBy?: string;
56
+ sortOrder?: 'asc' | 'desc';
57
+ }
58
+ //# sourceMappingURL=file-access-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access-request.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/file-access-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,41 @@
1
+ import type { IdentityCore, EntityStatus } from '@23blocks/contracts';
2
+ export interface FileAccess extends IdentityCore {
3
+ fileUniqueId: string;
4
+ granteeUniqueId: string;
5
+ granteeType: string;
6
+ accessLevel: 'read' | 'write' | 'admin';
7
+ grantedByUniqueId: string;
8
+ expiresAt?: Date;
9
+ accessedAt?: Date;
10
+ accessCount: number;
11
+ status: EntityStatus;
12
+ enabled: boolean;
13
+ payload?: Record<string, unknown>;
14
+ }
15
+ export interface CreateFileAccessRequest {
16
+ fileUniqueId: string;
17
+ granteeUniqueId: string;
18
+ granteeType: string;
19
+ accessLevel?: 'read' | 'write' | 'admin';
20
+ expiresAt?: string;
21
+ payload?: Record<string, unknown>;
22
+ }
23
+ export interface UpdateFileAccessRequest {
24
+ accessLevel?: 'read' | 'write' | 'admin';
25
+ expiresAt?: string;
26
+ enabled?: boolean;
27
+ status?: EntityStatus;
28
+ payload?: Record<string, unknown>;
29
+ }
30
+ export interface ListFileAccessParams {
31
+ page?: number;
32
+ perPage?: number;
33
+ fileUniqueId?: string;
34
+ granteeUniqueId?: string;
35
+ granteeType?: string;
36
+ accessLevel?: 'read' | 'write' | 'admin';
37
+ status?: EntityStatus;
38
+ sortBy?: string;
39
+ sortOrder?: 'asc' | 'desc';
40
+ }
41
+ //# sourceMappingURL=file-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/file-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B"}
@@ -5,4 +5,6 @@ export * from './user-file';
5
5
  export * from './file-category';
6
6
  export * from './file-tag';
7
7
  export * from './delegation';
8
+ export * from './file-access';
9
+ export * from './file-access-request';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/block-files",
3
- "version": "3.2.0",
3
+ "version": "3.4.0",
4
4
  "description": "Files block for 23blocks SDK - storage, upload, download, file management",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",