@empiricalrun/r2-uploader 0.3.8 → 0.3.10
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 +12 -0
- package/dist/delete.js +1 -2
- package/dist/fetch.d.ts +7 -1
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +23 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/upload/buffer.d.ts.map +1 -1
- package/dist/upload/buffer.js +4 -2
- package/dist/upload/index.d.ts +0 -1
- package/dist/upload/index.d.ts.map +1 -1
- package/dist/upload/index.js +19 -10
- package/dist/upload/stream.d.ts.map +1 -1
- package/dist/upload/stream.js +2 -2
- package/eslint.config.mjs +16 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @empiricalrun/r2-uploader
|
|
2
2
|
|
|
3
|
+
## 0.3.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9f33a7a: chore: fetch r2 files with suffix, add created_at to summary
|
|
8
|
+
|
|
9
|
+
## 0.3.9
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 21b0768: feat: add send invoice and signed url capability to r2-uploader
|
|
14
|
+
|
|
3
15
|
## 0.3.8
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/delete.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteFile =
|
|
3
|
+
exports.deleteFile = deleteFile;
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
5
|
const logger_1 = require("./logger");
|
|
6
6
|
async function deleteFile(fileKey, config) {
|
|
@@ -26,4 +26,3 @@ async function deleteFile(fileKey, config) {
|
|
|
26
26
|
throw error;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
exports.deleteFile = deleteFile;
|
package/dist/fetch.d.ts
CHANGED
|
@@ -3,5 +3,11 @@ export declare const fetchFiles: (config: R2FetchConfig) => Promise<{
|
|
|
3
3
|
key: string;
|
|
4
4
|
lastModified: Date;
|
|
5
5
|
size: number;
|
|
6
|
-
|
|
6
|
+
signedUrl: string;
|
|
7
|
+
}[] | {
|
|
8
|
+
key: string;
|
|
9
|
+
lastModified: Date;
|
|
10
|
+
size: number;
|
|
11
|
+
signedUrl: undefined;
|
|
12
|
+
}[]>;
|
|
7
13
|
//# sourceMappingURL=fetch.d.ts.map
|
package/dist/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,UAAU,GAAU,QAAQ,aAAa;;;;;;;;;;IAmDrD,CAAC"}
|
package/dist/fetch.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchFiles = void 0;
|
|
4
4
|
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
5
|
+
const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner");
|
|
5
6
|
const fetchFiles = async (config) => {
|
|
6
7
|
const S3 = new client_s3_1.S3Client({
|
|
7
8
|
region: "auto",
|
|
@@ -14,6 +15,7 @@ const fetchFiles = async (config) => {
|
|
|
14
15
|
const params = {
|
|
15
16
|
Bucket: config.bucket,
|
|
16
17
|
Prefix: config.prefix,
|
|
18
|
+
MaxKeys: 20_000,
|
|
17
19
|
};
|
|
18
20
|
const cmd = new client_s3_1.ListObjectsV2Command(params);
|
|
19
21
|
const data = await S3.send(cmd);
|
|
@@ -21,12 +23,32 @@ const fetchFiles = async (config) => {
|
|
|
21
23
|
if (KeyCount === 0) {
|
|
22
24
|
return [];
|
|
23
25
|
}
|
|
26
|
+
const filteredContents = config.suffix
|
|
27
|
+
? Contents?.filter((c) => c.Key.endsWith(config.suffix)) || []
|
|
28
|
+
: Contents || [];
|
|
29
|
+
if (config.withSignedUrl) {
|
|
30
|
+
return Promise.all(filteredContents.map(async (c) => {
|
|
31
|
+
const key = c.Key;
|
|
32
|
+
const getObjectCmd = new client_s3_1.GetObjectCommand({
|
|
33
|
+
Bucket: config.bucket,
|
|
34
|
+
Key: key,
|
|
35
|
+
});
|
|
36
|
+
const signedUrl = await (0, s3_request_presigner_1.getSignedUrl)(S3, getObjectCmd);
|
|
37
|
+
return {
|
|
38
|
+
key,
|
|
39
|
+
lastModified: c.LastModified,
|
|
40
|
+
size: c.Size,
|
|
41
|
+
signedUrl,
|
|
42
|
+
};
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
24
45
|
else {
|
|
25
|
-
return
|
|
46
|
+
return filteredContents.map((c) => {
|
|
26
47
|
return {
|
|
27
48
|
key: c.Key,
|
|
28
49
|
lastModified: c.LastModified,
|
|
29
50
|
size: c.Size,
|
|
51
|
+
signedUrl: undefined,
|
|
30
52
|
};
|
|
31
53
|
});
|
|
32
54
|
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
interface R2BaseConfig {
|
|
3
2
|
accountId: string;
|
|
4
3
|
accessKeyId: string;
|
|
@@ -23,6 +22,8 @@ export interface R2UploadBufferConfig extends R2BaseConfig {
|
|
|
23
22
|
}
|
|
24
23
|
export interface R2FetchConfig extends R2BaseConfig {
|
|
25
24
|
prefix: string;
|
|
25
|
+
withSignedUrl?: boolean;
|
|
26
|
+
suffix?: string;
|
|
26
27
|
}
|
|
27
28
|
export interface R2DeleteConfig extends R2BaseConfig {
|
|
28
29
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpE;AAED,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClE;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;CAAG;AAEvD,MAAM,WAAW,OAAO;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/upload/buffer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../src/upload/buffer.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,qBA+FnE,CAAC"}
|
package/dist/upload/buffer.js
CHANGED
|
@@ -64,13 +64,14 @@ const uploadFileBuffers = async (config) => {
|
|
|
64
64
|
}, {
|
|
65
65
|
retries: 5,
|
|
66
66
|
factor: 3,
|
|
67
|
-
minTimeout:
|
|
68
|
-
maxTimeout:
|
|
67
|
+
minTimeout: 1_000,
|
|
68
|
+
maxTimeout: 60_000,
|
|
69
69
|
randomize: true,
|
|
70
70
|
onRetry: (err, i) => {
|
|
71
71
|
if (err) {
|
|
72
72
|
const error = err;
|
|
73
73
|
logger_1.logger.warn("Upload retry attempt:", i, ":", file.fileName);
|
|
74
|
+
// TODO: r2-uploader Response status: undefined
|
|
74
75
|
logger_1.logger.warn("Response status:", error.$response?.statusCode);
|
|
75
76
|
}
|
|
76
77
|
},
|
|
@@ -79,6 +80,7 @@ const uploadFileBuffers = async (config) => {
|
|
|
79
80
|
catch (err) {
|
|
80
81
|
const error = err;
|
|
81
82
|
logger_1.logger.error(`R2 Error - ${file.fileName} \nError: ${error}`);
|
|
83
|
+
// TODO: r2-uploader Upload response undefined with status undefined
|
|
82
84
|
logger_1.logger.error("Upload response", error.$response, "with status", error.$metadata.httpStatusCode);
|
|
83
85
|
}
|
|
84
86
|
return;
|
package/dist/upload/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upload/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upload/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAA8C,MAAM,UAAU,CAAC;AAqB/E,wBAAsB,eAAe,CAAC,EACpC,SAAS,EACT,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBnB;AAED,wBAAsB,mBAAmB,CAAC,EACxC,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,WAAW,EACX,eAAe,GAChB,EAAE;IACD,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnB"}
|
package/dist/upload/index.js
CHANGED
|
@@ -15,18 +15,29 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
39
|
+
exports.uploadDirectory = uploadDirectory;
|
|
40
|
+
exports.uploadInMemoryFiles = uploadInMemoryFiles;
|
|
30
41
|
const fs = __importStar(require("fs"));
|
|
31
42
|
const mime_1 = __importDefault(require("mime"));
|
|
32
43
|
const logger_1 = require("../logger");
|
|
@@ -68,7 +79,6 @@ async function uploadDirectory({ sourceDir, fileList, destinationDir, uploadBuck
|
|
|
68
79
|
const uploadedFiles = await (0, stream_1.uploadFileStreams)(config);
|
|
69
80
|
return uploadedFiles;
|
|
70
81
|
}
|
|
71
|
-
exports.uploadDirectory = uploadDirectory;
|
|
72
82
|
async function uploadInMemoryFiles({ files, destinationDir, uploadBucket, accountId, accessKeyId, secretAccessKey, }) {
|
|
73
83
|
const config = {
|
|
74
84
|
accountId: accountId || process.env.R2_ACCOUNT_ID,
|
|
@@ -80,4 +90,3 @@ async function uploadInMemoryFiles({ files, destinationDir, uploadBucket, accoun
|
|
|
80
90
|
};
|
|
81
91
|
return await (0, buffer_1.uploadFileBuffers)(config);
|
|
82
92
|
}
|
|
83
|
-
exports.uploadInMemoryFiles = uploadInMemoryFiles;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/upload/stream.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/upload/stream.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzD,eAAO,MAAM,iBAAiB,GAAU,QAAQ,oBAAoB,qBAkHnE,CAAC"}
|
package/dist/upload/stream.js
CHANGED
|
@@ -59,8 +59,8 @@ const uploadFileStreams = async (config) => {
|
|
|
59
59
|
}, {
|
|
60
60
|
retries: 5,
|
|
61
61
|
factor: 3,
|
|
62
|
-
minTimeout:
|
|
63
|
-
maxTimeout:
|
|
62
|
+
minTimeout: 1_000,
|
|
63
|
+
maxTimeout: 60_000,
|
|
64
64
|
randomize: true,
|
|
65
65
|
onRetry: (err, i) => {
|
|
66
66
|
logger_1.logger.debug("Upload part retry attempt:", i, ":", file.fullPath);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import libraryConfig from "../eslint-config/library.mjs";
|
|
2
|
+
import tsParser from "@typescript-eslint/parser";
|
|
3
|
+
|
|
4
|
+
export default [
|
|
5
|
+
...libraryConfig,
|
|
6
|
+
{
|
|
7
|
+
files: ["src/**/*.ts", "src/**/*.tsx"],
|
|
8
|
+
languageOptions: {
|
|
9
|
+
parser: tsParser,
|
|
10
|
+
parserOptions: {
|
|
11
|
+
project: "./tsconfig.lint.json",
|
|
12
|
+
tsconfigRootDir: import.meta.dirname,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
];
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["./src/delete.ts","./src/fetch.ts","./src/index.ts","./src/logger.ts","./src/types.ts","./src/upload/buffer.ts","./src/upload/index.ts","./src/upload/stream.ts"],"version":"5.8.3"}
|