@webiny/api-file-manager 0.0.0-mt-2 → 0.0.0-unstable.085ff6572f
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/FileManagerContextSetup.d.ts +13 -0
- package/FileManagerContextSetup.js +113 -0
- package/FileManagerContextSetup.js.map +1 -0
- package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
- package/cmsFileStorage/CmsFilesStorage.js +173 -0
- package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
- package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js +35 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
- package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js +35 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
- package/cmsFileStorage/createFileManagerPlugins.d.ts +5 -0
- package/cmsFileStorage/createFileManagerPlugins.js +34 -0
- package/cmsFileStorage/createFileManagerPlugins.js.map +1 -0
- package/cmsFileStorage/createModelField.d.ts +5 -0
- package/cmsFileStorage/createModelField.js +37 -0
- package/cmsFileStorage/createModelField.js.map +1 -0
- package/cmsFileStorage/file.model.d.ts +4 -0
- package/cmsFileStorage/file.model.js +118 -0
- package/cmsFileStorage/file.model.js.map +1 -0
- package/cmsFileStorage/isInstallationPending.d.ts +4 -0
- package/cmsFileStorage/isInstallationPending.js +21 -0
- package/cmsFileStorage/isInstallationPending.js.map +1 -0
- package/contants.d.ts +1 -0
- package/contants.js +8 -0
- package/contants.js.map +1 -0
- package/createFileManager/files.crud.d.ts +3 -0
- package/createFileManager/files.crud.js +300 -0
- package/createFileManager/files.crud.js.map +1 -0
- package/createFileManager/filevalidation.disabled.d.ts +0 -0
- package/createFileManager/filevalidation.disabled.js +55 -0
- package/createFileManager/filevalidation.disabled.js.map +1 -0
- package/createFileManager/index.d.ts +15 -0
- package/createFileManager/index.js +20 -0
- package/createFileManager/index.js.map +1 -0
- package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
- package/createFileManager/permissions/FilesPermissions.js +9 -0
- package/createFileManager/permissions/FilesPermissions.js.map +1 -0
- package/createFileManager/settings.crud.d.ts +3 -0
- package/createFileManager/settings.crud.js +91 -0
- package/createFileManager/settings.crud.js.map +1 -0
- package/createFileManager/system.crud.d.ts +3 -0
- package/createFileManager/system.crud.js +86 -0
- package/createFileManager/system.crud.js.map +1 -0
- package/graphql/baseSchema.d.ts +3 -0
- package/graphql/baseSchema.js +117 -0
- package/graphql/baseSchema.js.map +1 -0
- package/graphql/createFilesTypeDefs.d.ts +7 -0
- package/graphql/createFilesTypeDefs.js +162 -0
- package/graphql/createFilesTypeDefs.js.map +1 -0
- package/graphql/filesSchema.d.ts +4 -0
- package/graphql/filesSchema.js +83 -0
- package/graphql/filesSchema.js.map +1 -0
- package/graphql/index.d.ts +3 -0
- package/graphql/index.js +33 -0
- package/graphql/index.js.map +1 -0
- package/graphql/utils.d.ts +11 -0
- package/graphql/utils.js +22 -0
- package/graphql/utils.js.map +1 -0
- package/handlers/download/byAlias.d.ts +6 -0
- package/handlers/download/byAlias.js +89 -0
- package/handlers/download/byAlias.js.map +1 -0
- package/handlers/download/byExactKey.d.ts +2 -0
- package/handlers/download/byExactKey.js +57 -0
- package/handlers/download/byExactKey.js.map +1 -0
- package/handlers/download/extractFileInformation.d.ts +9 -0
- package/handlers/download/extractFileInformation.js +20 -0
- package/handlers/download/extractFileInformation.js.map +1 -0
- package/handlers/download/getS3Object.d.ts +10 -0
- package/handlers/download/getS3Object.js +60 -0
- package/handlers/download/getS3Object.js.map +1 -0
- package/handlers/download/index.d.ts +2 -3
- package/handlers/download/index.js +20 -118
- package/handlers/download/index.js.map +1 -0
- package/handlers/manage/index.d.ts +5 -3
- package/handlers/manage/index.js +43 -58
- package/handlers/manage/index.js.map +1 -0
- package/handlers/transform/index.d.ts +2 -3
- package/handlers/transform/index.js +71 -78
- package/handlers/transform/index.js.map +1 -0
- package/handlers/transform/legacyUtils.d.ts +17 -0
- package/handlers/transform/legacyUtils.js +42 -0
- package/handlers/transform/legacyUtils.js.map +1 -0
- package/handlers/transform/loaders/imageLoader.d.ts +26 -9
- package/handlers/transform/loaders/imageLoader.js +13 -25
- package/handlers/transform/loaders/imageLoader.js.map +1 -0
- package/handlers/transform/loaders/index.d.ts +4 -9
- package/handlers/transform/loaders/index.js +1 -4
- package/handlers/transform/loaders/index.js.map +1 -0
- package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +7 -3
- package/handlers/transform/loaders/sanitizeImageTransformations.js +24 -30
- package/handlers/transform/loaders/sanitizeImageTransformations.js.map +1 -0
- package/handlers/transform/managers/imageManager.d.ts +12 -6
- package/handlers/transform/managers/imageManager.js +46 -27
- package/handlers/transform/managers/imageManager.js.map +1 -0
- package/handlers/transform/managers/index.d.ts +2 -6
- package/handlers/transform/managers/index.js +1 -4
- package/handlers/transform/managers/index.js.map +1 -0
- package/handlers/transform/optimizeImage.d.ts +2 -1
- package/handlers/transform/optimizeImage.js +4 -7
- package/handlers/transform/optimizeImage.js.map +1 -0
- package/handlers/transform/transformImage.d.ts +5 -4
- package/handlers/transform/transformImage.js +4 -9
- package/handlers/transform/transformImage.js.map +1 -0
- package/handlers/transform/utils.d.ts +2 -2
- package/handlers/transform/utils.js +8 -18
- package/handlers/transform/utils.js.map +1 -0
- package/handlers/types.d.ts +8 -0
- package/handlers/types.js +5 -0
- package/handlers/types.js.map +1 -0
- package/handlers/utils/getEnvironment.js +0 -2
- package/handlers/utils/getEnvironment.js.map +1 -0
- package/handlers/utils/getObjectParams.d.ts +3 -4
- package/handlers/utils/getObjectParams.js +1 -7
- package/handlers/utils/getObjectParams.js.map +1 -0
- package/handlers/utils/index.d.ts +0 -1
- package/handlers/utils/index.js +1 -12
- package/handlers/utils/index.js.map +1 -0
- package/index.d.ts +7 -0
- package/index.js +52 -0
- package/index.js.map +1 -0
- package/modelModifier/CmsModelModifier.d.ts +24 -0
- package/modelModifier/CmsModelModifier.js +59 -0
- package/modelModifier/CmsModelModifier.js.map +1 -0
- package/package.json +32 -32
- package/plugins/FilePhysicalStoragePlugin.d.ts +21 -0
- package/plugins/{definitions/FilePhysicalStoragePlugin.js → FilePhysicalStoragePlugin.js} +1 -12
- package/plugins/FilePhysicalStoragePlugin.js.map +1 -0
- package/plugins/{definitions/FileStorageTransformPlugin.d.ts → FileStorageTransformPlugin.d.ts} +10 -10
- package/plugins/{definitions/FileStorageTransformPlugin.js → FileStorageTransformPlugin.js} +2 -13
- package/plugins/FileStorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +2 -2
- package/plugins/index.js +22 -19
- package/plugins/index.js.map +1 -0
- package/storage/FileStorage.d.ts +32 -0
- package/storage/FileStorage.js +86 -0
- package/storage/FileStorage.js.map +1 -0
- package/types/file.d.ts +37 -0
- package/types/file.js +5 -0
- package/types/file.js.map +1 -0
- package/types/file.lifecycle.d.ts +44 -0
- package/types/file.lifecycle.js +5 -0
- package/types/file.lifecycle.js.map +1 -0
- package/types.d.ts +76 -83
- package/types.js +22 -0
- package/types.js.map +1 -0
- package/handlers/utils/createHandler.d.ts +0 -24
- package/handlers/utils/createHandler.js +0 -68
- package/plugins/crud/files/validation.d.ts +0 -3
- package/plugins/crud/files/validation.js +0 -41
- package/plugins/crud/files.crud.d.ts +0 -4
- package/plugins/crud/files.crud.js +0 -427
- package/plugins/crud/settings.crud.d.ts +0 -5
- package/plugins/crud/settings.crud.js +0 -115
- package/plugins/crud/system.crud.d.ts +0 -4
- package/plugins/crud/system.crud.js +0 -145
- package/plugins/crud/utils/checkBasePermissions.d.ts +0 -5
- package/plugins/crud/utils/checkBasePermissions.js +0 -33
- package/plugins/crud/utils/createFileModel.d.ts +0 -2
- package/plugins/crud/utils/createFileModel.js +0 -64
- package/plugins/crud/utils/lifecycleEvents.d.ts +0 -6
- package/plugins/crud/utils/lifecycleEvents.js +0 -33
- package/plugins/definitions/FilePhysicalStoragePlugin.d.ts +0 -22
- package/plugins/definitions/FilePlugin.d.ts +0 -133
- package/plugins/definitions/FilePlugin.js +0 -64
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -17
- package/plugins/definitions/InstallationPlugin.d.ts +0 -19
- package/plugins/definitions/InstallationPlugin.js +0 -40
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -17
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.d.ts +0 -9
- package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -17
- package/plugins/graphql.d.ts +0 -4
- package/plugins/graphql.js +0 -274
- package/plugins/storage/FileStorage.d.ts +0 -31
- package/plugins/storage/FileStorage.js +0 -95
- package/plugins/storage/index.d.ts +0 -4
- package/plugins/storage/index.js +0 -22
- package/utils.d.ts +0 -4
- package/utils.js +0 -16
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FilesPermissions = void 0;
|
|
7
|
+
var _AppPermissions = require("@webiny/api-security/utils/AppPermissions");
|
|
8
|
+
class FilesPermissions extends _AppPermissions.AppPermissions {}
|
|
9
|
+
exports.FilesPermissions = FilesPermissions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FilesPermissions","AppPermissions"],"sources":["FilesPermissions.ts"],"sourcesContent":["import { AppPermissions } from \"@webiny/api-security/utils/AppPermissions\";\nimport { FilePermission } from \"~/types\";\n\nexport class FilesPermissions extends AppPermissions<FilePermission> {}\n"],"mappings":";;;;;;AAAA;AAGO,MAAMA,gBAAgB,SAASC,8BAAc,CAAiB;AAAE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createSettingsCrud = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _fields = require("@commodo/fields");
|
|
10
|
+
var _validation = require("@webiny/validation");
|
|
11
|
+
/**
|
|
12
|
+
* Package @commodo/fields does not have types.
|
|
13
|
+
*/
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
|
|
16
|
+
const CreateDataModel = (0, _fields.withFields)({
|
|
17
|
+
uploadMinFileSize: (0, _fields.number)({
|
|
18
|
+
value: 0,
|
|
19
|
+
validation: _validation.validation.create("gte:0")
|
|
20
|
+
}),
|
|
21
|
+
uploadMaxFileSize: (0, _fields.number)({
|
|
22
|
+
value: 10737418240
|
|
23
|
+
}),
|
|
24
|
+
srcPrefix: (0, _fields.onSet)(value => {
|
|
25
|
+
// Make sure srcPrefix always ends with forward slash.
|
|
26
|
+
if (typeof value === "string") {
|
|
27
|
+
return value.endsWith("/") ? value : value + "/";
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
})((0, _fields.string)({
|
|
31
|
+
value: "/files/"
|
|
32
|
+
}))
|
|
33
|
+
})();
|
|
34
|
+
const UpdateDataModel = (0, _fields.withFields)({
|
|
35
|
+
uploadMinFileSize: (0, _fields.number)({
|
|
36
|
+
validation: _validation.validation.create("gte:0")
|
|
37
|
+
}),
|
|
38
|
+
uploadMaxFileSize: (0, _fields.number)(),
|
|
39
|
+
srcPrefix: (0, _fields.onSet)(value => {
|
|
40
|
+
// Make sure srcPrefix always ends with forward slash.
|
|
41
|
+
if (typeof value === "string") {
|
|
42
|
+
return value.endsWith("/") ? value : value + "/";
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
})((0, _fields.string)())
|
|
46
|
+
})();
|
|
47
|
+
const createSettingsCrud = ({
|
|
48
|
+
storageOperations,
|
|
49
|
+
getTenantId
|
|
50
|
+
}) => {
|
|
51
|
+
return {
|
|
52
|
+
async getSettings() {
|
|
53
|
+
return storageOperations.settings.get({
|
|
54
|
+
tenant: getTenantId()
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
async createSettings(data) {
|
|
58
|
+
const settings = new CreateDataModel().populate(data);
|
|
59
|
+
await settings.validate();
|
|
60
|
+
const settingsData = await settings.toJSON();
|
|
61
|
+
return storageOperations.settings.create({
|
|
62
|
+
data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settingsData), {}, {
|
|
63
|
+
tenant: getTenantId()
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
async updateSettings(data) {
|
|
68
|
+
const updatedValue = new UpdateDataModel().populate(data);
|
|
69
|
+
await updatedValue.validate();
|
|
70
|
+
const existingSettings = await storageOperations.settings.get({
|
|
71
|
+
tenant: getTenantId()
|
|
72
|
+
});
|
|
73
|
+
const updatedSettings = await updatedValue.toJSON({
|
|
74
|
+
onlyDirty: true
|
|
75
|
+
});
|
|
76
|
+
return storageOperations.settings.update({
|
|
77
|
+
original: existingSettings,
|
|
78
|
+
data: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, existingSettings), updatedSettings), {}, {
|
|
79
|
+
tenant: getTenantId()
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
async deleteSettings() {
|
|
84
|
+
await storageOperations.settings.delete({
|
|
85
|
+
tenant: getTenantId()
|
|
86
|
+
});
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
exports.createSettingsCrud = createSettingsCrud;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CreateDataModel","withFields","uploadMinFileSize","number","value","validation","create","uploadMaxFileSize","srcPrefix","onSet","endsWith","string","UpdateDataModel","createSettingsCrud","storageOperations","getTenantId","getSettings","settings","get","tenant","createSettings","data","populate","validate","settingsData","toJSON","updateSettings","updatedValue","existingSettings","updatedSettings","onlyDirty","update","original","deleteSettings","delete"],"sources":["settings.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string, number, onSet } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { FileManagerSettings, SettingsCRUD } from \"~/types\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nconst CreateDataModel = withFields({\n uploadMinFileSize: number({ value: 0, validation: validation.create(\"gte:0\") }),\n uploadMaxFileSize: number({ value: 10737418240 }),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string({ value: \"/files/\" }))\n})();\n\nconst UpdateDataModel = withFields({\n uploadMinFileSize: number({\n validation: validation.create(\"gte:0\")\n }),\n uploadMaxFileSize: number(),\n srcPrefix: onSet((value?: string) => {\n // Make sure srcPrefix always ends with forward slash.\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })(string())\n})();\n\nexport const createSettingsCrud = ({\n storageOperations,\n getTenantId\n}: FileManagerConfig): SettingsCRUD => {\n return {\n async getSettings() {\n return storageOperations.settings.get({ tenant: getTenantId() });\n },\n async createSettings(data) {\n const settings = new CreateDataModel().populate(data);\n await settings.validate();\n\n const settingsData: FileManagerSettings = await settings.toJSON();\n\n return storageOperations.settings.create({\n data: { ...settingsData, tenant: getTenantId() }\n });\n },\n async updateSettings(data) {\n const updatedValue = new UpdateDataModel().populate(data);\n await updatedValue.validate();\n\n const existingSettings = (await storageOperations.settings.get({\n tenant: getTenantId()\n })) as FileManagerSettings;\n\n const updatedSettings: Partial<FileManagerSettings> = await updatedValue.toJSON({\n onlyDirty: true\n });\n\n return storageOperations.settings.update({\n original: existingSettings,\n data: {\n ...existingSettings,\n ...updatedSettings,\n tenant: getTenantId()\n }\n });\n },\n async deleteSettings() {\n await storageOperations.settings.delete({ tenant: getTenantId() });\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createSystemCrud = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _pubsub = require("@webiny/pubsub");
|
|
10
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
11
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
12
|
+
const createSystemCrud = ({
|
|
13
|
+
storageOperations,
|
|
14
|
+
getTenantId,
|
|
15
|
+
getIdentity,
|
|
16
|
+
WEBINY_VERSION
|
|
17
|
+
}) => {
|
|
18
|
+
return {
|
|
19
|
+
onSystemBeforeInstall: (0, _pubsub.createTopic)("fileManager.onSystemBeforeInstall"),
|
|
20
|
+
onSystemAfterInstall: (0, _pubsub.createTopic)("fileManager.onSystemAfterInstall"),
|
|
21
|
+
async getVersion() {
|
|
22
|
+
const system = await storageOperations.system.get({
|
|
23
|
+
tenant: getTenantId()
|
|
24
|
+
});
|
|
25
|
+
return system ? system.version : null;
|
|
26
|
+
},
|
|
27
|
+
async setVersion(version) {
|
|
28
|
+
const system = await storageOperations.system.get({
|
|
29
|
+
tenant: getTenantId()
|
|
30
|
+
});
|
|
31
|
+
if (system) {
|
|
32
|
+
const data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, system), {}, {
|
|
33
|
+
tenant: system.tenant || getTenantId(),
|
|
34
|
+
version
|
|
35
|
+
});
|
|
36
|
+
try {
|
|
37
|
+
await storageOperations.system.update({
|
|
38
|
+
original: system,
|
|
39
|
+
data
|
|
40
|
+
});
|
|
41
|
+
return;
|
|
42
|
+
} catch (ex) {
|
|
43
|
+
throw new _error.default("Could not update the system data.", "SYSTEM_UPDATE_ERROR", {
|
|
44
|
+
data
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const data = {
|
|
49
|
+
version,
|
|
50
|
+
tenant: getTenantId()
|
|
51
|
+
};
|
|
52
|
+
try {
|
|
53
|
+
await storageOperations.system.create({
|
|
54
|
+
data
|
|
55
|
+
});
|
|
56
|
+
return;
|
|
57
|
+
} catch (ex) {
|
|
58
|
+
throw new _error.default("Could not create the system data.", "SYSTEM_CREATE_ERROR", {
|
|
59
|
+
data
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
async install({
|
|
64
|
+
srcPrefix
|
|
65
|
+
}) {
|
|
66
|
+
const identity = getIdentity();
|
|
67
|
+
if (!identity) {
|
|
68
|
+
throw new _apiSecurity.NotAuthorizedError();
|
|
69
|
+
}
|
|
70
|
+
const version = await this.getVersion();
|
|
71
|
+
if (version) {
|
|
72
|
+
throw new _error.default("File Manager is already installed.", "FILES_INSTALL_ABORTED");
|
|
73
|
+
}
|
|
74
|
+
const data = {};
|
|
75
|
+
if (srcPrefix) {
|
|
76
|
+
data.srcPrefix = srcPrefix;
|
|
77
|
+
}
|
|
78
|
+
await this.onSystemBeforeInstall.publish({});
|
|
79
|
+
await this.createSettings(data);
|
|
80
|
+
await this.setVersion(WEBINY_VERSION);
|
|
81
|
+
await this.onSystemAfterInstall.publish({});
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
exports.createSystemCrud = createSystemCrud;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSystemCrud","storageOperations","getTenantId","getIdentity","WEBINY_VERSION","onSystemBeforeInstall","createTopic","onSystemAfterInstall","getVersion","system","get","tenant","version","setVersion","data","update","original","ex","WebinyError","create","install","srcPrefix","identity","NotAuthorizedError","publish","createSettings"],"sources":["system.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport {\n FileManagerContextObject,\n FileManagerSettings,\n FileManagerSystem,\n SystemCRUD\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { FileManagerConfig } from \"~/createFileManager/index\";\n\nexport const createSystemCrud = ({\n storageOperations,\n getTenantId,\n getIdentity,\n WEBINY_VERSION\n}: FileManagerConfig): SystemCRUD => {\n return {\n onSystemBeforeInstall: createTopic(\"fileManager.onSystemBeforeInstall\"),\n onSystemAfterInstall: createTopic(\"fileManager.onSystemAfterInstall\"),\n async getVersion() {\n const system = await storageOperations.system.get({ tenant: getTenantId() });\n\n return system ? system.version : null;\n },\n async setVersion(version: string) {\n const system = await storageOperations.system.get({ tenant: getTenantId() });\n\n if (system) {\n const data: FileManagerSystem = {\n ...system,\n tenant: system.tenant || getTenantId(),\n version\n };\n try {\n await storageOperations.system.update({\n original: system,\n data\n });\n return;\n } catch (ex) {\n throw new WebinyError(\n \"Could not update the system data.\",\n \"SYSTEM_UPDATE_ERROR\",\n {\n data\n }\n );\n }\n }\n\n const data: FileManagerSystem = {\n version,\n tenant: getTenantId()\n };\n try {\n await storageOperations.system.create({\n data\n });\n return;\n } catch (ex) {\n throw new WebinyError(\"Could not create the system data.\", \"SYSTEM_CREATE_ERROR\", {\n data\n });\n }\n },\n async install(this: FileManagerContextObject, { srcPrefix }) {\n const identity = getIdentity();\n\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const version = await this.getVersion();\n\n if (version) {\n throw new WebinyError(\n \"File Manager is already installed.\",\n \"FILES_INSTALL_ABORTED\"\n );\n }\n\n const data: Partial<FileManagerSettings> = {};\n\n if (srcPrefix) {\n data.srcPrefix = srcPrefix;\n }\n\n await this.onSystemBeforeInstall.publish({});\n\n await this.createSettings(data);\n await this.setVersion(WEBINY_VERSION);\n\n await this.onSystemAfterInstall.publish({});\n\n return true;\n }\n };\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AAOA;AAGO,MAAMA,gBAAgB,GAAG,CAAC;EAC7BC,iBAAiB;EACjBC,WAAW;EACXC,WAAW;EACXC;AACe,CAAC,KAAiB;EACjC,OAAO;IACHC,qBAAqB,EAAE,IAAAC,mBAAW,EAAC,mCAAmC,CAAC;IACvEC,oBAAoB,EAAE,IAAAD,mBAAW,EAAC,kCAAkC,CAAC;IACrE,MAAME,UAAU,GAAG;MACf,MAAMC,MAAM,GAAG,MAAMR,iBAAiB,CAACQ,MAAM,CAACC,GAAG,CAAC;QAAEC,MAAM,EAAET,WAAW;MAAG,CAAC,CAAC;MAE5E,OAAOO,MAAM,GAAGA,MAAM,CAACG,OAAO,GAAG,IAAI;IACzC,CAAC;IACD,MAAMC,UAAU,CAACD,OAAe,EAAE;MAC9B,MAAMH,MAAM,GAAG,MAAMR,iBAAiB,CAACQ,MAAM,CAACC,GAAG,CAAC;QAAEC,MAAM,EAAET,WAAW;MAAG,CAAC,CAAC;MAE5E,IAAIO,MAAM,EAAE;QACR,MAAMK,IAAuB,+DACtBL,MAAM;UACTE,MAAM,EAAEF,MAAM,CAACE,MAAM,IAAIT,WAAW,EAAE;UACtCU;QAAO,EACV;QACD,IAAI;UACA,MAAMX,iBAAiB,CAACQ,MAAM,CAACM,MAAM,CAAC;YAClCC,QAAQ,EAAEP,MAAM;YAChBK;UACJ,CAAC,CAAC;UACF;QACJ,CAAC,CAAC,OAAOG,EAAE,EAAE;UACT,MAAM,IAAIC,cAAW,CACjB,mCAAmC,EACnC,qBAAqB,EACrB;YACIJ;UACJ,CAAC,CACJ;QACL;MACJ;MAEA,MAAMA,IAAuB,GAAG;QAC5BF,OAAO;QACPD,MAAM,EAAET,WAAW;MACvB,CAAC;MACD,IAAI;QACA,MAAMD,iBAAiB,CAACQ,MAAM,CAACU,MAAM,CAAC;UAClCL;QACJ,CAAC,CAAC;QACF;MACJ,CAAC,CAAC,OAAOG,EAAE,EAAE;QACT,MAAM,IAAIC,cAAW,CAAC,mCAAmC,EAAE,qBAAqB,EAAE;UAC9EJ;QACJ,CAAC,CAAC;MACN;IACJ,CAAC;IACD,MAAMM,OAAO,CAAiC;MAAEC;IAAU,CAAC,EAAE;MACzD,MAAMC,QAAQ,GAAGnB,WAAW,EAAE;MAE9B,IAAI,CAACmB,QAAQ,EAAE;QACX,MAAM,IAAIC,+BAAkB,EAAE;MAClC;MAEA,MAAMX,OAAO,GAAG,MAAM,IAAI,CAACJ,UAAU,EAAE;MAEvC,IAAII,OAAO,EAAE;QACT,MAAM,IAAIM,cAAW,CACjB,oCAAoC,EACpC,uBAAuB,CAC1B;MACL;MAEA,MAAMJ,IAAkC,GAAG,CAAC,CAAC;MAE7C,IAAIO,SAAS,EAAE;QACXP,IAAI,CAACO,SAAS,GAAGA,SAAS;MAC9B;MAEA,MAAM,IAAI,CAAChB,qBAAqB,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;MAE5C,MAAM,IAAI,CAACC,cAAc,CAACX,IAAI,CAAC;MAC/B,MAAM,IAAI,CAACD,UAAU,CAACT,cAAc,CAAC;MAErC,MAAM,IAAI,CAACG,oBAAoB,CAACiB,OAAO,CAAC,CAAC,CAAC,CAAC;MAE3C,OAAO,IAAI;IACf;EACJ,CAAC;AACL,CAAC;AAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createBaseSchema = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
var _utils = require("./utils");
|
|
9
|
+
const createBaseSchema = () => {
|
|
10
|
+
const fileManagerGraphQL = new _handlerGraphql.GraphQLSchemaPlugin({
|
|
11
|
+
typeDefs: /* GraphQL */`
|
|
12
|
+
type FmError {
|
|
13
|
+
code: String
|
|
14
|
+
message: String
|
|
15
|
+
data: JSON
|
|
16
|
+
stack: String
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type FmCreatedBy {
|
|
20
|
+
id: ID
|
|
21
|
+
displayName: String
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type FmListMeta {
|
|
25
|
+
cursor: String
|
|
26
|
+
totalCount: Int
|
|
27
|
+
hasMoreItems: Boolean
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
type FmBooleanResponse {
|
|
31
|
+
data: Boolean
|
|
32
|
+
error: FmError
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type FmSettings {
|
|
36
|
+
uploadMinFileSize: Number
|
|
37
|
+
uploadMaxFileSize: Number
|
|
38
|
+
srcPrefix: String
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
input FmSettingsInput {
|
|
42
|
+
uploadMinFileSize: Number
|
|
43
|
+
uploadMaxFileSize: Number
|
|
44
|
+
srcPrefix: String
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
type FmSettingsResponse {
|
|
48
|
+
data: FmSettings
|
|
49
|
+
error: FmError
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type FmQuery {
|
|
53
|
+
version: String
|
|
54
|
+
getSettings: FmSettingsResponse
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
type FmDeleteResponse {
|
|
58
|
+
data: Boolean
|
|
59
|
+
error: FmError
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type FmMutation {
|
|
63
|
+
install(srcPrefix: String): FmBooleanResponse
|
|
64
|
+
updateSettings(data: FmSettingsInput): FmSettingsResponse
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
input FmInstallInput {
|
|
68
|
+
srcPrefix: String!
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
extend type Query {
|
|
72
|
+
fileManager: FmQuery
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
extend type Mutation {
|
|
76
|
+
fileManager: FmMutation
|
|
77
|
+
}
|
|
78
|
+
`,
|
|
79
|
+
resolvers: {
|
|
80
|
+
Query: {
|
|
81
|
+
fileManager: _utils.emptyResolver
|
|
82
|
+
},
|
|
83
|
+
Mutation: {
|
|
84
|
+
fileManager: _utils.emptyResolver
|
|
85
|
+
},
|
|
86
|
+
FmQuery: {
|
|
87
|
+
async version(_, __, context) {
|
|
88
|
+
const {
|
|
89
|
+
i18n,
|
|
90
|
+
tenancy,
|
|
91
|
+
fileManager
|
|
92
|
+
} = context;
|
|
93
|
+
if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return await fileManager.getVersion();
|
|
97
|
+
},
|
|
98
|
+
async getSettings(_, __, context) {
|
|
99
|
+
return (0, _utils.resolve)(() => context.fileManager.getSettings());
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
FmMutation: {
|
|
103
|
+
async install(_, args, context) {
|
|
104
|
+
return (0, _utils.resolve)(() => context.fileManager.install({
|
|
105
|
+
srcPrefix: args.srcPrefix
|
|
106
|
+
}));
|
|
107
|
+
},
|
|
108
|
+
async updateSettings(_, args, context) {
|
|
109
|
+
return (0, _utils.resolve)(() => context.fileManager.updateSettings(args.data));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
fileManagerGraphQL.name = "fm.graphql.base";
|
|
115
|
+
return fileManagerGraphQL;
|
|
116
|
+
};
|
|
117
|
+
exports.createBaseSchema = createBaseSchema;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createBaseSchema","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmQuery","version","_","__","context","i18n","tenancy","getCurrentTenant","getContentLocale","getVersion","getSettings","resolve","FmMutation","install","args","srcPrefix","updateSettings","data","name"],"sources":["baseSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { FileManagerContext } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\n\nexport const createBaseSchema = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: /* GraphQL */ `\n type FmError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type FmCreatedBy {\n id: ID\n displayName: String\n }\n\n type FmListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FmBooleanResponse {\n data: Boolean\n error: FmError\n }\n\n type FmSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n input FmSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n type FmSettingsResponse {\n data: FmSettings\n error: FmError\n }\n\n type FmQuery {\n version: String\n getSettings: FmSettingsResponse\n }\n\n type FmDeleteResponse {\n data: Boolean\n error: FmError\n }\n\n type FmMutation {\n install(srcPrefix: String): FmBooleanResponse\n updateSettings(data: FmSettingsInput): FmSettingsResponse\n }\n\n input FmInstallInput {\n srcPrefix: String!\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `,\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmQuery: {\n async version(_, __, context) {\n const { i18n, tenancy, fileManager } = context;\n if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {\n return null;\n }\n\n return await fileManager.getVersion();\n },\n async getSettings(_, __, context) {\n return resolve(() => context.fileManager.getSettings());\n }\n },\n FmMutation: {\n async install(_, args: any, context) {\n return resolve(() =>\n context.fileManager.install({ srcPrefix: args.srcPrefix })\n );\n },\n async updateSettings(_, args: any, context) {\n return resolve(() => context.fileManager.updateSettings(args.data));\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.base\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":";;;;;;AAAA;AAEA;AAEO,MAAMA,gBAAgB,GAAG,MAAM;EAClC,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,WAAW,EAAEC;MACjB,CAAC;MACDC,QAAQ,EAAE;QACNF,WAAW,EAAEC;MACjB,CAAC;MACDE,OAAO,EAAE;QACL,MAAMC,OAAO,CAACC,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC1B,MAAM;YAAEC,IAAI;YAAEC,OAAO;YAAET;UAAY,CAAC,GAAGO,OAAO;UAC9C,IAAI,CAACE,OAAO,CAACC,gBAAgB,EAAE,IAAI,CAACF,IAAI,CAACG,gBAAgB,EAAE,EAAE;YACzD,OAAO,IAAI;UACf;UAEA,OAAO,MAAMX,WAAW,CAACY,UAAU,EAAE;QACzC,CAAC;QACD,MAAMC,WAAW,CAACR,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC9B,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACa,WAAW,EAAE,CAAC;QAC3D;MACJ,CAAC;MACDE,UAAU,EAAE;QACR,MAAMC,OAAO,CAACX,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACjC,OAAO,IAAAO,cAAO,EAAC,MACXP,OAAO,CAACP,WAAW,CAACgB,OAAO,CAAC;YAAEE,SAAS,EAAED,IAAI,CAACC;UAAU,CAAC,CAAC,CAC7D;QACL,CAAC;QACD,MAAMC,cAAc,CAACd,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACxC,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACmB,cAAc,CAACF,IAAI,CAACG,IAAI,CAAC,CAAC;QACvE;MACJ;IACJ;EACJ,CAAC,CAAC;EACFzB,kBAAkB,CAAC0B,IAAI,GAAG,iBAAiB;EAE3C,OAAO1B,kBAAkB;AAC7B,CAAC;AAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CmsFieldTypePlugins, CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
|
+
export interface CreateFilesTypeDefsParams {
|
|
3
|
+
model: CmsModel;
|
|
4
|
+
models: CmsModel[];
|
|
5
|
+
plugins: CmsFieldTypePlugins;
|
|
6
|
+
}
|
|
7
|
+
export declare const createFilesTypeDefs: (params: CreateFilesTypeDefsParams) => string;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createFilesTypeDefs = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _renderFields = require("@webiny/api-headless-cms/utils/renderFields");
|
|
10
|
+
var _renderInputFields = require("@webiny/api-headless-cms/utils/renderInputFields");
|
|
11
|
+
var _renderListFilterFields = require("@webiny/api-headless-cms/utils/renderListFilterFields");
|
|
12
|
+
var _renderSortEnum = require("@webiny/api-headless-cms/utils/renderSortEnum");
|
|
13
|
+
const removeFieldRequiredValidation = field => {
|
|
14
|
+
if (field.validation) {
|
|
15
|
+
field.validation = field.validation.filter(validation => validation.name !== "required");
|
|
16
|
+
}
|
|
17
|
+
if (field.listValidation) {
|
|
18
|
+
field.listValidation = field.listValidation.filter(v => v.name !== "required");
|
|
19
|
+
}
|
|
20
|
+
return field;
|
|
21
|
+
};
|
|
22
|
+
const createUpdateFields = fields => {
|
|
23
|
+
return fields.reduce((collection, field) => {
|
|
24
|
+
collection.push(removeFieldRequiredValidation((0, _objectSpread2.default)({}, field)));
|
|
25
|
+
return collection;
|
|
26
|
+
}, []);
|
|
27
|
+
};
|
|
28
|
+
const createFilesTypeDefs = params => {
|
|
29
|
+
const {
|
|
30
|
+
model,
|
|
31
|
+
models,
|
|
32
|
+
plugins: fieldTypePlugins
|
|
33
|
+
} = params;
|
|
34
|
+
const {
|
|
35
|
+
fields
|
|
36
|
+
} = model;
|
|
37
|
+
const fieldTypes = (0, _renderFields.renderFields)({
|
|
38
|
+
models,
|
|
39
|
+
model,
|
|
40
|
+
fields,
|
|
41
|
+
type: "manage",
|
|
42
|
+
fieldTypePlugins
|
|
43
|
+
});
|
|
44
|
+
const inputCreateFields = (0, _renderInputFields.renderInputFields)({
|
|
45
|
+
models,
|
|
46
|
+
model,
|
|
47
|
+
fields,
|
|
48
|
+
fieldTypePlugins
|
|
49
|
+
});
|
|
50
|
+
const inputUpdateFields = (0, _renderInputFields.renderInputFields)({
|
|
51
|
+
models,
|
|
52
|
+
model,
|
|
53
|
+
fields: createUpdateFields(fields),
|
|
54
|
+
fieldTypePlugins
|
|
55
|
+
});
|
|
56
|
+
const listFilterFieldsRender = (0, _renderListFilterFields.renderListFilterFields)({
|
|
57
|
+
model,
|
|
58
|
+
fields: model.fields,
|
|
59
|
+
type: "manage",
|
|
60
|
+
fieldTypePlugins,
|
|
61
|
+
excludeFields: ["entryId", "status"]
|
|
62
|
+
});
|
|
63
|
+
const excludeFromSorterts = ["tags", "aliases"];
|
|
64
|
+
const sortEnumRender = (0, _renderSortEnum.renderSortEnum)({
|
|
65
|
+
model,
|
|
66
|
+
fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),
|
|
67
|
+
fieldTypePlugins,
|
|
68
|
+
sorterPlugins: []
|
|
69
|
+
});
|
|
70
|
+
return (/* GraphQL */`
|
|
71
|
+
${fieldTypes.map(f => f.typeDefs).join("\n")}
|
|
72
|
+
|
|
73
|
+
type FmFile {
|
|
74
|
+
id: ID!
|
|
75
|
+
savedOn: DateTime!
|
|
76
|
+
createdOn: DateTime!
|
|
77
|
+
createdBy: FmCreatedBy!
|
|
78
|
+
src: String
|
|
79
|
+
${fieldTypes.map(f => f.fields).join("\n")}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
${inputCreateFields.map(f => f.typeDefs).join("\n")}
|
|
83
|
+
|
|
84
|
+
input FmFileCreateInput {
|
|
85
|
+
id: ID!
|
|
86
|
+
${inputCreateFields.map(f => f.fields).join("\n")}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
input FmFileUpdateInput {
|
|
90
|
+
${inputUpdateFields.map(f => f.fields).join("\n")}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
type FmFileResponse {
|
|
94
|
+
data: FmFile
|
|
95
|
+
error: FmError
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
input FmFileListWhereInput {
|
|
99
|
+
${listFilterFieldsRender}
|
|
100
|
+
AND: [FmFileListWhereInput!]
|
|
101
|
+
OR: [FmFileListWhereInput!]
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
type FmFileListResponse {
|
|
105
|
+
data: [FmFile!]
|
|
106
|
+
error: FmError
|
|
107
|
+
meta: FmListMeta
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
enum FmFileListSorter {
|
|
111
|
+
${sortEnumRender}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
input FmTagsListWhereInput {
|
|
115
|
+
createdBy: String
|
|
116
|
+
tags_startsWith: String
|
|
117
|
+
tags_not_startsWith: String
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
type FmTag {
|
|
121
|
+
tag: String!
|
|
122
|
+
count: Number!
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
type FmTagsListResponse {
|
|
126
|
+
data: [FmTag!]
|
|
127
|
+
error: FmError
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
type FmCreateFilesResponse {
|
|
131
|
+
data: [FmFile!]
|
|
132
|
+
error: FmError
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
type FmFileModelResponse {
|
|
136
|
+
data: JSON
|
|
137
|
+
error: FmError
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
extend type FmQuery {
|
|
141
|
+
getFileModel: FmFileModelResponse!
|
|
142
|
+
getFile(id: ID!): FmFileResponse!
|
|
143
|
+
listFiles(
|
|
144
|
+
search: String
|
|
145
|
+
where: FmFileListWhereInput
|
|
146
|
+
limit: Int
|
|
147
|
+
after: String
|
|
148
|
+
sort: [FmFileListSorter!]
|
|
149
|
+
): FmFileListResponse!
|
|
150
|
+
listTags(where: FmTagsListWhereInput): FmTagsListResponse!
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
extend type FmMutation {
|
|
154
|
+
createFile(data: FmFileCreateInput!): FmFileResponse!
|
|
155
|
+
createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!
|
|
156
|
+
updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!
|
|
157
|
+
deleteFile(id: ID!): FmBooleanResponse!
|
|
158
|
+
}
|
|
159
|
+
`
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
exports.createFilesTypeDefs = createFilesTypeDefs;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n savedOn: DateTime!\n createdOn: DateTime!\n createdBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input FmFileCreateInput {\n id: ID!\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
|
|
2
|
+
import { FileManagerContext } from "../types";
|
|
3
|
+
import { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
|
|
4
|
+
export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<FileManagerContext>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFilesSchema = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
var _utils = require("./utils");
|
|
9
|
+
var _createFilesTypeDefs = require("./createFilesTypeDefs");
|
|
10
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
11
|
+
const createFilesSchema = params => {
|
|
12
|
+
const fileManagerGraphQL = new _handlerGraphql.GraphQLSchemaPlugin({
|
|
13
|
+
typeDefs: (0, _createFilesTypeDefs.createFilesTypeDefs)(params),
|
|
14
|
+
resolvers: {
|
|
15
|
+
Query: {
|
|
16
|
+
fileManager: _utils.emptyResolver
|
|
17
|
+
},
|
|
18
|
+
Mutation: {
|
|
19
|
+
fileManager: _utils.emptyResolver
|
|
20
|
+
},
|
|
21
|
+
FmFile: {
|
|
22
|
+
async src(file, _, context) {
|
|
23
|
+
const settings = await context.fileManager.getSettings();
|
|
24
|
+
return ((settings === null || settings === void 0 ? void 0 : settings.srcPrefix) || "") + file.key;
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
FmQuery: {
|
|
28
|
+
getFileModel(_, __, context) {
|
|
29
|
+
const identity = context.security.getIdentity();
|
|
30
|
+
if (!identity) {
|
|
31
|
+
return new _apiSecurity.NotAuthorizedResponse();
|
|
32
|
+
}
|
|
33
|
+
return (0, _utils.resolve)(() => context.security.withoutAuthorization(() => {
|
|
34
|
+
return context.cms.getModel("fmFile");
|
|
35
|
+
}));
|
|
36
|
+
},
|
|
37
|
+
getFile(_, args, context) {
|
|
38
|
+
return (0, _utils.resolve)(() => context.fileManager.getFile(args.id));
|
|
39
|
+
},
|
|
40
|
+
async listFiles(_, args, context) {
|
|
41
|
+
try {
|
|
42
|
+
const [data, meta] = await context.fileManager.listFiles(args);
|
|
43
|
+
return new _handlerGraphql.ListResponse(data, meta);
|
|
44
|
+
} catch (e) {
|
|
45
|
+
return new _handlerGraphql.ErrorResponse(e);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
async listTags(_, args, context) {
|
|
49
|
+
try {
|
|
50
|
+
const tags = await context.fileManager.listTags(args || {});
|
|
51
|
+
return new _handlerGraphql.Response(tags);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
return new _handlerGraphql.ErrorResponse(error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
FmMutation: {
|
|
58
|
+
async createFile(_, args, context) {
|
|
59
|
+
return (0, _utils.resolve)(() => context.fileManager.createFile(args.data, args.meta));
|
|
60
|
+
},
|
|
61
|
+
async createFiles(_, args, context) {
|
|
62
|
+
return (0, _utils.resolve)(() => context.fileManager.createFilesInBatch(args.data, args.meta));
|
|
63
|
+
},
|
|
64
|
+
async updateFile(_, args, context) {
|
|
65
|
+
return (0, _utils.resolve)(() => context.fileManager.updateFile(args.id, args.data));
|
|
66
|
+
},
|
|
67
|
+
async deleteFile(_, args, context) {
|
|
68
|
+
return (0, _utils.resolve)(async () => {
|
|
69
|
+
// TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.
|
|
70
|
+
const file = await context.fileManager.getFile(args.id);
|
|
71
|
+
return await context.fileManager.storage.delete({
|
|
72
|
+
id: file.id,
|
|
73
|
+
key: file.key
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
fileManagerGraphQL.name = "fm.graphql.files";
|
|
81
|
+
return fileManagerGraphQL;
|
|
82
|
+
};
|
|
83
|
+
exports.createFilesSchema = createFilesSchema;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFilesSchema","params","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","createFilesTypeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmFile","src","file","_","context","settings","getSettings","srcPrefix","key","FmQuery","getFileModel","__","identity","security","getIdentity","NotAuthorizedResponse","resolve","withoutAuthorization","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport { createFilesTypeDefs, CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\n\nexport const createFilesSchema = (params: CreateFilesTypeDefsParams) => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: createFilesTypeDefs(params),\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmFile: {\n async src(file, _, context: FileManagerContext) {\n const settings = await context.fileManager.getSettings();\n return (settings?.srcPrefix || \"\") + file.key;\n }\n },\n FmQuery: {\n getFileModel(_, __, context) {\n const identity = context.security.getIdentity();\n if (!identity) {\n return new NotAuthorizedResponse();\n }\n\n return resolve(() =>\n context.security.withoutAuthorization(() => {\n return context.cms.getModel(\"fmFile\");\n })\n );\n },\n getFile(_, args: any, context) {\n return resolve(() => context.fileManager.getFile(args.id));\n },\n async listFiles(_, args: FilesListOpts, context) {\n try {\n const [data, meta] = await context.fileManager.listFiles(args);\n\n return new ListResponse(data, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n async listTags(_, args: any, context) {\n try {\n const tags = await context.fileManager.listTags(args || {});\n\n return new Response(tags);\n } catch (error) {\n return new ErrorResponse(error);\n }\n }\n },\n FmMutation: {\n async createFile(_, args: any, context) {\n return resolve(() => context.fileManager.createFile(args.data, args.meta));\n },\n async createFiles(_, args: any, context) {\n return resolve(() =>\n context.fileManager.createFilesInBatch(args.data, args.meta)\n );\n },\n async updateFile(_, args: any, context) {\n return resolve(() => context.fileManager.updateFile(args.id, args.data));\n },\n async deleteFile(_, args: any, context) {\n return resolve(async () => {\n // TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.\n const file = await context.fileManager.getFile(args.id);\n return await context.fileManager.storage.delete({\n id: file.id,\n key: file.key\n });\n });\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.files\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":"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"}
|