sa2kit 3.2.0 → 3.2.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/CollisionBalls-DgKtscU2.d.mts +41 -0
- package/dist/CollisionBalls-DgKtscU2.d.ts +41 -0
- package/dist/ConfigService-Oga_zFRS.d.mts +262 -0
- package/dist/ConfigService-Oga_zFRS.d.ts +262 -0
- package/dist/UniversalFileService-CC4d3wkc.d.ts +139 -0
- package/dist/UniversalFileService-CzAE_G4V.d.mts +139 -0
- package/dist/boothVaultService-lKcnyA-u.d.mts +83 -0
- package/dist/boothVaultService-lKcnyA-u.d.ts +83 -0
- package/dist/business/audioDetection/index.d.mts +2 -0
- package/dist/business/audioDetection/index.d.ts +2 -0
- package/dist/business/audioDetection/index.js +1244 -0
- package/dist/business/audioDetection/index.js.map +1 -0
- package/dist/business/audioDetection/index.mjs +1227 -0
- package/dist/business/audioDetection/index.mjs.map +1 -0
- package/dist/business/calendar/index.d.mts +6 -0
- package/dist/business/calendar/index.d.ts +6 -0
- package/dist/business/calendar/index.js +7433 -0
- package/dist/business/calendar/index.js.map +1 -0
- package/dist/business/calendar/index.mjs +7257 -0
- package/dist/business/calendar/index.mjs.map +1 -0
- package/dist/business/calendar/routes/index.d.mts +191 -0
- package/dist/business/calendar/routes/index.d.ts +191 -0
- package/dist/business/calendar/routes/index.js +844 -0
- package/dist/business/calendar/routes/index.js.map +1 -0
- package/dist/business/calendar/routes/index.mjs +826 -0
- package/dist/business/calendar/routes/index.mjs.map +1 -0
- package/dist/business/festivalCard/index.d.mts +4 -0
- package/dist/business/festivalCard/index.d.ts +4 -0
- package/dist/business/festivalCard/index.js +1492 -0
- package/dist/business/festivalCard/index.js.map +1 -0
- package/dist/business/festivalCard/index.mjs +1475 -0
- package/dist/business/festivalCard/index.mjs.map +1 -0
- package/dist/business/festivalCard/routes/index.d.mts +42 -0
- package/dist/business/festivalCard/routes/index.d.ts +42 -0
- package/dist/business/festivalCard/routes/index.js +361 -0
- package/dist/business/festivalCard/routes/index.js.map +1 -0
- package/dist/business/festivalCard/routes/index.mjs +356 -0
- package/dist/business/festivalCard/routes/index.mjs.map +1 -0
- package/dist/business/festivalCard/server/index.d.mts +120 -0
- package/dist/business/festivalCard/server/index.d.ts +120 -0
- package/dist/business/festivalCard/server/index.js +272 -0
- package/dist/business/festivalCard/server/index.js.map +1 -0
- package/dist/business/festivalCard/server/index.mjs +265 -0
- package/dist/business/festivalCard/server/index.mjs.map +1 -0
- package/dist/business/index.d.mts +34 -0
- package/dist/business/index.d.ts +34 -0
- package/dist/business/index.js +29282 -0
- package/dist/business/index.js.map +1 -0
- package/dist/business/index.mjs +29237 -0
- package/dist/business/index.mjs.map +1 -0
- package/dist/business/mikuContest/ui/web/index.d.mts +2 -0
- package/dist/business/mikuContest/ui/web/index.d.ts +2 -0
- package/dist/business/mikuContest/ui/web/index.js +353 -0
- package/dist/business/mikuContest/ui/web/index.js.map +1 -0
- package/dist/business/mikuContest/ui/web/index.mjs +343 -0
- package/dist/business/mikuContest/ui/web/index.mjs.map +1 -0
- package/dist/business/mikuFireworks3D/index.d.mts +2 -0
- package/dist/business/mikuFireworks3D/index.d.ts +2 -0
- package/dist/business/mikuFireworks3D/index.js +1267 -0
- package/dist/business/mikuFireworks3D/index.js.map +1 -0
- package/dist/business/mikuFireworks3D/index.mjs +1228 -0
- package/dist/business/mikuFireworks3D/index.mjs.map +1 -0
- package/dist/business/mikuFusionGame/index.d.mts +2 -0
- package/dist/business/mikuFusionGame/index.d.ts +2 -0
- package/dist/business/mikuFusionGame/index.js +1208 -0
- package/dist/business/mikuFusionGame/index.js.map +1 -0
- package/dist/business/mikuFusionGame/index.mjs +1195 -0
- package/dist/business/mikuFusionGame/index.mjs.map +1 -0
- package/dist/business/mmd/admin/index.d.mts +487 -0
- package/dist/business/mmd/admin/index.d.ts +487 -0
- package/dist/business/mmd/admin/index.js +1058 -0
- package/dist/business/mmd/admin/index.js.map +1 -0
- package/dist/business/mmd/admin/index.mjs +1027 -0
- package/dist/business/mmd/admin/index.mjs.map +1 -0
- package/dist/business/mmd/index.d.mts +5 -0
- package/dist/business/mmd/index.d.ts +5 -0
- package/dist/business/mmd/index.js +10119 -0
- package/dist/business/mmd/index.js.map +1 -0
- package/dist/business/mmd/index.mjs +10028 -0
- package/dist/business/mmd/index.mjs.map +1 -0
- package/dist/business/mmd/server/index.d.mts +139 -0
- package/dist/business/mmd/server/index.d.ts +139 -0
- package/dist/business/mmd/server/index.js +424 -0
- package/dist/business/mmd/server/index.js.map +1 -0
- package/dist/business/mmd/server/index.mjs +404 -0
- package/dist/business/mmd/server/index.mjs.map +1 -0
- package/dist/business/music/index.d.mts +3 -0
- package/dist/business/music/index.d.ts +3 -0
- package/dist/business/music/index.js +830 -0
- package/dist/business/music/index.js.map +1 -0
- package/dist/business/music/index.mjs +809 -0
- package/dist/business/music/index.mjs.map +1 -0
- package/dist/business/music/server/index.d.mts +1 -0
- package/dist/business/music/server/index.d.ts +1 -0
- package/dist/business/music/server/index.js +194 -0
- package/dist/business/music/server/index.js.map +1 -0
- package/dist/business/music/server/index.mjs +182 -0
- package/dist/business/music/server/index.mjs.map +1 -0
- package/dist/business/navigation/index.d.mts +2 -0
- package/dist/business/navigation/index.d.ts +2 -0
- package/dist/business/navigation/index.js +453 -0
- package/dist/business/navigation/index.js.map +1 -0
- package/dist/business/navigation/index.mjs +443 -0
- package/dist/business/navigation/index.mjs.map +1 -0
- package/dist/business/portfolio/index.d.mts +3 -0
- package/dist/business/portfolio/index.d.ts +3 -0
- package/dist/business/portfolio/index.js +736 -0
- package/dist/business/portfolio/index.js.map +1 -0
- package/dist/business/portfolio/index.mjs +724 -0
- package/dist/business/portfolio/index.mjs.map +1 -0
- package/dist/business/qqbot/server/index.d.mts +167 -0
- package/dist/business/qqbot/server/index.d.ts +167 -0
- package/dist/business/qqbot/server/index.js +394 -0
- package/dist/business/qqbot/server/index.js.map +1 -0
- package/dist/business/qqbot/server/index.mjs +385 -0
- package/dist/business/qqbot/server/index.mjs.map +1 -0
- package/dist/business/qqbot/ui/web/index.d.mts +10 -0
- package/dist/business/qqbot/ui/web/index.d.ts +10 -0
- package/dist/business/qqbot/ui/web/index.js +105 -0
- package/dist/business/qqbot/ui/web/index.js.map +1 -0
- package/dist/business/qqbot/ui/web/index.mjs +99 -0
- package/dist/business/qqbot/ui/web/index.mjs.map +1 -0
- package/dist/business/screenReceiver/index.d.mts +2 -0
- package/dist/business/screenReceiver/index.d.ts +2 -0
- package/dist/business/screenReceiver/index.js +281 -0
- package/dist/business/screenReceiver/index.js.map +1 -0
- package/dist/business/screenReceiver/index.mjs +273 -0
- package/dist/business/screenReceiver/index.mjs.map +1 -0
- package/dist/business/testYourself/admin/index.d.mts +58 -0
- package/dist/business/testYourself/admin/index.d.ts +58 -0
- package/dist/business/testYourself/admin/index.js +1009 -0
- package/dist/business/testYourself/admin/index.js.map +1 -0
- package/dist/business/testYourself/admin/index.mjs +1002 -0
- package/dist/business/testYourself/admin/index.mjs.map +1 -0
- package/dist/business/testYourself/index.d.mts +6 -0
- package/dist/business/testYourself/index.d.ts +6 -0
- package/dist/business/testYourself/index.js +2551 -0
- package/dist/business/testYourself/index.js.map +1 -0
- package/dist/business/testYourself/index.mjs +2531 -0
- package/dist/business/testYourself/index.mjs.map +1 -0
- package/dist/business/testYourself/server/index.d.mts +1029 -0
- package/dist/business/testYourself/server/index.d.ts +1029 -0
- package/dist/business/testYourself/server/index.js +825 -0
- package/dist/business/testYourself/server/index.js.map +1 -0
- package/dist/business/testYourself/server/index.mjs +816 -0
- package/dist/business/testYourself/server/index.mjs.map +1 -0
- package/dist/business/vocaloidBooth/index.d.mts +2 -0
- package/dist/business/vocaloidBooth/index.d.ts +2 -0
- package/dist/business/vocaloidBooth/index.js +172 -0
- package/dist/business/vocaloidBooth/index.js.map +1 -0
- package/dist/business/vocaloidBooth/index.mjs +166 -0
- package/dist/business/vocaloidBooth/index.mjs.map +1 -0
- package/dist/business/vocaloidBooth/server/index.d.mts +111 -0
- package/dist/business/vocaloidBooth/server/index.d.ts +111 -0
- package/dist/business/vocaloidBooth/server/index.js +247 -0
- package/dist/business/vocaloidBooth/server/index.js.map +1 -0
- package/dist/business/vocaloidBooth/server/index.mjs +237 -0
- package/dist/business/vocaloidBooth/server/index.mjs.map +1 -0
- package/dist/business/vocaloidBooth/web/index.d.mts +45 -0
- package/dist/business/vocaloidBooth/web/index.d.ts +45 -0
- package/dist/business/vocaloidBooth/web/index.js +376 -0
- package/dist/business/vocaloidBooth/web/index.js.map +1 -0
- package/dist/business/vocaloidBooth/web/index.mjs +362 -0
- package/dist/business/vocaloidBooth/web/index.mjs.map +1 -0
- package/dist/config-BQp3qLAL.d.mts +22 -0
- package/dist/config-BQp3qLAL.d.ts +22 -0
- package/dist/drizzle-schema-BNhqj2AZ.d.mts +1114 -0
- package/dist/drizzle-schema-BNhqj2AZ.d.ts +1114 -0
- package/dist/festivalCardService-D60G-sgr.d.mts +13 -0
- package/dist/festivalCardService-DnLyJpRh.d.ts +13 -0
- package/dist/index-BMgdH5dL.d.mts +1716 -0
- package/dist/index-BO9_Do5y.d.mts +93 -0
- package/dist/index-BO9_Do5y.d.ts +93 -0
- package/dist/index-BSmd4ikf.d.ts +76 -0
- package/dist/index-BSwvWYp2.d.mts +2632 -0
- package/dist/index-Bo_fW3Tl.d.mts +105 -0
- package/dist/index-Bo_fW3Tl.d.ts +105 -0
- package/dist/index-BrKazb8M.d.mts +148 -0
- package/dist/index-BrKazb8M.d.ts +148 -0
- package/dist/index-Bzh6QE4P.d.ts +25 -0
- package/dist/index-C5Ic6eSR.d.mts +25 -0
- package/dist/index-C8i9SIxk.d.ts +2632 -0
- package/dist/index-C_GhVhOT.d.mts +109 -0
- package/dist/index-C_GhVhOT.d.ts +109 -0
- package/dist/index-Cb3UEpG4.d.mts +101 -0
- package/dist/index-CjlkUj01.d.mts +103 -0
- package/dist/index-CucXCBNR.d.mts +302 -0
- package/dist/index-CucXCBNR.d.ts +302 -0
- package/dist/index-DLLPTprx.d.mts +1522 -0
- package/dist/index-DRiZy0dv.d.mts +525 -0
- package/dist/index-DRiZy0dv.d.ts +525 -0
- package/dist/index-Dc_I2t0P.d.mts +103 -0
- package/dist/index-DowAHRIP.d.mts +250 -0
- package/dist/index-DowAHRIP.d.ts +250 -0
- package/dist/index-Dpq_5H2n.d.ts +103 -0
- package/dist/index-Ds2M_9zb.d.ts +101 -0
- package/dist/index-IXMAeTtN.d.ts +1716 -0
- package/dist/index-VFDbZxVM.d.ts +1522 -0
- package/dist/index-jadkp96n.d.ts +103 -0
- package/dist/index-r2-zE3iC.d.mts +76 -0
- package/dist/index.d.mts +10682 -0
- package/dist/index.d.ts +10682 -0
- package/dist/index.js +38233 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +37959 -0
- package/dist/index.mjs.map +1 -0
- package/dist/types-B6B210gX.d.mts +270 -0
- package/dist/types-B6B210gX.d.ts +270 -0
- package/dist/types-B7voqjjA.d.mts +51 -0
- package/dist/types-B7voqjjA.d.ts +51 -0
- package/dist/types-Bdnte5EN.d.mts +292 -0
- package/dist/types-C2z_QQPI.d.mts +70 -0
- package/dist/types-C2z_QQPI.d.ts +70 -0
- package/dist/types-HorDyIRv.d.mts +303 -0
- package/dist/types-HorDyIRv.d.ts +303 -0
- package/dist/types-_rFX1atk.d.ts +292 -0
- package/package.json +3 -2
|
@@ -0,0 +1,1522 @@
|
|
|
1
|
+
import React__default, { ReactNode } from 'react';
|
|
2
|
+
import { i as index$j } from './index-r2-zE3iC.mjs';
|
|
3
|
+
import { i as index$i } from './index-Bo_fW3Tl.mjs';
|
|
4
|
+
import { G as GridItem, a as GridColumns, b as GridGap, i as index$c } from './index-BMgdH5dL.mjs';
|
|
5
|
+
import { i as index$g } from './index-BSwvWYp2.mjs';
|
|
6
|
+
import { i as index$l } from './index-Cb3UEpG4.mjs';
|
|
7
|
+
import { i as index$h } from './index-CjlkUj01.mjs';
|
|
8
|
+
import { i as index$f } from './index-BrKazb8M.mjs';
|
|
9
|
+
import { i as index$e } from './index-CucXCBNR.mjs';
|
|
10
|
+
import { M as MikuContestConfig, C as CreateMikuSubmissionInput, a as MikuSubmission, b as MikuSubmissionFilter, R as ReviewMikuSubmissionInput, V as VoteMikuSubmissionInput, c as MikuVoterRestriction, S as SetMikuVoterRestrictionInput, d as ResetMikuVotesInput, e as MikuAnnouncement, f as CreateMikuAnnouncementInput, g as MikuLeaderboardItem, h as MikuContestStateSnapshot, i as MikuSubmissionExportRow, j as MikuContestPersistedState, k as MikuSubmissionContent, l as MikuVoteRecord, m as MikuVotingRules, n as MikuContestApiClient, o as Requester, H as HttpMethod, p as MikuContestRole, q as MikuContestTimeline, r as MikuFeatureToggles, s as MikuNoticeType, t as MikuSubmissionStatus, u as MikuWorkType, v as createMikuContestApiClient, w as index$a } from './index-DowAHRIP.mjs';
|
|
11
|
+
import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
|
|
12
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
13
|
+
import { N as NapCatConfig, d as NapCatWebApiResponse, e as NapCatWebhookEvent, O as OneBotActionResponse, c as OneBotFriendInfo, b as OneBotGroupInfo, f as OneBotStatus, S as SendGroupMessagePayload, a as SendPrivateMessagePayload } from './types-B7voqjjA.mjs';
|
|
14
|
+
import { NapCatConsole, NapCatConsoleProps } from './business/qqbot/ui/web/index.mjs';
|
|
15
|
+
import { i as index$k } from './index-C_GhVhOT.mjs';
|
|
16
|
+
import { i as index$d } from './index-Dc_I2t0P.mjs';
|
|
17
|
+
import { i as index$m } from './index-C5Ic6eSR.mjs';
|
|
18
|
+
import { i as index$b } from './index-DRiZy0dv.mjs';
|
|
19
|
+
|
|
20
|
+
type BubbleShooterStatus = 'ready' | 'shooting' | 'won' | 'lost';
|
|
21
|
+
interface BubbleShooterConfig {
|
|
22
|
+
rows: number;
|
|
23
|
+
cols: number;
|
|
24
|
+
initialRows: number;
|
|
25
|
+
bubbleRadius: number;
|
|
26
|
+
topOffset: number;
|
|
27
|
+
palette: string[];
|
|
28
|
+
launchSpeed: number;
|
|
29
|
+
minMatchCount: number;
|
|
30
|
+
}
|
|
31
|
+
interface BubbleShooterSlot {
|
|
32
|
+
row: number;
|
|
33
|
+
col: number;
|
|
34
|
+
}
|
|
35
|
+
interface BubbleShooterProjectile {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
vx: number;
|
|
39
|
+
vy: number;
|
|
40
|
+
color: string;
|
|
41
|
+
}
|
|
42
|
+
interface BubbleShooterResolution {
|
|
43
|
+
grid: (string | null)[][];
|
|
44
|
+
removed: number;
|
|
45
|
+
matched: number;
|
|
46
|
+
dropped: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
declare const DEFAULT_BUBBLE_SHOOTER_CONFIG: BubbleShooterConfig;
|
|
50
|
+
declare const getBubbleDiameter: (config: BubbleShooterConfig) => number;
|
|
51
|
+
declare const getRowStep: (config: BubbleShooterConfig) => number;
|
|
52
|
+
declare const getBoardWidth: (config: BubbleShooterConfig) => number;
|
|
53
|
+
declare const getBoardHeight: (config: BubbleShooterConfig) => number;
|
|
54
|
+
declare const createEmptyGrid: (config: BubbleShooterConfig) => (string | null)[][];
|
|
55
|
+
declare const createInitialGrid: (config: BubbleShooterConfig) => (string | null)[][];
|
|
56
|
+
declare const pickRandomColor: (palette: string[]) => string;
|
|
57
|
+
declare const getBubblePosition: (row: number, col: number, config: BubbleShooterConfig) => {
|
|
58
|
+
x: number;
|
|
59
|
+
y: number;
|
|
60
|
+
};
|
|
61
|
+
declare const isValidSlot: (slot: BubbleShooterSlot, config: BubbleShooterConfig) => boolean;
|
|
62
|
+
declare const getNeighbors: (slot: BubbleShooterSlot, config: BubbleShooterConfig) => BubbleShooterSlot[];
|
|
63
|
+
declare const getNearestSlot: (x: number, y: number, config: BubbleShooterConfig) => BubbleShooterSlot;
|
|
64
|
+
declare const findAttachSlot: (x: number, y: number, grid: (string | null)[][], config: BubbleShooterConfig, preferred?: BubbleShooterSlot) => BubbleShooterSlot | null;
|
|
65
|
+
declare const findCollisionSlot: (x: number, y: number, grid: (string | null)[][], config: BubbleShooterConfig) => BubbleShooterSlot | null;
|
|
66
|
+
declare const resolveMatches: (grid: (string | null)[][], placed: BubbleShooterSlot, config: BubbleShooterConfig) => BubbleShooterResolution;
|
|
67
|
+
declare const hasAnyBubble: (grid: (string | null)[][]) => boolean;
|
|
68
|
+
declare const hasReachedDangerLine: (grid: (string | null)[][], config: BubbleShooterConfig, dangerRowOffset?: number) => boolean;
|
|
69
|
+
|
|
70
|
+
interface BubbleShooterBoardProps {
|
|
71
|
+
config?: Partial<BubbleShooterConfig>;
|
|
72
|
+
className?: string;
|
|
73
|
+
}
|
|
74
|
+
declare const BubbleShooterBoard: React__default.FC<BubbleShooterBoardProps>;
|
|
75
|
+
|
|
76
|
+
interface BubbleShooterGamePageProps {
|
|
77
|
+
config?: Partial<BubbleShooterConfig>;
|
|
78
|
+
title?: string;
|
|
79
|
+
description?: string;
|
|
80
|
+
}
|
|
81
|
+
declare const BubbleShooterGamePage: React__default.FC<BubbleShooterGamePageProps>;
|
|
82
|
+
|
|
83
|
+
declare const index$9_BubbleShooterBoard: typeof BubbleShooterBoard;
|
|
84
|
+
declare const index$9_BubbleShooterGamePage: typeof BubbleShooterGamePage;
|
|
85
|
+
declare namespace index$9 {
|
|
86
|
+
export { index$9_BubbleShooterBoard as BubbleShooterBoard, index$9_BubbleShooterGamePage as BubbleShooterGamePage };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
type index$8_BubbleShooterConfig = BubbleShooterConfig;
|
|
90
|
+
type index$8_BubbleShooterProjectile = BubbleShooterProjectile;
|
|
91
|
+
type index$8_BubbleShooterResolution = BubbleShooterResolution;
|
|
92
|
+
type index$8_BubbleShooterSlot = BubbleShooterSlot;
|
|
93
|
+
type index$8_BubbleShooterStatus = BubbleShooterStatus;
|
|
94
|
+
declare const index$8_DEFAULT_BUBBLE_SHOOTER_CONFIG: typeof DEFAULT_BUBBLE_SHOOTER_CONFIG;
|
|
95
|
+
declare const index$8_createEmptyGrid: typeof createEmptyGrid;
|
|
96
|
+
declare const index$8_createInitialGrid: typeof createInitialGrid;
|
|
97
|
+
declare const index$8_findAttachSlot: typeof findAttachSlot;
|
|
98
|
+
declare const index$8_findCollisionSlot: typeof findCollisionSlot;
|
|
99
|
+
declare const index$8_getBoardHeight: typeof getBoardHeight;
|
|
100
|
+
declare const index$8_getBoardWidth: typeof getBoardWidth;
|
|
101
|
+
declare const index$8_getBubbleDiameter: typeof getBubbleDiameter;
|
|
102
|
+
declare const index$8_getBubblePosition: typeof getBubblePosition;
|
|
103
|
+
declare const index$8_getNearestSlot: typeof getNearestSlot;
|
|
104
|
+
declare const index$8_getNeighbors: typeof getNeighbors;
|
|
105
|
+
declare const index$8_getRowStep: typeof getRowStep;
|
|
106
|
+
declare const index$8_hasAnyBubble: typeof hasAnyBubble;
|
|
107
|
+
declare const index$8_hasReachedDangerLine: typeof hasReachedDangerLine;
|
|
108
|
+
declare const index$8_isValidSlot: typeof isValidSlot;
|
|
109
|
+
declare const index$8_pickRandomColor: typeof pickRandomColor;
|
|
110
|
+
declare const index$8_resolveMatches: typeof resolveMatches;
|
|
111
|
+
declare namespace index$8 {
|
|
112
|
+
export { type index$8_BubbleShooterConfig as BubbleShooterConfig, type index$8_BubbleShooterProjectile as BubbleShooterProjectile, type index$8_BubbleShooterResolution as BubbleShooterResolution, type index$8_BubbleShooterSlot as BubbleShooterSlot, type index$8_BubbleShooterStatus as BubbleShooterStatus, index$8_DEFAULT_BUBBLE_SHOOTER_CONFIG as DEFAULT_BUBBLE_SHOOTER_CONFIG, index$8_createEmptyGrid as createEmptyGrid, index$8_createInitialGrid as createInitialGrid, index$8_findAttachSlot as findAttachSlot, index$8_findCollisionSlot as findCollisionSlot, index$8_getBoardHeight as getBoardHeight, index$8_getBoardWidth as getBoardWidth, index$8_getBubbleDiameter as getBubbleDiameter, index$8_getBubblePosition as getBubblePosition, index$8_getNearestSlot as getNearestSlot, index$8_getNeighbors as getNeighbors, index$8_getRowStep as getRowStep, index$8_hasAnyBubble as hasAnyBubble, index$8_hasReachedDangerLine as hasReachedDangerLine, index$8_isValidSlot as isValidSlot, index$8_pickRandomColor as pickRandomColor, index$8_resolveMatches as resolveMatches, index$9 as webUI };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
interface SocialLink {
|
|
116
|
+
type: string;
|
|
117
|
+
url: string;
|
|
118
|
+
icon?: ReactNode;
|
|
119
|
+
}
|
|
120
|
+
interface ProfileData {
|
|
121
|
+
name: string;
|
|
122
|
+
avatar?: string;
|
|
123
|
+
title?: string;
|
|
124
|
+
bio?: string;
|
|
125
|
+
contacts?: Record<string, string>;
|
|
126
|
+
socialLinks?: SocialLink[];
|
|
127
|
+
customContent?: ReactNode;
|
|
128
|
+
badges?: ProfileBadge[];
|
|
129
|
+
stats?: Stat[];
|
|
130
|
+
}
|
|
131
|
+
interface ProfileBadge {
|
|
132
|
+
label: string;
|
|
133
|
+
type?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
134
|
+
icon?: ReactNode;
|
|
135
|
+
}
|
|
136
|
+
interface Stat {
|
|
137
|
+
label: string;
|
|
138
|
+
value: string | number;
|
|
139
|
+
icon?: ReactNode;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
interface ProfileButtonProps {
|
|
143
|
+
data?: ProfileData;
|
|
144
|
+
buttonText?: string;
|
|
145
|
+
variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
|
|
146
|
+
size?: 'default' | 'sm' | 'lg' | 'icon';
|
|
147
|
+
className?: string;
|
|
148
|
+
modalTheme?: 'light' | 'dark' | 'blue';
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* 个人信息按钮组件,点击后显示个人信息弹窗
|
|
152
|
+
*/
|
|
153
|
+
declare const ProfileButton: React__default.FC<ProfileButtonProps>;
|
|
154
|
+
|
|
155
|
+
interface ProfileModalProps {
|
|
156
|
+
isOpen: boolean;
|
|
157
|
+
onClose: () => void;
|
|
158
|
+
data: ProfileData;
|
|
159
|
+
showAvatar?: boolean;
|
|
160
|
+
showContacts?: boolean;
|
|
161
|
+
showSocial?: boolean;
|
|
162
|
+
showBio?: boolean;
|
|
163
|
+
avatarSize?: number;
|
|
164
|
+
onAvatarClick?: () => void;
|
|
165
|
+
onSocialLinkClick?: (url: string, type: string) => void;
|
|
166
|
+
onContactClick?: (type: string, value: string) => void;
|
|
167
|
+
themeName?: 'light' | 'dark' | 'blue';
|
|
168
|
+
className?: string;
|
|
169
|
+
children?: React__default.ReactNode;
|
|
170
|
+
}
|
|
171
|
+
declare const ProfileModal: React__default.FC<ProfileModalProps>;
|
|
172
|
+
|
|
173
|
+
interface AutoOpenModalProps {
|
|
174
|
+
data: ProfileData;
|
|
175
|
+
delay?: number;
|
|
176
|
+
themeName?: 'light' | 'dark' | 'blue';
|
|
177
|
+
onClose?: () => void;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 自动打开个人信息弹窗组件
|
|
181
|
+
* 页面加载后自动显示弹窗
|
|
182
|
+
*/
|
|
183
|
+
declare const AutoOpenModal: React__default.FC<AutoOpenModalProps>;
|
|
184
|
+
|
|
185
|
+
interface EnhancedAvatarProps {
|
|
186
|
+
src?: string;
|
|
187
|
+
name?: string;
|
|
188
|
+
size?: 'small' | 'medium' | 'large' | number;
|
|
189
|
+
mood?: 'online' | 'offline' | 'away';
|
|
190
|
+
statusText?: string;
|
|
191
|
+
onClick?: () => void;
|
|
192
|
+
className?: string;
|
|
193
|
+
}
|
|
194
|
+
declare const EnhancedAvatar: React__default.FC<EnhancedAvatarProps>;
|
|
195
|
+
|
|
196
|
+
declare const index$7_AutoOpenModal: typeof AutoOpenModal;
|
|
197
|
+
type index$7_AutoOpenModalProps = AutoOpenModalProps;
|
|
198
|
+
declare const index$7_EnhancedAvatar: typeof EnhancedAvatar;
|
|
199
|
+
type index$7_EnhancedAvatarProps = EnhancedAvatarProps;
|
|
200
|
+
type index$7_ProfileBadge = ProfileBadge;
|
|
201
|
+
declare const index$7_ProfileButton: typeof ProfileButton;
|
|
202
|
+
type index$7_ProfileButtonProps = ProfileButtonProps;
|
|
203
|
+
type index$7_ProfileData = ProfileData;
|
|
204
|
+
declare const index$7_ProfileModal: typeof ProfileModal;
|
|
205
|
+
type index$7_ProfileModalProps = ProfileModalProps;
|
|
206
|
+
type index$7_SocialLink = SocialLink;
|
|
207
|
+
type index$7_Stat = Stat;
|
|
208
|
+
declare namespace index$7 {
|
|
209
|
+
export { index$7_AutoOpenModal as AutoOpenModal, type index$7_AutoOpenModalProps as AutoOpenModalProps, index$7_EnhancedAvatar as EnhancedAvatar, type index$7_EnhancedAvatarProps as EnhancedAvatarProps, type index$7_ProfileBadge as ProfileBadge, index$7_ProfileButton as ProfileButton, type index$7_ProfileButtonProps as ProfileButtonProps, type index$7_ProfileData as ProfileData, index$7_ProfileModal as ProfileModal, type index$7_ProfileModalProps as ProfileModalProps, type index$7_SocialLink as SocialLink, type index$7_Stat as Stat };
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* 实验田模块类型定义
|
|
214
|
+
*/
|
|
215
|
+
/**
|
|
216
|
+
* 实验项目类别
|
|
217
|
+
*/
|
|
218
|
+
type ExperimentCategory = 'utility' | 'leisure';
|
|
219
|
+
/**
|
|
220
|
+
* 实验项目接口
|
|
221
|
+
*/
|
|
222
|
+
interface ExperimentItem {
|
|
223
|
+
/** 项目唯一标识 */
|
|
224
|
+
id: string;
|
|
225
|
+
/** 项目标题 */
|
|
226
|
+
title: string;
|
|
227
|
+
/** 项目描述 */
|
|
228
|
+
description: string;
|
|
229
|
+
/** 项目路径 */
|
|
230
|
+
path: string;
|
|
231
|
+
/** 项目标签 */
|
|
232
|
+
tags: string[];
|
|
233
|
+
/** 项目类别 */
|
|
234
|
+
category: ExperimentCategory;
|
|
235
|
+
/** 是否已完成 */
|
|
236
|
+
isCompleted?: boolean;
|
|
237
|
+
/** 创建时间 */
|
|
238
|
+
createdAt?: string;
|
|
239
|
+
/** 更新时间 */
|
|
240
|
+
updatedAt?: string;
|
|
241
|
+
/** 用户自定义排序索引 */
|
|
242
|
+
userOrder?: number;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* 实验田视图模式
|
|
246
|
+
*/
|
|
247
|
+
type ViewMode = 'all' | 'utility' | 'leisure';
|
|
248
|
+
/**
|
|
249
|
+
* 完成状态筛选选项
|
|
250
|
+
*/
|
|
251
|
+
type CompletionFilter = 'all' | 'completed' | 'incomplete';
|
|
252
|
+
/**
|
|
253
|
+
* 排序模式
|
|
254
|
+
*/
|
|
255
|
+
type SortMode = 'auto' | 'manual';
|
|
256
|
+
/**
|
|
257
|
+
* 实验田搜索和筛选配置
|
|
258
|
+
*/
|
|
259
|
+
interface TestFieldConfig {
|
|
260
|
+
/** 当前视图模式 */
|
|
261
|
+
viewMode: ViewMode;
|
|
262
|
+
/** 搜索查询 */
|
|
263
|
+
searchQuery: string;
|
|
264
|
+
/** 完成状态筛选 */
|
|
265
|
+
completionFilter: CompletionFilter;
|
|
266
|
+
/** 排序方式 */
|
|
267
|
+
sortBy: 'title' | 'category' | 'createdAt' | 'updatedAt' | 'completion';
|
|
268
|
+
/** 排序方向 */
|
|
269
|
+
sortOrder: 'asc' | 'desc';
|
|
270
|
+
/** 排序模式 */
|
|
271
|
+
sortMode: SortMode;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* 实验田页面属性
|
|
275
|
+
*/
|
|
276
|
+
interface TestFieldPageProps {
|
|
277
|
+
/** 初始配置 */
|
|
278
|
+
initialConfig?: Partial<TestFieldConfig>;
|
|
279
|
+
/** 实验项目列表 */
|
|
280
|
+
experiments?: ExperimentItem[];
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
interface CategoryFilterProps {
|
|
284
|
+
viewMode: ViewMode;
|
|
285
|
+
onViewModeChange: (mode: ViewMode) => void;
|
|
286
|
+
counts: {
|
|
287
|
+
utility: number;
|
|
288
|
+
leisure: number;
|
|
289
|
+
};
|
|
290
|
+
className?: string;
|
|
291
|
+
}
|
|
292
|
+
declare const CategoryFilter: React__default.FC<CategoryFilterProps>;
|
|
293
|
+
|
|
294
|
+
interface CompletionFilterProps {
|
|
295
|
+
completionFilter: CompletionFilter;
|
|
296
|
+
onCompletionFilterChange: (filter: CompletionFilter) => void;
|
|
297
|
+
counts: {
|
|
298
|
+
all: number;
|
|
299
|
+
completed: number;
|
|
300
|
+
inProgress: number;
|
|
301
|
+
};
|
|
302
|
+
className?: string;
|
|
303
|
+
}
|
|
304
|
+
declare const CompletionFilterComponent: React__default.FC<CompletionFilterProps>;
|
|
305
|
+
|
|
306
|
+
interface PageHeaderProps {
|
|
307
|
+
counts: {
|
|
308
|
+
all: number;
|
|
309
|
+
utility: number;
|
|
310
|
+
leisure: number;
|
|
311
|
+
completed: number;
|
|
312
|
+
};
|
|
313
|
+
className?: string;
|
|
314
|
+
}
|
|
315
|
+
declare const PageHeader: React__default.FC<PageHeaderProps>;
|
|
316
|
+
|
|
317
|
+
/** 实验项目网格项接口 */
|
|
318
|
+
interface ExperimentGridItem extends GridItem {
|
|
319
|
+
title: string;
|
|
320
|
+
description: string;
|
|
321
|
+
path: string;
|
|
322
|
+
tags: string[];
|
|
323
|
+
category: string;
|
|
324
|
+
isCompleted?: boolean;
|
|
325
|
+
updatedAt?: string;
|
|
326
|
+
createdAt?: string;
|
|
327
|
+
}
|
|
328
|
+
/** 实验项目网格组件 Props */
|
|
329
|
+
interface ExperimentGridProps<T extends ExperimentGridItem> {
|
|
330
|
+
/** 数据项数组 */
|
|
331
|
+
items: T[];
|
|
332
|
+
/** 自定义渲染函数(可选) */
|
|
333
|
+
renderItem?: (item: T, index: number) => React__default.ReactNode;
|
|
334
|
+
/** 网格列数配置(可选) */
|
|
335
|
+
columns?: GridColumns;
|
|
336
|
+
/** 间距配置(可选) */
|
|
337
|
+
gap?: GridGap;
|
|
338
|
+
/** 额外的容器类名 */
|
|
339
|
+
className?: string;
|
|
340
|
+
}
|
|
341
|
+
/** 实验项目网格组件 */
|
|
342
|
+
declare function ExperimentGrid<T extends ExperimentGridItem>({ items, renderItem, columns, gap, className }: ExperimentGridProps<T>): React__default.JSX.Element;
|
|
343
|
+
/** 为了向后兼容,导出一个专门用于 ExperimentItem 的组件 */
|
|
344
|
+
declare function ExperimentItemGrid({ experiments, ...props }: Omit<ExperimentGridProps<ExperimentItem>, 'items'> & {
|
|
345
|
+
experiments: ExperimentItem[];
|
|
346
|
+
}): React__default.JSX.Element;
|
|
347
|
+
|
|
348
|
+
interface EmptyStateProps {
|
|
349
|
+
searchQuery: string;
|
|
350
|
+
onClearSearch: () => void;
|
|
351
|
+
className?: string;
|
|
352
|
+
}
|
|
353
|
+
declare const EmptyState: React__default.FC<EmptyStateProps>;
|
|
354
|
+
|
|
355
|
+
interface SortControlProps {
|
|
356
|
+
sortBy: TestFieldConfig['sortBy'];
|
|
357
|
+
sortOrder: TestFieldConfig['sortOrder'];
|
|
358
|
+
onSortByChange: (sortBy: TestFieldConfig['sortBy']) => void;
|
|
359
|
+
onSortOrderChange: (sortOrder: TestFieldConfig['sortOrder']) => void;
|
|
360
|
+
}
|
|
361
|
+
declare const SortControl: React__default.FC<SortControlProps>;
|
|
362
|
+
|
|
363
|
+
interface SortModeToggleProps {
|
|
364
|
+
sortMode: SortMode;
|
|
365
|
+
onSortModeChange: (mode: SortMode) => void;
|
|
366
|
+
}
|
|
367
|
+
declare const SortModeToggle: React__default.FC<SortModeToggleProps>;
|
|
368
|
+
|
|
369
|
+
interface DraggableExperimentGridProps {
|
|
370
|
+
items: ExperimentItem[];
|
|
371
|
+
onOrderChange?: (items: ExperimentItem[]) => void;
|
|
372
|
+
className?: string;
|
|
373
|
+
}
|
|
374
|
+
declare const DraggableExperimentGrid: React__default.FC<DraggableExperimentGridProps>;
|
|
375
|
+
|
|
376
|
+
interface SortableExperimentItemProps {
|
|
377
|
+
item: ExperimentItem;
|
|
378
|
+
onMoveUp?: () => void;
|
|
379
|
+
onMoveDown?: () => void;
|
|
380
|
+
isFirst?: boolean;
|
|
381
|
+
isLast?: boolean;
|
|
382
|
+
}
|
|
383
|
+
declare const SortableExperimentItem: React__default.FC<SortableExperimentItemProps>;
|
|
384
|
+
|
|
385
|
+
interface PermissionGuardProps {
|
|
386
|
+
children: React__default.ReactNode;
|
|
387
|
+
fallback?: React__default.ReactNode;
|
|
388
|
+
}
|
|
389
|
+
declare const PermissionGuard: React__default.FC<PermissionGuardProps>;
|
|
390
|
+
|
|
391
|
+
declare const UserInfoBar: React__default.FC;
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* 实验田模块工具函数
|
|
395
|
+
*/
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* 过滤实验项目
|
|
399
|
+
*/
|
|
400
|
+
declare function filterExperiments(experiments: ExperimentItem[], config: Partial<TestFieldConfig>): ExperimentItem[];
|
|
401
|
+
/**
|
|
402
|
+
* 排序实验项目
|
|
403
|
+
*/
|
|
404
|
+
declare function sortExperiments(experiments: ExperimentItem[], sortBy?: TestFieldConfig['sortBy'], sortOrder?: TestFieldConfig['sortOrder']): ExperimentItem[];
|
|
405
|
+
/**
|
|
406
|
+
* 获取所有标签
|
|
407
|
+
*/
|
|
408
|
+
declare function getAllTags(experiments: ExperimentItem[]): string[];
|
|
409
|
+
/**
|
|
410
|
+
* 根据类别统计实验项目数量
|
|
411
|
+
*/
|
|
412
|
+
declare function getExperimentCounts(experiments: ExperimentItem[]): {
|
|
413
|
+
all: number;
|
|
414
|
+
utility: number;
|
|
415
|
+
leisure: number;
|
|
416
|
+
completed: number;
|
|
417
|
+
inProgress: number;
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* 验证实验项目数据
|
|
421
|
+
*/
|
|
422
|
+
declare function validateExperiment(experiment: Partial<ExperimentItem>): boolean;
|
|
423
|
+
/**
|
|
424
|
+
* 获取类别显示名称
|
|
425
|
+
*/
|
|
426
|
+
declare function getCategoryDisplayName(category: ViewMode): string;
|
|
427
|
+
/**
|
|
428
|
+
* 获取类别颜色
|
|
429
|
+
*/
|
|
430
|
+
declare function getCategoryColor(category: ExperimentItem['category']): string;
|
|
431
|
+
/**
|
|
432
|
+
* 获取完成状态显示名称
|
|
433
|
+
*/
|
|
434
|
+
declare function getCompletionFilterDisplayName(filter: CompletionFilter): string;
|
|
435
|
+
/**
|
|
436
|
+
* 获取完成状态标签样式
|
|
437
|
+
*/
|
|
438
|
+
declare function getCompletionStatusColor(isCompleted?: boolean): string;
|
|
439
|
+
/**
|
|
440
|
+
* 获取完成状态标签文本
|
|
441
|
+
*/
|
|
442
|
+
declare function getCompletionStatusText(isCompleted?: boolean): string;
|
|
443
|
+
|
|
444
|
+
declare const index$6_CategoryFilter: typeof CategoryFilter;
|
|
445
|
+
type index$6_CompletionFilter = CompletionFilter;
|
|
446
|
+
declare const index$6_CompletionFilterComponent: typeof CompletionFilterComponent;
|
|
447
|
+
declare const index$6_DraggableExperimentGrid: typeof DraggableExperimentGrid;
|
|
448
|
+
type index$6_DraggableExperimentGridProps = DraggableExperimentGridProps;
|
|
449
|
+
declare const index$6_EmptyState: typeof EmptyState;
|
|
450
|
+
type index$6_EmptyStateProps = EmptyStateProps;
|
|
451
|
+
type index$6_ExperimentCategory = ExperimentCategory;
|
|
452
|
+
declare const index$6_ExperimentGrid: typeof ExperimentGrid;
|
|
453
|
+
type index$6_ExperimentGridItem = ExperimentGridItem;
|
|
454
|
+
type index$6_ExperimentGridProps<T extends ExperimentGridItem> = ExperimentGridProps<T>;
|
|
455
|
+
type index$6_ExperimentItem = ExperimentItem;
|
|
456
|
+
declare const index$6_ExperimentItemGrid: typeof ExperimentItemGrid;
|
|
457
|
+
declare const index$6_PageHeader: typeof PageHeader;
|
|
458
|
+
type index$6_PageHeaderProps = PageHeaderProps;
|
|
459
|
+
declare const index$6_PermissionGuard: typeof PermissionGuard;
|
|
460
|
+
declare const index$6_SortControl: typeof SortControl;
|
|
461
|
+
type index$6_SortControlProps = SortControlProps;
|
|
462
|
+
type index$6_SortMode = SortMode;
|
|
463
|
+
declare const index$6_SortModeToggle: typeof SortModeToggle;
|
|
464
|
+
type index$6_SortModeToggleProps = SortModeToggleProps;
|
|
465
|
+
declare const index$6_SortableExperimentItem: typeof SortableExperimentItem;
|
|
466
|
+
type index$6_SortableExperimentItemProps = SortableExperimentItemProps;
|
|
467
|
+
type index$6_TestFieldConfig = TestFieldConfig;
|
|
468
|
+
type index$6_TestFieldPageProps = TestFieldPageProps;
|
|
469
|
+
declare const index$6_UserInfoBar: typeof UserInfoBar;
|
|
470
|
+
type index$6_ViewMode = ViewMode;
|
|
471
|
+
declare const index$6_filterExperiments: typeof filterExperiments;
|
|
472
|
+
declare const index$6_getAllTags: typeof getAllTags;
|
|
473
|
+
declare const index$6_getCategoryColor: typeof getCategoryColor;
|
|
474
|
+
declare const index$6_getCategoryDisplayName: typeof getCategoryDisplayName;
|
|
475
|
+
declare const index$6_getCompletionFilterDisplayName: typeof getCompletionFilterDisplayName;
|
|
476
|
+
declare const index$6_getCompletionStatusColor: typeof getCompletionStatusColor;
|
|
477
|
+
declare const index$6_getCompletionStatusText: typeof getCompletionStatusText;
|
|
478
|
+
declare const index$6_getExperimentCounts: typeof getExperimentCounts;
|
|
479
|
+
declare const index$6_sortExperiments: typeof sortExperiments;
|
|
480
|
+
declare const index$6_validateExperiment: typeof validateExperiment;
|
|
481
|
+
declare namespace index$6 {
|
|
482
|
+
export { index$6_CategoryFilter as CategoryFilter, type index$6_CompletionFilter as CompletionFilter, index$6_CompletionFilterComponent as CompletionFilterComponent, index$6_DraggableExperimentGrid as DraggableExperimentGrid, type index$6_DraggableExperimentGridProps as DraggableExperimentGridProps, index$6_EmptyState as EmptyState, type index$6_EmptyStateProps as EmptyStateProps, type index$6_ExperimentCategory as ExperimentCategory, index$6_ExperimentGrid as ExperimentGrid, type index$6_ExperimentGridItem as ExperimentGridItem, type index$6_ExperimentGridProps as ExperimentGridProps, type index$6_ExperimentItem as ExperimentItem, index$6_ExperimentItemGrid as ExperimentItemGrid, index$6_PageHeader as PageHeader, type index$6_PageHeaderProps as PageHeaderProps, index$6_PermissionGuard as PermissionGuard, index$6_SortControl as SortControl, type index$6_SortControlProps as SortControlProps, type index$6_SortMode as SortMode, index$6_SortModeToggle as SortModeToggle, type index$6_SortModeToggleProps as SortModeToggleProps, index$6_SortableExperimentItem as SortableExperimentItem, type index$6_SortableExperimentItemProps as SortableExperimentItemProps, type index$6_TestFieldConfig as TestFieldConfig, type index$6_TestFieldPageProps as TestFieldPageProps, index$6_UserInfoBar as UserInfoBar, type index$6_ViewMode as ViewMode, index$6_filterExperiments as filterExperiments, index$6_getAllTags as getAllTags, index$6_getCategoryColor as getCategoryColor, index$6_getCategoryDisplayName as getCategoryDisplayName, index$6_getCompletionFilterDisplayName as getCompletionFilterDisplayName, index$6_getCompletionStatusColor as getCompletionStatusColor, index$6_getCompletionStatusText as getCompletionStatusText, index$6_getExperimentCounts as getExperimentCounts, index$6_sortExperiments as sortExperiments, index$6_validateExperiment as validateExperiment };
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
interface MikuContestServiceOptions {
|
|
486
|
+
contestConfig?: Partial<MikuContestConfig>;
|
|
487
|
+
}
|
|
488
|
+
declare class MikuContestService {
|
|
489
|
+
private contest;
|
|
490
|
+
private readonly submissions;
|
|
491
|
+
private readonly votes;
|
|
492
|
+
private readonly announcements;
|
|
493
|
+
private readonly voterRestrictions;
|
|
494
|
+
constructor(options?: MikuContestServiceOptions);
|
|
495
|
+
getContestConfig(): MikuContestConfig;
|
|
496
|
+
updateContestConfig(patch: Partial<MikuContestConfig>): MikuContestConfig;
|
|
497
|
+
createSubmission(input: CreateMikuSubmissionInput, mode?: 'web' | 'miniapp'): MikuSubmission;
|
|
498
|
+
listSubmissions(filter?: MikuSubmissionFilter): MikuSubmission[];
|
|
499
|
+
getSubmission(submissionId: string): MikuSubmission | null;
|
|
500
|
+
reviewSubmission(input: ReviewMikuSubmissionInput): MikuSubmission;
|
|
501
|
+
vote(input: VoteMikuSubmissionInput): MikuSubmission;
|
|
502
|
+
getVoterRestriction(voterId: string): MikuVoterRestriction | null;
|
|
503
|
+
setVoterRestriction(input: SetMikuVoterRestrictionInput): MikuVoterRestriction;
|
|
504
|
+
resetVotes(input: ResetMikuVotesInput): {
|
|
505
|
+
removedVotes: number;
|
|
506
|
+
affectedSubmissions: string[];
|
|
507
|
+
};
|
|
508
|
+
listAnnouncements(contestId?: string): MikuAnnouncement[];
|
|
509
|
+
publishAnnouncement(input: CreateMikuAnnouncementInput): MikuAnnouncement;
|
|
510
|
+
getLeaderboard(limit?: number): MikuLeaderboardItem[];
|
|
511
|
+
getSnapshot(): MikuContestStateSnapshot;
|
|
512
|
+
getSubmissionExportRows(filter?: MikuSubmissionFilter): MikuSubmissionExportRow[];
|
|
513
|
+
exportSubmissionExcel(filter?: MikuSubmissionFilter): Uint8Array;
|
|
514
|
+
private recalculateVoteCounts;
|
|
515
|
+
exportPersistenceState(): MikuContestPersistedState;
|
|
516
|
+
importPersistenceState(state: MikuContestPersistedState): void;
|
|
517
|
+
}
|
|
518
|
+
declare const createMikuContestService: (options?: MikuContestServiceOptions) => MikuContestService;
|
|
519
|
+
|
|
520
|
+
interface MikuContestPersistenceAdapter {
|
|
521
|
+
loadState(contestId: string): Promise<MikuContestPersistedState | null>;
|
|
522
|
+
saveState(state: MikuContestPersistedState): Promise<void>;
|
|
523
|
+
}
|
|
524
|
+
type DrizzleLikeDb = {
|
|
525
|
+
select: (...args: any[]) => any;
|
|
526
|
+
insert: (...args: any[]) => any;
|
|
527
|
+
update: (...args: any[]) => any;
|
|
528
|
+
delete: (...args: any[]) => any;
|
|
529
|
+
};
|
|
530
|
+
|
|
531
|
+
declare const mikuContestConfigs: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
532
|
+
name: "miku_contest_configs";
|
|
533
|
+
schema: undefined;
|
|
534
|
+
columns: {
|
|
535
|
+
contestId: drizzle_orm_pg_core.PgColumn<{
|
|
536
|
+
name: "contest_id";
|
|
537
|
+
tableName: "miku_contest_configs";
|
|
538
|
+
dataType: "string";
|
|
539
|
+
columnType: "PgText";
|
|
540
|
+
data: string;
|
|
541
|
+
driverParam: string;
|
|
542
|
+
notNull: true;
|
|
543
|
+
hasDefault: false;
|
|
544
|
+
isPrimaryKey: true;
|
|
545
|
+
isAutoincrement: false;
|
|
546
|
+
hasRuntimeDefault: false;
|
|
547
|
+
enumValues: [string, ...string[]];
|
|
548
|
+
baseColumn: never;
|
|
549
|
+
identity: undefined;
|
|
550
|
+
generated: undefined;
|
|
551
|
+
}, {}, {}>;
|
|
552
|
+
config: drizzle_orm_pg_core.PgColumn<{
|
|
553
|
+
name: "config";
|
|
554
|
+
tableName: "miku_contest_configs";
|
|
555
|
+
dataType: "json";
|
|
556
|
+
columnType: "PgJsonb";
|
|
557
|
+
data: MikuContestConfig;
|
|
558
|
+
driverParam: unknown;
|
|
559
|
+
notNull: true;
|
|
560
|
+
hasDefault: false;
|
|
561
|
+
isPrimaryKey: false;
|
|
562
|
+
isAutoincrement: false;
|
|
563
|
+
hasRuntimeDefault: false;
|
|
564
|
+
enumValues: undefined;
|
|
565
|
+
baseColumn: never;
|
|
566
|
+
identity: undefined;
|
|
567
|
+
generated: undefined;
|
|
568
|
+
}, {}, {
|
|
569
|
+
$type: MikuContestConfig;
|
|
570
|
+
}>;
|
|
571
|
+
createdAt: drizzle_orm_pg_core.PgColumn<{
|
|
572
|
+
name: "created_at";
|
|
573
|
+
tableName: "miku_contest_configs";
|
|
574
|
+
dataType: "date";
|
|
575
|
+
columnType: "PgTimestamp";
|
|
576
|
+
data: Date;
|
|
577
|
+
driverParam: string;
|
|
578
|
+
notNull: true;
|
|
579
|
+
hasDefault: true;
|
|
580
|
+
isPrimaryKey: false;
|
|
581
|
+
isAutoincrement: false;
|
|
582
|
+
hasRuntimeDefault: false;
|
|
583
|
+
enumValues: undefined;
|
|
584
|
+
baseColumn: never;
|
|
585
|
+
identity: undefined;
|
|
586
|
+
generated: undefined;
|
|
587
|
+
}, {}, {}>;
|
|
588
|
+
updatedAt: drizzle_orm_pg_core.PgColumn<{
|
|
589
|
+
name: "updated_at";
|
|
590
|
+
tableName: "miku_contest_configs";
|
|
591
|
+
dataType: "date";
|
|
592
|
+
columnType: "PgTimestamp";
|
|
593
|
+
data: Date;
|
|
594
|
+
driverParam: string;
|
|
595
|
+
notNull: true;
|
|
596
|
+
hasDefault: true;
|
|
597
|
+
isPrimaryKey: false;
|
|
598
|
+
isAutoincrement: false;
|
|
599
|
+
hasRuntimeDefault: false;
|
|
600
|
+
enumValues: undefined;
|
|
601
|
+
baseColumn: never;
|
|
602
|
+
identity: undefined;
|
|
603
|
+
generated: undefined;
|
|
604
|
+
}, {}, {}>;
|
|
605
|
+
};
|
|
606
|
+
dialect: "pg";
|
|
607
|
+
}>;
|
|
608
|
+
declare const mikuContestSubmissions: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
609
|
+
name: "miku_contest_submissions";
|
|
610
|
+
schema: undefined;
|
|
611
|
+
columns: {
|
|
612
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
613
|
+
name: "id";
|
|
614
|
+
tableName: "miku_contest_submissions";
|
|
615
|
+
dataType: "string";
|
|
616
|
+
columnType: "PgText";
|
|
617
|
+
data: string;
|
|
618
|
+
driverParam: string;
|
|
619
|
+
notNull: true;
|
|
620
|
+
hasDefault: false;
|
|
621
|
+
isPrimaryKey: true;
|
|
622
|
+
isAutoincrement: false;
|
|
623
|
+
hasRuntimeDefault: false;
|
|
624
|
+
enumValues: [string, ...string[]];
|
|
625
|
+
baseColumn: never;
|
|
626
|
+
identity: undefined;
|
|
627
|
+
generated: undefined;
|
|
628
|
+
}, {}, {}>;
|
|
629
|
+
contestId: drizzle_orm_pg_core.PgColumn<{
|
|
630
|
+
name: "contest_id";
|
|
631
|
+
tableName: "miku_contest_submissions";
|
|
632
|
+
dataType: "string";
|
|
633
|
+
columnType: "PgText";
|
|
634
|
+
data: string;
|
|
635
|
+
driverParam: string;
|
|
636
|
+
notNull: true;
|
|
637
|
+
hasDefault: false;
|
|
638
|
+
isPrimaryKey: false;
|
|
639
|
+
isAutoincrement: false;
|
|
640
|
+
hasRuntimeDefault: false;
|
|
641
|
+
enumValues: [string, ...string[]];
|
|
642
|
+
baseColumn: never;
|
|
643
|
+
identity: undefined;
|
|
644
|
+
generated: undefined;
|
|
645
|
+
}, {}, {}>;
|
|
646
|
+
serialNo: drizzle_orm_pg_core.PgColumn<{
|
|
647
|
+
name: "serial_no";
|
|
648
|
+
tableName: "miku_contest_submissions";
|
|
649
|
+
dataType: "string";
|
|
650
|
+
columnType: "PgText";
|
|
651
|
+
data: string;
|
|
652
|
+
driverParam: string;
|
|
653
|
+
notNull: true;
|
|
654
|
+
hasDefault: false;
|
|
655
|
+
isPrimaryKey: false;
|
|
656
|
+
isAutoincrement: false;
|
|
657
|
+
hasRuntimeDefault: false;
|
|
658
|
+
enumValues: [string, ...string[]];
|
|
659
|
+
baseColumn: never;
|
|
660
|
+
identity: undefined;
|
|
661
|
+
generated: undefined;
|
|
662
|
+
}, {}, {}>;
|
|
663
|
+
authorId: drizzle_orm_pg_core.PgColumn<{
|
|
664
|
+
name: "author_id";
|
|
665
|
+
tableName: "miku_contest_submissions";
|
|
666
|
+
dataType: "string";
|
|
667
|
+
columnType: "PgText";
|
|
668
|
+
data: string;
|
|
669
|
+
driverParam: string;
|
|
670
|
+
notNull: true;
|
|
671
|
+
hasDefault: false;
|
|
672
|
+
isPrimaryKey: false;
|
|
673
|
+
isAutoincrement: false;
|
|
674
|
+
hasRuntimeDefault: false;
|
|
675
|
+
enumValues: [string, ...string[]];
|
|
676
|
+
baseColumn: never;
|
|
677
|
+
identity: undefined;
|
|
678
|
+
generated: undefined;
|
|
679
|
+
}, {}, {}>;
|
|
680
|
+
authorNickname: drizzle_orm_pg_core.PgColumn<{
|
|
681
|
+
name: "author_nickname";
|
|
682
|
+
tableName: "miku_contest_submissions";
|
|
683
|
+
dataType: "string";
|
|
684
|
+
columnType: "PgText";
|
|
685
|
+
data: string;
|
|
686
|
+
driverParam: string;
|
|
687
|
+
notNull: true;
|
|
688
|
+
hasDefault: false;
|
|
689
|
+
isPrimaryKey: false;
|
|
690
|
+
isAutoincrement: false;
|
|
691
|
+
hasRuntimeDefault: false;
|
|
692
|
+
enumValues: [string, ...string[]];
|
|
693
|
+
baseColumn: never;
|
|
694
|
+
identity: undefined;
|
|
695
|
+
generated: undefined;
|
|
696
|
+
}, {}, {}>;
|
|
697
|
+
title: drizzle_orm_pg_core.PgColumn<{
|
|
698
|
+
name: "title";
|
|
699
|
+
tableName: "miku_contest_submissions";
|
|
700
|
+
dataType: "string";
|
|
701
|
+
columnType: "PgText";
|
|
702
|
+
data: string;
|
|
703
|
+
driverParam: string;
|
|
704
|
+
notNull: true;
|
|
705
|
+
hasDefault: false;
|
|
706
|
+
isPrimaryKey: false;
|
|
707
|
+
isAutoincrement: false;
|
|
708
|
+
hasRuntimeDefault: false;
|
|
709
|
+
enumValues: [string, ...string[]];
|
|
710
|
+
baseColumn: never;
|
|
711
|
+
identity: undefined;
|
|
712
|
+
generated: undefined;
|
|
713
|
+
}, {}, {}>;
|
|
714
|
+
type: drizzle_orm_pg_core.PgColumn<{
|
|
715
|
+
name: "type";
|
|
716
|
+
tableName: "miku_contest_submissions";
|
|
717
|
+
dataType: "string";
|
|
718
|
+
columnType: "PgText";
|
|
719
|
+
data: string;
|
|
720
|
+
driverParam: string;
|
|
721
|
+
notNull: true;
|
|
722
|
+
hasDefault: false;
|
|
723
|
+
isPrimaryKey: false;
|
|
724
|
+
isAutoincrement: false;
|
|
725
|
+
hasRuntimeDefault: false;
|
|
726
|
+
enumValues: [string, ...string[]];
|
|
727
|
+
baseColumn: never;
|
|
728
|
+
identity: undefined;
|
|
729
|
+
generated: undefined;
|
|
730
|
+
}, {}, {}>;
|
|
731
|
+
description: drizzle_orm_pg_core.PgColumn<{
|
|
732
|
+
name: "description";
|
|
733
|
+
tableName: "miku_contest_submissions";
|
|
734
|
+
dataType: "string";
|
|
735
|
+
columnType: "PgText";
|
|
736
|
+
data: string;
|
|
737
|
+
driverParam: string;
|
|
738
|
+
notNull: true;
|
|
739
|
+
hasDefault: false;
|
|
740
|
+
isPrimaryKey: false;
|
|
741
|
+
isAutoincrement: false;
|
|
742
|
+
hasRuntimeDefault: false;
|
|
743
|
+
enumValues: [string, ...string[]];
|
|
744
|
+
baseColumn: never;
|
|
745
|
+
identity: undefined;
|
|
746
|
+
generated: undefined;
|
|
747
|
+
}, {}, {}>;
|
|
748
|
+
tags: drizzle_orm_pg_core.PgColumn<{
|
|
749
|
+
name: "tags";
|
|
750
|
+
tableName: "miku_contest_submissions";
|
|
751
|
+
dataType: "json";
|
|
752
|
+
columnType: "PgJsonb";
|
|
753
|
+
data: string[];
|
|
754
|
+
driverParam: unknown;
|
|
755
|
+
notNull: true;
|
|
756
|
+
hasDefault: false;
|
|
757
|
+
isPrimaryKey: false;
|
|
758
|
+
isAutoincrement: false;
|
|
759
|
+
hasRuntimeDefault: false;
|
|
760
|
+
enumValues: undefined;
|
|
761
|
+
baseColumn: never;
|
|
762
|
+
identity: undefined;
|
|
763
|
+
generated: undefined;
|
|
764
|
+
}, {}, {
|
|
765
|
+
$type: string[];
|
|
766
|
+
}>;
|
|
767
|
+
content: drizzle_orm_pg_core.PgColumn<{
|
|
768
|
+
name: "content";
|
|
769
|
+
tableName: "miku_contest_submissions";
|
|
770
|
+
dataType: "json";
|
|
771
|
+
columnType: "PgJsonb";
|
|
772
|
+
data: MikuSubmissionContent;
|
|
773
|
+
driverParam: unknown;
|
|
774
|
+
notNull: true;
|
|
775
|
+
hasDefault: false;
|
|
776
|
+
isPrimaryKey: false;
|
|
777
|
+
isAutoincrement: false;
|
|
778
|
+
hasRuntimeDefault: false;
|
|
779
|
+
enumValues: undefined;
|
|
780
|
+
baseColumn: never;
|
|
781
|
+
identity: undefined;
|
|
782
|
+
generated: undefined;
|
|
783
|
+
}, {}, {
|
|
784
|
+
$type: MikuSubmissionContent;
|
|
785
|
+
}>;
|
|
786
|
+
voteCount: drizzle_orm_pg_core.PgColumn<{
|
|
787
|
+
name: "vote_count";
|
|
788
|
+
tableName: "miku_contest_submissions";
|
|
789
|
+
dataType: "number";
|
|
790
|
+
columnType: "PgInteger";
|
|
791
|
+
data: number;
|
|
792
|
+
driverParam: string | number;
|
|
793
|
+
notNull: true;
|
|
794
|
+
hasDefault: true;
|
|
795
|
+
isPrimaryKey: false;
|
|
796
|
+
isAutoincrement: false;
|
|
797
|
+
hasRuntimeDefault: false;
|
|
798
|
+
enumValues: undefined;
|
|
799
|
+
baseColumn: never;
|
|
800
|
+
identity: undefined;
|
|
801
|
+
generated: undefined;
|
|
802
|
+
}, {}, {}>;
|
|
803
|
+
status: drizzle_orm_pg_core.PgColumn<{
|
|
804
|
+
name: "status";
|
|
805
|
+
tableName: "miku_contest_submissions";
|
|
806
|
+
dataType: "string";
|
|
807
|
+
columnType: "PgText";
|
|
808
|
+
data: string;
|
|
809
|
+
driverParam: string;
|
|
810
|
+
notNull: true;
|
|
811
|
+
hasDefault: false;
|
|
812
|
+
isPrimaryKey: false;
|
|
813
|
+
isAutoincrement: false;
|
|
814
|
+
hasRuntimeDefault: false;
|
|
815
|
+
enumValues: [string, ...string[]];
|
|
816
|
+
baseColumn: never;
|
|
817
|
+
identity: undefined;
|
|
818
|
+
generated: undefined;
|
|
819
|
+
}, {}, {}>;
|
|
820
|
+
rejectReason: drizzle_orm_pg_core.PgColumn<{
|
|
821
|
+
name: "reject_reason";
|
|
822
|
+
tableName: "miku_contest_submissions";
|
|
823
|
+
dataType: "string";
|
|
824
|
+
columnType: "PgText";
|
|
825
|
+
data: string;
|
|
826
|
+
driverParam: string;
|
|
827
|
+
notNull: false;
|
|
828
|
+
hasDefault: false;
|
|
829
|
+
isPrimaryKey: false;
|
|
830
|
+
isAutoincrement: false;
|
|
831
|
+
hasRuntimeDefault: false;
|
|
832
|
+
enumValues: [string, ...string[]];
|
|
833
|
+
baseColumn: never;
|
|
834
|
+
identity: undefined;
|
|
835
|
+
generated: undefined;
|
|
836
|
+
}, {}, {}>;
|
|
837
|
+
createdAt: drizzle_orm_pg_core.PgColumn<{
|
|
838
|
+
name: "created_at";
|
|
839
|
+
tableName: "miku_contest_submissions";
|
|
840
|
+
dataType: "date";
|
|
841
|
+
columnType: "PgTimestamp";
|
|
842
|
+
data: Date;
|
|
843
|
+
driverParam: string;
|
|
844
|
+
notNull: true;
|
|
845
|
+
hasDefault: false;
|
|
846
|
+
isPrimaryKey: false;
|
|
847
|
+
isAutoincrement: false;
|
|
848
|
+
hasRuntimeDefault: false;
|
|
849
|
+
enumValues: undefined;
|
|
850
|
+
baseColumn: never;
|
|
851
|
+
identity: undefined;
|
|
852
|
+
generated: undefined;
|
|
853
|
+
}, {}, {}>;
|
|
854
|
+
reviewedAt: drizzle_orm_pg_core.PgColumn<{
|
|
855
|
+
name: "reviewed_at";
|
|
856
|
+
tableName: "miku_contest_submissions";
|
|
857
|
+
dataType: "date";
|
|
858
|
+
columnType: "PgTimestamp";
|
|
859
|
+
data: Date;
|
|
860
|
+
driverParam: string;
|
|
861
|
+
notNull: false;
|
|
862
|
+
hasDefault: false;
|
|
863
|
+
isPrimaryKey: false;
|
|
864
|
+
isAutoincrement: false;
|
|
865
|
+
hasRuntimeDefault: false;
|
|
866
|
+
enumValues: undefined;
|
|
867
|
+
baseColumn: never;
|
|
868
|
+
identity: undefined;
|
|
869
|
+
generated: undefined;
|
|
870
|
+
}, {}, {}>;
|
|
871
|
+
updatedAt: drizzle_orm_pg_core.PgColumn<{
|
|
872
|
+
name: "updated_at";
|
|
873
|
+
tableName: "miku_contest_submissions";
|
|
874
|
+
dataType: "date";
|
|
875
|
+
columnType: "PgTimestamp";
|
|
876
|
+
data: Date;
|
|
877
|
+
driverParam: string;
|
|
878
|
+
notNull: true;
|
|
879
|
+
hasDefault: false;
|
|
880
|
+
isPrimaryKey: false;
|
|
881
|
+
isAutoincrement: false;
|
|
882
|
+
hasRuntimeDefault: false;
|
|
883
|
+
enumValues: undefined;
|
|
884
|
+
baseColumn: never;
|
|
885
|
+
identity: undefined;
|
|
886
|
+
generated: undefined;
|
|
887
|
+
}, {}, {}>;
|
|
888
|
+
};
|
|
889
|
+
dialect: "pg";
|
|
890
|
+
}>;
|
|
891
|
+
declare const mikuContestVotes: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
892
|
+
name: "miku_contest_votes";
|
|
893
|
+
schema: undefined;
|
|
894
|
+
columns: {
|
|
895
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
896
|
+
name: "id";
|
|
897
|
+
tableName: "miku_contest_votes";
|
|
898
|
+
dataType: "string";
|
|
899
|
+
columnType: "PgText";
|
|
900
|
+
data: string;
|
|
901
|
+
driverParam: string;
|
|
902
|
+
notNull: true;
|
|
903
|
+
hasDefault: false;
|
|
904
|
+
isPrimaryKey: true;
|
|
905
|
+
isAutoincrement: false;
|
|
906
|
+
hasRuntimeDefault: false;
|
|
907
|
+
enumValues: [string, ...string[]];
|
|
908
|
+
baseColumn: never;
|
|
909
|
+
identity: undefined;
|
|
910
|
+
generated: undefined;
|
|
911
|
+
}, {}, {}>;
|
|
912
|
+
contestId: drizzle_orm_pg_core.PgColumn<{
|
|
913
|
+
name: "contest_id";
|
|
914
|
+
tableName: "miku_contest_votes";
|
|
915
|
+
dataType: "string";
|
|
916
|
+
columnType: "PgText";
|
|
917
|
+
data: string;
|
|
918
|
+
driverParam: string;
|
|
919
|
+
notNull: true;
|
|
920
|
+
hasDefault: false;
|
|
921
|
+
isPrimaryKey: false;
|
|
922
|
+
isAutoincrement: false;
|
|
923
|
+
hasRuntimeDefault: false;
|
|
924
|
+
enumValues: [string, ...string[]];
|
|
925
|
+
baseColumn: never;
|
|
926
|
+
identity: undefined;
|
|
927
|
+
generated: undefined;
|
|
928
|
+
}, {}, {}>;
|
|
929
|
+
submissionId: drizzle_orm_pg_core.PgColumn<{
|
|
930
|
+
name: "submission_id";
|
|
931
|
+
tableName: "miku_contest_votes";
|
|
932
|
+
dataType: "string";
|
|
933
|
+
columnType: "PgText";
|
|
934
|
+
data: string;
|
|
935
|
+
driverParam: string;
|
|
936
|
+
notNull: true;
|
|
937
|
+
hasDefault: false;
|
|
938
|
+
isPrimaryKey: false;
|
|
939
|
+
isAutoincrement: false;
|
|
940
|
+
hasRuntimeDefault: false;
|
|
941
|
+
enumValues: [string, ...string[]];
|
|
942
|
+
baseColumn: never;
|
|
943
|
+
identity: undefined;
|
|
944
|
+
generated: undefined;
|
|
945
|
+
}, {}, {}>;
|
|
946
|
+
voterId: drizzle_orm_pg_core.PgColumn<{
|
|
947
|
+
name: "voter_id";
|
|
948
|
+
tableName: "miku_contest_votes";
|
|
949
|
+
dataType: "string";
|
|
950
|
+
columnType: "PgText";
|
|
951
|
+
data: string;
|
|
952
|
+
driverParam: string;
|
|
953
|
+
notNull: true;
|
|
954
|
+
hasDefault: false;
|
|
955
|
+
isPrimaryKey: false;
|
|
956
|
+
isAutoincrement: false;
|
|
957
|
+
hasRuntimeDefault: false;
|
|
958
|
+
enumValues: [string, ...string[]];
|
|
959
|
+
baseColumn: never;
|
|
960
|
+
identity: undefined;
|
|
961
|
+
generated: undefined;
|
|
962
|
+
}, {}, {}>;
|
|
963
|
+
votedAt: drizzle_orm_pg_core.PgColumn<{
|
|
964
|
+
name: "voted_at";
|
|
965
|
+
tableName: "miku_contest_votes";
|
|
966
|
+
dataType: "string";
|
|
967
|
+
columnType: "PgText";
|
|
968
|
+
data: string;
|
|
969
|
+
driverParam: string;
|
|
970
|
+
notNull: true;
|
|
971
|
+
hasDefault: false;
|
|
972
|
+
isPrimaryKey: false;
|
|
973
|
+
isAutoincrement: false;
|
|
974
|
+
hasRuntimeDefault: false;
|
|
975
|
+
enumValues: [string, ...string[]];
|
|
976
|
+
baseColumn: never;
|
|
977
|
+
identity: undefined;
|
|
978
|
+
generated: undefined;
|
|
979
|
+
}, {}, {}>;
|
|
980
|
+
dayKey: drizzle_orm_pg_core.PgColumn<{
|
|
981
|
+
name: "day_key";
|
|
982
|
+
tableName: "miku_contest_votes";
|
|
983
|
+
dataType: "string";
|
|
984
|
+
columnType: "PgText";
|
|
985
|
+
data: string;
|
|
986
|
+
driverParam: string;
|
|
987
|
+
notNull: true;
|
|
988
|
+
hasDefault: false;
|
|
989
|
+
isPrimaryKey: false;
|
|
990
|
+
isAutoincrement: false;
|
|
991
|
+
hasRuntimeDefault: false;
|
|
992
|
+
enumValues: [string, ...string[]];
|
|
993
|
+
baseColumn: never;
|
|
994
|
+
identity: undefined;
|
|
995
|
+
generated: undefined;
|
|
996
|
+
}, {}, {}>;
|
|
997
|
+
deviceId: drizzle_orm_pg_core.PgColumn<{
|
|
998
|
+
name: "device_id";
|
|
999
|
+
tableName: "miku_contest_votes";
|
|
1000
|
+
dataType: "string";
|
|
1001
|
+
columnType: "PgText";
|
|
1002
|
+
data: string;
|
|
1003
|
+
driverParam: string;
|
|
1004
|
+
notNull: false;
|
|
1005
|
+
hasDefault: false;
|
|
1006
|
+
isPrimaryKey: false;
|
|
1007
|
+
isAutoincrement: false;
|
|
1008
|
+
hasRuntimeDefault: false;
|
|
1009
|
+
enumValues: [string, ...string[]];
|
|
1010
|
+
baseColumn: never;
|
|
1011
|
+
identity: undefined;
|
|
1012
|
+
generated: undefined;
|
|
1013
|
+
}, {}, {}>;
|
|
1014
|
+
ip: drizzle_orm_pg_core.PgColumn<{
|
|
1015
|
+
name: "ip";
|
|
1016
|
+
tableName: "miku_contest_votes";
|
|
1017
|
+
dataType: "string";
|
|
1018
|
+
columnType: "PgText";
|
|
1019
|
+
data: string;
|
|
1020
|
+
driverParam: string;
|
|
1021
|
+
notNull: false;
|
|
1022
|
+
hasDefault: false;
|
|
1023
|
+
isPrimaryKey: false;
|
|
1024
|
+
isAutoincrement: false;
|
|
1025
|
+
hasRuntimeDefault: false;
|
|
1026
|
+
enumValues: [string, ...string[]];
|
|
1027
|
+
baseColumn: never;
|
|
1028
|
+
identity: undefined;
|
|
1029
|
+
generated: undefined;
|
|
1030
|
+
}, {}, {}>;
|
|
1031
|
+
};
|
|
1032
|
+
dialect: "pg";
|
|
1033
|
+
}>;
|
|
1034
|
+
declare const mikuContestNotices: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
1035
|
+
name: "miku_contest_notices";
|
|
1036
|
+
schema: undefined;
|
|
1037
|
+
columns: {
|
|
1038
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
1039
|
+
name: "id";
|
|
1040
|
+
tableName: "miku_contest_notices";
|
|
1041
|
+
dataType: "string";
|
|
1042
|
+
columnType: "PgText";
|
|
1043
|
+
data: string;
|
|
1044
|
+
driverParam: string;
|
|
1045
|
+
notNull: true;
|
|
1046
|
+
hasDefault: false;
|
|
1047
|
+
isPrimaryKey: true;
|
|
1048
|
+
isAutoincrement: false;
|
|
1049
|
+
hasRuntimeDefault: false;
|
|
1050
|
+
enumValues: [string, ...string[]];
|
|
1051
|
+
baseColumn: never;
|
|
1052
|
+
identity: undefined;
|
|
1053
|
+
generated: undefined;
|
|
1054
|
+
}, {}, {}>;
|
|
1055
|
+
contestId: drizzle_orm_pg_core.PgColumn<{
|
|
1056
|
+
name: "contest_id";
|
|
1057
|
+
tableName: "miku_contest_notices";
|
|
1058
|
+
dataType: "string";
|
|
1059
|
+
columnType: "PgText";
|
|
1060
|
+
data: string;
|
|
1061
|
+
driverParam: string;
|
|
1062
|
+
notNull: true;
|
|
1063
|
+
hasDefault: false;
|
|
1064
|
+
isPrimaryKey: false;
|
|
1065
|
+
isAutoincrement: false;
|
|
1066
|
+
hasRuntimeDefault: false;
|
|
1067
|
+
enumValues: [string, ...string[]];
|
|
1068
|
+
baseColumn: never;
|
|
1069
|
+
identity: undefined;
|
|
1070
|
+
generated: undefined;
|
|
1071
|
+
}, {}, {}>;
|
|
1072
|
+
title: drizzle_orm_pg_core.PgColumn<{
|
|
1073
|
+
name: "title";
|
|
1074
|
+
tableName: "miku_contest_notices";
|
|
1075
|
+
dataType: "string";
|
|
1076
|
+
columnType: "PgText";
|
|
1077
|
+
data: string;
|
|
1078
|
+
driverParam: string;
|
|
1079
|
+
notNull: true;
|
|
1080
|
+
hasDefault: false;
|
|
1081
|
+
isPrimaryKey: false;
|
|
1082
|
+
isAutoincrement: false;
|
|
1083
|
+
hasRuntimeDefault: false;
|
|
1084
|
+
enumValues: [string, ...string[]];
|
|
1085
|
+
baseColumn: never;
|
|
1086
|
+
identity: undefined;
|
|
1087
|
+
generated: undefined;
|
|
1088
|
+
}, {}, {}>;
|
|
1089
|
+
content: drizzle_orm_pg_core.PgColumn<{
|
|
1090
|
+
name: "content";
|
|
1091
|
+
tableName: "miku_contest_notices";
|
|
1092
|
+
dataType: "string";
|
|
1093
|
+
columnType: "PgText";
|
|
1094
|
+
data: string;
|
|
1095
|
+
driverParam: string;
|
|
1096
|
+
notNull: true;
|
|
1097
|
+
hasDefault: false;
|
|
1098
|
+
isPrimaryKey: false;
|
|
1099
|
+
isAutoincrement: false;
|
|
1100
|
+
hasRuntimeDefault: false;
|
|
1101
|
+
enumValues: [string, ...string[]];
|
|
1102
|
+
baseColumn: never;
|
|
1103
|
+
identity: undefined;
|
|
1104
|
+
generated: undefined;
|
|
1105
|
+
}, {}, {}>;
|
|
1106
|
+
type: drizzle_orm_pg_core.PgColumn<{
|
|
1107
|
+
name: "type";
|
|
1108
|
+
tableName: "miku_contest_notices";
|
|
1109
|
+
dataType: "string";
|
|
1110
|
+
columnType: "PgText";
|
|
1111
|
+
data: string;
|
|
1112
|
+
driverParam: string;
|
|
1113
|
+
notNull: true;
|
|
1114
|
+
hasDefault: false;
|
|
1115
|
+
isPrimaryKey: false;
|
|
1116
|
+
isAutoincrement: false;
|
|
1117
|
+
hasRuntimeDefault: false;
|
|
1118
|
+
enumValues: [string, ...string[]];
|
|
1119
|
+
baseColumn: never;
|
|
1120
|
+
identity: undefined;
|
|
1121
|
+
generated: undefined;
|
|
1122
|
+
}, {}, {}>;
|
|
1123
|
+
createdBy: drizzle_orm_pg_core.PgColumn<{
|
|
1124
|
+
name: "created_by";
|
|
1125
|
+
tableName: "miku_contest_notices";
|
|
1126
|
+
dataType: "string";
|
|
1127
|
+
columnType: "PgText";
|
|
1128
|
+
data: string;
|
|
1129
|
+
driverParam: string;
|
|
1130
|
+
notNull: true;
|
|
1131
|
+
hasDefault: false;
|
|
1132
|
+
isPrimaryKey: false;
|
|
1133
|
+
isAutoincrement: false;
|
|
1134
|
+
hasRuntimeDefault: false;
|
|
1135
|
+
enumValues: [string, ...string[]];
|
|
1136
|
+
baseColumn: never;
|
|
1137
|
+
identity: undefined;
|
|
1138
|
+
generated: undefined;
|
|
1139
|
+
}, {}, {}>;
|
|
1140
|
+
createdAt: drizzle_orm_pg_core.PgColumn<{
|
|
1141
|
+
name: "created_at";
|
|
1142
|
+
tableName: "miku_contest_notices";
|
|
1143
|
+
dataType: "string";
|
|
1144
|
+
columnType: "PgText";
|
|
1145
|
+
data: string;
|
|
1146
|
+
driverParam: string;
|
|
1147
|
+
notNull: true;
|
|
1148
|
+
hasDefault: false;
|
|
1149
|
+
isPrimaryKey: false;
|
|
1150
|
+
isAutoincrement: false;
|
|
1151
|
+
hasRuntimeDefault: false;
|
|
1152
|
+
enumValues: [string, ...string[]];
|
|
1153
|
+
baseColumn: never;
|
|
1154
|
+
identity: undefined;
|
|
1155
|
+
generated: undefined;
|
|
1156
|
+
}, {}, {}>;
|
|
1157
|
+
updatedAt: drizzle_orm_pg_core.PgColumn<{
|
|
1158
|
+
name: "updated_at";
|
|
1159
|
+
tableName: "miku_contest_notices";
|
|
1160
|
+
dataType: "string";
|
|
1161
|
+
columnType: "PgText";
|
|
1162
|
+
data: string;
|
|
1163
|
+
driverParam: string;
|
|
1164
|
+
notNull: true;
|
|
1165
|
+
hasDefault: false;
|
|
1166
|
+
isPrimaryKey: false;
|
|
1167
|
+
isAutoincrement: false;
|
|
1168
|
+
hasRuntimeDefault: false;
|
|
1169
|
+
enumValues: [string, ...string[]];
|
|
1170
|
+
baseColumn: never;
|
|
1171
|
+
identity: undefined;
|
|
1172
|
+
generated: undefined;
|
|
1173
|
+
}, {}, {}>;
|
|
1174
|
+
};
|
|
1175
|
+
dialect: "pg";
|
|
1176
|
+
}>;
|
|
1177
|
+
declare const mikuContestVoterRestrictions: drizzle_orm_pg_core.PgTableWithColumns<{
|
|
1178
|
+
name: "miku_contest_voter_restrictions";
|
|
1179
|
+
schema: undefined;
|
|
1180
|
+
columns: {
|
|
1181
|
+
id: drizzle_orm_pg_core.PgColumn<{
|
|
1182
|
+
name: "id";
|
|
1183
|
+
tableName: "miku_contest_voter_restrictions";
|
|
1184
|
+
dataType: "string";
|
|
1185
|
+
columnType: "PgText";
|
|
1186
|
+
data: string;
|
|
1187
|
+
driverParam: string;
|
|
1188
|
+
notNull: true;
|
|
1189
|
+
hasDefault: false;
|
|
1190
|
+
isPrimaryKey: true;
|
|
1191
|
+
isAutoincrement: false;
|
|
1192
|
+
hasRuntimeDefault: false;
|
|
1193
|
+
enumValues: [string, ...string[]];
|
|
1194
|
+
baseColumn: never;
|
|
1195
|
+
identity: undefined;
|
|
1196
|
+
generated: undefined;
|
|
1197
|
+
}, {}, {}>;
|
|
1198
|
+
contestId: drizzle_orm_pg_core.PgColumn<{
|
|
1199
|
+
name: "contest_id";
|
|
1200
|
+
tableName: "miku_contest_voter_restrictions";
|
|
1201
|
+
dataType: "string";
|
|
1202
|
+
columnType: "PgText";
|
|
1203
|
+
data: string;
|
|
1204
|
+
driverParam: string;
|
|
1205
|
+
notNull: true;
|
|
1206
|
+
hasDefault: false;
|
|
1207
|
+
isPrimaryKey: false;
|
|
1208
|
+
isAutoincrement: false;
|
|
1209
|
+
hasRuntimeDefault: false;
|
|
1210
|
+
enumValues: [string, ...string[]];
|
|
1211
|
+
baseColumn: never;
|
|
1212
|
+
identity: undefined;
|
|
1213
|
+
generated: undefined;
|
|
1214
|
+
}, {}, {}>;
|
|
1215
|
+
data: drizzle_orm_pg_core.PgColumn<{
|
|
1216
|
+
name: "data";
|
|
1217
|
+
tableName: "miku_contest_voter_restrictions";
|
|
1218
|
+
dataType: "json";
|
|
1219
|
+
columnType: "PgJsonb";
|
|
1220
|
+
data: MikuVoterRestriction;
|
|
1221
|
+
driverParam: unknown;
|
|
1222
|
+
notNull: true;
|
|
1223
|
+
hasDefault: false;
|
|
1224
|
+
isPrimaryKey: false;
|
|
1225
|
+
isAutoincrement: false;
|
|
1226
|
+
hasRuntimeDefault: false;
|
|
1227
|
+
enumValues: undefined;
|
|
1228
|
+
baseColumn: never;
|
|
1229
|
+
identity: undefined;
|
|
1230
|
+
generated: undefined;
|
|
1231
|
+
}, {}, {
|
|
1232
|
+
$type: MikuVoterRestriction;
|
|
1233
|
+
}>;
|
|
1234
|
+
};
|
|
1235
|
+
dialect: "pg";
|
|
1236
|
+
}>;
|
|
1237
|
+
type MikuContestVoteRow = typeof mikuContestVotes.$inferSelect & MikuVoteRecord;
|
|
1238
|
+
type MikuContestNoticeRow = typeof mikuContestNotices.$inferSelect & MikuAnnouncement;
|
|
1239
|
+
|
|
1240
|
+
declare class MikuContestStateDbService {
|
|
1241
|
+
private readonly db;
|
|
1242
|
+
constructor(db: DrizzleLikeDb);
|
|
1243
|
+
loadState(contestId: string): Promise<MikuContestPersistedState | null>;
|
|
1244
|
+
saveState(state: MikuContestPersistedState): Promise<void>;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
declare const createMikuContestDrizzlePersistenceAdapter: (db: DrizzleLikeDb) => MikuContestPersistenceAdapter;
|
|
1248
|
+
|
|
1249
|
+
interface MikuContestPersistentServiceOptions extends MikuContestServiceOptions {
|
|
1250
|
+
persistenceAdapter: MikuContestPersistenceAdapter;
|
|
1251
|
+
}
|
|
1252
|
+
declare class MikuContestPersistentService {
|
|
1253
|
+
private readonly options;
|
|
1254
|
+
private readonly engine;
|
|
1255
|
+
private hydrated;
|
|
1256
|
+
private hydrationPromise;
|
|
1257
|
+
constructor(options: MikuContestPersistentServiceOptions);
|
|
1258
|
+
private ensureHydrated;
|
|
1259
|
+
private persist;
|
|
1260
|
+
getContestConfig(): Promise<MikuContestConfig>;
|
|
1261
|
+
updateContestConfig(patch: Partial<MikuContestConfig>): Promise<MikuContestConfig>;
|
|
1262
|
+
createSubmission(input: CreateMikuSubmissionInput, mode?: 'web' | 'miniapp'): Promise<MikuSubmission>;
|
|
1263
|
+
listSubmissions(filter?: MikuSubmissionFilter): Promise<MikuSubmission[]>;
|
|
1264
|
+
getSubmission(submissionId: string): Promise<MikuSubmission | null>;
|
|
1265
|
+
reviewSubmission(input: ReviewMikuSubmissionInput): Promise<MikuSubmission>;
|
|
1266
|
+
vote(input: VoteMikuSubmissionInput): Promise<MikuSubmission>;
|
|
1267
|
+
getVoterRestriction(voterId: string): Promise<MikuVoterRestriction | null>;
|
|
1268
|
+
setVoterRestriction(input: SetMikuVoterRestrictionInput): Promise<MikuVoterRestriction>;
|
|
1269
|
+
resetVotes(input: ResetMikuVotesInput): Promise<{
|
|
1270
|
+
removedVotes: number;
|
|
1271
|
+
affectedSubmissions: string[];
|
|
1272
|
+
}>;
|
|
1273
|
+
listAnnouncements(contestId?: string): Promise<MikuAnnouncement[]>;
|
|
1274
|
+
publishAnnouncement(input: CreateMikuAnnouncementInput): Promise<MikuAnnouncement>;
|
|
1275
|
+
getLeaderboard(limit?: number): Promise<MikuLeaderboardItem[]>;
|
|
1276
|
+
getSnapshot(): Promise<MikuContestStateSnapshot>;
|
|
1277
|
+
getSubmissionExportRows(filter?: MikuSubmissionFilter): Promise<MikuSubmissionExportRow[]>;
|
|
1278
|
+
exportSubmissionExcel(filter?: MikuSubmissionFilter): Promise<Uint8Array>;
|
|
1279
|
+
}
|
|
1280
|
+
declare const createMikuContestPersistentService: (options: MikuContestPersistentServiceOptions) => MikuContestPersistentService;
|
|
1281
|
+
|
|
1282
|
+
declare class MikuContestDbService {
|
|
1283
|
+
private _db;
|
|
1284
|
+
setDb(db: DrizzleLikeDb): void;
|
|
1285
|
+
isConfigured(): boolean;
|
|
1286
|
+
get db(): DrizzleLikeDb;
|
|
1287
|
+
}
|
|
1288
|
+
declare const mikuContestDbService: MikuContestDbService;
|
|
1289
|
+
|
|
1290
|
+
declare const useMikuContest: (options?: MikuContestServiceOptions) => {
|
|
1291
|
+
service: MikuContestService;
|
|
1292
|
+
snapshot: MikuContestStateSnapshot;
|
|
1293
|
+
refresh: () => void;
|
|
1294
|
+
};
|
|
1295
|
+
|
|
1296
|
+
declare const defaultMikuVotingRules: MikuVotingRules;
|
|
1297
|
+
declare const createDefaultMikuContestConfig: (overrides?: Partial<MikuContestConfig>) => MikuContestConfig;
|
|
1298
|
+
|
|
1299
|
+
declare const validateMikuSubmissionInput: (input: CreateMikuSubmissionInput, mode?: "web" | "miniapp") => string[];
|
|
1300
|
+
|
|
1301
|
+
declare const toVoteDayKey: (date?: Date) => string;
|
|
1302
|
+
interface VoteCheckContext {
|
|
1303
|
+
existingVotes: MikuVoteRecord[];
|
|
1304
|
+
submissionId: string;
|
|
1305
|
+
voterId: string;
|
|
1306
|
+
dayKey: string;
|
|
1307
|
+
rules: MikuVotingRules;
|
|
1308
|
+
}
|
|
1309
|
+
declare const checkVoteEligibility: (context: VoteCheckContext) => {
|
|
1310
|
+
ok: boolean;
|
|
1311
|
+
reason?: string;
|
|
1312
|
+
};
|
|
1313
|
+
declare const sortByVotesDesc: <T extends {
|
|
1314
|
+
voteCount: number;
|
|
1315
|
+
createdAt?: string;
|
|
1316
|
+
}>(items: T[]) => T[];
|
|
1317
|
+
|
|
1318
|
+
interface MikuContestWebClientOptions {
|
|
1319
|
+
baseUrl?: string;
|
|
1320
|
+
basePath?: string;
|
|
1321
|
+
headers?: Record<string, string>;
|
|
1322
|
+
}
|
|
1323
|
+
declare const createMikuContestWebClient: (options?: MikuContestWebClientOptions) => MikuContestApiClient;
|
|
1324
|
+
|
|
1325
|
+
type index$5_MikuContestWebClientOptions = MikuContestWebClientOptions;
|
|
1326
|
+
declare const index$5_createMikuContestWebClient: typeof createMikuContestWebClient;
|
|
1327
|
+
declare namespace index$5 {
|
|
1328
|
+
export { type index$5_MikuContestWebClientOptions as MikuContestWebClientOptions, index$5_createMikuContestWebClient as createMikuContestWebClient };
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
interface MikuContestMiniappClientOptions {
|
|
1332
|
+
basePath?: string;
|
|
1333
|
+
requester: Requester;
|
|
1334
|
+
}
|
|
1335
|
+
declare const createMikuContestMiniappClient: (options: MikuContestMiniappClientOptions) => MikuContestApiClient;
|
|
1336
|
+
|
|
1337
|
+
type index$4_MikuContestMiniappClientOptions = MikuContestMiniappClientOptions;
|
|
1338
|
+
declare const index$4_createMikuContestMiniappClient: typeof createMikuContestMiniappClient;
|
|
1339
|
+
declare namespace index$4 {
|
|
1340
|
+
export { type index$4_MikuContestMiniappClientOptions as MikuContestMiniappClientOptions, index$4_createMikuContestMiniappClient as createMikuContestMiniappClient };
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
1344
|
+
interface MikuContestServiceLike {
|
|
1345
|
+
getSnapshot(): MaybePromise<MikuContestStateSnapshot>;
|
|
1346
|
+
createSubmission(input: CreateMikuSubmissionInput, mode?: 'web' | 'miniapp'): MaybePromise<MikuSubmission>;
|
|
1347
|
+
vote(input: VoteMikuSubmissionInput): MaybePromise<MikuSubmission>;
|
|
1348
|
+
reviewSubmission(input: ReviewMikuSubmissionInput): MaybePromise<MikuSubmission>;
|
|
1349
|
+
listSubmissions(filter?: MikuSubmissionFilter): MaybePromise<MikuSubmission[]>;
|
|
1350
|
+
setVoterRestriction(input: SetMikuVoterRestrictionInput): MaybePromise<MikuVoterRestriction>;
|
|
1351
|
+
resetVotes(input: ResetMikuVotesInput): MaybePromise<{
|
|
1352
|
+
removedVotes: number;
|
|
1353
|
+
affectedSubmissions: string[];
|
|
1354
|
+
}>;
|
|
1355
|
+
exportSubmissionExcel(filter?: MikuSubmissionFilter): MaybePromise<Uint8Array>;
|
|
1356
|
+
updateContestConfig(patch: Partial<MikuContestConfig>): MaybePromise<MikuContestConfig>;
|
|
1357
|
+
}
|
|
1358
|
+
interface MikuContestRouteConfig {
|
|
1359
|
+
service?: MikuContestServiceLike;
|
|
1360
|
+
persistenceAdapter?: MikuContestPersistenceAdapter;
|
|
1361
|
+
db?: unknown;
|
|
1362
|
+
}
|
|
1363
|
+
declare const createGetContestSnapshotHandler: (config?: MikuContestRouteConfig) => (_request: NextRequest) => Promise<NextResponse<{
|
|
1364
|
+
success: boolean;
|
|
1365
|
+
data: MikuContestStateSnapshot;
|
|
1366
|
+
}>>;
|
|
1367
|
+
declare const createUpdateContestConfigHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1368
|
+
success: boolean;
|
|
1369
|
+
data: MikuContestConfig;
|
|
1370
|
+
}> | NextResponse<{
|
|
1371
|
+
success: boolean;
|
|
1372
|
+
error: string;
|
|
1373
|
+
}>>;
|
|
1374
|
+
declare const createCreateSubmissionHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1375
|
+
success: boolean;
|
|
1376
|
+
error: string;
|
|
1377
|
+
}> | NextResponse<{
|
|
1378
|
+
success: boolean;
|
|
1379
|
+
data: MikuSubmission;
|
|
1380
|
+
}>>;
|
|
1381
|
+
declare const createVoteHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1382
|
+
success: boolean;
|
|
1383
|
+
data: MikuSubmission;
|
|
1384
|
+
}> | NextResponse<{
|
|
1385
|
+
success: boolean;
|
|
1386
|
+
error: string;
|
|
1387
|
+
}>>;
|
|
1388
|
+
declare const createReviewSubmissionHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1389
|
+
success: boolean;
|
|
1390
|
+
data: MikuSubmission;
|
|
1391
|
+
}> | NextResponse<{
|
|
1392
|
+
success: boolean;
|
|
1393
|
+
error: string;
|
|
1394
|
+
}>>;
|
|
1395
|
+
declare const createListSubmissionsHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1396
|
+
success: boolean;
|
|
1397
|
+
data: MikuSubmission[];
|
|
1398
|
+
}>>;
|
|
1399
|
+
declare const createSetVoterRestrictionHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1400
|
+
success: boolean;
|
|
1401
|
+
data: MikuVoterRestriction;
|
|
1402
|
+
}> | NextResponse<{
|
|
1403
|
+
success: boolean;
|
|
1404
|
+
error: string;
|
|
1405
|
+
}>>;
|
|
1406
|
+
declare const createResetVotesHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<{
|
|
1407
|
+
success: boolean;
|
|
1408
|
+
data: {
|
|
1409
|
+
removedVotes: number;
|
|
1410
|
+
affectedSubmissions: string[];
|
|
1411
|
+
};
|
|
1412
|
+
}> | NextResponse<{
|
|
1413
|
+
success: boolean;
|
|
1414
|
+
error: string;
|
|
1415
|
+
}>>;
|
|
1416
|
+
declare const createExportSubmissionsHandler: (config?: MikuContestRouteConfig) => (request: NextRequest) => Promise<NextResponse<unknown>>;
|
|
1417
|
+
|
|
1418
|
+
interface MikuContestMiniappHomeProps {
|
|
1419
|
+
snapshot: MikuContestStateSnapshot;
|
|
1420
|
+
}
|
|
1421
|
+
declare const MikuContestMiniappHome: React__default.FC<MikuContestMiniappHomeProps>;
|
|
1422
|
+
|
|
1423
|
+
declare const MikuContestMiniappPage: React__default.FC;
|
|
1424
|
+
|
|
1425
|
+
declare const index$3_MikuContestMiniappHome: typeof MikuContestMiniappHome;
|
|
1426
|
+
declare const index$3_MikuContestMiniappPage: typeof MikuContestMiniappPage;
|
|
1427
|
+
declare namespace index$3 {
|
|
1428
|
+
export { index$3_MikuContestMiniappHome as MikuContestMiniappHome, index$3_MikuContestMiniappPage as MikuContestMiniappPage };
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
declare const index$2_CreateMikuAnnouncementInput: typeof CreateMikuAnnouncementInput;
|
|
1432
|
+
declare const index$2_CreateMikuSubmissionInput: typeof CreateMikuSubmissionInput;
|
|
1433
|
+
type index$2_DrizzleLikeDb = DrizzleLikeDb;
|
|
1434
|
+
declare const index$2_HttpMethod: typeof HttpMethod;
|
|
1435
|
+
declare const index$2_MikuAnnouncement: typeof MikuAnnouncement;
|
|
1436
|
+
declare const index$2_MikuContestApiClient: typeof MikuContestApiClient;
|
|
1437
|
+
declare const index$2_MikuContestConfig: typeof MikuContestConfig;
|
|
1438
|
+
type index$2_MikuContestNoticeRow = MikuContestNoticeRow;
|
|
1439
|
+
declare const index$2_MikuContestPersistedState: typeof MikuContestPersistedState;
|
|
1440
|
+
type index$2_MikuContestPersistenceAdapter = MikuContestPersistenceAdapter;
|
|
1441
|
+
type index$2_MikuContestPersistentService = MikuContestPersistentService;
|
|
1442
|
+
declare const index$2_MikuContestPersistentService: typeof MikuContestPersistentService;
|
|
1443
|
+
type index$2_MikuContestPersistentServiceOptions = MikuContestPersistentServiceOptions;
|
|
1444
|
+
declare const index$2_MikuContestRole: typeof MikuContestRole;
|
|
1445
|
+
type index$2_MikuContestRouteConfig = MikuContestRouteConfig;
|
|
1446
|
+
type index$2_MikuContestService = MikuContestService;
|
|
1447
|
+
declare const index$2_MikuContestService: typeof MikuContestService;
|
|
1448
|
+
type index$2_MikuContestServiceLike = MikuContestServiceLike;
|
|
1449
|
+
type index$2_MikuContestServiceOptions = MikuContestServiceOptions;
|
|
1450
|
+
type index$2_MikuContestStateDbService = MikuContestStateDbService;
|
|
1451
|
+
declare const index$2_MikuContestStateDbService: typeof MikuContestStateDbService;
|
|
1452
|
+
declare const index$2_MikuContestStateSnapshot: typeof MikuContestStateSnapshot;
|
|
1453
|
+
declare const index$2_MikuContestTimeline: typeof MikuContestTimeline;
|
|
1454
|
+
type index$2_MikuContestVoteRow = MikuContestVoteRow;
|
|
1455
|
+
declare const index$2_MikuFeatureToggles: typeof MikuFeatureToggles;
|
|
1456
|
+
declare const index$2_MikuLeaderboardItem: typeof MikuLeaderboardItem;
|
|
1457
|
+
declare const index$2_MikuNoticeType: typeof MikuNoticeType;
|
|
1458
|
+
declare const index$2_MikuSubmission: typeof MikuSubmission;
|
|
1459
|
+
declare const index$2_MikuSubmissionContent: typeof MikuSubmissionContent;
|
|
1460
|
+
declare const index$2_MikuSubmissionExportRow: typeof MikuSubmissionExportRow;
|
|
1461
|
+
declare const index$2_MikuSubmissionFilter: typeof MikuSubmissionFilter;
|
|
1462
|
+
declare const index$2_MikuSubmissionStatus: typeof MikuSubmissionStatus;
|
|
1463
|
+
declare const index$2_MikuVoteRecord: typeof MikuVoteRecord;
|
|
1464
|
+
declare const index$2_MikuVoterRestriction: typeof MikuVoterRestriction;
|
|
1465
|
+
declare const index$2_MikuVotingRules: typeof MikuVotingRules;
|
|
1466
|
+
declare const index$2_MikuWorkType: typeof MikuWorkType;
|
|
1467
|
+
declare const index$2_Requester: typeof Requester;
|
|
1468
|
+
declare const index$2_ResetMikuVotesInput: typeof ResetMikuVotesInput;
|
|
1469
|
+
declare const index$2_ReviewMikuSubmissionInput: typeof ReviewMikuSubmissionInput;
|
|
1470
|
+
declare const index$2_SetMikuVoterRestrictionInput: typeof SetMikuVoterRestrictionInput;
|
|
1471
|
+
type index$2_VoteCheckContext = VoteCheckContext;
|
|
1472
|
+
declare const index$2_VoteMikuSubmissionInput: typeof VoteMikuSubmissionInput;
|
|
1473
|
+
declare const index$2_checkVoteEligibility: typeof checkVoteEligibility;
|
|
1474
|
+
declare const index$2_createCreateSubmissionHandler: typeof createCreateSubmissionHandler;
|
|
1475
|
+
declare const index$2_createDefaultMikuContestConfig: typeof createDefaultMikuContestConfig;
|
|
1476
|
+
declare const index$2_createExportSubmissionsHandler: typeof createExportSubmissionsHandler;
|
|
1477
|
+
declare const index$2_createGetContestSnapshotHandler: typeof createGetContestSnapshotHandler;
|
|
1478
|
+
declare const index$2_createListSubmissionsHandler: typeof createListSubmissionsHandler;
|
|
1479
|
+
declare const index$2_createMikuContestApiClient: typeof createMikuContestApiClient;
|
|
1480
|
+
declare const index$2_createMikuContestDrizzlePersistenceAdapter: typeof createMikuContestDrizzlePersistenceAdapter;
|
|
1481
|
+
declare const index$2_createMikuContestPersistentService: typeof createMikuContestPersistentService;
|
|
1482
|
+
declare const index$2_createMikuContestService: typeof createMikuContestService;
|
|
1483
|
+
declare const index$2_createResetVotesHandler: typeof createResetVotesHandler;
|
|
1484
|
+
declare const index$2_createReviewSubmissionHandler: typeof createReviewSubmissionHandler;
|
|
1485
|
+
declare const index$2_createSetVoterRestrictionHandler: typeof createSetVoterRestrictionHandler;
|
|
1486
|
+
declare const index$2_createUpdateContestConfigHandler: typeof createUpdateContestConfigHandler;
|
|
1487
|
+
declare const index$2_createVoteHandler: typeof createVoteHandler;
|
|
1488
|
+
declare const index$2_defaultMikuVotingRules: typeof defaultMikuVotingRules;
|
|
1489
|
+
declare const index$2_mikuContestConfigs: typeof mikuContestConfigs;
|
|
1490
|
+
declare const index$2_mikuContestDbService: typeof mikuContestDbService;
|
|
1491
|
+
declare const index$2_mikuContestNotices: typeof mikuContestNotices;
|
|
1492
|
+
declare const index$2_mikuContestSubmissions: typeof mikuContestSubmissions;
|
|
1493
|
+
declare const index$2_mikuContestVoterRestrictions: typeof mikuContestVoterRestrictions;
|
|
1494
|
+
declare const index$2_mikuContestVotes: typeof mikuContestVotes;
|
|
1495
|
+
declare const index$2_sortByVotesDesc: typeof sortByVotesDesc;
|
|
1496
|
+
declare const index$2_toVoteDayKey: typeof toVoteDayKey;
|
|
1497
|
+
declare const index$2_useMikuContest: typeof useMikuContest;
|
|
1498
|
+
declare const index$2_validateMikuSubmissionInput: typeof validateMikuSubmissionInput;
|
|
1499
|
+
declare namespace index$2 {
|
|
1500
|
+
export { index$2_CreateMikuAnnouncementInput as CreateMikuAnnouncementInput, index$2_CreateMikuSubmissionInput as CreateMikuSubmissionInput, type index$2_DrizzleLikeDb as DrizzleLikeDb, index$2_HttpMethod as HttpMethod, index$2_MikuAnnouncement as MikuAnnouncement, index$2_MikuContestApiClient as MikuContestApiClient, index$2_MikuContestConfig as MikuContestConfig, type index$2_MikuContestNoticeRow as MikuContestNoticeRow, index$2_MikuContestPersistedState as MikuContestPersistedState, type index$2_MikuContestPersistenceAdapter as MikuContestPersistenceAdapter, index$2_MikuContestPersistentService as MikuContestPersistentService, type index$2_MikuContestPersistentServiceOptions as MikuContestPersistentServiceOptions, index$2_MikuContestRole as MikuContestRole, type index$2_MikuContestRouteConfig as MikuContestRouteConfig, index$2_MikuContestService as MikuContestService, type index$2_MikuContestServiceLike as MikuContestServiceLike, type index$2_MikuContestServiceOptions as MikuContestServiceOptions, index$2_MikuContestStateDbService as MikuContestStateDbService, index$2_MikuContestStateSnapshot as MikuContestStateSnapshot, index$2_MikuContestTimeline as MikuContestTimeline, type index$2_MikuContestVoteRow as MikuContestVoteRow, index$2_MikuFeatureToggles as MikuFeatureToggles, index$2_MikuLeaderboardItem as MikuLeaderboardItem, index$2_MikuNoticeType as MikuNoticeType, index$2_MikuSubmission as MikuSubmission, index$2_MikuSubmissionContent as MikuSubmissionContent, index$2_MikuSubmissionExportRow as MikuSubmissionExportRow, index$2_MikuSubmissionFilter as MikuSubmissionFilter, index$2_MikuSubmissionStatus as MikuSubmissionStatus, index$2_MikuVoteRecord as MikuVoteRecord, index$2_MikuVoterRestriction as MikuVoterRestriction, index$2_MikuVotingRules as MikuVotingRules, index$2_MikuWorkType as MikuWorkType, index$2_Requester as Requester, index$2_ResetMikuVotesInput as ResetMikuVotesInput, index$2_ReviewMikuSubmissionInput as ReviewMikuSubmissionInput, index$2_SetMikuVoterRestrictionInput as SetMikuVoterRestrictionInput, type index$2_VoteCheckContext as VoteCheckContext, index$2_VoteMikuSubmissionInput as VoteMikuSubmissionInput, index$2_checkVoteEligibility as checkVoteEligibility, index$2_createCreateSubmissionHandler as createCreateSubmissionHandler, index$2_createDefaultMikuContestConfig as createDefaultMikuContestConfig, index$2_createExportSubmissionsHandler as createExportSubmissionsHandler, index$2_createGetContestSnapshotHandler as createGetContestSnapshotHandler, index$2_createListSubmissionsHandler as createListSubmissionsHandler, index$2_createMikuContestApiClient as createMikuContestApiClient, index$2_createMikuContestDrizzlePersistenceAdapter as createMikuContestDrizzlePersistenceAdapter, index$2_createMikuContestPersistentService as createMikuContestPersistentService, index$2_createMikuContestService as createMikuContestService, index$2_createResetVotesHandler as createResetVotesHandler, index$2_createReviewSubmissionHandler as createReviewSubmissionHandler, index$2_createSetVoterRestrictionHandler as createSetVoterRestrictionHandler, index$2_createUpdateContestConfigHandler as createUpdateContestConfigHandler, index$2_createVoteHandler as createVoteHandler, index$2_defaultMikuVotingRules as defaultMikuVotingRules, index$2_mikuContestConfigs as mikuContestConfigs, index$2_mikuContestDbService as mikuContestDbService, index$2_mikuContestNotices as mikuContestNotices, index$2_mikuContestSubmissions as mikuContestSubmissions, index$2_mikuContestVoterRestrictions as mikuContestVoterRestrictions, index$2_mikuContestVotes as mikuContestVotes, index$4 as miniappService, index$3 as miniappUI, index$2_sortByVotesDesc as sortByVotesDesc, index$2_toVoteDayKey as toVoteDayKey, index$2_useMikuContest as useMikuContest, index$2_validateMikuSubmissionInput as validateMikuSubmissionInput, index$5 as webService, index$a as webUI };
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
declare const index$1_NapCatConfig: typeof NapCatConfig;
|
|
1504
|
+
declare const index$1_NapCatConsole: typeof NapCatConsole;
|
|
1505
|
+
declare const index$1_NapCatConsoleProps: typeof NapCatConsoleProps;
|
|
1506
|
+
declare const index$1_NapCatWebApiResponse: typeof NapCatWebApiResponse;
|
|
1507
|
+
declare const index$1_NapCatWebhookEvent: typeof NapCatWebhookEvent;
|
|
1508
|
+
declare const index$1_OneBotActionResponse: typeof OneBotActionResponse;
|
|
1509
|
+
declare const index$1_OneBotFriendInfo: typeof OneBotFriendInfo;
|
|
1510
|
+
declare const index$1_OneBotGroupInfo: typeof OneBotGroupInfo;
|
|
1511
|
+
declare const index$1_OneBotStatus: typeof OneBotStatus;
|
|
1512
|
+
declare const index$1_SendGroupMessagePayload: typeof SendGroupMessagePayload;
|
|
1513
|
+
declare const index$1_SendPrivateMessagePayload: typeof SendPrivateMessagePayload;
|
|
1514
|
+
declare namespace index$1 {
|
|
1515
|
+
export { index$1_NapCatConfig as NapCatConfig, index$1_NapCatConsole as NapCatConsole, index$1_NapCatConsoleProps as NapCatConsoleProps, index$1_NapCatWebApiResponse as NapCatWebApiResponse, index$1_NapCatWebhookEvent as NapCatWebhookEvent, index$1_OneBotActionResponse as OneBotActionResponse, index$1_OneBotFriendInfo as OneBotFriendInfo, index$1_OneBotGroupInfo as OneBotGroupInfo, index$1_OneBotStatus as OneBotStatus, index$1_SendGroupMessagePayload as SendGroupMessagePayload, index$1_SendPrivateMessagePayload as SendPrivateMessagePayload };
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
declare namespace index {
|
|
1519
|
+
export { index$b as audioDetection, index$8 as bubbleShooter, index$c as calendar, index$d as festivalCard, index$2 as mikuContest, index$e as mikuFireworks3D, index$f as mikuFusionGame, index$g as mmd, index$h as music, index$i as navigation, index$j as portfolio, index$7 as profile, index$1 as qqbot, index$k as screenReceiver, index$6 as testField, index$l as testYourself, index$m as vocaloidBooth };
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
export { defaultMikuVotingRules as $, type AutoOpenModalProps as A, PermissionGuard as B, CategoryFilter as C, type DraggableExperimentGridProps as D, type EnhancedAvatarProps as E, type ExperimentCategory as F, type ExperimentItem as G, type CompletionFilter as H, type SortMode as I, type TestFieldPageProps as J, filterExperiments as K, sortExperiments as L, getAllTags as M, getExperimentCounts as N, validateExperiment as O, type ProfileButtonProps as P, getCategoryDisplayName as Q, getCategoryColor as R, type SocialLink as S, type TestFieldConfig as T, UserInfoBar as U, type ViewMode as V, getCompletionFilterDisplayName as W, getCompletionStatusColor as X, getCompletionStatusText as Y, index$3 as Z, useMikuContest as _, index$8 as a, createDefaultMikuContestConfig as a0, validateMikuSubmissionInput as a1, toVoteDayKey as a2, type VoteCheckContext as a3, checkVoteEligibility as a4, sortByVotesDesc as a5, index$5 as a6, index$4 as a7, type MikuContestServiceOptions as a8, MikuContestService as a9, createExportSubmissionsHandler as aA, index$7 as aB, index$6 as aC, index$2 as aD, index$1 as aE, createMikuContestService as aa, type MikuContestPersistenceAdapter as ab, type DrizzleLikeDb as ac, mikuContestConfigs as ad, mikuContestSubmissions as ae, mikuContestVotes as af, mikuContestNotices as ag, mikuContestVoterRestrictions as ah, type MikuContestVoteRow as ai, type MikuContestNoticeRow as aj, MikuContestStateDbService as ak, createMikuContestDrizzlePersistenceAdapter as al, type MikuContestPersistentServiceOptions as am, MikuContestPersistentService as an, createMikuContestPersistentService as ao, mikuContestDbService as ap, type MikuContestServiceLike as aq, type MikuContestRouteConfig as ar, createGetContestSnapshotHandler as as, createUpdateContestConfigHandler as at, createCreateSubmissionHandler as au, createVoteHandler as av, createReviewSubmissionHandler as aw, createListSubmissionsHandler as ax, createSetVoterRestrictionHandler as ay, createResetVotesHandler as az, ProfileButton as b, type ProfileModalProps as c, ProfileModal as d, AutoOpenModal as e, EnhancedAvatar as f, type ProfileData as g, type ProfileBadge as h, index as i, type Stat as j, CompletionFilterComponent as k, type PageHeaderProps as l, PageHeader as m, type ExperimentGridItem as n, type ExperimentGridProps as o, ExperimentGrid as p, ExperimentItemGrid as q, type EmptyStateProps as r, EmptyState as s, type SortControlProps as t, SortControl as u, type SortModeToggleProps as v, SortModeToggle as w, DraggableExperimentGrid as x, type SortableExperimentItemProps as y, SortableExperimentItem as z };
|