@strapi/upload 5.9.0 → 5.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/chunks/App-BJY37n6T.js +993 -0
- package/dist/admin/chunks/App-BJY37n6T.js.map +1 -0
- package/dist/admin/chunks/App-DcpAXZuK.mjs +972 -0
- package/dist/admin/chunks/App-DcpAXZuK.mjs.map +1 -0
- package/dist/admin/chunks/ConfigureTheView-Bwf5I3Vq.mjs +276 -0
- package/dist/admin/chunks/ConfigureTheView-Bwf5I3Vq.mjs.map +1 -0
- package/dist/admin/chunks/ConfigureTheView-CnUk2xYx.js +297 -0
- package/dist/admin/chunks/ConfigureTheView-CnUk2xYx.js.map +1 -0
- package/dist/admin/chunks/SettingsPage-7DUsHuJU.js +354 -0
- package/dist/admin/chunks/SettingsPage-7DUsHuJU.js.map +1 -0
- package/dist/admin/chunks/SettingsPage-DJe31MUj.mjs +332 -0
- package/dist/admin/chunks/SettingsPage-DJe31MUj.mjs.map +1 -0
- package/dist/admin/chunks/ca-Bi4qskZD.mjs +120 -0
- package/dist/{_chunks/es-CuWi2pOn.mjs.map → admin/chunks/ca-Bi4qskZD.mjs.map} +1 -1
- package/dist/admin/chunks/ca-pCOhKIn8.js +122 -0
- package/dist/{_chunks/es-DWFtw_h4.js.map → admin/chunks/ca-pCOhKIn8.js.map} +1 -1
- package/dist/admin/chunks/de-BlbX8Dl_.mjs +106 -0
- package/dist/{_chunks/pl-Cj8jChOO.mjs.map → admin/chunks/de-BlbX8Dl_.mjs.map} +1 -1
- package/dist/admin/chunks/de-DUjKLmOP.js +108 -0
- package/dist/{_chunks/de-uGb_Pkq7.js.map → admin/chunks/de-DUjKLmOP.js.map} +1 -1
- package/dist/admin/chunks/dk-C2ydE6A7.mjs +102 -0
- package/dist/{_chunks/ko-vJl9kPpn.mjs.map → admin/chunks/dk-C2ydE6A7.mjs.map} +1 -1
- package/dist/admin/chunks/dk-DSsspA0e.js +104 -0
- package/dist/{_chunks/dk-Cd8oFO-O.js.map → admin/chunks/dk-DSsspA0e.js.map} +1 -1
- package/dist/admin/chunks/en-Bw_Cb2IV.mjs +143 -0
- package/dist/{_chunks/en-oDx2Gnre.mjs.map → admin/chunks/en-Bw_Cb2IV.mjs.map} +1 -1
- package/dist/admin/chunks/en-UjETkewz.js +145 -0
- package/dist/{_chunks/en-BcOqhiNe.js.map → admin/chunks/en-UjETkewz.js.map} +1 -1
- package/dist/admin/chunks/es-CiEgbw0k.mjs +119 -0
- package/dist/{_chunks/ca-B2_I-q1t.mjs.map → admin/chunks/es-CiEgbw0k.mjs.map} +1 -1
- package/dist/admin/chunks/es-qAL8YcZz.js +121 -0
- package/dist/{_chunks/ca-BUpuZx8N.js.map → admin/chunks/es-qAL8YcZz.js.map} +1 -1
- package/dist/admin/chunks/fr-BL0Uyj6j.js +145 -0
- package/dist/admin/chunks/fr-BL0Uyj6j.js.map +1 -0
- package/dist/admin/chunks/fr-CwRt2FJu.mjs +143 -0
- package/dist/admin/chunks/fr-CwRt2FJu.mjs.map +1 -0
- package/dist/admin/chunks/he-BAmhVpfZ.js +77 -0
- package/dist/admin/chunks/he-BAmhVpfZ.js.map +1 -0
- package/dist/admin/chunks/he-DdpYNQdt.mjs +75 -0
- package/dist/admin/chunks/he-DdpYNQdt.mjs.map +1 -0
- package/dist/admin/chunks/index-DAhjYc5x.mjs +7350 -0
- package/dist/admin/chunks/index-DAhjYc5x.mjs.map +1 -0
- package/dist/admin/chunks/index-jZnIE90w.js +7407 -0
- package/dist/admin/chunks/index-jZnIE90w.js.map +1 -0
- package/dist/admin/chunks/it-Be4kgSNB.mjs +75 -0
- package/dist/admin/chunks/it-Be4kgSNB.mjs.map +1 -0
- package/dist/admin/chunks/it-_NQZYepl.js +77 -0
- package/dist/admin/chunks/it-_NQZYepl.js.map +1 -0
- package/dist/admin/chunks/ja-B75QiyXf.js +77 -0
- package/dist/admin/chunks/ja-B75QiyXf.js.map +1 -0
- package/dist/admin/chunks/ja-U1NhT0bU.mjs +75 -0
- package/dist/admin/chunks/ja-U1NhT0bU.mjs.map +1 -0
- package/dist/admin/chunks/ko-BOvUcJqv.js +107 -0
- package/dist/{_chunks/pl-esgZ7ltN.js.map → admin/chunks/ko-BOvUcJqv.js.map} +1 -1
- package/dist/admin/chunks/ko-BciqXefq.mjs +105 -0
- package/dist/{_chunks/de-A7mEKx6c.mjs.map → admin/chunks/ko-BciqXefq.mjs.map} +1 -1
- package/dist/admin/chunks/ms-B7Zl6Lm9.js +69 -0
- package/dist/admin/chunks/ms-B7Zl6Lm9.js.map +1 -0
- package/dist/admin/chunks/ms-D-8McNeg.mjs +67 -0
- package/dist/admin/chunks/ms-D-8McNeg.mjs.map +1 -0
- package/dist/admin/chunks/pl-DdUYocl5.mjs +104 -0
- package/dist/{_chunks/dk-BPfkJb9q.mjs.map → admin/chunks/pl-DdUYocl5.mjs.map} +1 -1
- package/dist/admin/chunks/pl-cYDYHOEf.js +106 -0
- package/dist/{_chunks/ko-Pzj-818C.js.map → admin/chunks/pl-cYDYHOEf.js.map} +1 -1
- package/dist/admin/chunks/pt-BR-D1u_azCM.js +77 -0
- package/dist/admin/chunks/pt-BR-D1u_azCM.js.map +1 -0
- package/dist/admin/chunks/pt-BR-Demjoq41.mjs +75 -0
- package/dist/admin/chunks/pt-BR-Demjoq41.mjs.map +1 -0
- package/dist/admin/chunks/pt-D8is2LpS.mjs +75 -0
- package/dist/admin/chunks/pt-D8is2LpS.mjs.map +1 -0
- package/dist/admin/chunks/pt-L2DZeTPL.js +77 -0
- package/dist/admin/chunks/pt-L2DZeTPL.js.map +1 -0
- package/dist/admin/chunks/ru-CGgHRTey.mjs +75 -0
- package/dist/admin/chunks/ru-CGgHRTey.mjs.map +1 -0
- package/dist/admin/chunks/ru-Uxbk_WWv.js +77 -0
- package/dist/admin/chunks/ru-Uxbk_WWv.js.map +1 -0
- package/dist/admin/chunks/sk-BlLP5HAX.js +123 -0
- package/dist/admin/chunks/sk-BlLP5HAX.js.map +1 -0
- package/dist/admin/chunks/sk-xtSwaPXq.mjs +121 -0
- package/dist/admin/chunks/sk-xtSwaPXq.mjs.map +1 -0
- package/dist/admin/chunks/th-BOpLVfmg.mjs +75 -0
- package/dist/admin/chunks/th-BOpLVfmg.mjs.map +1 -0
- package/dist/admin/chunks/th-DNxPLegS.js +77 -0
- package/dist/admin/chunks/th-DNxPLegS.js.map +1 -0
- package/dist/admin/chunks/tr-BmAPh-f1.mjs +121 -0
- package/dist/admin/chunks/tr-BmAPh-f1.mjs.map +1 -0
- package/dist/admin/chunks/tr-DWgXG75k.js +123 -0
- package/dist/admin/chunks/tr-DWgXG75k.js.map +1 -0
- package/dist/admin/chunks/uk-CMvuEdG-.mjs +72 -0
- package/dist/admin/chunks/uk-CMvuEdG-.mjs.map +1 -0
- package/dist/admin/chunks/uk-D1_rBLhp.js +74 -0
- package/dist/admin/chunks/uk-D1_rBLhp.js.map +1 -0
- package/dist/admin/chunks/zh-BIl0qgBy.mjs +128 -0
- package/dist/admin/chunks/zh-BIl0qgBy.mjs.map +1 -0
- package/dist/admin/chunks/zh-Hans-B1GabBRx.mjs +151 -0
- package/dist/{_chunks/zh-Hans-Cpmhg8uH.mjs.map → admin/chunks/zh-Hans-B1GabBRx.mjs.map} +1 -1
- package/dist/admin/chunks/zh-Hans-B8qxMQIl.js +153 -0
- package/dist/{_chunks/zh-Hans-k_xAc6nm.js.map → admin/chunks/zh-Hans-B8qxMQIl.js.map} +1 -1
- package/dist/admin/chunks/zh-MemsyMV6.js +130 -0
- package/dist/admin/chunks/zh-MemsyMV6.js.map +1 -0
- package/dist/admin/index.js +29 -6
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +24 -8
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +2 -5
- package/dist/admin/src/hooks/useRemoveAsset.d.ts +6 -64
- package/dist/server/chunks/graphql-BTbIs_EU.js +116 -0
- package/dist/server/chunks/graphql-BTbIs_EU.js.map +1 -0
- package/dist/server/chunks/graphql-CCPJbCFt.mjs +114 -0
- package/dist/server/chunks/graphql-CCPJbCFt.mjs.map +1 -0
- package/dist/server/chunks/index-BU4qzb-i.mjs +3161 -0
- package/dist/server/chunks/index-BU4qzb-i.mjs.map +1 -0
- package/dist/server/chunks/index-BkUy20d9.js +3164 -0
- package/dist/server/chunks/index-BkUy20d9.js.map +1 -0
- package/dist/server/index.js +19 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +14 -4
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/validation/admin/folder-file.d.ts.map +1 -1
- package/dist/shared/contracts/configuration.d.ts +1 -1
- package/dist/shared/contracts/settings.d.ts +1 -1
- package/package.json +13 -9
- package/dist/_chunks/App-BLY6RlTm.mjs +0 -844
- package/dist/_chunks/App-BLY6RlTm.mjs.map +0 -1
- package/dist/_chunks/App-DNScJAhi.js +0 -864
- package/dist/_chunks/App-DNScJAhi.js.map +0 -1
- package/dist/_chunks/ConfigureTheView-CJbBTq0t.js +0 -252
- package/dist/_chunks/ConfigureTheView-CJbBTq0t.js.map +0 -1
- package/dist/_chunks/ConfigureTheView-Dk28Sh2k.mjs +0 -230
- package/dist/_chunks/ConfigureTheView-Dk28Sh2k.mjs.map +0 -1
- package/dist/_chunks/SettingsPage-CrvbJCia.js +0 -285
- package/dist/_chunks/SettingsPage-CrvbJCia.js.map +0 -1
- package/dist/_chunks/SettingsPage-DjNyJDaf.mjs +0 -264
- package/dist/_chunks/SettingsPage-DjNyJDaf.mjs.map +0 -1
- package/dist/_chunks/ca-B2_I-q1t.mjs +0 -121
- package/dist/_chunks/ca-BUpuZx8N.js +0 -121
- package/dist/_chunks/de-A7mEKx6c.mjs +0 -107
- package/dist/_chunks/de-uGb_Pkq7.js +0 -107
- package/dist/_chunks/dk-BPfkJb9q.mjs +0 -103
- package/dist/_chunks/dk-Cd8oFO-O.js +0 -103
- package/dist/_chunks/en-BcOqhiNe.js +0 -144
- package/dist/_chunks/en-oDx2Gnre.mjs +0 -144
- package/dist/_chunks/es-CuWi2pOn.mjs +0 -120
- package/dist/_chunks/es-DWFtw_h4.js +0 -120
- package/dist/_chunks/fr-BN6ndmWf.mjs +0 -144
- package/dist/_chunks/fr-BN6ndmWf.mjs.map +0 -1
- package/dist/_chunks/fr-D2bop66d.js +0 -144
- package/dist/_chunks/fr-D2bop66d.js.map +0 -1
- package/dist/_chunks/graphql-DMPTPlvx.mjs +0 -71
- package/dist/_chunks/graphql-DMPTPlvx.mjs.map +0 -1
- package/dist/_chunks/graphql-QF5Y36Qj.js +0 -71
- package/dist/_chunks/graphql-QF5Y36Qj.js.map +0 -1
- package/dist/_chunks/he-BpxHjaZg.js +0 -76
- package/dist/_chunks/he-BpxHjaZg.js.map +0 -1
- package/dist/_chunks/he-C9ZOXBB-.mjs +0 -76
- package/dist/_chunks/he-C9ZOXBB-.mjs.map +0 -1
- package/dist/_chunks/index-BfAVIhAL.js +0 -6144
- package/dist/_chunks/index-BfAVIhAL.js.map +0 -1
- package/dist/_chunks/index-D57iKFts.js +0 -2721
- package/dist/_chunks/index-D57iKFts.js.map +0 -1
- package/dist/_chunks/index-DH9hUSe3.mjs +0 -6119
- package/dist/_chunks/index-DH9hUSe3.mjs.map +0 -1
- package/dist/_chunks/index-sOlgMDiZ.mjs +0 -2711
- package/dist/_chunks/index-sOlgMDiZ.mjs.map +0 -1
- package/dist/_chunks/it-B7rmoZNx.mjs +0 -76
- package/dist/_chunks/it-B7rmoZNx.mjs.map +0 -1
- package/dist/_chunks/it-BKCWXl8t.js +0 -76
- package/dist/_chunks/it-BKCWXl8t.js.map +0 -1
- package/dist/_chunks/ja-DlaJTi_3.mjs +0 -76
- package/dist/_chunks/ja-DlaJTi_3.mjs.map +0 -1
- package/dist/_chunks/ja-ajHzIJz6.js +0 -76
- package/dist/_chunks/ja-ajHzIJz6.js.map +0 -1
- package/dist/_chunks/ko-Pzj-818C.js +0 -106
- package/dist/_chunks/ko-vJl9kPpn.mjs +0 -106
- package/dist/_chunks/ms-CqwG8v8l.mjs +0 -68
- package/dist/_chunks/ms-CqwG8v8l.mjs.map +0 -1
- package/dist/_chunks/ms-h3gjldBy.js +0 -68
- package/dist/_chunks/ms-h3gjldBy.js.map +0 -1
- package/dist/_chunks/pl-Cj8jChOO.mjs +0 -105
- package/dist/_chunks/pl-esgZ7ltN.js +0 -105
- package/dist/_chunks/pt-BR-B4LJHJIp.mjs +0 -76
- package/dist/_chunks/pt-BR-B4LJHJIp.mjs.map +0 -1
- package/dist/_chunks/pt-BR-Cazr7Z5I.js +0 -76
- package/dist/_chunks/pt-BR-Cazr7Z5I.js.map +0 -1
- package/dist/_chunks/pt-CNOOM_7x.mjs +0 -76
- package/dist/_chunks/pt-CNOOM_7x.mjs.map +0 -1
- package/dist/_chunks/pt-cbUnkHM5.js +0 -76
- package/dist/_chunks/pt-cbUnkHM5.js.map +0 -1
- package/dist/_chunks/ru-DqglvSUC.mjs +0 -76
- package/dist/_chunks/ru-DqglvSUC.mjs.map +0 -1
- package/dist/_chunks/ru-H6MzFUxp.js +0 -76
- package/dist/_chunks/ru-H6MzFUxp.js.map +0 -1
- package/dist/_chunks/sk-CZxC4dFY.js +0 -122
- package/dist/_chunks/sk-CZxC4dFY.js.map +0 -1
- package/dist/_chunks/sk-Dgpb3lnz.mjs +0 -122
- package/dist/_chunks/sk-Dgpb3lnz.mjs.map +0 -1
- package/dist/_chunks/th-C6unJZ8j.js +0 -76
- package/dist/_chunks/th-C6unJZ8j.js.map +0 -1
- package/dist/_chunks/th-DRfzuiFf.mjs +0 -76
- package/dist/_chunks/th-DRfzuiFf.mjs.map +0 -1
- package/dist/_chunks/tr--GzWXE_A.mjs +0 -122
- package/dist/_chunks/tr--GzWXE_A.mjs.map +0 -1
- package/dist/_chunks/tr-CY6AwX50.js +0 -122
- package/dist/_chunks/tr-CY6AwX50.js.map +0 -1
- package/dist/_chunks/uk-BniyNsD4.js +0 -73
- package/dist/_chunks/uk-BniyNsD4.js.map +0 -1
- package/dist/_chunks/uk-DVMT2Piq.mjs +0 -73
- package/dist/_chunks/uk-DVMT2Piq.mjs.map +0 -1
- package/dist/_chunks/zh-CsZw0IpM.js +0 -129
- package/dist/_chunks/zh-CsZw0IpM.js.map +0 -1
- package/dist/_chunks/zh-HOnih0is.mjs +0 -129
- package/dist/_chunks/zh-HOnih0is.mjs.map +0 -1
- package/dist/_chunks/zh-Hans-Cpmhg8uH.mjs +0 -152
- package/dist/_chunks/zh-Hans-k_xAc6nm.js +0 -152
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-BkUy20d9.js');
|
|
4
|
+
require('lodash');
|
|
5
|
+
require('@strapi/utils');
|
|
6
|
+
require('koa-range');
|
|
7
|
+
require('koa-static');
|
|
8
|
+
require('lodash/fp');
|
|
9
|
+
require('os');
|
|
10
|
+
require('path');
|
|
11
|
+
require('crypto');
|
|
12
|
+
require('fs');
|
|
13
|
+
require('fs-extra');
|
|
14
|
+
require('mime-types');
|
|
15
|
+
require('sharp');
|
|
16
|
+
require('date-fns');
|
|
17
|
+
|
|
18
|
+
const FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';
|
|
19
|
+
const installGraphqlExtension = ({ strapi })=>{
|
|
20
|
+
const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');
|
|
21
|
+
const { service: getUploadService } = strapi.plugin('upload');
|
|
22
|
+
const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);
|
|
23
|
+
if (!isShadowCRUDEnabled) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();
|
|
27
|
+
getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();
|
|
28
|
+
const { getTypeName } = getGraphQLService('utils').naming;
|
|
29
|
+
const fileModel = strapi.getModel(index.FILE_MODEL_UID);
|
|
30
|
+
const fileTypeName = getTypeName(fileModel);
|
|
31
|
+
/**
|
|
32
|
+
* Register Upload's types, queries & mutations to the content API using the GraphQL extension API
|
|
33
|
+
*/ getGraphQLService('extension').use(({ nexus })=>{
|
|
34
|
+
const { inputObjectType, extendType, nonNull } = nexus;
|
|
35
|
+
// Represents the input data payload for the file's information
|
|
36
|
+
const fileInfoInputType = inputObjectType({
|
|
37
|
+
name: FILE_INFO_INPUT_TYPE_NAME,
|
|
38
|
+
definition (t) {
|
|
39
|
+
t.string('name');
|
|
40
|
+
t.string('alternativeText');
|
|
41
|
+
t.string('caption');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const mutations = extendType({
|
|
45
|
+
type: 'Mutation',
|
|
46
|
+
definition (t) {
|
|
47
|
+
/**
|
|
48
|
+
* Update some information for a given file
|
|
49
|
+
*/ t.field('updateUploadFile', {
|
|
50
|
+
type: nonNull(fileTypeName),
|
|
51
|
+
args: {
|
|
52
|
+
id: nonNull('ID'),
|
|
53
|
+
info: FILE_INFO_INPUT_TYPE_NAME
|
|
54
|
+
},
|
|
55
|
+
async resolve (parent, args) {
|
|
56
|
+
const { id, info } = args;
|
|
57
|
+
return getUploadService('upload').updateFileInfo(id, info);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Delete & remove a given file
|
|
62
|
+
*/ t.field('deleteUploadFile', {
|
|
63
|
+
type: fileTypeName,
|
|
64
|
+
args: {
|
|
65
|
+
id: nonNull('ID')
|
|
66
|
+
},
|
|
67
|
+
async resolve (parent, args) {
|
|
68
|
+
const { id } = args;
|
|
69
|
+
const file = await getUploadService('upload').findOne(id);
|
|
70
|
+
if (!file) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return getUploadService('upload').remove(file);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
types: [
|
|
80
|
+
fileInfoInputType,
|
|
81
|
+
mutations
|
|
82
|
+
],
|
|
83
|
+
resolversConfig: {
|
|
84
|
+
// Use custom scopes for the upload file CRUD operations
|
|
85
|
+
'Query.uploadFiles': {
|
|
86
|
+
auth: {
|
|
87
|
+
scope: 'plugin::upload.content-api.find'
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
'Query.uploadFiles_connection': {
|
|
91
|
+
auth: {
|
|
92
|
+
scope: 'plugin::upload.content-api.find'
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
'Query.uploadFile': {
|
|
96
|
+
auth: {
|
|
97
|
+
scope: 'plugin::upload.content-api.findOne'
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
'Mutation.updateUploadFile': {
|
|
101
|
+
auth: {
|
|
102
|
+
scope: 'plugin::upload.content-api.upload'
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
'Mutation.deleteUploadFile': {
|
|
106
|
+
auth: {
|
|
107
|
+
scope: 'plugin::upload.content-api.destroy'
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
exports.installGraphqlExtension = installGraphqlExtension;
|
|
116
|
+
//# sourceMappingURL=graphql-BTbIs_EU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-BTbIs_EU.js","sources":["../../../server/src/graphql.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { FILE_MODEL_UID } from './constants';\n\nconst FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';\n\nexport const installGraphqlExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');\n const { service: getUploadService } = strapi.plugin('upload');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();\n getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();\n\n const { getTypeName } = getGraphQLService('utils').naming;\n\n const fileModel = strapi.getModel(FILE_MODEL_UID);\n const fileTypeName = getTypeName(fileModel);\n /**\n * Register Upload's types, queries & mutations to the content API using the GraphQL extension API\n */\n getGraphQLService('extension').use(({ nexus }: { nexus: any }) => {\n const { inputObjectType, extendType, nonNull } = nexus;\n\n // Represents the input data payload for the file's information\n const fileInfoInputType = inputObjectType({\n name: FILE_INFO_INPUT_TYPE_NAME,\n\n definition(t: any) {\n t.string('name');\n t.string('alternativeText');\n t.string('caption');\n },\n });\n\n const mutations = extendType({\n type: 'Mutation',\n\n definition(t: any) {\n /**\n * Update some information for a given file\n */\n t.field('updateUploadFile', {\n type: nonNull(fileTypeName),\n\n args: {\n id: nonNull('ID'),\n info: FILE_INFO_INPUT_TYPE_NAME,\n },\n\n async resolve(parent: unknown, args: { id: number; info: any }) {\n const { id, info } = args;\n\n return getUploadService('upload').updateFileInfo(id, info);\n },\n });\n\n /**\n * Delete & remove a given file\n */\n t.field('deleteUploadFile', {\n type: fileTypeName,\n\n args: {\n id: nonNull('ID'),\n },\n\n async resolve(parent: unknown, args: { id: number }) {\n const { id } = args;\n\n const file = await getUploadService('upload').findOne(id);\n\n if (!file) {\n return null;\n }\n\n return getUploadService('upload').remove(file);\n },\n });\n },\n });\n\n return {\n types: [fileInfoInputType, mutations],\n resolversConfig: {\n // Use custom scopes for the upload file CRUD operations\n 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFiles_connection': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } },\n 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } },\n 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } },\n },\n };\n });\n};\n"],"names":["FILE_INFO_INPUT_TYPE_NAME","installGraphqlExtension","strapi","service","getGraphQLService","config","graphQLConfig","plugin","getUploadService","isShadowCRUDEnabled","shadowCRUD","disable","disableMutations","getTypeName","naming","fileModel","getModel","FILE_MODEL_UID","fileTypeName","use","nexus","inputObjectType","extendType","nonNull","fileInfoInputType","name","definition","t","string","mutations","type","field","args","id","info","resolve","parent","updateFileInfo","file","findOne","remove","types","resolversConfig","auth","scope"],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { F as FILE_MODEL_UID } from './index-BU4qzb-i.mjs';
|
|
2
|
+
import 'lodash';
|
|
3
|
+
import '@strapi/utils';
|
|
4
|
+
import 'koa-range';
|
|
5
|
+
import 'koa-static';
|
|
6
|
+
import 'lodash/fp';
|
|
7
|
+
import 'os';
|
|
8
|
+
import 'path';
|
|
9
|
+
import 'crypto';
|
|
10
|
+
import 'fs';
|
|
11
|
+
import 'fs-extra';
|
|
12
|
+
import 'mime-types';
|
|
13
|
+
import 'sharp';
|
|
14
|
+
import 'date-fns';
|
|
15
|
+
|
|
16
|
+
const FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';
|
|
17
|
+
const installGraphqlExtension = ({ strapi })=>{
|
|
18
|
+
const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');
|
|
19
|
+
const { service: getUploadService } = strapi.plugin('upload');
|
|
20
|
+
const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);
|
|
21
|
+
if (!isShadowCRUDEnabled) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();
|
|
25
|
+
getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();
|
|
26
|
+
const { getTypeName } = getGraphQLService('utils').naming;
|
|
27
|
+
const fileModel = strapi.getModel(FILE_MODEL_UID);
|
|
28
|
+
const fileTypeName = getTypeName(fileModel);
|
|
29
|
+
/**
|
|
30
|
+
* Register Upload's types, queries & mutations to the content API using the GraphQL extension API
|
|
31
|
+
*/ getGraphQLService('extension').use(({ nexus })=>{
|
|
32
|
+
const { inputObjectType, extendType, nonNull } = nexus;
|
|
33
|
+
// Represents the input data payload for the file's information
|
|
34
|
+
const fileInfoInputType = inputObjectType({
|
|
35
|
+
name: FILE_INFO_INPUT_TYPE_NAME,
|
|
36
|
+
definition (t) {
|
|
37
|
+
t.string('name');
|
|
38
|
+
t.string('alternativeText');
|
|
39
|
+
t.string('caption');
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const mutations = extendType({
|
|
43
|
+
type: 'Mutation',
|
|
44
|
+
definition (t) {
|
|
45
|
+
/**
|
|
46
|
+
* Update some information for a given file
|
|
47
|
+
*/ t.field('updateUploadFile', {
|
|
48
|
+
type: nonNull(fileTypeName),
|
|
49
|
+
args: {
|
|
50
|
+
id: nonNull('ID'),
|
|
51
|
+
info: FILE_INFO_INPUT_TYPE_NAME
|
|
52
|
+
},
|
|
53
|
+
async resolve (parent, args) {
|
|
54
|
+
const { id, info } = args;
|
|
55
|
+
return getUploadService('upload').updateFileInfo(id, info);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Delete & remove a given file
|
|
60
|
+
*/ t.field('deleteUploadFile', {
|
|
61
|
+
type: fileTypeName,
|
|
62
|
+
args: {
|
|
63
|
+
id: nonNull('ID')
|
|
64
|
+
},
|
|
65
|
+
async resolve (parent, args) {
|
|
66
|
+
const { id } = args;
|
|
67
|
+
const file = await getUploadService('upload').findOne(id);
|
|
68
|
+
if (!file) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return getUploadService('upload').remove(file);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
types: [
|
|
78
|
+
fileInfoInputType,
|
|
79
|
+
mutations
|
|
80
|
+
],
|
|
81
|
+
resolversConfig: {
|
|
82
|
+
// Use custom scopes for the upload file CRUD operations
|
|
83
|
+
'Query.uploadFiles': {
|
|
84
|
+
auth: {
|
|
85
|
+
scope: 'plugin::upload.content-api.find'
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
'Query.uploadFiles_connection': {
|
|
89
|
+
auth: {
|
|
90
|
+
scope: 'plugin::upload.content-api.find'
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
'Query.uploadFile': {
|
|
94
|
+
auth: {
|
|
95
|
+
scope: 'plugin::upload.content-api.findOne'
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
'Mutation.updateUploadFile': {
|
|
99
|
+
auth: {
|
|
100
|
+
scope: 'plugin::upload.content-api.upload'
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
'Mutation.deleteUploadFile': {
|
|
104
|
+
auth: {
|
|
105
|
+
scope: 'plugin::upload.content-api.destroy'
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export { installGraphqlExtension };
|
|
114
|
+
//# sourceMappingURL=graphql-CCPJbCFt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-CCPJbCFt.mjs","sources":["../../../server/src/graphql.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { FILE_MODEL_UID } from './constants';\n\nconst FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';\n\nexport const installGraphqlExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');\n const { service: getUploadService } = strapi.plugin('upload');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();\n getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();\n\n const { getTypeName } = getGraphQLService('utils').naming;\n\n const fileModel = strapi.getModel(FILE_MODEL_UID);\n const fileTypeName = getTypeName(fileModel);\n /**\n * Register Upload's types, queries & mutations to the content API using the GraphQL extension API\n */\n getGraphQLService('extension').use(({ nexus }: { nexus: any }) => {\n const { inputObjectType, extendType, nonNull } = nexus;\n\n // Represents the input data payload for the file's information\n const fileInfoInputType = inputObjectType({\n name: FILE_INFO_INPUT_TYPE_NAME,\n\n definition(t: any) {\n t.string('name');\n t.string('alternativeText');\n t.string('caption');\n },\n });\n\n const mutations = extendType({\n type: 'Mutation',\n\n definition(t: any) {\n /**\n * Update some information for a given file\n */\n t.field('updateUploadFile', {\n type: nonNull(fileTypeName),\n\n args: {\n id: nonNull('ID'),\n info: FILE_INFO_INPUT_TYPE_NAME,\n },\n\n async resolve(parent: unknown, args: { id: number; info: any }) {\n const { id, info } = args;\n\n return getUploadService('upload').updateFileInfo(id, info);\n },\n });\n\n /**\n * Delete & remove a given file\n */\n t.field('deleteUploadFile', {\n type: fileTypeName,\n\n args: {\n id: nonNull('ID'),\n },\n\n async resolve(parent: unknown, args: { id: number }) {\n const { id } = args;\n\n const file = await getUploadService('upload').findOne(id);\n\n if (!file) {\n return null;\n }\n\n return getUploadService('upload').remove(file);\n },\n });\n },\n });\n\n return {\n types: [fileInfoInputType, mutations],\n resolversConfig: {\n // Use custom scopes for the upload file CRUD operations\n 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFiles_connection': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } },\n 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } },\n 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } },\n },\n };\n });\n};\n"],"names":["FILE_INFO_INPUT_TYPE_NAME","installGraphqlExtension","strapi","service","getGraphQLService","config","graphQLConfig","plugin","getUploadService","isShadowCRUDEnabled","shadowCRUD","disable","disableMutations","getTypeName","naming","fileModel","getModel","FILE_MODEL_UID","fileTypeName","use","nexus","inputObjectType","extendType","nonNull","fileInfoInputType","name","definition","t","string","mutations","type","field","args","id","info","resolve","parent","updateFileInfo","file","findOne","remove","types","resolversConfig","auth","scope"],"mappings":"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"}
|