@intlayer/api 9.6.0 → 9.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cms/createAuthManager.cjs +2 -3
- package/dist/cjs/cms/createIntlayerCMS.cjs +2 -3
- package/dist/cjs/cms/index.cjs +2 -2
- package/dist/cjs/distantDictionary/fetchDistantDictionaries.cjs +3 -4
- package/dist/cjs/distantDictionary/fetchDistantDictionaries.cjs.map +1 -1
- package/dist/cjs/distantDictionary/fetchDistantDictionary.cjs +3 -4
- package/dist/cjs/distantDictionary/fetchDistantDictionary.cjs.map +1 -1
- package/dist/cjs/distantDictionary/index.cjs +2 -2
- package/dist/cjs/fetcher.cjs +2 -3
- package/dist/cjs/fetcher.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/ai.cjs +79 -26
- package/dist/cjs/getIntlayerAPI/ai.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/analytics.cjs +47 -14
- package/dist/cjs/getIntlayerAPI/analytics.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/asset.cjs +41 -12
- package/dist/cjs/getIntlayerAPI/asset.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/audit.cjs +73 -20
- package/dist/cjs/getIntlayerAPI/audit.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/bitbucket.cjs +42 -13
- package/dist/cjs/getIntlayerAPI/bitbucket.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/codeberg.cjs +20 -0
- package/dist/cjs/getIntlayerAPI/codeberg.cjs.map +1 -0
- package/dist/cjs/getIntlayerAPI/dictionary.cjs +62 -17
- package/dist/cjs/getIntlayerAPI/dictionary.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/editor.cjs +3 -4
- package/dist/cjs/getIntlayerAPI/editor.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/environment.cjs +47 -14
- package/dist/cjs/getIntlayerAPI/environment.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/forge.cjs +63 -0
- package/dist/cjs/getIntlayerAPI/forge.cjs.map +1 -0
- package/dist/cjs/getIntlayerAPI/gitee.cjs +20 -0
- package/dist/cjs/getIntlayerAPI/gitee.cjs.map +1 -0
- package/dist/cjs/getIntlayerAPI/github.cjs +47 -14
- package/dist/cjs/getIntlayerAPI/github.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/gitlab.cjs +42 -13
- package/dist/cjs/getIntlayerAPI/gitlab.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/index.cjs +27 -24
- package/dist/cjs/getIntlayerAPI/index.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/newsletter.cjs +31 -10
- package/dist/cjs/getIntlayerAPI/newsletter.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/oAuth.cjs +33 -8
- package/dist/cjs/getIntlayerAPI/oAuth.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/organization.cjs +75 -24
- package/dist/cjs/getIntlayerAPI/organization.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/project.cjs +115 -33
- package/dist/cjs/getIntlayerAPI/project.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/reviewer.cjs +145 -35
- package/dist/cjs/getIntlayerAPI/reviewer.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/search.cjs +18 -7
- package/dist/cjs/getIntlayerAPI/search.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/showcaseProject.cjs +64 -19
- package/dist/cjs/getIntlayerAPI/showcaseProject.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/status.cjs +19 -7
- package/dist/cjs/getIntlayerAPI/status.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/stripe.cjs +144 -39
- package/dist/cjs/getIntlayerAPI/stripe.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/tag.cjs +36 -11
- package/dist/cjs/getIntlayerAPI/tag.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/translate.cjs +49 -12
- package/dist/cjs/getIntlayerAPI/translate.cjs.map +1 -1
- package/dist/cjs/getIntlayerAPI/user.cjs +61 -18
- package/dist/cjs/getIntlayerAPI/user.cjs.map +1 -1
- package/dist/cjs/index.cjs +38 -30
- package/dist/cjs/proxy.cjs +28 -25
- package/dist/cjs/proxy.cjs.map +1 -1
- package/dist/cjs/public/createPublicClient.cjs +26 -7
- package/dist/cjs/public/createPublicClient.cjs.map +1 -1
- package/dist/cjs/public/index.cjs +1 -1
- package/dist/cjs/resolveInternalBackendUrl.cjs +1 -2
- package/dist/esm/cms/createAuthManager.mjs +1 -2
- package/dist/esm/cms/createIntlayerCMS.mjs +1 -2
- package/dist/esm/distantDictionary/fetchDistantDictionaries.mjs +1 -2
- package/dist/esm/distantDictionary/fetchDistantDictionaries.mjs.map +1 -1
- package/dist/esm/distantDictionary/fetchDistantDictionary.mjs +1 -2
- package/dist/esm/distantDictionary/fetchDistantDictionary.mjs.map +1 -1
- package/dist/esm/fetcher.mjs +1 -2
- package/dist/esm/fetcher.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/ai.mjs +78 -25
- package/dist/esm/getIntlayerAPI/ai.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/analytics.mjs +46 -13
- package/dist/esm/getIntlayerAPI/analytics.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/asset.mjs +40 -11
- package/dist/esm/getIntlayerAPI/asset.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/audit.mjs +72 -19
- package/dist/esm/getIntlayerAPI/audit.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/bitbucket.mjs +41 -12
- package/dist/esm/getIntlayerAPI/bitbucket.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/codeberg.mjs +18 -0
- package/dist/esm/getIntlayerAPI/codeberg.mjs.map +1 -0
- package/dist/esm/getIntlayerAPI/dictionary.mjs +61 -16
- package/dist/esm/getIntlayerAPI/dictionary.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/editor.mjs +2 -3
- package/dist/esm/getIntlayerAPI/editor.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/environment.mjs +46 -13
- package/dist/esm/getIntlayerAPI/environment.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/forge.mjs +62 -0
- package/dist/esm/getIntlayerAPI/forge.mjs.map +1 -0
- package/dist/esm/getIntlayerAPI/gitee.mjs +18 -0
- package/dist/esm/getIntlayerAPI/gitee.mjs.map +1 -0
- package/dist/esm/getIntlayerAPI/github.mjs +46 -13
- package/dist/esm/getIntlayerAPI/github.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/gitlab.mjs +41 -12
- package/dist/esm/getIntlayerAPI/gitlab.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/index.mjs +6 -3
- package/dist/esm/getIntlayerAPI/index.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/newsletter.mjs +30 -9
- package/dist/esm/getIntlayerAPI/newsletter.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/oAuth.mjs +32 -7
- package/dist/esm/getIntlayerAPI/oAuth.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/organization.mjs +74 -23
- package/dist/esm/getIntlayerAPI/organization.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/project.mjs +114 -32
- package/dist/esm/getIntlayerAPI/project.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/reviewer.mjs +144 -34
- package/dist/esm/getIntlayerAPI/reviewer.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/search.mjs +17 -6
- package/dist/esm/getIntlayerAPI/search.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/showcaseProject.mjs +63 -18
- package/dist/esm/getIntlayerAPI/showcaseProject.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/status.mjs +18 -6
- package/dist/esm/getIntlayerAPI/status.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/stripe.mjs +143 -38
- package/dist/esm/getIntlayerAPI/stripe.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/tag.mjs +35 -10
- package/dist/esm/getIntlayerAPI/tag.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/translate.mjs +48 -11
- package/dist/esm/getIntlayerAPI/translate.mjs.map +1 -1
- package/dist/esm/getIntlayerAPI/user.mjs +60 -17
- package/dist/esm/getIntlayerAPI/user.mjs.map +1 -1
- package/dist/esm/index.mjs +10 -7
- package/dist/esm/proxy.mjs +6 -3
- package/dist/esm/proxy.mjs.map +1 -1
- package/dist/esm/public/createPublicClient.mjs +26 -7
- package/dist/esm/public/createPublicClient.mjs.map +1 -1
- package/dist/esm/resolveInternalBackendUrl.mjs +1 -2
- package/dist/types/cms/createAuthManager.d.ts +1 -2
- package/dist/types/cms/createAuthManager.d.ts.map +1 -1
- package/dist/types/cms/createIntlayerCMS.d.ts +0 -2
- package/dist/types/cms/createIntlayerCMS.d.ts.map +1 -1
- package/dist/types/distantDictionary/fetchDistantDictionaries.d.ts +1 -3
- package/dist/types/distantDictionary/fetchDistantDictionaries.d.ts.map +1 -1
- package/dist/types/distantDictionary/fetchDistantDictionary.d.ts +1 -3
- package/dist/types/distantDictionary/fetchDistantDictionary.d.ts.map +1 -1
- package/dist/types/fetcher.d.ts +1 -3
- package/dist/types/fetcher.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/ai.d.ts +3 -5
- package/dist/types/getIntlayerAPI/ai.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/analytics.d.ts +3 -5
- package/dist/types/getIntlayerAPI/analytics.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/asset.d.ts +3 -4
- package/dist/types/getIntlayerAPI/asset.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/audit.d.ts +49 -7
- package/dist/types/getIntlayerAPI/audit.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/bitbucket.d.ts +2 -4
- package/dist/types/getIntlayerAPI/bitbucket.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/codeberg.d.ts +59 -0
- package/dist/types/getIntlayerAPI/codeberg.d.ts.map +1 -0
- package/dist/types/getIntlayerAPI/dictionary.d.ts +3 -5
- package/dist/types/getIntlayerAPI/dictionary.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/editor.d.ts +4 -5
- package/dist/types/getIntlayerAPI/editor.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/environment.d.ts +3 -5
- package/dist/types/getIntlayerAPI/environment.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/forge.d.ts +34 -0
- package/dist/types/getIntlayerAPI/forge.d.ts.map +1 -0
- package/dist/types/getIntlayerAPI/gitee.d.ts +59 -0
- package/dist/types/getIntlayerAPI/gitee.d.ts.map +1 -0
- package/dist/types/getIntlayerAPI/github.d.ts +2 -4
- package/dist/types/getIntlayerAPI/github.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/gitlab.d.ts +2 -4
- package/dist/types/getIntlayerAPI/gitlab.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/index.d.ts +6 -3
- package/dist/types/getIntlayerAPI/index.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/newsletter.d.ts +3 -5
- package/dist/types/getIntlayerAPI/newsletter.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/oAuth.d.ts +2 -2
- package/dist/types/getIntlayerAPI/oAuth.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/organization.d.ts +3 -7
- package/dist/types/getIntlayerAPI/organization.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/project.d.ts +4 -5
- package/dist/types/getIntlayerAPI/project.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/reviewer.d.ts +682 -39
- package/dist/types/getIntlayerAPI/reviewer.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/search.d.ts +3 -5
- package/dist/types/getIntlayerAPI/search.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/showcaseProject.d.ts +3 -5
- package/dist/types/getIntlayerAPI/showcaseProject.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/status.d.ts +5 -8
- package/dist/types/getIntlayerAPI/status.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/stripe.d.ts +3 -5
- package/dist/types/getIntlayerAPI/stripe.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/tag.d.ts +3 -5
- package/dist/types/getIntlayerAPI/tag.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/translate.d.ts +3 -5
- package/dist/types/getIntlayerAPI/translate.d.ts.map +1 -1
- package/dist/types/getIntlayerAPI/user.d.ts +6 -8
- package/dist/types/getIntlayerAPI/user.d.ts.map +1 -1
- package/dist/types/index.d.ts +12 -9
- package/dist/types/proxy.d.ts +0 -2
- package/dist/types/proxy.d.ts.map +1 -1
- package/dist/types/public/createPublicClient.d.ts +1 -9
- package/dist/types/public/createPublicClient.d.ts.map +1 -1
- package/dist/types/resolveInternalBackendUrl.d.ts +0 -2
- package/dist/types/resolveInternalBackendUrl.d.ts.map +1 -1
- package/dist/types/types.d.ts +5 -2
- package/package.json +23 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reviewer.mjs","names":[],"sources":["../../../src/getIntlayerAPI/reviewer.ts"],"sourcesContent":["import type {\n CreateMissionBody,\n EstimateMissionBody,\n GetMarketplaceQuery,\n MissionEstimate,\n PaginatedResponse,\n PriceDistributionData,\n RegisterReviewerBody,\n ResponseData,\n ReviewerMessageAPI,\n ReviewerProfileAPI,\n ReviewerReviewAPI,\n SendMessageBody,\n SubmitReviewBody,\n TranslationMissionAPI,\n UpdateMissionStatusBody,\n UpdateReviewerBody,\n UploadReviewerPictureResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\nexport const getReviewerAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;\n const BASE = `${backendURL}/api/reviewer`;\n\n // ── Marketplace ────────────────────────────────────────────────────────────\n\n const getMarketplace = (\n params: GetMarketplaceQuery = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${BASE}/marketplace${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getPriceDistribution = (\n params: Pick<\n GetMarketplaceQuery,\n 'fromLocale' | 'toLocale' | 'minRating' | 'categories'\n > = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n return fetcher<ResponseData<PriceDistributionData>>(\n `${BASE}/marketplace/price-distribution${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getReviewerById = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/${reviewerId}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const getReviewerReviews = (\n reviewerId: string,\n params: { page?: number; pageSize?: number } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerReviewAPI>>(\n `${BASE}/${reviewerId}/reviews${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n // ── My profile ─────────────────────────────────────────────────────────────\n\n const getMyReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<ReviewerProfileAPI | null>>(\n `${BASE}/me`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const registerAsReviewer = (\n body: RegisterReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/register`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const updateReviewerProfile = (\n body: UpdateReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT', body }\n );\n\n const deleteReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<null>>(BASE, authAPIOptions, otherOptions, {\n method: 'DELETE',\n });\n\n // ── Contact ────────────────────────────────────────────────────────────────\n\n const contactReviewer = (\n reviewerId: string,\n body: { message: string },\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<null>>(\n `${BASE}/${reviewerId}/contact`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n // ── Missions ───────────────────────────────────────────────────────────────\n\n const estimateMission = (\n body: EstimateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<MissionEstimate>>(\n `${BASE}/mission/estimate`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const createMission = (\n body: CreateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const getMyMissions = (\n params: {\n role?: 'client' | 'reviewer';\n page?: number;\n pageSize?: number;\n } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<TranslationMissionAPI>>(\n `${BASE}/mission${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getMissionById = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission/${missionId}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const updateMissionStatus = (\n missionId: string,\n body: UpdateMissionStatusBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission/${missionId}/status`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT', body }\n );\n\n // ── Reviews ────────────────────────────────────────────────────────────────\n\n const submitReview = (\n missionId: string,\n body: SubmitReviewBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerReviewAPI>>(\n `${BASE}/mission/${missionId}/review`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n // ── Chat ───────────────────────────────────────────────────────────────────\n\n const getChatHistory = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI[]>>(\n `${BASE}/mission/${missionId}/chat/history`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const sendMessage = (\n missionId: string,\n body: SendMessageBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI>>(\n `${BASE}/mission/${missionId}/chat`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const getChatStreamUrl = (missionId: string) =>\n `${BASE}/mission/${missionId}/chat/stream`;\n\n // ── Picture uploads ────────────────────────────────────────────────────────\n\n const uploadPicture = async (\n kind: 'main' | 'cover',\n file: File,\n otherOptions: FetcherOptions = {}\n ): Promise<UploadReviewerPictureResult> => {\n const buffer = await file.arrayBuffer();\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': file.type || 'image/jpeg',\n };\n\n const authHeaders =\n (authAPIOptions.headers as Record<string, string> | undefined) ?? {};\n\n const response = await fetch(`${BASE}/me/picture/${kind}`, {\n method: 'POST',\n credentials: 'include',\n headers: { ...authHeaders, ...baseHeaders },\n body: buffer,\n signal: otherOptions.signal as AbortSignal | undefined,\n });\n\n if (!response.ok) {\n const result = await response.json();\n throw new Error(JSON.stringify(result.error) ?? 'Picture upload failed');\n }\n\n return (await response.json()) as UploadReviewerPictureResult;\n };\n\n const uploadMainPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('main', file, otherOptions);\n\n const uploadCoverPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('cover', file, otherOptions);\n\n // ── Admin ──────────────────────────────────────────────────────────────────\n\n const validateReviewerProfile = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/${reviewerId}/validate`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT' }\n );\n\n const getAdminReviewers = (\n params: { page?: number; pageSize?: number; status?: string } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${BASE}/admin/reviewers${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n return {\n getMarketplace,\n getPriceDistribution,\n getReviewerById,\n getReviewerReviews,\n getMyReviewerProfile,\n registerAsReviewer,\n updateReviewerProfile,\n deleteReviewerProfile,\n estimateMission,\n createMission,\n getMyMissions,\n getMissionById,\n updateMissionStatus,\n submitReview,\n contactReviewer,\n getChatHistory,\n sendMessage,\n getChatStreamUrl,\n uploadMainPicture,\n uploadCoverPicture,\n validateReviewerProfile,\n getAdminReviewers,\n };\n};\n\n/**\n * Authenticated `reviewer` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const reviewerEndpoint = createEndpoint(getReviewerAPI);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reviewer.mjs","names":[],"sources":["../../../src/getIntlayerAPI/reviewer.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n PaginatedResponse,\n ResponseData,\n} from '@intlayer/backend-contract/responseData';\nimport type {\n CreateMissionBody,\n EstimateMissionBody,\n GetMarketplaceQuery,\n MissionEstimate,\n PriceDistributionData,\n RegisterReviewerBody,\n ReviewerMessageAPI,\n ReviewerProfileAPI,\n ReviewerReviewAPI,\n ReviewerRoutes,\n reviewerContract,\n SendMessageBody,\n SubmitReviewBody,\n TranslationMissionAPI,\n UpdateMissionStatusBody,\n UpdateReviewerBody,\n UploadReviewerPictureResult,\n} from '@intlayer/backend-contract/reviewer';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Prefix of the routes, checked against the backend contract. */\nconst reviewerGroup = {\n prefix: '/api/reviewer',\n} as const satisfies Pick<typeof reviewerContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst reviewerEndpoints = {\n getMarketplace: { method: 'GET', path: '/marketplace' },\n getPriceDistribution: {\n method: 'GET',\n path: '/marketplace/price-distribution',\n },\n getMyReviewerProfile: { method: 'GET', path: '/me' },\n getReviewerReviews: { method: 'GET', path: '/:reviewerId/reviews' },\n getReviewerById: { method: 'GET', path: '/:reviewerId' },\n registerAsReviewer: { method: 'POST', path: '/register' },\n updateReviewerProfile: { method: 'PUT', path: '/' },\n deleteReviewerProfile: { method: 'DELETE', path: '/' },\n uploadMainPicture: { method: 'POST', path: '/me/picture/main' },\n uploadCoverPicture: { method: 'POST', path: '/me/picture/cover' },\n estimateMission: { method: 'POST', path: '/mission/estimate' },\n createMission: { method: 'POST', path: '/mission' },\n getMyMissions: { method: 'GET', path: '/mission' },\n getMissionById: { method: 'GET', path: '/mission/:missionId' },\n updateMissionStatus: { method: 'PUT', path: '/mission/:missionId/status' },\n submitReview: { method: 'POST', path: '/mission/:missionId/review' },\n getChatHistory: { method: 'GET', path: '/mission/:missionId/chat/history' },\n sendMessage: { method: 'POST', path: '/mission/:missionId/chat' },\n chatSSE: { method: 'GET', path: '/mission/:missionId/chat/stream' },\n createPaymentIntent: {\n method: 'POST',\n path: '/mission/:missionId/payment/intent',\n },\n confirmPayment: {\n method: 'POST',\n path: '/mission/:missionId/payment/confirm',\n },\n requestPayout: { method: 'POST', path: '/payout' },\n contactReviewer: { method: 'POST', path: '/:reviewerId/contact' },\n getAdminReviewers: { method: 'GET', path: '/admin/reviewers' },\n validateReviewerProfile: { method: 'PUT', path: '/:reviewerId/validate' },\n} as const satisfies RouteEndpoints<ReviewerRoutes>;\n\nexport const getReviewerAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n // ── Marketplace ────────────────────────────────────────────────────────────\n\n const getMarketplace = (\n params: GetMarketplaceQuery = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getMarketplace)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getPriceDistribution = (\n params: Pick<\n GetMarketplaceQuery,\n 'fromLocale' | 'toLocale' | 'minRating' | 'categories'\n > = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n return fetcher<ResponseData<PriceDistributionData>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getPriceDistribution)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getReviewerById = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getReviewerById,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getReviewerById.method }\n );\n\n const getReviewerReviews = (\n reviewerId: string,\n params: { page?: number; pageSize?: number } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerReviewAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getReviewerReviews, { reviewerId })}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n // ── My profile ─────────────────────────────────────────────────────────────\n\n const getMyReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<ReviewerProfileAPI | null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getMyReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getMyReviewerProfile.method }\n );\n\n const registerAsReviewer = (\n body: RegisterReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.registerAsReviewer\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.registerAsReviewer.method, body }\n );\n\n const updateReviewerProfile = (\n body: UpdateReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.updateReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.updateReviewerProfile.method, body }\n );\n\n const deleteReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.deleteReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n {\n method: reviewerEndpoints.deleteReviewerProfile.method,\n }\n );\n\n // ── Contact ────────────────────────────────────────────────────────────────\n\n const contactReviewer = (\n reviewerId: string,\n body: { message: string },\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.contactReviewer,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.contactReviewer.method, body }\n );\n\n // ── Missions ───────────────────────────────────────────────────────────────\n\n const estimateMission = (\n body: EstimateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<MissionEstimate>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.estimateMission\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.estimateMission.method, body }\n );\n\n const createMission = (\n body: CreateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.createMission),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.createMission.method, body }\n );\n\n const getMyMissions = (\n params: {\n role?: 'client' | 'reviewer';\n page?: number;\n pageSize?: number;\n } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<TranslationMissionAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getMyMissions)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getMissionById = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getMissionById,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getMissionById.method }\n );\n\n const updateMissionStatus = (\n missionId: string,\n body: UpdateMissionStatusBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.updateMissionStatus,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.updateMissionStatus.method, body }\n );\n\n // ── Reviews ────────────────────────────────────────────────────────────────\n\n const submitReview = (\n missionId: string,\n body: SubmitReviewBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerReviewAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.submitReview, {\n missionId,\n }),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.submitReview.method, body }\n );\n\n // ── Chat ───────────────────────────────────────────────────────────────────\n\n const getChatHistory = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI[]>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getChatHistory,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getChatHistory.method }\n );\n\n const sendMessage = (\n missionId: string,\n body: SendMessageBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.sendMessage, {\n missionId,\n }),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.sendMessage.method, body }\n );\n\n const getChatStreamUrl = (missionId: string) =>\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.chatSSE, {\n missionId,\n });\n\n // ── Picture uploads ────────────────────────────────────────────────────────\n\n const uploadPicture = async (\n kind: 'main' | 'cover',\n file: File,\n otherOptions: FetcherOptions = {}\n ): Promise<UploadReviewerPictureResult> => {\n const buffer = await file.arrayBuffer();\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': file.type || 'image/jpeg',\n };\n\n const authHeaders =\n (authAPIOptions.headers as Record<string, string> | undefined) ?? {};\n\n const endpoint =\n kind === 'main'\n ? reviewerEndpoints.uploadMainPicture\n : reviewerEndpoints.uploadCoverPicture;\n const response = await fetch(\n buildRouteURL(backendURL, reviewerGroup, endpoint),\n {\n method: endpoint.method,\n credentials: 'include',\n headers: { ...authHeaders, ...baseHeaders },\n body: buffer,\n signal: otherOptions.signal as AbortSignal | undefined,\n }\n );\n\n if (!response.ok) {\n const result = await response.json();\n throw new Error(JSON.stringify(result.error) ?? 'Picture upload failed');\n }\n\n return (await response.json()) as UploadReviewerPictureResult;\n };\n\n const uploadMainPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('main', file, otherOptions);\n\n const uploadCoverPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('cover', file, otherOptions);\n\n // ── Admin ──────────────────────────────────────────────────────────────────\n\n const validateReviewerProfile = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.validateReviewerProfile,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.validateReviewerProfile.method }\n );\n\n const getAdminReviewers = (\n params: { page?: number; pageSize?: number; status?: string } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getAdminReviewers)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n return {\n getMarketplace,\n getPriceDistribution,\n getReviewerById,\n getReviewerReviews,\n getMyReviewerProfile,\n registerAsReviewer,\n updateReviewerProfile,\n deleteReviewerProfile,\n estimateMission,\n createMission,\n getMyMissions,\n getMissionById,\n updateMissionStatus,\n submitReview,\n contactReviewer,\n getChatHistory,\n sendMessage,\n getChatStreamUrl,\n uploadMainPicture,\n uploadCoverPicture,\n validateReviewerProfile,\n getAdminReviewers,\n };\n};\n\n/**\n * Authenticated `reviewer` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const reviewerEndpoint = createEndpoint(getReviewerAPI);\n"],"mappings":"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"}
|
|
@@ -1,17 +1,29 @@
|
|
|
1
|
-
import { fetcher } from "../fetcher.mjs";
|
|
2
1
|
import { createEndpoint } from "../cms/createIntlayerCMS.mjs";
|
|
2
|
+
import { fetcher } from "../fetcher.mjs";
|
|
3
3
|
import { editor } from "@intlayer/config/built";
|
|
4
|
+
import { buildRouteURL } from "@intlayer/backend-contract/defineRoute";
|
|
5
|
+
import { BACKEND_URL } from "@intlayer/config/defaultValues";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
// src/getIntlayerAPI/search.ts
|
|
8
|
+
/** Prefix of the routes, checked against the backend contract. */
|
|
9
|
+
const searchGroup = { prefix: "/api/search" };
|
|
10
|
+
/**
|
|
11
|
+
* Method and path of every route, checked against the backend contract at
|
|
12
|
+
* compile time (the contract's zod schemas are never loaded).
|
|
13
|
+
*/
|
|
14
|
+
const searchEndpoints = { doc: {
|
|
15
|
+
method: "GET",
|
|
16
|
+
path: "/doc"
|
|
17
|
+
} };
|
|
6
18
|
const getSearchAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
7
|
-
const
|
|
19
|
+
const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;
|
|
8
20
|
/**
|
|
9
21
|
* Search documentation
|
|
10
22
|
* @param params - Search parameters containing the input query.
|
|
11
23
|
* @returns Search results with GitHub URLs.
|
|
12
24
|
*/
|
|
13
|
-
const searchDoc = async (params, otherOptions = {}) => await fetcher(
|
|
14
|
-
method:
|
|
25
|
+
const searchDoc = async (params, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, searchGroup, searchEndpoints.doc), authAPIOptions, otherOptions, {
|
|
26
|
+
method: searchEndpoints.doc.method,
|
|
15
27
|
params
|
|
16
28
|
});
|
|
17
29
|
return { searchDoc };
|
|
@@ -24,6 +36,5 @@ const getSearchAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
|
24
36
|
*/
|
|
25
37
|
const searchEndpoint = createEndpoint(getSearchAPI);
|
|
26
38
|
|
|
27
|
-
//#endregion
|
|
28
39
|
export { getSearchAPI, searchEndpoint };
|
|
29
40
|
//# sourceMappingURL=search.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.mjs","names":[],"sources":["../../../src/getIntlayerAPI/search.ts"],"sourcesContent":["import type {\n SearchDocUtilParams,\n SearchDocUtilResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\nexport const getSearchAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL
|
|
1
|
+
{"version":3,"file":"search.mjs","names":[],"sources":["../../../src/getIntlayerAPI/search.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n SearchDocUtilParams,\n SearchDocUtilResult,\n SearchRoutes,\n searchContract,\n} from '@intlayer/backend-contract/search';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Prefix of the routes, checked against the backend contract. */\nconst searchGroup = {\n prefix: '/api/search',\n} as const satisfies Pick<typeof searchContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst searchEndpoints = {\n doc: { method: 'GET', path: '/doc' },\n} as const satisfies RouteEndpoints<SearchRoutes>;\n\nexport const getSearchAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n /**\n * Search documentation\n * @param params - Search parameters containing the input query.\n * @returns Search results with GitHub URLs.\n */\n const searchDoc = async (\n params?: SearchDocUtilParams,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SearchDocUtilResult>(\n buildRouteURL(backendURL, searchGroup, searchEndpoints.doc),\n authAPIOptions,\n otherOptions,\n {\n method: searchEndpoints.doc.method,\n params: params,\n }\n );\n\n return {\n searchDoc,\n };\n};\n\n/**\n * Authenticated `search` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const searchEndpoint = createEndpoint(getSearchAPI);\n"],"mappings":";;;;;;;;AAeA,MAAM,cAAc,EAClB,QAAQ,cACV;;;;;AAMA,MAAM,kBAAkB,EACtB,KAAK;CAAE,QAAQ;CAAO,MAAM;AAAO,EACrC;AAEA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CACH,MAAM,aACJ,gBAAgB,QAAQ,cAAc,OAAO,cAAc;;;;;;CAO7D,MAAM,YAAY,OAChB,QACA,eAA+B,CAAC,MAEhC,MAAM,QACJ,cAAc,YAAY,aAAa,gBAAgB,GAAG,GAC1D,gBACA,cACA;EACE,QAAQ,gBAAgB,IAAI;EACpB;CACV,CACF;CAEF,OAAO,EACL,UACF;AACF;;;;;;;AAQA,MAAa,iBAAiB,eAAe,YAAY"}
|
|
@@ -1,10 +1,56 @@
|
|
|
1
|
-
import { fetcher } from "../fetcher.mjs";
|
|
2
1
|
import { createEndpoint } from "../cms/createIntlayerCMS.mjs";
|
|
2
|
+
import { fetcher } from "../fetcher.mjs";
|
|
3
3
|
import { editor } from "@intlayer/config/built";
|
|
4
|
+
import { buildRouteURL } from "@intlayer/backend-contract/defineRoute";
|
|
5
|
+
import { BACKEND_URL } from "@intlayer/config/defaultValues";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
// src/getIntlayerAPI/showcaseProject.ts
|
|
8
|
+
/** Prefix of the routes, checked against the backend contract. */
|
|
9
|
+
const showcaseProjectGroup = { prefix: "/api/showcase-project" };
|
|
10
|
+
/**
|
|
11
|
+
* Method and path of every route, checked against the backend contract at
|
|
12
|
+
* compile time (the contract's zod schemas are never loaded).
|
|
13
|
+
*/
|
|
14
|
+
const showcaseProjectEndpoints = {
|
|
15
|
+
getShowcaseProjects: {
|
|
16
|
+
method: "GET",
|
|
17
|
+
path: "/"
|
|
18
|
+
},
|
|
19
|
+
submitShowcaseProject: {
|
|
20
|
+
method: "POST",
|
|
21
|
+
path: "/submit"
|
|
22
|
+
},
|
|
23
|
+
getOtherShowcaseProjects: {
|
|
24
|
+
method: "GET",
|
|
25
|
+
path: "/others"
|
|
26
|
+
},
|
|
27
|
+
toggleShowcaseUpvote: {
|
|
28
|
+
method: "POST",
|
|
29
|
+
path: "/upvote"
|
|
30
|
+
},
|
|
31
|
+
toggleShowcaseDownvote: {
|
|
32
|
+
method: "POST",
|
|
33
|
+
path: "/downvote"
|
|
34
|
+
},
|
|
35
|
+
getShowcaseProjectById: {
|
|
36
|
+
method: "GET",
|
|
37
|
+
path: "/:projectId"
|
|
38
|
+
},
|
|
39
|
+
scanShowcaseProject: {
|
|
40
|
+
method: "GET",
|
|
41
|
+
path: "/:projectId/scan"
|
|
42
|
+
},
|
|
43
|
+
deleteShowcaseProject: {
|
|
44
|
+
method: "DELETE",
|
|
45
|
+
path: "/:projectId"
|
|
46
|
+
},
|
|
47
|
+
updateShowcaseProject: {
|
|
48
|
+
method: "PATCH",
|
|
49
|
+
path: "/:projectId"
|
|
50
|
+
}
|
|
51
|
+
};
|
|
6
52
|
const getShowcaseProjectAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
7
|
-
const
|
|
53
|
+
const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;
|
|
8
54
|
const getShowcaseProjects = async (query, otherOptions = {}) => {
|
|
9
55
|
const params = {};
|
|
10
56
|
if (query?.page !== void 0) params.page = String(query.page);
|
|
@@ -12,35 +58,35 @@ const getShowcaseProjectAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
|
12
58
|
if (query?.search !== void 0) params.search = query.search;
|
|
13
59
|
if (query?.isOpenSource !== void 0) params.isOpenSource = String(query.isOpenSource);
|
|
14
60
|
if (query?.selectedUseCases?.length) params.selectedUseCases = query.selectedUseCases;
|
|
15
|
-
return await fetcher(
|
|
16
|
-
method:
|
|
61
|
+
return await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getShowcaseProjects), authAPIOptions, otherOptions, {
|
|
62
|
+
method: showcaseProjectEndpoints.getShowcaseProjects.method,
|
|
17
63
|
params
|
|
18
64
|
});
|
|
19
65
|
};
|
|
20
|
-
const getShowcaseProjectById = async (projectId, otherOptions = {}) => await fetcher(
|
|
66
|
+
const getShowcaseProjectById = async (projectId, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getShowcaseProjectById, { projectId }), authAPIOptions, otherOptions, { method: showcaseProjectEndpoints.getShowcaseProjectById.method });
|
|
21
67
|
const getOtherShowcaseProjects = async (query, otherOptions = {}) => {
|
|
22
68
|
const params = { excludeId: query.excludeId };
|
|
23
69
|
if (query.limit !== void 0) params.limit = String(query.limit);
|
|
24
|
-
return await fetcher(
|
|
25
|
-
method:
|
|
70
|
+
return await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getOtherShowcaseProjects), authAPIOptions, otherOptions, {
|
|
71
|
+
method: showcaseProjectEndpoints.getOtherShowcaseProjects.method,
|
|
26
72
|
params
|
|
27
73
|
});
|
|
28
74
|
};
|
|
29
|
-
const submitShowcaseProject = async (body, otherOptions = {}) => await fetcher(
|
|
30
|
-
method:
|
|
75
|
+
const submitShowcaseProject = async (body, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.submitShowcaseProject), authAPIOptions, otherOptions, {
|
|
76
|
+
method: showcaseProjectEndpoints.submitShowcaseProject.method,
|
|
31
77
|
body
|
|
32
78
|
});
|
|
33
|
-
const toggleShowcaseUpvote = async (body, otherOptions = {}) => await fetcher(
|
|
34
|
-
method:
|
|
79
|
+
const toggleShowcaseUpvote = async (body, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.toggleShowcaseUpvote), authAPIOptions, otherOptions, {
|
|
80
|
+
method: showcaseProjectEndpoints.toggleShowcaseUpvote.method,
|
|
35
81
|
body
|
|
36
82
|
});
|
|
37
|
-
const toggleShowcaseDownvote = async (body, otherOptions = {}) => await fetcher(
|
|
38
|
-
method:
|
|
83
|
+
const toggleShowcaseDownvote = async (body, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.toggleShowcaseDownvote), authAPIOptions, otherOptions, {
|
|
84
|
+
method: showcaseProjectEndpoints.toggleShowcaseDownvote.method,
|
|
39
85
|
body
|
|
40
86
|
});
|
|
41
|
-
const deleteShowcaseProject = async (projectId, otherOptions = {}) => await fetcher(
|
|
42
|
-
const updateShowcaseProject = async (projectId, body, otherOptions = {}) => await fetcher(
|
|
43
|
-
method:
|
|
87
|
+
const deleteShowcaseProject = async (projectId, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.deleteShowcaseProject, { projectId }), authAPIOptions, otherOptions, { method: showcaseProjectEndpoints.deleteShowcaseProject.method });
|
|
88
|
+
const updateShowcaseProject = async (projectId, body, otherOptions = {}) => await fetcher(buildRouteURL(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.updateShowcaseProject, { projectId }), authAPIOptions, otherOptions, {
|
|
89
|
+
method: showcaseProjectEndpoints.updateShowcaseProject.method,
|
|
44
90
|
body
|
|
45
91
|
});
|
|
46
92
|
return {
|
|
@@ -62,6 +108,5 @@ const getShowcaseProjectAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
|
62
108
|
*/
|
|
63
109
|
const showcaseProjectEndpoint = createEndpoint(getShowcaseProjectAPI);
|
|
64
110
|
|
|
65
|
-
//#endregion
|
|
66
111
|
export { getShowcaseProjectAPI, showcaseProjectEndpoint };
|
|
67
112
|
//# sourceMappingURL=showcaseProject.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcaseProject.mjs","names":[],"sources":["../../../src/getIntlayerAPI/showcaseProject.ts"],"sourcesContent":["import type {\n GetOtherShowcaseProjectsResult,\n GetShowcaseProjectByIdParams,\n GetShowcaseProjectByIdResult,\n GetShowcaseProjectsResult,\n SubmitShowcaseProjectBody,\n SubmitShowcaseProjectResult,\n ToggleShowcaseDownvoteBody,\n ToggleShowcaseDownvoteResult,\n ToggleShowcaseUpvoteBody,\n ToggleShowcaseUpvoteResult,\n UpdateShowcaseProjectBody,\n UpdateShowcaseProjectResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n// Client-side query types use proper JS types (numbers/booleans) rather than\n// the backend querystring types which are always strings.\nexport type ShowcaseProjectsQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n selectedUseCases?: string[];\n isOpenSource?: boolean;\n};\n\nexport type OtherShowcaseProjectsQuery = {\n excludeId: string;\n limit?: number;\n};\n\nexport const getShowcaseProjectAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL
|
|
1
|
+
{"version":3,"file":"showcaseProject.mjs","names":[],"sources":["../../../src/getIntlayerAPI/showcaseProject.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n GetOtherShowcaseProjectsResult,\n GetShowcaseProjectByIdParams,\n GetShowcaseProjectByIdResult,\n GetShowcaseProjectsResult,\n ShowcaseProjectRoutes,\n SubmitShowcaseProjectBody,\n SubmitShowcaseProjectResult,\n showcaseProjectContract,\n ToggleShowcaseDownvoteBody,\n ToggleShowcaseDownvoteResult,\n ToggleShowcaseUpvoteBody,\n ToggleShowcaseUpvoteResult,\n UpdateShowcaseProjectBody,\n UpdateShowcaseProjectResult,\n} from '@intlayer/backend-contract/showcaseProject';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n// Client-side query types use proper JS types (numbers/booleans) rather than\n// the backend querystring types which are always strings.\nexport type ShowcaseProjectsQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n selectedUseCases?: string[];\n isOpenSource?: boolean;\n};\n\nexport type OtherShowcaseProjectsQuery = {\n excludeId: string;\n limit?: number;\n};\n\n/** Prefix of the routes, checked against the backend contract. */\nconst showcaseProjectGroup = {\n prefix: '/api/showcase-project',\n} as const satisfies Pick<typeof showcaseProjectContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst showcaseProjectEndpoints = {\n getShowcaseProjects: { method: 'GET', path: '/' },\n submitShowcaseProject: { method: 'POST', path: '/submit' },\n getOtherShowcaseProjects: { method: 'GET', path: '/others' },\n toggleShowcaseUpvote: { method: 'POST', path: '/upvote' },\n toggleShowcaseDownvote: { method: 'POST', path: '/downvote' },\n getShowcaseProjectById: { method: 'GET', path: '/:projectId' },\n scanShowcaseProject: { method: 'GET', path: '/:projectId/scan' },\n deleteShowcaseProject: { method: 'DELETE', path: '/:projectId' },\n updateShowcaseProject: { method: 'PATCH', path: '/:projectId' },\n} as const satisfies RouteEndpoints<ShowcaseProjectRoutes>;\n\nexport const getShowcaseProjectAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n const getShowcaseProjects = async (\n query?: ShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string | string[]> = {};\n if (query?.page !== undefined) params.page = String(query.page);\n if (query?.pageSize !== undefined) params.pageSize = String(query.pageSize);\n if (query?.search !== undefined) params.search = query.search;\n if (query?.isOpenSource !== undefined)\n params.isOpenSource = String(query.isOpenSource);\n if (query?.selectedUseCases?.length)\n params.selectedUseCases = query.selectedUseCases;\n\n return await fetcher<GetShowcaseProjectsResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getShowcaseProjects\n ),\n authAPIOptions,\n otherOptions,\n {\n method: showcaseProjectEndpoints.getShowcaseProjects.method,\n params: params as any,\n }\n );\n };\n\n const getShowcaseProjectById = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<GetShowcaseProjectByIdResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getShowcaseProjectById,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.getShowcaseProjectById.method }\n );\n\n const getOtherShowcaseProjects = async (\n query: OtherShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string> = { excludeId: query.excludeId };\n if (query.limit !== undefined) params.limit = String(query.limit);\n return await fetcher<GetOtherShowcaseProjectsResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getOtherShowcaseProjects\n ),\n authAPIOptions,\n otherOptions,\n {\n method: showcaseProjectEndpoints.getOtherShowcaseProjects.method,\n params: params as any,\n }\n );\n };\n\n const submitShowcaseProject = async (\n body: SubmitShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SubmitShowcaseProjectResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.submitShowcaseProject\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.submitShowcaseProject.method, body }\n );\n\n const toggleShowcaseUpvote = async (\n body: ToggleShowcaseUpvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseUpvoteResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.toggleShowcaseUpvote\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.toggleShowcaseUpvote.method, body }\n );\n\n const toggleShowcaseDownvote = async (\n body: ToggleShowcaseDownvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseDownvoteResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.toggleShowcaseDownvote\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.toggleShowcaseDownvote.method, body }\n );\n\n const deleteShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<{ data: { success: boolean } }>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.deleteShowcaseProject,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.deleteShowcaseProject.method }\n );\n\n const updateShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n body: UpdateShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<UpdateShowcaseProjectResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.updateShowcaseProject,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.updateShowcaseProject.method, body }\n );\n\n return {\n getShowcaseProjects,\n getShowcaseProjectById,\n getOtherShowcaseProjects,\n submitShowcaseProject,\n toggleShowcaseUpvote,\n toggleShowcaseDownvote,\n deleteShowcaseProject,\n updateShowcaseProject,\n };\n};\n\n/**\n * Authenticated `showcaseProject` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const showcaseProjectEndpoint = createEndpoint(getShowcaseProjectAPI);\n"],"mappings":"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"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import { fetcher } from "../fetcher.mjs";
|
|
2
1
|
import { createEndpoint } from "../cms/createIntlayerCMS.mjs";
|
|
2
|
+
import { fetcher } from "../fetcher.mjs";
|
|
3
3
|
import { editor } from "@intlayer/config/built";
|
|
4
|
+
import { buildRouteURL } from "@intlayer/backend-contract/defineRoute";
|
|
5
|
+
import { BACKEND_URL } from "@intlayer/config/defaultValues";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
// src/getIntlayerAPI/status.ts
|
|
8
|
+
/** Routes used here, checked against the backend contract. */
|
|
9
|
+
const userGroup = { prefix: "/api/user" };
|
|
10
|
+
const setupStatusEndpoint = {
|
|
11
|
+
method: "GET",
|
|
12
|
+
path: "/setup"
|
|
13
|
+
};
|
|
14
|
+
const demoGroup = { prefix: "/api/demo" };
|
|
15
|
+
const demoEndpoints = { getDemoSession: {
|
|
16
|
+
method: "GET",
|
|
17
|
+
path: "/session"
|
|
18
|
+
} };
|
|
6
19
|
/**
|
|
7
20
|
* Instance/entry status endpoints. These back the decisions made when an
|
|
8
21
|
* unauthenticated visitor reaches the app root:
|
|
@@ -13,21 +26,21 @@ import { editor } from "@intlayer/config/built";
|
|
|
13
26
|
* response).
|
|
14
27
|
*/
|
|
15
28
|
const getStatusAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
16
|
-
const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;
|
|
29
|
+
const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;
|
|
17
30
|
/**
|
|
18
31
|
* Reports whether the instance still needs its initial setup (creation of
|
|
19
32
|
* the first super-admin). Only ever `true` on a self-hosted deployment with
|
|
20
33
|
* an empty users collection. Public endpoint — no authentication required.
|
|
21
34
|
* @returns `{ isSetupRequired: boolean }`.
|
|
22
35
|
*/
|
|
23
|
-
const getSetupStatus = async (otherOptions = {}) => await fetcher(
|
|
36
|
+
const getSetupStatus = async (otherOptions = {}) => await fetcher(buildRouteURL(backendURL, userGroup, setupStatusEndpoint), authAPIOptions, otherOptions, { cache: "no-store" });
|
|
24
37
|
/**
|
|
25
38
|
* Signs the current browser into the shared demo account. The backend
|
|
26
39
|
* responds with a `Set-Cookie` header establishing the demo session, so this
|
|
27
40
|
* must run with credentials included (the default in the fetcher).
|
|
28
41
|
* @returns `{ ok: boolean }`.
|
|
29
42
|
*/
|
|
30
|
-
const getDemoSession = async (otherOptions = {}) => await fetcher(
|
|
43
|
+
const getDemoSession = async (otherOptions = {}) => await fetcher(buildRouteURL(backendURL, demoGroup, demoEndpoints.getDemoSession), authAPIOptions, otherOptions, { cache: "no-store" });
|
|
31
44
|
return {
|
|
32
45
|
getSetupStatus,
|
|
33
46
|
getDemoSession
|
|
@@ -41,6 +54,5 @@ const getStatusAPI = (authAPIOptions = {}, intlayerConfig) => {
|
|
|
41
54
|
*/
|
|
42
55
|
const statusEndpoint = createEndpoint(getStatusAPI);
|
|
43
56
|
|
|
44
|
-
//#endregion
|
|
45
57
|
export { getStatusAPI, statusEndpoint };
|
|
46
58
|
//# sourceMappingURL=status.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.mjs","names":[],"sources":["../../../src/getIntlayerAPI/status.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"status.mjs","names":[],"sources":["../../../src/getIntlayerAPI/status.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n DemoRoutes,\n demoContract,\n GetDemoSessionResult,\n} from '@intlayer/backend-contract/demo';\nimport type {\n GetSetupStatusResult,\n UserRoutes,\n userContract,\n} from '@intlayer/backend-contract/user';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Result of the demo-session bootstrap endpoint. */\nexport type { GetDemoSessionResult };\n\n/** Routes used here, checked against the backend contract. */\nconst userGroup = {\n prefix: '/api/user',\n} as const satisfies Pick<typeof userContract, 'prefix'>;\nconst setupStatusEndpoint = {\n method: 'GET',\n path: '/setup',\n} as const satisfies Pick<UserRoutes['getSetupStatus'], 'method' | 'path'>;\nconst demoGroup = {\n prefix: '/api/demo',\n} as const satisfies Pick<typeof demoContract, 'prefix'>;\nconst demoEndpoints = {\n getDemoSession: { method: 'GET', path: '/session' },\n} as const satisfies RouteEndpoints<DemoRoutes>;\n\n/**\n * Instance/entry status endpoints. These back the decisions made when an\n * unauthenticated visitor reaches the app root:\n * - `getSetupStatus` — on a self-hosted instance, whether the first\n * super-admin still needs to be created.\n * - `getDemoSession` — on the hosted cloud, signs the visitor into the shared\n * read-only demo account (the backend sets the session cookie on the\n * response).\n */\nexport const getStatusAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n /**\n * Reports whether the instance still needs its initial setup (creation of\n * the first super-admin). Only ever `true` on a self-hosted deployment with\n * an empty users collection. Public endpoint — no authentication required.\n * @returns `{ isSetupRequired: boolean }`.\n */\n const getSetupStatus = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetSetupStatusResult>(\n buildRouteURL(backendURL, userGroup, setupStatusEndpoint),\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n /**\n * Signs the current browser into the shared demo account. The backend\n * responds with a `Set-Cookie` header establishing the demo session, so this\n * must run with credentials included (the default in the fetcher).\n * @returns `{ ok: boolean }`.\n */\n const getDemoSession = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetDemoSessionResult>(\n buildRouteURL(backendURL, demoGroup, demoEndpoints.getDemoSession),\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n return {\n getSetupStatus,\n getDemoSession,\n };\n};\n\n/**\n * Instance status endpoints bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const statusEndpoint = createEndpoint(getStatusAPI);\n"],"mappings":";;;;;;;;AAsBA,MAAM,YAAY,EAChB,QAAQ,YACV;AACA,MAAM,sBAAsB;CAC1B,QAAQ;CACR,MAAM;AACR;AACA,MAAM,YAAY,EAChB,QAAQ,YACV;AACA,MAAM,gBAAgB,EACpB,gBAAgB;CAAE,QAAQ;CAAO,MAAM;AAAW,EACpD;;;;;;;;;;AAWA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CACH,MAAM,aACJ,gBAAgB,QAAQ,cAAc,OAAO,cAAc;;;;;;;CAQ7D,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAM,QACJ,cAAc,YAAY,WAAW,mBAAmB,GACxD,gBACA,cACA,EACE,OAAO,WACT,CACF;;;;;;;CAQF,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAM,QACJ,cAAc,YAAY,WAAW,cAAc,cAAc,GACjE,gBACA,cACA,EACE,OAAO,WACT,CACF;CAEF,OAAO;EACL;EACA;CACF;AACF;;;;;;;AAQA,MAAa,iBAAiB,eAAe,YAAY"}
|