@churchapps/content-providers 0.1.13 → 0.3.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/index.cjs +4401 -385
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +73 -9
- package/dist/index.d.ts +73 -9
- package/dist/index.js +4399 -385
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -149,6 +149,33 @@ interface Instructions {
|
|
|
149
149
|
name?: string;
|
|
150
150
|
items: InstructionItem[];
|
|
151
151
|
}
|
|
152
|
+
interface MessageFileInterface {
|
|
153
|
+
id?: string;
|
|
154
|
+
name?: string;
|
|
155
|
+
url?: string;
|
|
156
|
+
seconds?: number;
|
|
157
|
+
fileType?: string;
|
|
158
|
+
sort?: number;
|
|
159
|
+
loop?: boolean;
|
|
160
|
+
loopVideo?: boolean;
|
|
161
|
+
image?: string;
|
|
162
|
+
}
|
|
163
|
+
interface PlanTimelineItem {
|
|
164
|
+
id: string;
|
|
165
|
+
label?: string;
|
|
166
|
+
itemType?: string;
|
|
167
|
+
seconds?: number;
|
|
168
|
+
fileIds?: string[];
|
|
169
|
+
children?: PlanTimelineItem[];
|
|
170
|
+
}
|
|
171
|
+
interface CurrentPlan {
|
|
172
|
+
id: string;
|
|
173
|
+
title: string;
|
|
174
|
+
serviceDate?: string;
|
|
175
|
+
thumbnail?: string;
|
|
176
|
+
files: MessageFileInterface[];
|
|
177
|
+
timeline?: PlanTimelineItem[];
|
|
178
|
+
}
|
|
152
179
|
interface VenueActionInterface {
|
|
153
180
|
id?: string;
|
|
154
181
|
name?: string;
|
|
@@ -199,12 +226,17 @@ interface IProvider {
|
|
|
199
226
|
exchangeCodeForTokens?(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null>;
|
|
200
227
|
initiateDeviceFlow?(): Promise<DeviceAuthorizationResponse | null>;
|
|
201
228
|
pollDeviceFlowToken?(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
229
|
+
performLogin?(email: string, password: string): Promise<ContentProviderAuthData | null>;
|
|
202
230
|
getPlaylist?(path: string, auth?: ContentProviderAuthData | null, resolution?: number): Promise<ContentFile[] | null>;
|
|
203
231
|
getInstructions?(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
232
|
+
getCurrentPlan?(auth?: ContentProviderAuthData | null): Promise<CurrentPlan | null>;
|
|
233
|
+
/** Hand opaque pairing data (provider-specific shape) to the provider so it can resolve its current plan. */
|
|
234
|
+
setPairingData?(data: unknown): void;
|
|
204
235
|
checkMediaLicense?(mediaId: string, auth?: ContentProviderAuthData | null): Promise<MediaLicenseResult | null>;
|
|
205
236
|
}
|
|
206
237
|
|
|
207
238
|
declare function detectMediaType(url: string, explicitType?: string): "video" | "image";
|
|
239
|
+
declare function isMediaFile(filename: string): boolean;
|
|
208
240
|
declare function createFolder(id: string, title: string, path: string, thumbnail?: string, isLeaf?: boolean): ContentFolder;
|
|
209
241
|
declare function createFile(id: string, title: string, url: string, options?: {
|
|
210
242
|
mediaType?: "video" | "image";
|
|
@@ -371,7 +403,7 @@ declare class DeviceFlowHelper {
|
|
|
371
403
|
|
|
372
404
|
declare class ApiHelper {
|
|
373
405
|
createAuthHeaders(auth: ContentProviderAuthData | null | undefined): Record<string, string> | null;
|
|
374
|
-
apiRequest<T>(config: ContentProviderConfig,
|
|
406
|
+
apiRequest<T>(config: ContentProviderConfig, providerId: string, path: string, auth?: ContentProviderAuthData | null, method?: "GET" | "POST", body?: unknown): Promise<T | null>;
|
|
375
407
|
}
|
|
376
408
|
|
|
377
409
|
/**
|
|
@@ -501,6 +533,9 @@ declare class B1ChurchProvider implements IProvider {
|
|
|
501
533
|
pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
502
534
|
browse(path?: string | null, authData?: ContentProviderAuthData | null): Promise<ContentItem[]>;
|
|
503
535
|
private fetchPlanImages;
|
|
536
|
+
private planTypeId;
|
|
537
|
+
setPairingData(data: unknown): void;
|
|
538
|
+
getCurrentPlan(_authData?: ContentProviderAuthData | null): Promise<CurrentPlan | null>;
|
|
504
539
|
getInstructions(path: string, authData?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
505
540
|
private processInstructionItems;
|
|
506
541
|
private findItemByPath;
|
|
@@ -511,6 +546,7 @@ declare class B1ChurchProvider implements IProvider {
|
|
|
511
546
|
|
|
512
547
|
declare class DropboxProvider implements IProvider {
|
|
513
548
|
private readonly oauthHelper;
|
|
549
|
+
private readonly apiHelper;
|
|
514
550
|
readonly id = "dropbox";
|
|
515
551
|
readonly name = "Dropbox";
|
|
516
552
|
readonly logos: ProviderLogos;
|
|
@@ -534,6 +570,8 @@ declare class DropboxProvider implements IProvider {
|
|
|
534
570
|
url: string;
|
|
535
571
|
challengeMethod: string;
|
|
536
572
|
}>;
|
|
573
|
+
/** For environments without Web Crypto (e.g. React Native): caller computes the challenge. */
|
|
574
|
+
buildAuthUrlFromChallenge(codeChallenge: string, redirectUri: string, state: string): string;
|
|
537
575
|
exchangeCodeForTokens(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null>;
|
|
538
576
|
}
|
|
539
577
|
|
|
@@ -650,17 +688,43 @@ declare class JesusFilmProvider implements IProvider {
|
|
|
650
688
|
}
|
|
651
689
|
|
|
652
690
|
/**
|
|
653
|
-
*
|
|
691
|
+
* CBN Provider
|
|
692
|
+
*
|
|
693
|
+
* Faith-based kids' video curriculum. Auth uses OAuth 2.0 Device Flow.
|
|
694
|
+
*
|
|
695
|
+
* Path structure:
|
|
696
|
+
* / -> single "Catalog" root folder
|
|
697
|
+
* /catalog -> course folders (GET /catalog)
|
|
698
|
+
* /catalog/{courseId} -> lesson folders (GET /catalog/{courseId})
|
|
699
|
+
* /catalog/{courseId}/{lessonId} -> video files (GET /lesson-playlist/{lessonId})
|
|
654
700
|
*/
|
|
701
|
+
declare class CbnProvider implements IProvider {
|
|
702
|
+
private readonly apiHelper;
|
|
703
|
+
private readonly deviceFlowHelper;
|
|
704
|
+
private apiRequest;
|
|
705
|
+
readonly id = "cbn";
|
|
706
|
+
readonly name = "CBN";
|
|
707
|
+
readonly logos: ProviderLogos;
|
|
708
|
+
readonly config: ContentProviderConfig;
|
|
709
|
+
readonly requiresAuth = true;
|
|
710
|
+
readonly authTypes: AuthType[];
|
|
711
|
+
readonly capabilities: ProviderCapabilities;
|
|
712
|
+
browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]>;
|
|
713
|
+
private getCourses;
|
|
714
|
+
private getLessons;
|
|
715
|
+
private getVideos;
|
|
716
|
+
private fetchPlaylist;
|
|
717
|
+
getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null>;
|
|
718
|
+
getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
719
|
+
supportsDeviceFlow(): boolean;
|
|
720
|
+
initiateDeviceFlow(): Promise<DeviceAuthorizationResponse | null>;
|
|
721
|
+
pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
722
|
+
}
|
|
723
|
+
|
|
655
724
|
declare function getProvider(providerId: string): IProvider | null;
|
|
656
|
-
/**
|
|
657
|
-
* Get all registered providers.
|
|
658
|
-
*/
|
|
659
725
|
declare function getAllProviders(): IProvider[];
|
|
660
|
-
/**
|
|
661
|
-
* Register a custom provider.
|
|
662
|
-
*/
|
|
663
726
|
declare function registerProvider(provider: IProvider): void;
|
|
727
|
+
|
|
664
728
|
/**
|
|
665
729
|
* Get provider configuration by ID (for backward compatibility).
|
|
666
730
|
*/
|
|
@@ -678,4 +742,4 @@ declare function getAvailableProviders(ids?: string[]): ProviderInfo[];
|
|
|
678
742
|
*/
|
|
679
743
|
declare const VERSION = "0.0.5";
|
|
680
744
|
|
|
681
|
-
export { APlayProvider, ApiHelper, type AuthType, B1ChurchProvider, BibleProjectProvider, type ContentFile, type ContentFolder, type ContentItem, type ContentProviderAuthData, type ContentProviderConfig, DEFAULT_DURATION_CONFIG, type DeviceAuthorizationResponse, DeviceFlowHelper, type DeviceFlowPollResult, type DeviceFlowState, DropboxProvider, type DurationEstimationConfig, type EndpointValue, type EndpointsConfig, type FeedActionInterface, type FeedFileInterface, type FeedSectionInterface, type FeedVenueInterface, FormatConverters, FormatResolver, type FormatResolverOptions, HighVoltageKidsProvider, type IProvider, type InstructionItem, type Instructions, JesusFilmProvider, LessonsChurchProvider, type MediaLicenseResult, type MediaLicenseStatus, OAuthHelper, type Plan, type PlanPresentation, type PlanSection, PlanningCenterProvider, type ProviderCapabilities, type ProviderInfo, type ProviderLogos, type ResolvedFormatMeta, SignPresenterProvider, TokenHelper, VERSION, type VenueActionInterface, type VenueActionsResponseInterface, type VenueSectionActionsInterface, appendToPath, buildPath, countWords, createFile, createFolder, detectMediaType, estimateDuration, estimateImageDuration, estimateTextDuration, generatePath, getAllProviders, getAvailableProviders, getProvider, getProviderConfig, getSegment, isContentFile, isContentFolder, navigateToPath, parsePath, registerProvider };
|
|
745
|
+
export { APlayProvider, ApiHelper, type AuthType, B1ChurchProvider, BibleProjectProvider, CbnProvider, type ContentFile, type ContentFolder, type ContentItem, type ContentProviderAuthData, type ContentProviderConfig, type CurrentPlan, DEFAULT_DURATION_CONFIG, type DeviceAuthorizationResponse, DeviceFlowHelper, type DeviceFlowPollResult, type DeviceFlowState, DropboxProvider, type DurationEstimationConfig, type EndpointValue, type EndpointsConfig, type FeedActionInterface, type FeedFileInterface, type FeedSectionInterface, type FeedVenueInterface, FormatConverters, FormatResolver, type FormatResolverOptions, HighVoltageKidsProvider, type IProvider, type InstructionItem, type Instructions, JesusFilmProvider, LessonsChurchProvider, type MediaLicenseResult, type MediaLicenseStatus, type MessageFileInterface, OAuthHelper, type Plan, type PlanPresentation, type PlanSection, type PlanTimelineItem, PlanningCenterProvider, type ProviderCapabilities, type ProviderInfo, type ProviderLogos, type ResolvedFormatMeta, SignPresenterProvider, TokenHelper, VERSION, type VenueActionInterface, type VenueActionsResponseInterface, type VenueSectionActionsInterface, appendToPath, buildPath, countWords, createFile, createFolder, detectMediaType, estimateDuration, estimateImageDuration, estimateTextDuration, generatePath, getAllProviders, getAvailableProviders, getProvider, getProviderConfig, getSegment, isContentFile, isContentFolder, isMediaFile, navigateToPath, parsePath, registerProvider };
|
package/dist/index.d.ts
CHANGED
|
@@ -149,6 +149,33 @@ interface Instructions {
|
|
|
149
149
|
name?: string;
|
|
150
150
|
items: InstructionItem[];
|
|
151
151
|
}
|
|
152
|
+
interface MessageFileInterface {
|
|
153
|
+
id?: string;
|
|
154
|
+
name?: string;
|
|
155
|
+
url?: string;
|
|
156
|
+
seconds?: number;
|
|
157
|
+
fileType?: string;
|
|
158
|
+
sort?: number;
|
|
159
|
+
loop?: boolean;
|
|
160
|
+
loopVideo?: boolean;
|
|
161
|
+
image?: string;
|
|
162
|
+
}
|
|
163
|
+
interface PlanTimelineItem {
|
|
164
|
+
id: string;
|
|
165
|
+
label?: string;
|
|
166
|
+
itemType?: string;
|
|
167
|
+
seconds?: number;
|
|
168
|
+
fileIds?: string[];
|
|
169
|
+
children?: PlanTimelineItem[];
|
|
170
|
+
}
|
|
171
|
+
interface CurrentPlan {
|
|
172
|
+
id: string;
|
|
173
|
+
title: string;
|
|
174
|
+
serviceDate?: string;
|
|
175
|
+
thumbnail?: string;
|
|
176
|
+
files: MessageFileInterface[];
|
|
177
|
+
timeline?: PlanTimelineItem[];
|
|
178
|
+
}
|
|
152
179
|
interface VenueActionInterface {
|
|
153
180
|
id?: string;
|
|
154
181
|
name?: string;
|
|
@@ -199,12 +226,17 @@ interface IProvider {
|
|
|
199
226
|
exchangeCodeForTokens?(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null>;
|
|
200
227
|
initiateDeviceFlow?(): Promise<DeviceAuthorizationResponse | null>;
|
|
201
228
|
pollDeviceFlowToken?(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
229
|
+
performLogin?(email: string, password: string): Promise<ContentProviderAuthData | null>;
|
|
202
230
|
getPlaylist?(path: string, auth?: ContentProviderAuthData | null, resolution?: number): Promise<ContentFile[] | null>;
|
|
203
231
|
getInstructions?(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
232
|
+
getCurrentPlan?(auth?: ContentProviderAuthData | null): Promise<CurrentPlan | null>;
|
|
233
|
+
/** Hand opaque pairing data (provider-specific shape) to the provider so it can resolve its current plan. */
|
|
234
|
+
setPairingData?(data: unknown): void;
|
|
204
235
|
checkMediaLicense?(mediaId: string, auth?: ContentProviderAuthData | null): Promise<MediaLicenseResult | null>;
|
|
205
236
|
}
|
|
206
237
|
|
|
207
238
|
declare function detectMediaType(url: string, explicitType?: string): "video" | "image";
|
|
239
|
+
declare function isMediaFile(filename: string): boolean;
|
|
208
240
|
declare function createFolder(id: string, title: string, path: string, thumbnail?: string, isLeaf?: boolean): ContentFolder;
|
|
209
241
|
declare function createFile(id: string, title: string, url: string, options?: {
|
|
210
242
|
mediaType?: "video" | "image";
|
|
@@ -371,7 +403,7 @@ declare class DeviceFlowHelper {
|
|
|
371
403
|
|
|
372
404
|
declare class ApiHelper {
|
|
373
405
|
createAuthHeaders(auth: ContentProviderAuthData | null | undefined): Record<string, string> | null;
|
|
374
|
-
apiRequest<T>(config: ContentProviderConfig,
|
|
406
|
+
apiRequest<T>(config: ContentProviderConfig, providerId: string, path: string, auth?: ContentProviderAuthData | null, method?: "GET" | "POST", body?: unknown): Promise<T | null>;
|
|
375
407
|
}
|
|
376
408
|
|
|
377
409
|
/**
|
|
@@ -501,6 +533,9 @@ declare class B1ChurchProvider implements IProvider {
|
|
|
501
533
|
pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
502
534
|
browse(path?: string | null, authData?: ContentProviderAuthData | null): Promise<ContentItem[]>;
|
|
503
535
|
private fetchPlanImages;
|
|
536
|
+
private planTypeId;
|
|
537
|
+
setPairingData(data: unknown): void;
|
|
538
|
+
getCurrentPlan(_authData?: ContentProviderAuthData | null): Promise<CurrentPlan | null>;
|
|
504
539
|
getInstructions(path: string, authData?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
505
540
|
private processInstructionItems;
|
|
506
541
|
private findItemByPath;
|
|
@@ -511,6 +546,7 @@ declare class B1ChurchProvider implements IProvider {
|
|
|
511
546
|
|
|
512
547
|
declare class DropboxProvider implements IProvider {
|
|
513
548
|
private readonly oauthHelper;
|
|
549
|
+
private readonly apiHelper;
|
|
514
550
|
readonly id = "dropbox";
|
|
515
551
|
readonly name = "Dropbox";
|
|
516
552
|
readonly logos: ProviderLogos;
|
|
@@ -534,6 +570,8 @@ declare class DropboxProvider implements IProvider {
|
|
|
534
570
|
url: string;
|
|
535
571
|
challengeMethod: string;
|
|
536
572
|
}>;
|
|
573
|
+
/** For environments without Web Crypto (e.g. React Native): caller computes the challenge. */
|
|
574
|
+
buildAuthUrlFromChallenge(codeChallenge: string, redirectUri: string, state: string): string;
|
|
537
575
|
exchangeCodeForTokens(code: string, codeVerifier: string, redirectUri: string): Promise<ContentProviderAuthData | null>;
|
|
538
576
|
}
|
|
539
577
|
|
|
@@ -650,17 +688,43 @@ declare class JesusFilmProvider implements IProvider {
|
|
|
650
688
|
}
|
|
651
689
|
|
|
652
690
|
/**
|
|
653
|
-
*
|
|
691
|
+
* CBN Provider
|
|
692
|
+
*
|
|
693
|
+
* Faith-based kids' video curriculum. Auth uses OAuth 2.0 Device Flow.
|
|
694
|
+
*
|
|
695
|
+
* Path structure:
|
|
696
|
+
* / -> single "Catalog" root folder
|
|
697
|
+
* /catalog -> course folders (GET /catalog)
|
|
698
|
+
* /catalog/{courseId} -> lesson folders (GET /catalog/{courseId})
|
|
699
|
+
* /catalog/{courseId}/{lessonId} -> video files (GET /lesson-playlist/{lessonId})
|
|
654
700
|
*/
|
|
701
|
+
declare class CbnProvider implements IProvider {
|
|
702
|
+
private readonly apiHelper;
|
|
703
|
+
private readonly deviceFlowHelper;
|
|
704
|
+
private apiRequest;
|
|
705
|
+
readonly id = "cbn";
|
|
706
|
+
readonly name = "CBN";
|
|
707
|
+
readonly logos: ProviderLogos;
|
|
708
|
+
readonly config: ContentProviderConfig;
|
|
709
|
+
readonly requiresAuth = true;
|
|
710
|
+
readonly authTypes: AuthType[];
|
|
711
|
+
readonly capabilities: ProviderCapabilities;
|
|
712
|
+
browse(path?: string | null, auth?: ContentProviderAuthData | null): Promise<ContentItem[]>;
|
|
713
|
+
private getCourses;
|
|
714
|
+
private getLessons;
|
|
715
|
+
private getVideos;
|
|
716
|
+
private fetchPlaylist;
|
|
717
|
+
getPlaylist(path: string, auth?: ContentProviderAuthData | null, _resolution?: number): Promise<ContentFile[] | null>;
|
|
718
|
+
getInstructions(path: string, auth?: ContentProviderAuthData | null): Promise<Instructions | null>;
|
|
719
|
+
supportsDeviceFlow(): boolean;
|
|
720
|
+
initiateDeviceFlow(): Promise<DeviceAuthorizationResponse | null>;
|
|
721
|
+
pollDeviceFlowToken(deviceCode: string): Promise<DeviceFlowPollResult>;
|
|
722
|
+
}
|
|
723
|
+
|
|
655
724
|
declare function getProvider(providerId: string): IProvider | null;
|
|
656
|
-
/**
|
|
657
|
-
* Get all registered providers.
|
|
658
|
-
*/
|
|
659
725
|
declare function getAllProviders(): IProvider[];
|
|
660
|
-
/**
|
|
661
|
-
* Register a custom provider.
|
|
662
|
-
*/
|
|
663
726
|
declare function registerProvider(provider: IProvider): void;
|
|
727
|
+
|
|
664
728
|
/**
|
|
665
729
|
* Get provider configuration by ID (for backward compatibility).
|
|
666
730
|
*/
|
|
@@ -678,4 +742,4 @@ declare function getAvailableProviders(ids?: string[]): ProviderInfo[];
|
|
|
678
742
|
*/
|
|
679
743
|
declare const VERSION = "0.0.5";
|
|
680
744
|
|
|
681
|
-
export { APlayProvider, ApiHelper, type AuthType, B1ChurchProvider, BibleProjectProvider, type ContentFile, type ContentFolder, type ContentItem, type ContentProviderAuthData, type ContentProviderConfig, DEFAULT_DURATION_CONFIG, type DeviceAuthorizationResponse, DeviceFlowHelper, type DeviceFlowPollResult, type DeviceFlowState, DropboxProvider, type DurationEstimationConfig, type EndpointValue, type EndpointsConfig, type FeedActionInterface, type FeedFileInterface, type FeedSectionInterface, type FeedVenueInterface, FormatConverters, FormatResolver, type FormatResolverOptions, HighVoltageKidsProvider, type IProvider, type InstructionItem, type Instructions, JesusFilmProvider, LessonsChurchProvider, type MediaLicenseResult, type MediaLicenseStatus, OAuthHelper, type Plan, type PlanPresentation, type PlanSection, PlanningCenterProvider, type ProviderCapabilities, type ProviderInfo, type ProviderLogos, type ResolvedFormatMeta, SignPresenterProvider, TokenHelper, VERSION, type VenueActionInterface, type VenueActionsResponseInterface, type VenueSectionActionsInterface, appendToPath, buildPath, countWords, createFile, createFolder, detectMediaType, estimateDuration, estimateImageDuration, estimateTextDuration, generatePath, getAllProviders, getAvailableProviders, getProvider, getProviderConfig, getSegment, isContentFile, isContentFolder, navigateToPath, parsePath, registerProvider };
|
|
745
|
+
export { APlayProvider, ApiHelper, type AuthType, B1ChurchProvider, BibleProjectProvider, CbnProvider, type ContentFile, type ContentFolder, type ContentItem, type ContentProviderAuthData, type ContentProviderConfig, type CurrentPlan, DEFAULT_DURATION_CONFIG, type DeviceAuthorizationResponse, DeviceFlowHelper, type DeviceFlowPollResult, type DeviceFlowState, DropboxProvider, type DurationEstimationConfig, type EndpointValue, type EndpointsConfig, type FeedActionInterface, type FeedFileInterface, type FeedSectionInterface, type FeedVenueInterface, FormatConverters, FormatResolver, type FormatResolverOptions, HighVoltageKidsProvider, type IProvider, type InstructionItem, type Instructions, JesusFilmProvider, LessonsChurchProvider, type MediaLicenseResult, type MediaLicenseStatus, type MessageFileInterface, OAuthHelper, type Plan, type PlanPresentation, type PlanSection, type PlanTimelineItem, PlanningCenterProvider, type ProviderCapabilities, type ProviderInfo, type ProviderLogos, type ResolvedFormatMeta, SignPresenterProvider, TokenHelper, VERSION, type VenueActionInterface, type VenueActionsResponseInterface, type VenueSectionActionsInterface, appendToPath, buildPath, countWords, createFile, createFolder, detectMediaType, estimateDuration, estimateImageDuration, estimateTextDuration, generatePath, getAllProviders, getAvailableProviders, getProvider, getProviderConfig, getSegment, isContentFile, isContentFolder, isMediaFile, navigateToPath, parsePath, registerProvider };
|