@atlaskit/media-client 14.3.2 → 15.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/cjs/client/collection-fetcher.js +5 -3
  3. package/dist/cjs/client/file-fetcher/index.js +17 -15
  4. package/dist/cjs/client/media-store/index.js +2 -2
  5. package/dist/cjs/index.js +12 -11
  6. package/dist/cjs/models/errors/index.js +3 -1
  7. package/dist/cjs/models/file-state.js +2 -2
  8. package/dist/cjs/models/media-subscribable.js +5 -0
  9. package/dist/cjs/utils/{createFileStateSubject.js → createMediaSubject.js} +3 -5
  10. package/dist/cjs/utils/{observableToPromise.js → mediaSubscribableToPromise.js} +6 -7
  11. package/dist/cjs/utils/mobileUpload/helpers.js +2 -2
  12. package/dist/cjs/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  13. package/dist/cjs/utils/polling/index.js +2 -2
  14. package/dist/cjs/utils/request/helpers.js +2 -2
  15. package/dist/cjs/utils/toMediaSubscribable.js +28 -0
  16. package/dist/cjs/utils/url.js +2 -2
  17. package/dist/cjs/utils/with-media-client-hoc.js +3 -1
  18. package/dist/cjs/version.json +1 -1
  19. package/dist/es2019/client/collection-fetcher.js +2 -1
  20. package/dist/es2019/client/file-fetcher/index.js +13 -12
  21. package/dist/es2019/index.js +3 -2
  22. package/dist/es2019/models/media-subscribable.js +1 -0
  23. package/dist/es2019/utils/{createFileStateSubject.js → createMediaSubject.js} +2 -2
  24. package/dist/es2019/utils/mediaSubscribableToPromise.js +20 -0
  25. package/dist/es2019/utils/mobileUpload/helpers.js +2 -2
  26. package/dist/es2019/utils/toMediaSubscribable.js +18 -0
  27. package/dist/es2019/version.json +1 -1
  28. package/dist/esm/client/collection-fetcher.js +4 -3
  29. package/dist/esm/client/file-fetcher/index.js +16 -15
  30. package/dist/esm/client/media-store/index.js +2 -2
  31. package/dist/esm/index.js +3 -2
  32. package/dist/esm/models/errors/index.js +2 -1
  33. package/dist/esm/models/file-state.js +2 -2
  34. package/dist/esm/models/media-subscribable.js +1 -0
  35. package/dist/esm/utils/{createFileStateSubject.js → createMediaSubject.js} +2 -2
  36. package/dist/esm/utils/{observableToPromise.js → mediaSubscribableToPromise.js} +5 -6
  37. package/dist/esm/utils/mobileUpload/helpers.js +2 -2
  38. package/dist/esm/utils/mobileUpload/stateMachine/states/uploading.js +2 -2
  39. package/dist/esm/utils/polling/index.js +2 -2
  40. package/dist/esm/utils/request/helpers.js +2 -2
  41. package/dist/esm/utils/toMediaSubscribable.js +18 -0
  42. package/dist/esm/utils/url.js +2 -2
  43. package/dist/esm/utils/with-media-client-hoc.js +2 -1
  44. package/dist/esm/version.json +1 -1
  45. package/dist/types/client/collection-fetcher.d.ts +2 -1
  46. package/dist/types/client/file-fetcher/index.d.ts +5 -5
  47. package/dist/types/client/media-store/resolveAuth.d.ts +1 -1
  48. package/dist/types/globalMediaEventEmitter.d.ts +3 -3
  49. package/dist/types/index.d.ts +5 -3
  50. package/dist/types/models/file-state.d.ts +1 -1
  51. package/dist/types/models/media-subscribable.d.ts +3 -0
  52. package/dist/types/utils/createMediaSubject.d.ts +3 -0
  53. package/dist/types/utils/imageResizeModeToFileImageMode.d.ts +1 -1
  54. package/dist/types/utils/mediaSubscribableToPromise.d.ts +10 -0
  55. package/dist/types/utils/overrideMediaTypeIfUnknown.d.ts +2 -2
  56. package/dist/types/utils/request/errors.d.ts +1 -1
  57. package/dist/types/utils/safeUnsubscribe.d.ts +2 -2
  58. package/dist/types/utils/toMediaSubscribable.d.ts +20 -0
  59. package/package.json +11 -13
  60. package/dist/es2019/utils/observableToPromise.js +0 -21
  61. package/dist/types/utils/createFileStateSubject.d.ts +0 -3
  62. package/dist/types/utils/observableToPromise.d.ts +0 -10
@@ -1,4 +1,3 @@
1
- import { ReplaySubject } from 'rxjs/ReplaySubject';
2
1
  import 'setimmediate';
3
2
  import { AuthProvider } from '@atlaskit/media-core';
4
3
  import { MediaStore, MediaStoreCopyFileWithTokenParams, TouchedFiles, TouchFileDescriptor } from '../media-store';
@@ -8,6 +7,7 @@ import { UploadableFile, UploadableFileUpfrontIds } from '../../uploader';
8
7
  import { MediaFileArtifacts } from '../../models/artifacts';
9
8
  import { UploadController } from '../../upload-controller';
10
9
  import { Dimensions } from '../../utils/getDimensionsFromBlob';
10
+ import { MediaSubscribable } from '../../utils/toMediaSubscribable';
11
11
  export type { FileFetcherErrorAttributes, FileFetcherErrorReason, } from './error';
12
12
  export { isFileFetcherError, FileFetcherError } from './error';
13
13
  export interface CopySourceFile {
@@ -28,10 +28,10 @@ export declare type ExternalUploadPayload = {
28
28
  dimensions: Dimensions;
29
29
  };
30
30
  export interface FileFetcher {
31
- getFileState(id: string, options?: GetFileOptions): ReplaySubject<FileState>;
31
+ getFileState(id: string, options?: GetFileOptions): MediaSubscribable<FileState>;
32
32
  getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise<string>;
33
33
  touchFiles(descriptors: TouchFileDescriptor[], collection?: string): Promise<TouchedFiles>;
34
- upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): ReplaySubject<FileState>;
34
+ upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): MediaSubscribable<FileState>;
35
35
  uploadExternal(url: string, collection?: string): Promise<ExternalUploadPayload>;
36
36
  downloadBinary(id: string, name?: string, collectionName?: string): Promise<void>;
37
37
  getCurrentState(id: string, options?: GetFileOptions): Promise<FileState>;
@@ -42,7 +42,7 @@ export declare class FileFetcherImpl implements FileFetcher {
42
42
  private readonly mediaStore;
43
43
  private readonly dataloader;
44
44
  constructor(mediaStore: MediaStore);
45
- getFileState(id: string, options?: GetFileOptions): ReplaySubject<FileState>;
45
+ getFileState(id: string, options?: GetFileOptions): MediaSubscribable<FileState>;
46
46
  getCurrentState(id: string, options?: GetFileOptions): Promise<FileState>;
47
47
  getArtifactURL(artifacts: MediaFileArtifacts, artifactName: keyof MediaFileArtifacts, collectionName?: string): Promise<string>;
48
48
  getFileBinaryURL(id: string, collectionName?: string): Promise<string>;
@@ -50,7 +50,7 @@ export declare class FileFetcherImpl implements FileFetcher {
50
50
  touchFiles(descriptors: TouchFileDescriptor[], collection?: string): Promise<TouchedFiles>;
51
51
  private generateUploadableFileUpfrontIds;
52
52
  uploadExternal(url: string, collection?: string): Promise<ExternalUploadPayload>;
53
- upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): ReplaySubject<FileState>;
53
+ upload(file: UploadableFile, controller?: UploadController, uploadableFileUpfrontIds?: UploadableFileUpfrontIds): MediaSubscribable<FileState>;
54
54
  downloadBinary(id: string, name?: string, collectionName?: string): Promise<void>;
55
55
  copyFile(source: CopySourceFile, destination: CopyDestination, options?: CopyFileOptions): Promise<MediaFile>;
56
56
  }
@@ -1,4 +1,4 @@
1
1
  import { Auth, AuthContext, AuthProvider } from '@atlaskit/media-core';
2
2
  export declare const DEFAULT_AUTH_PROVIDER_TIMEOUT = 10000;
3
3
  export declare const resolveAuth: (authProvider: AuthProvider, authContext?: AuthContext | undefined, authProviderTimeout?: number) => Promise<Auth>;
4
- export declare const resolveInitialAuth: (auth?: import("@atlaskit/media-core").ClientBasedAuth | import("@atlaskit/media-core").AsapBasedAuth | undefined) => Auth;
4
+ export declare const resolveInitialAuth: (auth?: Auth | undefined) => Auth;
@@ -1,6 +1,6 @@
1
1
  import { UploadEventPayloadMap, EventPayloadListener } from './client/events';
2
2
  export declare const globalMediaEventEmitter: {
3
- on<E extends "file-added" | "media-viewed">(event: E, listener: EventPayloadListener<UploadEventPayloadMap, E, any>): void;
4
- off<E_1 extends "file-added" | "media-viewed">(event: E_1, listener: EventPayloadListener<UploadEventPayloadMap, E_1, any>): void;
5
- emit<E_2 extends "file-added" | "media-viewed">(event: E_2, payload: UploadEventPayloadMap[E_2]): boolean | undefined;
3
+ on<E extends keyof UploadEventPayloadMap>(event: E, listener: EventPayloadListener<UploadEventPayloadMap, E, any>): void;
4
+ off<E_1 extends keyof UploadEventPayloadMap>(event: E_1, listener: EventPayloadListener<UploadEventPayloadMap, E_1, any>): void;
5
+ emit<E_2 extends keyof UploadEventPayloadMap>(event: E_2, payload: UploadEventPayloadMap[E_2]): boolean | undefined;
6
6
  };
@@ -5,6 +5,7 @@ export type { AbortFunction } from './upload-controller';
5
5
  export type { MediaItemType, FileItem, FileProcessingStatus, MediaArtifact, Artifacts, FileDetails, } from './models/item';
6
6
  export { isPreviewableType, isMediaCollectionItemFullDetails, } from './models/media';
7
7
  export type { MediaFileProcessingStatus, MediaType, MediaFile, MediaCollection, MediaCollectionItems, MediaCollectionItem, MediaCollectionItemMinimalDetails, MediaCollectionItemFullDetails, MediaRepresentations, MediaCollectionItemDetails, MediaUpload, MediaChunksProbe, } from './models/media';
8
+ export type { MediaSubscribableItem } from './models/media-subscribable';
8
9
  export { getArtifactUrl } from './models/artifacts';
9
10
  export type { MediaFileArtifact, MediaFileArtifacts } from './models/artifacts';
10
11
  export { isMediaClientError, getMediaClientErrorReason } from './models/errors';
@@ -32,19 +33,20 @@ export { StargateClient } from './client/stargate-client';
32
33
  export type { EdgeData } from './client/stargate-client';
33
34
  export { isImageRemote } from './utils/isImageRemote';
34
35
  export { checkWebpSupport } from './utils/checkWebpSupport';
35
- export { observableToPromise } from './utils/observableToPromise';
36
36
  export { getDimensionsFromBlob } from './utils/getDimensionsFromBlob';
37
37
  export type { Dimensions } from './utils/getDimensionsFromBlob';
38
- export { createFileStateSubject } from './utils/createFileStateSubject';
38
+ export { createMediaSubject } from './utils/createMediaSubject';
39
39
  export { safeUnsubscribe } from './utils/safeUnsubscribe';
40
40
  export { isFileIdentifier, isExternalImageIdentifier, isDifferentIdentifier, } from './identifier';
41
41
  export type { Identifier, FileIdentifier, ExternalImageIdentifier, } from './identifier';
42
42
  export type { EventPayloadListener, UploadEventPayloadMap, MediaViewedEventPayload, } from './client/events';
43
43
  export { withMediaClient, getMediaClient } from './utils/with-media-client-hoc';
44
- export type { WithMediaClientConfig, WithMediaClientConfigProps, WithMediaClientFunction, } from './utils/with-media-client-hoc';
44
+ export type { WithMediaClientConfig, WithMediaClientConfigProps, WithMediaClientFunction, WithMediaClient, } from './utils/with-media-client-hoc';
45
45
  export { globalMediaEventEmitter } from './globalMediaEventEmitter';
46
46
  export { isMediaBlobUrl, getAttrsFromUrl, addFileAttrsToUrl, objectToQueryString, } from './utils/url';
47
47
  export type { MediaBlobUrlAttrs } from './utils/url';
48
+ export { createMediaSubscribable } from './utils/toMediaSubscribable';
49
+ export type { MediaSubscribable, MediaSubscription, MediaObserver, } from './utils/toMediaSubscribable';
48
50
  export { RECENTS_COLLECTION, MAX_RESOLUTION } from './constants';
49
51
  /**
50
52
  * @deprecated This export will be removed. Please use one from @atlaskit/media-common or @atlaskit/media-common/mediaTypeUtils
@@ -84,7 +84,7 @@ export declare const isUploadingFileState: (fileState: FileState) => fileState i
84
84
  export declare const isProcessingFileState: (fileState: FileState) => fileState is ProcessingFileState;
85
85
  export declare const isProcessedFileState: (fileState: FileState) => fileState is ProcessedFileState;
86
86
  export declare const isErrorFileState: (fileState: FileState) => fileState is ErrorFileState;
87
- export declare const isPreviewableFileState: (fileState: FileState) => fileState is (UploadingFileState & PreviewableFileState) | (ProcessingFileState & PreviewableFileState) | (ProcessedFileState & PreviewableFileState) | (ProcessingFailedState & PreviewableFileState);
87
+ export declare const isPreviewableFileState: (fileState: FileState) => fileState is (UploadingFileState | ProcessingFileState | ProcessedFileState | ProcessingFailedState) & PreviewableFileState;
88
88
  export declare const isFinalFileState: (fileState: FileState) => fileState is ProcessedFileState | ProcessingFailedState | ErrorFileState;
89
89
  export declare const isImageRepresentationReady: (fileState: FileState) => boolean;
90
90
  export declare const mapMediaFileToFileState: (mediaFile: MediaStoreResponse<MediaFile>) => FileState;
@@ -0,0 +1,3 @@
1
+ import { FileState } from './file-state';
2
+ import { MediaCollectionItem } from './media';
3
+ export declare type MediaSubscribableItem = FileState | MediaCollectionItem[];
@@ -0,0 +1,3 @@
1
+ import { ReplaySubject } from 'rxjs/ReplaySubject';
2
+ import { MediaSubscribableItem } from '../models/media-subscribable';
3
+ export declare function createMediaSubject<T extends MediaSubscribableItem>(initialState?: T | Error): ReplaySubject<T>;
@@ -1,3 +1,3 @@
1
1
  import { MediaStoreGetFileImageParams } from '../client/media-store';
2
2
  export declare type ImageResizeMode = 'crop' | 'fit' | 'full-fit' | 'stretchy-fit';
3
- export declare const imageResizeModeToFileImageMode: (resizeMode?: "crop" | "fit" | "full-fit" | "stretchy-fit" | undefined) => MediaStoreGetFileImageParams['mode'];
3
+ export declare const imageResizeModeToFileImageMode: (resizeMode?: ImageResizeMode | undefined) => MediaStoreGetFileImageParams['mode'];
@@ -0,0 +1,10 @@
1
+ import { Subscription } from 'rxjs/Subscription';
2
+ import { MediaSubscribable } from './toMediaSubscribable';
3
+ import { MediaSubscribableItem } from '../models/media-subscribable';
4
+ /**
5
+ * This is a helper to transform the first value emitted by an MediaSubscribable into a Promise.
6
+ *
7
+ * @param mediaSubscribable a given MediaSubscribable<MediaSubscribableItem>
8
+ * @param subscription a default Subscription (this parameter exists for testing purpose)
9
+ */
10
+ export declare const mediaSubscribableToPromise: <T extends MediaSubscribableItem>(mediaSubscribable: MediaSubscribable<T>, subscription?: Subscription) => Promise<T>;
@@ -1,5 +1,5 @@
1
1
  import { FileState } from '../models/file-state';
2
2
  import { MediaType } from '../models/media';
3
- export declare const overrideMediaTypeIfUnknown: (fileState: FileState, mediaType?: "doc" | "audio" | "video" | "image" | "archive" | "unknown" | undefined) => {
4
- mediaType?: "doc" | "audio" | "video" | "image" | "archive" | "unknown" | undefined;
3
+ export declare const overrideMediaTypeIfUnknown: (fileState: FileState, mediaType?: MediaType | undefined) => {
4
+ mediaType?: MediaType | undefined;
5
5
  };
@@ -7,7 +7,7 @@ export declare class RequestError extends BaseMediaClientError<RequestErrorAttri
7
7
  constructor(reason: RequestErrorReason, metadata?: RequestErrorMetadata | undefined, innerError?: Error | undefined);
8
8
  get attributes(): {
9
9
  reason: RequestErrorReason;
10
- method: "GET" | "POST" | "PUT" | "DELETE" | undefined;
10
+ method: import("./types").RequestMethod | undefined;
11
11
  endpoint: string | undefined;
12
12
  attempts: number | undefined;
13
13
  clientExhaustedRetries: boolean | undefined;
@@ -1,2 +1,2 @@
1
- import { Subscription } from 'rxjs/Subscription';
2
- export declare const safeUnsubscribe: (subscription: Subscription) => void;
1
+ import { MediaSubscription } from './toMediaSubscribable';
2
+ export declare const safeUnsubscribe: (subscription: MediaSubscription) => void;
@@ -0,0 +1,20 @@
1
+ import { ReplaySubject } from 'rxjs/ReplaySubject';
2
+ import { MediaSubscribableItem } from './../models/media-subscribable';
3
+ export declare type MediaSubscription = {
4
+ unsubscribe: () => void;
5
+ };
6
+ declare type PartialObserver<T extends MediaSubscribableItem> = {
7
+ next?: (value: T) => void;
8
+ error?: (err: any) => void;
9
+ complete?: () => void;
10
+ };
11
+ declare type NextObserver<T extends MediaSubscribableItem> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'next'>>;
12
+ declare type ErrorObserver<T extends MediaSubscribableItem> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'error'>>;
13
+ declare type CompletionObserver<T extends MediaSubscribableItem> = PartialObserver<T> & Required<Pick<PartialObserver<T>, 'complete'>>;
14
+ export declare type MediaObserver<T extends MediaSubscribableItem> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T> | ((value: T) => void);
15
+ export declare type MediaSubscribable<T extends MediaSubscribableItem> = {
16
+ subscribe(observer?: MediaObserver<T>): MediaSubscription;
17
+ };
18
+ export declare function toMediaSubscribable<T extends MediaSubscribableItem>(observable: ReplaySubject<T>): MediaSubscribable<T>;
19
+ export declare function createMediaSubscribable<T extends MediaSubscribableItem>(mediaSubscribableItem?: T | Error): MediaSubscribable<T>;
20
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-client",
3
- "version": "14.3.2",
3
+ "version": "15.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": "^3.0.0",
31
- "@atlaskit/media-common": "^2.10.0",
30
+ "@atlaskit/chunkinator": "^3.1.0",
31
+ "@atlaskit/media-common": "^2.12.0",
32
32
  "@babel/runtime": "^7.0.0",
33
33
  "dataloader": "^2.0.0",
34
34
  "deep-equal": "^1.0.1",
@@ -36,6 +36,7 @@
36
36
  "lru-fast": "^0.2.2",
37
37
  "query-string": "^6.14.1",
38
38
  "rusha": "^0.8.13",
39
+ "rxjs": "^5.5.0",
39
40
  "setimmediate": "^1.0.5",
40
41
  "uuid": "^3.1.0",
41
42
  "uuid-validate": "^0.0.3",
@@ -43,17 +44,15 @@
43
44
  "xstate": "^4.20.0"
44
45
  },
45
46
  "peerDependencies": {
46
- "@atlaskit/media-core": "^32.2.0",
47
- "react": "^16.8.0",
48
- "rxjs": "^5.5.0"
47
+ "@atlaskit/media-core": "^32.3.1",
48
+ "react": "^16.8.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@atlaskit/build-utils": "*",
52
- "@atlaskit/button": "^16.1.0",
51
+ "@atlaskit/button": "^16.3.0",
53
52
  "@atlaskit/docs": "*",
54
- "@atlaskit/media-card": "^73.0.0",
55
- "@atlaskit/media-core": "^32.2.0",
56
- "@atlaskit/media-test-helpers": "^29.0.0",
53
+ "@atlaskit/media-card": "^73.5.0",
54
+ "@atlaskit/media-core": "^32.3.0",
55
+ "@atlaskit/media-test-helpers": "^29.4.0",
57
56
  "@atlaskit/ssr": "*",
58
57
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
59
58
  "@types/deep-equal": "^1.0.1",
@@ -64,9 +63,8 @@
64
63
  "jest-fetch-mock": "^3.0.3",
65
64
  "react": "^16.8.0",
66
65
  "react-dom": "^16.8.0",
67
- "rxjs": "^5.5.0",
68
66
  "styled-components": "^3.2.6",
69
- "typescript": "3.9.6"
67
+ "typescript": "4.2.4"
70
68
  },
71
69
  "resolutions": {
72
70
  "lru-fast": "0.2.2"
@@ -1,21 +0,0 @@
1
- import { Subscription } from 'rxjs/Subscription';
2
- /**
3
- * We're using this custom helper in place of ".toPromise()" to transform the first value emitted by an Observable or Subject into a Promise.
4
- * Note that in RxJS 7 ".toPromise()" is deprecated and replaced by "firstValueFrom()/.lastValueFrom()"
5
- *
6
- * @param observable a given Observable<T> or Subject<T>
7
- * @param subscription a default Subscription (this parameter exists for testing purpose)
8
- */
9
-
10
- export const observableToPromise = (observable, subscription = new Subscription()) => {
11
- return new Promise((resolve, reject) => subscription.add(observable.subscribe({
12
- next: state => {
13
- resolve(state);
14
- subscription.unsubscribe();
15
- },
16
- error: error => {
17
- reject(error);
18
- subscription.unsubscribe();
19
- }
20
- })));
21
- };
@@ -1,3 +0,0 @@
1
- import { ReplaySubject } from 'rxjs/ReplaySubject';
2
- import { FileState } from '../models/file-state';
3
- export declare const createFileStateSubject: (initialState?: Error | import("../models/file-state").UploadingFileState | import("../models/file-state").ProcessingFileState | import("../models/file-state").ProcessedFileState | import("../models/file-state").ProcessingFailedState | import("../models/file-state").ErrorFileState | undefined) => ReplaySubject<FileState>;
@@ -1,10 +0,0 @@
1
- import { Observable } from 'rxjs/Observable';
2
- import { Subscription } from 'rxjs/Subscription';
3
- /**
4
- * We're using this custom helper in place of ".toPromise()" to transform the first value emitted by an Observable or Subject into a Promise.
5
- * Note that in RxJS 7 ".toPromise()" is deprecated and replaced by "firstValueFrom()/.lastValueFrom()"
6
- *
7
- * @param observable a given Observable<T> or Subject<T>
8
- * @param subscription a default Subscription (this parameter exists for testing purpose)
9
- */
10
- export declare const observableToPromise: <T>(observable: Observable<T>, subscription?: Subscription) => Promise<T>;