@atlaskit/media-client 16.0.0 → 17.1.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/CHANGELOG.md +44 -0
- package/dist/cjs/client/collection-fetcher.js +4 -4
- package/dist/cjs/client/file-fetcher/index.js +5 -9
- package/dist/cjs/client/media-store/index.js +49 -32
- package/dist/cjs/constants.js +11 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/models/media.js +10 -2
- package/dist/cjs/uploader/calculateChunkSize.js +45 -0
- package/dist/cjs/uploader/error.js +67 -0
- package/dist/cjs/uploader/index.js +318 -0
- package/dist/cjs/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +4 -4
- package/dist/cjs/utils/mediaSubscribable/index.js +27 -0
- package/dist/cjs/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +3 -3
- package/dist/cjs/utils/mediaSubscribable/types.js +5 -0
- package/dist/cjs/utils/request/errors.js +4 -0
- package/dist/cjs/utils/request/helpers.js +14 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/client/collection-fetcher.js +2 -2
- package/dist/es2019/client/file-fetcher/index.js +5 -6
- package/dist/es2019/client/media-store/index.js +30 -18
- package/dist/es2019/constants.js +5 -1
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/models/media.js +8 -1
- package/dist/es2019/uploader/calculateChunkSize.js +32 -0
- package/dist/es2019/uploader/error.js +30 -0
- package/dist/es2019/{uploader.js → uploader/index.js} +47 -10
- package/dist/es2019/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +3 -3
- package/dist/es2019/utils/mediaSubscribable/index.js +2 -0
- package/dist/es2019/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +1 -1
- package/dist/es2019/utils/mediaSubscribable/types.js +1 -0
- package/dist/es2019/utils/request/errors.js +4 -0
- package/dist/es2019/utils/request/helpers.js +14 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/client/collection-fetcher.js +3 -3
- package/dist/esm/client/file-fetcher/index.js +6 -9
- package/dist/esm/client/media-client.js +1 -1
- package/dist/esm/client/media-store/index.js +50 -33
- package/dist/esm/client/media-store/resolveAuth.js +1 -1
- package/dist/esm/client/stargate-client.js +1 -1
- package/dist/esm/constants.js +5 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/models/media.js +8 -1
- package/dist/esm/uploader/calculateChunkSize.js +32 -0
- package/dist/esm/uploader/error.js +51 -0
- package/dist/esm/uploader/index.js +298 -0
- package/dist/esm/utils/createFileDataLoader.js +1 -1
- package/dist/esm/utils/getDimensionsFromBlob.js +1 -1
- package/dist/esm/utils/getVideoDimensionsFromBlob.js +1 -1
- package/dist/esm/utils/hashing/hasherCreator.js +1 -1
- package/dist/esm/utils/{toMediaSubscribable.js → mediaSubscribable/fromObservable.js} +3 -3
- package/dist/esm/utils/mediaSubscribable/index.js +2 -0
- package/dist/esm/utils/{mediaSubscribableToPromise.js → mediaSubscribable/toPromise.js} +1 -1
- package/dist/esm/utils/mediaSubscribable/types.js +1 -0
- package/dist/esm/utils/mobileUpload/helpers.js +1 -1
- package/dist/esm/utils/mobileUpload/stateMachine/index.js +1 -1
- package/dist/esm/utils/polling/index.js +1 -1
- package/dist/esm/utils/request/errors.js +4 -0
- package/dist/esm/utils/request/helpers.js +13 -4
- package/dist/esm/utils/request/index.js +1 -1
- package/dist/esm/utils/shouldFetchRemoteFileStates.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/client/collection-fetcher.d.ts +1 -1
- package/dist/types/client/file-fetcher/index.d.ts +1 -1
- package/dist/types/client/media-store/index.d.ts +9 -2
- package/dist/types/constants.d.ts +3 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/models/errors/types.d.ts +1 -1
- package/dist/types/models/media.d.ts +5 -0
- package/dist/types/uploader/calculateChunkSize.d.ts +11 -0
- package/dist/types/uploader/error.d.ts +29 -0
- package/dist/types/{uploader.d.ts → uploader/index.d.ts} +2 -2
- package/dist/types/utils/mediaSubscribable/fromObservable.d.ts +5 -0
- package/dist/types/utils/mediaSubscribable/index.d.ts +3 -0
- package/dist/types/utils/{mediaSubscribableToPromise.d.ts → mediaSubscribable/toPromise.d.ts} +3 -3
- package/dist/types/utils/mediaSubscribable/types.d.ts +16 -0
- package/dist/types/utils/request/errors.d.ts +2 -0
- package/dist/types/utils/request/helpers.d.ts +4 -0
- package/dist/types/utils/request/types.d.ts +2 -0
- package/dist/types/utils/safeUnsubscribe.d.ts +1 -1
- package/example-helpers/styles.ts +99 -0
- package/example-helpers/stylesWrapper.tsx +82 -0
- package/package.json +7 -6
- package/report.api.md +1389 -0
- package/dist/cjs/uploader.js +0 -210
- package/dist/esm/uploader.js +0 -194
- package/dist/types/utils/toMediaSubscribable.d.ts +0 -20
- package/example-helpers/styled.ts +0 -77
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const fileSizeError = "fileSizeExceedsLimit";
|
|
2
|
+
/**
|
|
3
|
+
* This is a helper to dynamically calculate the chunk size for a given file size.
|
|
4
|
+
*
|
|
5
|
+
* @param fileSize The size of a file to calculate the chunk size for.
|
|
6
|
+
* @returns A number of bytes per chunk or Throws an Error if the file size exceeds 2TB
|
|
7
|
+
*
|
|
8
|
+
* @see {@link https://product-fabric.atlassian.net/wiki/spaces/FIL/pages/3221881143/Rule+of+thumb+for+chunk+sizes#Given-the-following-conditions}
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export declare const calculateChunkSize: (fileSize: number) => number;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseMediaClientError } from '../models/errors';
|
|
2
|
+
export declare type UploaderErrorReason = 'fileSizeExceedsLimit';
|
|
3
|
+
export declare type UploaderErrorAttributes = {
|
|
4
|
+
readonly reason: UploaderErrorReason;
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly metadata?: {
|
|
7
|
+
readonly collectionName?: string;
|
|
8
|
+
readonly occurrenceKey?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare class UploaderError extends BaseMediaClientError<UploaderErrorAttributes> {
|
|
12
|
+
readonly reason: UploaderErrorReason;
|
|
13
|
+
readonly id: string;
|
|
14
|
+
readonly metadata?: {
|
|
15
|
+
readonly collectionName?: string | undefined;
|
|
16
|
+
readonly occurrenceKey?: string | undefined;
|
|
17
|
+
} | undefined;
|
|
18
|
+
constructor(reason: UploaderErrorReason, id: string, metadata?: {
|
|
19
|
+
readonly collectionName?: string | undefined;
|
|
20
|
+
readonly occurrenceKey?: string | undefined;
|
|
21
|
+
} | undefined);
|
|
22
|
+
get attributes(): {
|
|
23
|
+
reason: "fileSizeExceedsLimit";
|
|
24
|
+
id: string;
|
|
25
|
+
collectionName: string | undefined;
|
|
26
|
+
occurrenceKey: string | undefined;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function isUploaderError(err: Error): err is UploaderError;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChunkinatorFile } from '@atlaskit/chunkinator';
|
|
2
|
-
import { MediaStore } from '
|
|
2
|
+
import { MediaStore } from '../client/media-store';
|
|
3
3
|
export declare type UploadableFile = {
|
|
4
4
|
content: ChunkinatorFile;
|
|
5
5
|
name?: string;
|
|
@@ -18,4 +18,4 @@ export declare type UploadFileCallbacks = {
|
|
|
18
18
|
export interface UploadFileResult {
|
|
19
19
|
cancel: () => void;
|
|
20
20
|
}
|
|
21
|
-
export declare const uploadFile: (file: UploadableFile, store: MediaStore, uploadableFileUpfrontIds: UploadableFileUpfrontIds, callbacks?: UploadFileCallbacks | undefined
|
|
21
|
+
export declare const uploadFile: (file: UploadableFile, store: MediaStore, uploadableFileUpfrontIds: UploadableFileUpfrontIds, callbacks?: UploadFileCallbacks | undefined) => UploadFileResult;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs/ReplaySubject';
|
|
2
|
+
import { MediaSubscribableItem } from '../../models/media-subscribable';
|
|
3
|
+
import { MediaSubscribable } from './types';
|
|
4
|
+
export declare function fromObservable<T>(observable: ReplaySubject<T>): MediaSubscribable<T>;
|
|
5
|
+
export declare function createMediaSubscribable<T extends MediaSubscribableItem>(mediaSubscribableItem?: T | Error): MediaSubscribable<T>;
|
package/dist/types/utils/{mediaSubscribableToPromise.d.ts → mediaSubscribable/toPromise.d.ts}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Subscription } from 'rxjs/Subscription';
|
|
2
|
-
import { MediaSubscribable } from './
|
|
3
|
-
import { MediaSubscribableItem } from '
|
|
2
|
+
import { MediaSubscribable } from './types';
|
|
3
|
+
import { MediaSubscribableItem } from '../../models/media-subscribable';
|
|
4
4
|
/**
|
|
5
5
|
* This is a helper to transform the first value emitted by an MediaSubscribable into a Promise.
|
|
6
6
|
*
|
|
7
7
|
* @param mediaSubscribable a given MediaSubscribable<MediaSubscribableItem>
|
|
8
8
|
* @param subscription a default Subscription (this parameter exists for testing purpose)
|
|
9
9
|
*/
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const toPromise: <T extends MediaSubscribableItem>(mediaSubscribable: MediaSubscribable<T>, subscription?: Subscription) => Promise<T>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare type MediaSubscription = {
|
|
2
|
+
unsubscribe: () => void;
|
|
3
|
+
};
|
|
4
|
+
declare type PartialObserver<T> = {
|
|
5
|
+
next?: (value: T) => void;
|
|
6
|
+
error?: (err: any) => void;
|
|
7
|
+
complete?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare type NextObserver<T> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'next'>>;
|
|
10
|
+
export declare type ErrorObserver<T> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'error'>>;
|
|
11
|
+
export declare type CompletionObserver<T> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'complete'>>;
|
|
12
|
+
export declare type MediaObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T> | ((value: T) => void);
|
|
13
|
+
export declare type MediaSubscribable<T> = {
|
|
14
|
+
subscribe(observer?: MediaObserver<T>): MediaSubscription;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -9,6 +9,8 @@ export declare class RequestError extends BaseMediaClientError<RequestErrorAttri
|
|
|
9
9
|
reason: RequestErrorReason;
|
|
10
10
|
method: import("./types").RequestMethod | undefined;
|
|
11
11
|
endpoint: string | undefined;
|
|
12
|
+
mediaRegion: string | undefined;
|
|
13
|
+
mediaEnv: string | undefined;
|
|
12
14
|
attempts: number | undefined;
|
|
13
15
|
clientExhaustedRetries: boolean | undefined;
|
|
14
16
|
statusCode: number | undefined;
|
|
@@ -32,3 +32,7 @@ export declare function fetchRetry(functionToRetry: () => Promise<Response>, met
|
|
|
32
32
|
export declare function createRequestErrorReason(statusCode: number): RequestErrorReason;
|
|
33
33
|
export declare function createRequestErrorFromResponse(metadata: RequestErrorMetadata, response: Response): RequestError;
|
|
34
34
|
export declare function createProcessFetchResponse(metadata: RequestMetadata): (response: Response) => Response;
|
|
35
|
+
export declare function extractMediaHeaders(response: Response): {
|
|
36
|
+
mediaRegion: string;
|
|
37
|
+
mediaEnv: string;
|
|
38
|
+
};
|
|
@@ -18,6 +18,8 @@ export declare type ClientOptions = {
|
|
|
18
18
|
export declare type RequestMetadata = {
|
|
19
19
|
readonly method?: RequestMethod;
|
|
20
20
|
readonly endpoint?: string;
|
|
21
|
+
readonly mediaRegion?: string;
|
|
22
|
+
readonly mediaEnv?: string;
|
|
21
23
|
};
|
|
22
24
|
export declare type RequestOptions = RequestMetadata & {
|
|
23
25
|
readonly auth?: Auth;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MediaSubscription } from './
|
|
1
|
+
import { MediaSubscription } from './mediaSubscribable';
|
|
2
2
|
export declare const safeUnsubscribe: (subscription: MediaSubscription) => void;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { css } from '@emotion/react';
|
|
2
|
+
import { FileStatus } from '../src';
|
|
3
|
+
|
|
4
|
+
export const wrapperStyles = css`
|
|
5
|
+
display: flex;
|
|
6
|
+
`;
|
|
7
|
+
|
|
8
|
+
export const imagePreviewStyles = css`
|
|
9
|
+
width: 300px;
|
|
10
|
+
`;
|
|
11
|
+
|
|
12
|
+
export const previewWrapperStyles = css`
|
|
13
|
+
flex: 1;
|
|
14
|
+
`;
|
|
15
|
+
|
|
16
|
+
export const metadataWrapperStyles = css`
|
|
17
|
+
width: 400px;
|
|
18
|
+
overflow: scroll;
|
|
19
|
+
flex: 1;
|
|
20
|
+
`;
|
|
21
|
+
|
|
22
|
+
export const fileInputStyles = css`
|
|
23
|
+
color: transparent;
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
export interface FilesWrapperProps {
|
|
27
|
+
status: FileStatus;
|
|
28
|
+
key: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const statusColorMap: { [key in FileStatus]: string } = {
|
|
32
|
+
uploading: 'cornflowerblue',
|
|
33
|
+
processing: 'peachpuff',
|
|
34
|
+
processed: 'darkseagreen',
|
|
35
|
+
error: 'indianred',
|
|
36
|
+
'failed-processing': 'indianred',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const fileWrapperStyles = (status: FileStatus) => css`
|
|
40
|
+
padding: 5px;
|
|
41
|
+
margin: 10px;
|
|
42
|
+
display: inline-block;
|
|
43
|
+
width: 315px;
|
|
44
|
+
background-color: ${statusColorMap[status]};
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
export const cardsWrapperStyles = css`
|
|
48
|
+
width: 900px;
|
|
49
|
+
padding: 10px;
|
|
50
|
+
border-right: 1px solid #ccc;
|
|
51
|
+
|
|
52
|
+
h1 {
|
|
53
|
+
text-align: center;
|
|
54
|
+
border-bottom: 1px solid #ccc;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
> div {
|
|
58
|
+
width: auto;
|
|
59
|
+
display: inline-block;
|
|
60
|
+
margin: 10px;
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
export const headerStyles = css`
|
|
65
|
+
button {
|
|
66
|
+
margin: 5px;
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
|
|
70
|
+
export const fileStateWrapperStyles = css`
|
|
71
|
+
border: 1px solid;
|
|
72
|
+
margin: 10px;
|
|
73
|
+
padding: 10px;
|
|
74
|
+
width: 500px;
|
|
75
|
+
`;
|
|
76
|
+
|
|
77
|
+
export const uploadTouchWrapperStyles = css`
|
|
78
|
+
height: 100%;
|
|
79
|
+
width: 100%;
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
flex-wrap: nowrap;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
align-content: center;
|
|
86
|
+
`;
|
|
87
|
+
|
|
88
|
+
export const rowStyles = css`
|
|
89
|
+
flex-direction: row;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
> * {
|
|
92
|
+
margin-right: 10px;
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
|
|
96
|
+
export const responseStyles = css`
|
|
97
|
+
font-family: monospace;
|
|
98
|
+
white-space: pre;
|
|
99
|
+
`;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/react';
|
|
3
|
+
import { ChangeEvent, ReactNode } from 'react';
|
|
4
|
+
import {
|
|
5
|
+
cardsWrapperStyles,
|
|
6
|
+
fileInputStyles,
|
|
7
|
+
fileStateWrapperStyles,
|
|
8
|
+
fileWrapperStyles,
|
|
9
|
+
headerStyles,
|
|
10
|
+
imagePreviewStyles,
|
|
11
|
+
metadataWrapperStyles,
|
|
12
|
+
previewWrapperStyles,
|
|
13
|
+
responseStyles,
|
|
14
|
+
rowStyles,
|
|
15
|
+
uploadTouchWrapperStyles,
|
|
16
|
+
wrapperStyles,
|
|
17
|
+
} from './styles';
|
|
18
|
+
import { FileStatus } from '../src';
|
|
19
|
+
|
|
20
|
+
export const Wrapper = ({ children }: { children: ReactNode }) => {
|
|
21
|
+
return <div css={wrapperStyles}>{children}</div>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
interface ImagePreviewProps {
|
|
25
|
+
src: string;
|
|
26
|
+
alt: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const ImagePreview = ({ src, alt }: ImagePreviewProps) => {
|
|
30
|
+
return <img css={imagePreviewStyles} src={src} alt={alt} />;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const PreviewWrapper = ({ children }: { children: ReactNode }) => {
|
|
34
|
+
return <div css={previewWrapperStyles}>{children}</div>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const MetadataWrapper = ({ children }: { children: ReactNode }) => {
|
|
38
|
+
return <pre css={metadataWrapperStyles}>{children}</pre>;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
type FileInputProps = {
|
|
42
|
+
type: string;
|
|
43
|
+
onChange: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const FileInput = ({ type, onChange }: FileInputProps) => {
|
|
47
|
+
return <input css={fileInputStyles} type={type} onChange={onChange} />;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const FileWrapper = ({
|
|
51
|
+
children,
|
|
52
|
+
status,
|
|
53
|
+
}: {
|
|
54
|
+
children: ReactNode;
|
|
55
|
+
status: FileStatus;
|
|
56
|
+
}) => {
|
|
57
|
+
return <div css={fileWrapperStyles(status)}>{children}</div>;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const CardsWrapper = ({ children }: { children: ReactNode }) => {
|
|
61
|
+
return <div css={cardsWrapperStyles}>{children}</div>;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const Header = ({ children }: { children: ReactNode }) => {
|
|
65
|
+
return <div css={headerStyles}>{children}</div>;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const FileStateWrapper = ({ children }: { children: ReactNode }) => {
|
|
69
|
+
return <div css={fileStateWrapperStyles}>{children}</div>;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const UploadTouchWrapper = ({ children }: { children: ReactNode }) => {
|
|
73
|
+
return <div css={uploadTouchWrapperStyles}>{children}</div>;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export const Row = ({ children }: { children: ReactNode }) => {
|
|
77
|
+
return <div css={rowStyles}>{children}</div>;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const Response = ({ children }: { children: ReactNode }) => {
|
|
81
|
+
return <div css={responseStyles}>{children}</div>;
|
|
82
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/media-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.1.0",
|
|
4
4
|
"description": "Media API Web Client Library",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@atlaskit/chunkinator": "^4.
|
|
31
|
-
"@atlaskit/media-common": "^2.
|
|
30
|
+
"@atlaskit/chunkinator": "^4.1.0",
|
|
31
|
+
"@atlaskit/media-common": "^2.15.0",
|
|
32
32
|
"@babel/runtime": "^7.0.0",
|
|
33
33
|
"dataloader": "^2.0.0",
|
|
34
34
|
"deep-equal": "^1.0.1",
|
|
@@ -43,24 +43,25 @@
|
|
|
43
43
|
"xstate": "^4.20.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@atlaskit/media-core": "^33.0.
|
|
46
|
+
"@atlaskit/media-core": "^33.0.1",
|
|
47
|
+
"@emotion/react": "^11.7.1",
|
|
47
48
|
"react": "^16.8.0"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"@atlaskit/button": "^16.3.0",
|
|
51
52
|
"@atlaskit/docs": "*",
|
|
52
|
-
"@atlaskit/media-card": "^
|
|
53
|
+
"@atlaskit/media-card": "^74.0.0",
|
|
53
54
|
"@atlaskit/media-core": "^33.0.0",
|
|
54
55
|
"@atlaskit/media-test-helpers": "^30.0.0",
|
|
55
56
|
"@atlaskit/ssr": "*",
|
|
56
57
|
"@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
|
|
58
|
+
"@emotion/react": "^11.7.1",
|
|
57
59
|
"@types/deep-equal": "^1.0.1",
|
|
58
60
|
"@types/uuid-validate": "^0.0.0",
|
|
59
61
|
"enzyme": "^3.10.0",
|
|
60
62
|
"fetch-mock": "^8.0.0",
|
|
61
63
|
"react": "^16.8.0",
|
|
62
64
|
"react-dom": "^16.8.0",
|
|
63
|
-
"styled-components": "^3.2.6",
|
|
64
65
|
"typescript": "4.2.4"
|
|
65
66
|
},
|
|
66
67
|
"resolutions": {
|