@strapi/upload 5.0.2 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{index-4dDBcT2s.js → index-BwMdH-eI.js} +17 -9
- package/dist/_chunks/index-BwMdH-eI.js.map +1 -0
- package/dist/_chunks/{index-POwhla6y.js → index-C5E7jC83.js} +7 -4
- package/dist/_chunks/index-C5E7jC83.js.map +1 -0
- package/dist/_chunks/{index-p2ufusDD.mjs → index-CCEHGHWW.mjs} +7 -4
- package/dist/_chunks/index-CCEHGHWW.mjs.map +1 -0
- package/dist/_chunks/{index-D0UI77ZE.mjs → index-Cw3NiaYP.mjs} +2 -2
- package/dist/_chunks/{index-D0UI77ZE.mjs.map → index-Cw3NiaYP.mjs.map} +1 -1
- package/dist/_chunks/{index-CZ3rXZbR.mjs → index-Cze6kL5_.mjs} +2 -2
- package/dist/_chunks/{index-CZ3rXZbR.mjs.map → index-Cze6kL5_.mjs.map} +1 -1
- package/dist/_chunks/{index-BWoTIP6T.js → index-DK1he91f.js} +2 -2
- package/dist/_chunks/{index-BWoTIP6T.js.map → index-DK1he91f.js.map} +1 -1
- package/dist/_chunks/{index-DKKpjnQN.mjs → index-DzHgwpS9.mjs} +17 -9
- package/dist/_chunks/index-DzHgwpS9.mjs.map +1 -0
- package/dist/_chunks/{index-DPWou2fL.js → index-ox-PAURv.js} +2 -2
- package/dist/_chunks/{index-DPWou2fL.js.map → index-ox-PAURv.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/shared/contracts/configuration.d.ts +44 -0
- package/dist/shared/contracts/files.d.ts +167 -0
- package/dist/shared/contracts/folders.d.ts +141 -0
- package/dist/shared/contracts/settings.d.ts +41 -0
- package/package.json +6 -6
- package/dist/_chunks/index-4dDBcT2s.js.map +0 -1
- package/dist/_chunks/index-DKKpjnQN.mjs.map +0 -1
- package/dist/_chunks/index-POwhla6y.js.map +0 -1
- package/dist/_chunks/index-p2ufusDD.mjs.map +0 -1
|
@@ -8,7 +8,7 @@ const icons = require("@strapi/icons");
|
|
|
8
8
|
const isEqual = require("lodash/isEqual");
|
|
9
9
|
const reactIntl = require("react-intl");
|
|
10
10
|
const reactQuery = require("react-query");
|
|
11
|
-
const index = require("./index-
|
|
11
|
+
const index = require("./index-BwMdH-eI.js");
|
|
12
12
|
require("byte-size");
|
|
13
13
|
require("date-fns");
|
|
14
14
|
require("qs");
|
|
@@ -263,4 +263,4 @@ const SettingsPage = () => {
|
|
|
263
263
|
const ProtectedSettingsPage = () => /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.settings, children: /* @__PURE__ */ jsxRuntime.jsx(SettingsPage, {}) });
|
|
264
264
|
exports.SettingsPage = SettingsPage;
|
|
265
265
|
exports.default = ProtectedSettingsPage;
|
|
266
|
-
//# sourceMappingURL=index-
|
|
266
|
+
//# sourceMappingURL=index-ox-PAURv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-DPWou2fL.js","sources":["../../admin/src/pages/SettingsPage/init.js","../../admin/src/pages/SettingsPage/reducer.js","../../admin/src/pages/SettingsPage/index.jsx"],"sourcesContent":["const init = (initialState) => {\n return initialState;\n};\n\nexport default init;\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nconst initialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport default reducer;\nexport { initialState };\n","import React, { useReducer } from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport init from './init';\nimport reducer, { initialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmiting } = useMutation({\n async mutationFn(body) {\n return put('/upload/settings', body);\n },\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n });\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData);\n };\n\n const handleChange = ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmiting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nconst ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nexport default ProtectedSettingsPage;\n"],"names":["initialState","produce","set","useIntl","useNotification","useFetchClient","useReducer","useQuery","data","React","isEqual","useMutation","jsx","Page","jsxs","getTrad","Layouts","Button","Check","Flex","Box","Typography","Grid","Field","Toggle","PERMISSIONS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-ox-PAURv.js","sources":["../../admin/src/pages/SettingsPage/init.js","../../admin/src/pages/SettingsPage/reducer.js","../../admin/src/pages/SettingsPage/index.jsx"],"sourcesContent":["const init = (initialState) => {\n return initialState;\n};\n\nexport default init;\n","import { produce } from 'immer';\nimport set from 'lodash/set';\n\nconst initialState = {\n initialData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n modifiedData: {\n responsiveDimensions: true,\n sizeOptimization: true,\n autoOrientation: false,\n videoPreview: false,\n },\n};\n\nconst reducer = (state, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (drafState) => {\n switch (action.type) {\n case 'GET_DATA_SUCCEEDED': {\n drafState.initialData = action.data;\n drafState.modifiedData = action.data;\n break;\n }\n case 'ON_CHANGE': {\n set(drafState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n default:\n return state;\n }\n });\n\nexport default reducer;\nexport { initialState };\n","import React, { useReducer } from 'react';\n\nimport { Page, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport init from './init';\nimport reducer, { initialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useQuery({\n queryKey: ['upload', 'settings'],\n async queryFn() {\n const {\n data: { data },\n } = await get('/upload/settings');\n\n return data;\n },\n });\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmiting } = useMutation({\n async mutationFn(body) {\n return put('/upload/settings', body);\n },\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n });\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData);\n };\n\n const handleChange = ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Libray',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmiting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={12}>\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nconst ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n\nexport default ProtectedSettingsPage;\n"],"names":["initialState","produce","set","useIntl","useNotification","useFetchClient","useReducer","useQuery","data","React","isEqual","useMutation","jsx","Page","jsxs","getTrad","Layouts","Button","Check","Flex","Box","Typography","Grid","Field","Toggle","PERMISSIONS"],"mappings":"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"}
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Used to store the media library configuration.
|
|
3
|
+
* E.g the page size, the sort.
|
|
4
|
+
*/
|
|
5
|
+
import { errors } from '@strapi/utils';
|
|
6
|
+
import { Utils } from '@strapi/types';
|
|
7
|
+
type SortOrder = 'ASC' | 'DESC';
|
|
8
|
+
type SortKey = 'createdAt' | 'name' | 'updatedAt';
|
|
9
|
+
export interface Configuration {
|
|
10
|
+
pageSize: number;
|
|
11
|
+
sort: `${SortKey}:${SortOrder}`;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* GET /upload/configuration
|
|
15
|
+
*
|
|
16
|
+
* Return the configuration for the media files.
|
|
17
|
+
*/
|
|
18
|
+
export declare namespace GetConfiguration {
|
|
19
|
+
interface Request {
|
|
20
|
+
query?: {};
|
|
21
|
+
}
|
|
22
|
+
interface Response {
|
|
23
|
+
data: {
|
|
24
|
+
data: Configuration;
|
|
25
|
+
};
|
|
26
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* PUT /upload/configuration
|
|
31
|
+
*
|
|
32
|
+
* Update the configuration
|
|
33
|
+
*/
|
|
34
|
+
export declare namespace UpdateConfiguration {
|
|
35
|
+
interface Request {
|
|
36
|
+
body: Configuration;
|
|
37
|
+
}
|
|
38
|
+
type Response = Utils.OneOf<{
|
|
39
|
+
data: Configuration;
|
|
40
|
+
}, {
|
|
41
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
type SortOrder = 'ASC' | 'DESC';
|
|
3
|
+
type SortKey = 'createdAt' | 'name';
|
|
4
|
+
export interface File {
|
|
5
|
+
id: number;
|
|
6
|
+
name: string;
|
|
7
|
+
alternativeText?: string | null;
|
|
8
|
+
caption?: string | null;
|
|
9
|
+
width?: number;
|
|
10
|
+
height?: number;
|
|
11
|
+
formats?: Record<string, unknown>;
|
|
12
|
+
hash: string;
|
|
13
|
+
ext?: string;
|
|
14
|
+
mime?: string;
|
|
15
|
+
size?: number;
|
|
16
|
+
sizeInBytes?: number;
|
|
17
|
+
url?: string;
|
|
18
|
+
previewUrl?: string;
|
|
19
|
+
path?: string | null;
|
|
20
|
+
provider?: string;
|
|
21
|
+
provider_metadata?: Record<string, unknown>;
|
|
22
|
+
isUrlSigned?: boolean;
|
|
23
|
+
folder?: number;
|
|
24
|
+
folderPath?: string;
|
|
25
|
+
related?: {
|
|
26
|
+
id: string | number;
|
|
27
|
+
__type: string;
|
|
28
|
+
__pivot: {
|
|
29
|
+
field: string;
|
|
30
|
+
};
|
|
31
|
+
}[];
|
|
32
|
+
createdAt?: string;
|
|
33
|
+
updatedAt?: string;
|
|
34
|
+
createdBy?: number;
|
|
35
|
+
updatedBy?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* GET /upload/files - Get files
|
|
39
|
+
*/
|
|
40
|
+
export interface RawFile extends Blob {
|
|
41
|
+
size: number;
|
|
42
|
+
lastModified: number;
|
|
43
|
+
name: string;
|
|
44
|
+
type: string;
|
|
45
|
+
}
|
|
46
|
+
export interface Pagination {
|
|
47
|
+
page: number;
|
|
48
|
+
pageSize: number;
|
|
49
|
+
pageCount: number;
|
|
50
|
+
total: number;
|
|
51
|
+
}
|
|
52
|
+
export declare namespace GetFiles {
|
|
53
|
+
interface Request {
|
|
54
|
+
body: {};
|
|
55
|
+
query: {
|
|
56
|
+
page?: string;
|
|
57
|
+
pageSize?: string;
|
|
58
|
+
folder: number | null;
|
|
59
|
+
sort?: `${SortKey}:${SortOrder}`;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
interface Response {
|
|
63
|
+
data: {
|
|
64
|
+
results: File[];
|
|
65
|
+
pagination: Pagination;
|
|
66
|
+
};
|
|
67
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* GET /upload/files/:id - Get specific file
|
|
72
|
+
*/
|
|
73
|
+
export declare namespace GetFile {
|
|
74
|
+
interface Request {
|
|
75
|
+
params: {
|
|
76
|
+
id: number;
|
|
77
|
+
};
|
|
78
|
+
query: {};
|
|
79
|
+
}
|
|
80
|
+
interface Response {
|
|
81
|
+
data: File;
|
|
82
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* POST /upload/actions/bulk-delete - Delete Files
|
|
87
|
+
*/
|
|
88
|
+
export declare namespace BulkDeleteFiles {
|
|
89
|
+
interface Request {
|
|
90
|
+
body: {
|
|
91
|
+
fileIds: number[];
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
interface Response {
|
|
95
|
+
data: {
|
|
96
|
+
data: {
|
|
97
|
+
files: File[];
|
|
98
|
+
folders: [];
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* POST /upload/actions/bulk-move - Move Files
|
|
106
|
+
*/
|
|
107
|
+
export declare namespace BulkMoveFiles {
|
|
108
|
+
interface Request {
|
|
109
|
+
body: {
|
|
110
|
+
fileIds: number[];
|
|
111
|
+
destinationFolderId: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
interface Response {
|
|
115
|
+
data: {
|
|
116
|
+
data: {
|
|
117
|
+
files: File[];
|
|
118
|
+
folders: [];
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* DELETE /upload/files/:id - Delete a specific asset
|
|
126
|
+
*/
|
|
127
|
+
export declare namespace DeleteFile {
|
|
128
|
+
interface Request {
|
|
129
|
+
params: {
|
|
130
|
+
id: number;
|
|
131
|
+
};
|
|
132
|
+
query: {};
|
|
133
|
+
}
|
|
134
|
+
interface Response {
|
|
135
|
+
data: File;
|
|
136
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* POST /upload - Create a file
|
|
141
|
+
*/
|
|
142
|
+
export declare namespace CreateFile {
|
|
143
|
+
interface Request {
|
|
144
|
+
body: FormData;
|
|
145
|
+
files: File[];
|
|
146
|
+
}
|
|
147
|
+
interface Response {
|
|
148
|
+
data: File[];
|
|
149
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* POST /upload?id=:id - Update asset
|
|
154
|
+
*/
|
|
155
|
+
export declare namespace UpdateFile {
|
|
156
|
+
interface Request {
|
|
157
|
+
body: FormData;
|
|
158
|
+
params: {
|
|
159
|
+
id: number;
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
interface Response {
|
|
163
|
+
data: File;
|
|
164
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export {};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { errors } from '@strapi/utils';
|
|
2
|
+
export type SortOrder = 'ASC' | 'DESC';
|
|
3
|
+
export type SortKey = 'createdAt' | 'name' | 'updatedAt';
|
|
4
|
+
import type { File } from './files';
|
|
5
|
+
export interface Folder {
|
|
6
|
+
id: number;
|
|
7
|
+
name: string;
|
|
8
|
+
pathId: number;
|
|
9
|
+
/**
|
|
10
|
+
* parent id
|
|
11
|
+
*/
|
|
12
|
+
parent?: number;
|
|
13
|
+
/**
|
|
14
|
+
* children ids
|
|
15
|
+
*/
|
|
16
|
+
children?: number[];
|
|
17
|
+
path: string;
|
|
18
|
+
files?: File[];
|
|
19
|
+
}
|
|
20
|
+
type FolderNode = Partial<Folder> & {
|
|
21
|
+
children: FolderNode[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* GET /upload/folders/:id - Get specific folder
|
|
25
|
+
*/
|
|
26
|
+
export declare namespace GetFolder {
|
|
27
|
+
interface Request {
|
|
28
|
+
params: {
|
|
29
|
+
id: number;
|
|
30
|
+
};
|
|
31
|
+
query: {};
|
|
32
|
+
}
|
|
33
|
+
interface Response {
|
|
34
|
+
data: Folder;
|
|
35
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* GET /upload/folders - Get folders
|
|
40
|
+
*/
|
|
41
|
+
export declare namespace GetFolders {
|
|
42
|
+
interface Request {
|
|
43
|
+
body: {};
|
|
44
|
+
query: {
|
|
45
|
+
page?: string;
|
|
46
|
+
pageSize?: string;
|
|
47
|
+
sort?: `${SortKey}:${SortOrder}`;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
interface Response {
|
|
51
|
+
data: Folder[];
|
|
52
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* POST /upload/folders - Create folders
|
|
57
|
+
*/
|
|
58
|
+
export declare namespace CreateFolders {
|
|
59
|
+
interface Request {
|
|
60
|
+
body: Pick<Folder, 'name' | 'parent'>;
|
|
61
|
+
}
|
|
62
|
+
interface Response {
|
|
63
|
+
data: Folder;
|
|
64
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* PUT /upload/folders/:id - Update a specific folder
|
|
69
|
+
*/
|
|
70
|
+
export declare namespace UpdateFolder {
|
|
71
|
+
interface Request {
|
|
72
|
+
params: {
|
|
73
|
+
id: number;
|
|
74
|
+
};
|
|
75
|
+
query: {};
|
|
76
|
+
body: {
|
|
77
|
+
name: string;
|
|
78
|
+
parent: number | null;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
interface Response {
|
|
82
|
+
data: Folder;
|
|
83
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* GET /upload/folder-structure
|
|
88
|
+
*
|
|
89
|
+
* Return the structure of a folder.
|
|
90
|
+
*/
|
|
91
|
+
export declare namespace FolderStructureNamespace {
|
|
92
|
+
interface Request {
|
|
93
|
+
query?: {};
|
|
94
|
+
}
|
|
95
|
+
interface Response {
|
|
96
|
+
data: {
|
|
97
|
+
data: number[] & FolderNode[];
|
|
98
|
+
};
|
|
99
|
+
error?: errors.ApplicationError | errors.NotFoundError;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* POST /upload/actions/bulk-delete - Delete Folder
|
|
104
|
+
*/
|
|
105
|
+
export declare namespace BulkDeleteFolders {
|
|
106
|
+
interface Request {
|
|
107
|
+
body: {
|
|
108
|
+
folderIds: number[];
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
interface Response {
|
|
112
|
+
data: {
|
|
113
|
+
data: {
|
|
114
|
+
files: [];
|
|
115
|
+
folders: Folder[];
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* POST /upload/actions/bulk-move - Move Folder
|
|
123
|
+
*/
|
|
124
|
+
export declare namespace BulkMoveFolders {
|
|
125
|
+
interface Request {
|
|
126
|
+
body: {
|
|
127
|
+
folderIds: number[];
|
|
128
|
+
destinationFolderId: number;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
interface Response {
|
|
132
|
+
data: {
|
|
133
|
+
data: {
|
|
134
|
+
files: [];
|
|
135
|
+
folders: Folder[];
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Used to store user configurations related to media files.
|
|
3
|
+
* E.g the size optimization flag, the responsive dimensions flag and the auto orientation.
|
|
4
|
+
*/
|
|
5
|
+
import { errors } from '@strapi/utils';
|
|
6
|
+
import { Utils } from '@strapi/types';
|
|
7
|
+
export interface Settings {
|
|
8
|
+
data: {
|
|
9
|
+
sizeOptimization: boolean;
|
|
10
|
+
responsiveDimensions: boolean;
|
|
11
|
+
autoOrientation?: boolean;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* GET /upload/settings
|
|
16
|
+
*
|
|
17
|
+
* Return the stored settings for the media files.
|
|
18
|
+
*/
|
|
19
|
+
export declare namespace GetSettings {
|
|
20
|
+
interface Request {
|
|
21
|
+
query?: {};
|
|
22
|
+
}
|
|
23
|
+
interface Response {
|
|
24
|
+
data: Settings;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* PUT /upload/settings
|
|
29
|
+
*
|
|
30
|
+
* Update the stored settings
|
|
31
|
+
*/
|
|
32
|
+
export declare namespace UpdateSettings {
|
|
33
|
+
interface Request {
|
|
34
|
+
body: Settings['data'];
|
|
35
|
+
}
|
|
36
|
+
type Response = Utils.OneOf<{
|
|
37
|
+
data: Settings['data'];
|
|
38
|
+
}, {
|
|
39
|
+
error?: errors.ApplicationError | errors.ValidationError;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/upload",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "Makes it easy to upload images and files to your Strapi Application.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@strapi/design-system": "2.0.0-rc.11",
|
|
60
60
|
"@strapi/icons": "2.0.0-rc.11",
|
|
61
|
-
"@strapi/provider-upload-local": "5.0.
|
|
62
|
-
"@strapi/utils": "5.0.
|
|
61
|
+
"@strapi/provider-upload-local": "5.0.3",
|
|
62
|
+
"@strapi/utils": "5.0.3",
|
|
63
63
|
"byte-size": "8.1.1",
|
|
64
64
|
"cropperjs": "1.6.1",
|
|
65
65
|
"date-fns": "2.30.0",
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"yup": "0.32.9"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
|
-
"@strapi/admin": "5.0.
|
|
84
|
+
"@strapi/admin": "5.0.3",
|
|
85
85
|
"@strapi/pack-up": "5.0.0",
|
|
86
|
-
"@strapi/types": "5.0.
|
|
86
|
+
"@strapi/types": "5.0.3",
|
|
87
87
|
"@testing-library/dom": "10.1.0",
|
|
88
88
|
"@testing-library/react": "15.0.7",
|
|
89
89
|
"@testing-library/user-event": "14.5.2",
|
|
@@ -118,5 +118,5 @@
|
|
|
118
118
|
"required": true,
|
|
119
119
|
"kind": "plugin"
|
|
120
120
|
},
|
|
121
|
-
"gitHead": "
|
|
121
|
+
"gitHead": "3e37ea0306e6faf2c214a654ab00a2323d7e3ab7"
|
|
122
122
|
}
|