@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 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 = void 0;
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
- }[] | undefined>;
6
+ signedUrl: string;
7
+ }[] | {
8
+ key: string;
9
+ lastModified: Date;
10
+ size: number;
11
+ signedUrl: undefined;
12
+ }[]>;
7
13
  //# sourceMappingURL=fetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,eAAO,MAAM,UAAU,WAAkB,aAAa;;;;gBA2BrD,CAAC"}
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 Contents?.map((c) => {
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
  }
@@ -1 +1 @@
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;CAChB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;CAAG;AAEvD,MAAM,WAAW,OAAO;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB"}
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,WAAkB,oBAAoB,qBA6FnE,CAAC"}
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"}
@@ -64,13 +64,14 @@ const uploadFileBuffers = async (config) => {
64
64
  }, {
65
65
  retries: 5,
66
66
  factor: 3,
67
- minTimeout: 1000,
68
- maxTimeout: 60000,
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;
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { FileMap } from "../types";
3
2
  export declare function uploadDirectory({ sourceDir, fileList, destinationDir, uploadBucket, accountId, accessKeyId, secretAccessKey, }: {
4
3
  sourceDir: string;
@@ -1 +1 @@
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"}
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"}
@@ -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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
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.uploadInMemoryFiles = exports.uploadDirectory = void 0;
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,WAAkB,oBAAoB,qBAkHnE,CAAC"}
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"}
@@ -59,8 +59,8 @@ const uploadFileStreams = async (config) => {
59
59
  }, {
60
60
  retries: 5,
61
61
  factor: 3,
62
- minTimeout: 1000,
63
- maxTimeout: 60000,
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/r2-uploader",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -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"}