dsh-poker 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +56 -0
- package/cordis.patch.yml +3 -0
- package/lib/client.js +2419 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +3051 -0
- package/lib/index.js.map +1 -0
- package/lib/invariant-C3ZiFskw.js +13 -0
- package/lib/invariant-C3ZiFskw.js.map +1 -0
- package/lib/invariant.js +3 -0
- package/lib/join/card-back-landlord.png +0 -0
- package/lib/join/card-back.png +0 -0
- package/lib/join/face-a.png +0 -0
- package/lib/join/face-j.png +0 -0
- package/lib/join/face-k.png +0 -0
- package/lib/join/face-q.png +0 -0
- package/lib/join/index.html +13 -0
- package/lib/join/index.js +8910 -0
- package/lib/join/index.js.map +1 -0
- package/lib/join/join.css +14 -0
- package/lib/join/joker-black.png +0 -0
- package/lib/join/joker-red.png +0 -0
- package/lib/join/role-farmer-b.png +0 -0
- package/lib/join/role-farmer-c.png +0 -0
- package/lib/join/role-farmer.png +0 -0
- package/lib/join/role-landlord-b.png +0 -0
- package/lib/join/role-landlord.png +0 -0
- package/lib/join/role-spectator.png +0 -0
- package/lib/types/client/CardBack.d.ts +7 -0
- package/lib/types/client/CardBack.d.ts.map +1 -0
- package/lib/types/client/CardFace.d.ts +8 -0
- package/lib/types/client/CardFace.d.ts.map +1 -0
- package/lib/types/client/HostApp.d.ts +4 -0
- package/lib/types/client/HostApp.d.ts.map +1 -0
- package/lib/types/client/InviteDialog.d.ts +15 -0
- package/lib/types/client/InviteDialog.d.ts.map +1 -0
- package/lib/types/client/JoinForm.d.ts +13 -0
- package/lib/types/client/JoinForm.d.ts.map +1 -0
- package/lib/types/client/LobbyView.d.ts +34 -0
- package/lib/types/client/LobbyView.d.ts.map +1 -0
- package/lib/types/client/SeatAvatar.d.ts +18 -0
- package/lib/types/client/SeatAvatar.d.ts.map +1 -0
- package/lib/types/client/SeatRow.d.ts +8 -0
- package/lib/types/client/SeatRow.d.ts.map +1 -0
- package/lib/types/client/SettingsCard.d.ts +6 -0
- package/lib/types/client/SettingsCard.d.ts.map +1 -0
- package/lib/types/client/SettlementView.d.ts +6 -0
- package/lib/types/client/SettlementView.d.ts.map +1 -0
- package/lib/types/client/TableView.d.ts +16 -0
- package/lib/types/client/TableView.d.ts.map +1 -0
- package/lib/types/client/card-stack.d.ts +3 -0
- package/lib/types/client/card-stack.d.ts.map +1 -0
- package/lib/types/client/host-api.d.ts +50 -0
- package/lib/types/client/host-api.d.ts.map +1 -0
- package/lib/types/client/index.d.ts +5 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/slots.d.ts +3 -0
- package/lib/types/client/slots.d.ts.map +1 -0
- package/lib/types/client/store.d.ts +15 -0
- package/lib/types/client/store.d.ts.map +1 -0
- package/lib/types/config.d.ts +76 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/crypto.d.ts +9 -0
- package/lib/types/crypto.d.ts.map +1 -0
- package/lib/types/engine/cards.d.ts +22 -0
- package/lib/types/engine/cards.d.ts.map +1 -0
- package/lib/types/engine/deal.d.ts +11 -0
- package/lib/types/engine/deal.d.ts.map +1 -0
- package/lib/types/engine/hands.d.ts +16 -0
- package/lib/types/engine/hands.d.ts.map +1 -0
- package/lib/types/engine/index.d.ts +7 -0
- package/lib/types/engine/index.d.ts.map +1 -0
- package/lib/types/engine/play.d.ts +73 -0
- package/lib/types/engine/play.d.ts.map +1 -0
- package/lib/types/engine/random.d.ts +2 -0
- package/lib/types/engine/random.d.ts.map +1 -0
- package/lib/types/engine/score.d.ts +11 -0
- package/lib/types/engine/score.d.ts.map +1 -0
- package/lib/types/identity/player.d.ts +6 -0
- package/lib/types/identity/player.d.ts.map +1 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/invariant.d.ts +9 -0
- package/lib/types/invariant.d.ts.map +1 -0
- package/lib/types/join/JoinApp.d.ts +2 -0
- package/lib/types/join/JoinApp.d.ts.map +1 -0
- package/lib/types/join/main.d.ts +2 -0
- package/lib/types/join/main.d.ts.map +1 -0
- package/lib/types/net/auth.d.ts +16 -0
- package/lib/types/net/auth.d.ts.map +1 -0
- package/lib/types/net/join-page.d.ts +6 -0
- package/lib/types/net/join-page.d.ts.map +1 -0
- package/lib/types/net/json.d.ts +3 -0
- package/lib/types/net/json.d.ts.map +1 -0
- package/lib/types/net/protocol.d.ts +2 -0
- package/lib/types/net/protocol.d.ts.map +1 -0
- package/lib/types/net/routes.d.ts +4 -0
- package/lib/types/net/routes.d.ts.map +1 -0
- package/lib/types/net/views.d.ts +3 -0
- package/lib/types/net/views.d.ts.map +1 -0
- package/lib/types/net/ws.d.ts +8 -0
- package/lib/types/net/ws.d.ts.map +1 -0
- package/lib/types/persist/domain.d.ts +104 -0
- package/lib/types/persist/domain.d.ts.map +1 -0
- package/lib/types/persist/schemas.d.ts +79 -0
- package/lib/types/persist/schemas.d.ts.map +1 -0
- package/lib/types/room/RoomManager.d.ts +142 -0
- package/lib/types/room/RoomManager.d.ts.map +1 -0
- package/lib/types/settle/audit.d.ts +15 -0
- package/lib/types/settle/audit.d.ts.map +1 -0
- package/lib/types/settle/escrow.d.ts +4 -0
- package/lib/types/settle/escrow.d.ts.map +1 -0
- package/lib/types/settle/grant.d.ts +7 -0
- package/lib/types/settle/grant.d.ts.map +1 -0
- package/lib/types/settle/ledger.d.ts +39 -0
- package/lib/types/settle/ledger.d.ts.map +1 -0
- package/lib/types/settle/math.d.ts +12 -0
- package/lib/types/settle/math.d.ts.map +1 -0
- package/lib/types/types.d.ts +253 -0
- package/lib/types/types.d.ts.map +1 -0
- package/package.json +116 -0
- package/prepare.mjs +16 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
export type RoomId = string & {
|
|
2
|
+
readonly __brand: 'RoomId';
|
|
3
|
+
};
|
|
4
|
+
export type PlayerId = string & {
|
|
5
|
+
readonly __brand: 'PlayerId';
|
|
6
|
+
};
|
|
7
|
+
export type HandId = string & {
|
|
8
|
+
readonly __brand: 'HandId';
|
|
9
|
+
};
|
|
10
|
+
export type GrantId = string & {
|
|
11
|
+
readonly __brand: 'GrantId';
|
|
12
|
+
};
|
|
13
|
+
export type SettlementId = string & {
|
|
14
|
+
readonly __brand: 'SettlementId';
|
|
15
|
+
};
|
|
16
|
+
export type EntryId = string & {
|
|
17
|
+
readonly __brand: 'EntryId';
|
|
18
|
+
};
|
|
19
|
+
export type CardId = string & {
|
|
20
|
+
readonly __brand: 'CardId';
|
|
21
|
+
};
|
|
22
|
+
export type SeatCount = 3 | 4;
|
|
23
|
+
export type Seat = 0 | 1 | 2 | 3;
|
|
24
|
+
export type GameMode = 'classic' | 'laizi';
|
|
25
|
+
export type TokenAtomString = string & {
|
|
26
|
+
readonly __atom: unique symbol;
|
|
27
|
+
};
|
|
28
|
+
export type RoomPhase = 'waiting' | 'dealing' | 'bidding' | 'doubling' | 'playing' | 'settling' | 'void' | 'closed';
|
|
29
|
+
export type HandType = 'solo' | 'pair' | 'trio' | 'trioSolo' | 'trioPair' | 'seq' | 'seqPair' | 'plane' | 'planeSolo' | 'planePair' | 'fourDualSolo' | 'fourDualPair' | 'bomb' | 'rocket' | 'pass';
|
|
30
|
+
export type BidScore = number;
|
|
31
|
+
export type BidAction = 'pass' | 'call' | 'rob';
|
|
32
|
+
export type DoubleAction = 'pass' | 'double' | 'reDouble';
|
|
33
|
+
export type AuctionKind = 'call' | 'rob';
|
|
34
|
+
export type RejectCode = 'illegal' | 'not-your-turn' | 'phase' | 'auth' | 'duplicate-nonce' | 'insufficient' | 'room-full' | 'expired';
|
|
35
|
+
export interface Player {
|
|
36
|
+
readonly playerId: PlayerId;
|
|
37
|
+
readonly displayName: string;
|
|
38
|
+
readonly avatarUrl: string | null;
|
|
39
|
+
readonly createdAt: string;
|
|
40
|
+
}
|
|
41
|
+
export interface SeatState {
|
|
42
|
+
readonly seat: Seat;
|
|
43
|
+
readonly playerId: PlayerId | null;
|
|
44
|
+
readonly displayName: string | null;
|
|
45
|
+
readonly avatarUrl: string | null;
|
|
46
|
+
readonly ready: boolean;
|
|
47
|
+
readonly connected: boolean;
|
|
48
|
+
readonly role: 'empty' | 'farmer' | 'landlord';
|
|
49
|
+
readonly grantId: GrantId | null;
|
|
50
|
+
readonly cardsLeft: number;
|
|
51
|
+
}
|
|
52
|
+
export interface Room {
|
|
53
|
+
readonly roomId: RoomId;
|
|
54
|
+
readonly roomCode: string;
|
|
55
|
+
readonly title: string;
|
|
56
|
+
readonly hostPlayerId: PlayerId;
|
|
57
|
+
readonly phase: RoomPhase;
|
|
58
|
+
readonly stakeAtoms: bigint;
|
|
59
|
+
readonly maxMultiplier: number;
|
|
60
|
+
readonly seatCount: SeatCount;
|
|
61
|
+
readonly laiZi: boolean;
|
|
62
|
+
readonly seats: readonly SeatState[];
|
|
63
|
+
readonly spectatorIds: readonly PlayerId[];
|
|
64
|
+
readonly currentHandId: HandId | null;
|
|
65
|
+
readonly createdAt: string;
|
|
66
|
+
readonly inviteExpiresAt: string;
|
|
67
|
+
readonly shareable: boolean;
|
|
68
|
+
}
|
|
69
|
+
/** Wire copy of Room: atoms are decimal strings so JSON/WS stay serializable. */
|
|
70
|
+
export interface RoomView extends Omit<Room, 'stakeAtoms'> {
|
|
71
|
+
readonly stakeAtoms: TokenAtomString;
|
|
72
|
+
}
|
|
73
|
+
export interface Play {
|
|
74
|
+
readonly seat: Seat;
|
|
75
|
+
readonly type: HandType;
|
|
76
|
+
readonly cards: readonly CardId[];
|
|
77
|
+
readonly seq: number;
|
|
78
|
+
readonly ts: string;
|
|
79
|
+
}
|
|
80
|
+
export interface Hand {
|
|
81
|
+
readonly handId: HandId;
|
|
82
|
+
readonly roomId: RoomId;
|
|
83
|
+
readonly dealerSeat: Seat;
|
|
84
|
+
readonly bottom: readonly CardId[];
|
|
85
|
+
readonly hands: readonly CardId[][];
|
|
86
|
+
readonly bid: BidScore;
|
|
87
|
+
readonly landlordSeat: Seat | null;
|
|
88
|
+
readonly farmerDoubledBySeat: Partial<Record<Seat, number>>;
|
|
89
|
+
readonly landlordReDouble: number;
|
|
90
|
+
readonly mingPaiBySeat: Partial<Record<Seat, boolean>>;
|
|
91
|
+
readonly mingPaiMult: number;
|
|
92
|
+
readonly bombCount: number;
|
|
93
|
+
readonly rocketCount: number;
|
|
94
|
+
readonly spring: 'none' | 'spring' | 'anti';
|
|
95
|
+
readonly table: readonly Play[];
|
|
96
|
+
readonly turnSeat: Seat;
|
|
97
|
+
readonly leadSeat: Seat;
|
|
98
|
+
readonly laiZiRanks: readonly string[];
|
|
99
|
+
}
|
|
100
|
+
export interface LegalCombo {
|
|
101
|
+
readonly type: Exclude<HandType, 'pass'>;
|
|
102
|
+
readonly cards: readonly CardId[];
|
|
103
|
+
}
|
|
104
|
+
export interface PlayerView {
|
|
105
|
+
readonly room: RoomView;
|
|
106
|
+
readonly you: {
|
|
107
|
+
readonly playerId: PlayerId;
|
|
108
|
+
readonly seat: Seat | null;
|
|
109
|
+
readonly spectator: boolean;
|
|
110
|
+
readonly cards: CardId[];
|
|
111
|
+
};
|
|
112
|
+
readonly publicHands: readonly number[];
|
|
113
|
+
readonly lastPlays: readonly Play[];
|
|
114
|
+
readonly bottom: readonly CardId[] | null;
|
|
115
|
+
readonly laiZiRanks: readonly string[];
|
|
116
|
+
readonly bid: BidScore;
|
|
117
|
+
readonly auction: {
|
|
118
|
+
readonly kind: AuctionKind;
|
|
119
|
+
readonly multiplier: number;
|
|
120
|
+
} | null;
|
|
121
|
+
readonly revealedBySeat: Partial<Record<Seat, readonly CardId[]>>;
|
|
122
|
+
readonly mingPaiBySeat: Partial<Record<Seat, boolean>>;
|
|
123
|
+
readonly turnSeat: Seat | null;
|
|
124
|
+
readonly leadSeat: Seat | null;
|
|
125
|
+
readonly deadlineAt: string | null;
|
|
126
|
+
readonly yourAvailableAtoms: TokenAtomString;
|
|
127
|
+
readonly yourEscrowAtoms: TokenAtomString;
|
|
128
|
+
readonly legal: {
|
|
129
|
+
readonly canPass: boolean;
|
|
130
|
+
readonly combos: readonly LegalCombo[];
|
|
131
|
+
};
|
|
132
|
+
readonly remainingRanks: Readonly<Record<string, number>> | null;
|
|
133
|
+
readonly chat: readonly ChatLine[];
|
|
134
|
+
}
|
|
135
|
+
export interface ChatLine {
|
|
136
|
+
readonly playerId: PlayerId;
|
|
137
|
+
readonly displayName: string;
|
|
138
|
+
readonly text: string;
|
|
139
|
+
readonly ts: string;
|
|
140
|
+
}
|
|
141
|
+
export interface Settlement {
|
|
142
|
+
readonly settlementId: SettlementId;
|
|
143
|
+
readonly handId: HandId;
|
|
144
|
+
readonly winner: 'landlord' | 'farmers';
|
|
145
|
+
readonly unitAtoms: TokenAtomString;
|
|
146
|
+
readonly deltas: readonly {
|
|
147
|
+
seat: Seat;
|
|
148
|
+
playerId: PlayerId;
|
|
149
|
+
atoms: TokenAtomString;
|
|
150
|
+
}[];
|
|
151
|
+
readonly rakeAtoms: TokenAtomString;
|
|
152
|
+
readonly formula: string;
|
|
153
|
+
}
|
|
154
|
+
export interface PublicSettlement {
|
|
155
|
+
readonly settlementId: SettlementId;
|
|
156
|
+
readonly handId: HandId;
|
|
157
|
+
readonly winner: 'landlord' | 'farmers';
|
|
158
|
+
readonly unitAtoms: TokenAtomString;
|
|
159
|
+
readonly deltas: Settlement['deltas'];
|
|
160
|
+
readonly rakeAtoms: TokenAtomString;
|
|
161
|
+
readonly formula: string;
|
|
162
|
+
readonly trustNote: string;
|
|
163
|
+
}
|
|
164
|
+
export interface TokenGrant {
|
|
165
|
+
readonly grantId: GrantId;
|
|
166
|
+
readonly playerId: PlayerId;
|
|
167
|
+
readonly roomId: RoomId;
|
|
168
|
+
readonly maxExposureAtoms: TokenAtomString;
|
|
169
|
+
readonly issuedAt: string;
|
|
170
|
+
readonly expiresAt: string;
|
|
171
|
+
readonly source: 'host-welcome';
|
|
172
|
+
readonly issuedBy: 'room-host';
|
|
173
|
+
}
|
|
174
|
+
export type ClientCommand = {
|
|
175
|
+
type: 'sit';
|
|
176
|
+
seat: Seat;
|
|
177
|
+
displayName: string;
|
|
178
|
+
} | {
|
|
179
|
+
type: 'stand';
|
|
180
|
+
} | {
|
|
181
|
+
type: 'ready';
|
|
182
|
+
ready: boolean;
|
|
183
|
+
} | {
|
|
184
|
+
type: 'bid';
|
|
185
|
+
action: BidAction;
|
|
186
|
+
score?: BidScore;
|
|
187
|
+
} | {
|
|
188
|
+
type: 'double';
|
|
189
|
+
action: DoubleAction;
|
|
190
|
+
} | {
|
|
191
|
+
type: 'mingPai';
|
|
192
|
+
} | {
|
|
193
|
+
type: 'rename';
|
|
194
|
+
title: string;
|
|
195
|
+
} | {
|
|
196
|
+
type: 'play';
|
|
197
|
+
cards: CardId[];
|
|
198
|
+
nonce: string;
|
|
199
|
+
} | {
|
|
200
|
+
type: 'pass';
|
|
201
|
+
nonce: string;
|
|
202
|
+
} | {
|
|
203
|
+
type: 'chat';
|
|
204
|
+
text: string;
|
|
205
|
+
} | {
|
|
206
|
+
type: 'rematch';
|
|
207
|
+
} | {
|
|
208
|
+
type: 'hostKick';
|
|
209
|
+
playerId: PlayerId;
|
|
210
|
+
} | {
|
|
211
|
+
type: 'hostClose';
|
|
212
|
+
} | {
|
|
213
|
+
type: 'ping';
|
|
214
|
+
};
|
|
215
|
+
export type ServerEvent = {
|
|
216
|
+
type: 'snapshot';
|
|
217
|
+
seq: number;
|
|
218
|
+
view: PlayerView;
|
|
219
|
+
} | {
|
|
220
|
+
type: 'reject';
|
|
221
|
+
nonce?: string;
|
|
222
|
+
code: RejectCode;
|
|
223
|
+
reason: string;
|
|
224
|
+
} | {
|
|
225
|
+
type: 'settled';
|
|
226
|
+
seq: number;
|
|
227
|
+
settlement: PublicSettlement;
|
|
228
|
+
} | {
|
|
229
|
+
type: 'pong';
|
|
230
|
+
ts: number;
|
|
231
|
+
};
|
|
232
|
+
export declare class CommandError extends Error {
|
|
233
|
+
readonly code: RejectCode;
|
|
234
|
+
constructor(code: RejectCode, reason: string);
|
|
235
|
+
}
|
|
236
|
+
export declare function asTokenAtomString(value: bigint | number | string): TokenAtomString;
|
|
237
|
+
export declare function parseAtoms(value: string): bigint;
|
|
238
|
+
export declare function asCardId(value: string): CardId;
|
|
239
|
+
export declare function asPlayerId(value: string): PlayerId;
|
|
240
|
+
export declare function asRoomId(value: string): RoomId;
|
|
241
|
+
export declare function asHandId(value: string): HandId;
|
|
242
|
+
export declare function asGrantId(value: string): GrantId;
|
|
243
|
+
export declare function asSettlementId(value: string): SettlementId;
|
|
244
|
+
export declare function asEntryId(value: string): EntryId;
|
|
245
|
+
export declare function nextSeat(seat: Seat, count?: number): Seat;
|
|
246
|
+
export declare function prevSeat(seat: Seat, count?: number): Seat;
|
|
247
|
+
export declare function isSeat(value: unknown, count?: number): value is Seat;
|
|
248
|
+
export declare function allSeats(count: SeatCount): Seat[];
|
|
249
|
+
export declare function decksFor(count: SeatCount): 1 | 2;
|
|
250
|
+
export declare function holeCount(count: SeatCount): number;
|
|
251
|
+
export declare function dealtHandSize(count: SeatCount): number;
|
|
252
|
+
export declare function landlordHandSize(count: SeatCount): number;
|
|
253
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-poker",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "斗地主房间插件。三人/四人、经典/癞子,Host 权威房间 + 欢迎积分账本 + 好友独立加入页",
|
|
5
|
+
"author": "lifefloating",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"deepseek-harness",
|
|
9
|
+
"dsh",
|
|
10
|
+
"plugin",
|
|
11
|
+
"doudizhu",
|
|
12
|
+
"poker"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/lifefloating/dsh-doudizhu.git"
|
|
17
|
+
},
|
|
18
|
+
"homepage": "https://github.com/lifefloating/dsh-doudizhu#readme",
|
|
19
|
+
"bugs": {
|
|
20
|
+
"url": "https://github.com/lifefloating/dsh-doudizhu/issues"
|
|
21
|
+
},
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "lib/index.js",
|
|
24
|
+
"types": "lib/types/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./lib/types/index.d.ts",
|
|
28
|
+
"default": "./lib/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./invariant": {
|
|
31
|
+
"types": "./lib/types/invariant.d.ts",
|
|
32
|
+
"default": "./lib/invariant.js"
|
|
33
|
+
},
|
|
34
|
+
"./client": {
|
|
35
|
+
"types": "./lib/types/client/index.d.ts",
|
|
36
|
+
"default": "./lib/client.js"
|
|
37
|
+
},
|
|
38
|
+
"./package.json": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
"dsh": {
|
|
41
|
+
"bundle": {
|
|
42
|
+
"patch": "./cordis.patch.yml"
|
|
43
|
+
},
|
|
44
|
+
"client": {
|
|
45
|
+
"platform": "web",
|
|
46
|
+
"inject": [
|
|
47
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
48
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
49
|
+
"@deepseek-ai/dsh-client-ui-slots"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"lib",
|
|
55
|
+
"cordis.patch.yml",
|
|
56
|
+
"LICENSE",
|
|
57
|
+
"README.md",
|
|
58
|
+
"CHANGELOG.md",
|
|
59
|
+
"prepare.mjs"
|
|
60
|
+
],
|
|
61
|
+
"scripts": {
|
|
62
|
+
"clean": "node scripts/clean.mjs",
|
|
63
|
+
"prepare": "node prepare.mjs",
|
|
64
|
+
"build": "pnpm run clean && node scripts/emit-dts.mjs && tsdown --config tsdown.config.ts && tsdown --config tsdown.client.ts && tsdown --config tsdown.join.ts",
|
|
65
|
+
"prepack": "pnpm run build",
|
|
66
|
+
"test": "vitest run",
|
|
67
|
+
"typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.client.json --noEmit",
|
|
68
|
+
"verify": "pnpm typecheck && pnpm build && pnpm test",
|
|
69
|
+
"release:check": "pnpm run verify && node scripts/check-package.mjs && git diff --check"
|
|
70
|
+
},
|
|
71
|
+
"publishConfig": {
|
|
72
|
+
"access": "public",
|
|
73
|
+
"registry": "https://registry.npmjs.org/"
|
|
74
|
+
},
|
|
75
|
+
"engines": {
|
|
76
|
+
"node": "^22.19.0 || >=24.0.0"
|
|
77
|
+
},
|
|
78
|
+
"packageManager": "pnpm@11.22.0",
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"ws": "^8.18.3",
|
|
81
|
+
"zod": "^4.4.3"
|
|
82
|
+
},
|
|
83
|
+
"peerDependencies": {
|
|
84
|
+
"@deepseek-ai/cordis": "*",
|
|
85
|
+
"@deepseek-ai/dsh-settings": ">=0.0.1-rc.1",
|
|
86
|
+
"@deepseek-ai/schemastery": "*",
|
|
87
|
+
"react": "^18.2.0",
|
|
88
|
+
"react-dom": "^18.2.0"
|
|
89
|
+
},
|
|
90
|
+
"peerDependenciesMeta": {
|
|
91
|
+
"@deepseek-ai/dsh-settings": {
|
|
92
|
+
"optional": true
|
|
93
|
+
},
|
|
94
|
+
"@deepseek-ai/schemastery": {
|
|
95
|
+
"optional": true
|
|
96
|
+
},
|
|
97
|
+
"react": {
|
|
98
|
+
"optional": true
|
|
99
|
+
},
|
|
100
|
+
"react-dom": {
|
|
101
|
+
"optional": true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"devDependencies": {
|
|
105
|
+
"@types/node": "^24.3.0",
|
|
106
|
+
"@types/react": "~18.3.1",
|
|
107
|
+
"@types/react-dom": "~18.3.0",
|
|
108
|
+
"@types/ws": "^8.18.1",
|
|
109
|
+
"lightningcss": "^1.30.1",
|
|
110
|
+
"react": "^18.2.0",
|
|
111
|
+
"react-dom": "^18.2.0",
|
|
112
|
+
"tsdown": "^0.15.6",
|
|
113
|
+
"typescript": "^5.9.2",
|
|
114
|
+
"vitest": "^3.2.4"
|
|
115
|
+
}
|
|
116
|
+
}
|
package/prepare.mjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
|
+
import { spawnSync } from 'node:child_process'
|
|
3
|
+
import { dirname, join } from 'node:path'
|
|
4
|
+
import { fileURLToPath } from 'node:url'
|
|
5
|
+
|
|
6
|
+
const root = dirname(fileURLToPath(import.meta.url))
|
|
7
|
+
if (!existsSync(join(root, 'src/index.ts')) || !existsSync(join(root, 'tsdown.config.ts'))) {
|
|
8
|
+
process.exit(0)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const result = spawnSync('pnpm', ['run', 'build'], {
|
|
12
|
+
cwd: root,
|
|
13
|
+
stdio: 'inherit',
|
|
14
|
+
shell: process.platform === 'win32',
|
|
15
|
+
})
|
|
16
|
+
process.exit(result.status ?? 1)
|