parse.js 13.9 KB
import * as v from 'valibot'
import { ScriptLine } from './schemas/script-line.js'
import { Bundle } from './schemas/bundle.js'
import { Drama } from './schemas/drama.js'
import { ApiError } from './schemas/error.js'
import { LoginRequest, LoginResponse } from './schemas/auth.js'
import { Account } from './schemas/account.js'
import { UnlockReq, TopupCheckoutReq } from './schemas/credits.js'
import { TelemetryEvent } from './schemas/telemetry.js'
import { ShareMeta } from './schemas/share.js'
import { BillingSummary } from './schemas/commerce.js'
import {
  VisualGameAdminAnalyticsOverviewResponse,
  VisualGameAdminAnalyticsDrilldownResponse,
  VisualGameAdminPlayerInteractionsResponse,
  VisualGameAdminContentAnalyticsResponse,
  VisualGameAdminGa4BehaviorResponse,
} from './schemas/visual-game-admin-analytics.js'
import {
  WaitlistActionResponse,
  WaitlistCreateManualEntryRequest,
  WaitlistEntryDetailResponse,
  WaitlistEntryListResponse,
  WaitlistExportResponse,
  WaitlistInviteRequest,
  WaitlistInviteValidateResponse,
  WaitlistSendRegisterCodeResponse,
  WaitlistJoinRequest,
  WaitlistJoinResponse,
  WaitlistNoteRequest,
  WaitlistRejectRequest,
} from './schemas/waitlist.js'
import {
  VisualGameAgentCallList,
  VisualGameAssetManifest,
  VisualGameCreateRunResponse,
  VisualGameDeleteSaveSlotResponse,
  VisualGameEditAuditLogList,
  VisualGameEndingText,
  VisualGamePack,
  VisualGamePackAssetUploadResponse,
  VisualGamePackCompileResponse,
  VisualGameContentTranslationStatus,
  VisualGameContentTranslationResult,
  VisualGameContentTranslationInventory,
  VisualGameContentTranslationProgress,
  VisualGamePackDeleteResponse,
  VisualGamePackList,
  VisualGamePaywallInfo,
  VisualGamePreviewTokenResponse,
  VisualGameProgress,
  VisualGameProgressPatch,
  VisualGamePublishCheckList,
  VisualGameRunDetail,
  VisualGameRunList,
  VisualGameRunVideo,
  VisualGameRunVideoGeneration,
  VisualGameRunVideoGenerationResult,
  VisualGameStoryVideoLog,
  VisualGameNotification,
  VisualGameNotificationList,
  VisualGameRunEvent,
  VisualGameSaveSlot,
  VisualGameScenarioVideoList,
  VisualGameScenarioVersion,
  VisualGameShowcaseVideoPage,
  VisualGameVideoEngagement,
  VisualGameSeasonList,
  VisualGameScenarioListItem,
  VisualGameScenarioPage,
  VisualGameTtsVoiceList,
  VisualGameTurnEvent,
  VisualGameCreatorProject,
  VisualGameCreatorProjectList,
} from './schemas/visual-game.js'
import {
  VisualGameAdminUserActionResponse,
  VisualGameAdminUserCreditsAdjustRequest,
  VisualGameAdminUserDetailResponse,
  VisualGameAdminUserListResponse,
  VisualGameAdminUserProvisionRequest,
  VisualGameAdminUserProfileUpdateRequest,
  VisualGameAdminUserSubscriptionUpdateRequest,
  VisualGameAdminUserSummary,
} from './schemas/visual-game-admin-users.js'
import {
  VisualGameAdminBillingActionPolicy,
  VisualGameAdminBillingDashboard,
  VisualGameAdminBillingLedgerPage,
  VisualGameAdminBillingOrderPage,
  VisualGameAdminBillingPolicyList,
  VisualGameAdminBillingProduct,
  VisualGameAdminBillingProductList,
} from './schemas/visual-game-admin-commerce.js'
import {
  VisualGameKpAgentOutput,
  VisualGameNpcActionKpOutput,
  VisualGameNpcActorOutput,
} from './schemas/visual-game-agent.js'

/**
 * 各 parseXxx 助手:HTTP 入口边界校验的唯一入口,薄包一层 `v.parse`。
 * 非法输入抛 Valibot `ValiError`,其 `issues` 指向具体字段路径,统一错误风格。
 */

/** @param {unknown} x @returns {import('./schemas/script-line.js').ScriptLineT} */
export const parseScriptLine = (x) => v.parse(ScriptLine, x)

/** @param {unknown} x @returns {import('./schemas/bundle.js').BundleT} */
export const parseBundle = (x) => v.parse(Bundle, x)

/** @param {unknown} x @returns {import('./schemas/drama.js').DramaT} */
export const parseDrama = (x) => v.parse(Drama, x)

/** @param {unknown} x @returns {import('./schemas/error.js').ApiErrorT} */
export const parseApiError = (x) => v.parse(ApiError, x)

/** @param {unknown} x @returns {import('./schemas/auth.js').LoginRequestT} */
export const parseLogin = (x) => v.parse(LoginRequest, x)

/** @param {unknown} x @returns {import('./schemas/auth.js').LoginResponseT} */
export const parseLoginResponse = (x) => v.parse(LoginResponse, x)

/** @param {unknown} x @returns {import('./schemas/account.js').AccountT} */
export const parseAccount = (x) => v.parse(Account, x)

/** @param {unknown} x @returns {import('./schemas/credits.js').UnlockReqT} */
export const parseUnlockReq = (x) => v.parse(UnlockReq, x)

/** @param {unknown} x @returns {import('./schemas/credits.js').TopupCheckoutReqT} */
export const parseTopupCheckoutReq = (x) => v.parse(TopupCheckoutReq, x)

/** @param {unknown} x @returns {import('./schemas/telemetry.js').TelemetryEventT} */
export const parseTelemetryEvent = (x) => v.parse(TelemetryEvent, x)

/** @param {unknown} x @returns {import('./schemas/share.js').ShareMetaT} */
export const parseShareMeta = (x) => v.parse(ShareMeta, x)

/** @param {unknown} x */
export const parseBillingSummary = (x) => v.parse(BillingSummary, x)

/** @param {unknown} x */
export const parseVisualGameKpAgentOutput = (x) => v.parse(VisualGameKpAgentOutput, x)
/** @param {unknown} x */
export const parseVisualGameNpcActorOutput = (x) => v.parse(VisualGameNpcActorOutput, x)
/** @param {unknown} x */
export const parseVisualGameNpcActionKpOutput = (x) => v.parse(VisualGameNpcActionKpOutput, x)

/** @param {unknown} x */
export const parseVisualGameScenarioListItem = (x) => v.parse(VisualGameScenarioListItem, x)
/** @param {unknown} x */
export const parseVisualGameScenarioPage = (x) => v.parse(VisualGameScenarioPage, x)
/** @param {unknown} x */
export const parseVisualGameAssetManifest = (x) => v.parse(VisualGameAssetManifest, x)
/** @param {unknown} x */
export const parseVisualGameTtsVoiceList = (x) => v.parse(VisualGameTtsVoiceList, x)
/** @param {unknown} x */
export const parseVisualGameCreateRunResponse = (x) => v.parse(VisualGameCreateRunResponse, x)
/** @param {unknown} x */
export const parseVisualGameRunDetail = (x) => v.parse(VisualGameRunDetail, x)
/** @param {unknown} x */
export const parseVisualGameRunList = (x) => v.parse(VisualGameRunList, x)
/** @param {unknown} x */
export const parseVisualGameRunVideo = (x) => v.parse(VisualGameRunVideo, x)
export const parseVisualGameRunVideoGeneration = (x) => v.parse(VisualGameRunVideoGeneration, x)
export const parseVisualGameRunVideoGenerationResult = (x) => v.parse(VisualGameRunVideoGenerationResult, x)
/** @param {unknown} x */
export const parseVisualGameStoryVideoLog = (x) => v.parse(VisualGameStoryVideoLog, x)
export const parseVisualGameNotification = (x) => v.parse(VisualGameNotification, x)
export const parseVisualGameNotificationList = (x) => v.parse(VisualGameNotificationList, x)
/** @param {unknown} x */
export const parseVisualGameScenarioVideoList = (x) => v.parse(VisualGameScenarioVideoList, x)
export const parseVisualGameShowcaseVideoPage = (x) => v.parse(VisualGameShowcaseVideoPage, x)
export const parseVisualGameVideoEngagement = (x) => v.parse(VisualGameVideoEngagement, x)
export const parseVisualGameSeasonList = (x) => v.parse(VisualGameSeasonList, x)
/** @param {unknown} x */
export const parseVisualGameRunEvent = (x) => v.parse(VisualGameRunEvent, x)
/** @param {unknown} x */
export const parseVisualGameRunEventList = (x) => Array.isArray(x) ? x.map(parseVisualGameRunEvent) : []
/** @param {unknown} x */
export const parseVisualGameAgentCallList = (x) => v.parse(VisualGameAgentCallList, x)
/** @param {unknown} x */
export const parseVisualGameProgress = (x) => v.parse(VisualGameProgress, x)
/** @param {unknown} x */
export const parseVisualGameProgressPatch = (x) => v.parse(VisualGameProgressPatch, x)
/** @param {unknown} x */
export const parseVisualGamePaywallInfo = (x) => v.parse(VisualGamePaywallInfo, x)
/** @param {unknown} x */
export const parseVisualGameSaveSlot = (x) => v.parse(VisualGameSaveSlot, x)
/** @param {unknown} x */
export const parseVisualGameSaveSlotList = (x) => Array.isArray(x) ? x.map(parseVisualGameSaveSlot) : []
/** @param {unknown} x */
export const parseVisualGameDeleteSaveSlotResponse = (x) => v.parse(VisualGameDeleteSaveSlotResponse, x)
/** @param {unknown} x */
export const parseVisualGameTurnEvent = (x) => v.parse(VisualGameTurnEvent, x)
/** @param {unknown} x */
export const parseVisualGameEndingText = (x) => v.parse(VisualGameEndingText, x)
/** @param {unknown} x */
export const parseVisualGameScenarioVersion = (x) => v.parse(VisualGameScenarioVersion, x)
/** @param {unknown} x */
export const parseVisualGamePack = (x) => v.parse(VisualGamePack, x)
/** @param {unknown} x */
export const parseVisualGamePackList = (x) => v.parse(VisualGamePackList, x)
/** @param {unknown} x */
export const parseVisualGamePackCompileResponse = (x) => v.parse(VisualGamePackCompileResponse, x)
/** @param {unknown} x */
export const parseVisualGameContentTranslationStatus = (x) => v.parse(VisualGameContentTranslationStatus, x)
/** @param {unknown} x */
export const parseVisualGameContentTranslationResult = (x) => v.parse(VisualGameContentTranslationResult, x)
/** @param {unknown} x */
export const parseVisualGameContentTranslationInventory = (x) => v.parse(VisualGameContentTranslationInventory, x)
/** @param {unknown} x */
export const parseVisualGameContentTranslationProgress = (x) => v.parse(VisualGameContentTranslationProgress, x)
/** @param {unknown} x */
export const parseVisualGamePackAssetUploadResponse = (x) => v.parse(VisualGamePackAssetUploadResponse, x)
/** @param {unknown} x */
export const parseVisualGamePackDeleteResponse = (x) => v.parse(VisualGamePackDeleteResponse, x)
/** @param {unknown} x */
export const parseVisualGamePreviewTokenResponse = (x) => v.parse(VisualGamePreviewTokenResponse, x)
/** @param {unknown} x */
export const parseVisualGamePublishCheckList = (x) => v.parse(VisualGamePublishCheckList, x)
/** @param {unknown} x */
export const parseVisualGameEditAuditLogList = (x) => v.parse(VisualGameEditAuditLogList, x)
/** @param {unknown} x */
export const parseVisualGameCreatorProject = (x) => v.parse(VisualGameCreatorProject, x)
/** @param {unknown} x */
export const parseVisualGameCreatorProjectList = (x) => v.parse(VisualGameCreatorProjectList, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserSummary = (x) => v.parse(VisualGameAdminUserSummary, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserListResponse = (x) => v.parse(VisualGameAdminUserListResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserDetailResponse = (x) => v.parse(VisualGameAdminUserDetailResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserProvisionRequest = (x) => v.parse(VisualGameAdminUserProvisionRequest, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserProfileUpdateRequest = (x) => v.parse(VisualGameAdminUserProfileUpdateRequest, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserCreditsAdjustRequest = (x) => v.parse(VisualGameAdminUserCreditsAdjustRequest, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserSubscriptionUpdateRequest = (x) => v.parse(VisualGameAdminUserSubscriptionUpdateRequest, x)
/** @param {unknown} x */
export const parseVisualGameAdminUserActionResponse = (x) => v.parse(VisualGameAdminUserActionResponse, x)
export const parseVisualGameAdminBillingActionPolicy = (x) => v.parse(VisualGameAdminBillingActionPolicy, x)
export const parseVisualGameAdminBillingPolicyList = (x) => v.parse(VisualGameAdminBillingPolicyList, x)
export const parseVisualGameAdminBillingProduct = (x) => v.parse(VisualGameAdminBillingProduct, x)
export const parseVisualGameAdminBillingProductList = (x) => v.parse(VisualGameAdminBillingProductList, x)
export const parseVisualGameAdminBillingOrderPage = (x) => v.parse(VisualGameAdminBillingOrderPage, x)
export const parseVisualGameAdminBillingLedgerPage = (x) => v.parse(VisualGameAdminBillingLedgerPage, x)
export const parseVisualGameAdminBillingDashboard = (x) => v.parse(VisualGameAdminBillingDashboard, x)
/** @param {unknown} x */
export const parseVisualGameAdminAnalyticsOverviewResponse = (x) => v.parse(VisualGameAdminAnalyticsOverviewResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminAnalyticsDrilldownResponse = (x) => v.parse(VisualGameAdminAnalyticsDrilldownResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminPlayerInteractionsResponse = (x) => v.parse(VisualGameAdminPlayerInteractionsResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminContentAnalyticsResponse = (x) => v.parse(VisualGameAdminContentAnalyticsResponse, x)
/** @param {unknown} x */
export const parseVisualGameAdminGa4BehaviorResponse = (x) => v.parse(VisualGameAdminGa4BehaviorResponse, x)

/** @param {unknown} x */
export const parseWaitlistJoinRequest = (x) => v.parse(WaitlistJoinRequest, x)
/** @param {unknown} x */
export const parseWaitlistJoinResponse = (x) => v.parse(WaitlistJoinResponse, x)
/** @param {unknown} x */
export const parseWaitlistInviteValidateResponse = (x) => v.parse(WaitlistInviteValidateResponse, x)
/** @param {unknown} x */
export const parseWaitlistSendRegisterCodeResponse = (x) => v.parse(WaitlistSendRegisterCodeResponse, x)
/** @param {unknown} x */
export const parseWaitlistEntryListResponse = (x) => v.parse(WaitlistEntryListResponse, x)
/** @param {unknown} x */
export const parseWaitlistEntryDetailResponse = (x) => v.parse(WaitlistEntryDetailResponse, x)
/** @param {unknown} x */
export const parseWaitlistCreateManualEntryRequest = (x) => v.parse(WaitlistCreateManualEntryRequest, x)
/** @param {unknown} x */
export const parseWaitlistNoteRequest = (x) => v.parse(WaitlistNoteRequest, x)
/** @param {unknown} x */
export const parseWaitlistInviteRequest = (x) => v.parse(WaitlistInviteRequest, x)
/** @param {unknown} x */
export const parseWaitlistRejectRequest = (x) => v.parse(WaitlistRejectRequest, x)
/** @param {unknown} x */
export const parseWaitlistActionResponse = (x) => v.parse(WaitlistActionResponse, x)
/** @param {unknown} x */
export const parseWaitlistExportResponse = (x) => v.parse(WaitlistExportResponse, x)