@payloadcms/plugin-cloud-storage 1.0.0 → 1.0.3
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/.eslintrc.js +4 -0
- package/README.md +54 -24
- package/azure.d.ts +1 -0
- package/azure.js +1 -0
- package/dist/adapters/azure/handleDelete.d.ts +3 -4
- package/dist/adapters/azure/handleDelete.js +1 -4
- package/dist/adapters/azure/handleDelete.js.map +1 -1
- package/dist/adapters/azure/handleUpload.d.ts +3 -4
- package/dist/adapters/azure/handleUpload.js +1 -4
- package/dist/adapters/azure/handleUpload.js.map +1 -1
- package/dist/adapters/azure/index.js +7 -4
- package/dist/adapters/azure/index.js.map +1 -1
- package/dist/adapters/azure/staticHandler.d.ts +7 -0
- package/dist/adapters/azure/staticHandler.js +65 -0
- package/dist/adapters/azure/staticHandler.js.map +1 -0
- package/dist/adapters/s3/generateURL.d.ts +8 -0
- package/dist/adapters/s3/generateURL.js +12 -0
- package/dist/adapters/s3/generateURL.js.map +1 -0
- package/dist/adapters/s3/handleDelete.d.ts +8 -0
- package/dist/adapters/s3/handleDelete.js +60 -0
- package/dist/adapters/s3/handleDelete.js.map +1 -0
- package/dist/adapters/s3/handleUpload.d.ts +11 -0
- package/dist/adapters/s3/handleUpload.js +63 -0
- package/dist/adapters/s3/handleUpload.js.map +1 -0
- package/dist/adapters/s3/index.d.ts +8 -0
- package/dist/adapters/s3/index.js +53 -0
- package/dist/adapters/s3/index.js.map +1 -0
- package/dist/adapters/s3/mock.d.ts +1 -0
- package/dist/adapters/s3/mock.js +5 -0
- package/dist/adapters/s3/mock.js.map +1 -0
- package/dist/adapters/s3/staticHandler.d.ts +8 -0
- package/dist/adapters/s3/staticHandler.js +67 -0
- package/dist/adapters/s3/staticHandler.js.map +1 -0
- package/dist/adapters/s3/webpack.d.ts +2 -0
- package/dist/adapters/s3/webpack.js +25 -0
- package/dist/adapters/s3/webpack.js.map +1 -0
- package/dist/fields/getFields.d.ts +2 -1
- package/dist/fields/getFields.js +52 -48
- package/dist/fields/getFields.js.map +1 -1
- package/dist/hooks/beforeChange.js +6 -7
- package/dist/hooks/beforeChange.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/plugin.js +10 -5
- package/dist/plugin.js.map +1 -1
- package/dist/types.d.ts +5 -2
- package/dist/webpack.js +4 -6
- package/dist/webpack.js.map +1 -1
- package/package.json +13 -5
- package/s3.d.ts +1 -0
- package/s3.js +1 -0
package/.eslintrc.js
ADDED
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ This repository contains the officially supported Payload Cloud Storage plugin.
|
|
|
4
4
|
|
|
5
5
|
#### Requirements
|
|
6
6
|
|
|
7
|
-
- Payload version `1.0.
|
|
7
|
+
- Payload version `1.0.19` or higher is required
|
|
8
8
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
|
@@ -18,10 +18,11 @@ import { cloudStorage } from '@payloadcms/plugin-cloud-storage';
|
|
|
18
18
|
export default buildConfig({
|
|
19
19
|
plugins: [
|
|
20
20
|
cloudStorage({
|
|
21
|
-
collections:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
collections: {
|
|
22
|
+
'my-collection-slug': {
|
|
23
|
+
adapter: theAdapterToUse, // see docs for the adapter you want to use
|
|
24
|
+
},
|
|
25
|
+
},
|
|
25
26
|
}),
|
|
26
27
|
],
|
|
27
28
|
// The rest of your config goes here
|
|
@@ -31,9 +32,11 @@ export default buildConfig({
|
|
|
31
32
|
## Features
|
|
32
33
|
|
|
33
34
|
**Adapter-based Implementation**
|
|
35
|
+
|
|
34
36
|
This plugin supports the following adapters:
|
|
35
37
|
|
|
36
38
|
- [Azure Blob Storage](#azure-blob-storage-adapter)
|
|
39
|
+
- [AWS S3-style Storage](#s3-adapter)
|
|
37
40
|
|
|
38
41
|
However, you can create your own adapter for any third-party service you would like to use.
|
|
39
42
|
|
|
@@ -41,26 +44,26 @@ However, you can create your own adapter for any third-party service you would l
|
|
|
41
44
|
|
|
42
45
|
This plugin is configurable to work across many different Payload collections. A `*` denotes that the property is required.
|
|
43
46
|
|
|
44
|
-
| Option
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
+
| Option | Description |
|
|
48
|
+
| ----------------------- | ----------- |
|
|
49
|
+
| `collections` * | Object with keys set to the slug of collections you want to enable the plugin for, and values set to collection-specific options. |
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
**Collection-specific options:**
|
|
49
52
|
|
|
50
53
|
| Option | Description |
|
|
51
54
|
|------------------------------|---------------------------------|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
+
| `adapter` * | Pass in the adapter that you'd like to use for this collection. |
|
|
56
|
+
| `disableLocalStorage` | Choose to disable local storage on this collection. Defaults to `true`. |
|
|
57
|
+
| `disablePayloadAccessControl` | Set to `true` to disable Payload's access control. [More](#payload-access-control) |
|
|
55
58
|
|
|
56
|
-
|
|
59
|
+
### Azure Blob Storage Adapter
|
|
57
60
|
|
|
58
61
|
To use the Azure Blob Storage adapter, you need to have `@azure/storage-blob` installed in your project dependencies. To do so, run `yarn add @azure/storage-blob`.
|
|
59
62
|
|
|
60
63
|
From there, create the adapter, passing in all of its required properties:
|
|
61
64
|
|
|
62
65
|
```js
|
|
63
|
-
import { azureBlobStorageAdapter } from '@payloadcms/plugin-cloud-storage';
|
|
66
|
+
import { azureBlobStorageAdapter } from '@payloadcms/plugin-cloud-storage/azure';
|
|
64
67
|
|
|
65
68
|
const adapter = azureBlobStorageAdapter({
|
|
66
69
|
connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
|
|
@@ -72,20 +75,47 @@ const adapter = azureBlobStorageAdapter({
|
|
|
72
75
|
// Now you can pass this adapter to the plugin
|
|
73
76
|
```
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
### S3 Adapter
|
|
79
|
+
|
|
80
|
+
To use the S3 adapter, you need to have `@aws-sdk/client-s3` installed in your project dependencies. To do so, run `yarn add @aws-sdk/client-s3`.
|
|
81
|
+
|
|
82
|
+
From there, create the adapter, passing in all of its required properties:
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
import { s3Adapter } from '@payloadcms/plugin-cloud-storage/s3';
|
|
86
|
+
|
|
87
|
+
const adapter = s3Adapter({
|
|
88
|
+
config: {
|
|
89
|
+
endpoint: process.env.S3_ENDPOINT,
|
|
90
|
+
credentials: {
|
|
91
|
+
accessKeyId: process.env.S3_ACCESS_KEY_ID,
|
|
92
|
+
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
bucket: process.env.S3_BUCKET,
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
// Now you can pass this adapter to the plugin
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Payload Access Control
|
|
102
|
+
|
|
103
|
+
Payload ships with access control that runs _even on statically served files_. The same `read` access control property on your `upload`-enabled collections is used, and it allows you to restrict who can request your uploaded files.
|
|
76
104
|
|
|
77
|
-
|
|
105
|
+
To preserve this feature, by default, this plugin _keeps all file URLs exactly the same_. Your file URLs won't be updated to point directly to your cloud storage source, as in that case, Payload's access control will be completely bypassed and you would need public readability on your cloud-hosted files.
|
|
78
106
|
|
|
79
|
-
|
|
107
|
+
Instead, all uploads will still be reached from the default `/collectionSlug/staticURL/filename` path. This plugin will "pass through" all files that are hosted on your third-party cloud service—with the added benefit of keeping your existing access control in place.
|
|
80
108
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
1. Run `yarn dev` within the `/dev` folder
|
|
87
|
-
1. Open `http://localhost:3000/admin` in your browser
|
|
109
|
+
If this does not apply to you (your upload collection has `read: () => true` or similar) you can disable this functionality by setting `disablePayloadAccessControl` to `true`. When this setting is in place, this plugin will update your file URLs to point directly to your cloud host.
|
|
110
|
+
|
|
111
|
+
## Local development
|
|
112
|
+
|
|
113
|
+
For instructions regarding how to develop with this plugin locally, [click here](https://github.com/payloadcms/plugin-cloud-storage/blob/master/docs/local-dev.md).
|
|
88
114
|
|
|
89
115
|
## Questions
|
|
90
116
|
|
|
91
117
|
Please contact [Payload](dev@payloadcms.com) with any questions about using this plugin.
|
|
118
|
+
|
|
119
|
+
## Credit
|
|
120
|
+
|
|
121
|
+
This plugin was created with significant help, and code, from [Alex Bechmann](https://github.com/alexbechmann) and [Richard VanBergen](https://github.com/richardvanbergen). Thank you!!
|
package/azure.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/adapters/azure'
|
package/azure.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.azureBlobStorageAdapter = require('./dist/adapters/azure')
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { CollectionConfig } from 'payload/types';
|
|
2
|
+
import type { ContainerClient } from '@azure/storage-blob';
|
|
2
3
|
import type { HandleDelete } from '../../types';
|
|
3
4
|
interface Args {
|
|
4
5
|
collection: CollectionConfig;
|
|
5
|
-
|
|
6
|
-
containerName: string;
|
|
7
|
-
baseURL: string;
|
|
6
|
+
containerClient: ContainerClient;
|
|
8
7
|
}
|
|
9
|
-
export declare const getHandleDelete: ({
|
|
8
|
+
export declare const getHandleDelete: ({ containerClient }: Args) => HandleDelete;
|
|
10
9
|
export {};
|
|
@@ -37,11 +37,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getHandleDelete = void 0;
|
|
40
|
-
var storage_blob_1 = require("@azure/storage-blob");
|
|
41
40
|
var getHandleDelete = function (_a) {
|
|
42
|
-
var
|
|
43
|
-
var blobServiceClient = storage_blob_1.BlobServiceClient.fromConnectionString(connectionString);
|
|
44
|
-
var containerClient = blobServiceClient.getContainerClient(containerName);
|
|
41
|
+
var containerClient = _a.containerClient;
|
|
45
42
|
return function (_a) {
|
|
46
43
|
var filename = _a.filename;
|
|
47
44
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleDelete.js","sourceRoot":"","sources":["../../../src/adapters/azure/handleDelete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handleDelete.js","sourceRoot":"","sources":["../../../src/adapters/azure/handleDelete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,IAAM,eAAe,GAAG,UAAC,EAAyB;QAAvB,eAAe,qBAAA;IAC/C,OAAO,UAAO,EAAY;YAAV,QAAQ,cAAA;;;;;;wBAChB,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;wBACpE,qBAAM,eAAe,CAAC,cAAc,EAAE,EAAA;;wBAAtC,SAAsC,CAAA;;;;;KACvC,CAAA;AACH,CAAC,CAAA;AALY,QAAA,eAAe,mBAK3B"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
import type { ContainerClient } from '@azure/storage-blob';
|
|
1
2
|
import type { CollectionConfig } from 'payload/types';
|
|
2
3
|
import type { HandleUpload } from '../../types';
|
|
3
4
|
interface Args {
|
|
4
5
|
collection: CollectionConfig;
|
|
5
|
-
|
|
6
|
-
containerName: string;
|
|
7
|
-
baseURL: string;
|
|
6
|
+
containerClient: ContainerClient;
|
|
8
7
|
allowContainerCreate: boolean;
|
|
9
8
|
}
|
|
10
|
-
export declare const getHandleUpload: ({ allowContainerCreate,
|
|
9
|
+
export declare const getHandleUpload: ({ allowContainerCreate, containerClient }: Args) => HandleUpload;
|
|
11
10
|
export {};
|
|
@@ -37,11 +37,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getHandleUpload = void 0;
|
|
40
|
-
var storage_blob_1 = require("@azure/storage-blob");
|
|
41
40
|
var getHandleUpload = function (_a) {
|
|
42
|
-
var allowContainerCreate = _a.allowContainerCreate,
|
|
43
|
-
var blobServiceClient = storage_blob_1.BlobServiceClient.fromConnectionString(connectionString);
|
|
44
|
-
var containerClient = blobServiceClient.getContainerClient(containerName);
|
|
41
|
+
var allowContainerCreate = _a.allowContainerCreate, containerClient = _a.containerClient;
|
|
45
42
|
if (allowContainerCreate) {
|
|
46
43
|
containerClient.createIfNotExists({ access: 'blob' });
|
|
47
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../../src/adapters/azure/handleUpload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../../src/adapters/azure/handleUpload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAM,eAAe,GAAG,UAAC,EAA+C;QAA7C,oBAAoB,0BAAA,EAAE,eAAe,qBAAA;IACrE,IAAI,oBAAoB,EAAE;QACxB,eAAe,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;KACtD;IAED,OAAO,UAAO,EAAc;YAAZ,IAAI,UAAA,EAAE,IAAI,UAAA;;;;;;wBAClB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;wBACxB,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;wBAEpE,qBAAM,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gCAChE,eAAe,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE;6BACpD,CAAC,EAAA;;wBAFF,SAEE,CAAA;wBAEF,sBAAO,IAAI,EAAA;;;;KACZ,CAAA;AACH,CAAC,CAAA;AAfY,QAAA,eAAe,mBAe3B"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.azureBlobStorageAdapter = void 0;
|
|
4
|
+
var storage_blob_1 = require("@azure/storage-blob");
|
|
5
|
+
var staticHandler_1 = require("./staticHandler");
|
|
4
6
|
var generateURL_1 = require("./generateURL");
|
|
5
7
|
var handleDelete_1 = require("./handleDelete");
|
|
6
8
|
var handleUpload_1 = require("./handleUpload");
|
|
@@ -9,16 +11,17 @@ var azureBlobStorageAdapter = function (_a) {
|
|
|
9
11
|
var connectionString = _a.connectionString, containerName = _a.containerName, baseURL = _a.baseURL, allowContainerCreate = _a.allowContainerCreate;
|
|
10
12
|
return function (_a) {
|
|
11
13
|
var collection = _a.collection;
|
|
14
|
+
var blobServiceClient = storage_blob_1.BlobServiceClient.fromConnectionString(connectionString);
|
|
15
|
+
var containerClient = blobServiceClient.getContainerClient(containerName);
|
|
12
16
|
return {
|
|
13
17
|
handleUpload: (0, handleUpload_1.getHandleUpload)({
|
|
14
18
|
collection: collection,
|
|
15
|
-
|
|
16
|
-
containerName: containerName,
|
|
17
|
-
baseURL: baseURL,
|
|
19
|
+
containerClient: containerClient,
|
|
18
20
|
allowContainerCreate: allowContainerCreate,
|
|
19
21
|
}),
|
|
20
|
-
handleDelete: (0, handleDelete_1.getHandleDelete)({ collection: collection,
|
|
22
|
+
handleDelete: (0, handleDelete_1.getHandleDelete)({ collection: collection, containerClient: containerClient }),
|
|
21
23
|
generateURL: (0, generateURL_1.getGenerateURL)({ containerName: containerName, baseURL: baseURL }),
|
|
24
|
+
staticHandler: (0, staticHandler_1.getHandler)({ containerClient: containerClient }),
|
|
22
25
|
webpack: webpack_1.extendWebpackConfig,
|
|
23
26
|
};
|
|
24
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/azure/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/azure/index.ts"],"names":[],"mappings":";;;AAAA,oDAAuD;AAEvD,iDAA4C;AAC5C,6CAA8C;AAC9C,+CAAgD;AAChD,+CAAgD;AAChD,qCAA+C;AASxC,IAAM,uBAAuB,GAClC,UAAC,EAAwE;QAAtE,gBAAgB,sBAAA,EAAE,aAAa,mBAAA,EAAE,OAAO,aAAA,EAAE,oBAAoB,0BAAA;IACjE,OAAA,UAAC,EAAc;YAAZ,UAAU,gBAAA;QACX,IAAM,iBAAiB,GAAG,gCAAiB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;QAClF,IAAM,eAAe,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QAE3E,OAAO;YACL,YAAY,EAAE,IAAA,8BAAe,EAAC;gBAC5B,UAAU,YAAA;gBACV,eAAe,iBAAA;gBACf,oBAAoB,sBAAA;aACrB,CAAC;YACF,YAAY,EAAE,IAAA,8BAAe,EAAC,EAAE,UAAU,YAAA,EAAE,eAAe,iBAAA,EAAE,CAAC;YAC9D,WAAW,EAAE,IAAA,4BAAc,EAAC,EAAE,aAAa,eAAA,EAAE,OAAO,SAAA,EAAE,CAAC;YACvD,aAAa,EAAE,IAAA,0BAAU,EAAC,EAAE,eAAe,iBAAA,EAAE,CAAC;YAC9C,OAAO,EAAE,6BAAmB;SAC7B,CAAA;IACH,CAAC;AAfD,CAeC,CAAA;AAjBU,QAAA,uBAAuB,2BAiBjC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getHandler = void 0;
|
|
40
|
+
var getHandler = function (_a) {
|
|
41
|
+
var containerClient = _a.containerClient;
|
|
42
|
+
return function (req, res, next) { return __awaiter(void 0, void 0, void 0, function () {
|
|
43
|
+
var blockBlobClient, downloadBlockBlobResponse, err_1;
|
|
44
|
+
return __generator(this, function (_a) {
|
|
45
|
+
switch (_a.label) {
|
|
46
|
+
case 0:
|
|
47
|
+
_a.trys.push([0, 2, , 3]);
|
|
48
|
+
blockBlobClient = containerClient.getBlockBlobClient(req.params.filename);
|
|
49
|
+
return [4 /*yield*/, blockBlobClient.download(0)];
|
|
50
|
+
case 1:
|
|
51
|
+
downloadBlockBlobResponse = _a.sent();
|
|
52
|
+
if (downloadBlockBlobResponse === null || downloadBlockBlobResponse === void 0 ? void 0 : downloadBlockBlobResponse.readableStreamBody) {
|
|
53
|
+
return [2 /*return*/, downloadBlockBlobResponse.readableStreamBody.pipe(res)];
|
|
54
|
+
}
|
|
55
|
+
return [2 /*return*/, next()];
|
|
56
|
+
case 2:
|
|
57
|
+
err_1 = _a.sent();
|
|
58
|
+
return [2 /*return*/, next()];
|
|
59
|
+
case 3: return [2 /*return*/];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}); };
|
|
63
|
+
};
|
|
64
|
+
exports.getHandler = getHandler;
|
|
65
|
+
//# sourceMappingURL=staticHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticHandler.js","sourceRoot":"","sources":["../../../src/adapters/azure/staticHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAM,UAAU,GAAG,UAAC,EAAyB;QAAvB,eAAe,qBAAA;IAC1C,OAAO,UAAO,GAAG,EAAE,GAAG,EAAE,IAAI;;;;;;oBAElB,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBAE7C,qBAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAA;;oBAA7D,yBAAyB,GAAG,SAAiC;oBAEnE,IAAI,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,kBAAkB,EAAE;wBACjD,sBAAO,yBAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA;qBAC9D;oBAED,sBAAO,IAAI,EAAE,EAAA;;;oBAEb,sBAAO,IAAI,EAAE,EAAA;;;;SAEhB,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,UAAU,cAgBtB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
+
import type { GenerateURL } from '../../types';
|
|
3
|
+
interface Args {
|
|
4
|
+
config: AWS.S3ClientConfig;
|
|
5
|
+
bucket: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const getGenerateURL: ({ config: { endpoint }, bucket }: Args) => GenerateURL;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGenerateURL = void 0;
|
|
4
|
+
var getGenerateURL = function (_a) {
|
|
5
|
+
var endpoint = _a.config.endpoint, bucket = _a.bucket;
|
|
6
|
+
return function (_a) {
|
|
7
|
+
var filename = _a.filename;
|
|
8
|
+
return "".concat(endpoint, "/").concat(bucket, "/").concat(filename);
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
exports.getGenerateURL = getGenerateURL;
|
|
12
|
+
//# sourceMappingURL=generateURL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateURL.js","sourceRoot":"","sources":["../../../src/adapters/s3/generateURL.ts"],"names":[],"mappings":";;;AAQO,IAAM,cAAc,GACzB,UAAC,EAAsC;QAA1B,QAAQ,qBAAA,EAAI,MAAM,YAAA;IAC/B,OAAA,UAAC,EAAY;YAAV,QAAQ,cAAA;QACT,OAAO,UAAG,QAAQ,cAAI,MAAM,cAAI,QAAQ,CAAE,CAAA;IAC5C,CAAC;AAFD,CAEC,CAAA;AAJU,QAAA,cAAc,kBAIxB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getHandleDelete = void 0;
|
|
40
|
+
var getHandleDelete = function (_a) {
|
|
41
|
+
var s3 = _a.s3, bucket = _a.bucket;
|
|
42
|
+
return function (_a) {
|
|
43
|
+
var filename = _a.filename;
|
|
44
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
+
return __generator(this, function (_b) {
|
|
46
|
+
switch (_b.label) {
|
|
47
|
+
case 0: return [4 /*yield*/, s3.deleteObject({
|
|
48
|
+
Bucket: bucket,
|
|
49
|
+
Key: filename,
|
|
50
|
+
})];
|
|
51
|
+
case 1:
|
|
52
|
+
_b.sent();
|
|
53
|
+
return [2 /*return*/];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
exports.getHandleDelete = getHandleDelete;
|
|
60
|
+
//# sourceMappingURL=handleDelete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDelete.js","sourceRoot":"","sources":["../../../src/adapters/s3/handleDelete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,IAAM,eAAe,GAAG,UAAC,EAAoB;QAAlB,EAAE,QAAA,EAAE,MAAM,YAAA;IAC1C,OAAO,UAAO,EAAY;YAAV,QAAQ,cAAA;;;;4BACtB,qBAAM,EAAE,CAAC,YAAY,CAAC;4BACpB,MAAM,EAAE,MAAM;4BACd,GAAG,EAAE,QAAQ;yBACd,CAAC,EAAA;;wBAHF,SAGE,CAAA;;;;;KACH,CAAA;AACH,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as AWS from '@aws-sdk/client-s3';
|
|
2
|
+
import type { CollectionConfig } from 'payload/types';
|
|
3
|
+
import type { HandleUpload } from '../../types';
|
|
4
|
+
interface Args {
|
|
5
|
+
collection: CollectionConfig;
|
|
6
|
+
bucket: string;
|
|
7
|
+
acl?: 'private' | 'public-read';
|
|
8
|
+
s3: AWS.S3;
|
|
9
|
+
}
|
|
10
|
+
export declare const getHandleUpload: ({ s3, bucket, acl }: Args) => HandleUpload;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getHandleUpload = void 0;
|
|
40
|
+
var getHandleUpload = function (_a) {
|
|
41
|
+
var s3 = _a.s3, bucket = _a.bucket, acl = _a.acl;
|
|
42
|
+
return function (_a) {
|
|
43
|
+
var data = _a.data, file = _a.file;
|
|
44
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
+
return __generator(this, function (_b) {
|
|
46
|
+
switch (_b.label) {
|
|
47
|
+
case 0: return [4 /*yield*/, s3.putObject({
|
|
48
|
+
Bucket: bucket,
|
|
49
|
+
Key: file.filename,
|
|
50
|
+
Body: file.buffer,
|
|
51
|
+
ACL: acl,
|
|
52
|
+
ContentType: file.mimeType,
|
|
53
|
+
})];
|
|
54
|
+
case 1:
|
|
55
|
+
_b.sent();
|
|
56
|
+
return [2 /*return*/, data];
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
exports.getHandleUpload = getHandleUpload;
|
|
63
|
+
//# sourceMappingURL=handleUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleUpload.js","sourceRoot":"","sources":["../../../src/adapters/s3/handleUpload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,IAAM,eAAe,GAAG,UAAC,EAAyB;QAAvB,EAAE,QAAA,EAAE,MAAM,YAAA,EAAE,GAAG,SAAA;IAC/C,OAAO,UAAO,EAAc;YAAZ,IAAI,UAAA,EAAE,IAAI,UAAA;;;;4BACxB,qBAAM,EAAE,CAAC,SAAS,CAAC;4BACjB,MAAM,EAAE,MAAM;4BACd,GAAG,EAAE,IAAI,CAAC,QAAQ;4BAClB,IAAI,EAAE,IAAI,CAAC,MAAM;4BACjB,GAAG,EAAE,GAAG;4BACR,WAAW,EAAE,IAAI,CAAC,QAAQ;yBAC3B,CAAC,EAAA;;wBANF,SAME,CAAA;wBAEF,sBAAO,IAAI,EAAA;;;;KACZ,CAAA;AACH,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as AWS from '@aws-sdk/client-s3';
|
|
2
|
+
import type { Adapter } from '../../types';
|
|
3
|
+
export interface Args {
|
|
4
|
+
config: AWS.S3ClientConfig;
|
|
5
|
+
bucket: string;
|
|
6
|
+
acl?: 'private' | 'public-read';
|
|
7
|
+
}
|
|
8
|
+
export declare const s3Adapter: ({ config, bucket, acl }: Args) => Adapter;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
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
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.s3Adapter = void 0;
|
|
27
|
+
var AWS = __importStar(require("@aws-sdk/client-s3"));
|
|
28
|
+
var generateURL_1 = require("./generateURL");
|
|
29
|
+
var staticHandler_1 = require("./staticHandler");
|
|
30
|
+
var handleDelete_1 = require("./handleDelete");
|
|
31
|
+
var handleUpload_1 = require("./handleUpload");
|
|
32
|
+
var webpack_1 = require("./webpack");
|
|
33
|
+
var s3Adapter = function (_a) {
|
|
34
|
+
var config = _a.config, bucket = _a.bucket, acl = _a.acl;
|
|
35
|
+
return function (_a) {
|
|
36
|
+
var collection = _a.collection;
|
|
37
|
+
var s3 = new AWS.S3(config);
|
|
38
|
+
return {
|
|
39
|
+
handleUpload: (0, handleUpload_1.getHandleUpload)({
|
|
40
|
+
collection: collection,
|
|
41
|
+
s3: s3,
|
|
42
|
+
bucket: bucket,
|
|
43
|
+
acl: acl,
|
|
44
|
+
}),
|
|
45
|
+
handleDelete: (0, handleDelete_1.getHandleDelete)({ s3: s3, bucket: bucket }),
|
|
46
|
+
generateURL: (0, generateURL_1.getGenerateURL)({ bucket: bucket, config: config }),
|
|
47
|
+
staticHandler: (0, staticHandler_1.getHandler)({ bucket: bucket, s3: s3 }),
|
|
48
|
+
webpack: webpack_1.extendWebpackConfig,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.s3Adapter = s3Adapter;
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/s3/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAyC;AAEzC,6CAA8C;AAC9C,iDAA4C;AAC5C,+CAAgD;AAChD,+CAAgD;AAChD,qCAA+C;AAQxC,IAAM,SAAS,GACpB,UAAC,EAA6B;QAA3B,MAAM,YAAA,EAAE,MAAM,YAAA,EAAE,GAAG,SAAA;IACtB,OAAA,UAAC,EAAc;YAAZ,UAAU,gBAAA;QACX,IAAM,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QAE7B,OAAO;YACL,YAAY,EAAE,IAAA,8BAAe,EAAC;gBAC5B,UAAU,YAAA;gBACV,EAAE,IAAA;gBACF,MAAM,QAAA;gBACN,GAAG,KAAA;aACJ,CAAC;YACF,YAAY,EAAE,IAAA,8BAAe,EAAC,EAAE,EAAE,IAAA,EAAE,MAAM,QAAA,EAAE,CAAC;YAC7C,WAAW,EAAE,IAAA,4BAAc,EAAC,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAC;YAC/C,aAAa,EAAE,IAAA,0BAAU,EAAC,EAAE,MAAM,QAAA,EAAE,EAAE,IAAA,EAAE,CAAC;YACzC,OAAO,EAAE,6BAAmB;SAC7B,CAAA;IACH,CAAC;AAfD,CAeC,CAAA;AAjBU,QAAA,SAAS,aAiBnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function S3(): null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/adapters/s3/mock.js"],"names":[],"mappings":";AAAA,OAAO,CAAC,EAAE,GAAG;IACX,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.getHandler = void 0;
|
|
40
|
+
var getHandler = function (_a) {
|
|
41
|
+
var s3 = _a.s3, bucket = _a.bucket;
|
|
42
|
+
return function (req, res, next) { return __awaiter(void 0, void 0, void 0, function () {
|
|
43
|
+
var response, err_1;
|
|
44
|
+
return __generator(this, function (_a) {
|
|
45
|
+
switch (_a.label) {
|
|
46
|
+
case 0:
|
|
47
|
+
_a.trys.push([0, 2, , 3]);
|
|
48
|
+
return [4 /*yield*/, s3.getObject({
|
|
49
|
+
Bucket: bucket,
|
|
50
|
+
Key: req.params.filename,
|
|
51
|
+
})];
|
|
52
|
+
case 1:
|
|
53
|
+
response = _a.sent();
|
|
54
|
+
if (response === null || response === void 0 ? void 0 : response.Body) {
|
|
55
|
+
return [2 /*return*/, response.Body.pipe(res)];
|
|
56
|
+
}
|
|
57
|
+
return [2 /*return*/, next()];
|
|
58
|
+
case 2:
|
|
59
|
+
err_1 = _a.sent();
|
|
60
|
+
return [2 /*return*/, next()];
|
|
61
|
+
case 3: return [2 /*return*/];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}); };
|
|
65
|
+
};
|
|
66
|
+
exports.getHandler = getHandler;
|
|
67
|
+
//# sourceMappingURL=staticHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticHandler.js","sourceRoot":"","sources":["../../../src/adapters/s3/staticHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,IAAM,UAAU,GAAG,UAAC,EAAoB;QAAlB,EAAE,QAAA,EAAE,MAAM,YAAA;IACrC,OAAO,UAAO,GAAG,EAAE,GAAG,EAAE,IAAI;;;;;;oBAEP,qBAAM,EAAE,CAAC,SAAS,CAAC;4BAClC,MAAM,EAAE,MAAM;4BACd,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;yBACzB,CAAC,EAAA;;oBAHI,QAAQ,GAAG,SAGf;oBAEF,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE;wBAClB,sBAAQ,QAAQ,CAAC,IAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA;qBAC7C;oBAED,sBAAO,IAAI,EAAE,EAAA;;;oBAEb,sBAAO,IAAI,EAAE,EAAA;;;;SAEhB,CAAA;AACH,CAAC,CAAA;AAjBY,QAAA,UAAU,cAiBtB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.extendWebpackConfig = void 0;
|
|
18
|
+
var path_1 = __importDefault(require("path"));
|
|
19
|
+
var extendWebpackConfig = function (existingWebpackConfig) {
|
|
20
|
+
var _a;
|
|
21
|
+
var newConfig = __assign(__assign({}, existingWebpackConfig), { resolve: __assign(__assign({}, (existingWebpackConfig.resolve || {})), { alias: __assign(__assign({}, (((_a = existingWebpackConfig.resolve) === null || _a === void 0 ? void 0 : _a.alias) ? existingWebpackConfig.resolve.alias : {})), { '@aws-sdk/client-s3': path_1.default.resolve(__dirname, './mock.js') }) }) });
|
|
22
|
+
return newConfig;
|
|
23
|
+
};
|
|
24
|
+
exports.extendWebpackConfig = extendWebpackConfig;
|
|
25
|
+
//# sourceMappingURL=webpack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../../src/adapters/s3/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,8CAAuB;AAEhB,IAAM,mBAAmB,GAAG,UAAC,qBAAoC;;IACtE,IAAM,SAAS,yBACV,qBAAqB,KACxB,OAAO,wBACF,CAAC,qBAAqB,CAAC,OAAO,IAAI,EAAE,CAAC,KACxC,KAAK,wBACA,CAAC,CAAA,MAAA,qBAAqB,CAAC,OAAO,0CAAE,KAAK,EAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KACpF,oBAAoB,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,SAG/D,CAAA;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAbY,QAAA,mBAAmB,uBAa/B"}
|
|
@@ -2,7 +2,8 @@ import type { CollectionConfig, Field } from 'payload/types';
|
|
|
2
2
|
import type { GeneratedAdapter } from '../types';
|
|
3
3
|
interface Args {
|
|
4
4
|
collection: CollectionConfig;
|
|
5
|
+
disablePayloadAccessControl?: true;
|
|
5
6
|
adapter: GeneratedAdapter;
|
|
6
7
|
}
|
|
7
|
-
export declare const getFields: ({ adapter, collection }: Args) => Field[];
|
|
8
|
+
export declare const getFields: ({ adapter, collection, disablePayloadAccessControl }: Args) => Field[];
|
|
8
9
|
export {};
|
package/dist/fields/getFields.js
CHANGED
|
@@ -22,62 +22,66 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.getFields = void 0;
|
|
24
24
|
var afterRead_1 = require("../hooks/afterRead");
|
|
25
|
-
var baseURLField = {
|
|
26
|
-
name: 'url',
|
|
27
|
-
label: 'URL',
|
|
28
|
-
type: 'text',
|
|
29
|
-
admin: {
|
|
30
|
-
readOnly: true,
|
|
31
|
-
disabled: true,
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
25
|
var getFields = function (_a) {
|
|
35
26
|
var _b;
|
|
36
|
-
var adapter = _a.adapter, collection = _a.collection;
|
|
27
|
+
var adapter = _a.adapter, collection = _a.collection, disablePayloadAccessControl = _a.disablePayloadAccessControl;
|
|
28
|
+
var baseURLField = {
|
|
29
|
+
name: 'url',
|
|
30
|
+
label: 'URL',
|
|
31
|
+
type: 'text',
|
|
32
|
+
admin: {
|
|
33
|
+
readOnly: true,
|
|
34
|
+
disabled: true,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
37
|
var fields = __spreadArray([], collection.fields, true);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
if (existingURLFieldIndex > -1) {
|
|
47
|
-
fields.splice(existingURLFieldIndex, 1);
|
|
48
|
-
}
|
|
49
|
-
fields.push(__assign(__assign(__assign({}, baseURLField), (existingURLField || {})), { hooks: {
|
|
50
|
-
afterRead: __spreadArray([
|
|
51
|
-
(0, afterRead_1.getAfterReadHook)({ adapter: adapter, collection: collection })
|
|
52
|
-
], (((_b = existingURLField === null || existingURLField === void 0 ? void 0 : existingURLField.hooks) === null || _b === void 0 ? void 0 : _b.afterRead) || []), true),
|
|
53
|
-
} }));
|
|
54
|
-
if (typeof collection.upload === 'object' && collection.upload.imageSizes) {
|
|
55
|
-
var existingSizesFieldIndex_1 = -1;
|
|
56
|
-
var existingSizesField_1 = fields.find(function (existingField, i) {
|
|
57
|
-
if ('name' in existingField && existingField.name === 'sizes') {
|
|
58
|
-
existingSizesFieldIndex_1 = i;
|
|
38
|
+
// If Payload access control is disabled,
|
|
39
|
+
// inject a hook into all URL fields to point directly to the cloud source
|
|
40
|
+
if (disablePayloadAccessControl) {
|
|
41
|
+
var existingURLFieldIndex_1 = -1;
|
|
42
|
+
var existingURLField = fields.find(function (existingField, i) {
|
|
43
|
+
if ('name' in existingField && existingField.name === 'url') {
|
|
44
|
+
existingURLFieldIndex_1 = i;
|
|
59
45
|
return true;
|
|
60
46
|
}
|
|
61
47
|
return false;
|
|
62
48
|
});
|
|
63
|
-
if (
|
|
64
|
-
fields.splice(
|
|
49
|
+
if (existingURLFieldIndex_1 > -1) {
|
|
50
|
+
fields.splice(existingURLFieldIndex_1, 1);
|
|
51
|
+
}
|
|
52
|
+
fields.push(__assign(__assign(__assign({}, baseURLField), (existingURLField || {})), { hooks: {
|
|
53
|
+
afterRead: __spreadArray([
|
|
54
|
+
(0, afterRead_1.getAfterReadHook)({ adapter: adapter, collection: collection })
|
|
55
|
+
], (((_b = existingURLField === null || existingURLField === void 0 ? void 0 : existingURLField.hooks) === null || _b === void 0 ? void 0 : _b.afterRead) || []), true),
|
|
56
|
+
} }));
|
|
57
|
+
if (typeof collection.upload === 'object' && collection.upload.imageSizes) {
|
|
58
|
+
var existingSizesFieldIndex_1 = -1;
|
|
59
|
+
var existingSizesField_1 = fields.find(function (existingField, i) {
|
|
60
|
+
if ('name' in existingField && existingField.name === 'sizes') {
|
|
61
|
+
existingSizesFieldIndex_1 = i;
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
});
|
|
66
|
+
if (existingSizesFieldIndex_1 > -1) {
|
|
67
|
+
fields.splice(existingSizesFieldIndex_1, 1);
|
|
68
|
+
}
|
|
69
|
+
var sizesField = __assign(__assign({}, (existingSizesField_1 || {})), { name: 'sizes', type: 'group', admin: {
|
|
70
|
+
disabled: true,
|
|
71
|
+
}, fields: collection.upload.imageSizes.map(function (size) {
|
|
72
|
+
var _a;
|
|
73
|
+
var existingSizeField = existingSizesField_1 === null || existingSizesField_1 === void 0 ? void 0 : existingSizesField_1.fields.find(function (existingField) { return 'name' in existingField && existingField.name === size.name; });
|
|
74
|
+
var existingSizeURLField = existingSizeField === null || existingSizeField === void 0 ? void 0 : existingSizeField.fields.find(function (existingField) { return 'name' in existingField && existingField.name === 'url'; });
|
|
75
|
+
return __assign(__assign({}, existingSizeField), { name: size.name, type: 'group', fields: [
|
|
76
|
+
__assign(__assign(__assign({}, (existingSizeURLField || {})), baseURLField), { hooks: {
|
|
77
|
+
afterRead: __spreadArray([
|
|
78
|
+
(0, afterRead_1.getAfterReadHook)({ adapter: adapter, collection: collection, size: size })
|
|
79
|
+
], (((_a = existingSizeURLField === null || existingSizeURLField === void 0 ? void 0 : existingSizeURLField.hooks) === null || _a === void 0 ? void 0 : _a.afterRead) || []), true),
|
|
80
|
+
} }),
|
|
81
|
+
] });
|
|
82
|
+
}) });
|
|
83
|
+
fields.push(sizesField);
|
|
65
84
|
}
|
|
66
|
-
var sizesField = __assign(__assign({}, (existingSizesField_1 || {})), { name: 'sizes', type: 'group', admin: {
|
|
67
|
-
disabled: true,
|
|
68
|
-
}, fields: collection.upload.imageSizes.map(function (size) {
|
|
69
|
-
var _a;
|
|
70
|
-
var existingSizeField = existingSizesField_1 === null || existingSizesField_1 === void 0 ? void 0 : existingSizesField_1.fields.find(function (existingField) { return 'name' in existingField && existingField.name === size.name; });
|
|
71
|
-
var existingSizeURLField = existingSizeField === null || existingSizeField === void 0 ? void 0 : existingSizeField.fields.find(function (existingField) { return 'name' in existingField && existingField.name === 'url'; });
|
|
72
|
-
return __assign(__assign({}, existingSizeField), { name: size.name, type: 'group', fields: [
|
|
73
|
-
__assign(__assign(__assign({}, (existingSizeURLField || {})), baseURLField), { hooks: {
|
|
74
|
-
afterRead: __spreadArray([
|
|
75
|
-
(0, afterRead_1.getAfterReadHook)({ adapter: adapter, collection: collection, size: size })
|
|
76
|
-
], (((_a = existingSizeURLField === null || existingSizeURLField === void 0 ? void 0 : existingSizeURLField.hooks) === null || _a === void 0 ? void 0 : _a.afterRead) || []), true),
|
|
77
|
-
} }),
|
|
78
|
-
] });
|
|
79
|
-
}) });
|
|
80
|
-
fields.push(sizesField);
|
|
81
85
|
}
|
|
82
86
|
return fields;
|
|
83
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFields.js","sourceRoot":"","sources":["../../src/fields/getFields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,gDAAqD;
|
|
1
|
+
{"version":3,"file":"getFields.js","sourceRoot":"","sources":["../../src/fields/getFields.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,gDAAqD;AAS9C,IAAM,SAAS,GAAG,UAAC,EAA0D;;QAAxD,OAAO,aAAA,EAAE,UAAU,gBAAA,EAAE,2BAA2B,iCAAA;IAC1E,IAAM,YAAY,GAAU;QAC1B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE;YACL,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;SACf;KACF,CAAA;IAED,IAAM,MAAM,qBAAO,UAAU,CAAC,MAAM,OAAC,CAAA;IAErC,yCAAyC;IACzC,0EAA0E;IAC1E,IAAI,2BAA2B,EAAE;QAC/B,IAAI,uBAAqB,GAAG,CAAC,CAAC,CAAA;QAE9B,IAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAC,aAAa,EAAE,CAAC;YACpD,IAAI,MAAM,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAE;gBAC3D,uBAAqB,GAAG,CAAC,CAAA;gBACzB,OAAO,IAAI,CAAA;aACZ;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAc,CAAA;QAEf,IAAI,uBAAqB,GAAG,CAAC,CAAC,EAAE;YAC9B,MAAM,CAAC,MAAM,CAAC,uBAAqB,EAAE,CAAC,CAAC,CAAA;SACxC;QAED,MAAM,CAAC,IAAI,gCACN,YAAY,GACZ,CAAC,gBAAgB,IAAI,EAAE,CAAC,KAC3B,KAAK,EAAE;gBACL,SAAS;oBACP,IAAA,4BAAgB,EAAC,EAAE,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,CAAC;mBACtC,CAAC,CAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK,0CAAE,SAAS,KAAI,EAAE,CAAC,OAC9C;aACF,IACD,CAAA;QAEF,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;YACzE,IAAI,yBAAuB,GAAG,CAAC,CAAC,CAAA;YAEhC,IAAM,oBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAC,aAAa,EAAE,CAAC;gBACtD,IAAI,MAAM,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC7D,yBAAuB,GAAG,CAAC,CAAA;oBAC3B,OAAO,IAAI,CAAA;iBACZ;gBAED,OAAO,KAAK,CAAA;YACd,CAAC,CAAe,CAAA;YAEhB,IAAI,yBAAuB,GAAG,CAAC,CAAC,EAAE;gBAChC,MAAM,CAAC,MAAM,CAAC,yBAAuB,EAAE,CAAC,CAAC,CAAA;aAC1C;YAED,IAAM,UAAU,yBACX,CAAC,oBAAkB,IAAI,EAAE,CAAC,KAC7B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;iBACf,EACD,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,UAAA,IAAI;;oBAC3C,IAAM,iBAAiB,GAAG,oBAAkB,aAAlB,oBAAkB,uBAAlB,oBAAkB,CAAE,MAAM,CAAC,IAAI,CACvD,UAAA,aAAa,IAAI,OAAA,MAAM,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAA3D,CAA2D,CAC/D,CAAA;oBAEf,IAAM,oBAAoB,GAAG,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM,CAAC,IAAI,CACzD,UAAA,aAAa,IAAI,OAAA,MAAM,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,EAAvD,CAAuD,CAC3D,CAAA;oBAEf,6BACK,iBAAiB,KACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,OAAO,EACb,MAAM,EAAE;2DAED,CAAC,oBAAoB,IAAI,EAAE,CAAC,GAC5B,YAAY,KACf,KAAK,EAAE;oCACL,SAAS;wCACP,IAAA,4BAAgB,EAAC,EAAE,OAAO,SAAA,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,CAAC;uCAC5C,CAAC,CAAA,MAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,KAAK,0CAAE,SAAS,KAAI,EAAE,CAAC,OAClD;iCACF;yBAEJ,IACF;gBACH,CAAC,CAAC,GACH,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;SACxB;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAlGY,QAAA,SAAS,aAkGrB"}
|
|
@@ -44,11 +44,10 @@ var getBeforeChangeHook = function (_a) {
|
|
|
44
44
|
var req = _a.req, data = _a.data;
|
|
45
45
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
46
46
|
var files, promises, err_1;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
switch (_c.label) {
|
|
47
|
+
return __generator(this, function (_b) {
|
|
48
|
+
switch (_b.label) {
|
|
50
49
|
case 0:
|
|
51
|
-
|
|
50
|
+
_b.trys.push([0, 2, , 3]);
|
|
52
51
|
files = (0, getIncomingFiles_1.getIncomingFiles)({ req: req, data: data });
|
|
53
52
|
promises = files.map(function (file) { return __awaiter(void 0, void 0, void 0, function () {
|
|
54
53
|
return __generator(this, function (_a) {
|
|
@@ -62,11 +61,11 @@ var getBeforeChangeHook = function (_a) {
|
|
|
62
61
|
}); });
|
|
63
62
|
return [4 /*yield*/, Promise.all(promises)];
|
|
64
63
|
case 1:
|
|
65
|
-
|
|
64
|
+
_b.sent();
|
|
66
65
|
return [3 /*break*/, 3];
|
|
67
66
|
case 2:
|
|
68
|
-
err_1 =
|
|
69
|
-
req.payload.logger.error("There was an error while uploading files corresponding to the ".concat(
|
|
67
|
+
err_1 = _b.sent();
|
|
68
|
+
req.payload.logger.error("There was an error while uploading files corresponding to the collection ".concat(collection.slug, " with filename ").concat(data.filename, ":"));
|
|
70
69
|
req.payload.logger.error(err_1);
|
|
71
70
|
return [3 /*break*/, 3];
|
|
72
71
|
case 3: return [2 /*return*/, data];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beforeChange.js","sourceRoot":"","sources":["../../src/hooks/beforeChange.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kEAAgE;AAOzD,IAAM,mBAAmB,GAC9B,UAAC,EAA6B;QAA3B,UAAU,gBAAA,EAAE,OAAO,aAAA;IACtB,OAAA,UAAO,EAAa;YAAX,GAAG,SAAA,EAAE,IAAI,UAAA
|
|
1
|
+
{"version":3,"file":"beforeChange.js","sourceRoot":"","sources":["../../src/hooks/beforeChange.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kEAAgE;AAOzD,IAAM,mBAAmB,GAC9B,UAAC,EAA6B;QAA3B,UAAU,gBAAA,EAAE,OAAO,aAAA;IACtB,OAAA,UAAO,EAAa;YAAX,GAAG,SAAA,EAAE,IAAI,UAAA;;;;;;;wBAER,KAAK,GAAG,IAAA,mCAAgB,EAAC,EAAE,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,CAAC,CAAA;wBAEvC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,UAAM,IAAI;;;4CACnC,qBAAM,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,YAAA,EAAE,IAAI,MAAA,EAAE,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,CAAC,EAAA;;wCAA3D,SAA2D,CAAA;;;;6BAC5D,CAAC,CAAA;wBAEF,qBAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAA;;wBAA3B,SAA2B,CAAA;;;;wBAE3B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CACtB,mFAA4E,UAAU,CAAC,IAAI,4BAAkB,IAAI,CAAC,QAAQ,MAAG,CAC9H,CAAA;wBACD,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAG,CAAC,CAAA;;4BAE/B,sBAAO,IAAI,EAAA;;;;KACZ;AAhBD,CAgBC,CAAA;AAlBU,QAAA,mBAAmB,uBAkB7B"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.cloudStorage = void 0;
|
|
4
4
|
var plugin_1 = require("./plugin");
|
|
5
5
|
Object.defineProperty(exports, "cloudStorage", { enumerable: true, get: function () { return plugin_1.cloudStorage; } });
|
|
6
|
-
var azure_1 = require("./adapters/azure");
|
|
7
|
-
Object.defineProperty(exports, "azureBlobStorageAdapter", { enumerable: true, get: function () { return azure_1.azureBlobStorageAdapter; } });
|
|
8
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAA9B,sGAAA,YAAY,OAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAA9B,sGAAA,YAAY,OAAA"}
|
package/dist/plugin.js
CHANGED
|
@@ -39,17 +39,22 @@ var cloudStorage = function (pluginOptions) {
|
|
|
39
39
|
webpack: webpack,
|
|
40
40
|
}, collections: (config.collections || []).map(function (existingCollection) {
|
|
41
41
|
var _a, _b;
|
|
42
|
-
var options = allCollectionOptions.
|
|
43
|
-
var slug = _a.slug;
|
|
44
|
-
return slug === existingCollection.slug;
|
|
45
|
-
});
|
|
42
|
+
var options = allCollectionOptions[existingCollection.slug];
|
|
46
43
|
if (options) {
|
|
47
44
|
var adapter = options.adapter({ collection: existingCollection });
|
|
48
45
|
var fields = (0, getFields_1.getFields)({
|
|
49
46
|
collection: existingCollection,
|
|
47
|
+
disablePayloadAccessControl: options.disablePayloadAccessControl,
|
|
50
48
|
adapter: adapter,
|
|
51
49
|
});
|
|
52
|
-
|
|
50
|
+
var handlers = __spreadArray([], (typeof existingCollection.upload === 'object' &&
|
|
51
|
+
Array.isArray(existingCollection.upload.handlers)
|
|
52
|
+
? existingCollection.upload.handlers
|
|
53
|
+
: []), true);
|
|
54
|
+
if (!options.disablePayloadAccessControl) {
|
|
55
|
+
handlers.push(adapter.staticHandler);
|
|
56
|
+
}
|
|
57
|
+
return __assign(__assign({}, existingCollection), { upload: __assign(__assign({}, (typeof existingCollection.upload === 'object' ? existingCollection.upload : {})), { handlers: handlers, disableLocalStorage: typeof options.disableLocalStorage === 'boolean'
|
|
53
58
|
? options.disableLocalStorage
|
|
54
59
|
: true }), hooks: __assign(__assign({}, (existingCollection.hooks || {})), { beforeChange: __spreadArray(__spreadArray([], (((_a = existingCollection.hooks) === null || _a === void 0 ? void 0 : _a.beforeChange) || []), true), [
|
|
55
60
|
(0, beforeChange_1.getBeforeChangeHook)({ adapter: adapter, collection: existingCollection }),
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,qCAA+C;AAE/C,qDAA0D;AAC1D,mDAAwD;AACxD,gDAA8C;AAE9C,4EAA4E;AAC5E,4DAA4D;AAE5D,4FAA4F;AAC5F,kFAAkF;AAClF,mDAAmD;AAEnD,0FAA0F;AAEnF,IAAM,YAAY,GACvB,UAAC,aAA4B;IAC7B,OAAA,UAAC,MAAc;QACL,IAAa,oBAAoB,GAAK,aAAa,YAAlB,CAAkB;QAE3D,IAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;QAEvE,6BACK,MAAM,KACT,KAAK,EAAE;gBACL,OAAO,SAAA;aACR,EACD,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,kBAAkB;;gBAC5D,IAAM,OAAO,GAAG,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,qCAA+C;AAE/C,qDAA0D;AAC1D,mDAAwD;AACxD,gDAA8C;AAE9C,4EAA4E;AAC5E,4DAA4D;AAE5D,4FAA4F;AAC5F,kFAAkF;AAClF,mDAAmD;AAEnD,0FAA0F;AAEnF,IAAM,YAAY,GACvB,UAAC,aAA4B;IAC7B,OAAA,UAAC,MAAc;QACL,IAAa,oBAAoB,GAAK,aAAa,YAAlB,CAAkB;QAE3D,IAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;QAEvE,6BACK,MAAM,KACT,KAAK,EAAE;gBACL,OAAO,SAAA;aACR,EACD,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,kBAAkB;;gBAC5D,IAAM,OAAO,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBAE7D,IAAI,OAAO,EAAE;oBACX,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC,CAAA;oBAEnE,IAAM,MAAM,GAAG,IAAA,qBAAS,EAAC;wBACvB,UAAU,EAAE,kBAAkB;wBAC9B,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;wBAChE,OAAO,SAAA;qBACR,CAAC,CAAA;oBAEF,IAAM,QAAQ,qBACT,CAAC,OAAO,kBAAkB,CAAC,MAAM,KAAK,QAAQ;wBACjD,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;wBAC/C,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ;wBACpC,CAAC,CAAC,EAAE,CAAC,OACR,CAAA;oBAED,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;wBACxC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;qBACrC;oBAED,6BACK,kBAAkB,KACrB,MAAM,wBACD,CAAC,OAAO,kBAAkB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KACnF,QAAQ,UAAA,EACR,mBAAmB,EACjB,OAAO,OAAO,CAAC,mBAAmB,KAAK,SAAS;gCAC9C,CAAC,CAAC,OAAO,CAAC,mBAAmB;gCAC7B,CAAC,CAAC,IAAI,KAEZ,KAAK,wBACA,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,KACnC,YAAY,kCACP,CAAC,CAAA,MAAA,kBAAkB,CAAC,KAAK,0CAAE,YAAY,KAAI,EAAE,CAAC;gCACjD,IAAA,kCAAmB,EAAC,EAAE,OAAO,SAAA,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;uCAElE,WAAW,kCACN,CAAC,CAAA,MAAA,kBAAkB,CAAC,KAAK,0CAAE,WAAW,KAAI,EAAE,CAAC;gCAChD,IAAA,gCAAkB,EAAC,EAAE,OAAO,SAAA,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;0CAGnE,MAAM,QAAA,IACP;iBACF;gBAED,OAAO,kBAAkB,CAAA;YAC3B,CAAC,CAAC,IACH;IACH,CAAC;AA7DD,CA6DC,CAAA;AA/DU,QAAA,YAAY,gBA+DtB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import type { NextFunction, Response } from 'express';
|
|
2
3
|
import type { TypeWithID } from 'payload/dist/collections/config/types';
|
|
3
4
|
import type { FileData } from 'payload/dist/uploads/types';
|
|
4
5
|
import type { CollectionConfig, PayloadRequest } from 'payload/types';
|
|
@@ -24,20 +25,22 @@ export declare type GenerateURL = (args: {
|
|
|
24
25
|
filename: string;
|
|
25
26
|
collection: CollectionConfig;
|
|
26
27
|
}) => string | Promise<string>;
|
|
28
|
+
export declare type StaticHandler = (req: PayloadRequest, res: Response, next: NextFunction) => Promise<unknown> | unknown;
|
|
27
29
|
export interface GeneratedAdapter {
|
|
28
30
|
handleUpload: HandleUpload;
|
|
29
31
|
handleDelete: HandleDelete;
|
|
30
32
|
generateURL: GenerateURL;
|
|
33
|
+
staticHandler: StaticHandler;
|
|
31
34
|
webpack?: (config: WebpackConfig) => WebpackConfig;
|
|
32
35
|
}
|
|
33
36
|
export declare type Adapter = (args: {
|
|
34
37
|
collection: CollectionConfig;
|
|
35
38
|
}) => GeneratedAdapter;
|
|
36
39
|
export interface CollectionOptions {
|
|
37
|
-
slug: string;
|
|
38
40
|
disableLocalStorage?: boolean;
|
|
41
|
+
disablePayloadAccessControl?: true;
|
|
39
42
|
adapter: Adapter;
|
|
40
43
|
}
|
|
41
44
|
export interface PluginOptions {
|
|
42
|
-
collections: CollectionOptions
|
|
45
|
+
collections: Record<string, CollectionOptions>;
|
|
43
46
|
}
|
package/dist/webpack.js
CHANGED
|
@@ -20,12 +20,10 @@ var extendWebpackConfig = function (_a) {
|
|
|
20
20
|
? config.admin.webpack(webpackConfig)
|
|
21
21
|
: webpackConfig;
|
|
22
22
|
var newConfig = __assign(__assign({}, existingWebpackConfig), { resolve: __assign(__assign({}, (existingWebpackConfig.resolve || {})), { alias: __assign({}, (((_b = existingWebpackConfig.resolve) === null || _b === void 0 ? void 0 : _b.alias) ? existingWebpackConfig.resolve.alias : {})) }) });
|
|
23
|
-
return options.collections.reduce(function (resultingWebpackConfig,
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
return slug === collectionOptions.slug;
|
|
28
|
-
});
|
|
23
|
+
return Object.entries(options.collections).reduce(function (resultingWebpackConfig, _a) {
|
|
24
|
+
var _b;
|
|
25
|
+
var slug = _a[0], collectionOptions = _a[1];
|
|
26
|
+
var matchedCollection = (_b = config.collections) === null || _b === void 0 ? void 0 : _b.find(function (coll) { return coll.slug === slug; });
|
|
29
27
|
if (matchedCollection) {
|
|
30
28
|
var adapter = collectionOptions.adapter({
|
|
31
29
|
collection: matchedCollection,
|
package/dist/webpack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpack.js","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AASO,IAAM,mBAAmB,GAC9B,UAAC,EAAyB;QAAvB,MAAM,YAAA,EAAE,OAAO,aAAA;IAClB,OAAA,UAAA,aAAa;;QACX,IAAM,qBAAqB,GACzB,OAAO,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAA,KAAK,UAAU;YACzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;YACrC,CAAC,CAAC,aAAa,CAAA;QAEnB,IAAM,SAAS,yBACV,qBAAqB,KACxB,OAAO,wBACF,CAAC,qBAAqB,CAAC,OAAO,IAAI,EAAE,CAAC,KACxC,KAAK,eACA,CAAC,CAAA,MAAA,qBAAqB,CAAC,OAAO,0CAAE,KAAK,EAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAGzF,CAAA;QAED,OAAO,OAAO,CAAC,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"webpack.js","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AASO,IAAM,mBAAmB,GAC9B,UAAC,EAAyB;QAAvB,MAAM,YAAA,EAAE,OAAO,aAAA;IAClB,OAAA,UAAA,aAAa;;QACX,IAAM,qBAAqB,GACzB,OAAO,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAA,KAAK,UAAU;YACzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;YACrC,CAAC,CAAC,aAAa,CAAA;QAEnB,IAAM,SAAS,yBACV,qBAAqB,KACxB,OAAO,wBACF,CAAC,qBAAqB,CAAC,OAAO,IAAI,EAAE,CAAC,KACxC,KAAK,eACA,CAAC,CAAA,MAAA,qBAAqB,CAAC,OAAO,0CAAE,KAAK,EAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAGzF,CAAA;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAC/C,UAAC,sBAAsB,EAAE,EAAyB;;gBAAxB,IAAI,QAAA,EAAE,iBAAiB,QAAA;YAC/C,IAAM,iBAAiB,GAAG,MAAA,MAAM,CAAC,WAAW,0CAAE,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,IAAI,KAAK,IAAI,EAAlB,CAAkB,CAAC,CAAA;YAE9E,IAAI,iBAAiB,EAAE;gBACrB,IAAM,OAAO,GAAqB,iBAAiB,CAAC,OAAO,CAAC;oBAC1D,UAAU,EAAE,iBAAiB;iBAC9B,CAAC,CAAA;gBAEF,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,OAAO,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;iBAC/C;aACF;YAED,OAAO,sBAAsB,CAAA;QAC/B,CAAC,EACD,SAAS,CACV,CAAA;IACH,CAAC;AAlCD,CAkCC,CAAA;AApCU,QAAA,mBAAmB,uBAoC7B"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-cloud-storage",
|
|
3
3
|
"description": "The official cloud storage plugin for Payload CMS",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.3",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"files": [
|
|
8
|
-
"dist"
|
|
9
|
-
],
|
|
10
7
|
"license": "SEE LICENSE IN LICENSE.MD",
|
|
11
8
|
"scripts": {
|
|
12
9
|
"build": "tsc",
|
|
@@ -14,14 +11,25 @@
|
|
|
14
11
|
"lint:fix": "eslint --fix --ext .ts,.tsx src"
|
|
15
12
|
},
|
|
16
13
|
"peerDependencies": {
|
|
14
|
+
"@aws-sdk/client-s3": "^3.142.0",
|
|
17
15
|
"@azure/storage-blob": "^12.11.0"
|
|
18
16
|
},
|
|
19
17
|
"peerDependenciesMeta": {
|
|
18
|
+
"@aws-sdk/client-s3": {
|
|
19
|
+
"optional": true
|
|
20
|
+
},
|
|
20
21
|
"@azure/storage-blob": {
|
|
21
22
|
"optional": true
|
|
22
23
|
}
|
|
23
24
|
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"*.js",
|
|
28
|
+
"*.d.ts",
|
|
29
|
+
"!.prettierrc.js"
|
|
30
|
+
],
|
|
24
31
|
"devDependencies": {
|
|
32
|
+
"@aws-sdk/client-s3": "^3.142.0",
|
|
25
33
|
"@azure/storage-blob": "^12.11.0",
|
|
26
34
|
"@types/express": "^4.17.9",
|
|
27
35
|
"@typescript-eslint/eslint-plugin": "5.12.1",
|
|
@@ -34,7 +42,7 @@
|
|
|
34
42
|
"eslint-plugin-import": "2.25.4",
|
|
35
43
|
"eslint-plugin-prettier": "^4.0.0",
|
|
36
44
|
"nodemon": "^2.0.6",
|
|
37
|
-
"payload": "^1.0.
|
|
45
|
+
"payload": "^1.0.19",
|
|
38
46
|
"prettier": "^2.7.1",
|
|
39
47
|
"ts-node": "^9.1.1",
|
|
40
48
|
"typescript": "^4.1.3"
|
package/s3.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/adapters/s3'
|
package/s3.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.s3Adapter = require('./dist/adapters/s3')
|