@casual-simulation/aux-records-aws 3.1.29 → 3.1.32-alpha.5293107523

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.
@@ -17,6 +17,8 @@ export declare class DynamoDBPolicyStore implements PolicyStore {
17
17
  listAssignmentsForRole(recordName: string, role: string): Promise<ListedRoleAssignments>;
18
18
  getUserPolicy(recordName: string, marker: string): Promise<GetUserPolicyResult>;
19
19
  updateUserPolicy(recordName: string, marker: string, policy: UserPolicyRecord): Promise<UpdateUserPolicyResult>;
20
+ assignSubjectRole(recordName: string, subjectId: string, type: 'user' | 'inst', role: AssignedRole): Promise<UpdateUserRolesResult>;
21
+ revokeSubjectRole(recordName: string, subjectId: string, type: 'user' | 'inst', role: string): Promise<UpdateUserRolesResult>;
20
22
  updateUserRoles(recordName: string, userId: string, update: UpdateRolesUpdate): Promise<UpdateUserRolesResult>;
21
23
  updateInstRoles(recordName: string, inst: string, update: UpdateRolesUpdate): Promise<UpdateUserRolesResult>;
22
24
  private _updateRoles;
@@ -202,6 +202,43 @@ export class DynamoDBPolicyStore {
202
202
  };
203
203
  });
204
204
  }
205
+ assignSubjectRole(recordName, subjectId, type, role) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ const roles = type === 'user'
208
+ ? yield this.listRolesForUser(recordName, subjectId)
209
+ : yield this.listRolesForInst(recordName, subjectId);
210
+ const filtered = roles.filter((r) => r.role !== role.role ||
211
+ getExpireTime(r.expireTimeMs) <= role.expireTimeMs);
212
+ if (type === 'user') {
213
+ return yield this.updateUserRoles(recordName, subjectId, {
214
+ roles: [...filtered, role],
215
+ });
216
+ }
217
+ else {
218
+ return yield this.updateInstRoles(recordName, subjectId, {
219
+ roles: [...filtered, role],
220
+ });
221
+ }
222
+ });
223
+ }
224
+ revokeSubjectRole(recordName, subjectId, type, role) {
225
+ return __awaiter(this, void 0, void 0, function* () {
226
+ const roles = type === 'user'
227
+ ? yield this.listRolesForUser(recordName, subjectId)
228
+ : yield this.listRolesForInst(recordName, subjectId);
229
+ const filtered = roles.filter((r) => r.role !== role);
230
+ if (type === 'user') {
231
+ return yield this.updateUserRoles(recordName, subjectId, {
232
+ roles: [...filtered],
233
+ });
234
+ }
235
+ else {
236
+ return yield this.updateInstRoles(recordName, subjectId, {
237
+ roles: [...filtered],
238
+ });
239
+ }
240
+ });
241
+ }
205
242
  updateUserRoles(recordName, userId, update) {
206
243
  return __awaiter(this, void 0, void 0, function* () {
207
244
  const roles = yield this.listRolesForUser(recordName, userId);
@@ -1 +1 @@
1
- {"version":3,"file":"DynamoDBPolicyStore.js","sourceRoot":"","sources":["DynamoDBPolicyStore.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,cAAc,EAEd,oCAAoC,EACpC,mCAAmC,EAInC,kBAAkB,EAQlB,aAAa,GAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAO5B,YACI,MAA+B,EAC/B,iBAAyB,EACzB,qBAA6B,EAC7B,qBAA6B,EAC7B,cAAsB;QAEtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QACpD,IAAI,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IAC1C,CAAC;IAEK,qBAAqB,CACvB,UAAkB,EAClB,MAAc;;YAEd,MAAM,QAAQ,GAAG,CAAC,oCAAoC,CAAC,CAAC;YACxD,IAAI,MAAM,KAAK,kBAAkB,EAAE;gBAC/B,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;aACtD;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC5B,GAAG,CAAC;gBACD,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,GAAG,EAAE;oBACD,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,MAAM;iBACjB;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,MAAM,IAAI,GAAmB,MAAM,CAAC,IAAsB,CAAC;YAC3D,IAAI,IAAI,EAAE;gBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEK,gBAAgB,CAClB,UAAkB,EAClB,cAA6B;;YAE7B,MAAM,KAAK,GACP,OAAO,cAAc,KAAK,QAAQ;gBAC9B,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,0BAA0B,CAAC;YACrC,MAAM,MAAM,GACR,OAAO,cAAc,KAAK,QAAQ;gBAC9B,CAAC,CAAC;oBACI,aAAa,EAAE,UAAU;oBACzB,SAAS,EAAE,cAAc;iBAC5B;gBACH,CAAC,CAAC;oBACI,aAAa,EAAE,UAAU;iBAC5B,CAAC;YAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC5B,KAAK,CAAC;gBACH,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,sBAAsB,EAAE,KAAK;gBAC7B,yBAAyB,EAAE,MAAM;gBACjC,KAAK,EAAE,EAAE;aACZ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,MAAM,KAAK,GAAqB,MAAM,CAAC,KAAyB,CAAC;YAEjE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,IAAI,MAAM,GAAqB;oBAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;iBACrB,CAAC;gBAEF,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEK,gBAAgB,CAClB,UAAkB,EAClB,MAAc;;YAEd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC5B,GAAG,CAAC;gBACD,SAAS,EAAE,IAAI,CAAC,sBAAsB;gBACtC,GAAG,EAAE;oBACD,SAAS,EAAE,KAAK,MAAM,EAAE;oBACxB,UAAU,EAAE,UAAU;iBACzB;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,MAAM,IAAI,GAAyB,MAAM,CAAC,IAA4B,CAAC;YACvE,IAAI,IAAI,EAAE;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,CAC7C,CAAC;aACL;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;QACL,CAAC;KAAA;IAEK,gBAAgB,CAClB,UAAkB,EAClB,IAAY;;YAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC5B,GAAG,CAAC;gBACD,SAAS,EAAE,IAAI,CAAC,sBAAsB;gBACtC,GAAG,EAAE;oBACD,SAAS,EAAE,KAAK,IAAI,EAAE;oBACtB,UAAU,EAAE,UAAU;iBACzB;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,MAAM,IAAI,GAAyB,MAAM,CAAC,IAA4B,CAAC;YACvE,IAAI,IAAI,EAAE;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,CAC7C,CAAC;aACL;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;QACL,CAAC;KAAA;IAEK,sBAAsB,CACxB,UAAkB,EAClB,IAAY;;YAEZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC5B,KAAK,CAAC;gBACH,SAAS,EAAE,IAAI,CAAC,sBAAsB;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,yBAAyB,EAAE;oBACvB,SAAS,EAAE,GAAG,UAAU,IAAI,IAAI,EAAE;iBACrC;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,MAAM,KAAK,GACP,MAAM,CAAC,KAA+B,CAAC;YAC3C,IAAI,WAAW,GAAG,EAAsB,CAAC;YACzC,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;gBACpB,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;oBAChD,SAAS;iBACZ;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACjC,WAAW,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;wBACnC,IAAI,EAAE;4BACF,IAAI,EAAE,IAAI;4BACV,YAAY,EAAE,IAAI,CAAC,YAAY;yBAClC;qBACJ,CAAC,CAAC;iBACN;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBACxC,WAAW,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;wBACjC,IAAI,EAAE;4BACF,IAAI,EAAE,IAAI;4BACV,YAAY,EAAE,IAAI,CAAC,YAAY;yBAClC;qBACJ,CAAC,CAAC;iBACN;aACJ;YAED,OAAO;gBACH,WAAW;aACd,CAAC;QACN,CAAC;KAAA;IAEK,aAAa,CACf,UAAkB,EAClB,MAAc;;YAEd,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO;iBAC1B,GAAG,CAAC;gBACD,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,GAAG,EAAE;oBACD,UAAU;oBACV,MAAM;iBACT;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,IAAI,IAAI,GAAmB,MAAM,CAAC,IAAsB,CAAC;YACzD,IAAI,IAAI,EAAE;gBACN,OAAO;oBACH,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACxB,CAAC;aACL;YAED,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,kBAAkB;gBAC7B,YAAY,EAAE,mBAAmB;aACpC,CAAC;QACN,CAAC;KAAA;IAEK,gBAAgB,CAClB,UAAkB,EAClB,MAAc,EACd,MAAwB;;YAExB,MAAM,IAAI,GAAmB;gBACzB,UAAU;gBACV,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;aAC1B,CAAC;YACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAChC,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,UAAkB,EAClB,MAAc,EACd,MAAyB;;YAEzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAE9D,OAAO,MAAM,IAAI,CAAC,YAAY,CAC1B,UAAU,EACV,KAAK,MAAM,EAAE,EACb,MAAM,EACN,KAAK,CACR,CAAC;QACN,CAAC;KAAA;IAEK,eAAe,CACjB,UAAkB,EAClB,IAAY,EACZ,MAAyB;;YAEzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3E,CAAC;KAAA;IAEa,YAAY,CACtB,UAAkB,EAClB,SAAiB,EACjB,MAAyB,EACzB,KAAqB;;YAErB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEtE,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;gBAClD,OAAO;oBACH,OAAO,EAAE,IAAI;iBAChB,CAAC;aACL;YAED,MAAM,WAAW,GAAyB;gBACtC,UAAU;gBACV,SAAS;gBACT,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,CAAC;YACF,IAAI,KAAK,GAAkD;gBACvD;oBACI,GAAG,EAAE;wBACD,SAAS,EAAE,IAAI,CAAC,sBAAsB;wBACtC,IAAI,EAAE,WAAW;qBACpB;iBACJ;aACJ,CAAC;YAEF,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE;gBACvB,MAAM,QAAQ,GAAiB;oBAC3B,UAAU;oBACV,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,CAAC,cAAc,CAAC;iBAC5B,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE;wBACD,SAAS,EAAE,IAAI,CAAC,eAAe;wBAC/B,IAAI,EAAE,QAAQ;wBACd,mBAAmB,EACf,iEAAiE;qBACxE;iBACJ,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAyB;oBACtC,MAAM,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;oBACpC,SAAS;oBACT,YAAY,EAAE,IAAI,CAAC,YAAY;iBAClC,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC;oBACP,GAAG,EAAE;wBACD,SAAS,EAAE,IAAI,CAAC,sBAAsB;wBACtC,IAAI,EAAE,WAAW;qBACpB;iBACJ,CAAC,CAAC;aACN;YAED,KAAK,IAAI,IAAI,IAAI,YAAY,EAAE;gBAC3B,KAAK,CAAC,IAAI,CAAC;oBACP,MAAM,EAAE;wBACJ,SAAS,EAAE,IAAI,CAAC,sBAAsB;wBACtC,GAAG,EAAE;4BACD,MAAM,EAAE,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;4BACpC,SAAS;yBACZ;qBACJ;iBACJ,CAAC,CAAC;aACN;YAED,MAAM,IAAI,CAAC,OAAO;iBACb,aAAa,CAAC;gBACX,aAAa,EAAE,KAAK;aACvB,CAAC;iBACD,OAAO,EAAE,CAAC;YAEf,OAAO;gBACH,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;KAAA;CACJ"}
1
+ {"version":3,"file":"DynamoDBPolicyStore.js","sourceRoot":"","sources":["DynamoDBPolicyStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { FileRecordsStore, GetFileNameFromUrlResult, PresignFileReadRequest, PresignFileReadResult } from '@casual-simulation/aux-records';
2
+ import { PresignFileUploadRequest, PresignFileUploadResult, GetFileRecordResult, AddFileResult, MarkFileRecordAsUploadedResult, EraseFileStoreResult, FileRecordsLookup, UpdateFileResult } from '@casual-simulation/aux-records';
3
+ import AWS from 'aws-sdk';
4
+ export declare const EMPTY_STRING_SHA256_HASH_HEX = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
5
+ /**
6
+ * Defines a class that can manage file records in S3.
7
+ */
8
+ export declare class S3FileRecordsStore implements FileRecordsStore {
9
+ private _region;
10
+ private _bucket;
11
+ private _storageClass;
12
+ private _aws;
13
+ private _s3Host;
14
+ private _s3Options;
15
+ private _s3;
16
+ private _lookup;
17
+ constructor(region: string, bucket: string, fileLookup: FileRecordsLookup, storageClass?: string, aws?: typeof AWS, s3Host?: string, s3Options?: AWS.S3.ClientConfiguration);
18
+ getAllowedUploadHeaders(): string[];
19
+ getFileNameFromUrl(fileUrl: string): Promise<GetFileNameFromUrlResult>;
20
+ presignFileUpload(request: PresignFileUploadRequest): Promise<PresignFileUploadResult>;
21
+ presignFileRead(request: PresignFileReadRequest): Promise<PresignFileReadResult>;
22
+ getFileRecord(recordName: string, fileName: string): Promise<GetFileRecordResult>;
23
+ addFileRecord(recordName: string, fileName: string, publisherId: string, subjectId: string, sizeInBytes: number, description: string, markers: string[]): Promise<AddFileResult>;
24
+ updateFileRecord(recordName: string, fileName: string, markers: string[]): Promise<UpdateFileResult>;
25
+ setFileRecordAsUploaded(recordName: string, fileName: string): Promise<MarkFileRecordAsUploadedResult>;
26
+ eraseFileRecord(recordName: string, fileName: string): Promise<EraseFileStoreResult>;
27
+ private _getCredentials;
28
+ private _getS3;
29
+ private _fileUrl;
30
+ private _fileHost;
31
+ private _fileKey;
32
+ }
33
+ /**
34
+ * Gets the Access Control List (ACL) that should be used for files uploaded with the given markers.
35
+ * @param markers The markers that are applied to the file.
36
+ */
37
+ export declare function s3AclForMarkers(markers: readonly string[]): string;
38
+ //# sourceMappingURL=S3FileRecordsStore.d.ts.map
@@ -0,0 +1,270 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { signRequest, } from '@casual-simulation/aux-records';
11
+ import { PUBLIC_READ_MARKER } from '@casual-simulation/aux-records/PolicyPermissions';
12
+ import AWS from 'aws-sdk';
13
+ export const EMPTY_STRING_SHA256_HASH_HEX = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
14
+ /**
15
+ * Defines a class that can manage file records in S3.
16
+ */
17
+ export class S3FileRecordsStore {
18
+ constructor(region, bucket, fileLookup, storageClass = 'STANDARD', aws = AWS, s3Host = null, s3Options = {}) {
19
+ this._region = region;
20
+ this._bucket = bucket;
21
+ this._lookup = fileLookup;
22
+ this._storageClass = storageClass;
23
+ this._aws = aws;
24
+ this._s3Host = s3Host;
25
+ this._s3Options = s3Options;
26
+ }
27
+ getAllowedUploadHeaders() {
28
+ return [
29
+ 'content-type',
30
+ 'content-length',
31
+ 'cache-control',
32
+ 'x-amz-acl',
33
+ 'x-amz-storage-class',
34
+ 'x-amz-security-token',
35
+ ];
36
+ }
37
+ getFileNameFromUrl(fileUrl) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const host = this._fileHost();
40
+ if (fileUrl.startsWith(host)) {
41
+ let recordNameAndFileName = fileUrl.slice(host.length + 1);
42
+ let firstSlash = recordNameAndFileName.indexOf('/');
43
+ if (firstSlash < 0) {
44
+ return {
45
+ success: false,
46
+ errorCode: 'unacceptable_url',
47
+ errorMessage: 'The URL does not match an expected format.',
48
+ };
49
+ }
50
+ let recordName = recordNameAndFileName.slice(0, firstSlash);
51
+ let fileName = recordNameAndFileName.slice(firstSlash + 1);
52
+ if (recordName && fileName) {
53
+ return {
54
+ success: true,
55
+ recordName,
56
+ fileName,
57
+ };
58
+ }
59
+ return {
60
+ success: false,
61
+ errorCode: 'unacceptable_url',
62
+ errorMessage: 'The URL does not match an expected format.',
63
+ };
64
+ }
65
+ return {
66
+ success: false,
67
+ errorCode: 'unacceptable_url',
68
+ errorMessage: 'The URL does not match an expected format.',
69
+ };
70
+ });
71
+ }
72
+ presignFileUpload(request) {
73
+ var _a;
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ const credentials = yield this._getCredentials();
76
+ const secretAccessKey = credentials
77
+ ? credentials.secretAccessKey
78
+ : null;
79
+ const accessKeyId = credentials ? credentials.accessKeyId : null;
80
+ const now = (_a = request.date) !== null && _a !== void 0 ? _a : new Date();
81
+ const fileUrl = this._fileUrl(request.recordName, request.fileName);
82
+ const requiredHeaders = {
83
+ 'content-type': request.fileMimeType,
84
+ 'content-length': request.fileByteLength.toString(),
85
+ 'cache-control': 'max-age=31536000',
86
+ 'x-amz-acl': s3AclForMarkers(request.markers),
87
+ 'x-amz-storage-class': this._storageClass,
88
+ host: fileUrl.host,
89
+ };
90
+ if (credentials && credentials.sessionToken) {
91
+ requiredHeaders['x-amz-security-token'] =
92
+ credentials.sessionToken;
93
+ }
94
+ const result = signRequest({
95
+ method: 'PUT',
96
+ payloadSha256Hex: request.fileSha256Hex,
97
+ headers: Object.assign(Object.assign({}, request.headers), requiredHeaders),
98
+ queryString: {},
99
+ path: fileUrl.pathname,
100
+ }, secretAccessKey, accessKeyId, now, this._region, 's3');
101
+ return {
102
+ success: true,
103
+ uploadUrl: fileUrl.href,
104
+ uploadHeaders: result.headers,
105
+ uploadMethod: result.method,
106
+ };
107
+ });
108
+ }
109
+ presignFileRead(request) {
110
+ var _a;
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const credentials = yield this._getCredentials();
113
+ const secretAccessKey = credentials
114
+ ? credentials.secretAccessKey
115
+ : null;
116
+ const accessKeyId = credentials ? credentials.accessKeyId : null;
117
+ const now = (_a = request.date) !== null && _a !== void 0 ? _a : new Date();
118
+ const fileUrl = this._fileUrl(request.recordName, request.fileName);
119
+ const requiredHeaders = {
120
+ host: fileUrl.host,
121
+ };
122
+ if (credentials && credentials.sessionToken) {
123
+ requiredHeaders['x-amz-security-token'] =
124
+ credentials.sessionToken;
125
+ }
126
+ const result = signRequest({
127
+ method: 'GET',
128
+ payloadSha256Hex: EMPTY_STRING_SHA256_HASH_HEX,
129
+ headers: Object.assign(Object.assign({}, request.headers), requiredHeaders),
130
+ queryString: {
131
+ 'response-cache-control': 'max-age=31536000',
132
+ },
133
+ path: fileUrl.pathname,
134
+ }, secretAccessKey, accessKeyId, now, this._region, 's3');
135
+ const url = new URL(fileUrl.href);
136
+ for (let key in result.queryString) {
137
+ url.searchParams.set(key, result.queryString[key]);
138
+ }
139
+ return {
140
+ success: true,
141
+ requestUrl: url.href,
142
+ requestHeaders: result.headers,
143
+ requestMethod: result.method,
144
+ };
145
+ });
146
+ }
147
+ getFileRecord(recordName, fileName) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ try {
150
+ const result = yield this._lookup.getFileRecord(recordName, fileName);
151
+ if (result) {
152
+ const url = this._fileUrl(result.recordName, result.fileName);
153
+ return {
154
+ success: true,
155
+ recordName: result.recordName,
156
+ fileName: result.fileName,
157
+ description: result.description,
158
+ publisherId: result.publisherId,
159
+ subjectId: result.subjectId,
160
+ sizeInBytes: result.sizeInBytes,
161
+ uploaded: result.uploaded,
162
+ url: url.href,
163
+ markers: result.markers,
164
+ };
165
+ }
166
+ else {
167
+ return {
168
+ success: false,
169
+ errorCode: 'file_not_found',
170
+ errorMessage: 'The file was not found.',
171
+ };
172
+ }
173
+ }
174
+ catch (err) {
175
+ console.error(err);
176
+ return {
177
+ success: false,
178
+ errorCode: 'server_error',
179
+ errorMessage: 'An unexpected error occurred.',
180
+ };
181
+ }
182
+ });
183
+ }
184
+ addFileRecord(recordName, fileName, publisherId, subjectId, sizeInBytes, description, markers) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ return yield this._lookup.addFileRecord(recordName, fileName, publisherId, subjectId, sizeInBytes, description, markers);
187
+ });
188
+ }
189
+ updateFileRecord(recordName, fileName, markers) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ return yield this._lookup.updateFileRecord(recordName, fileName, markers);
192
+ });
193
+ }
194
+ setFileRecordAsUploaded(recordName, fileName) {
195
+ return __awaiter(this, void 0, void 0, function* () {
196
+ return yield this._lookup.setFileRecordAsUploaded(recordName, fileName);
197
+ });
198
+ }
199
+ eraseFileRecord(recordName, fileName) {
200
+ return __awaiter(this, void 0, void 0, function* () {
201
+ try {
202
+ yield this._lookup.eraseFileRecord(recordName, fileName);
203
+ const s3 = this._getS3();
204
+ const key = this._fileKey(recordName, fileName);
205
+ yield s3
206
+ .deleteObject({
207
+ Bucket: this._bucket,
208
+ Key: key,
209
+ })
210
+ .promise();
211
+ return {
212
+ success: true,
213
+ };
214
+ }
215
+ catch (err) {
216
+ console.error(err);
217
+ return {
218
+ success: false,
219
+ errorCode: 'server_error',
220
+ errorMessage: 'An unexpected error occurred.',
221
+ };
222
+ }
223
+ });
224
+ }
225
+ _getCredentials() {
226
+ return new Promise((resolve, reject) => {
227
+ this._aws.config.getCredentials(function (err, credentials) {
228
+ if (err) {
229
+ reject(err);
230
+ }
231
+ else {
232
+ resolve(credentials);
233
+ }
234
+ });
235
+ });
236
+ }
237
+ _getS3() {
238
+ if (!this._s3) {
239
+ this._s3 = new this._aws.S3(this._s3Options);
240
+ }
241
+ return this._s3;
242
+ }
243
+ _fileUrl(recordName, fileName) {
244
+ let filePath = this._fileKey(recordName, fileName);
245
+ if (this._s3Host) {
246
+ filePath = `${this._s3Host}/${this._bucket}/${filePath}`;
247
+ }
248
+ return new URL(filePath, `https://${this._bucket}.s3.amazonaws.com`);
249
+ }
250
+ _fileHost() {
251
+ if (this._s3Host) {
252
+ return this._s3Host;
253
+ }
254
+ return `https://${this._bucket}.s3.amazonaws.com`;
255
+ }
256
+ _fileKey(recordName, fileName) {
257
+ return `${recordName}/${fileName}`;
258
+ }
259
+ }
260
+ /**
261
+ * Gets the Access Control List (ACL) that should be used for files uploaded with the given markers.
262
+ * @param markers The markers that are applied to the file.
263
+ */
264
+ export function s3AclForMarkers(markers) {
265
+ if (markers.some((m) => m === PUBLIC_READ_MARKER)) {
266
+ return 'public-read';
267
+ }
268
+ return 'private';
269
+ }
270
+ //# sourceMappingURL=S3FileRecordsStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3FileRecordsStore.js","sourceRoot":"","sources":["S3FileRecordsStore.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -5,4 +5,5 @@ export * from './DynamoDBEventStore';
5
5
  export * from './DynamoDBAuthStore';
6
6
  export * from './DynamoDBPolicyStore';
7
7
  export * from './TextItAuthMessenger';
8
+ export { S3FileRecordsStore } from './S3FileRecordsStore';
8
9
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -5,4 +5,5 @@ export * from './DynamoDBEventStore';
5
5
  export * from './DynamoDBAuthStore';
6
6
  export * from './DynamoDBPolicyStore';
7
7
  export * from './TextItAuthMessenger';
8
+ export { S3FileRecordsStore } from './S3FileRecordsStore';
8
9
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@casual-simulation/aux-records-aws",
3
- "version": "3.1.29",
3
+ "version": "3.1.32-alpha.5293107523",
4
4
  "description": "AWS Store implementations for the CasualOS Records System.",
5
5
  "keywords": [],
6
6
  "author": "Casual Simulation, Inc.",
@@ -37,7 +37,7 @@
37
37
  "access": "public"
38
38
  },
39
39
  "dependencies": {
40
- "@casual-simulation/aux-records": "^3.1.29"
40
+ "@casual-simulation/aux-records": "^3.1.32-alpha.5293107523"
41
41
  },
42
- "gitHead": "ec16c98746fc58d63c3516763b5051f97dc20680"
42
+ "gitHead": "a9e11d2380ffd4c6baec40a1da77d85b3da697fb"
43
43
  }