@atproto/aws 0.2.0 → 0.2.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atproto/aws
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`acc9093d2`](https://github.com/bluesky-social/atproto/commit/acc9093d2845eba02b68fb2f9db33e4f1b59bb10)]:
8
+ - @atproto/common@0.4.1
9
+ - @atproto/crypto@0.4.0
10
+ - @atproto/repo@0.4.1
11
+
3
12
  ## 0.2.0
4
13
 
5
14
  ### Minor Changes
package/dist/s3.d.ts CHANGED
@@ -5,11 +5,13 @@ import { CID } from 'multiformats/cid';
5
5
  import stream from 'stream';
6
6
  export type S3Config = {
7
7
  bucket: string;
8
+ uploadTimeoutMs?: number;
8
9
  } & Omit<aws.S3ClientConfig, 'apiVersion'>;
9
10
  export declare class S3BlobStore implements BlobStore {
10
11
  did: string;
11
12
  private client;
12
13
  private bucket;
14
+ private uploadTimeoutMs;
13
15
  constructor(did: string, cfg: S3Config);
14
16
  static creator(cfg: S3Config): (did: string) => S3BlobStore;
15
17
  private genKey;
package/dist/s3.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAA;AAE5D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAC9C,GAAG,CAAC,cAAc,EAClB,YAAY,CACb,CAAA;AAKD,qBAAa,WAAY,YAAW,SAAS;IAIxB,GAAG,EAAE,MAAM;IAH9B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;gBAEH,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ;IAS7C,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,SACb,MAAM;IAKrB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAIpB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAa7D,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,YAAY,CAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,GAClC,OAAO,CAAC,IAAI,CAAC;IAWV,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnC,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAO7B,SAAS;IAYjB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IAK7C,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAI9B,MAAM;YAYN,SAAS;YAOT,cAAc;YASd,IAAI;CAenB;AAUD,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAA;AAE5D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CACxE,GAAG,CAAC,cAAc,EAClB,YAAY,CACb,CAAA;AAKD,qBAAa,WAAY,YAAW,SAAS;IAMlC,GAAG,EAAE,MAAM;IALpB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,eAAe,CAAQ;gBAGtB,GAAG,EAAE,MAAM,EAClB,GAAG,EAAE,QAAQ;IAWf,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,SACb,MAAM;IAKrB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,kBAAkB;IAIpB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B7D,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,YAAY,CAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,GAClC,OAAO,CAAC,IAAI,CAAC;IAwBV,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnC,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YAO7B,SAAS;IAYjB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IAK7C,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAI9B,MAAM;YAYN,SAAS;YAOT,cAAc;YASd,IAAI;CAenB;AAUD,eAAe,WAAW,CAAA"}
package/dist/s3.js CHANGED
@@ -50,8 +50,15 @@ class S3BlobStore {
50
50
  writable: true,
51
51
  value: void 0
52
52
  });
53
- const { bucket, ...rest } = cfg;
53
+ Object.defineProperty(this, "uploadTimeoutMs", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: void 0
58
+ });
59
+ const { bucket, uploadTimeoutMs, ...rest } = cfg;
54
60
  this.bucket = bucket;
61
+ this.uploadTimeoutMs = uploadTimeoutMs ?? 10000;
55
62
  this.client = new aws.S3({
56
63
  ...rest,
57
64
  apiVersion: '2006-03-01',
@@ -76,14 +83,25 @@ class S3BlobStore {
76
83
  }
77
84
  async putTemp(bytes) {
78
85
  const key = this.genKey();
79
- await new lib_storage_1.Upload({
86
+ // @NOTE abort results in error from aws-sdk "Upload aborted." with name "AbortError"
87
+ const abortController = new AbortController();
88
+ const timeout = setTimeout(() => abortController.abort(), this.uploadTimeoutMs);
89
+ const upload = new lib_storage_1.Upload({
80
90
  client: this.client,
81
91
  params: {
82
92
  Bucket: this.bucket,
83
93
  Body: bytes,
84
94
  Key: this.getTmpPath(key),
85
95
  },
86
- }).done();
96
+ // @ts-ignore native implementation fine in node >=15
97
+ abortController,
98
+ });
99
+ try {
100
+ await upload.done();
101
+ }
102
+ finally {
103
+ clearTimeout(timeout);
104
+ }
87
105
  return key;
88
106
  }
89
107
  async makePermanent(key, cid) {
@@ -100,14 +118,25 @@ class S3BlobStore {
100
118
  }
101
119
  }
102
120
  async putPermanent(cid, bytes) {
103
- await new lib_storage_1.Upload({
121
+ // @NOTE abort results in error from aws-sdk "Upload aborted." with name "AbortError"
122
+ const abortController = new AbortController();
123
+ const timeout = setTimeout(() => abortController.abort(), this.uploadTimeoutMs);
124
+ const upload = new lib_storage_1.Upload({
104
125
  client: this.client,
105
126
  params: {
106
127
  Bucket: this.bucket,
107
128
  Body: bytes,
108
129
  Key: this.getStoredPath(cid),
109
130
  },
110
- }).done();
131
+ // @ts-ignore native implementation fine in node >=15
132
+ abortController,
133
+ });
134
+ try {
135
+ await upload.done();
136
+ }
137
+ finally {
138
+ clearTimeout(timeout);
139
+ }
111
140
  }
112
141
  async quarantine(cid) {
113
142
  await this.move({
package/dist/s3.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s3.js","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/aws",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "license": "MIT",
5
5
  "description": "Shared AWS cloud API helpers for atproto services",
6
6
  "keywords": [
@@ -24,9 +24,9 @@
24
24
  "key-encoder": "^2.0.3",
25
25
  "multiformats": "^9.9.0",
26
26
  "uint8arrays": "3.0.0",
27
- "@atproto/common": "^0.4.0",
27
+ "@atproto/common": "^0.4.1",
28
28
  "@atproto/crypto": "^0.4.0",
29
- "@atproto/repo": "^0.4.0"
29
+ "@atproto/repo": "^0.4.1"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "tsc --build tsconfig.build.json"
package/src/s3.ts CHANGED
@@ -5,7 +5,7 @@ import { randomStr } from '@atproto/crypto'
5
5
  import { CID } from 'multiformats/cid'
6
6
  import stream from 'stream'
7
7
 
8
- export type S3Config = { bucket: string } & Omit<
8
+ export type S3Config = { bucket: string; uploadTimeoutMs?: number } & Omit<
9
9
  aws.S3ClientConfig,
10
10
  'apiVersion'
11
11
  >
@@ -16,10 +16,15 @@ export type S3Config = { bucket: string } & Omit<
16
16
  export class S3BlobStore implements BlobStore {
17
17
  private client: aws.S3
18
18
  private bucket: string
19
+ private uploadTimeoutMs: number
19
20
 
20
- constructor(public did: string, cfg: S3Config) {
21
- const { bucket, ...rest } = cfg
21
+ constructor(
22
+ public did: string,
23
+ cfg: S3Config,
24
+ ) {
25
+ const { bucket, uploadTimeoutMs, ...rest } = cfg
22
26
  this.bucket = bucket
27
+ this.uploadTimeoutMs = uploadTimeoutMs ?? 10000
23
28
  this.client = new aws.S3({
24
29
  ...rest,
25
30
  apiVersion: '2006-03-01',
@@ -50,14 +55,27 @@ export class S3BlobStore implements BlobStore {
50
55
 
51
56
  async putTemp(bytes: Uint8Array | stream.Readable): Promise<string> {
52
57
  const key = this.genKey()
53
- await new Upload({
58
+ // @NOTE abort results in error from aws-sdk "Upload aborted." with name "AbortError"
59
+ const abortController = new AbortController()
60
+ const timeout = setTimeout(
61
+ () => abortController.abort(),
62
+ this.uploadTimeoutMs,
63
+ )
64
+ const upload = new Upload({
54
65
  client: this.client,
55
66
  params: {
56
67
  Bucket: this.bucket,
57
68
  Body: bytes,
58
69
  Key: this.getTmpPath(key),
59
70
  },
60
- }).done()
71
+ // @ts-ignore native implementation fine in node >=15
72
+ abortController,
73
+ })
74
+ try {
75
+ await upload.done()
76
+ } finally {
77
+ clearTimeout(timeout)
78
+ }
61
79
  return key
62
80
  }
63
81
 
@@ -78,14 +96,27 @@ export class S3BlobStore implements BlobStore {
78
96
  cid: CID,
79
97
  bytes: Uint8Array | stream.Readable,
80
98
  ): Promise<void> {
81
- await new Upload({
99
+ // @NOTE abort results in error from aws-sdk "Upload aborted." with name "AbortError"
100
+ const abortController = new AbortController()
101
+ const timeout = setTimeout(
102
+ () => abortController.abort(),
103
+ this.uploadTimeoutMs,
104
+ )
105
+ const upload = new Upload({
82
106
  client: this.client,
83
107
  params: {
84
108
  Bucket: this.bucket,
85
109
  Body: bytes,
86
110
  Key: this.getStoredPath(cid),
87
111
  },
88
- }).done()
112
+ // @ts-ignore native implementation fine in node >=15
113
+ abortController,
114
+ })
115
+ try {
116
+ await upload.done()
117
+ } finally {
118
+ clearTimeout(timeout)
119
+ }
89
120
  }
90
121
 
91
122
  async quarantine(cid: CID): Promise<void> {