diff --git a/frontend/apps/editor3d/app/pages/PageEnigma/PageEditor.tsx b/frontend/apps/editor3d/app/pages/PageEnigma/PageEditor.tsx index e5cf368700..dcbe159a42 100644 --- a/frontend/apps/editor3d/app/pages/PageEnigma/PageEditor.tsx +++ b/frontend/apps/editor3d/app/pages/PageEnigma/PageEditor.tsx @@ -28,7 +28,8 @@ import { OnboardingHelper } from "./comps/OnboardingHelper"; import { FocalLengthDisplay } from "./comps/FocalLengthDisplay/FocalLengthDisplay"; import { Login } from "@frontend/login"; -import { api } from "@storyteller/api"; +// import { api } from "@storyteller/api"; +// import { AnalyticsApi } from "@storyteller/api"; export const PageEditor = () => { diff --git a/frontend/libs/api/src/index.ts b/frontend/libs/api/src/index.ts index 28f2529c23..ef3db87b7a 100644 --- a/frontend/libs/api/src/index.ts +++ b/frontend/libs/api/src/index.ts @@ -1 +1,17 @@ export * from './lib/api.js'; +export * from "./lib/AnalyticsApi.js"; +export * from "./lib/BillingApi.js"; +export * from "./lib/CommentsApi.js"; +export * from "./lib/EngineApi.js"; +export * from "./lib/FeaturedItemsApi.js"; +export * from "./lib/JobsApi.js"; +export * from "./lib/MediaFilesApi.js"; +export * from "./lib/MediaUploadApi.js"; +export * from "./lib/MiscApi.js"; +export * from "./lib/ModerationApi.js"; +export * from "./lib/PromptsApi.js"; +export * from "./lib/TtsApi.js"; +export * from "./lib/UserBookmarksApi.js"; +export * from "./lib/UsersApi.js"; +export * from "./lib/VideoApi.js"; +export * from "./lib/WeightsApi.js"; diff --git a/frontend/storyteller_backend_api/apis/AnalyticsApi.ts b/frontend/libs/api/src/lib/AnalyticsApi.ts similarity index 93% rename from frontend/storyteller_backend_api/apis/AnalyticsApi.ts rename to frontend/libs/api/src/lib/AnalyticsApi.ts index b7868b88f3..1f8f46e995 100644 --- a/frontend/storyteller_backend_api/apis/AnalyticsApi.ts +++ b/frontend/libs/api/src/lib/AnalyticsApi.ts @@ -1,4 +1,4 @@ -import { ApiManager, ApiResponse } from "./ApiManager"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; export class AnalyticsApi extends ApiManager { public PostAnalytics({ diff --git a/frontend/storyteller_backend_api/apis/ApiHelpers.ts b/frontend/libs/api/src/lib/ApiHelpers.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/ApiHelpers.ts rename to frontend/libs/api/src/lib/ApiHelpers.ts diff --git a/frontend/storyteller_backend_api/apis/ApiManager.ts b/frontend/libs/api/src/lib/ApiManager.ts similarity index 99% rename from frontend/storyteller_backend_api/apis/ApiManager.ts rename to frontend/libs/api/src/lib/ApiManager.ts index 3b2f566fa4..5299458e04 100644 --- a/frontend/storyteller_backend_api/apis/ApiManager.ts +++ b/frontend/libs/api/src/lib/ApiManager.ts @@ -1,5 +1,5 @@ // import { bool } from "@techstark/opencv-js"; -import { API_TARGETS } from "../enums/Api"; +import { API_TARGETS } from "./enums/Api.js"; type NonNullableObject = NonNullable; diff --git a/frontend/storyteller_backend_api/apis/BillingApi.ts b/frontend/libs/api/src/lib/BillingApi.ts similarity index 84% rename from frontend/storyteller_backend_api/apis/BillingApi.ts rename to frontend/libs/api/src/lib/BillingApi.ts index 304cedf5ba..bd63b44764 100644 --- a/frontend/storyteller_backend_api/apis/BillingApi.ts +++ b/frontend/libs/api/src/lib/BillingApi.ts @@ -1,6 +1,6 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { Subscription } from "../models/Billing"; -import { LoyaltyProgram } from "../enums/Billing"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Subscription } from "./models/Billing.js"; +import { LoyaltyProgram } from "./enums/Billing.js"; export class BillingApi extends ApiManager { public async ListActiveSubscriptions(): Promise< diff --git a/frontend/storyteller_backend_api/apis/CommentsApi.ts b/frontend/libs/api/src/lib/CommentsApi.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/CommentsApi.ts rename to frontend/libs/api/src/lib/CommentsApi.ts diff --git a/frontend/storyteller_backend_api/apis/EngineApi.ts b/frontend/libs/api/src/lib/EngineApi.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/EngineApi.ts rename to frontend/libs/api/src/lib/EngineApi.ts diff --git a/frontend/storyteller_backend_api/apis/FeaturedItemsApi.ts b/frontend/libs/api/src/lib/FeaturedItemsApi.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/FeaturedItemsApi.ts rename to frontend/libs/api/src/lib/FeaturedItemsApi.ts diff --git a/frontend/storyteller_backend_api/apis/JobsApi.ts b/frontend/libs/api/src/lib/JobsApi.ts similarity index 92% rename from frontend/storyteller_backend_api/apis/JobsApi.ts rename to frontend/libs/api/src/lib/JobsApi.ts index 885140a1dc..94845db8a7 100644 --- a/frontend/storyteller_backend_api/apis/JobsApi.ts +++ b/frontend/libs/api/src/lib/JobsApi.ts @@ -1,7 +1,7 @@ // libs/api-client/src/JobsApi.ts -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { Job, JobPreview } from "../models/Job"; -import { JobState } from "../models/JobState"; +import { ApiManager, ApiResponse } from "../../../api/src/lib/ApiManager.js"; +import { Job, JobPreview } from "./models/Job.js"; +import { JobState } from "./models/JobState.js"; export class JobsApi extends ApiManager { public GetPreviewStatusByJobToken({ diff --git a/frontend/libs/api/src/lib/MediaFilesApi.ts b/frontend/libs/api/src/lib/MediaFilesApi.ts new file mode 100644 index 0000000000..8a9977123e --- /dev/null +++ b/frontend/libs/api/src/lib/MediaFilesApi.ts @@ -0,0 +1,364 @@ +import { MediaFile } from "./models/MediaFile.js"; +import { Pagination, PaginationInfinite } from "./models/Pagination.js"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Visibility } from "./enums/Visibility.js"; + +import { + FilterEngineCategories, + FilterMediaClasses, + FilterMediaType, +} from "./enums/QueryFilters.js"; + +interface ListMediaQuery { + sort_ascending?: boolean; + page_size?: number; + cursor?: string; + cursor_is_reversed?: boolean; + filter_media_classes?: FilterMediaClasses[]; + filter_media_type?: FilterMediaType[]; + filter_engine_categories?: FilterEngineCategories[]; +} + +interface ListUserMediaQuery { + username: string; + sort_ascending?: boolean; + page_size?: number; + page_index?: number; + filter_media_classes?: FilterMediaClasses[]; + filter_media_type?: FilterMediaType[]; + filter_engine_categories?: FilterEngineCategories[]; +} + +interface SearchFeaturedMediaQuery { + search_term: string; + filter_media_classes?: FilterMediaClasses[]; + filter_media_type?: FilterMediaType[]; + filter_engine_categories?: FilterEngineCategories[]; +} + +export class MediaFilesApi extends ApiManager { + public async DeleteMediaFileByToken({ + mediaFileToken, + asMod = true, + setDelete = true, + }: { + mediaFileToken: string; + asMod?: boolean; + setDelete?: boolean; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/file/${mediaFileToken}`; + + const body = { as_mod: asMod, set_delete: setDelete }; + return await this.delete< + { + as_mod: boolean; + set_delete: boolean; + }, + { + success?: boolean; + BadInput?: string; + } + >({ endpoint, body }) + .then((response) => ({ + success: response.success ?? false, + errorMessage: response.BadInput, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async ListMediaFilesByTokens({ + mediaTokens, + }: { + mediaTokens: string[]; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/batch`; + + return await this.get<{ + success: boolean; + media_files: MediaFile[]; + error_reason?: string; + }>({ endpoint, query: { tokens: mediaTokens.join(",") } }) + .then((response) => ({ + success: response.success, + data: response.media_files, + })) + .catch((err) => { + return { success: false, errorMessage: err.message }; + }); + } + + public async GetMediaFileByToken({ + mediaFileToken, + }: { + mediaFileToken: string; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/file/${mediaFileToken}`; + return await this.get<{ + success: boolean; + media_file: MediaFile; + }>({ endpoint }) + .then((response) => ({ + success: response.success, + data: response.media_file, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async ListMediaFiles( + query: ListMediaQuery, + ): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/list`; + const queryWithStrings = { + ...query, + filter_media_classes: query.filter_media_classes + ? query.filter_media_classes.join(",") + : undefined, + filter_media_type: query.filter_media_type + ? query.filter_media_type.join(",") + : undefined, + filter_engine_categories: query.filter_engine_categories + ? query.filter_engine_categories.join(",") + : undefined, + }; + return await this.get<{ + success: boolean; + results: MediaFile[]; + pagination?: PaginationInfinite; + }>({ endpoint, query: queryWithStrings }) + .then((response) => ({ + success: response.success, + data: response.results ?? [], + pagination: response.pagination, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async ListFeaturedMediaFiles( + query: ListMediaQuery, + ): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/list_featured`; + const queryWithStrings = { + ...query, + filter_media_classes: query.filter_media_classes + ? query.filter_media_classes.join(",") + : undefined, + filter_media_type: query.filter_media_type + ? query.filter_media_type.join(",") + : undefined, + filter_engine_categories: query.filter_engine_categories + ? query.filter_engine_categories.join(",") + : undefined, + }; + return await this.get<{ + success: boolean; + results: MediaFile[]; + pagination: PaginationInfinite; + }>({ endpoint, query: queryWithStrings }) + .then((response) => ({ + success: true, + data: response.results, + pagination: response.pagination, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async ListUserMediaFiles( + query: ListUserMediaQuery, + ): Promise> { + const userName = query.username; + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/list/user/${userName}`; + const queryWithStrings = { + ...query, + include_user_uploads: true, + filter_media_classes: query.filter_media_classes + ? query.filter_media_classes.join(",") + : undefined, + filter_media_type: query.filter_media_type + ? query.filter_media_type.join(",") + : undefined, + filter_engine_categories: query.filter_engine_categories + ? query.filter_engine_categories.join(",") + : undefined, + }; + return await this.get<{ + success: boolean; + results: MediaFile[]; + pagination?: Pagination; + }>({ endpoint, query: queryWithStrings }) + .then((response) => ({ + success: response.success, + data: response.results ?? [], + pagination: response.pagination, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async SearchFeaturedMediaFiles( + query: SearchFeaturedMediaQuery, + ): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/search_featured`; + const queryWithStrings = { + search_term: query.search_term, + filter_media_classes: query.filter_media_classes + ? query.filter_media_classes.join(",") + : undefined, + filter_media_type: query.filter_media_type + ? query.filter_media_type.join(",") + : undefined, + filter_engine_categories: query.filter_engine_categories + ? query.filter_engine_categories.join(",") + : undefined, + }; + return await this.get<{ + success: boolean; + results: MediaFile[]; + pagination: Pagination; + }>({ endpoint, query: queryWithStrings }) + .then((response) => ({ + success: true, + data: response.results, + pagination: response.pagination, + })) + .catch((err) => ({ + success: false, + errorMessage: err.message, + })); + } + + public async SearchUserMediaFiles( + query: SearchFeaturedMediaQuery, + ): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/search_session`; + const queryWithStrings = { + search_term: query.search_term, + filter_media_classes: query.filter_media_classes + ? query.filter_media_classes.join(",") + : undefined, + filter_media_type: query.filter_media_type + ? query.filter_media_type.join(",") + : undefined, + filter_engine_categories: query.filter_engine_categories + ? query.filter_engine_categories.join(",") + : undefined, + }; + return await this.get<{ + success: boolean; + results: MediaFile[]; + pagination: Pagination; + }>({ endpoint, query: queryWithStrings }) + .then((response) => ({ + success: true, + data: response.results, + pagination: response.pagination, + })) + .catch((err) => ({ + success: false, + errorMessage: err.message, + })); + } + + public async RenameMediaFileByToken({ + mediaToken, + name, + }: { + mediaToken: string; + name: string; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/rename/${mediaToken}`; + const body = { name }; + + return await this.post< + { name: string }, + { + success?: boolean; + BadInput?: string; + } + >({ endpoint, body }) + .then((response) => ({ + success: response.success ?? false, + errorMessage: response.BadInput, + })) + .catch((err) => { + return { success: false, errorMessage: err.message }; + }); + } + + public async UpdateCoverImage({ + mediaFileToken, + imageToken, + }: { + mediaFileToken: string; + imageToken: string; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/cover_image/${mediaFileToken}`; + return await this.post< + { cover_image_media_file_token: string }, + { + success?: boolean; + BadInput?: string; + } + >({ endpoint, body: { cover_image_media_file_token: imageToken } }) + .then((response) => ({ + success: response.success ?? false, + errorMessage: response.BadInput, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } + + public async UpdateVisibility({ + mediaFileToken, + visibility, + }: { + mediaFileToken: string; + visibility: Visibility; + }): Promise> { + const endpoint = `${this.ApiTargets.BaseApi}/v1/media_files/visibility/${mediaFileToken}`; + return await this.post< + { creator_set_visibility: string }, + { + success?: boolean; + BadInput?: string; + } + >({ endpoint, body: { creator_set_visibility: visibility } }) + .then((response) => ({ + success: response.success ?? false, + errorMessage: response.BadInput, + })) + .catch((err) => { + return { + success: false, + errorMessage: err.message, + }; + }); + } +} diff --git a/frontend/storyteller_backend_api/apis/MediaUploadApi.ts b/frontend/libs/api/src/lib/MediaUploadApi.ts similarity index 97% rename from frontend/storyteller_backend_api/apis/MediaUploadApi.ts rename to frontend/libs/api/src/lib/MediaUploadApi.ts index 6dfaf5f2df..78f31e68f1 100644 --- a/frontend/storyteller_backend_api/apis/MediaUploadApi.ts +++ b/frontend/libs/api/src/lib/MediaUploadApi.ts @@ -1,9 +1,9 @@ - -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { FilterEngineCategories } from "../enums/QueryFilters"; -import { Visibility } from "../enums/Visibility"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { FilterEngineCategories } from "./enums/QueryFilters.js"; +import { Visibility } from "./enums/Visibility.js"; +import { EIntermediateFile } from "./enums/EIntermediateFile.js"; export class MediaUploadApi extends ApiManager { - private sessionToken: string = ""; + private sessionToken = ""; private async getSessionTokenForUploadStudioShot() { const endpoint = `${this.ApiTargets.BaseApi}/v1/session_token`; @@ -336,11 +336,6 @@ export class MediaUploadApi extends ApiManager { const fileName = `${maybe_title}-${uuid}`; return this.Upload({ endpoint, blob, fileName, uuid, options }); // token comes back and send it VST } - - - - - } diff --git a/frontend/storyteller_backend_api/apis/MiscApi.ts b/frontend/libs/api/src/lib/MiscApi.ts similarity index 85% rename from frontend/storyteller_backend_api/apis/MiscApi.ts rename to frontend/libs/api/src/lib/MiscApi.ts index e72a46362e..eacb2c621f 100644 --- a/frontend/storyteller_backend_api/apis/MiscApi.ts +++ b/frontend/libs/api/src/lib/MiscApi.ts @@ -1,5 +1,5 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { StatusAlert } from "../models/StatusAlert"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { StatusAlert } from "./models/StatusAlert.js"; export class MiscApi extends ApiManager { public GetStatusAlertCheck(): Promise> { diff --git a/frontend/storyteller_backend_api/apis/ModerationApi.ts b/frontend/libs/api/src/lib/ModerationApi.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/ModerationApi.ts rename to frontend/libs/api/src/lib/ModerationApi.ts diff --git a/frontend/storyteller_backend_api/apis/PromptsApi.ts b/frontend/libs/api/src/lib/PromptsApi.ts similarity index 83% rename from frontend/storyteller_backend_api/apis/PromptsApi.ts rename to frontend/libs/api/src/lib/PromptsApi.ts index 7719156083..19730f74a9 100644 --- a/frontend/storyteller_backend_api/apis/PromptsApi.ts +++ b/frontend/libs/api/src/lib/PromptsApi.ts @@ -1,5 +1,5 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { Prompts } from "../models/Prompts"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Prompts } from "./models/Prompts.js"; export class PromptsApi extends ApiManager { public GetPromptsByToken({ diff --git a/frontend/storyteller_backend_api/apis/SegmentationApi.ts b/frontend/libs/api/src/lib/SegmentationApi.ts similarity index 97% rename from frontend/storyteller_backend_api/apis/SegmentationApi.ts rename to frontend/libs/api/src/lib/SegmentationApi.ts index dfafc18771..ae6e8af910 100644 --- a/frontend/storyteller_backend_api/apis/SegmentationApi.ts +++ b/frontend/libs/api/src/lib/SegmentationApi.ts @@ -1,4 +1,4 @@ -import { ApiManager } from "../apis/ApiManager"; +import { ApiManager } from "./ApiManager.js"; import { v4 as uuidv4 } from "uuid"; export interface Coordinates { diff --git a/frontend/storyteller_backend_api/apis/TtsApi.ts b/frontend/libs/api/src/lib/TtsApi.ts similarity index 89% rename from frontend/storyteller_backend_api/apis/TtsApi.ts rename to frontend/libs/api/src/lib/TtsApi.ts index 704bba79b1..da490452fe 100644 --- a/frontend/storyteller_backend_api/apis/TtsApi.ts +++ b/frontend/libs/api/src/lib/TtsApi.ts @@ -1,6 +1,6 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { GenerateTtsAudioErrorType } from "../enums/Tts"; -import { Visibility } from "../enums/Visibility"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { GenerateTtsAudioErrorType } from "./enums/Tts.js"; +import { Visibility } from "./enums/Visibility.js"; export interface GenerateTtsAudioRequest { creator_set_visibility?: Visibility; diff --git a/frontend/storyteller_backend_api/apis/UserBookmarksApi.ts b/frontend/libs/api/src/lib/UserBookmarksApi.ts similarity index 97% rename from frontend/storyteller_backend_api/apis/UserBookmarksApi.ts rename to frontend/libs/api/src/lib/UserBookmarksApi.ts index 7d2faded35..b64af8c230 100644 --- a/frontend/storyteller_backend_api/apis/UserBookmarksApi.ts +++ b/frontend/libs/api/src/lib/UserBookmarksApi.ts @@ -1,10 +1,10 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; import { UserBookmarkBatch, UserBookmarkByEntity, UserBookmarkByUser, -} from "../models/UserBookmark"; -import { Pagination } from "../models/Pagination"; +} from "./models/UserBookmark.js"; +import { Pagination } from "./models/Pagination.js"; export enum ScopedEntityTypes { USER = "user", diff --git a/frontend/storyteller_backend_api/apis/UserRatingsApi.ts b/frontend/libs/api/src/lib/UserRatingsApi.ts similarity index 97% rename from frontend/storyteller_backend_api/apis/UserRatingsApi.ts rename to frontend/libs/api/src/lib/UserRatingsApi.ts index 66621cbb59..fb5d586c90 100644 --- a/frontend/storyteller_backend_api/apis/UserRatingsApi.ts +++ b/frontend/libs/api/src/lib/UserRatingsApi.ts @@ -1,4 +1,4 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; export interface UserRating { entity_token: string; diff --git a/frontend/storyteller_backend_api/apis/UsersApi.ts b/frontend/libs/api/src/lib/UsersApi.ts similarity index 97% rename from frontend/storyteller_backend_api/apis/UsersApi.ts rename to frontend/libs/api/src/lib/UsersApi.ts index 169fc7cdfb..ffbcfefc58 100644 --- a/frontend/storyteller_backend_api/apis/UsersApi.ts +++ b/frontend/libs/api/src/lib/UsersApi.ts @@ -1,5 +1,5 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { UserInfo } from "../models/Users"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { UserInfo } from "./models/Users.js"; export class UsersApi extends ApiManager { public GetSession(): Promise< diff --git a/frontend/storyteller_backend_api/apis/VideoApi.ts b/frontend/libs/api/src/lib/VideoApi.ts similarity index 94% rename from frontend/storyteller_backend_api/apis/VideoApi.ts rename to frontend/libs/api/src/lib/VideoApi.ts index 343546ce79..c8e664c5ef 100644 --- a/frontend/storyteller_backend_api/apis/VideoApi.ts +++ b/frontend/libs/api/src/lib/VideoApi.ts @@ -1,5 +1,5 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { Visibility } from "../enums/Visibility"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Visibility } from "./enums/Visibility.js"; interface GenerateVideoStyleTransferRequest { creator_set_visibility: string; diff --git a/frontend/storyteller_backend_api/apis/VoiceConversionApi.ts b/frontend/libs/api/src/lib/VoiceConversionApi.ts similarity index 95% rename from frontend/storyteller_backend_api/apis/VoiceConversionApi.ts rename to frontend/libs/api/src/lib/VoiceConversionApi.ts index e9a27ad2bf..affafae9c0 100644 --- a/frontend/storyteller_backend_api/apis/VoiceConversionApi.ts +++ b/frontend/libs/api/src/lib/VoiceConversionApi.ts @@ -1,4 +1,4 @@ -import { ApiManager, ApiResponse } from "./ApiManager"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; interface VoiceConversionParams { autoPredictF0?: boolean; diff --git a/frontend/storyteller_backend_api/apis/VoiceDesignerApi.ts b/frontend/libs/api/src/lib/VoiceDesignerApi.ts similarity index 91% rename from frontend/storyteller_backend_api/apis/VoiceDesignerApi.ts rename to frontend/libs/api/src/lib/VoiceDesignerApi.ts index 6054d72ce0..fce83b9ab3 100644 --- a/frontend/storyteller_backend_api/apis/VoiceDesignerApi.ts +++ b/frontend/libs/api/src/lib/VoiceDesignerApi.ts @@ -1,6 +1,6 @@ -import { ApiManager, ApiResponse } from "./ApiManager"; -import { Pagination } from "../models/Pagination"; -import { ZsDataset } from "../models/Dataset"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Pagination } from "./models/Pagination.js"; +import { ZsDataset } from "./models/Dataset.js"; interface VoiceDesignerParams { text: string; diff --git a/frontend/storyteller_backend_api/apis/WeightsApi.ts b/frontend/libs/api/src/lib/WeightsApi.ts similarity index 96% rename from frontend/storyteller_backend_api/apis/WeightsApi.ts rename to frontend/libs/api/src/lib/WeightsApi.ts index 099bfd33a6..086922abe7 100644 --- a/frontend/storyteller_backend_api/apis/WeightsApi.ts +++ b/frontend/libs/api/src/lib/WeightsApi.ts @@ -1,12 +1,12 @@ -import { ApiManager, ApiResponse } from "./ApiManager"; -import { Weight } from "../models/Weight"; -import { Pagination, PaginationInfinite } from "../models/Pagination"; +import { ApiManager, ApiResponse } from "./ApiManager.js"; +import { Weight } from "./models/Weight.js"; +import { Pagination, PaginationInfinite } from "./models/Pagination.js"; import { FilterEngineCategories, FilterMediaClasses, FilterMediaType, -} from "../enums/QueryFilters"; -import { Visibility } from "../enums/Visibility"; +} from "./enums/QueryFilters.js"; +import { Visibility } from "./enums/Visibility.js"; export enum ScopedWeightType { HIFIGAN_TT2 = "hifigan_tt2", diff --git a/frontend/storyteller_backend_api/enums/Api.ts b/frontend/libs/api/src/lib/enums/Api.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/Api.ts rename to frontend/libs/api/src/lib/enums/Api.ts diff --git a/frontend/storyteller_backend_api/enums/Billing.ts b/frontend/libs/api/src/lib/enums/Billing.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/Billing.ts rename to frontend/libs/api/src/lib/enums/Billing.ts diff --git a/frontend/libs/api/src/lib/enums/EIntermediateFile.ts b/frontend/libs/api/src/lib/enums/EIntermediateFile.ts new file mode 100644 index 0000000000..81eadc84a4 --- /dev/null +++ b/frontend/libs/api/src/lib/enums/EIntermediateFile.ts @@ -0,0 +1,4 @@ +export enum EIntermediateFile { + "true", + "false" +} diff --git a/frontend/storyteller_backend_api/enums/Job.ts b/frontend/libs/api/src/lib/enums/Job.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/Job.ts rename to frontend/libs/api/src/lib/enums/Job.ts diff --git a/frontend/storyteller_backend_api/enums/MediaFileClass.ts b/frontend/libs/api/src/lib/enums/MediaFileClass.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/MediaFileClass.ts rename to frontend/libs/api/src/lib/enums/MediaFileClass.ts diff --git a/frontend/storyteller_backend_api/enums/MediaFileType.ts b/frontend/libs/api/src/lib/enums/MediaFileType.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/MediaFileType.ts rename to frontend/libs/api/src/lib/enums/MediaFileType.ts diff --git a/frontend/storyteller_backend_api/enums/QueryFilters.ts b/frontend/libs/api/src/lib/enums/QueryFilters.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/QueryFilters.ts rename to frontend/libs/api/src/lib/enums/QueryFilters.ts diff --git a/frontend/storyteller_backend_api/enums/Tts.ts b/frontend/libs/api/src/lib/enums/Tts.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/Tts.ts rename to frontend/libs/api/src/lib/enums/Tts.ts diff --git a/frontend/storyteller_backend_api/enums/UserFeatures.ts b/frontend/libs/api/src/lib/enums/UserFeatures.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/UserFeatures.ts rename to frontend/libs/api/src/lib/enums/UserFeatures.ts diff --git a/frontend/storyteller_backend_api/enums/Visibility.ts b/frontend/libs/api/src/lib/enums/Visibility.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/Visibility.ts rename to frontend/libs/api/src/lib/enums/Visibility.ts diff --git a/frontend/storyteller_backend_api/enums/WeightCategory.ts b/frontend/libs/api/src/lib/enums/WeightCategory.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/WeightCategory.ts rename to frontend/libs/api/src/lib/enums/WeightCategory.ts diff --git a/frontend/storyteller_backend_api/enums/WeightType.ts b/frontend/libs/api/src/lib/enums/WeightType.ts similarity index 100% rename from frontend/storyteller_backend_api/enums/WeightType.ts rename to frontend/libs/api/src/lib/enums/WeightType.ts diff --git a/frontend/storyteller_backend_api/apis/index.ts b/frontend/libs/api/src/lib/index.ts similarity index 100% rename from frontend/storyteller_backend_api/apis/index.ts rename to frontend/libs/api/src/lib/index.ts diff --git a/frontend/storyteller_backend_api/models/BetaKeys.ts b/frontend/libs/api/src/lib/models/BetaKeys.ts similarity index 100% rename from frontend/storyteller_backend_api/models/BetaKeys.ts rename to frontend/libs/api/src/lib/models/BetaKeys.ts diff --git a/frontend/storyteller_backend_api/models/Billing.tsx b/frontend/libs/api/src/lib/models/Billing.ts similarity index 92% rename from frontend/storyteller_backend_api/models/Billing.tsx rename to frontend/libs/api/src/lib/models/Billing.ts index c0cb1c4c4d..cea1afd540 100644 --- a/frontend/storyteller_backend_api/models/Billing.tsx +++ b/frontend/libs/api/src/lib/models/Billing.ts @@ -2,7 +2,7 @@ import { LoyaltyProgram, SubscriptionNamespace, SubscriptionProduct, -} from "../enums/Billing"; +} from "../enums/Billing.js"; export interface ActiveSubscriptions { // user's list of subscriptions diff --git a/frontend/storyteller_backend_api/models/Dataset.ts b/frontend/libs/api/src/lib/models/Dataset.ts similarity index 100% rename from frontend/storyteller_backend_api/models/Dataset.ts rename to frontend/libs/api/src/lib/models/Dataset.ts diff --git a/frontend/storyteller_backend_api/models/Job.ts b/frontend/libs/api/src/lib/models/Job.ts similarity index 97% rename from frontend/storyteller_backend_api/models/Job.ts rename to frontend/libs/api/src/lib/models/Job.ts index ed8fb27c8c..ebc2788aca 100644 --- a/frontend/storyteller_backend_api/models/Job.ts +++ b/frontend/libs/api/src/lib/models/Job.ts @@ -1,4 +1,4 @@ -import { JobStatus } from "../enums/Job"; +import { JobStatus } from "../enums/Job.js"; export interface Job { created_at: string; diff --git a/frontend/storyteller_backend_api/models/JobState.ts b/frontend/libs/api/src/lib/models/JobState.ts similarity index 100% rename from frontend/storyteller_backend_api/models/JobState.ts rename to frontend/libs/api/src/lib/models/JobState.ts diff --git a/frontend/storyteller_backend_api/models/MediaFile.ts b/frontend/libs/api/src/lib/models/MediaFile.ts similarity index 100% rename from frontend/storyteller_backend_api/models/MediaFile.ts rename to frontend/libs/api/src/lib/models/MediaFile.ts diff --git a/frontend/storyteller_backend_api/models/Pagination.ts b/frontend/libs/api/src/lib/models/Pagination.ts similarity index 100% rename from frontend/storyteller_backend_api/models/Pagination.ts rename to frontend/libs/api/src/lib/models/Pagination.ts diff --git a/frontend/storyteller_backend_api/models/Prompts.ts b/frontend/libs/api/src/lib/models/Prompts.ts similarity index 100% rename from frontend/storyteller_backend_api/models/Prompts.ts rename to frontend/libs/api/src/lib/models/Prompts.ts diff --git a/frontend/storyteller_backend_api/models/StatusAlert.ts b/frontend/libs/api/src/lib/models/StatusAlert.ts similarity index 100% rename from frontend/storyteller_backend_api/models/StatusAlert.ts rename to frontend/libs/api/src/lib/models/StatusAlert.ts diff --git a/frontend/storyteller_backend_api/models/UserBookmark.ts b/frontend/libs/api/src/lib/models/UserBookmark.ts similarity index 100% rename from frontend/storyteller_backend_api/models/UserBookmark.ts rename to frontend/libs/api/src/lib/models/UserBookmark.ts diff --git a/frontend/storyteller_backend_api/models/Users.ts b/frontend/libs/api/src/lib/models/Users.ts similarity index 93% rename from frontend/storyteller_backend_api/models/Users.ts rename to frontend/libs/api/src/lib/models/Users.ts index 8fa2cf9560..5f7fe39d47 100644 --- a/frontend/storyteller_backend_api/models/Users.ts +++ b/frontend/libs/api/src/lib/models/Users.ts @@ -1,4 +1,4 @@ -import { USER_FEATURE_FLAGS } from "../enums/UserFeatures"; +import { USER_FEATURE_FLAGS } from "../../libs/api/src/lib/enums/UserFeatures"; export interface CoreInfo { default_avatar: { diff --git a/frontend/storyteller_backend_api/models/Weight.ts b/frontend/libs/api/src/lib/models/Weight.ts similarity index 100% rename from frontend/storyteller_backend_api/models/Weight.ts rename to frontend/libs/api/src/lib/models/Weight.ts diff --git a/frontend/storyteller_backend_api/apis/BetaKeysApi.ts b/frontend/storyteller_backend_api/apis/BetaKeysApi.ts deleted file mode 100644 index e91fe83f1a..0000000000 --- a/frontend/storyteller_backend_api/apis/BetaKeysApi.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { ApiManager, ApiResponse } from "../apis/ApiManager"; -import { BetaKey } from "../models/BetaKeys"; -import { Pagination } from "../models/Pagination"; - -export class BetaKeysApi extends ApiManager { - public CreateBetaKey({ - maybeNote, - maybeReferrerUsername, - numberOfKeys, - uuidIdempotencyToken, - }: { - maybeNote?: string; - maybeReferrerUsername?: string; - numberOfKeys: number; - uuidIdempotencyToken: string; - }): Promise> { - const endpoint = `${this.ApiTargets.BaseApi}/v1/beta_keys/create`; - - const body = { - maybe_note: maybeNote, - maybe_referrer_username: maybeReferrerUsername, - number_of_keys: numberOfKeys, - uuid_idempotency_token: uuidIdempotencyToken, - }; - - return this.post< - { - maybe_note?: string; - maybe_referrer_username?: string; - number_of_keys: number; - uuid_idempotency_token: string; - }, - { - success?: boolean; - beta_keys?: string[]; - BadInput?: string; - } - >({ endpoint, body }) - .then((response) => ({ - success: response.success ?? false, - data: response.beta_keys, - errorMessage: response.BadInput, - })) - .catch((err) => { - return { success: false, errorMessage: err.message }; - }); - } - - public ListBetaKeys({ - sortAscending, - pageSize, - pageIndex, - maybeReferrerUsername, - onlyListRemaining, - }: { - sortAscending?: boolean; - pageSize?: number; - pageIndex?: number; - maybeReferrerUsername?: string; - onlyListRemaining?: boolean; - }): Promise> { - const endpoint = `${this.ApiTargets.BaseApi}/v1/beta_keys/list`; - - const query = { - sort_ascending: sortAscending, - page_size: pageSize, - page_index: pageIndex, - maybe_referrer_username: maybeReferrerUsername, - only_list_remaining: onlyListRemaining, - }; - - return this.get<{ - success?: boolean; - beta_keys?: BetaKey[]; - pagination?: Pagination; - BadInput?: string; - }>({ endpoint, query }) - .then((response) => ({ - success: response.success ?? false, - data: response.beta_keys, - pagination: response.pagination, - errorMessage: response.BadInput, - })) - .catch((err) => { - return { success: false, errorMessage: err.message }; - }); - } - - public RedeemBetaKey({ - betaKey, - }: { - betaKey: string; - }): Promise> { - const endpoint = `${this.ApiTargets.BaseApi}/v1/beta_keys/redeem`; - - return this.post< - { - beta_key: string; - }, - { - success?: boolean; - BadInput?: string; - } - >({ endpoint, body: { beta_key: betaKey } }) - .then((response) => ({ - success: response.success ?? false, - errorMessage: response.BadInput, - })) - .catch((err) => { - return { success: false, errorMessage: err.message }; - }); - } - - public UpdateBetaKeyIsDistributed({ - betaKey, - isDistributed, - }: { - betaKey: string; - isDistributed: boolean; - }): Promise> { - const endpoint = `${this.ApiTargets.BaseApi}/v1/beta_keys/${betaKey}/distributed`; - - return this.post< - { - is_distributed: boolean; - }, - { - success?: boolean; - BadInput?: string; - } - >({ endpoint, body: { is_distributed: isDistributed } }) - .then((response) => ({ - success: response.success ?? false, - errorMessage: response.BadInput, - })) - .catch((err) => { - return { success: false, errorMessage: err.message }; - }); - } - - public UpdateBetaKeyNote({ - token, - note, - }: { - token: string; - note?: string; - }): Promise> { - const endpoint = `${this.ApiTargets.BaseApi}/v1/beta_keys/${token}/note`; - - return this.post< - { - note?: string; - }, - { - success?: boolean; - BadInput?: string; - } - >({ endpoint, body: { note } }) - .then((response) => ({ - success: response.success ?? false, - errorMessage: response.BadInput, - })) - .catch((err) => { - return { success: false, errorMessage: err.message }; - }); - } -} diff --git a/frontend/storyteller_backend_api/folder_comparison_20250416_133319.md b/frontend/storyteller_backend_api/folder_comparison_20250416_133319.md deleted file mode 100644 index b1b22594f9..0000000000 --- a/frontend/storyteller_backend_api/folder_comparison_20250416_133319.md +++ /dev/null @@ -1,143 +0,0 @@ -# Recursive Folder Comparison Report: Classes vs Classes - -Generated on: 2025-04-16 13:33:19 - -## File Comparison Table - -| File Path | Status | Classes | Classes | Difference | -|------------------------------------|----------|--------------------|--------------------|------------------------------| - -| ApiManager/MediaFilesApi.ts | be67aab2:44342e0f | 10.6KB (364 lines) | 10.6KB (369 lines) | +56B (+5 lines) 5% different | - -| ApiManager/VoiceDesignerApi.ts | e4d874c3:3635ba42 | 2.0KB (77 lines) | 2.1KB (78 lines) | +94B (+1 lines) 5% different | -| ApiManager/PromptsApi.ts | d73d329a:c4824d2e | 648B (25 lines) | 657B (25 lines) | +9B (0 lines) 4% different | - -## Files Present in One Folder But Missing in the Other - - -### Files Only in Classes (23 files) -- `ApiManager/SegmentationApi.ts` (1.9KB, 84 lines, hash: bb14fbf6) -- `ApiManager/enums/Api.ts` (254B, 7 lines, hash: ea867d98) -- `ApiManager/enums/Billing.ts` (242B, 11 lines, hash: e47c3eaa) -- `ApiManager/enums/Job.ts` (433B, 16 lines, hash: d148fd64) -- `ApiManager/enums/MediaFileClass.ts` (524B, 26 lines, hash: c90ce542) -- `ApiManager/enums/MediaFileType.ts` (1.7KB, 58 lines, hash: a2374fec) -- `ApiManager/enums/QueryFilters.ts` (579B, 29 lines, hash: 6d10a292) -- `ApiManager/enums/Tts.ts` (205B, 7 lines, hash: f6393d2e) -- `ApiManager/enums/UserFeatures.ts` (167B, 6 lines, hash: 05d49e51) -- `ApiManager/enums/Visibility.ts` (92B, 5 lines, hash: 297d031b) -- `ApiManager/enums/WeightCategory.ts` (180B, 8 lines, hash: f9be3d32) -- `ApiManager/enums/WeightType.ts` (208B, 11 lines, hash: 80436726) -- `ApiManager/models/BetaKeys.ts` (502B, 26 lines, hash: 7c718ac6) -- `ApiManager/models/Billing.tsx` (416B, 17 lines, hash: 8db6eb3b) -- `ApiManager/models/Dataset.ts` (588B, 23 lines, hash: 6af860ff) -- `ApiManager/models/Job.ts` (1.8KB, 72 lines, hash: 9d7b385a) -- `ApiManager/models/MediaFile.ts` (1.8KB, 59 lines, hash: 41778349) -- `ApiManager/models/Pagination.ts` (200B, 9 lines, hash: 837b24d3) -- `ApiManager/models/Prompts.ts` (424B, 16 lines, hash: 8ef1f366) -- `ApiManager/models/StatusAlert.ts` (175B, 9 lines, hash: fcee4684) -- `ApiManager/models/UserBookmark.ts` (1.6KB, 75 lines, hash: 8f70d1b1) -- `ApiManager/models/Users.ts` (1.3KB, 50 lines, hash: 5ed82bbd) -- `ApiManager/models/Weight.ts` (767B, 40 lines, hash: 3f9cccdb) - -### Files Only in Classes (4 files) -- `ApiHelpers.ts` (637B, 17 lines, hash: 9b638c6c) -- `ApiManager/StudioGen2Api.ts` (1.6KB, 61 lines, hash: b2707195) -- `EnvironmentVariables.ts` (263B, 10 lines, hash: 29c93666) -- `GetFrontendEnvironment.ts` (1.9KB, 65 lines, hash: 7ee8b738) - -## Files with Differences (Sorted by Most Different First) - -### `ApiManager/MediaUploadApi.ts` (72% different) -- Classes: 10.3KB, 349 lines, hash: 707d2bf2 -- Classes: 10.0KB, 339 lines, hash: 06a93d8c -- Difference: -255 bytes, -10 lines - -### `ApiManager/EngineApi.ts` (69% different) -- Classes: 1.0KB, 39 lines, hash: c4850e80 -- Classes: 5.5KB, 213 lines, hash: 85e20a81 -- Difference: +4469 bytes, +174 lines - -### `ApiManager/JobsApi.ts` (28% different) -- Classes: 2.0KB, 77 lines, hash: f7eb8e22 -- Classes: 1.9KB, 74 lines, hash: 2aa03349 -- Difference: -56 bytes, -3 lines - -### `ApiManager/ApiManager.ts` (14% different) -- Classes: 5.5KB, 235 lines, hash: 44db0b07 -- Classes: 5.3KB, 211 lines, hash: 67a3a046 -- Difference: -200 bytes, -24 lines - -### `ApiManager/BillingApi.ts` (6% different) -- Classes: 1.0KB, 33 lines, hash: 20051893 -- Classes: 1.0KB, 33 lines, hash: f5b7af84 -- Difference: -8 bytes, +0 lines - -### `ApiManager/VoiceDesignerApi.ts` (5% different) -- Classes: 2.0KB, 77 lines, hash: e4d874c3 -- Classes: 2.1KB, 78 lines, hash: 3635ba42 -- Difference: +94 bytes, +1 lines - -### `ApiManager/MediaFilesApi.ts` (5% different) -- Classes: 10.6KB, 364 lines, hash: be67aab2 -- Classes: 10.6KB, 369 lines, hash: 44342e0f -- Difference: +56 bytes, +5 lines - -### `ApiManager/PromptsApi.ts` (4% different) -- Classes: 648B, 25 lines, hash: d73d329a -- Classes: 657B, 25 lines, hash: c4824d2e -- Difference: +9 bytes, +0 lines - -### `ApiManager/MiscApi.ts` (3% different) -- Classes: 799B, 26 lines, hash: 298f5d93 -- Classes: 799B, 26 lines, hash: 187ad676 -- Difference: +0 bytes, +0 lines - -### `ApiManager/TtsApi.ts` (3% different) -- Classes: 1.7KB, 64 lines, hash: 5feb5cad -- Classes: 1.7KB, 64 lines, hash: 6228b278 -- Difference: +2 bytes, +0 lines - -### `ApiManager/index.ts` (2% different) -- Classes: 564B, 18 lines, hash: 55a9094b -- Classes: 597B, 19 lines, hash: 1fe59701 -- Difference: +33 bytes, +1 lines - -### `ApiManager/UserBookmarksApi.ts` (2% different) -- Classes: 5.4KB, 201 lines, hash: e3e4cb19 -- Classes: 5.5KB, 202 lines, hash: fd3afc78 -- Difference: +56 bytes, +1 lines - -### `ApiManager/WeightsApi.ts` (2% different) -- Classes: 7.8KB, 295 lines, hash: c12a98df -- Classes: 7.9KB, 296 lines, hash: 8a7dbb68 -- Difference: +39 bytes, +1 lines - -### `ApiManager/VideoApi.ts` (1% different) -- Classes: 1.9KB, 70 lines, hash: a9947328 -- Classes: 1.9KB, 70 lines, hash: cb947c07 -- Difference: -11 bytes, +0 lines - -### `ApiManager/BetaKeysApi.ts` (1% different) -- Classes: 4.3KB, 167 lines, hash: 8d4ec6f1 -- Classes: 4.3KB, 167 lines, hash: 33f1e4b3 -- Difference: -3 bytes, +0 lines - -### `ApiManager/UsersApi.ts` (0% different) -- Classes: 3.9KB, 161 lines, hash: 65121217 -- Classes: 3.9KB, 161 lines, hash: 72db0eae -- Difference: -6 bytes, +0 lines - - -## Summary -- **Total Unique Files**: 49 -- **Files in Classes**: 45 -- **Files in Classes**: 26 -- **Identical Files**: 6 -- **Different Files**: 16 -- **Files Only in Classes**: 23 -- **Files Only in Classes**: 4 - -## Path Information -- Classes: `/Users/michaelchung/storyteller-rust/frontend/apps/editor2d/src/Classes/` -- Classes: `/Users/michaelchung/storyteller-rust/frontend/apps/editor3d/app/Classes/` \ No newline at end of file