@payloadcms/storage-azure 3.84.0-internal.d5d6e43 → 3.84.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.
@@ -0,0 +1,10 @@
1
+ import type { ContainerClient } from '@azure/storage-blob';
2
+ import type { HandleDelete } from '@payloadcms/plugin-cloud-storage/types';
3
+ import type { CollectionConfig } from 'payload';
4
+ interface Args {
5
+ collection: CollectionConfig;
6
+ getStorageClient: () => ContainerClient;
7
+ }
8
+ export declare const getHandleDelete: ({ getStorageClient }: Args) => HandleDelete;
9
+ export {};
10
+ //# sourceMappingURL=handleDelete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleDelete.d.ts","sourceRoot":"","sources":["../src/handleDelete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,UAAU,IAAI;IACZ,UAAU,EAAE,gBAAgB,CAAA;IAC5B,gBAAgB,EAAE,MAAM,eAAe,CAAA;CACxC;AAED,eAAO,MAAM,eAAe,yBAA0B,IAAI,KAAG,YAK5D,CAAA"}
@@ -0,0 +1,9 @@
1
+ import path from 'path';
2
+ export const getHandleDelete = ({ getStorageClient })=>{
3
+ return async ({ doc: { prefix = '' }, filename })=>{
4
+ const blockBlobClient = getStorageClient().getBlockBlobClient(path.posix.join(prefix, filename));
5
+ await blockBlobClient.deleteIfExists();
6
+ };
7
+ };
8
+
9
+ //# sourceMappingURL=handleDelete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/handleDelete.ts"],"sourcesContent":["import type { ContainerClient } from '@azure/storage-blob'\nimport type { HandleDelete } from '@payloadcms/plugin-cloud-storage/types'\nimport type { CollectionConfig } from 'payload'\n\nimport path from 'path'\n\ninterface Args {\n collection: CollectionConfig\n getStorageClient: () => ContainerClient\n}\n\nexport const getHandleDelete = ({ getStorageClient }: Args): HandleDelete => {\n return async ({ doc: { prefix = '' }, filename }) => {\n const blockBlobClient = getStorageClient().getBlockBlobClient(path.posix.join(prefix, filename))\n await blockBlobClient.deleteIfExists()\n }\n}\n"],"names":["path","getHandleDelete","getStorageClient","doc","prefix","filename","blockBlobClient","getBlockBlobClient","posix","join","deleteIfExists"],"mappings":"AAIA,OAAOA,UAAU,OAAM;AAOvB,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,gBAAgB,EAAQ;IACxD,OAAO,OAAO,EAAEC,KAAK,EAAEC,SAAS,EAAE,EAAE,EAAEC,QAAQ,EAAE;QAC9C,MAAMC,kBAAkBJ,mBAAmBK,kBAAkB,CAACP,KAAKQ,KAAK,CAACC,IAAI,CAACL,QAAQC;QACtF,MAAMC,gBAAgBI,cAAc;IACtC;AACF,EAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ContainerClient } from '@azure/storage-blob';
2
+ import type { HandleUpload } from '@payloadcms/plugin-cloud-storage/types';
3
+ import type { CollectionConfig } from 'payload';
4
+ interface Args {
5
+ collection: CollectionConfig;
6
+ getStorageClient: () => ContainerClient;
7
+ prefix?: string;
8
+ }
9
+ export declare const getHandleUpload: ({ getStorageClient, prefix }: Args) => HandleUpload;
10
+ export {};
11
+ //# sourceMappingURL=handleUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleUpload.d.ts","sourceRoot":"","sources":["../src/handleUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAO/C,UAAU,IAAI;IACZ,UAAU,EAAE,gBAAgB,CAAA;IAC5B,gBAAgB,EAAE,MAAM,eAAe,CAAA;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,eAAO,MAAM,eAAe,iCAAuC,IAAI,KAAG,YAyBzE,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { AbortController } from '@azure/abort-controller';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { Readable } from 'stream';
5
+ const multipartThreshold = 1024 * 1024 * 50 // 50MB
6
+ ;
7
+ export const getHandleUpload = ({ getStorageClient, prefix = '' })=>{
8
+ return async ({ data, file })=>{
9
+ const fileKey = path.posix.join(data.prefix || prefix, file.filename);
10
+ const blockBlobClient = getStorageClient().getBlockBlobClient(fileKey);
11
+ // when there are no temp files, or the upload is less than the threshold size, do not stream files
12
+ if (!file.tempFilePath && file.buffer.length > 0 && file.buffer.length < multipartThreshold) {
13
+ await blockBlobClient.upload(file.buffer, file.buffer.byteLength, {
14
+ blobHTTPHeaders: {
15
+ blobContentType: file.mimeType
16
+ }
17
+ });
18
+ return data;
19
+ }
20
+ const fileBufferOrStream = file.tempFilePath ? fs.createReadStream(file.tempFilePath) : Readable.from(file.buffer);
21
+ await blockBlobClient.uploadStream(fileBufferOrStream, 4 * 1024 * 1024, 4, {
22
+ abortSignal: AbortController.timeout(30 * 60 * 1000)
23
+ });
24
+ return data;
25
+ };
26
+ };
27
+
28
+ //# sourceMappingURL=handleUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/handleUpload.ts"],"sourcesContent":["import type { ContainerClient } from '@azure/storage-blob'\nimport type { HandleUpload } from '@payloadcms/plugin-cloud-storage/types'\nimport type { CollectionConfig } from 'payload'\n\nimport { AbortController } from '@azure/abort-controller'\nimport fs from 'fs'\nimport path from 'path'\nimport { Readable } from 'stream'\n\ninterface Args {\n collection: CollectionConfig\n getStorageClient: () => ContainerClient\n prefix?: string\n}\n\nconst multipartThreshold = 1024 * 1024 * 50 // 50MB\nexport const getHandleUpload = ({ getStorageClient, prefix = '' }: Args): HandleUpload => {\n return async ({ data, file }) => {\n const fileKey = path.posix.join(data.prefix || prefix, file.filename)\n\n const blockBlobClient = getStorageClient().getBlockBlobClient(fileKey)\n\n // when there are no temp files, or the upload is less than the threshold size, do not stream files\n if (!file.tempFilePath && file.buffer.length > 0 && file.buffer.length < multipartThreshold) {\n await blockBlobClient.upload(file.buffer, file.buffer.byteLength, {\n blobHTTPHeaders: { blobContentType: file.mimeType },\n })\n\n return data\n }\n\n const fileBufferOrStream: Readable = file.tempFilePath\n ? fs.createReadStream(file.tempFilePath)\n : Readable.from(file.buffer)\n\n await blockBlobClient.uploadStream(fileBufferOrStream, 4 * 1024 * 1024, 4, {\n abortSignal: AbortController.timeout(30 * 60 * 1000),\n })\n\n return data\n }\n}\n"],"names":["AbortController","fs","path","Readable","multipartThreshold","getHandleUpload","getStorageClient","prefix","data","file","fileKey","posix","join","filename","blockBlobClient","getBlockBlobClient","tempFilePath","buffer","length","upload","byteLength","blobHTTPHeaders","blobContentType","mimeType","fileBufferOrStream","createReadStream","from","uploadStream","abortSignal","timeout"],"mappings":"AAIA,SAASA,eAAe,QAAQ,0BAAyB;AACzD,OAAOC,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,QAAQ,QAAQ,SAAQ;AAQjC,MAAMC,qBAAqB,OAAO,OAAO,GAAG,OAAO;;AACnD,OAAO,MAAMC,kBAAkB,CAAC,EAAEC,gBAAgB,EAAEC,SAAS,EAAE,EAAQ;IACrE,OAAO,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAE;QAC1B,MAAMC,UAAUR,KAAKS,KAAK,CAACC,IAAI,CAACJ,KAAKD,MAAM,IAAIA,QAAQE,KAAKI,QAAQ;QAEpE,MAAMC,kBAAkBR,mBAAmBS,kBAAkB,CAACL;QAE9D,mGAAmG;QACnG,IAAI,CAACD,KAAKO,YAAY,IAAIP,KAAKQ,MAAM,CAACC,MAAM,GAAG,KAAKT,KAAKQ,MAAM,CAACC,MAAM,GAAGd,oBAAoB;YAC3F,MAAMU,gBAAgBK,MAAM,CAACV,KAAKQ,MAAM,EAAER,KAAKQ,MAAM,CAACG,UAAU,EAAE;gBAChEC,iBAAiB;oBAAEC,iBAAiBb,KAAKc,QAAQ;gBAAC;YACpD;YAEA,OAAOf;QACT;QAEA,MAAMgB,qBAA+Bf,KAAKO,YAAY,GAClDf,GAAGwB,gBAAgB,CAAChB,KAAKO,YAAY,IACrCb,SAASuB,IAAI,CAACjB,KAAKQ,MAAM;QAE7B,MAAMH,gBAAgBa,YAAY,CAACH,oBAAoB,IAAI,OAAO,MAAM,GAAG;YACzEI,aAAa5B,gBAAgB6B,OAAO,CAAC,KAAK,KAAK;QACjD;QAEA,OAAOrB;IACT;AACF,EAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ContainerClient } from '@azure/storage-blob';
2
+ import type { StaticHandler } from '@payloadcms/plugin-cloud-storage/types';
3
+ import type { CollectionConfig } from 'payload';
4
+ interface Args {
5
+ collection: CollectionConfig;
6
+ getStorageClient: () => ContainerClient;
7
+ }
8
+ export declare const getHandler: ({ collection, getStorageClient }: Args) => StaticHandler;
9
+ export {};
10
+ //# sourceMappingURL=staticHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staticHandler.d.ts","sourceRoot":"","sources":["../src/staticHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAuC/C,UAAU,IAAI;IACZ,UAAU,EAAE,gBAAgB,CAAA;IAC5B,gBAAgB,EAAE,MAAM,eAAe,CAAA;CACxC;AAED,eAAO,MAAM,UAAU,qCAAsC,IAAI,KAAG,aA6GnE,CAAA"}
@@ -0,0 +1,134 @@
1
+ import { RestError } from '@azure/storage-blob';
2
+ import { getFilePrefix } from '@payloadcms/plugin-cloud-storage/utilities';
3
+ import path from 'path';
4
+ import { getRangeRequestInfo } from 'payload/internal';
5
+ import { sanitizeFilename } from 'payload/shared';
6
+ const isNodeReadableStream = (body)=>{
7
+ return typeof body === 'object' && body !== null && 'pipe' in body && typeof body.pipe === 'function' && 'destroy' in body && typeof body.destroy === 'function';
8
+ };
9
+ const abortRequestAndDestroyStream = ({ abortController, blob })=>{
10
+ try {
11
+ abortController.abort();
12
+ } catch {
13
+ /* noop */ }
14
+ if (blob?.readableStreamBody && isNodeReadableStream(blob.readableStreamBody)) {
15
+ blob.readableStreamBody.destroy();
16
+ }
17
+ };
18
+ export const getHandler = ({ collection, getStorageClient })=>{
19
+ return async (req, { headers: incomingHeaders, params: { clientUploadContext, filename } })=>{
20
+ let blob = undefined;
21
+ let streamed = false;
22
+ const abortController = new AbortController();
23
+ if (req.signal) {
24
+ req.signal.addEventListener('abort', ()=>{
25
+ abortRequestAndDestroyStream({
26
+ abortController,
27
+ blob
28
+ });
29
+ });
30
+ }
31
+ try {
32
+ const prefix = await getFilePrefix({
33
+ clientUploadContext,
34
+ collection,
35
+ filename,
36
+ req
37
+ });
38
+ const blockBlobClient = getStorageClient().getBlockBlobClient(path.posix.join(prefix, sanitizeFilename(filename)));
39
+ // Get file size for range validation
40
+ const properties = await blockBlobClient.getProperties();
41
+ const fileSize = properties.contentLength;
42
+ if (!fileSize) {
43
+ return new Response('Internal Server Error', {
44
+ status: 500
45
+ });
46
+ }
47
+ // Handle range request
48
+ const rangeHeader = req.headers.get('range');
49
+ const rangeResult = getRangeRequestInfo({
50
+ fileSize,
51
+ rangeHeader
52
+ });
53
+ if (rangeResult.type === 'invalid') {
54
+ return new Response(null, {
55
+ headers: new Headers(rangeResult.headers),
56
+ status: rangeResult.status
57
+ });
58
+ }
59
+ // Download with range if partial
60
+ blob = rangeResult.type === 'partial' ? await blockBlobClient.download(rangeResult.rangeStart, rangeResult.rangeEnd - rangeResult.rangeStart + 1, {
61
+ abortSignal: abortController.signal
62
+ }) : await blockBlobClient.download(0, undefined, {
63
+ abortSignal: abortController.signal
64
+ });
65
+ let headers = new Headers(incomingHeaders);
66
+ // Add range-related headers from the result
67
+ for (const [key, value] of Object.entries(rangeResult.headers)){
68
+ headers.append(key, value);
69
+ }
70
+ // Add Azure-specific headers
71
+ headers.append('Content-Type', String(properties.contentType));
72
+ if (properties.etag) {
73
+ headers.append('ETag', String(properties.etag));
74
+ }
75
+ // Add Content-Security-Policy header for SVG files to prevent executable code
76
+ if (properties.contentType === 'image/svg+xml') {
77
+ headers.append('Content-Security-Policy', "script-src 'none'");
78
+ }
79
+ const etagFromHeaders = req.headers.get('etag') || req.headers.get('if-none-match');
80
+ if (collection.upload && typeof collection.upload === 'object' && typeof collection.upload.modifyResponseHeaders === 'function') {
81
+ headers = collection.upload.modifyResponseHeaders({
82
+ headers
83
+ }) || headers;
84
+ }
85
+ if (etagFromHeaders && etagFromHeaders === properties.etag) {
86
+ return new Response(null, {
87
+ headers,
88
+ status: 304
89
+ });
90
+ }
91
+ if (!blob.readableStreamBody || !isNodeReadableStream(blob.readableStreamBody)) {
92
+ return new Response('Internal Server Error', {
93
+ status: 500
94
+ });
95
+ }
96
+ const stream = blob.readableStreamBody;
97
+ stream.on('error', (err)=>{
98
+ req.payload.logger.error({
99
+ err,
100
+ msg: 'Error while streaming Azure blob (aborting)'
101
+ });
102
+ abortRequestAndDestroyStream({
103
+ abortController,
104
+ blob
105
+ });
106
+ });
107
+ streamed = true;
108
+ return new Response(stream, {
109
+ headers,
110
+ status: rangeResult.status
111
+ });
112
+ } catch (err) {
113
+ if (err instanceof RestError && err.statusCode === 404) {
114
+ return new Response(null, {
115
+ status: 404,
116
+ statusText: 'Not Found'
117
+ });
118
+ }
119
+ req.payload.logger.error(err);
120
+ return new Response('Internal Server Error', {
121
+ status: 500
122
+ });
123
+ } finally{
124
+ if (!streamed) {
125
+ abortRequestAndDestroyStream({
126
+ abortController,
127
+ blob
128
+ });
129
+ }
130
+ }
131
+ };
132
+ };
133
+
134
+ //# sourceMappingURL=staticHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/staticHandler.ts"],"sourcesContent":["import type { BlobDownloadResponseParsed, ContainerClient } from '@azure/storage-blob'\nimport type { StaticHandler } from '@payloadcms/plugin-cloud-storage/types'\nimport type { CollectionConfig } from 'payload'\nimport type { Readable } from 'stream'\n\nimport { RestError } from '@azure/storage-blob'\nimport { getFilePrefix } from '@payloadcms/plugin-cloud-storage/utilities'\nimport path from 'path'\nimport { getRangeRequestInfo } from 'payload/internal'\nimport { sanitizeFilename } from 'payload/shared'\n\nconst isNodeReadableStream = (\n body: BlobDownloadResponseParsed['readableStreamBody'],\n): body is Readable => {\n return (\n typeof body === 'object' &&\n body !== null &&\n 'pipe' in body &&\n typeof body.pipe === 'function' &&\n 'destroy' in body &&\n typeof body.destroy === 'function'\n )\n}\n\nconst abortRequestAndDestroyStream = ({\n abortController,\n blob,\n}: {\n abortController: AbortController\n blob?: BlobDownloadResponseParsed\n}) => {\n try {\n abortController.abort()\n } catch {\n /* noop */\n }\n if (blob?.readableStreamBody && isNodeReadableStream(blob.readableStreamBody)) {\n blob.readableStreamBody.destroy()\n }\n}\n\ninterface Args {\n collection: CollectionConfig\n getStorageClient: () => ContainerClient\n}\n\nexport const getHandler = ({ collection, getStorageClient }: Args): StaticHandler => {\n return async (req, { headers: incomingHeaders, params: { clientUploadContext, filename } }) => {\n let blob: BlobDownloadResponseParsed | undefined = undefined\n let streamed = false\n\n const abortController = new AbortController()\n if (req.signal) {\n req.signal.addEventListener('abort', () => {\n abortRequestAndDestroyStream({ abortController, blob })\n })\n }\n\n try {\n const prefix = await getFilePrefix({ clientUploadContext, collection, filename, req })\n const blockBlobClient = getStorageClient().getBlockBlobClient(\n path.posix.join(prefix, sanitizeFilename(filename)),\n )\n\n // Get file size for range validation\n const properties = await blockBlobClient.getProperties()\n const fileSize = properties.contentLength\n\n if (!fileSize) {\n return new Response('Internal Server Error', { status: 500 })\n }\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 // Download with range if partial\n blob =\n rangeResult.type === 'partial'\n ? await blockBlobClient.download(\n rangeResult.rangeStart,\n rangeResult.rangeEnd - rangeResult.rangeStart + 1,\n { abortSignal: abortController.signal },\n )\n : await blockBlobClient.download(0, undefined, { abortSignal: abortController.signal })\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 Azure-specific headers\n headers.append('Content-Type', String(properties.contentType))\n if (properties.etag) {\n headers.append('ETag', String(properties.etag))\n }\n\n // Add Content-Security-Policy header for SVG files to prevent executable code\n if (properties.contentType === 'image/svg+xml') {\n headers.append('Content-Security-Policy', \"script-src 'none'\")\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 === properties.etag) {\n return new Response(null, {\n headers,\n status: 304,\n })\n }\n\n if (!blob.readableStreamBody || !isNodeReadableStream(blob.readableStreamBody)) {\n return new Response('Internal Server Error', { status: 500 })\n }\n\n const stream = blob.readableStreamBody\n stream.on('error', (err: Error) => {\n req.payload.logger.error({\n err,\n msg: 'Error while streaming Azure blob (aborting)',\n })\n abortRequestAndDestroyStream({ abortController, blob })\n })\n\n streamed = true\n return new Response(stream, { headers, status: rangeResult.status })\n } catch (err: unknown) {\n if (err instanceof RestError && err.statusCode === 404) {\n return new Response(null, { status: 404, statusText: 'Not Found' })\n }\n req.payload.logger.error(err)\n return new Response('Internal Server Error', { status: 500 })\n } finally {\n if (!streamed) {\n abortRequestAndDestroyStream({ abortController, blob })\n }\n }\n }\n}\n"],"names":["RestError","getFilePrefix","path","getRangeRequestInfo","sanitizeFilename","isNodeReadableStream","body","pipe","destroy","abortRequestAndDestroyStream","abortController","blob","abort","readableStreamBody","getHandler","collection","getStorageClient","req","headers","incomingHeaders","params","clientUploadContext","filename","undefined","streamed","AbortController","signal","addEventListener","prefix","blockBlobClient","getBlockBlobClient","posix","join","properties","getProperties","fileSize","contentLength","Response","status","rangeHeader","get","rangeResult","type","Headers","download","rangeStart","rangeEnd","abortSignal","key","value","Object","entries","append","String","contentType","etag","etagFromHeaders","upload","modifyResponseHeaders","stream","on","err","payload","logger","error","msg","statusCode","statusText"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/storage-azure",
3
- "version": "3.84.0-internal.d5d6e43",
3
+ "version": "3.84.0",
4
4
  "description": "Payload storage adapter for Azure Blob Storage",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -39,13 +39,13 @@
39
39
  "dependencies": {
40
40
  "@azure/abort-controller": "^1.1.0",
41
41
  "@azure/storage-blob": "^12.11.0",
42
- "@payloadcms/plugin-cloud-storage": "3.84.0-internal.d5d6e43"
42
+ "@payloadcms/plugin-cloud-storage": "3.84.0"
43
43
  },
44
44
  "devDependencies": {
45
- "payload": "3.84.0-internal.d5d6e43"
45
+ "payload": "3.84.0"
46
46
  },
47
47
  "peerDependencies": {
48
- "payload": "3.84.0-internal.d5d6e43"
48
+ "payload": "3.84.0"
49
49
  },
50
50
  "engines": {
51
51
  "node": "^18.20.2 || >=20.9.0"