zuburi-game-platform 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/README.md +214 -0
- package/dist/achievements/listAchievements.d.ts +5 -0
- package/dist/achievements/listAchievements.d.ts.map +1 -0
- package/dist/achievements/listAchievements.js +8 -0
- package/dist/achievements/listAchievements.js.map +1 -0
- package/dist/client/createGamePlatformClient.d.ts +4 -0
- package/dist/client/createGamePlatformClient.d.ts.map +1 -0
- package/dist/client/createGamePlatformClient.js +37 -0
- package/dist/client/createGamePlatformClient.js.map +1 -0
- package/dist/client/types.d.ts +35 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/errors/GamePlatformError.d.ts +11 -0
- package/dist/errors/GamePlatformError.d.ts.map +1 -0
- package/dist/errors/GamePlatformError.js +13 -0
- package/dist/errors/GamePlatformError.js.map +1 -0
- package/dist/errors/normalizeError.d.ts +3 -0
- package/dist/errors/normalizeError.d.ts.map +1 -0
- package/dist/errors/normalizeError.js +69 -0
- package/dist/errors/normalizeError.js.map +1 -0
- package/dist/events/emitEvent.d.ts +5 -0
- package/dist/events/emitEvent.d.ts.map +1 -0
- package/dist/events/emitEvent.js +25 -0
- package/dist/events/emitEvent.js.map +1 -0
- package/dist/events/idempotency.d.ts +2 -0
- package/dist/events/idempotency.d.ts.map +1 -0
- package/dist/events/idempotency.js +14 -0
- package/dist/events/idempotency.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/callRpc.d.ts +20 -0
- package/dist/internal/callRpc.d.ts.map +1 -0
- package/dist/internal/callRpc.js +40 -0
- package/dist/internal/callRpc.js.map +1 -0
- package/dist/internal/mappers.d.ts +24 -0
- package/dist/internal/mappers.d.ts.map +1 -0
- package/dist/internal/mappers.js +184 -0
- package/dist/internal/mappers.js.map +1 -0
- package/dist/internal/validateApiVersion.d.ts +4 -0
- package/dist/internal/validateApiVersion.d.ts.map +1 -0
- package/dist/internal/validateApiVersion.js +12 -0
- package/dist/internal/validateApiVersion.js.map +1 -0
- package/dist/internal/validators.d.ts +14 -0
- package/dist/internal/validators.d.ts.map +1 -0
- package/dist/internal/validators.js +53 -0
- package/dist/internal/validators.js.map +1 -0
- package/dist/login-bonus/claimAvailable.d.ts +5 -0
- package/dist/login-bonus/claimAvailable.d.ts.map +1 -0
- package/dist/login-bonus/claimAvailable.js +10 -0
- package/dist/login-bonus/claimAvailable.js.map +1 -0
- package/dist/login-bonus/claimProgram.d.ts +5 -0
- package/dist/login-bonus/claimProgram.d.ts.map +1 -0
- package/dist/login-bonus/claimProgram.js +12 -0
- package/dist/login-bonus/claimProgram.js.map +1 -0
- package/dist/login-bonus/getStatus.d.ts +5 -0
- package/dist/login-bonus/getStatus.d.ts.map +1 -0
- package/dist/login-bonus/getStatus.js +8 -0
- package/dist/login-bonus/getStatus.js.map +1 -0
- package/dist/points/getAccount.d.ts +5 -0
- package/dist/points/getAccount.d.ts.map +1 -0
- package/dist/points/getAccount.js +8 -0
- package/dist/points/getAccount.js.map +1 -0
- package/dist/points/listTransactions.d.ts +5 -0
- package/dist/points/listTransactions.d.ts.map +1 -0
- package/dist/points/listTransactions.js +17 -0
- package/dist/points/listTransactions.js.map +1 -0
- package/dist/state/getState.d.ts +5 -0
- package/dist/state/getState.d.ts.map +1 -0
- package/dist/state/getState.js +7 -0
- package/dist/state/getState.js.map +1 -0
- package/dist/types/achievement.d.ts +24 -0
- package/dist/types/achievement.d.ts.map +1 -0
- package/dist/types/achievement.js +2 -0
- package/dist/types/achievement.js.map +1 -0
- package/dist/types/api.d.ts +11 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/event.d.ts +46 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +2 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/loginBonus.d.ts +45 -0
- package/dist/types/loginBonus.d.ts.map +1 -0
- package/dist/types/loginBonus.js +2 -0
- package/dist/types/loginBonus.js.map +1 -0
- package/dist/types/point.d.ts +26 -0
- package/dist/types/point.d.ts.map +1 -0
- package/dist/types/point.js +2 -0
- package/dist/types/point.js.map +1 -0
- package/dist/types/state.d.ts +14 -0
- package/dist/types/state.d.ts.map +1 -0
- package/dist/types/state.js +2 -0
- package/dist/types/state.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AchievementProgress, AchievementState } from "../types/achievement.js";
|
|
2
|
+
import type { EventResult } from "../types/event.js";
|
|
3
|
+
import type { LoginBonusClaim, LoginBonusClaimResult, LoginBonusProgramState, LoginBonusSingleClaimResult, LoginBonusStatus } from "../types/loginBonus.js";
|
|
4
|
+
import type { PointAccount, PointTransactionPage } from "../types/point.js";
|
|
5
|
+
import type { GamePlatformState } from "../types/state.js";
|
|
6
|
+
export declare function mapPointAccount(raw: unknown): PointAccount;
|
|
7
|
+
export declare function mapAchievementState(raw: unknown): AchievementState;
|
|
8
|
+
export declare function mapAchievementProgress(raw: unknown): AchievementProgress;
|
|
9
|
+
export declare function mapLoginProgram(raw: unknown): LoginBonusProgramState;
|
|
10
|
+
export declare function mapLoginStatus(raw: unknown): LoginBonusStatus;
|
|
11
|
+
export declare function mapLoginClaim(raw: unknown): LoginBonusClaim;
|
|
12
|
+
export declare function mapEventResult(raw: unknown): EventResult;
|
|
13
|
+
export declare function mapState(raw: unknown): GamePlatformState;
|
|
14
|
+
type CursorPayload = {
|
|
15
|
+
created_at: string;
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function encodeCursor(raw: unknown): string | null;
|
|
19
|
+
export declare function decodeCursor(cursor: string | null | undefined): CursorPayload | null;
|
|
20
|
+
export declare function mapTransactionPage(raw: unknown): PointTransactionPage;
|
|
21
|
+
export declare function mapLoginAvailable(raw: unknown): LoginBonusClaimResult;
|
|
22
|
+
export declare function mapLoginSingle(raw: unknown): LoginBonusSingleClaimResult;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../src/internal/mappers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3J,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAO1D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAelE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAWxE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAiBpE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAM7D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAa3D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAyBxD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAUxD;AAED,KAAK,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQxD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,IAAI,CAapF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAmBrE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,CAarE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,2BAA2B,CAIxE"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { array, boolean, jsonObject, literal, nullableSafeInteger, nullableString, record, safeInteger, string } from "./validators.js";
|
|
3
|
+
export function mapPointAccount(raw) {
|
|
4
|
+
const value = record(raw, "account");
|
|
5
|
+
return {
|
|
6
|
+
balance: safeInteger(value.balance, "account.balance"),
|
|
7
|
+
lifetimeEarned: safeInteger(value.lifetime_earned, "account.lifetime_earned"),
|
|
8
|
+
lifetimeSpent: safeInteger(value.lifetime_spent, "account.lifetime_spent"),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function mapAchievementState(raw) {
|
|
12
|
+
const value = record(raw, "achievement");
|
|
13
|
+
return {
|
|
14
|
+
id: string(value.id, "achievement.id"),
|
|
15
|
+
gameId: nullableString(value.game_id, "achievement.game_id"),
|
|
16
|
+
name: string(value.name, "achievement.name"),
|
|
17
|
+
description: nullableString(value.description, "achievement.description"),
|
|
18
|
+
category: string(value.category, "achievement.category"),
|
|
19
|
+
progress: safeInteger(value.progress, "achievement.progress"),
|
|
20
|
+
targetValue: safeInteger(value.target_value, "achievement.target_value"),
|
|
21
|
+
unlocked: boolean(value.unlocked, "achievement.unlocked"),
|
|
22
|
+
unlockedAt: nullableString(value.unlocked_at, "achievement.unlocked_at"),
|
|
23
|
+
rewardPoints: safeInteger(value.reward_points, "achievement.reward_points"),
|
|
24
|
+
hidden: boolean(value.hidden, "achievement.hidden"),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function mapAchievementProgress(raw) {
|
|
28
|
+
const value = record(raw, "achievement progress");
|
|
29
|
+
return {
|
|
30
|
+
achievementId: string(value.achievement_id, "achievement_progress.achievement_id"),
|
|
31
|
+
progress: safeInteger(value.progress, "achievement_progress.progress"),
|
|
32
|
+
targetValue: safeInteger(value.target_value, "achievement_progress.target_value"),
|
|
33
|
+
unlocked: boolean(value.unlocked, "achievement_progress.unlocked"),
|
|
34
|
+
newlyUnlocked: boolean(value.newly_unlocked, "achievement_progress.newly_unlocked"),
|
|
35
|
+
rewardPoints: safeInteger(value.reward_points, "achievement_progress.reward_points"),
|
|
36
|
+
balance: nullableSafeInteger(value.balance, "achievement_progress.balance"),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function mapLoginProgram(raw) {
|
|
40
|
+
const value = record(raw, "login bonus program");
|
|
41
|
+
return {
|
|
42
|
+
programId: string(value.program_id, "login_bonus.program_id"),
|
|
43
|
+
name: string(value.name, "login_bonus.name"),
|
|
44
|
+
scopeType: literal(value.scope_type, ["global", "game"], "login_bonus.scope_type"),
|
|
45
|
+
programType: literal(value.program_type, ["standard", "campaign"], "login_bonus.program_type"),
|
|
46
|
+
gameId: nullableString(value.game_id, "login_bonus.game_id"),
|
|
47
|
+
cycleMode: literal(value.cycle_mode, ["loop", "one_shot"], "login_bonus.cycle_mode"),
|
|
48
|
+
claimDate: string(value.claim_date, "login_bonus.claim_date"),
|
|
49
|
+
streakDays: safeInteger(value.streak_days, "login_bonus.streak_days"),
|
|
50
|
+
dayNumber: safeInteger(value.day_number, "login_bonus.day_number"),
|
|
51
|
+
rewardPoints: nullableSafeInteger(value.reward_points, "login_bonus.reward_points"),
|
|
52
|
+
claimedToday: boolean(value.claimed_today, "login_bonus.claimed_today"),
|
|
53
|
+
eligible: boolean(value.eligible, "login_bonus.eligible"),
|
|
54
|
+
active: boolean(value.active, "login_bonus.active"),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function mapLoginStatus(raw) {
|
|
58
|
+
const value = record(raw, "login bonus status");
|
|
59
|
+
return {
|
|
60
|
+
standard: value.standard === null || value.standard === undefined ? null : mapLoginProgram(value.standard),
|
|
61
|
+
campaigns: array(value.campaigns, "login_bonus.campaigns").map(mapLoginProgram),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function mapLoginClaim(raw) {
|
|
65
|
+
const value = record(raw, "login bonus claim");
|
|
66
|
+
return {
|
|
67
|
+
programId: string(value.program_id, "claim.program_id"),
|
|
68
|
+
claimed: boolean(value.claimed, "claim.claimed"),
|
|
69
|
+
alreadyClaimed: value.already_claimed === undefined ? false : boolean(value.already_claimed, "claim.already_claimed"),
|
|
70
|
+
completed: value.completed === undefined ? false : boolean(value.completed, "claim.completed"),
|
|
71
|
+
claimDate: nullableString(value.claim_date, "claim.claim_date"),
|
|
72
|
+
streakDays: nullableSafeInteger(value.streak_days, "claim.streak_days"),
|
|
73
|
+
dayNumber: nullableSafeInteger(value.day_number, "claim.day_number"),
|
|
74
|
+
rewardPoints: value.reward_points === undefined ? 0 : safeInteger(value.reward_points, "claim.reward_points"),
|
|
75
|
+
balance: safeInteger(value.balance, "claim.balance"),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function mapEventResult(raw) {
|
|
79
|
+
const value = record(raw, "event result");
|
|
80
|
+
const event = record(value.event, "event result.event");
|
|
81
|
+
const points = record(value.points, "event result.points");
|
|
82
|
+
const achievements = record(value.achievements, "event result.achievements");
|
|
83
|
+
if (value.ok !== true)
|
|
84
|
+
throw new GamePlatformError("INVALID_RESPONSE", "event result.ok must be true");
|
|
85
|
+
return {
|
|
86
|
+
apiVersion: 1,
|
|
87
|
+
ok: true,
|
|
88
|
+
duplicate: boolean(value.duplicate, "event result.duplicate"),
|
|
89
|
+
event: {
|
|
90
|
+
id: string(event.id, "event.id"),
|
|
91
|
+
gameId: string(event.game_id, "event.game_id"),
|
|
92
|
+
type: string(event.event_type, "event.event_type"),
|
|
93
|
+
origin: literal(event.origin, ["client", "trusted"], "event.origin"),
|
|
94
|
+
},
|
|
95
|
+
points: {
|
|
96
|
+
delta: safeInteger(points.delta, "event.points.delta"),
|
|
97
|
+
balance: safeInteger(points.balance, "event.points.balance"),
|
|
98
|
+
},
|
|
99
|
+
achievements: {
|
|
100
|
+
updated: array(achievements.updated, "event.achievements.updated").map(mapAchievementProgress),
|
|
101
|
+
unlocked: array(achievements.unlocked, "event.achievements.unlocked").map(mapAchievementProgress),
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function mapState(raw) {
|
|
106
|
+
const value = record(raw, "state");
|
|
107
|
+
const game = record(value.game, "state.game");
|
|
108
|
+
return {
|
|
109
|
+
apiVersion: 1,
|
|
110
|
+
game: { id: string(game.id, "game.id"), name: string(game.name, "game.name") },
|
|
111
|
+
points: mapPointAccount(value.points),
|
|
112
|
+
achievements: array(value.achievements, "state.achievements").map(mapAchievementState),
|
|
113
|
+
loginBonus: mapLoginStatus(value.login_bonus),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export function encodeCursor(raw) {
|
|
117
|
+
if (raw === null || raw === undefined)
|
|
118
|
+
return null;
|
|
119
|
+
const value = record(raw, "next_cursor");
|
|
120
|
+
const payload = {
|
|
121
|
+
created_at: string(value.created_at, "next_cursor.created_at"),
|
|
122
|
+
id: string(value.id, "next_cursor.id"),
|
|
123
|
+
};
|
|
124
|
+
return JSON.stringify(payload);
|
|
125
|
+
}
|
|
126
|
+
export function decodeCursor(cursor) {
|
|
127
|
+
if (!cursor)
|
|
128
|
+
return null;
|
|
129
|
+
try {
|
|
130
|
+
const parsed = JSON.parse(cursor);
|
|
131
|
+
const value = record(parsed, "cursor");
|
|
132
|
+
return {
|
|
133
|
+
created_at: string(value.created_at, "cursor.created_at"),
|
|
134
|
+
id: string(value.id, "cursor.id"),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (error instanceof GamePlatformError)
|
|
139
|
+
throw error;
|
|
140
|
+
throw new GamePlatformError("INVALID_CURSOR", "Invalid point transaction cursor", { cause: error });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
export function mapTransactionPage(raw) {
|
|
144
|
+
const value = record(raw, "transaction page");
|
|
145
|
+
return {
|
|
146
|
+
items: array(value.items, "transactions.items").map((item) => {
|
|
147
|
+
const row = record(item, "transaction");
|
|
148
|
+
return {
|
|
149
|
+
id: string(row.id, "transaction.id"),
|
|
150
|
+
amount: safeInteger(row.amount, "transaction.amount"),
|
|
151
|
+
balanceAfter: safeInteger(row.balance_after, "transaction.balance_after"),
|
|
152
|
+
transactionType: string(row.transaction_type, "transaction.transaction_type"),
|
|
153
|
+
gameId: nullableString(row.game_id, "transaction.game_id"),
|
|
154
|
+
source: string(row.source, "transaction.source"),
|
|
155
|
+
sourceId: nullableString(row.source_id, "transaction.source_id"),
|
|
156
|
+
metadata: jsonObject(row.metadata, "transaction.metadata"),
|
|
157
|
+
createdAt: string(row.created_at, "transaction.created_at"),
|
|
158
|
+
};
|
|
159
|
+
}),
|
|
160
|
+
nextCursor: encodeCursor(value.next_cursor),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export function mapLoginAvailable(raw) {
|
|
164
|
+
const value = record(raw, "login claim result");
|
|
165
|
+
const points = record(value.points, "login claim result.points");
|
|
166
|
+
if (value.ok !== true)
|
|
167
|
+
throw new GamePlatformError("INVALID_RESPONSE", "login claim result.ok must be true");
|
|
168
|
+
return {
|
|
169
|
+
apiVersion: 1,
|
|
170
|
+
ok: true,
|
|
171
|
+
claims: array(value.claims, "login claim result.claims").map(mapLoginClaim),
|
|
172
|
+
points: {
|
|
173
|
+
delta: safeInteger(points.delta, "login claim result.points.delta"),
|
|
174
|
+
balance: safeInteger(points.balance, "login claim result.points.balance"),
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
export function mapLoginSingle(raw) {
|
|
179
|
+
const value = record(raw, "login single claim result");
|
|
180
|
+
if (value.ok !== true)
|
|
181
|
+
throw new GamePlatformError("INVALID_RESPONSE", "login single claim result.ok must be true");
|
|
182
|
+
return { apiVersion: 1, ok: true, claim: mapLoginClaim(value.claim) };
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../src/internal/mappers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateApiVersion.d.ts","sourceRoot":"","sources":["../../src/internal/validateApiVersion.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI;IAAE,WAAW,EAAE,CAAC,CAAA;CAAE,CAYtF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { GAME_PLATFORM_API_VERSION } from "../types/api.js";
|
|
3
|
+
export function validateApiVersion(value) {
|
|
4
|
+
if (!value || typeof value !== "object" || !("api_version" in value)) {
|
|
5
|
+
throw new GamePlatformError("INVALID_RESPONSE", "RPC response is missing api_version");
|
|
6
|
+
}
|
|
7
|
+
const version = value.api_version;
|
|
8
|
+
if (version !== GAME_PLATFORM_API_VERSION) {
|
|
9
|
+
throw new GamePlatformError("API_VERSION_MISMATCH", `Unsupported Game Platform API version: ${String(version)}`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=validateApiVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateApiVersion.js","sourceRoot":"","sources":["../../src/internal/validateApiVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAA;IACxF,CAAC;IAED,MAAM,OAAO,GAAI,KAAmC,CAAC,WAAW,CAAA;IAChE,IAAI,OAAO,KAAK,yBAAyB,EAAE,CAAC;QAC1C,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,0CAA0C,MAAM,CAAC,OAAO,CAAC,EAAE,CAC5D,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import type { JsonObject } from "../types/api.js";
|
|
3
|
+
export type UnknownRecord = Record<string, unknown>;
|
|
4
|
+
export declare function record(value: unknown, label: string): UnknownRecord;
|
|
5
|
+
export declare function array(value: unknown, label: string): unknown[];
|
|
6
|
+
export declare function string(value: unknown, label: string): string;
|
|
7
|
+
export declare function nullableString(value: unknown, label: string): string | null;
|
|
8
|
+
export declare function boolean(value: unknown, label: string): boolean;
|
|
9
|
+
export declare function safeInteger(value: unknown, label: string): number;
|
|
10
|
+
export declare function nullableSafeInteger(value: unknown, label: string): number | null;
|
|
11
|
+
export declare function jsonObject(value: unknown, label: string): JsonObject;
|
|
12
|
+
export declare function literal<T extends string>(value: unknown, allowed: readonly T[], label: string): T;
|
|
13
|
+
export declare function invalid(message: string): GamePlatformError;
|
|
14
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/internal/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAKnE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAG9D;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAGpE;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EACtC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,CAAC,CAKH;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAE1D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
export function record(value, label) {
|
|
3
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
4
|
+
throw invalid(`${label} must be an object`);
|
|
5
|
+
}
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
export function array(value, label) {
|
|
9
|
+
if (!Array.isArray(value))
|
|
10
|
+
throw invalid(`${label} must be an array`);
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
export function string(value, label) {
|
|
14
|
+
if (typeof value !== "string")
|
|
15
|
+
throw invalid(`${label} must be a string`);
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
export function nullableString(value, label) {
|
|
19
|
+
if (value === null || value === undefined)
|
|
20
|
+
return null;
|
|
21
|
+
return string(value, label);
|
|
22
|
+
}
|
|
23
|
+
export function boolean(value, label) {
|
|
24
|
+
if (typeof value !== "boolean")
|
|
25
|
+
throw invalid(`${label} must be a boolean`);
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
export function safeInteger(value, label) {
|
|
29
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value)) {
|
|
30
|
+
throw invalid(`${label} must be a JavaScript safe integer`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
export function nullableSafeInteger(value, label) {
|
|
35
|
+
if (value === null || value === undefined)
|
|
36
|
+
return null;
|
|
37
|
+
return safeInteger(value, label);
|
|
38
|
+
}
|
|
39
|
+
export function jsonObject(value, label) {
|
|
40
|
+
if (value === null || value === undefined)
|
|
41
|
+
return {};
|
|
42
|
+
return record(value, label);
|
|
43
|
+
}
|
|
44
|
+
export function literal(value, allowed, label) {
|
|
45
|
+
if (typeof value !== "string" || !allowed.includes(value)) {
|
|
46
|
+
throw invalid(`${label} has an unsupported value`);
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
export function invalid(message) {
|
|
51
|
+
return new GamePlatformError("INVALID_RESPONSE", message);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/internal/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAKlE,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,OAAO,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,KAAsB,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACrE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,OAAO,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACzE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtD,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IAC3E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,KAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,CAAC,GAAG,KAAK,oCAAoC,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,KAAa;IAC/D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACtD,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc,EAAE,KAAa;IACtD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACpD,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAe,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAc,EACd,OAAqB,EACrB,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAU,CAAC,EAAE,CAAC;QAC/D,MAAM,OAAO,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { LoginBonusClaimResult } from "../types/loginBonus.js";
|
|
4
|
+
export declare function claimAvailableLoginBonuses(supabase: SupabaseRpcClient, gameId: string, writesEnabled: boolean, logger?: GamePlatformLogger): Promise<LoginBonusClaimResult>;
|
|
5
|
+
//# sourceMappingURL=claimAvailable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimAvailable.d.ts","sourceRoot":"","sources":["../../src/login-bonus/claimAvailable.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAIhC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
3
|
+
import { mapLoginAvailable } from "../internal/mappers.js";
|
|
4
|
+
export async function claimAvailableLoginBonuses(supabase, gameId, writesEnabled, logger) {
|
|
5
|
+
if (!writesEnabled)
|
|
6
|
+
throw new GamePlatformError("WRITE_DISABLED", "Game Platform writes are disabled");
|
|
7
|
+
const raw = await callRpc(supabase, "game_platform_v1_claim_login_bonuses", { p_game_id: gameId }, { logger });
|
|
8
|
+
return mapLoginAvailable(raw);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=claimAvailable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimAvailable.js","sourceRoot":"","sources":["../../src/login-bonus/claimAvailable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAI1D,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,QAA2B,EAC3B,MAAc,EACd,aAAsB,EACtB,MAA2B;IAE3B,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,mCAAmC,CAAC,CAAA;IACtG,MAAM,GAAG,GAAG,MAAM,OAAO,CAAU,QAAQ,EAAE,sCAAsC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACvH,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { LoginBonusSingleClaimResult } from "../types/loginBonus.js";
|
|
4
|
+
export declare function claimLoginBonusProgram(supabase: SupabaseRpcClient, gameId: string, programId: string, writesEnabled: boolean, logger?: GamePlatformLogger): Promise<LoginBonusSingleClaimResult>;
|
|
5
|
+
//# sourceMappingURL=claimProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimProgram.d.ts","sourceRoot":"","sources":["../../src/login-bonus/claimProgram.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAEzE,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,OAAO,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,2BAA2B,CAAC,CAUtC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
3
|
+
import { mapLoginSingle } from "../internal/mappers.js";
|
|
4
|
+
export async function claimLoginBonusProgram(supabase, gameId, programId, writesEnabled, logger) {
|
|
5
|
+
if (!writesEnabled)
|
|
6
|
+
throw new GamePlatformError("WRITE_DISABLED", "Game Platform writes are disabled");
|
|
7
|
+
if (!programId.trim())
|
|
8
|
+
throw new GamePlatformError("LOGIN_PROGRAM_NOT_FOUND", "programId is required");
|
|
9
|
+
const raw = await callRpc(supabase, "game_platform_v1_claim_login_bonus", { p_game_id: gameId, p_program_id: programId }, { logger });
|
|
10
|
+
return mapLoginSingle(raw);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=claimProgram.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimProgram.js","sourceRoot":"","sources":["../../src/login-bonus/claimProgram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAIvD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAA2B,EAC3B,MAAc,EACd,SAAiB,EACjB,aAAsB,EACtB,MAA2B;IAE3B,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,mCAAmC,CAAC,CAAA;IACtG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAA;IACtG,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,QAAQ,EACR,oCAAoC,EACpC,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,EAC9C,EAAE,MAAM,EAAE,CACX,CAAA;IACD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { LoginBonusStatus } from "../types/loginBonus.js";
|
|
4
|
+
export declare function getLoginBonusStatus(supabase: SupabaseRpcClient, gameId: string, logger?: GamePlatformLogger): Promise<LoginBonusStatus>;
|
|
5
|
+
//# sourceMappingURL=getStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStatus.d.ts","sourceRoot":"","sources":["../../src/login-bonus/getStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAGxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
2
|
+
import { mapLoginStatus } from "../internal/mappers.js";
|
|
3
|
+
import { record } from "../internal/validators.js";
|
|
4
|
+
export async function getLoginBonusStatus(supabase, gameId, logger) {
|
|
5
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_login_bonus_status", { p_game_id: gameId }, { logger });
|
|
6
|
+
return mapLoginStatus(record(raw, "login bonus response").login_bonus);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getStatus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStatus.js","sourceRoot":"","sources":["../../src/login-bonus/getStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIlD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAA2B,EAC3B,MAAc,EACd,MAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAU,QAAQ,EAAE,yCAAyC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1H,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { PointAccount } from "../types/point.js";
|
|
4
|
+
export declare function getPointAccount(supabase: SupabaseRpcClient, logger?: GamePlatformLogger): Promise<PointAccount>;
|
|
5
|
+
//# sourceMappingURL=getAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccount.d.ts","sourceRoot":"","sources":["../../src/points/getAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAGxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAGvB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
2
|
+
import { mapPointAccount } from "../internal/mappers.js";
|
|
3
|
+
import { record } from "../internal/validators.js";
|
|
4
|
+
export async function getPointAccount(supabase, logger) {
|
|
5
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_point_account", undefined, { logger });
|
|
6
|
+
return mapPointAccount(record(raw, "point account response").account);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccount.js","sourceRoot":"","sources":["../../src/points/getAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIlD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA2B,EAC3B,MAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAU,QAAQ,EAAE,oCAAoC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACzG,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAA;AACvE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { ListTransactionsOptions, PointTransactionPage } from "../types/point.js";
|
|
4
|
+
export declare function listTransactions(supabase: SupabaseRpcClient, options?: ListTransactionsOptions, logger?: GamePlatformLogger): Promise<PointTransactionPage>;
|
|
5
|
+
//# sourceMappingURL=listTransactions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listTransactions.d.ts","sourceRoot":"","sources":["../../src/points/listTransactions.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAEtF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,uBAA4B,EACrC,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAkB/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
3
|
+
import { decodeCursor, mapTransactionPage } from "../internal/mappers.js";
|
|
4
|
+
export async function listTransactions(supabase, options = {}, logger) {
|
|
5
|
+
const limit = options.limit ?? 30;
|
|
6
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > 100) {
|
|
7
|
+
throw new GamePlatformError("INVALID_ARGUMENT", "Transaction limit must be an integer between 1 and 100");
|
|
8
|
+
}
|
|
9
|
+
const cursor = decodeCursor(options.cursor);
|
|
10
|
+
const raw = await callRpc(supabase, "game_platform_v1_list_transactions", {
|
|
11
|
+
p_limit: limit,
|
|
12
|
+
p_before_created_at: cursor?.created_at ?? null,
|
|
13
|
+
p_before_id: cursor?.id ?? null,
|
|
14
|
+
}, { logger });
|
|
15
|
+
return mapTransactionPage(raw);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=listTransactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listTransactions.js","sourceRoot":"","sources":["../../src/points/listTransactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAIzE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA2B,EAC3B,UAAmC,EAAE,EACrC,MAA2B;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QACzD,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,wDAAwD,CAAC,CAAA;IAC3G,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,QAAQ,EACR,oCAAoC,EACpC;QACE,OAAO,EAAE,KAAK;QACd,mBAAmB,EAAE,MAAM,EAAE,UAAU,IAAI,IAAI;QAC/C,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI;KAChC,EACD,EAAE,MAAM,EAAE,CACX,CAAA;IACD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
|
+
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
+
import type { GamePlatformState } from "../types/state.js";
|
|
4
|
+
export declare function getState(supabase: SupabaseRpcClient, gameId: string, logger?: GamePlatformLogger): Promise<GamePlatformState>;
|
|
5
|
+
//# sourceMappingURL=getState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getState.d.ts","sourceRoot":"","sources":["../../src/state/getState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAG5B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { callRpc } from "../internal/callRpc.js";
|
|
2
|
+
import { mapState } from "../internal/mappers.js";
|
|
3
|
+
export async function getState(supabase, gameId, logger) {
|
|
4
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_state", { p_game_id: gameId }, { logger });
|
|
5
|
+
return mapState(raw);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=getState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getState.js","sourceRoot":"","sources":["../../src/state/getState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAIjD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAA2B,EAC3B,MAAc,EACd,MAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAU,QAAQ,EAAE,4BAA4B,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7G,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type AchievementState = {
|
|
2
|
+
id: string;
|
|
3
|
+
gameId: string | null;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string | null;
|
|
6
|
+
category: string;
|
|
7
|
+
progress: number;
|
|
8
|
+
targetValue: number;
|
|
9
|
+
unlocked: boolean;
|
|
10
|
+
unlockedAt: string | null;
|
|
11
|
+
rewardPoints: number;
|
|
12
|
+
hidden: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type AchievementProgress = {
|
|
15
|
+
achievementId: string;
|
|
16
|
+
progress: number;
|
|
17
|
+
targetValue: number;
|
|
18
|
+
unlocked: boolean;
|
|
19
|
+
newlyUnlocked: boolean;
|
|
20
|
+
rewardPoints: number;
|
|
21
|
+
balance: number | null;
|
|
22
|
+
};
|
|
23
|
+
export type AchievementUnlocked = AchievementProgress;
|
|
24
|
+
//# sourceMappingURL=achievement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"achievement.d.ts","sourceRoot":"","sources":["../../src/types/achievement.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"achievement.js","sourceRoot":"","sources":["../../src/types/achievement.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const GAME_PLATFORM_API_VERSION: 1;
|
|
2
|
+
export type GamePlatformApiVersion = typeof GAME_PLATFORM_API_VERSION;
|
|
3
|
+
export type Json = string | number | boolean | null | {
|
|
4
|
+
[key: string]: Json | undefined;
|
|
5
|
+
} | Json[];
|
|
6
|
+
export type JsonObject = Record<string, Json | undefined>;
|
|
7
|
+
export type GamePlatformLogger = {
|
|
8
|
+
debug?: (message: string, context?: Record<string, unknown>) => void;
|
|
9
|
+
warn?: (message: string, context?: Record<string, unknown>) => void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,EAAG,CAAU,CAAA;AAEnD,MAAM,MAAM,sBAAsB,GAAG,OAAO,yBAAyB,CAAA;AAErE,MAAM,MAAM,IAAI,GACZ,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACnC,IAAI,EAAE,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACpE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACpE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AchievementProgress, AchievementUnlocked } from "./achievement.js";
|
|
2
|
+
import type { JsonObject } from "./api.js";
|
|
3
|
+
export type EventSpec = {
|
|
4
|
+
value?: number | never;
|
|
5
|
+
metadata?: JsonObject | never;
|
|
6
|
+
};
|
|
7
|
+
export type EventMap = Record<string, EventSpec>;
|
|
8
|
+
type PropertyInput<T extends EventSpec, K extends "value" | "metadata", Fallback> = K extends keyof T ? {} extends Pick<T, K> ? {
|
|
9
|
+
[P in K]?: Exclude<T[P], undefined>;
|
|
10
|
+
} : [T[K]] extends [never] ? {
|
|
11
|
+
[P in K]?: never;
|
|
12
|
+
} : {
|
|
13
|
+
[P in K]: T[K];
|
|
14
|
+
} : {
|
|
15
|
+
[P in K]?: Fallback;
|
|
16
|
+
};
|
|
17
|
+
export type EmitEventInputFor<TEvents extends EventMap, TType extends keyof TEvents & string> = {
|
|
18
|
+
type: TType;
|
|
19
|
+
sourceId?: string;
|
|
20
|
+
idempotencyKey?: string;
|
|
21
|
+
} & PropertyInput<TEvents[TType], "value", number> & PropertyInput<TEvents[TType], "metadata", JsonObject>;
|
|
22
|
+
export type DefaultEventMap = Record<string, {
|
|
23
|
+
value?: number;
|
|
24
|
+
metadata?: JsonObject;
|
|
25
|
+
}>;
|
|
26
|
+
export type EventResult = {
|
|
27
|
+
apiVersion: 1;
|
|
28
|
+
ok: true;
|
|
29
|
+
duplicate: boolean;
|
|
30
|
+
event: {
|
|
31
|
+
id: string;
|
|
32
|
+
gameId: string;
|
|
33
|
+
type: string;
|
|
34
|
+
origin: "client" | "trusted";
|
|
35
|
+
};
|
|
36
|
+
points: {
|
|
37
|
+
delta: number;
|
|
38
|
+
balance: number;
|
|
39
|
+
};
|
|
40
|
+
achievements: {
|
|
41
|
+
updated: AchievementProgress[];
|
|
42
|
+
unlocked: AchievementUnlocked[];
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=event.d.ts.map
|