@payloadcms/storage-r2 3.71.0-internal.e36f916 → 3.71.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.
@@ -6,6 +6,6 @@ interface Args {
6
6
  collection: CollectionConfig;
7
7
  prefix?: string;
8
8
  }
9
- export declare const getHandler: ({ bucket, prefix }: Args) => StaticHandler;
9
+ export declare const getHandler: ({ bucket, collection, prefix }: Args) => StaticHandler;
10
10
  export {};
11
11
  //# sourceMappingURL=staticHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"staticHandler.d.ts","sourceRoot":"","sources":["../src/staticHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,UAAU,IAAI;IACZ,MAAM,EAAE,QAAQ,CAAA;IAChB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,UAAU,uBAA6B,IAAI,KAAG,aAoB1D,CAAA"}
1
+ {"version":3,"file":"staticHandler.d.ts","sourceRoot":"","sources":["../src/staticHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAK/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,UAAU,IAAI;IACZ,MAAM,EAAE,QAAQ,CAAA;IAChB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,UAAU,mCAAyC,IAAI,KAAG,aA8EtE,CAAA"}
@@ -1,28 +1,76 @@
1
1
  import path from 'path';
2
+ import { getRangeRequestInfo } from 'payload/internal';
2
3
  const isMiniflare = process.env.NODE_ENV === 'development';
3
- export const getHandler = ({ bucket, prefix = '' })=>{
4
- return async (req, { params: { filename } })=>{
5
- // Due to https://github.com/cloudflare/workers-sdk/issues/6047
6
- // We cannot send a Headers instance to Miniflare
7
- const obj = await bucket?.get(path.posix.join(prefix, filename), {
8
- range: isMiniflare ? undefined : req.headers
9
- });
10
- if (obj?.body == undefined) {
11
- return new Response(null, {
12
- status: 404
4
+ export const getHandler = ({ bucket, collection, prefix = '' })=>{
5
+ return async (req, { headers: incomingHeaders, params: { filename } })=>{
6
+ try {
7
+ const key = path.posix.join(prefix, filename);
8
+ // Get file size for range validation
9
+ const headObj = await bucket?.head(key);
10
+ if (!headObj) {
11
+ return new Response(null, {
12
+ status: 404,
13
+ statusText: 'Not Found'
14
+ });
15
+ }
16
+ const fileSize = headObj.size;
17
+ // Handle range request
18
+ const rangeHeader = req.headers.get('range');
19
+ const rangeResult = getRangeRequestInfo({
20
+ fileSize,
21
+ rangeHeader
22
+ });
23
+ if (rangeResult.type === 'invalid') {
24
+ return new Response(null, {
25
+ headers: new Headers(rangeResult.headers),
26
+ status: rangeResult.status
27
+ });
28
+ }
29
+ // Get object with range if needed
30
+ // Due to https://github.com/cloudflare/workers-sdk/issues/6047
31
+ // We cannot send a Headers instance to Miniflare
32
+ const obj = rangeResult.type === 'partial' && !isMiniflare ? await bucket?.get(key, {
33
+ range: {
34
+ length: rangeResult.rangeEnd - rangeResult.rangeStart + 1,
35
+ offset: rangeResult.rangeStart
36
+ }
37
+ }) : await bucket?.get(key);
38
+ if (obj?.body == undefined) {
39
+ return new Response(null, {
40
+ status: 404,
41
+ statusText: 'Not Found'
42
+ });
43
+ }
44
+ let headers = new Headers(incomingHeaders);
45
+ // Add range-related headers from the result
46
+ for (const [key, value] of Object.entries(rangeResult.headers)){
47
+ headers.append(key, value);
48
+ }
49
+ // Add R2-specific headers
50
+ if (!isMiniflare) {
51
+ obj.writeHttpMetadata(headers);
52
+ }
53
+ const etagFromHeaders = req.headers.get('etag') || req.headers.get('if-none-match');
54
+ if (collection.upload && typeof collection.upload === 'object' && typeof collection.upload.modifyResponseHeaders === 'function') {
55
+ headers = collection.upload.modifyResponseHeaders({
56
+ headers
57
+ }) || headers;
58
+ }
59
+ if (etagFromHeaders && etagFromHeaders === obj.etag) {
60
+ return new Response(null, {
61
+ headers,
62
+ status: 304
63
+ });
64
+ }
65
+ return new Response(obj.body, {
66
+ headers,
67
+ status: rangeResult.status
68
+ });
69
+ } catch (err) {
70
+ return new Response('Internal Server Error', {
71
+ status: 500
13
72
  });
14
73
  }
15
- const headers = new Headers();
16
- if (!isMiniflare) {
17
- obj.writeHttpMetadata(headers);
18
- }
19
- return obj.etag === (req.headers.get('etag') || req.headers.get('if-none-match')) ? new Response(null, {
20
- headers,
21
- status: 304
22
- }) : new Response(obj.body, {
23
- headers,
24
- status: 200
25
- });
26
74
  };
27
75
  };
28
76
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/staticHandler.ts"],"sourcesContent":["import type { StaticHandler } from '@payloadcms/plugin-cloud-storage/types'\nimport type { CollectionConfig } from 'payload'\n\nimport path from 'path'\n\nimport type { R2Bucket } from './types.js'\n\ninterface Args {\n bucket: R2Bucket\n collection: CollectionConfig\n prefix?: string\n}\n\nconst isMiniflare = process.env.NODE_ENV === 'development'\n\nexport const getHandler = ({ bucket, prefix = '' }: Args): StaticHandler => {\n return async (req, { params: { filename } }) => {\n // Due to https://github.com/cloudflare/workers-sdk/issues/6047\n // We cannot send a Headers instance to Miniflare\n const obj = await bucket?.get(path.posix.join(prefix, filename), {\n range: isMiniflare ? undefined : req.headers,\n })\n if (obj?.body == undefined) {\n return new Response(null, { status: 404 })\n }\n\n const headers = new Headers()\n if (!isMiniflare) {\n obj.writeHttpMetadata(headers)\n }\n\n return obj.etag === (req.headers.get('etag') || req.headers.get('if-none-match'))\n ? new Response(null, { headers, status: 304 })\n : new Response(obj.body, { headers, status: 200 })\n }\n}\n"],"names":["path","isMiniflare","process","env","NODE_ENV","getHandler","bucket","prefix","req","params","filename","obj","get","posix","join","range","undefined","headers","body","Response","status","Headers","writeHttpMetadata","etag"],"mappings":"AAGA,OAAOA,UAAU,OAAM;AAUvB,MAAMC,cAAcC,QAAQC,GAAG,CAACC,QAAQ,KAAK;AAE7C,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,SAAS,EAAE,EAAQ;IACtD,OAAO,OAAOC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAE;QACzC,+DAA+D;QAC/D,iDAAiD;QACjD,MAAMC,MAAM,MAAML,QAAQM,IAAIZ,KAAKa,KAAK,CAACC,IAAI,CAACP,QAAQG,WAAW;YAC/DK,OAAOd,cAAce,YAAYR,IAAIS,OAAO;QAC9C;QACA,IAAIN,KAAKO,QAAQF,WAAW;YAC1B,OAAO,IAAIG,SAAS,MAAM;gBAAEC,QAAQ;YAAI;QAC1C;QAEA,MAAMH,UAAU,IAAII;QACpB,IAAI,CAACpB,aAAa;YAChBU,IAAIW,iBAAiB,CAACL;QACxB;QAEA,OAAON,IAAIY,IAAI,KAAMf,CAAAA,IAAIS,OAAO,CAACL,GAAG,CAAC,WAAWJ,IAAIS,OAAO,CAACL,GAAG,CAAC,gBAAe,IAC3E,IAAIO,SAAS,MAAM;YAAEF;YAASG,QAAQ;QAAI,KAC1C,IAAID,SAASR,IAAIO,IAAI,EAAE;YAAED;YAASG,QAAQ;QAAI;IACpD;AACF,EAAC"}
1
+ {"version":3,"sources":["../src/staticHandler.ts"],"sourcesContent":["import type { StaticHandler } from '@payloadcms/plugin-cloud-storage/types'\nimport type { CollectionConfig } from 'payload'\n\nimport path from 'path'\nimport { getRangeRequestInfo } from 'payload/internal'\n\nimport type { R2Bucket } from './types.js'\n\ninterface Args {\n bucket: R2Bucket\n collection: CollectionConfig\n prefix?: string\n}\n\nconst isMiniflare = process.env.NODE_ENV === 'development'\n\nexport const getHandler = ({ bucket, collection, prefix = '' }: Args): StaticHandler => {\n return async (req, { headers: incomingHeaders, params: { filename } }) => {\n try {\n const key = path.posix.join(prefix, filename)\n\n // Get file size for range validation\n const headObj = await bucket?.head(key)\n if (!headObj) {\n return new Response(null, { status: 404, statusText: 'Not Found' })\n }\n\n const fileSize = headObj.size\n\n // Handle range request\n const rangeHeader = req.headers.get('range')\n const rangeResult = getRangeRequestInfo({ fileSize, rangeHeader })\n\n if (rangeResult.type === 'invalid') {\n return new Response(null, {\n headers: new Headers(rangeResult.headers),\n status: rangeResult.status,\n })\n }\n\n // Get object with range if needed\n // Due to https://github.com/cloudflare/workers-sdk/issues/6047\n // We cannot send a Headers instance to Miniflare\n const obj =\n rangeResult.type === 'partial' && !isMiniflare\n ? await bucket?.get(key, {\n range: {\n length: rangeResult.rangeEnd - rangeResult.rangeStart + 1,\n offset: rangeResult.rangeStart,\n },\n })\n : await bucket?.get(key)\n\n if (obj?.body == undefined) {\n return new Response(null, { status: 404, statusText: 'Not Found' })\n }\n\n let headers = new Headers(incomingHeaders)\n\n // Add range-related headers from the result\n for (const [key, value] of Object.entries(rangeResult.headers)) {\n headers.append(key, value)\n }\n\n // Add R2-specific headers\n if (!isMiniflare) {\n obj.writeHttpMetadata(headers)\n }\n\n const etagFromHeaders = req.headers.get('etag') || req.headers.get('if-none-match')\n\n if (\n collection.upload &&\n typeof collection.upload === 'object' &&\n typeof collection.upload.modifyResponseHeaders === 'function'\n ) {\n headers = collection.upload.modifyResponseHeaders({ headers }) || headers\n }\n\n if (etagFromHeaders && etagFromHeaders === obj.etag) {\n return new Response(null, {\n headers,\n status: 304,\n })\n }\n\n return new Response(obj.body, {\n headers,\n status: rangeResult.status,\n })\n } catch (err: unknown) {\n return new Response('Internal Server Error', { status: 500 })\n }\n }\n}\n"],"names":["path","getRangeRequestInfo","isMiniflare","process","env","NODE_ENV","getHandler","bucket","collection","prefix","req","headers","incomingHeaders","params","filename","key","posix","join","headObj","head","Response","status","statusText","fileSize","size","rangeHeader","get","rangeResult","type","Headers","obj","range","length","rangeEnd","rangeStart","offset","body","undefined","value","Object","entries","append","writeHttpMetadata","etagFromHeaders","upload","modifyResponseHeaders","etag","err"],"mappings":"AAGA,OAAOA,UAAU,OAAM;AACvB,SAASC,mBAAmB,QAAQ,mBAAkB;AAUtD,MAAMC,cAAcC,QAAQC,GAAG,CAACC,QAAQ,KAAK;AAE7C,OAAO,MAAMC,aAAa,CAAC,EAAEC,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAE,EAAQ;IAClE,OAAO,OAAOC,KAAK,EAAEC,SAASC,eAAe,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,EAAE;QACnE,IAAI;YACF,MAAMC,MAAMf,KAAKgB,KAAK,CAACC,IAAI,CAACR,QAAQK;YAEpC,qCAAqC;YACrC,MAAMI,UAAU,MAAMX,QAAQY,KAAKJ;YACnC,IAAI,CAACG,SAAS;gBACZ,OAAO,IAAIE,SAAS,MAAM;oBAAEC,QAAQ;oBAAKC,YAAY;gBAAY;YACnE;YAEA,MAAMC,WAAWL,QAAQM,IAAI;YAE7B,uBAAuB;YACvB,MAAMC,cAAcf,IAAIC,OAAO,CAACe,GAAG,CAAC;YACpC,MAAMC,cAAc1B,oBAAoB;gBAAEsB;gBAAUE;YAAY;YAEhE,IAAIE,YAAYC,IAAI,KAAK,WAAW;gBAClC,OAAO,IAAIR,SAAS,MAAM;oBACxBT,SAAS,IAAIkB,QAAQF,YAAYhB,OAAO;oBACxCU,QAAQM,YAAYN,MAAM;gBAC5B;YACF;YAEA,kCAAkC;YAClC,+DAA+D;YAC/D,iDAAiD;YACjD,MAAMS,MACJH,YAAYC,IAAI,KAAK,aAAa,CAAC1B,cAC/B,MAAMK,QAAQmB,IAAIX,KAAK;gBACrBgB,OAAO;oBACLC,QAAQL,YAAYM,QAAQ,GAAGN,YAAYO,UAAU,GAAG;oBACxDC,QAAQR,YAAYO,UAAU;gBAChC;YACF,KACA,MAAM3B,QAAQmB,IAAIX;YAExB,IAAIe,KAAKM,QAAQC,WAAW;gBAC1B,OAAO,IAAIjB,SAAS,MAAM;oBAAEC,QAAQ;oBAAKC,YAAY;gBAAY;YACnE;YAEA,IAAIX,UAAU,IAAIkB,QAAQjB;YAE1B,4CAA4C;YAC5C,KAAK,MAAM,CAACG,KAAKuB,MAAM,IAAIC,OAAOC,OAAO,CAACb,YAAYhB,OAAO,EAAG;gBAC9DA,QAAQ8B,MAAM,CAAC1B,KAAKuB;YACtB;YAEA,0BAA0B;YAC1B,IAAI,CAACpC,aAAa;gBAChB4B,IAAIY,iBAAiB,CAAC/B;YACxB;YAEA,MAAMgC,kBAAkBjC,IAAIC,OAAO,CAACe,GAAG,CAAC,WAAWhB,IAAIC,OAAO,CAACe,GAAG,CAAC;YAEnE,IACElB,WAAWoC,MAAM,IACjB,OAAOpC,WAAWoC,MAAM,KAAK,YAC7B,OAAOpC,WAAWoC,MAAM,CAACC,qBAAqB,KAAK,YACnD;gBACAlC,UAAUH,WAAWoC,MAAM,CAACC,qBAAqB,CAAC;oBAAElC;gBAAQ,MAAMA;YACpE;YAEA,IAAIgC,mBAAmBA,oBAAoBb,IAAIgB,IAAI,EAAE;gBACnD,OAAO,IAAI1B,SAAS,MAAM;oBACxBT;oBACAU,QAAQ;gBACV;YACF;YAEA,OAAO,IAAID,SAASU,IAAIM,IAAI,EAAE;gBAC5BzB;gBACAU,QAAQM,YAAYN,MAAM;YAC5B;QACF,EAAE,OAAO0B,KAAc;YACrB,OAAO,IAAI3B,SAAS,yBAAyB;gBAAEC,QAAQ;YAAI;QAC7D;IACF;AACF,EAAC"}
package/dist/types.d.ts CHANGED
@@ -1,10 +1,20 @@
1
+ export interface R2Range {
2
+ /** The number of bytes to return */
3
+ length?: number;
4
+ /** The byte offset to start from (inclusive) */
5
+ offset?: number;
6
+ /** Return the last n bytes */
7
+ suffix?: number;
8
+ }
9
+ export interface R2GetOptions {
10
+ [key: string]: any;
11
+ onlyIf?: any | Headers;
12
+ range?: R2Range;
13
+ }
1
14
  export interface R2Bucket {
2
15
  createMultipartUpload(key: string, options?: any): Promise<any>;
3
16
  delete(keys: string | string[]): Promise<void>;
4
- get(key: string, options: {
5
- onlyIf: any | Headers;
6
- } & any): Promise<any | null>;
7
- get(key: string, options?: any): Promise<any | null>;
17
+ get(key: string, options?: R2GetOptions): Promise<any | null>;
8
18
  head(key: string): Promise<any>;
9
19
  list(options?: any): Promise<any>;
10
20
  put(key: string, value: ArrayBuffer | ArrayBufferView | Blob | null | ReadableStream | string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,GAAG,CACD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QACP,MAAM,EAAE,GAAG,GAAG,OAAO,CAAA;KACtB,GAAG,GAAG,GACN,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IACtB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IACpD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,MAAM,EAC5E,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,GAAG,GAAG,OAAO,CAAA;QAC5B,MAAM,EAAE,GAAG,CAAA;KACZ,GAAG,GAAG,GACN,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IACtB,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,MAAM,EAC5E,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,GAAG,CAAC,CAAA;IACf,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;CAC1D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAClB,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAC7D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,MAAM,EAC5E,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,GAAG,GAAG,OAAO,CAAA;QAC5B,MAAM,EAAE,GAAG,CAAA;KACZ,GAAG,GAAG,GACN,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IACtB,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,cAAc,GAAG,MAAM,EAC5E,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,GAAG,CAAC,CAAA;IACf,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;CAC1D"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface R2Bucket {\n createMultipartUpload(key: string, options?: any): Promise<any>\n delete(keys: string | string[]): Promise<void>\n get(\n key: string,\n options: {\n onlyIf: any | Headers\n } & any,\n ): Promise<any | null>\n get(key: string, options?: any): Promise<any | null>\n head(key: string): Promise<any>\n list(options?: any): Promise<any>\n put(\n key: string,\n value: ArrayBuffer | ArrayBufferView | Blob | null | ReadableStream | string,\n options?: {\n httpMetadata?: any | Headers\n onlyIf: any\n } & any,\n ): Promise<any | null>\n put(\n key: string,\n value: ArrayBuffer | ArrayBufferView | Blob | null | ReadableStream | string,\n options?: any,\n ): Promise<any>\n resumeMultipartUpload(key: string, uploadId: string): any\n}\n"],"names":[],"mappings":"AAAA,WA0BC"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["export interface R2Range {\n /** The number of bytes to return */\n length?: number\n /** The byte offset to start from (inclusive) */\n offset?: number\n /** Return the last n bytes */\n suffix?: number\n}\n\nexport interface R2GetOptions {\n [key: string]: any\n onlyIf?: any | Headers\n range?: R2Range\n}\n\nexport interface R2Bucket {\n createMultipartUpload(key: string, options?: any): Promise<any>\n delete(keys: string | string[]): Promise<void>\n get(key: string, options?: R2GetOptions): Promise<any | null>\n head(key: string): Promise<any>\n list(options?: any): Promise<any>\n put(\n key: string,\n value: ArrayBuffer | ArrayBufferView | Blob | null | ReadableStream | string,\n options?: {\n httpMetadata?: any | Headers\n onlyIf: any\n } & any,\n ): Promise<any | null>\n put(\n key: string,\n value: ArrayBuffer | ArrayBufferView | Blob | null | ReadableStream | string,\n options?: any,\n ): Promise<any>\n resumeMultipartUpload(key: string, uploadId: string): any\n}\n"],"names":[],"mappings":"AAeA,WAoBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/storage-r2",
3
- "version": "3.71.0-internal.e36f916",
3
+ "version": "3.71.0",
4
4
  "description": "Payload storage adapter for Cloudflare R2",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -37,13 +37,13 @@
37
37
  "dist"
38
38
  ],
39
39
  "dependencies": {
40
- "@payloadcms/plugin-cloud-storage": "3.71.0-internal.e36f916"
40
+ "@payloadcms/plugin-cloud-storage": "3.71.0"
41
41
  },
42
42
  "devDependencies": {
43
- "payload": "3.71.0-internal.e36f916"
43
+ "payload": "3.71.0"
44
44
  },
45
45
  "peerDependencies": {
46
- "payload": "3.71.0-internal.e36f916"
46
+ "payload": "3.71.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": "^18.20.2 || >=20.9.0"