@webiny/api-file-manager 0.0.0-mt-3 → 0.0.0-unstable.06b2ede40f
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 +115 -0
- package/FileManagerContextSetup.js.map +1 -0
- package/README.md +1 -1
- package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
- package/cmsFileStorage/CmsFilesStorage.js +164 -0
- package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
- package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js +33 -0
- package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
- package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js +33 -0
- package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
- package/cmsFileStorage/file.model.d.ts +6 -0
- package/cmsFileStorage/file.model.js +158 -0
- package/cmsFileStorage/file.model.js.map +1 -0
- package/contants.d.ts +1 -0
- package/contants.js +9 -0
- package/contants.js.map +1 -0
- package/createFileManager/files.crud.d.ts +3 -0
- package/createFileManager/files.crud.js +328 -0
- package/createFileManager/files.crud.js.map +1 -0
- package/createFileManager/index.d.ts +3 -0
- package/createFileManager/index.js +23 -0
- package/createFileManager/index.js.map +1 -0
- package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
- package/createFileManager/permissions/FilesPermissions.js +11 -0
- package/createFileManager/permissions/FilesPermissions.js.map +1 -0
- package/createFileManager/permissions/SettingsPermissions.d.ts +4 -0
- package/createFileManager/permissions/SettingsPermissions.js +11 -0
- package/createFileManager/permissions/SettingsPermissions.js.map +1 -0
- package/createFileManager/settings.crud.d.ts +3 -0
- package/createFileManager/settings.crud.js +117 -0
- package/createFileManager/settings.crud.js.map +1 -0
- package/createFileManager/system.crud.d.ts +3 -0
- package/createFileManager/system.crud.js +88 -0
- package/createFileManager/system.crud.js.map +1 -0
- package/createFileManager/types.d.ts +16 -0
- package/createFileManager/types.js +7 -0
- package/createFileManager/types.js.map +1 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +11 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js +74 -0
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/Asset.d.ts +32 -0
- package/delivery/AssetDelivery/Asset.js +69 -0
- package/delivery/AssetDelivery/Asset.js.map +1 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +63 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +102 -0
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -0
- package/delivery/AssetDelivery/AssetRequest.d.ts +25 -0
- package/delivery/AssetDelivery/AssetRequest.js +29 -0
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +6 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js +37 -0
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js +15 -0
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetReply.d.ts +4 -0
- package/delivery/AssetDelivery/NullAssetReply.js +20 -0
- package/delivery/AssetDelivery/NullAssetReply.js.map +1 -0
- package/delivery/AssetDelivery/NullAssetResolver.d.ts +5 -0
- package/delivery/AssetDelivery/NullAssetResolver.js +14 -0
- package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -0
- package/delivery/AssetDelivery/NullRequestResolver.d.ts +4 -0
- package/delivery/AssetDelivery/NullRequestResolver.js +14 -0
- package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +8 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +25 -0
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -0
- package/delivery/AssetDelivery/SetResponseHeaders.d.ts +18 -0
- package/delivery/AssetDelivery/SetResponseHeaders.js +25 -0
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +6 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.d.ts +25 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.js +38 -0
- package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +5 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +7 -0
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +2 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +15 -0
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +7 -0
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +26 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +15 -0
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +6 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +8 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +37 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +13 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +63 -0
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +6 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +28 -0
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +27 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +27 -0
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +7 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js +18 -0
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +4 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +14 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +4 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +14 -0
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +6 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +26 -0
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
- package/delivery/index.d.ts +17 -0
- package/delivery/index.js +194 -0
- package/delivery/index.js.map +1 -0
- package/delivery/setupAssetDelivery.d.ts +6 -0
- package/delivery/setupAssetDelivery.js +128 -0
- package/delivery/setupAssetDelivery.js.map +1 -0
- package/enterprise/applyThreatScanning.d.ts +2 -0
- package/enterprise/applyThreatScanning.js +20 -0
- package/enterprise/applyThreatScanning.js.map +1 -0
- package/graphql/baseSchema.d.ts +3 -0
- package/graphql/baseSchema.js +121 -0
- package/graphql/baseSchema.js.map +1 -0
- package/graphql/createFilesTypeDefs.d.ts +7 -0
- package/graphql/createFilesTypeDefs.js +184 -0
- package/graphql/createFilesTypeDefs.js.map +1 -0
- package/graphql/filesSchema.d.ts +4 -0
- package/graphql/filesSchema.js +89 -0
- package/graphql/filesSchema.js.map +1 -0
- package/graphql/getFileByUrl.d.ts +3 -0
- package/graphql/getFileByUrl.js +78 -0
- package/graphql/getFileByUrl.js.map +1 -0
- package/graphql/index.d.ts +4 -0
- package/graphql/index.js +55 -0
- package/graphql/index.js.map +1 -0
- package/graphql/utils.d.ts +11 -0
- package/graphql/utils.js +24 -0
- package/graphql/utils.js.map +1 -0
- package/handlers/manage/imageManager.d.ts +14 -0
- package/handlers/manage/imageManager.js +75 -0
- package/handlers/manage/imageManager.js.map +1 -0
- package/handlers/manage/index.d.ts +5 -3
- package/handlers/manage/index.js +48 -59
- package/handlers/manage/index.js.map +1 -0
- package/handlers/{transform/utils.d.ts → manage/legacyUtils.d.ts} +2 -2
- package/handlers/{transform/utils.js → manage/legacyUtils.js} +7 -19
- package/handlers/manage/legacyUtils.js.map +1 -0
- package/handlers/manage/utils.d.ts +12 -0
- package/handlers/manage/utils.js +34 -0
- package/handlers/manage/utils.js.map +1 -0
- package/handlers/types.d.ts +8 -0
- package/handlers/types.js +7 -0
- package/handlers/types.js.map +1 -0
- package/handlers/utils/getEnvironment.js +2 -2
- package/handlers/utils/getEnvironment.js.map +1 -0
- package/handlers/utils/getObjectParams.d.ts +3 -4
- package/handlers/utils/getObjectParams.js +3 -7
- package/handlers/utils/getObjectParams.js.map +1 -0
- package/handlers/utils/index.d.ts +0 -1
- package/handlers/utils/index.js +3 -12
- package/handlers/utils/index.js.map +1 -0
- package/index.d.ts +10 -0
- package/index.js +76 -0
- package/index.js.map +1 -0
- package/modelModifier/CmsModelModifier.d.ts +26 -0
- package/modelModifier/CmsModelModifier.js +62 -0
- package/modelModifier/CmsModelModifier.js.map +1 -0
- package/package.json +26 -36
- package/plugins/FilePhysicalStoragePlugin.d.ts +22 -0
- package/plugins/{definitions/FilePhysicalStoragePlugin.js → FilePhysicalStoragePlugin.js} +4 -15
- 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} +4 -16
- package/plugins/FileStorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +2 -2
- package/plugins/index.js +23 -18
- package/plugins/index.js.map +1 -0
- package/storage/FileStorage.d.ts +34 -0
- package/storage/FileStorage.js +90 -0
- package/storage/FileStorage.js.map +1 -0
- package/types/file.d.ts +49 -0
- package/types/file.js +7 -0
- package/types/file.js.map +1 -0
- package/types/file.lifecycle.d.ts +44 -0
- package/types/file.lifecycle.js +7 -0
- package/types/file.lifecycle.js.map +1 -0
- package/types.d.ts +104 -89
- package/types.js +25 -1
- package/types.js.map +1 -0
- package/handlers/download/index.d.ts +0 -3
- package/handlers/download/index.js +0 -125
- package/handlers/transform/index.d.ts +0 -3
- package/handlers/transform/index.js +0 -96
- package/handlers/transform/loaders/imageLoader.d.ts +0 -13
- package/handlers/transform/loaders/imageLoader.js +0 -106
- package/handlers/transform/loaders/index.d.ts +0 -13
- package/handlers/transform/loaders/index.js +0 -13
- package/handlers/transform/loaders/sanitizeImageTransformations.d.ts +0 -7
- package/handlers/transform/loaders/sanitizeImageTransformations.js +0 -51
- package/handlers/transform/managers/imageManager.d.ts +0 -9
- package/handlers/transform/managers/imageManager.js +0 -55
- package/handlers/transform/managers/index.d.ts +0 -9
- package/handlers/transform/managers/index.js +0 -13
- package/handlers/transform/optimizeImage.d.ts +0 -2
- package/handlers/transform/optimizeImage.js +0 -45
- package/handlers/transform/transformImage.d.ts +0 -9
- package/handlers/transform/transformImage.js +0 -30
- 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,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setupAssetDelivery = void 0;
|
|
7
|
+
var _handler = require("@webiny/handler");
|
|
8
|
+
var _PrivateFilesAssetProcessor = require("./AssetDelivery/privateFiles/PrivateFilesAssetProcessor");
|
|
9
|
+
var _PrivateAuthenticatedAuthorizer = require("./AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer");
|
|
10
|
+
var _PrivateFileAssetRequestResolver = require("./AssetDelivery/privateFiles/PrivateFileAssetRequestResolver");
|
|
11
|
+
var _index = require("./index");
|
|
12
|
+
const noCacheHeaders = _handler.ResponseHeaders.create({
|
|
13
|
+
"content-type": "application/json",
|
|
14
|
+
"cache-control": "no-cache, no-store, must-revalidate"
|
|
15
|
+
});
|
|
16
|
+
function assertAssetRequestWasResolved(request) {
|
|
17
|
+
if (request === undefined) {
|
|
18
|
+
throw new Error("Not an AssetRequest!");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function assertAssetWasResolved(asset) {
|
|
22
|
+
if (asset === undefined) {
|
|
23
|
+
throw new Error("Not an Asset!");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const setupAssetDelivery = params => {
|
|
27
|
+
const outputAsset = async (reply, asset) => {
|
|
28
|
+
const assetReply = await asset.output();
|
|
29
|
+
const headers = assetReply.getHeaders();
|
|
30
|
+
|
|
31
|
+
// Set default headers.
|
|
32
|
+
headers.set("x-webiny-base64-encoded", "true");
|
|
33
|
+
reply.code(assetReply.getCode());
|
|
34
|
+
reply.headers(headers.getHeaders());
|
|
35
|
+
return reply.send(await assetReply.getBody());
|
|
36
|
+
};
|
|
37
|
+
return [(0, _handler.createModifyFastifyPlugin)(app => {
|
|
38
|
+
// Config builder allows config modification via plugins.
|
|
39
|
+
const configBuilder = new _index.AssetDeliveryConfigBuilder();
|
|
40
|
+
|
|
41
|
+
// Apply config modifications.
|
|
42
|
+
const configPlugins = app.webiny.plugins.byType(_index.AssetDeliveryConfigModifierPlugin.type);
|
|
43
|
+
configPlugins.forEach(configPlugin => configPlugin.buildConfig(configBuilder));
|
|
44
|
+
let resolvedRequest;
|
|
45
|
+
let resolvedAsset;
|
|
46
|
+
|
|
47
|
+
// Create a `HandlerOnRequest` plugin to resolve `tenant` and `locale`, and allow the system to bootstrap.
|
|
48
|
+
const handlerOnRequest = (0, _handler.createHandlerOnRequest)(async (request, reply) => {
|
|
49
|
+
const requestResolver = configBuilder.getAssetRequestResolver();
|
|
50
|
+
resolvedRequest = await requestResolver.resolve(request);
|
|
51
|
+
if (!resolvedRequest) {
|
|
52
|
+
reply.code(404).headers(noCacheHeaders.getHeaders()).send({
|
|
53
|
+
error: "Unable to resolve the request!"
|
|
54
|
+
}).hijack();
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const assetResolver = configBuilder.getAssetResolver();
|
|
58
|
+
resolvedAsset = await assetResolver.resolve(resolvedRequest);
|
|
59
|
+
if (!resolvedAsset) {
|
|
60
|
+
reply.code(404).headers(noCacheHeaders.getHeaders()).send({
|
|
61
|
+
error: "Asset not found!"
|
|
62
|
+
}).hijack();
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const assetLocale = resolvedAsset.getLocale();
|
|
66
|
+
request.headers = {
|
|
67
|
+
...request.headers,
|
|
68
|
+
"x-tenant": resolvedAsset.getTenant(),
|
|
69
|
+
"x-i18n-locale": `default:${assetLocale};content:${assetLocale};`
|
|
70
|
+
};
|
|
71
|
+
return;
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Create the `Route` plugin, to handle all GET requests, and output the resolved asset.
|
|
75
|
+
const deliveryRoute = (0, _handler.createRoute)(({
|
|
76
|
+
onGet,
|
|
77
|
+
context
|
|
78
|
+
}) => {
|
|
79
|
+
onGet("*", async (_, reply) => {
|
|
80
|
+
assertAssetRequestWasResolved(resolvedRequest);
|
|
81
|
+
assertAssetWasResolved(resolvedAsset);
|
|
82
|
+
if (context.wcp.canUsePrivateFiles()) {
|
|
83
|
+
configBuilder.decorateAssetProcessor(({
|
|
84
|
+
assetProcessor,
|
|
85
|
+
context
|
|
86
|
+
}) => {
|
|
87
|
+
// Currently, we only have one authorizer.
|
|
88
|
+
const assetAuthorizer = new _PrivateAuthenticatedAuthorizer.PrivateAuthenticatedAuthorizer(context);
|
|
89
|
+
return new _PrivateFilesAssetProcessor.PrivateFilesAssetProcessor(context, assetAuthorizer, assetProcessor);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const outputStrategy = configBuilder.getAssetOutputStrategy(context, resolvedRequest, resolvedAsset);
|
|
93
|
+
resolvedAsset.setOutputStrategy(outputStrategy);
|
|
94
|
+
const assetProcessor = configBuilder.getAssetProcessor(context);
|
|
95
|
+
const processedAsset = await assetProcessor.process(resolvedRequest, resolvedAsset);
|
|
96
|
+
|
|
97
|
+
// Get reply object (runs the output strategy under the hood).
|
|
98
|
+
console.log(`Output asset (size: ${processedAsset.getSize()} bytes).`);
|
|
99
|
+
return outputAsset(reply, processedAsset);
|
|
100
|
+
}, {
|
|
101
|
+
override: true
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
app.webiny.plugins.register(handlerOnRequest, deliveryRoute);
|
|
105
|
+
}),
|
|
106
|
+
// Create the default configuration
|
|
107
|
+
(0, _index.createAssetDeliveryConfig)(config => {
|
|
108
|
+
config.decorateAssetRequestResolver(() => {
|
|
109
|
+
// This resolver works with `/files/*` requests.
|
|
110
|
+
return new _index.FilesAssetRequestResolver();
|
|
111
|
+
});
|
|
112
|
+
config.decorateAssetRequestResolver(({
|
|
113
|
+
assetRequestResolver
|
|
114
|
+
}) => {
|
|
115
|
+
// This resolver tries to resolve the request using aliases.
|
|
116
|
+
return new _index.AliasAssetRequestResolver(params.documentClient, assetRequestResolver);
|
|
117
|
+
});
|
|
118
|
+
config.decorateAssetRequestResolver(({
|
|
119
|
+
assetRequestResolver
|
|
120
|
+
}) => {
|
|
121
|
+
// This resolver works with `/private/*` requests.
|
|
122
|
+
return new _PrivateFileAssetRequestResolver.PrivateFileAssetRequestResolver(assetRequestResolver);
|
|
123
|
+
});
|
|
124
|
+
})];
|
|
125
|
+
};
|
|
126
|
+
exports.setupAssetDelivery = setupAssetDelivery;
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=setupAssetDelivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_handler","require","_PrivateFilesAssetProcessor","_PrivateAuthenticatedAuthorizer","_PrivateFileAssetRequestResolver","_index","noCacheHeaders","ResponseHeaders","create","assertAssetRequestWasResolved","request","undefined","Error","assertAssetWasResolved","asset","setupAssetDelivery","params","outputAsset","reply","assetReply","output","headers","getHeaders","set","code","getCode","send","getBody","createModifyFastifyPlugin","app","configBuilder","AssetDeliveryConfigBuilder","configPlugins","webiny","plugins","byType","AssetDeliveryConfigModifierPlugin","type","forEach","configPlugin","buildConfig","resolvedRequest","resolvedAsset","handlerOnRequest","createHandlerOnRequest","requestResolver","getAssetRequestResolver","resolve","error","hijack","assetResolver","getAssetResolver","assetLocale","getLocale","getTenant","deliveryRoute","createRoute","onGet","context","_","wcp","canUsePrivateFiles","decorateAssetProcessor","assetProcessor","assetAuthorizer","PrivateAuthenticatedAuthorizer","PrivateFilesAssetProcessor","outputStrategy","getAssetOutputStrategy","setOutputStrategy","getAssetProcessor","processedAsset","process","console","log","getSize","override","register","createAssetDeliveryConfig","config","decorateAssetRequestResolver","FilesAssetRequestResolver","assetRequestResolver","AliasAssetRequestResolver","documentClient","PrivateFileAssetRequestResolver","exports"],"sources":["setupAssetDelivery.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport {\n createHandlerOnRequest,\n createModifyFastifyPlugin,\n createRoute,\n ResponseHeaders\n} from \"@webiny/handler\";\nimport type { FileManagerContext } from \"~/types\";\nimport { PrivateFilesAssetProcessor } from \"./AssetDelivery/privateFiles/PrivateFilesAssetProcessor\";\nimport { PrivateAuthenticatedAuthorizer } from \"./AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer\";\nimport { PrivateFileAssetRequestResolver } from \"./AssetDelivery/privateFiles/PrivateFileAssetRequestResolver\";\nimport type { Asset, AssetRequest } from \"./index\";\nimport {\n AssetDeliveryConfigBuilder,\n AssetDeliveryConfigModifierPlugin,\n AliasAssetRequestResolver,\n FilesAssetRequestResolver,\n createAssetDeliveryConfig\n} from \"./index\";\nimport type { Reply } from \"@webiny/handler/types\";\n\nconst noCacheHeaders = ResponseHeaders.create({\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache, no-store, must-revalidate\"\n});\n\nfunction assertAssetRequestWasResolved(request: any): asserts request is AssetRequest {\n if (request === undefined) {\n throw new Error(\"Not an AssetRequest!\");\n }\n}\n\nfunction assertAssetWasResolved(asset: Asset | undefined): asserts asset is Asset {\n if (asset === undefined) {\n throw new Error(\"Not an Asset!\");\n }\n}\n\nexport interface AssetDeliveryParams {\n documentClient: DynamoDBDocument;\n}\n\nexport const setupAssetDelivery = (params: AssetDeliveryParams) => {\n const outputAsset = async (reply: Reply, asset: Asset) => {\n const assetReply = await asset.output();\n const headers = assetReply.getHeaders();\n\n // Set default headers.\n headers.set(\"x-webiny-base64-encoded\", \"true\");\n\n reply.code(assetReply.getCode());\n reply.headers(headers.getHeaders());\n return reply.send(await assetReply.getBody());\n };\n\n return [\n createModifyFastifyPlugin(app => {\n // Config builder allows config modification via plugins.\n const configBuilder = new AssetDeliveryConfigBuilder();\n\n // Apply config modifications.\n const configPlugins = app.webiny.plugins.byType<AssetDeliveryConfigModifierPlugin>(\n AssetDeliveryConfigModifierPlugin.type\n );\n\n configPlugins.forEach(configPlugin => configPlugin.buildConfig(configBuilder));\n\n let resolvedRequest: AssetRequest | undefined;\n let resolvedAsset: Asset | undefined;\n\n // Create a `HandlerOnRequest` plugin to resolve `tenant` and `locale`, and allow the system to bootstrap.\n const handlerOnRequest = createHandlerOnRequest(async (request, reply) => {\n const requestResolver = configBuilder.getAssetRequestResolver();\n resolvedRequest = await requestResolver.resolve(request);\n\n if (!resolvedRequest) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Unable to resolve the request!\" })\n .hijack();\n\n return false;\n }\n\n const assetResolver = configBuilder.getAssetResolver();\n\n resolvedAsset = await assetResolver.resolve(resolvedRequest);\n\n if (!resolvedAsset) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Asset not found!\" })\n .hijack();\n\n return false;\n }\n\n const assetLocale = resolvedAsset.getLocale();\n\n request.headers = {\n ...request.headers,\n \"x-tenant\": resolvedAsset.getTenant(),\n \"x-i18n-locale\": `default:${assetLocale};content:${assetLocale};`\n };\n\n return;\n });\n\n // Create the `Route` plugin, to handle all GET requests, and output the resolved asset.\n const deliveryRoute = createRoute<FileManagerContext>(({ onGet, context }) => {\n onGet(\n \"*\",\n async (_, reply) => {\n assertAssetRequestWasResolved(resolvedRequest);\n assertAssetWasResolved(resolvedAsset);\n\n if (context.wcp.canUsePrivateFiles()) {\n configBuilder.decorateAssetProcessor(({ assetProcessor, context }) => {\n // Currently, we only have one authorizer.\n const assetAuthorizer = new PrivateAuthenticatedAuthorizer(context);\n\n return new PrivateFilesAssetProcessor(\n context,\n assetAuthorizer,\n assetProcessor\n );\n });\n }\n\n const outputStrategy = configBuilder.getAssetOutputStrategy(\n context,\n resolvedRequest,\n resolvedAsset\n );\n\n resolvedAsset.setOutputStrategy(outputStrategy);\n\n const assetProcessor = configBuilder.getAssetProcessor(context);\n\n const processedAsset = await assetProcessor.process(\n resolvedRequest,\n resolvedAsset\n );\n\n // Get reply object (runs the output strategy under the hood).\n console.log(`Output asset (size: ${processedAsset.getSize()} bytes).`);\n return outputAsset(reply, processedAsset);\n },\n { override: true }\n );\n });\n\n app.webiny.plugins.register(handlerOnRequest, deliveryRoute);\n }),\n // Create the default configuration\n createAssetDeliveryConfig(config => {\n config.decorateAssetRequestResolver(() => {\n // This resolver works with `/files/*` requests.\n return new FilesAssetRequestResolver();\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver tries to resolve the request using aliases.\n return new AliasAssetRequestResolver(params.documentClient, assetRequestResolver);\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver works with `/private/*` requests.\n return new PrivateFileAssetRequestResolver(assetRequestResolver);\n });\n })\n ];\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.applyThreatScanning = void 0;
|
|
7
|
+
var _api = require("@webiny/api");
|
|
8
|
+
const applyThreatScanning = context => {
|
|
9
|
+
return (0, _api.decorateContext)(context, {
|
|
10
|
+
createFile: decoratee => (data, meta) => {
|
|
11
|
+
return decoratee({
|
|
12
|
+
...data,
|
|
13
|
+
tags: [...data.tags, "threatScanInProgress"]
|
|
14
|
+
}, meta);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
exports.applyThreatScanning = applyThreatScanning;
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=applyThreatScanning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_api","require","applyThreatScanning","context","decorateContext","createFile","decoratee","data","meta","tags","exports"],"sources":["applyThreatScanning.ts"],"sourcesContent":["import type { FileManagerContext } from \"~/types\";\nimport { decorateContext } from \"@webiny/api\";\n\nexport const applyThreatScanning = (context: FileManagerContext[\"fileManager\"]) => {\n return decorateContext(context, {\n createFile: decoratee => (data, meta) => {\n return decoratee(\n {\n ...data,\n tags: [...data.tags, \"threatScanInProgress\"]\n },\n meta\n );\n }\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAEO,MAAMC,mBAAmB,GAAIC,OAA0C,IAAK;EAC/E,OAAO,IAAAC,oBAAe,EAACD,OAAO,EAAE;IAC5BE,UAAU,EAAEC,SAAS,IAAI,CAACC,IAAI,EAAEC,IAAI,KAAK;MACrC,OAAOF,SAAS,CACZ;QACI,GAAGC,IAAI;QACPE,IAAI,EAAE,CAAC,GAAGF,IAAI,CAACE,IAAI,EAAE,sBAAsB;MAC/C,CAAC,EACDD,IACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAR,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,121 @@
|
|
|
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
|
+
type: String
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type FmListMeta {
|
|
26
|
+
cursor: String
|
|
27
|
+
totalCount: Int
|
|
28
|
+
hasMoreItems: Boolean
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type FmBooleanResponse {
|
|
32
|
+
data: Boolean
|
|
33
|
+
error: FmError
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type FmSettings {
|
|
37
|
+
uploadMinFileSize: Number
|
|
38
|
+
uploadMaxFileSize: Number
|
|
39
|
+
srcPrefix: String
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
input FmSettingsInput {
|
|
43
|
+
uploadMinFileSize: Number
|
|
44
|
+
uploadMaxFileSize: Number
|
|
45
|
+
srcPrefix: String
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type FmSettingsResponse {
|
|
49
|
+
data: FmSettings
|
|
50
|
+
error: FmError
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
type FmQuery {
|
|
54
|
+
version: String
|
|
55
|
+
getSettings: FmSettingsResponse
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
type FmDeleteResponse {
|
|
59
|
+
data: Boolean
|
|
60
|
+
error: FmError
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
type FmMutation {
|
|
64
|
+
install(srcPrefix: String): FmBooleanResponse
|
|
65
|
+
updateSettings(data: FmSettingsInput): FmSettingsResponse
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
input FmInstallInput {
|
|
69
|
+
srcPrefix: String!
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
extend type Query {
|
|
73
|
+
fileManager: FmQuery
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
extend type Mutation {
|
|
77
|
+
fileManager: FmMutation
|
|
78
|
+
}
|
|
79
|
+
`,
|
|
80
|
+
resolvers: {
|
|
81
|
+
Query: {
|
|
82
|
+
fileManager: _utils.emptyResolver
|
|
83
|
+
},
|
|
84
|
+
Mutation: {
|
|
85
|
+
fileManager: _utils.emptyResolver
|
|
86
|
+
},
|
|
87
|
+
FmQuery: {
|
|
88
|
+
async version(_, __, context) {
|
|
89
|
+
const {
|
|
90
|
+
i18n,
|
|
91
|
+
tenancy,
|
|
92
|
+
fileManager
|
|
93
|
+
} = context;
|
|
94
|
+
if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const version = await fileManager.getVersion();
|
|
98
|
+
return version ? "true" : null;
|
|
99
|
+
},
|
|
100
|
+
async getSettings(_, __, context) {
|
|
101
|
+
return (0, _utils.resolve)(() => context.fileManager.getSettings());
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
FmMutation: {
|
|
105
|
+
async install(_, args, context) {
|
|
106
|
+
return (0, _utils.resolve)(() => context.fileManager.install({
|
|
107
|
+
srcPrefix: args.srcPrefix
|
|
108
|
+
}));
|
|
109
|
+
},
|
|
110
|
+
async updateSettings(_, args, context) {
|
|
111
|
+
return (0, _utils.resolve)(() => context.fileManager.updateSettings(args.data));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
fileManagerGraphQL.name = "fm.graphql.base";
|
|
117
|
+
return fileManagerGraphQL;
|
|
118
|
+
};
|
|
119
|
+
exports.createBaseSchema = createBaseSchema;
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=baseSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_utils","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","exports"],"sources":["baseSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport type { 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 type: 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 const version = await fileManager.getVersion();\n return version ? \"true\" : null;\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,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,gBAAgB,GAAGA,CAAA,KAAM;EAClC,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAc;AAChC;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;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,OAAOA,CAACC,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC1B,MAAM;YAAEC,IAAI;YAAEC,OAAO;YAAET;UAAY,CAAC,GAAGO,OAAO;UAC9C,IAAI,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,IAAI,CAACF,IAAI,CAACG,gBAAgB,CAAC,CAAC,EAAE;YACzD,OAAO,IAAI;UACf;UAEA,MAAMP,OAAO,GAAG,MAAMJ,WAAW,CAACY,UAAU,CAAC,CAAC;UAC9C,OAAOR,OAAO,GAAG,MAAM,GAAG,IAAI;QAClC,CAAC;QACD,MAAMS,WAAWA,CAACR,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC9B,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACa,WAAW,CAAC,CAAC,CAAC;QAC3D;MACJ,CAAC;MACDE,UAAU,EAAE;QACR,MAAMC,OAAOA,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,CAC7D,CAAC;QACL,CAAC;QACD,MAAMC,cAAcA,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;AAAC2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { 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,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFilesTypeDefs = void 0;
|
|
7
|
+
var _renderFields = require("@webiny/api-headless-cms/utils/renderFields");
|
|
8
|
+
var _renderInputFields = require("@webiny/api-headless-cms/utils/renderInputFields");
|
|
9
|
+
var _renderListFilterFields = require("@webiny/api-headless-cms/utils/renderListFilterFields");
|
|
10
|
+
var _renderSortEnum = require("@webiny/api-headless-cms/utils/renderSortEnum");
|
|
11
|
+
const removeFieldRequiredValidation = field => {
|
|
12
|
+
if (field.validation) {
|
|
13
|
+
field.validation = field.validation.filter(validation => validation.name !== "required");
|
|
14
|
+
}
|
|
15
|
+
if (field.listValidation) {
|
|
16
|
+
field.listValidation = field.listValidation.filter(v => v.name !== "required");
|
|
17
|
+
}
|
|
18
|
+
return field;
|
|
19
|
+
};
|
|
20
|
+
const createUpdateFields = fields => {
|
|
21
|
+
return fields.reduce((collection, field) => {
|
|
22
|
+
collection.push(removeFieldRequiredValidation({
|
|
23
|
+
...field
|
|
24
|
+
}));
|
|
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
|
+
createdOn: DateTime!
|
|
76
|
+
modifiedOn: DateTime
|
|
77
|
+
savedOn: DateTime!
|
|
78
|
+
createdBy: FmCreatedBy!
|
|
79
|
+
modifiedBy: FmCreatedBy
|
|
80
|
+
savedBy: FmCreatedBy!
|
|
81
|
+
src: String
|
|
82
|
+
${fieldTypes.map(f => f.fields).join("\n")}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
${inputCreateFields.map(f => f.typeDefs).join("\n")}
|
|
86
|
+
|
|
87
|
+
input FmCreatedByInput {
|
|
88
|
+
id: ID!
|
|
89
|
+
displayName: String!
|
|
90
|
+
type: String!
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
input FmFileCreateInput {
|
|
94
|
+
id: ID!
|
|
95
|
+
createdOn: DateTime
|
|
96
|
+
modifiedOn: DateTime
|
|
97
|
+
savedOn: DateTime
|
|
98
|
+
createdBy: FmCreatedByInput
|
|
99
|
+
modifiedBy: FmCreatedByInput
|
|
100
|
+
savedBy: FmCreatedByInput
|
|
101
|
+
${inputCreateFields.map(f => f.fields).join("\n")}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
input FmFileUpdateInput {
|
|
105
|
+
createdOn: DateTime
|
|
106
|
+
modifiedOn: DateTime
|
|
107
|
+
savedOn: DateTime
|
|
108
|
+
createdBy: FmCreatedByInput
|
|
109
|
+
modifiedBy: FmCreatedByInput
|
|
110
|
+
savedBy: FmCreatedByInput
|
|
111
|
+
${inputUpdateFields.map(f => f.fields).join("\n")}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
type FmFileResponse {
|
|
115
|
+
data: FmFile
|
|
116
|
+
error: FmError
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
input FmFileListWhereInput {
|
|
120
|
+
${listFilterFieldsRender}
|
|
121
|
+
AND: [FmFileListWhereInput!]
|
|
122
|
+
OR: [FmFileListWhereInput!]
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
type FmFileListResponse {
|
|
126
|
+
data: [FmFile!]
|
|
127
|
+
error: FmError
|
|
128
|
+
meta: FmListMeta
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
enum FmFileListSorter {
|
|
132
|
+
${sortEnumRender}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
input FmTagsListWhereInput {
|
|
136
|
+
createdBy: String
|
|
137
|
+
tags_startsWith: String
|
|
138
|
+
tags_not_startsWith: String
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
type FmTag {
|
|
142
|
+
tag: String!
|
|
143
|
+
count: Number!
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
type FmTagsListResponse {
|
|
147
|
+
data: [FmTag!]
|
|
148
|
+
error: FmError
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
type FmCreateFilesResponse {
|
|
152
|
+
data: [FmFile!]
|
|
153
|
+
error: FmError
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
type FmFileModelResponse {
|
|
157
|
+
data: JSON
|
|
158
|
+
error: FmError
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
extend type FmQuery {
|
|
162
|
+
getFileModel: FmFileModelResponse!
|
|
163
|
+
getFile(id: ID!): FmFileResponse!
|
|
164
|
+
listFiles(
|
|
165
|
+
search: String
|
|
166
|
+
where: FmFileListWhereInput
|
|
167
|
+
limit: Int
|
|
168
|
+
after: String
|
|
169
|
+
sort: [FmFileListSorter!]
|
|
170
|
+
): FmFileListResponse!
|
|
171
|
+
listTags(where: FmTagsListWhereInput): FmTagsListResponse!
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
extend type FmMutation {
|
|
175
|
+
createFile(data: FmFileCreateInput!): FmFileResponse!
|
|
176
|
+
createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!
|
|
177
|
+
updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!
|
|
178
|
+
deleteFile(id: ID!): FmBooleanResponse!
|
|
179
|
+
}
|
|
180
|
+
`;
|
|
181
|
+
};
|
|
182
|
+
exports.createFilesTypeDefs = createFilesTypeDefs;
|
|
183
|
+
|
|
184
|
+
//# sourceMappingURL=createFilesTypeDefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_renderFields","require","_renderInputFields","_renderListFilterFields","_renderSortEnum","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","exports"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type { 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 createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: 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 FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\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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","ignoreList":[]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
|
|
2
|
+
import type { FileManagerContext } from "../types";
|
|
3
|
+
import type { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
|
|
4
|
+
export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<FileManagerContext>;
|
|
@@ -0,0 +1,89 @@
|
|
|
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?.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.cms.getModel("fmFile"));
|
|
34
|
+
},
|
|
35
|
+
getFile(_, args, context) {
|
|
36
|
+
return (0, _utils.resolve)(() => context.fileManager.getFile(args.id));
|
|
37
|
+
},
|
|
38
|
+
async listFiles(_, args, context) {
|
|
39
|
+
try {
|
|
40
|
+
const [data, meta] = await context.fileManager.listFiles(args);
|
|
41
|
+
return new _handlerGraphql.ListResponse(data, meta);
|
|
42
|
+
} catch (e) {
|
|
43
|
+
return new _handlerGraphql.ErrorResponse(e);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
async listTags(_, args, context) {
|
|
47
|
+
try {
|
|
48
|
+
const tags = await context.fileManager.listTags(args || {});
|
|
49
|
+
return new _handlerGraphql.Response(tags);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
return new _handlerGraphql.ErrorResponse(error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
FmMutation: {
|
|
56
|
+
async createFile(_, args, context) {
|
|
57
|
+
return (0, _utils.resolve)(() => {
|
|
58
|
+
return context.fileManager.createFile(args.data, args.meta);
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
async createFiles(_, args, context) {
|
|
62
|
+
return (0, _utils.resolve)(() => {
|
|
63
|
+
return context.fileManager.createFilesInBatch(args.data, args.meta);
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
async updateFile(_, args, context) {
|
|
67
|
+
return (0, _utils.resolve)(() => {
|
|
68
|
+
return context.fileManager.updateFile(args.id, args.data);
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
async deleteFile(_, args, context) {
|
|
72
|
+
return (0, _utils.resolve)(async () => {
|
|
73
|
+
// TODO: Ideally, this should work via a lifecycle hook; first we delete a record from DB, then from cloud storage.
|
|
74
|
+
const file = await context.fileManager.getFile(args.id);
|
|
75
|
+
return await context.fileManager.storage.delete({
|
|
76
|
+
id: file.id,
|
|
77
|
+
key: file.key
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
fileManagerGraphQL.name = "fm.graphql.files";
|
|
85
|
+
return fileManagerGraphQL;
|
|
86
|
+
};
|
|
87
|
+
exports.createFilesSchema = createFilesSchema;
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=filesSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_utils","_createFilesTypeDefs","_apiSecurity","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","cms","getModel","getFile","args","id","listFiles","data","meta","ListResponse","e","ErrorResponse","listTags","tags","Response","error","FmMutation","createFile","createFiles","createFilesInBatch","updateFile","deleteFile","storage","delete","name","exports"],"sources":["filesSchema.ts"],"sourcesContent":["import {\n ErrorResponse,\n GraphQLSchemaPlugin,\n ListResponse,\n Response\n} from \"@webiny/handler-graphql\";\nimport type { FileManagerContext, FilesListOpts } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\nimport type { CreateFilesTypeDefsParams } from \"~/graphql/createFilesTypeDefs\";\nimport { createFilesTypeDefs } 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) {\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(() => context.cms.getModel(\"fmFile\"));\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(() => {\n return context.fileManager.createFile(args.data, args.meta);\n });\n },\n async createFiles(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.createFilesInBatch(args.data, args.meta);\n });\n },\n async updateFile(_, args: any, context) {\n return resolve(() => {\n return context.fileManager.updateFile(args.id, args.data);\n });\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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","ignoreList":[]}
|