@quranjs/api 2.2.0 → 3.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/README.md +30 -10
- package/dist/index-BZgqOfA4.d.mts +228 -0
- package/dist/index-BZgqOfA4.d.ts +228 -0
- package/dist/index.d.mts +9 -937
- package/dist/index.d.ts +9 -937
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +2 -2
- package/dist/index.min.mjs.map +1 -1
- package/dist/public.d.mts +212 -0
- package/dist/public.d.ts +212 -0
- package/dist/public.min.js +3 -0
- package/dist/public.min.js.map +1 -0
- package/dist/public.min.mjs +3 -0
- package/dist/public.min.mjs.map +1 -0
- package/dist/runtime-utils-CxjOQDsB.d.mts +3 -0
- package/dist/runtime-utils-CxjOQDsB.d.ts +3 -0
- package/dist/server.d.mts +337 -0
- package/dist/server.d.ts +337 -0
- package/dist/server.min.js +3 -0
- package/dist/server.min.js.map +1 -0
- package/dist/server.min.mjs +3 -0
- package/dist/server.min.mjs.map +1 -0
- package/dist/verses-DnPcyHIi.d.ts +739 -0
- package/dist/verses-qzAdux2V.d.mts +739 -0
- package/package.json +25 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/generated/specs/public-operation-catalog.json","../src/generated/public-contracts.ts","../src/lib/http-utils.ts","../src/generated/contracts.ts","../src/lib/runtime-utils.ts","../src/lib/url.ts","../src/lib/service-config.ts","../src/sdk/public-fetcher.ts","../src/runtime/create-public-client.ts","../src/public.ts"],"names":["public_operation_catalog_default","publicOperationCatalog","prepareBody","request","headers","toUserSession","token","currentSession","expiresIn","accessToken","idToken","refreshToken","tokenType","scope","expiresAt","resolveCatalogOperation","section","operationName","operation","HTTP_METHOD_TO_MUTATION_NAME","toCamelCase","value","parts","part","index","lower","toPascalCase","camel","isPathParam","segment","getResourceSegments","path","segments","pickGeneratedMethodName","resourceSegments","lastSegment","literalSegments","lastLiteral","groupLiteral","createRawClient","fetcher","rawOperations","resolvedOperation","createGeneratedGroups","groups","literals","groupName","suggestedName","currentGroup","methodName","decamelize","humps","ensureLeadingSlash","removeTrailingSlash","replacePathParams","params","_match","rawKey","normalizePathTemplate","fieldsKey","fieldsKeySet","key","preservedKeys","paramsToString","options","paramsString","rawValue","fields","fieldKey","DEFAULT_BASE_URLS","DIRECT_PATH_PREFIX","GATEWAY_PATH_PREFIX","LEGACY_PREFIXES","camelizeKeys","PublicQuranFetcher","config","doFetch","storedSession","session","service","query","baseUrl","usesGateway","servicePath","effectiveAuth","url","body","response","json","auth","services","directBaseUrl","normalizedPath","legacyPrefix","prefix","SERVER_ONLY_MESSAGE","LEGACY_BOOKMARK_GET_MESSAGE","createUserServiceRequest","method","createAuthFacade","raw","generatedGroups","collectionId","bookmarkId","id","noteId","verseKey","createQuranReflectFacade","createOAuth2Facade","exchangeToken","requestRefreshToken","createServerOnlyGuard","fail","proxy","_target","property","createPublicRuntimeClient","authV1","quranReflectV1","oauth2V1","serverOnlyGuard","createPublicClient"],"mappings":"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","file":"public.min.mjs","sourcesContent":["{\n \"auth\": {\n \"v1\": {\n \"operations\": {\n \"getV1Collections\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/collections\"\n },\n \"postV1Collections\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/collections\"\n },\n \"postV1CollectionsByCollectionIdBookmarks\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/collections/{collectionId}/bookmarks\"\n },\n \"deleteV1CollectionsByCollectionIdBookmarks\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/collections/{collectionId}/bookmarks\"\n },\n \"getV1CollectionsByCollectionId\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/collections/{collectionId}\"\n },\n \"postV1CollectionsByCollectionId\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/collections/{collectionId}\"\n },\n \"deleteV1CollectionsByCollectionId\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/collections/{collectionId}\"\n },\n \"deleteV1CollectionsByCollectionIdBookmarksByBookmarkId\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/collections/{collectionId}/bookmarks/{bookmarkId}\"\n },\n \"getV1CollectionsAll\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/collections/all\"\n },\n \"getV1Bookmarks\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/bookmarks\"\n },\n \"postV1Bookmarks\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/bookmarks\"\n },\n \"deleteV1BookmarksByBookmarkId\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/bookmarks/{bookmarkId}\"\n },\n \"getV1BookmarksAyahsRange\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/bookmarks/ayahs-range\"\n },\n \"getV1BookmarksBookmark\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/bookmarks/bookmark\"\n },\n \"getV1BookmarksCollections\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/bookmarks/collections\"\n },\n \"getV1Preferences\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/preferences\"\n },\n \"postV1Preferences\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/preferences\"\n },\n \"postV1PreferencesBulk\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/preferences/bulk\"\n },\n \"getV1ReadingSessions\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/reading-sessions\"\n },\n \"postV1ReadingSessions\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/reading-sessions\"\n },\n \"getV1GoalsGetTodaysPlan\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/goals/get-todays-plan\"\n },\n \"putV1GoalsById\": {\n \"auth\": \"user\",\n \"method\": \"put\",\n \"path\": \"/v1/goals/{id}\"\n },\n \"deleteV1GoalsById\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/goals/{id}\"\n },\n \"postV1Goals\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/goals\"\n },\n \"getV1GoalsEstimate\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/goals/estimate\"\n },\n \"getV1Streaks\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/streaks\"\n },\n \"getV1StreaksCurrentStreakDays\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/streaks/current-streak-days\"\n },\n \"getV1ActivityDays\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/activity-days\"\n },\n \"postV1ActivityDays\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/activity-days\"\n },\n \"getV1ActivityDaysEstimateReadingTime\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/activity-days/estimate-reading-time\"\n },\n \"getV1Notes\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes\"\n },\n \"postV1Notes\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/notes\"\n },\n \"getV1NotesByVerseByVerseKey\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes/by-verse/{verseKey}\"\n },\n \"getV1NotesByAttachedEntity\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes/by-attached-entity\"\n },\n \"getV1NotesCountWithinRange\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes/count-within-range\"\n },\n \"getV1NotesByRange\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes/by-range\"\n },\n \"getV1NotesByNoteId\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/notes/{noteId}\"\n },\n \"patchV1NotesByNoteId\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/notes/{noteId}\"\n },\n \"deleteV1NotesByNoteId\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/notes/{noteId}\"\n },\n \"postV1NotesByNoteIdPublish\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/notes/{noteId}/publish\"\n }\n },\n \"service\": \"auth\",\n \"version\": \"v1\"\n }\n },\n \"oauth2\": {\n \"v1\": {\n \"operations\": {\n \"oauth2TokenExchange\": {\n \"auth\": \"none\",\n \"method\": \"post\",\n \"path\": \"/oauth2/token\"\n },\n \"introspectOauth2Token\": {\n \"auth\": \"none\",\n \"method\": \"post\",\n \"path\": \"/oauth2/introspect\"\n },\n \"oAuth2Authorize\": {\n \"auth\": \"none\",\n \"method\": \"get\",\n \"path\": \"/oauth2/auth\"\n },\n \"getOidcUserInfo\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/userinfo\"\n },\n \"revokeOidcSession\": {\n \"auth\": \"none\",\n \"method\": \"get\",\n \"path\": \"/oauth2/sessions/logout\"\n }\n },\n \"service\": \"oauth2\",\n \"version\": \"v1\"\n }\n },\n \"quranReflect\": {\n \"v1\": {\n \"operations\": {\n \"usersControllerProfile\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/profile\"\n },\n \"usersControllerUpdateProfile\": {\n \"auth\": \"user\",\n \"method\": \"put\",\n \"path\": \"/v1/users/profile\"\n },\n \"usersControllerEditProfile\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/users/profile\"\n },\n \"usersControllerRooms\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/my-rooms\"\n },\n \"usersControllerSearch\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/search\"\n },\n \"usersControllerToggleFollow\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/users/{followeeId}/toggle-follow\"\n },\n \"usersControllerRemoveFollower\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/users/{followerId}/remove-follower\"\n },\n \"usersControllerGetUserProfile\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/{id}\"\n },\n \"usersControllerGetUserProfile2\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/{username}/profile\"\n },\n \"usersControllerGetUserFollowers\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/{id}/followers\"\n },\n \"usersControllerGetUserFollowing\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/users/{id}/following\"\n },\n \"roomsControllerAdminsAccess\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/admins-access\"\n },\n \"roomsControllerCreateNewGroup\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/groups\"\n },\n \"roomsControllerUpdateGroup\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/rooms/groups\"\n },\n \"roomsControllerCreateNewPage\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/pages\"\n },\n \"roomsControllerUpdatePage\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/rooms/pages\"\n },\n \"roomsControllerGetRoomMembers\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/{id}/members\"\n },\n \"roomsControllerInviteUserToRoom\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/{id}/invite\"\n },\n \"roomsControllerAcceptInvite\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/{id}/accept-invite\"\n },\n \"roomsControllerRejectInvite\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/{id}/reject-invite\"\n },\n \"roomsControllerRemoveMember\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/rooms/{id}/members/{userId}\"\n },\n \"roomsControllerGetRooms\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/joined-rooms\"\n },\n \"roomsControllerGetRooms2\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/managed-rooms\"\n },\n \"roomsControllerSearchRooms\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/search\"\n },\n \"roomsControllerGetRoomProfile\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/group/{url}\"\n },\n \"roomsControllerGetRoomProfile2\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/page/{subdomain}\"\n },\n \"roomsControllerAcceptByPrivateToken\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/group/{url}/accept/{token}\"\n },\n \"roomsControllerAcceptByPrivateToken2\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/page/{subdomain}/accept/{token}\"\n },\n \"roomsControllerGetRoomProfileById\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/{id}\"\n },\n \"roomsControllerGetRoomPosts\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/rooms/{id}/posts\"\n },\n \"roomsControllerJoinRoom\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/{groupId}/join\"\n },\n \"roomsControllerLeaveGroup\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/{groupId}/leave\"\n },\n \"roomsControllerFollowPage\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/{pageId}/follow\"\n },\n \"roomsControllerUnfollowPage\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/rooms/{pageId}/unfollow\"\n },\n \"roomsControllerUpdatePostPrivacy\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/rooms/{roomId}/posts/{postId}/privacy\"\n },\n \"postsControllerFeed\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/feed\"\n },\n \"postsControllerGetRelatedPosts\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/{postId}/related\"\n },\n \"postsControllerGetLoggedinUserPosts\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/my-posts\"\n },\n \"postsControllerGetLikedState\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/{id}/liked\"\n },\n \"postsControllerFindOne\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/{id}\"\n },\n \"postsControllerEdit\": {\n \"auth\": \"user\",\n \"method\": \"patch\",\n \"path\": \"/v1/posts/{id}\"\n },\n \"postsControllerDelete\": {\n \"auth\": \"user\",\n \"method\": \"delete\",\n \"path\": \"/v1/posts/{id}\"\n },\n \"postsControllerViewTracking\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/viewed/{id}\"\n },\n \"postsControllerCreate\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/posts\"\n },\n \"postsControllerReportAbuse\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/posts/{id}/report\"\n },\n \"postsControllerGetUserPost\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/user-posts/{id}\"\n },\n \"postsControllerToggleLike\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/posts/{id}/toggle-like\"\n },\n \"postsControllerToggleSave\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/posts/{id}/toggle-save\"\n },\n \"postsControllerGetComments\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/{id}/comments\"\n },\n \"postsControllerGetAllComment\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/{id}/all-comments\"\n },\n \"postsControllerExportMultiplePosts\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/posts/export/pdf\"\n },\n \"postsControllerGetMyPostsCountWithinRange\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/count-within-range\"\n },\n \"postsControllerGetMyPostsByVerse\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/posts/by-verse/{verseKey}\"\n },\n \"tagsControllerFind\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/tags\"\n },\n \"commentsControllerCreate\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/comments\"\n },\n \"commentsControllerDeleteComment\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/comments/{id}/delete\"\n },\n \"commentsControllerToggleLike\": {\n \"auth\": \"user\",\n \"method\": \"post\",\n \"path\": \"/v1/comments/{id}/toggle-like\"\n },\n \"commentsControllerGet\": {\n \"auth\": \"user\",\n \"method\": \"get\",\n \"path\": \"/v1/comments/{id}/replies\"\n }\n },\n \"service\": \"quranReflect\",\n \"version\": \"v1\"\n }\n }\n}\n","import type {\n CatalogOperationDefinition as BaseCatalogOperationDefinition,\n OperationDefinition as BaseOperationDefinition,\n ServiceOperationCatalog as BaseServiceOperationCatalog,\n HttpMethod,\n OperationAuthMode,\n} from \"./contracts\";\nimport publicOperationCatalogJson from \"./specs/public-operation-catalog.json\";\n\nexport type AuthService = \"auth\" | \"quranReflect\";\n\nexport type PublicApiService = AuthService | \"oauth2\";\n\nexport interface OperationDefinition\n extends Omit<BaseOperationDefinition, \"service\"> {\n service: PublicApiService;\n}\n\nexport interface CatalogOperationDefinition\n extends Omit<BaseCatalogOperationDefinition, \"service\"> {\n service?: PublicApiService;\n}\n\nexport interface ServiceOperationCatalog\n extends Omit<BaseServiceOperationCatalog, \"operations\" | \"service\"> {\n operations: Record<string, CatalogOperationDefinition>;\n service: PublicApiService;\n}\n\ninterface PublicOperationCatalog {\n auth: { v1: ServiceOperationCatalog };\n oauth2: { v1: ServiceOperationCatalog };\n quranReflect: { v1: ServiceOperationCatalog };\n}\n\nexport const publicOperationCatalog =\n publicOperationCatalogJson as PublicOperationCatalog;\n\nexport type { HttpMethod, OperationAuthMode };\n","import type { OperationRequest, TokenResponse, UserSession } from \"@/types\";\n\nexport const encodeBasicAuth = (username: string, password: string): string => {\n const raw = `${username}:${password}`;\n\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(raw).toString(\"base64\");\n }\n\n if (typeof globalThis.btoa === \"function\") {\n return globalThis.btoa(raw);\n }\n\n throw new Error(\"No base64 encoder available for HTTP basic auth.\");\n};\n\nexport const prepareBody = (\n request: OperationRequest,\n headers: Headers,\n): string | URLSearchParams | undefined => {\n if (request.body === undefined || request.body === null) {\n return undefined;\n }\n\n if (\n typeof request.body === \"string\" ||\n request.body instanceof URLSearchParams\n ) {\n if (request.contentType) {\n headers.set(\"Content-Type\", request.contentType);\n }\n\n return request.body;\n }\n\n headers.set(\"Content-Type\", request.contentType ?? \"application/json\");\n return JSON.stringify(request.body);\n};\n\nexport const toUserSession = (\n token: TokenResponse & {\n accessToken?: string;\n expiresIn?: number;\n idToken?: string;\n refreshToken?: string;\n tokenType?: string;\n },\n currentSession?: Partial<UserSession> | null,\n): UserSession => {\n const expiresIn = token.expiresIn ?? token.expires_in;\n const accessToken = token.accessToken ?? token.access_token;\n const idToken = token.idToken ?? token.id_token ?? currentSession?.idToken;\n const refreshToken =\n token.refreshToken ?? token.refresh_token ?? currentSession?.refreshToken;\n const tokenType =\n token.tokenType ?? token.token_type ?? currentSession?.tokenType;\n const scope = token.scope ?? currentSession?.scope;\n const expiresAt = expiresIn\n ? Date.now() + expiresIn * 1000\n : currentSession?.expiresAt;\n\n return {\n accessToken,\n expiresAt,\n idToken,\n refreshToken,\n scope,\n tokenType,\n };\n};\n","import type { ApiService } from \"@/types\";\n\nimport operationCatalogJson from \"./specs/operation-catalog.json\";\n\nexport type HttpMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type OperationAuthMode = \"none\" | \"app\" | \"user\";\n\nexport interface OperationDefinition {\n auth: OperationAuthMode;\n method: HttpMethod;\n operationId?: string;\n operationName: string;\n path: string;\n serverUrl?: string;\n service: ApiService;\n tags: string[];\n version: string;\n}\n\nexport type CatalogOperationDefinition = Omit<\n OperationDefinition,\n \"operationName\" | \"service\" | \"tags\" | \"version\"\n> &\n Partial<\n Pick<OperationDefinition, \"operationName\" | \"service\" | \"tags\" | \"version\">\n >;\n\nexport interface ServiceOperationCatalog {\n operations: Record<string, CatalogOperationDefinition>;\n service: ApiService;\n version: string;\n}\n\ninterface OperationCatalog {\n auth: { v1: ServiceOperationCatalog };\n content: { v4: ServiceOperationCatalog };\n oauth2: { v1: ServiceOperationCatalog };\n quranReflect: { v1: ServiceOperationCatalog };\n search: { v1: ServiceOperationCatalog };\n}\n\nexport const operationCatalog = operationCatalogJson as OperationCatalog;\n\nexport const resolveCatalogOperation = (\n section: ServiceOperationCatalog,\n operationName: string,\n operation: CatalogOperationDefinition,\n): OperationDefinition => {\n return {\n ...operation,\n operationName: operation.operationName ?? operationName,\n service: operation.service ?? section.service,\n tags: operation.tags ?? [],\n version: operation.version ?? section.version,\n };\n};\n\nexport const getOperationByName = (\n service: ApiService,\n version: string,\n operationName: string,\n): OperationDefinition | undefined => {\n const serviceCatalog = operationCatalog[service] as\n | Record<string, ServiceOperationCatalog | undefined>\n | undefined;\n if (!serviceCatalog) {\n return undefined;\n }\n\n const versionCatalog = serviceCatalog[version];\n const operation = versionCatalog?.operations[operationName];\n if (!versionCatalog || !operation) {\n return undefined;\n }\n\n return resolveCatalogOperation(versionCatalog, operationName, operation);\n};\n","import type {\n HttpMethod,\n OperationDefinition,\n ServiceOperationCatalog,\n} from \"@/generated/contracts\";\nimport { resolveCatalogOperation } from \"@/generated/contracts\";\n\nexport const HTTP_METHOD_TO_MUTATION_NAME: Record<HttpMethod, string> = {\n delete: \"remove\",\n get: \"list\",\n patch: \"update\",\n post: \"create\",\n put: \"update\",\n};\n\nexport const toCamelCase = (value: string): string => {\n const parts = value\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[^A-Za-z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n\n if (parts.length === 0) {\n return \"misc\";\n }\n\n return parts\n .map((part, index) => {\n const lower = part.toLowerCase();\n if (index === 0) {\n return lower;\n }\n\n return lower.charAt(0).toUpperCase() + lower.slice(1);\n })\n .join(\"\");\n};\n\nexport const toPascalCase = (value: string): string => {\n const camel = toCamelCase(value);\n return camel.charAt(0).toUpperCase() + camel.slice(1);\n};\n\nexport const isPathParam = (segment: string): boolean =>\n segment.startsWith(\"{\") && segment.endsWith(\"}\");\n\nexport const getResourceSegments = (path: string): string[] => {\n const segments = path.split(\"/\").filter(Boolean);\n if (segments[0]?.match(/^v\\d+$/)) {\n return segments.slice(1);\n }\n\n return segments;\n};\n\nexport const pickGeneratedMethodName = (\n operation: OperationDefinition,\n): string => {\n const resourceSegments = getResourceSegments(operation.path);\n const lastSegment = resourceSegments.at(-1);\n const literalSegments = resourceSegments.filter(\n (segment) => !isPathParam(segment),\n );\n const lastLiteral = literalSegments.at(-1);\n const groupLiteral = literalSegments[0];\n\n if (resourceSegments.length === 1) {\n return HTTP_METHOD_TO_MUTATION_NAME[operation.method];\n }\n\n if (\n resourceSegments.length === 2 &&\n lastSegment &&\n isPathParam(lastSegment)\n ) {\n if (operation.method === \"get\") {\n return \"get\";\n }\n\n if (operation.method === \"delete\") {\n return \"remove\";\n }\n\n return \"update\";\n }\n\n if (lastSegment && !isPathParam(lastSegment) && lastLiteral) {\n if (lastLiteral === groupLiteral) {\n return `${HTTP_METHOD_TO_MUTATION_NAME[operation.method]}ById`;\n }\n\n return toCamelCase(lastLiteral);\n }\n\n return toCamelCase(operation.operationName);\n};\n\nexport type RawOperation = (request?: unknown) => Promise<unknown>;\nexport type GeneratedGroup = Record<string, RawOperation>;\nexport type GeneratedGroups = Record<string, GeneratedGroup>;\n\nexport interface FetcherLike {\n request<T = unknown>(\n service: string,\n path: string,\n query?: unknown,\n request?: unknown,\n ): Promise<T>;\n requestOperation<T = unknown>(\n operation: OperationDefinition,\n request?: unknown,\n ): Promise<T>;\n getUserSession(): Promise<unknown>;\n setUserSession(session: unknown): Promise<void>;\n buildServiceUrl(service: string, path: string, query?: unknown): string;\n}\n\nexport const createRawClient = (\n fetcher: FetcherLike,\n section: ServiceOperationCatalog,\n): Record<string, RawOperation> => {\n const rawOperations: Record<string, RawOperation> = {};\n\n for (const [operationName, operation] of Object.entries(section.operations)) {\n const resolvedOperation = resolveCatalogOperation(\n section,\n operationName,\n operation,\n );\n\n rawOperations[operationName] = (request?: unknown) =>\n fetcher.requestOperation(resolvedOperation, request);\n }\n\n return rawOperations;\n};\n\nexport const createGeneratedGroups = (\n section: ServiceOperationCatalog,\n rawOperations: Record<string, RawOperation>,\n): GeneratedGroups => {\n const groups: GeneratedGroups = {};\n\n for (const [operationName, operation] of Object.entries(section.operations)) {\n const resolvedOperation = resolveCatalogOperation(\n section,\n operationName,\n operation,\n );\n const literals = getResourceSegments(resolvedOperation.path).filter(\n (segment) => !isPathParam(segment),\n );\n const groupName = toCamelCase(literals[0] ?? \"misc\");\n const suggestedName = pickGeneratedMethodName(resolvedOperation);\n const currentGroup = groups[groupName] ?? {};\n let methodName = suggestedName;\n\n if (currentGroup[methodName]) {\n methodName = `${suggestedName}${toPascalCase(operationName)}`;\n }\n\n currentGroup[methodName] = rawOperations[operationName]!;\n groups[groupName] = currentGroup;\n }\n\n return groups;\n};\n","import type { ApiParams } from \"@/types\";\nimport humps from \"humps\";\n\nconst { decamelize } = humps;\n\nexport const ensureLeadingSlash = (value: string): string =>\n value.startsWith(\"/\") ? value : `/${value}`;\n\nexport const removeTrailingSlash = (value: string): string =>\n value.endsWith(\"/\") ? value.slice(0, -1) : value;\n\nexport const removeBeginningSlash = (url: string) => {\n return url.startsWith(\"/\") ? url.slice(1) : url;\n};\n\nexport const replacePathParams = (\n path: string,\n params?: Record<string, string | number>,\n): string => {\n return path.replace(/\\{([^}]+)\\}/g, (_match: string, rawKey: string) => {\n const value = params?.[rawKey];\n if (value === undefined) {\n throw new Error(`Missing path parameter: ${rawKey}`);\n }\n\n return encodeURIComponent(String(value));\n });\n};\n\nexport const normalizePathTemplate = (path: string): string =>\n path.replace(/(^|\\/):([A-Za-z0-9_]+)/g, \"$1{$2}\");\n\ninterface ParamsToStringOptions {\n preserveCase?: boolean;\n}\n\nconst fieldsKey = [\"wordFields\", \"translationFields\", \"fields\"] as const;\nconst fieldsKeySet = new Set<string>([\n ...fieldsKey,\n ...fieldsKey.map((key) => decamelize(key)),\n]);\nconst preservedKeys = new Set([\n \"navigationalResultsNumber\",\n \"versesResultsNumber\",\n]);\n\nexport const paramsToString = (\n params?: ApiParams,\n options: ParamsToStringOptions = {},\n): string => {\n if (!params) return \"\";\n\n const paramsString = new URLSearchParams();\n\n for (const [rawKey, rawValue] of Object.entries(params)) {\n if (rawValue === undefined) continue;\n\n const key =\n options.preserveCase || preservedKeys.has(rawKey)\n ? rawKey\n : decamelize(rawKey);\n\n // fields is a special case, it's an object with boolean values\n if (fieldsKeySet.has(rawKey) || fieldsKeySet.has(key)) {\n const fields = Object.entries(rawValue as Record<string, boolean>)\n .filter(([, value]) => value)\n .map(([fieldKey]) => decamelize(fieldKey));\n if (fields.length > 0) {\n paramsString.set(key, fields.join(\",\"));\n }\n continue;\n }\n\n if (typeof rawValue === \"string\") {\n paramsString.set(key, rawValue);\n } else if (typeof rawValue === \"number\") {\n paramsString.set(key, rawValue.toString());\n } else if (typeof rawValue === \"boolean\") {\n paramsString.set(key, rawValue.toString());\n } else if (Array.isArray(rawValue)) {\n paramsString.set(key, rawValue.join(\",\"));\n }\n }\n\n if (paramsString.size === 0) return \"\";\n return `?${paramsString.toString()}`;\n};\n","export const API_BASE_URL = \"https://apis.quran.foundation\";\n\nexport const DEFAULT_BASE_URLS = {\n auth: \"https://apis.quran.foundation/auth\",\n content: \"https://apis.quran.foundation/content\",\n oauth2: \"https://oauth2.quran.foundation\",\n quranReflect: \"https://apis.quran.foundation/quran-reflect\",\n search: \"https://apis.quran.foundation/search\",\n} as const;\n\nexport const DIRECT_PATH_PREFIX = {\n auth: \"/v1\",\n content: \"/api/v4\",\n oauth2: \"\",\n quranReflect: \"/v1\",\n search: \"/v1\",\n} as const;\n\nexport const GATEWAY_PATH_PREFIX = {\n auth: \"/auth/v1\",\n content: \"/content/api/v4\",\n oauth2: \"\",\n quranReflect: \"/quran-reflect/v1\",\n search: \"/search/v1\",\n} as const;\n\nexport const LEGACY_PREFIXES = {\n auth: [\"/auth/v1\", \"/v1\"] as const,\n content: [\"/content/api/v4\", \"/api/v4\"] as const,\n oauth2: [] as const,\n quranReflect: [\"/quran-reflect/v1\", \"/v1\"] as const,\n search: [\"/search/v1\", \"/v1\"] as const,\n} as const;\n","import type {\n OperationDefinition,\n PublicApiService,\n} from \"@/generated/public-contracts\";\nimport type {\n ApiParams,\n CustomFetcher,\n OperationRequest,\n PublicClientConfig,\n UserSession,\n} from \"@/types\";\nimport { prepareBody } from \"@/lib/http-utils\";\nimport {\n DEFAULT_BASE_URLS,\n DIRECT_PATH_PREFIX,\n GATEWAY_PATH_PREFIX,\n LEGACY_PREFIXES,\n} from \"@/lib/service-config\";\nimport {\n ensureLeadingSlash,\n normalizePathTemplate,\n paramsToString,\n removeTrailingSlash,\n replacePathParams,\n} from \"@/lib/url\";\nimport humps from \"humps\";\n\nconst { camelizeKeys } = humps;\n\nexport class PublicQuranFetcher {\n private userSession: UserSession | null | undefined;\n\n constructor(private readonly config: PublicClientConfig) {\n this.userSession = config.userSession;\n }\n\n public clearCachedTokens(): void {\n return;\n }\n\n public getFetch(): CustomFetcher {\n const doFetch = this.config.fetch ?? globalThis.fetch;\n\n if (typeof doFetch !== \"function\") {\n throw new Error(\n \"No fetch function available. Please provide a fetch implementation or ensure global fetch is available.\",\n );\n }\n\n return doFetch;\n }\n\n public async getUserSession(): Promise<UserSession | null> {\n const storedSession = await this.config.storage?.getSession?.();\n if (storedSession !== undefined) {\n return storedSession;\n }\n\n return this.userSession ?? null;\n }\n\n public async setUserSession(session: UserSession | null): Promise<void> {\n if (!this.config.storage) {\n this.userSession = session;\n return;\n }\n\n if (!session) {\n if (this.config.storage.clearSession) {\n await this.config.storage.clearSession();\n this.userSession = null;\n return;\n }\n\n await this.config.storage.setSession?.(null);\n this.userSession = null;\n return;\n }\n\n await this.config.storage.setSession?.(session);\n this.userSession = session;\n }\n\n public buildServiceUrl(\n service: PublicApiService,\n path: string,\n query?: ApiParams,\n ): string {\n const { baseUrl, usesGateway } = this.resolveServiceBaseUrl(service);\n const servicePath = this.normalizeServicePath(service, path, usesGateway);\n const preserveQueryParamCase =\n service === \"auth\" || service === \"quranReflect\";\n\n return `${baseUrl}${servicePath}${paramsToString(query, {\n preserveCase: preserveQueryParamCase,\n })}`;\n }\n\n public async requestOperation<T = unknown>(\n operation: OperationDefinition,\n request?: OperationRequest,\n ): Promise<T> {\n return this.request<T>(\n operation.service,\n replacePathParams(operation.path, request?.path),\n request?.query,\n {\n ...request,\n auth:\n request?.auth === \"auto\" || !request?.auth\n ? operation.auth\n : request.auth,\n method:\n request?.method ??\n (operation.method.toUpperCase() as OperationRequest[\"method\"]),\n path: undefined,\n },\n );\n }\n\n public async request<T = unknown>(\n service: PublicApiService,\n path: string,\n query?: ApiParams,\n request: OperationRequest = {},\n ): Promise<T> {\n if (request.basicAuth) {\n throw new Error(\"client_secret is server-only. Use @quranjs/api/server.\");\n }\n\n const effectiveAuth = this.resolveAuthMode(service, request.auth);\n const url = this.buildServiceUrl(service, path, query);\n const headers = new Headers(request.headers);\n const body = prepareBody(request, headers);\n\n if (service !== \"oauth2\") {\n headers.set(\"x-client-id\", this.config.clientId);\n }\n\n await this.applyAuthenticationHeaders(\n service,\n effectiveAuth,\n headers,\n request,\n );\n\n const response = await this.getFetch()(url, {\n body,\n headers,\n method: request.method ?? \"GET\",\n });\n\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (!contentType.includes(\"application/json\")) {\n return (await response.text()) as T;\n }\n\n const json = await response.json();\n return camelizeKeys(json as object) as T;\n }\n\n private resolveAuthMode(\n service: PublicApiService,\n auth: OperationRequest[\"auth\"] = \"auto\",\n ): \"none\" | \"user\" {\n if (auth !== \"auto\") {\n if (auth === \"app\") {\n throw new Error(\n \"This API requires @quranjs/api/server or a backend. Content and search are server-side for confidential clients.\",\n );\n }\n\n return auth;\n }\n\n if (service === \"auth\" || service === \"quranReflect\") {\n return \"user\";\n }\n\n return \"none\";\n }\n\n private async applyAuthenticationHeaders(\n service: PublicApiService,\n auth: \"none\" | \"user\",\n headers: Headers,\n request: OperationRequest,\n ): Promise<void> {\n if (request.accessToken) {\n this.setTokenHeaders(service, headers, request.accessToken);\n return;\n }\n\n if (auth === \"none\") {\n return;\n }\n\n const session = await this.getUserSession();\n if (!session?.accessToken) {\n throw new Error(\n \"This operation requires a user session. Sign in first or use @quranjs/api/server.\",\n );\n }\n\n this.setTokenHeaders(service, headers, session.accessToken);\n }\n\n private setTokenHeaders(\n service: PublicApiService,\n headers: Headers,\n accessToken: string,\n ): void {\n if (service === \"oauth2\") {\n headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return;\n }\n\n headers.set(\"x-auth-token\", accessToken);\n }\n\n private resolveServiceBaseUrl(service: PublicApiService): {\n baseUrl: string;\n usesGateway: boolean;\n } {\n const { services } = this.config;\n const directBaseUrl =\n service === \"auth\"\n ? services?.authBaseUrl\n : service === \"quranReflect\"\n ? services?.quranReflectBaseUrl\n : (services?.oauth2BaseUrl ?? services?.tokenHost);\n\n if (directBaseUrl) {\n return {\n baseUrl: removeTrailingSlash(directBaseUrl),\n usesGateway: false,\n };\n }\n\n if (services?.gatewayUrl && service !== \"oauth2\") {\n return {\n baseUrl: removeTrailingSlash(services.gatewayUrl),\n usesGateway: true,\n };\n }\n\n return {\n baseUrl: DEFAULT_BASE_URLS[service],\n usesGateway: false,\n };\n }\n\n private normalizeServicePath(\n service: PublicApiService,\n path: string,\n usesGateway: boolean,\n ): string {\n let normalizedPath = ensureLeadingSlash(normalizePathTemplate(path));\n for (const legacyPrefix of LEGACY_PREFIXES[service]) {\n if (normalizedPath.startsWith(legacyPrefix)) {\n normalizedPath = ensureLeadingSlash(\n normalizedPath.slice(legacyPrefix.length),\n );\n break;\n }\n }\n\n const prefix = usesGateway\n ? GATEWAY_PATH_PREFIX[service]\n : DIRECT_PATH_PREFIX[service];\n\n if (normalizedPath.startsWith(prefix) || prefix.length === 0) {\n return normalizedPath;\n }\n\n return `${prefix}${normalizedPath}`;\n }\n}\n","import type {\n ApiParams,\n HTTPMethod,\n OperationRequest,\n PublicClientConfig,\n TokenResponse,\n} from \"@/types\";\nimport type { AuthService } from \"@/generated/public-contracts\";\nimport { publicOperationCatalog } from \"@/generated/public-contracts\";\nimport { toUserSession } from \"@/lib/http-utils\";\nimport { createGeneratedGroups, createRawClient } from \"@/lib/runtime-utils\";\nimport { replacePathParams } from \"@/lib/url\";\nimport { PublicQuranFetcher } from \"@/sdk/public-fetcher\";\n\ntype RawOperation = (request?: OperationRequest) => Promise<unknown>;\ntype GeneratedGroup = Record<string, RawOperation>;\ntype QuranReflectFacade = {\n comments: GeneratedGroup;\n posts: GeneratedGroup;\n raw: Record<string, RawOperation>;\n rooms: GeneratedGroup;\n tags: GeneratedGroup;\n users: GeneratedGroup;\n};\n\nconst SERVER_ONLY_MESSAGE =\n \"This API requires @quranjs/api/server or a backend. Content and search are server-side for confidential clients.\";\nconst LEGACY_BOOKMARK_GET_MESSAGE =\n \"auth.bookmarks.get(bookmarkId) is not supported because /v1/bookmarks/bookmark expects bookmark detail query parameters. Pass a query object such as { mushafId, key, type, verseNumber } or { mushafId, isReading: true }.\";\n\nconst createUserServiceRequest =\n (fetcher: PublicQuranFetcher, service: AuthService) =>\n (method: HTTPMethod, path: string, request?: OperationRequest) => {\n return fetcher.request<unknown>(\n service,\n replacePathParams(path, request?.path),\n request?.query,\n {\n ...request,\n auth: \"user\",\n method,\n path: undefined,\n query: undefined,\n },\n );\n };\n\nconst createAuthFacade = (fetcher: PublicQuranFetcher) => {\n const raw = createRawClient(fetcher, publicOperationCatalog.auth.v1);\n const generatedGroups = createGeneratedGroups(\n publicOperationCatalog.auth.v1,\n raw,\n );\n const request = createUserServiceRequest(fetcher, \"auth\");\n\n return {\n ...generatedGroups,\n collections: {\n ...generatedGroups.collections,\n addBookmark: (collectionId: string, body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/collections/{collectionId}/bookmarks\", {\n body,\n path: { collectionId },\n }),\n create: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/collections\", { body }),\n get: (collectionId: string, query?: ApiParams) =>\n request(\"GET\", \"/v1/collections/{collectionId}\", {\n path: { collectionId },\n query,\n }),\n list: (query?: ApiParams) => request(\"GET\", \"/v1/collections\", { query }),\n listAll: (query?: ApiParams) =>\n request(\"GET\", \"/v1/collections/all\", { query }),\n remove: (collectionId: string) =>\n request(\"DELETE\", \"/v1/collections/{collectionId}\", {\n path: { collectionId },\n }),\n removeBookmark: (collectionId: string, bookmarkId: string) =>\n request(\n \"DELETE\",\n \"/v1/collections/{collectionId}/bookmarks/{bookmarkId}\",\n {\n path: { bookmarkId, collectionId },\n },\n ),\n update: (collectionId: string, body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/collections/{collectionId}\", {\n body,\n path: { collectionId },\n }),\n },\n bookmarks: {\n ...generatedGroups.bookmarks,\n create: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/bookmarks\", { body }),\n get: async (query?: ApiParams | string) => {\n if (typeof query === \"string\") {\n throw new Error(LEGACY_BOOKMARK_GET_MESSAGE);\n }\n\n return request(\"GET\", \"/v1/bookmarks/bookmark\", {\n query,\n });\n },\n list: (query?: ApiParams) => request(\"GET\", \"/v1/bookmarks\", { query }),\n listCollections: (query?: ApiParams) =>\n request(\"GET\", \"/v1/bookmarks/collections\", { query }),\n listRange: (query?: ApiParams) =>\n request(\"GET\", \"/v1/bookmarks/ayahs-range\", { query }),\n remove: (bookmarkId: string) =>\n request(\"DELETE\", \"/v1/bookmarks/{bookmarkId}\", {\n path: { bookmarkId },\n }),\n },\n goals: {\n ...generatedGroups.goals,\n create: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/goals\", { body }),\n estimate: (query?: ApiParams) =>\n request(\"GET\", \"/v1/goals/estimate\", { query }),\n getTodaysPlan: (query?: ApiParams) =>\n request(\"GET\", \"/v1/goals/get-todays-plan\", { query }),\n remove: (id: string) =>\n request(\"DELETE\", \"/v1/goals/{id}\", { path: { id } }),\n update: (id: string, body: Record<string, unknown>) =>\n request(\"PUT\", \"/v1/goals/{id}\", {\n body,\n path: { id },\n }),\n },\n notes: {\n ...generatedGroups.notes,\n create: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/notes\", { body }),\n get: (noteId: string) =>\n request(\"GET\", \"/v1/notes/{noteId}\", { path: { noteId } }),\n list: (query?: ApiParams) => request(\"GET\", \"/v1/notes\", { query }),\n listByAttachedEntity: (query?: ApiParams) =>\n request(\"GET\", \"/v1/notes/by-attached-entity\", { query }),\n listByRange: (query?: ApiParams) =>\n request(\"GET\", \"/v1/notes/by-range\", { query }),\n listByVerseKey: (verseKey: string, query?: ApiParams) =>\n request(\"GET\", \"/v1/notes/by-verse/{verseKey}\", {\n path: { verseKey },\n query,\n }),\n publish: (noteId: string, body?: Record<string, unknown>) =>\n request(\"POST\", \"/v1/notes/{noteId}/publish\", {\n body,\n path: { noteId },\n }),\n remove: (noteId: string) =>\n request(\"DELETE\", \"/v1/notes/{noteId}\", { path: { noteId } }),\n update: (noteId: string, body: Record<string, unknown>) =>\n request(\"PATCH\", \"/v1/notes/{noteId}\", {\n body,\n path: { noteId },\n }),\n },\n preferences: {\n ...generatedGroups.preferences,\n bulkUpdate: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/preferences/bulk\", { body }),\n get: (query?: ApiParams) => request(\"GET\", \"/v1/preferences\", { query }),\n update: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/preferences\", { body }),\n },\n raw,\n readingSessions: {\n ...generatedGroups.readingSessions,\n create: (body: Record<string, unknown>) =>\n request(\"POST\", \"/v1/reading-sessions\", { body }),\n list: (query?: ApiParams) =>\n request(\"GET\", \"/v1/reading-sessions\", { query }),\n },\n };\n};\n\nconst createQuranReflectFacade = (\n fetcher: PublicQuranFetcher,\n): QuranReflectFacade => {\n const raw = createRawClient(fetcher, publicOperationCatalog.quranReflect.v1);\n const generatedGroups = createGeneratedGroups(\n publicOperationCatalog.quranReflect.v1,\n raw,\n );\n\n return {\n comments: generatedGroups.comments ?? {},\n posts: generatedGroups.posts ?? {},\n raw,\n rooms: generatedGroups.rooms ?? {},\n tags: generatedGroups.tags ?? {},\n users: generatedGroups.users ?? {},\n };\n};\n\nconst createOAuth2Facade = (\n fetcher: PublicQuranFetcher,\n config: PublicClientConfig,\n) => {\n const raw = createRawClient(fetcher, publicOperationCatalog.oauth2.v1);\n\n const exchangeToken = async (\n body: URLSearchParams,\n options: { requiresRefreshToken?: boolean } = {},\n ) => {\n if (config.clientType !== \"public\") {\n throw new Error(\n \"This OAuth2 exchange requires a backend because your client is confidential.\",\n );\n }\n\n if (options.requiresRefreshToken && !body.get(\"refresh_token\")) {\n throw new Error(\"Missing refresh token.\");\n }\n\n body.set(\"client_id\", config.clientId);\n\n const requestRefreshToken = body.get(\"refresh_token\") ?? undefined;\n const storedSession = options.requiresRefreshToken\n ? await fetcher.getUserSession()\n : null;\n const currentSession =\n options.requiresRefreshToken && requestRefreshToken\n ? { ...(storedSession ?? {}), refreshToken: requestRefreshToken }\n : storedSession;\n\n const token = await fetcher.request<TokenResponse>(\n \"oauth2\",\n \"/oauth2/token\",\n undefined,\n {\n auth: \"none\",\n body,\n contentType: \"application/x-www-form-urlencoded\",\n method: \"POST\",\n },\n );\n\n await fetcher.setUserSession(toUserSession(token, currentSession));\n return token;\n };\n\n return {\n authorizeUrl: (query: Record<string, string | number | undefined>) =>\n fetcher.buildServiceUrl(\"oauth2\", \"/oauth2/auth\", query as ApiParams),\n exchangeCode: (params: {\n code: string;\n codeVerifier?: string;\n redirectUri: string;\n scope?: string;\n }) => {\n const body = new URLSearchParams({\n code: params.code,\n grant_type: \"authorization_code\",\n redirect_uri: params.redirectUri,\n });\n\n if (params.codeVerifier) {\n body.set(\"code_verifier\", params.codeVerifier);\n }\n\n if (params.scope) {\n body.set(\"scope\", params.scope);\n }\n\n return exchangeToken(body);\n },\n getUserInfo: (accessToken?: string) =>\n fetcher.request(\"oauth2\", \"/userinfo\", undefined, {\n accessToken,\n auth: \"user\",\n method: \"GET\",\n }),\n introspect: () => {\n throw new Error(\n \"Token introspection requires @quranjs/api/server or a backend.\",\n );\n },\n logout: (query?: ApiParams) =>\n fetcher.request(\"oauth2\", \"/oauth2/sessions/logout\", query, {\n auth: \"none\",\n method: \"GET\",\n }),\n raw,\n refresh: async (refreshToken?: string) => {\n const currentSession = await fetcher.getUserSession();\n const body = new URLSearchParams({\n grant_type: \"refresh_token\",\n refresh_token: refreshToken ?? currentSession?.refreshToken ?? \"\",\n });\n\n return exchangeToken(body, { requiresRefreshToken: true });\n },\n };\n};\n\ntype ServerOnlyGuard = ((...args: unknown[]) => Promise<never>) & {\n [key: string]: ServerOnlyGuard | undefined;\n};\n\nconst createServerOnlyGuard = (): ServerOnlyGuard => {\n const fail = (() =>\n Promise.reject(new Error(SERVER_ONLY_MESSAGE))) as ServerOnlyGuard;\n const proxy = new Proxy(fail, {\n apply() {\n return Promise.reject(new Error(SERVER_ONLY_MESSAGE));\n },\n get(_target, property) {\n if (property === \"then\") {\n return undefined;\n }\n\n return proxy;\n },\n });\n\n return proxy;\n};\n\nexport const createPublicRuntimeClient = (config: PublicClientConfig) => {\n const fetcher = new PublicQuranFetcher(config);\n fetcher.getFetch();\n\n const authV1 = createAuthFacade(fetcher);\n const quranReflectV1 = createQuranReflectFacade(fetcher);\n const oauth2V1 = createOAuth2Facade(fetcher, config);\n const serverOnlyGuard = createServerOnlyGuard();\n\n const raw = {\n auth: {\n v1: authV1.raw,\n },\n content: {\n v4: serverOnlyGuard,\n },\n oauth2: {\n v1: oauth2V1.raw,\n },\n quranReflect: {\n v1: quranReflectV1.raw,\n },\n search: {\n v1: serverOnlyGuard,\n },\n };\n\n return {\n audio: serverOnlyGuard,\n auth: {\n ...authV1,\n v1: authV1,\n },\n chapters: serverOnlyGuard,\n clearCachedTokens: () => fetcher.clearCachedTokens(),\n content: serverOnlyGuard,\n getUserSession: () => fetcher.getUserSession(),\n juzs: serverOnlyGuard,\n oauth2: {\n ...oauth2V1,\n v1: oauth2V1,\n },\n quranReflect: {\n ...quranReflectV1,\n v1: quranReflectV1,\n },\n raw,\n resources: serverOnlyGuard,\n search: serverOnlyGuard,\n verses: serverOnlyGuard,\n };\n};\n","import type { PublicClientConfig } from \"@/types\";\n\nimport { createPublicRuntimeClient } from \"./runtime/create-public-client\";\n\nexport const createPublicClient = (config: PublicClientConfig) => {\n if ((config as PublicClientConfig & { clientSecret?: string }).clientSecret) {\n throw new Error(\"client_secret is server-only. Use @quranjs/api/server.\");\n }\n\n return createPublicRuntimeClient(config);\n};\n\nexport type PublicClient = ReturnType<typeof createPublicClient>;\n"]}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { c as QuranAudio, Q as QuranChapters, C as ChapterId, f as ChapterRecitation, N as NormalizedVerseRecitation, q as Pagination, V as VerseKey, h as Chapter, i as ChapterInfo, p as Juz, y as ChapterInfoResource, B as ChapterReciterResource, L as LanguageResource, x as RecitationStylesResource, s as RecitationInfoResource, r as RecitationResource, w as TafsirInfoResource, v as TafsirResource, u as TranslationInfoResource, t as TranslationResource, z as VerseMediaResource, n as Verse, H as HizbNumber, J as JuzNumber, P as PageNumber, R as RubNumber, b as QuranJuzs, d as QuranResources, e as QuranSearch, S as SearchResponse, a as QuranVerses } from './verses-qzAdux2V.mjs';
|
|
2
|
+
import { R as RawOperation } from './runtime-utils-CxjOQDsB.mjs';
|
|
3
|
+
import { i as ServerClientConfig, A as ApiParams, O as OperationRequest, U as UserSession, l as TokenResponse, d as SearchParams } from './index-BZgqOfA4.mjs';
|
|
4
|
+
|
|
5
|
+
declare const createServerClient: (config: ServerClientConfig) => {
|
|
6
|
+
audio: QuranAudio;
|
|
7
|
+
auth: {
|
|
8
|
+
v1: {
|
|
9
|
+
collections: {
|
|
10
|
+
addBookmark: (collectionId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
11
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
12
|
+
get: (collectionId: string, query?: ApiParams) => Promise<unknown>;
|
|
13
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
14
|
+
listAll: (query?: ApiParams) => Promise<unknown>;
|
|
15
|
+
remove: (collectionId: string) => Promise<unknown>;
|
|
16
|
+
removeBookmark: (collectionId: string, bookmarkId: string) => Promise<unknown>;
|
|
17
|
+
update: (collectionId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
18
|
+
};
|
|
19
|
+
bookmarks: {
|
|
20
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
21
|
+
get: (query?: ApiParams | string) => Promise<unknown>;
|
|
22
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
23
|
+
listCollections: (query?: ApiParams) => Promise<unknown>;
|
|
24
|
+
listRange: (query?: ApiParams) => Promise<unknown>;
|
|
25
|
+
remove: (bookmarkId: string) => Promise<unknown>;
|
|
26
|
+
};
|
|
27
|
+
goals: {
|
|
28
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
29
|
+
estimate: (query?: ApiParams) => Promise<unknown>;
|
|
30
|
+
getTodaysPlan: (query?: ApiParams) => Promise<unknown>;
|
|
31
|
+
remove: (id: string) => Promise<unknown>;
|
|
32
|
+
update: (id: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
33
|
+
};
|
|
34
|
+
notes: {
|
|
35
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
36
|
+
get: (noteId: string) => Promise<unknown>;
|
|
37
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
38
|
+
listByAttachedEntity: (query?: ApiParams) => Promise<unknown>;
|
|
39
|
+
listByRange: (query?: ApiParams) => Promise<unknown>;
|
|
40
|
+
listByVerseKey: (verseKey: string, query?: ApiParams) => Promise<unknown>;
|
|
41
|
+
publish: (noteId: string, body?: Record<string, unknown>) => Promise<unknown>;
|
|
42
|
+
remove: (noteId: string) => Promise<unknown>;
|
|
43
|
+
update: (noteId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
44
|
+
};
|
|
45
|
+
preferences: {
|
|
46
|
+
bulkUpdate: (body: Record<string, unknown>) => Promise<unknown>;
|
|
47
|
+
get: (query?: ApiParams) => Promise<unknown>;
|
|
48
|
+
update: (body: Record<string, unknown>) => Promise<unknown>;
|
|
49
|
+
};
|
|
50
|
+
raw: Record<string, RawOperation>;
|
|
51
|
+
readingSessions: {
|
|
52
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
53
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
collections: {
|
|
57
|
+
addBookmark: (collectionId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
58
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
59
|
+
get: (collectionId: string, query?: ApiParams) => Promise<unknown>;
|
|
60
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
61
|
+
listAll: (query?: ApiParams) => Promise<unknown>;
|
|
62
|
+
remove: (collectionId: string) => Promise<unknown>;
|
|
63
|
+
removeBookmark: (collectionId: string, bookmarkId: string) => Promise<unknown>;
|
|
64
|
+
update: (collectionId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
65
|
+
};
|
|
66
|
+
bookmarks: {
|
|
67
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
68
|
+
get: (query?: ApiParams | string) => Promise<unknown>;
|
|
69
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
70
|
+
listCollections: (query?: ApiParams) => Promise<unknown>;
|
|
71
|
+
listRange: (query?: ApiParams) => Promise<unknown>;
|
|
72
|
+
remove: (bookmarkId: string) => Promise<unknown>;
|
|
73
|
+
};
|
|
74
|
+
goals: {
|
|
75
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
76
|
+
estimate: (query?: ApiParams) => Promise<unknown>;
|
|
77
|
+
getTodaysPlan: (query?: ApiParams) => Promise<unknown>;
|
|
78
|
+
remove: (id: string) => Promise<unknown>;
|
|
79
|
+
update: (id: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
80
|
+
};
|
|
81
|
+
notes: {
|
|
82
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
83
|
+
get: (noteId: string) => Promise<unknown>;
|
|
84
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
85
|
+
listByAttachedEntity: (query?: ApiParams) => Promise<unknown>;
|
|
86
|
+
listByRange: (query?: ApiParams) => Promise<unknown>;
|
|
87
|
+
listByVerseKey: (verseKey: string, query?: ApiParams) => Promise<unknown>;
|
|
88
|
+
publish: (noteId: string, body?: Record<string, unknown>) => Promise<unknown>;
|
|
89
|
+
remove: (noteId: string) => Promise<unknown>;
|
|
90
|
+
update: (noteId: string, body: Record<string, unknown>) => Promise<unknown>;
|
|
91
|
+
};
|
|
92
|
+
preferences: {
|
|
93
|
+
bulkUpdate: (body: Record<string, unknown>) => Promise<unknown>;
|
|
94
|
+
get: (query?: ApiParams) => Promise<unknown>;
|
|
95
|
+
update: (body: Record<string, unknown>) => Promise<unknown>;
|
|
96
|
+
};
|
|
97
|
+
raw: Record<string, RawOperation>;
|
|
98
|
+
readingSessions: {
|
|
99
|
+
create: (body: Record<string, unknown>) => Promise<unknown>;
|
|
100
|
+
list: (query?: ApiParams) => Promise<unknown>;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
chapters: QuranChapters;
|
|
104
|
+
clearCachedTokens: () => void;
|
|
105
|
+
content: {
|
|
106
|
+
v4: {
|
|
107
|
+
audio: {
|
|
108
|
+
chapterRecitation: {
|
|
109
|
+
get: (reciterId: string, chapterId: ChapterId, query?: ApiParams) => Promise<ChapterRecitation>;
|
|
110
|
+
list: (reciterId: string, query?: ApiParams) => Promise<ChapterRecitation[]>;
|
|
111
|
+
};
|
|
112
|
+
verseRecitation: {
|
|
113
|
+
byChapter: (chapterId: ChapterId, recitationId: string, query?: ApiParams) => Promise<{
|
|
114
|
+
audioFiles: NormalizedVerseRecitation[];
|
|
115
|
+
pagination: Pagination;
|
|
116
|
+
}>;
|
|
117
|
+
byKey: (verseKey: VerseKey, recitationId: string, query?: ApiParams) => Promise<{
|
|
118
|
+
audioFiles: NormalizedVerseRecitation[];
|
|
119
|
+
pagination: Pagination;
|
|
120
|
+
}>;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
chapters: {
|
|
124
|
+
get: (id: ChapterId, query?: ApiParams) => Promise<Chapter>;
|
|
125
|
+
getInfo: (id: ChapterId, query?: ApiParams) => Promise<ChapterInfo>;
|
|
126
|
+
list: (query?: ApiParams) => Promise<Chapter[]>;
|
|
127
|
+
};
|
|
128
|
+
juzs: {
|
|
129
|
+
list: () => Promise<Juz[]>;
|
|
130
|
+
};
|
|
131
|
+
raw: Record<string, (request?: OperationRequest) => Promise<unknown>>;
|
|
132
|
+
resources: {
|
|
133
|
+
chapterInfos: {
|
|
134
|
+
list: (query?: ApiParams) => Promise<ChapterInfoResource[]>;
|
|
135
|
+
};
|
|
136
|
+
chapterReciters: {
|
|
137
|
+
list: (query?: ApiParams) => Promise<ChapterReciterResource[]>;
|
|
138
|
+
};
|
|
139
|
+
languages: {
|
|
140
|
+
list: (query?: ApiParams) => Promise<LanguageResource[]>;
|
|
141
|
+
};
|
|
142
|
+
recitationStyles: {
|
|
143
|
+
list: (query?: ApiParams) => Promise<RecitationStylesResource>;
|
|
144
|
+
};
|
|
145
|
+
recitations: {
|
|
146
|
+
getInfo: (id: string, query?: ApiParams) => Promise<RecitationInfoResource>;
|
|
147
|
+
list: (query?: ApiParams) => Promise<RecitationResource[]>;
|
|
148
|
+
};
|
|
149
|
+
tafsirs: {
|
|
150
|
+
getInfo: (id: string, query?: ApiParams) => Promise<TafsirInfoResource>;
|
|
151
|
+
list: (query?: ApiParams) => Promise<TafsirResource[]>;
|
|
152
|
+
};
|
|
153
|
+
translations: {
|
|
154
|
+
getInfo: (id: string, query?: ApiParams) => Promise<TranslationInfoResource>;
|
|
155
|
+
list: (query?: ApiParams) => Promise<TranslationResource[]>;
|
|
156
|
+
};
|
|
157
|
+
verseMedia: {
|
|
158
|
+
list: (query?: ApiParams) => Promise<VerseMediaResource>;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
verses: {
|
|
162
|
+
byChapter: (id: ChapterId, query?: ApiParams) => Promise<Verse[]>;
|
|
163
|
+
byHizb: (id: HizbNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
164
|
+
byJuz: (id: JuzNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
165
|
+
byKey: (key: VerseKey, query?: ApiParams) => Promise<Verse>;
|
|
166
|
+
byPage: (page: PageNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
167
|
+
byRange: (from: VerseKey, to: VerseKey, query?: ApiParams) => Promise<Verse[]>;
|
|
168
|
+
byRub: (id: RubNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
169
|
+
random: (query?: ApiParams) => Promise<Verse>;
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
audio: {
|
|
173
|
+
chapterRecitation: {
|
|
174
|
+
get: (reciterId: string, chapterId: ChapterId, query?: ApiParams) => Promise<ChapterRecitation>;
|
|
175
|
+
list: (reciterId: string, query?: ApiParams) => Promise<ChapterRecitation[]>;
|
|
176
|
+
};
|
|
177
|
+
verseRecitation: {
|
|
178
|
+
byChapter: (chapterId: ChapterId, recitationId: string, query?: ApiParams) => Promise<{
|
|
179
|
+
audioFiles: NormalizedVerseRecitation[];
|
|
180
|
+
pagination: Pagination;
|
|
181
|
+
}>;
|
|
182
|
+
byKey: (verseKey: VerseKey, recitationId: string, query?: ApiParams) => Promise<{
|
|
183
|
+
audioFiles: NormalizedVerseRecitation[];
|
|
184
|
+
pagination: Pagination;
|
|
185
|
+
}>;
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
chapters: {
|
|
189
|
+
get: (id: ChapterId, query?: ApiParams) => Promise<Chapter>;
|
|
190
|
+
getInfo: (id: ChapterId, query?: ApiParams) => Promise<ChapterInfo>;
|
|
191
|
+
list: (query?: ApiParams) => Promise<Chapter[]>;
|
|
192
|
+
};
|
|
193
|
+
juzs: {
|
|
194
|
+
list: () => Promise<Juz[]>;
|
|
195
|
+
};
|
|
196
|
+
raw: Record<string, (request?: OperationRequest) => Promise<unknown>>;
|
|
197
|
+
resources: {
|
|
198
|
+
chapterInfos: {
|
|
199
|
+
list: (query?: ApiParams) => Promise<ChapterInfoResource[]>;
|
|
200
|
+
};
|
|
201
|
+
chapterReciters: {
|
|
202
|
+
list: (query?: ApiParams) => Promise<ChapterReciterResource[]>;
|
|
203
|
+
};
|
|
204
|
+
languages: {
|
|
205
|
+
list: (query?: ApiParams) => Promise<LanguageResource[]>;
|
|
206
|
+
};
|
|
207
|
+
recitationStyles: {
|
|
208
|
+
list: (query?: ApiParams) => Promise<RecitationStylesResource>;
|
|
209
|
+
};
|
|
210
|
+
recitations: {
|
|
211
|
+
getInfo: (id: string, query?: ApiParams) => Promise<RecitationInfoResource>;
|
|
212
|
+
list: (query?: ApiParams) => Promise<RecitationResource[]>;
|
|
213
|
+
};
|
|
214
|
+
tafsirs: {
|
|
215
|
+
getInfo: (id: string, query?: ApiParams) => Promise<TafsirInfoResource>;
|
|
216
|
+
list: (query?: ApiParams) => Promise<TafsirResource[]>;
|
|
217
|
+
};
|
|
218
|
+
translations: {
|
|
219
|
+
getInfo: (id: string, query?: ApiParams) => Promise<TranslationInfoResource>;
|
|
220
|
+
list: (query?: ApiParams) => Promise<TranslationResource[]>;
|
|
221
|
+
};
|
|
222
|
+
verseMedia: {
|
|
223
|
+
list: (query?: ApiParams) => Promise<VerseMediaResource>;
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
verses: {
|
|
227
|
+
byChapter: (id: ChapterId, query?: ApiParams) => Promise<Verse[]>;
|
|
228
|
+
byHizb: (id: HizbNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
229
|
+
byJuz: (id: JuzNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
230
|
+
byKey: (key: VerseKey, query?: ApiParams) => Promise<Verse>;
|
|
231
|
+
byPage: (page: PageNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
232
|
+
byRange: (from: VerseKey, to: VerseKey, query?: ApiParams) => Promise<Verse[]>;
|
|
233
|
+
byRub: (id: RubNumber, query?: ApiParams) => Promise<Verse[]>;
|
|
234
|
+
random: (query?: ApiParams) => Promise<Verse>;
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
getUserSession: () => Promise<UserSession | null>;
|
|
238
|
+
juzs: QuranJuzs;
|
|
239
|
+
oauth2: {
|
|
240
|
+
v1: {
|
|
241
|
+
authorizeUrl: (query: Record<string, string | number | undefined>) => string;
|
|
242
|
+
exchangeCode: (params: {
|
|
243
|
+
code: string;
|
|
244
|
+
codeVerifier?: string;
|
|
245
|
+
redirectUri: string;
|
|
246
|
+
scope?: string;
|
|
247
|
+
}) => Promise<TokenResponse>;
|
|
248
|
+
getUserInfo: (accessToken?: string) => Promise<unknown>;
|
|
249
|
+
introspect: (token: string) => Promise<unknown>;
|
|
250
|
+
logout: (query?: ApiParams) => Promise<unknown>;
|
|
251
|
+
raw: Record<string, RawOperation>;
|
|
252
|
+
refresh: (refreshToken?: string) => Promise<TokenResponse>;
|
|
253
|
+
};
|
|
254
|
+
authorizeUrl: (query: Record<string, string | number | undefined>) => string;
|
|
255
|
+
exchangeCode: (params: {
|
|
256
|
+
code: string;
|
|
257
|
+
codeVerifier?: string;
|
|
258
|
+
redirectUri: string;
|
|
259
|
+
scope?: string;
|
|
260
|
+
}) => Promise<TokenResponse>;
|
|
261
|
+
getUserInfo: (accessToken?: string) => Promise<unknown>;
|
|
262
|
+
introspect: (token: string) => Promise<unknown>;
|
|
263
|
+
logout: (query?: ApiParams) => Promise<unknown>;
|
|
264
|
+
raw: Record<string, RawOperation>;
|
|
265
|
+
refresh: (refreshToken?: string) => Promise<TokenResponse>;
|
|
266
|
+
};
|
|
267
|
+
quranReflect: {
|
|
268
|
+
v1: {
|
|
269
|
+
comments: {
|
|
270
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
271
|
+
};
|
|
272
|
+
posts: {
|
|
273
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
274
|
+
};
|
|
275
|
+
raw: Record<string, (request?: OperationRequest) => Promise<unknown>>;
|
|
276
|
+
rooms: {
|
|
277
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
278
|
+
};
|
|
279
|
+
tags: {
|
|
280
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
281
|
+
};
|
|
282
|
+
users: {
|
|
283
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
comments: {
|
|
287
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
288
|
+
};
|
|
289
|
+
posts: {
|
|
290
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
291
|
+
};
|
|
292
|
+
raw: Record<string, (request?: OperationRequest) => Promise<unknown>>;
|
|
293
|
+
rooms: {
|
|
294
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
295
|
+
};
|
|
296
|
+
tags: {
|
|
297
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
298
|
+
};
|
|
299
|
+
users: {
|
|
300
|
+
[x: string]: (request?: OperationRequest) => Promise<unknown>;
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
raw: {
|
|
304
|
+
auth: {
|
|
305
|
+
v1: Record<string, RawOperation>;
|
|
306
|
+
};
|
|
307
|
+
content: {
|
|
308
|
+
v4: Record<string, RawOperation>;
|
|
309
|
+
};
|
|
310
|
+
oauth2: {
|
|
311
|
+
v1: Record<string, RawOperation>;
|
|
312
|
+
};
|
|
313
|
+
quranReflect: {
|
|
314
|
+
v1: Record<string, RawOperation>;
|
|
315
|
+
};
|
|
316
|
+
search: {
|
|
317
|
+
v1: Record<string, RawOperation>;
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
resources: QuranResources;
|
|
321
|
+
search: QuranSearch & {
|
|
322
|
+
query: ({ query: searchQuery, ...options }: {
|
|
323
|
+
query: string;
|
|
324
|
+
} & Omit<SearchParams, "query">) => Promise<SearchResponse>;
|
|
325
|
+
raw: Record<string, RawOperation>;
|
|
326
|
+
v1: {
|
|
327
|
+
query: ({ query: searchQuery, ...options }: {
|
|
328
|
+
query: string;
|
|
329
|
+
} & Omit<SearchParams, "query">) => Promise<SearchResponse>;
|
|
330
|
+
raw: Record<string, RawOperation>;
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
verses: QuranVerses;
|
|
334
|
+
};
|
|
335
|
+
type ServerClient = ReturnType<typeof createServerClient>;
|
|
336
|
+
|
|
337
|
+
export { type ServerClient, createServerClient };
|