zuburi-game-platform 0.1.3 → 0.2.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 +74 -103
- package/dist/achievements/listAchievements.d.ts.map +1 -1
- package/dist/achievements/listAchievements.js +1 -1
- package/dist/achievements/listAchievements.js.map +1 -1
- package/dist/client/createGamePlatformClient.d.ts +1 -2
- package/dist/client/createGamePlatformClient.d.ts.map +1 -1
- package/dist/client/createGamePlatformClient.js.map +1 -1
- package/dist/client/types.d.ts +3 -3
- package/dist/client/types.d.ts.map +1 -1
- package/dist/errors/GamePlatformError.d.ts +1 -1
- package/dist/errors/GamePlatformError.d.ts.map +1 -1
- package/dist/errors/GamePlatformError.js.map +1 -1
- package/dist/errors/normalizeError.d.ts.map +1 -1
- package/dist/errors/normalizeError.js +0 -1
- package/dist/errors/normalizeError.js.map +1 -1
- package/dist/events/emitEvent.d.ts +2 -2
- package/dist/events/emitEvent.d.ts.map +1 -1
- package/dist/events/emitEvent.js +4 -4
- package/dist/events/emitEvent.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/callRpc.js +1 -1
- package/dist/internal/mappers.d.ts +1 -1
- package/dist/internal/mappers.d.ts.map +1 -1
- package/dist/internal/mappers.js +2 -3
- package/dist/internal/mappers.js.map +1 -1
- package/dist/login-bonus/getStatus.d.ts.map +1 -1
- package/dist/login-bonus/getStatus.js +1 -1
- package/dist/login-bonus/getStatus.js.map +1 -1
- package/dist/points/getAccount.d.ts.map +1 -1
- package/dist/points/getAccount.js +1 -1
- package/dist/points/getAccount.js.map +1 -1
- package/dist/state/getState.d.ts.map +1 -1
- package/dist/state/getState.js +1 -1
- package/dist/state/getState.js.map +1 -1
- package/dist/types/event.d.ts +38 -14
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/event.js +9 -1
- package/dist/types/event.js.map +1 -1
- package/package.json +2 -2
- package/dist/events/idempotency.d.ts +0 -2
- package/dist/events/idempotency.d.ts.map +0 -1
- package/dist/events/idempotency.js +0 -14
- package/dist/events/idempotency.js.map +0 -1
- package/dist/points/listTransactions.d.ts +0 -5
- package/dist/points/listTransactions.d.ts.map +0 -1
- package/dist/points/listTransactions.js +0 -17
- package/dist/points/listTransactions.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,120 +1,118 @@
|
|
|
1
1
|
# zuburi-game-platform
|
|
2
2
|
|
|
3
|
-
ZUBURI のゲームから ZUBURI Game Platform
|
|
4
|
-
|
|
5
|
-
このパッケージは **npmjs.org の public package** として配布します。リポジトリ全体ではなく、`packages/game-platform` の内容だけが publish 対象です。
|
|
6
|
-
|
|
7
|
-
## Package
|
|
8
|
-
|
|
9
|
-
```text
|
|
10
|
-
Package: zuburi-game-platform
|
|
11
|
-
Registry: https://registry.npmjs.org/
|
|
12
|
-
```
|
|
3
|
+
ZUBURI のゲームから ZUBURI Game Platform を利用するための React 非依存 TypeScript SDK です。
|
|
13
4
|
|
|
14
5
|
## Install
|
|
15
6
|
|
|
16
|
-
GitHub Packages 用の `.npmrc` や GitHub 認証は不要です。
|
|
17
|
-
|
|
18
7
|
```bash
|
|
19
8
|
pnpm add zuburi-game-platform @supabase/supabase-js
|
|
20
9
|
```
|
|
21
10
|
|
|
22
|
-
npm / yarn など、npm registry を利用できる別の package manager からも通常どおり install できます。
|
|
23
|
-
|
|
24
11
|
## Basic usage
|
|
25
12
|
|
|
26
|
-
SDK は Supabase Client を生成しません。ゲームが既に利用している、ログイン Session 付きの Client を注入します。
|
|
27
|
-
|
|
28
13
|
```ts
|
|
29
|
-
import { createGamePlatformClient } from 'zuburi-game-platform'
|
|
30
|
-
import { supabase } from '../lib/supabase'
|
|
14
|
+
import { createGamePlatformClient } from 'zuburi-game-platform'
|
|
15
|
+
import { supabase } from '../lib/supabase'
|
|
31
16
|
|
|
32
17
|
export const platform = createGamePlatformClient({
|
|
33
18
|
supabase,
|
|
34
19
|
gameId: 'coffee_roaster',
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
const state = await platform.getState();
|
|
38
|
-
const account = await platform.points.getAccount();
|
|
39
|
-
const achievements = await platform.achievements.list();
|
|
20
|
+
})
|
|
40
21
|
```
|
|
41
22
|
|
|
42
|
-
|
|
23
|
+
SDK は Supabase Client を生成しません。`service_role` / Secret key / `userId` は渡しません。
|
|
43
24
|
|
|
44
|
-
##
|
|
25
|
+
## Storage policy
|
|
45
26
|
|
|
46
|
-
|
|
27
|
+
Game Platform は履歴を蓄積せず、現在状態を保持する state-first 構成です。
|
|
47
28
|
|
|
48
|
-
|
|
49
|
-
await platform.events.emit({
|
|
50
|
-
type: 'tutorial_completed',
|
|
51
|
-
sourceId: 'tutorial:v1',
|
|
52
|
-
});
|
|
53
|
-
```
|
|
29
|
+
保持する主な値:
|
|
54
30
|
|
|
55
|
-
|
|
31
|
+
- ポイント現在残高・累積獲得・累積消費
|
|
32
|
+
- 実績進捗・解除状態
|
|
33
|
+
- ログインボーナス現在状態
|
|
34
|
+
- 各ゲームの必要な集計値
|
|
35
|
+
|
|
36
|
+
イベント履歴、ポイント増減履歴、開封履歴などは原則保存しません。
|
|
37
|
+
|
|
38
|
+
詳細: [`../../docs/STATE_FIRST_STORAGE_POLICY.md`](../../docs/STATE_FIRST_STORAGE_POLICY.md)
|
|
39
|
+
|
|
40
|
+
## Client events
|
|
41
|
+
|
|
42
|
+
ゲームから送信できるイベントは Platform 標準の4種類だけです。
|
|
56
43
|
|
|
57
44
|
```text
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
game_started
|
|
46
|
+
ゲーム開始
|
|
60
47
|
|
|
61
|
-
|
|
48
|
+
game_finished
|
|
49
|
+
ゲーム終了。value に最終スコアを付けてもよい
|
|
62
50
|
|
|
63
|
-
|
|
51
|
+
personal_best_updated
|
|
52
|
+
自己ベスト更新。value 必須
|
|
53
|
+
|
|
54
|
+
item_obtained
|
|
55
|
+
アイテム獲得。metadata.itemId 必須、quantity は任意
|
|
56
|
+
```
|
|
64
57
|
|
|
65
58
|
```ts
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
59
|
+
import { PLATFORM_EVENTS } from 'zuburi-game-platform'
|
|
60
|
+
|
|
61
|
+
await platform.events.emit({
|
|
62
|
+
type: PLATFORM_EVENTS.GAME_FINISHED,
|
|
63
|
+
sourceId: 'run:123',
|
|
64
|
+
value: 85,
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
await platform.events.emit({
|
|
68
|
+
type: PLATFORM_EVENTS.PERSONAL_BEST_UPDATED,
|
|
69
|
+
value: 120,
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
await platform.events.emit({
|
|
73
|
+
type: PLATFORM_EVENTS.ITEM_OBTAINED,
|
|
74
|
+
metadata: {
|
|
75
|
+
itemId: 'golden-bean',
|
|
76
|
+
quantity: 1,
|
|
77
|
+
},
|
|
78
|
+
})
|
|
84
79
|
```
|
|
85
80
|
|
|
86
|
-
|
|
81
|
+
独自 EventMap をゲーム側から追加する API はありません。TypeScript の型を回避して任意文字列を渡しても SDK が送信前に拒否します。
|
|
82
|
+
|
|
83
|
+
`sourceId` は Event Definition で必要な場合の識別情報です。イベントはDBへ永続保存されません。
|
|
84
|
+
|
|
85
|
+
永続イベント行による idempotency 管理を行わないため、SDKは**書き込みRPCを自動リトライしません**。読み取りRPCのみ一時エラー時に最大1回リトライします。
|
|
87
86
|
|
|
88
87
|
## Points
|
|
89
88
|
|
|
90
89
|
```ts
|
|
91
|
-
const account = await platform.points.getAccount()
|
|
90
|
+
const account = await platform.points.getAccount()
|
|
91
|
+
|
|
92
|
+
account.balance
|
|
93
|
+
account.lifetimeEarned
|
|
94
|
+
account.lifetimeSpent
|
|
92
95
|
```
|
|
93
96
|
|
|
94
|
-
|
|
97
|
+
ポイント履歴取得、`points.add()`、`points.set()` はありません。
|
|
95
98
|
|
|
96
99
|
## Achievements
|
|
97
100
|
|
|
98
101
|
```ts
|
|
99
|
-
const achievements = await platform.achievements.list()
|
|
102
|
+
const achievements = await platform.achievements.list()
|
|
100
103
|
```
|
|
101
104
|
|
|
102
|
-
|
|
105
|
+
進捗・解除判定・報酬付与は Backend が行います。
|
|
103
106
|
|
|
104
107
|
## Login bonus
|
|
105
108
|
|
|
106
109
|
```ts
|
|
107
|
-
const status = await platform.loginBonus.getStatus()
|
|
108
|
-
const result = await platform.loginBonus.claimAvailable()
|
|
110
|
+
const status = await platform.loginBonus.getStatus()
|
|
111
|
+
const result = await platform.loginBonus.claimAvailable()
|
|
112
|
+
await platform.loginBonus.claimProgram('summer_campaign_2026')
|
|
109
113
|
```
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
```ts
|
|
114
|
-
await platform.loginBonus.claimProgram('summer_campaign_2026');
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
`claimAvailable()` は Backend が現在有効な Standard と Campaign を選択します。ゲーム固有 Standard がある場合は Global Standard より優先されます。
|
|
115
|
+
受取履歴を毎回追加せず、ユーザー・プログラムごとの現在状態を更新します。
|
|
118
116
|
|
|
119
117
|
## Development write guard
|
|
120
118
|
|
|
@@ -123,10 +121,10 @@ const platform = createGamePlatformClient({
|
|
|
123
121
|
supabase,
|
|
124
122
|
gameId: 'coffee_roaster',
|
|
125
123
|
writesEnabled: import.meta.env.VITE_DEVELOPMENT_MODE !== 'true',
|
|
126
|
-
})
|
|
124
|
+
})
|
|
127
125
|
```
|
|
128
126
|
|
|
129
|
-
`writesEnabled=false` の場合、Event送信とLogin Bonus claimは `WRITE_DISABLED`
|
|
127
|
+
`writesEnabled=false` の場合、Event送信とLogin Bonus claimは `WRITE_DISABLED` になります。
|
|
130
128
|
|
|
131
129
|
## Security boundary
|
|
132
130
|
|
|
@@ -135,52 +133,25 @@ SDKは意図的に以下を提供しません。
|
|
|
135
133
|
```text
|
|
136
134
|
points.add()
|
|
137
135
|
points.set()
|
|
136
|
+
points.listTransactions()
|
|
138
137
|
achievements.unlock()
|
|
139
138
|
achievements.setProgress()
|
|
140
139
|
events.emitTrusted()
|
|
141
140
|
```
|
|
142
141
|
|
|
143
|
-
|
|
142
|
+
スコア・勝敗など改変耐性が必要な処理はゲーム固有RPCで検証してください。
|
|
144
143
|
|
|
145
144
|
## Repository development
|
|
146
145
|
|
|
147
|
-
この monorepo は pnpm workspace を使用します。repository root で実行してください。
|
|
148
|
-
|
|
149
146
|
```bash
|
|
150
147
|
pnpm install
|
|
151
148
|
pnpm check
|
|
152
149
|
```
|
|
153
150
|
|
|
154
|
-
|
|
151
|
+
SDK build は `dist` を削除してから生成します。
|
|
155
152
|
|
|
156
153
|
## Publishing
|
|
157
154
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
`main` へ commit / push すると `Release Game Platform SDK` GitHub Action が自動で起動し、必要なら patch version を +1 したうえで、GitHub Actions 上で次を実行します。
|
|
161
|
-
|
|
162
|
-
```text
|
|
163
|
-
pnpm install
|
|
164
|
-
pnpm run release
|
|
165
|
-
npm pack --dry-run
|
|
166
|
-
version / dist / release-build.json の自動 commit
|
|
167
|
-
tag 作成
|
|
168
|
-
npmjs.org publish
|
|
169
|
-
GitHub Release 作成
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
release 用 bot commit は次の形式です。
|
|
173
|
-
|
|
174
|
-
```text
|
|
175
|
-
chore(release): zuburi-game-platform v0.1.1 [skip ci]
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
失敗途中の release を手動再実行した場合、現在の release tag が main HEAD を指していれば同じ version を再利用します。
|
|
179
|
-
|
|
180
|
-
手動再実行は GitHub の Actions → `Release Game Platform SDK` → `Run workflow` から行えます。
|
|
181
|
-
|
|
182
|
-
詳細は [`../../docs/PUBLISHING.md`](../../docs/PUBLISHING.md) を参照してください。
|
|
183
|
-
|
|
184
|
-
## Supported backend
|
|
155
|
+
`main` への変更は既存の Release workflow の対象です。
|
|
185
156
|
|
|
186
|
-
|
|
157
|
+
詳細: [`../../docs/PUBLISHING.md`](../../docs/PUBLISHING.md)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listAchievements.d.ts","sourceRoot":"","sources":["../../src/achievements/listAchievements.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,yBAAyB,CAAA;AAE/D,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"listAchievements.d.ts","sourceRoot":"","sources":["../../src/achievements/listAchievements.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,yBAAyB,CAAA;AAE/D,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQ7B"}
|
|
@@ -2,7 +2,7 @@ import { callRpc } from "../internal/callRpc.js";
|
|
|
2
2
|
import { mapAchievementState } from "../internal/mappers.js";
|
|
3
3
|
import { array, record } from "../internal/validators.js";
|
|
4
4
|
export async function listAchievements(supabase, gameId, logger) {
|
|
5
|
-
const raw = await callRpc(supabase, "game_platform_v1_list_achievements", { p_game_id: gameId }, { logger });
|
|
5
|
+
const raw = await callRpc(supabase, "game_platform_v1_list_achievements", { p_game_id: gameId }, { logger, retries: 1 });
|
|
6
6
|
return array(record(raw, "achievement response").items, "achievement response.items").map(mapAchievementState);
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=listAchievements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listAchievements.js","sourceRoot":"","sources":["../../src/achievements/listAchievements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIzD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA2B,EAC3B,MAAc,EACd,MAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"listAchievements.js","sourceRoot":"","sources":["../../src/achievements/listAchievements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIzD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAA2B,EAC3B,MAAc,EACd,MAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,QAAQ,EACR,oCAAoC,EACpC,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CACvB,CAAA;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAChH,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { EventMap, DefaultEventMap } from "../types/event.js";
|
|
2
1
|
import type { CreateGamePlatformClientOptions, GamePlatformClient } from "./types.js";
|
|
3
|
-
export declare function createGamePlatformClient
|
|
2
|
+
export declare function createGamePlatformClient(options: CreateGamePlatformClientOptions): GamePlatformClient;
|
|
4
3
|
//# sourceMappingURL=createGamePlatformClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGamePlatformClient.d.ts","sourceRoot":"","sources":["../../src/client/createGamePlatformClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createGamePlatformClient.d.ts","sourceRoot":"","sources":["../../src/client/createGamePlatformClient.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAErF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,GAAG,kBAAkB,CA2BrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGamePlatformClient.js","sourceRoot":"","sources":["../../src/client/createGamePlatformClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C,MAAM,UAAU,wBAAwB,
|
|
1
|
+
{"version":3,"file":"createGamePlatformClient.js","sourceRoot":"","sources":["../../src/client/createGamePlatformClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAI/C,MAAM,UAAU,wBAAwB,CAAC,OAAwC;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACpC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;IAEhF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAwC,CAAA;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAA;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM;QACN,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QAClD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAkC,KAA+B,EAAE,EAAE,CACzE,SAAS,CAAQ,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC;SACnE,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,UAAU,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC;SACpD,CAAC;QACF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SACvD,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,SAAS,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YAC9D,cAAc,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;YACzF,YAAY,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;SAChH,CAAC;KACH,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GamePlatformLogger } from "../types/api.js";
|
|
2
2
|
import type { AchievementState } from "../types/achievement.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { EmitEventInputFor, EventResult, PlatformEventType } from "../types/event.js";
|
|
4
4
|
import type { LoginBonusClaimResult, LoginBonusSingleClaimResult, LoginBonusStatus } from "../types/loginBonus.js";
|
|
5
5
|
import type { PointAccount } from "../types/point.js";
|
|
6
6
|
import type { GamePlatformState } from "../types/state.js";
|
|
@@ -13,11 +13,11 @@ export type CreateGamePlatformClientOptions = {
|
|
|
13
13
|
writesEnabled?: boolean;
|
|
14
14
|
logger?: GamePlatformLogger;
|
|
15
15
|
};
|
|
16
|
-
export type GamePlatformClient
|
|
16
|
+
export type GamePlatformClient = {
|
|
17
17
|
readonly gameId: string;
|
|
18
18
|
getState: () => Promise<GamePlatformState>;
|
|
19
19
|
events: {
|
|
20
|
-
emit: <TType extends
|
|
20
|
+
emit: <TType extends PlatformEventType>(input: EmitEventInputFor<TType>) => Promise<EventResult>;
|
|
21
21
|
};
|
|
22
22
|
points: {
|
|
23
23
|
getAccount: () => Promise<PointAccount>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAClH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC1C,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,KAAK,SAAS,iBAAiB,EACpC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAC5B,OAAO,CAAC,WAAW,CAAC,CAAA;KAC1B,CAAA;IACD,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAA;KACxC,CAAA;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;KACxC,CAAA;IACD,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAC1C,cAAc,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACpD,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAA;KAC1E,CAAA;CACF,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type GamePlatformErrorCode = "AUTH_REQUIRED" | "PROFILE_REQUIRED" | "GAME_NOT_FOUND" | "GAME_INACTIVE" | "EVENT_NOT_FOUND" | "EVENT_NOT_ALLOWED" | "SOURCE_ID_REQUIRED" | "INVALID_EVENT_VALUE" | "INVALID_METADATA" | "
|
|
1
|
+
export type GamePlatformErrorCode = "AUTH_REQUIRED" | "PROFILE_REQUIRED" | "GAME_NOT_FOUND" | "GAME_INACTIVE" | "EVENT_NOT_FOUND" | "EVENT_NOT_ALLOWED" | "SOURCE_ID_REQUIRED" | "INVALID_EVENT_VALUE" | "INVALID_METADATA" | "LOGIN_PROGRAM_NOT_FOUND" | "LOGIN_PROGRAM_NOT_ELIGIBLE" | "NETWORK_ERROR" | "RPC_ERROR" | "INVALID_RESPONSE" | "INVALID_ARGUMENT" | "API_VERSION_MISMATCH" | "WRITE_DISABLED";
|
|
2
2
|
export declare class GamePlatformError extends Error {
|
|
3
3
|
readonly code: GamePlatformErrorCode;
|
|
4
4
|
readonly retryable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamePlatformError.d.ts","sourceRoot":"","sources":["../../src/errors/GamePlatformError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,
|
|
1
|
+
{"version":3,"file":"GamePlatformError.d.ts","sourceRoot":"","sources":["../../src/errors/GamePlatformError.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,kBAAkB,GAClB,yBAAyB,GACzB,4BAA4B,GAC5B,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,CAAA;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAA;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,SAAkB,KAAK,EAAE,OAAO,CAAA;gBAG9B,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAQzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamePlatformError.js","sourceRoot":"","sources":["../../src/errors/GamePlatformError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GamePlatformError.js","sourceRoot":"","sources":["../../src/errors/GamePlatformError.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAuB;IAC3B,SAAS,CAAS;IACT,KAAK,CAAS;IAEhC,YACE,IAA2B,EAC3B,OAAe,EACf,UAAoD,EAAE;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAA;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC5B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeError.d.ts","sourceRoot":"","sources":["../../src/errors/normalizeError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"normalizeError.d.ts","sourceRoot":"","sources":["../../src/errors/normalizeError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAA;AAqDtF,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAwBhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeError.js","sourceRoot":"","sources":["../../src/errors/normalizeError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAA;AAEtF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAwB;IACpD,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,
|
|
1
|
+
{"version":3,"file":"normalizeError.js","sourceRoot":"","sources":["../../src/errors/normalizeError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,wBAAwB,CAAA;AAEtF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAwB;IACpD,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,yBAAyB;IACzB,4BAA4B;CAC7B,CAAC,CAAA;AASF,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAA;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,MAAM,OAAO,GAAI,KAAsB,CAAC,OAAO,CAAA;QAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAA;IACjD,CAAC;IACD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,OAAe;IAC1D,IAAI,KAAK,YAAY,SAAS,IAAI,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/F,OAAO,wFAAwF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC/G,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACrD,MAAM,IAAI,GAAI,KAAsB,CAAC,IAAI,CAAA;IACzC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,iBAAiB;QAAE,OAAO,KAAK,CAAA;IAEpD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,IAAI,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,iBAAiB,CAAC,eAAe,EAAE,OAAO,EAAE;YACrD,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE;YACjD,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SupabaseRpcClient } from "../internal/callRpc.js";
|
|
2
2
|
import type { GamePlatformLogger } from "../types/api.js";
|
|
3
|
-
import type
|
|
4
|
-
export declare function emitEvent<
|
|
3
|
+
import { type EmitEventInputFor, type EventResult, type PlatformEventType } from "../types/event.js";
|
|
4
|
+
export declare function emitEvent<TType extends PlatformEventType>(supabase: SupabaseRpcClient, gameId: string, writesEnabled: boolean, input: EmitEventInputFor<TType>, logger?: GamePlatformLogger): Promise<EventResult>;
|
|
5
5
|
//# sourceMappingURL=emitEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitEvent.d.ts","sourceRoot":"","sources":["../../src/events/emitEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"emitEvent.d.ts","sourceRoot":"","sources":["../../src/events/emitEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAExE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAuB,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEzH,wBAAsB,SAAS,CAAC,KAAK,SAAS,iBAAiB,EAC7D,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAC/B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CA2BtB"}
|
package/dist/events/emitEvent.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
2
|
import { callRpc } from "../internal/callRpc.js";
|
|
3
3
|
import { mapEventResult } from "../internal/mappers.js";
|
|
4
|
-
import {
|
|
4
|
+
import { isPlatformEventType } from "../types/event.js";
|
|
5
5
|
export async function emitEvent(supabase, gameId, writesEnabled, input, logger) {
|
|
6
6
|
if (!writesEnabled) {
|
|
7
7
|
throw new GamePlatformError("WRITE_DISABLED", "Game Platform writes are disabled");
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
if (!isPlatformEventType(input.type)) {
|
|
10
|
+
throw new GamePlatformError("INVALID_ARGUMENT", `Unsupported platform event type: ${String(input.type)}`);
|
|
11
|
+
}
|
|
10
12
|
const raw = await callRpc(supabase, "game_platform_v1_emit_event", {
|
|
11
13
|
p_game_id: gameId,
|
|
12
14
|
p_event_type: input.type,
|
|
13
15
|
p_value: "value" in input ? input.value ?? null : null,
|
|
14
16
|
p_source_id: "sourceId" in input ? input.sourceId ?? null : null,
|
|
15
|
-
p_idempotency_key: idempotencyKey,
|
|
16
17
|
p_metadata: "metadata" in input ? input.metadata ?? {} : {},
|
|
17
18
|
}, { logger });
|
|
18
19
|
const result = mapEventResult(raw);
|
|
19
20
|
logger?.debug?.("Game Platform event processed", {
|
|
20
21
|
eventType: input.type,
|
|
21
|
-
duplicate: result.duplicate,
|
|
22
22
|
});
|
|
23
23
|
return result;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitEvent.js","sourceRoot":"","sources":["../../src/events/emitEvent.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;
|
|
1
|
+
{"version":3,"file":"emitEvent.js","sourceRoot":"","sources":["../../src/events/emitEvent.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;AAEvD,OAAO,EAAE,mBAAmB,EAAoE,MAAM,mBAAmB,CAAA;AAEzH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAA2B,EAC3B,MAAc,EACd,aAAsB,EACtB,KAA+B,EAC/B,MAA2B;IAE3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,iBAAiB,CAAC,gBAAgB,EAAE,mCAAmC,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,oCAAoC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3G,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,QAAQ,EACR,6BAA6B,EAC7B;QACE,SAAS,EAAE,MAAM;QACjB,YAAY,EAAE,KAAK,CAAC,IAAI;QACxB,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;QACtD,WAAW,EAAE,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;QAChE,UAAU,EAAE,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;KAC5D,EACD,EAAE,MAAM,EAAE,CACX,CAAA;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IAClC,MAAM,EAAE,KAAK,EAAE,CAAC,+BAA+B,EAAE;QAC/C,SAAS,EAAE,KAAK,CAAC,IAAI;KACtB,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export { GamePlatformError } from "./errors/GamePlatformError.js";
|
|
|
4
4
|
export type { GamePlatformErrorCode } from "./errors/GamePlatformError.js";
|
|
5
5
|
export type { GamePlatformLogger, Json, JsonObject } from "./types/api.js";
|
|
6
6
|
export type { AchievementProgress, AchievementState, AchievementUnlocked } from "./types/achievement.js";
|
|
7
|
-
export
|
|
7
|
+
export { PLATFORM_EVENTS, isPlatformEventType } from "./types/event.js";
|
|
8
|
+
export type { EmitEventInputFor, EmitPlatformEventInput, EventResult, PlatformEventMap, PlatformEventType } from "./types/event.js";
|
|
8
9
|
export type { LoginBonusClaim, LoginBonusClaimResult, LoginBonusProgramState, LoginBonusSingleClaimResult, LoginBonusStatus } from "./types/loginBonus.js";
|
|
9
10
|
export type { PointAccount } from "./types/point.js";
|
|
10
11
|
export type { GamePlatformState } from "./types/state.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,YAAY,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEhH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAE1E,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACxG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,YAAY,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEhH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAE1E,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC1E,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACvE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACnI,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC1J,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAKjE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA"}
|
package/dist/internal/callRpc.js
CHANGED
|
@@ -3,7 +3,7 @@ import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
|
3
3
|
import { validateApiVersion } from "./validateApiVersion.js";
|
|
4
4
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
5
5
|
export async function callRpc(client, name, params, options = {}) {
|
|
6
|
-
const maxRetries = options.retries ??
|
|
6
|
+
const maxRetries = options.retries ?? 0;
|
|
7
7
|
let attempt = 0;
|
|
8
8
|
while (true) {
|
|
9
9
|
const startedAt = Date.now();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AchievementProgress, AchievementState } from "../types/achievement.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type EventResult } from "../types/event.js";
|
|
3
3
|
import type { LoginBonusClaim, LoginBonusClaimResult, LoginBonusProgramState, LoginBonusSingleClaimResult, LoginBonusStatus } from "../types/loginBonus.js";
|
|
4
4
|
import type { PointAccount } from "../types/point.js";
|
|
5
5
|
import type { GamePlatformState } from "../types/state.js";
|
|
@@ -1 +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,
|
|
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,EAAmB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3J,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,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,CAuBxD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAUxD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,CAarE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,2BAA2B,CAIxE"}
|
package/dist/internal/mappers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GamePlatformError } from "../errors/GamePlatformError.js";
|
|
2
|
+
import { PLATFORM_EVENTS } from "../types/event.js";
|
|
2
3
|
import { array, boolean, literal, nullableSafeInteger, nullableString, record, safeInteger, string } from "./validators.js";
|
|
3
4
|
export function mapPointAccount(raw) {
|
|
4
5
|
const value = record(raw, "account");
|
|
@@ -85,11 +86,9 @@ export function mapEventResult(raw) {
|
|
|
85
86
|
return {
|
|
86
87
|
apiVersion: 1,
|
|
87
88
|
ok: true,
|
|
88
|
-
duplicate: boolean(value.duplicate, "event result.duplicate"),
|
|
89
89
|
event: {
|
|
90
|
-
id: string(event.id, "event.id"),
|
|
91
90
|
gameId: string(event.game_id, "event.game_id"),
|
|
92
|
-
type:
|
|
91
|
+
type: literal(event.event_type, Object.values(PLATFORM_EVENTS), "event.event_type"),
|
|
93
92
|
origin: literal(event.origin, ["client", "trusted"], "event.origin"),
|
|
94
93
|
},
|
|
95
94
|
points: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../src/internal/mappers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../src/internal/mappers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CAQ3B"}
|
|
@@ -2,7 +2,7 @@ import { callRpc } from "../internal/callRpc.js";
|
|
|
2
2
|
import { mapLoginStatus } from "../internal/mappers.js";
|
|
3
3
|
import { record } from "../internal/validators.js";
|
|
4
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 });
|
|
5
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_login_bonus_status", { p_game_id: gameId }, { logger, retries: 1 });
|
|
6
6
|
return mapLoginStatus(record(raw, "login bonus response").login_bonus);
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=getStatus.js.map
|
|
@@ -1 +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,
|
|
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,CACvB,QAAQ,EACR,yCAAyC,EACzC,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CACvB,CAAA;IACD,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -1 +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,
|
|
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,CAQvB"}
|
|
@@ -2,7 +2,7 @@ import { callRpc } from "../internal/callRpc.js";
|
|
|
2
2
|
import { mapPointAccount } from "../internal/mappers.js";
|
|
3
3
|
import { record } from "../internal/validators.js";
|
|
4
4
|
export async function getPointAccount(supabase, logger) {
|
|
5
|
-
const raw = await callRpc(supabase, "game_platform_v1_get_point_account", undefined, { logger });
|
|
5
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_point_account", undefined, { logger, retries: 1 });
|
|
6
6
|
return mapPointAccount(record(raw, "point account response").account);
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=getAccount.js.map
|
|
@@ -1 +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,
|
|
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,CACvB,QAAQ,EACR,oCAAoC,EACpC,SAAS,EACT,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CACvB,CAAA;IACD,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAA;AACvE,CAAC"}
|
|
@@ -1 +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,
|
|
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,CAQ5B"}
|
package/dist/state/getState.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { callRpc } from "../internal/callRpc.js";
|
|
2
2
|
import { mapState } from "../internal/mappers.js";
|
|
3
3
|
export async function getState(supabase, gameId, logger) {
|
|
4
|
-
const raw = await callRpc(supabase, "game_platform_v1_get_state", { p_game_id: gameId }, { logger });
|
|
4
|
+
const raw = await callRpc(supabase, "game_platform_v1_get_state", { p_game_id: gameId }, { logger, retries: 1 });
|
|
5
5
|
return mapState(raw);
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=getState.js.map
|
|
@@ -1 +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,
|
|
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,CACvB,QAAQ,EACR,4BAA4B,EAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,EACrB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CACvB,CAAA;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;AACtB,CAAC"}
|
package/dist/types/event.d.ts
CHANGED
|
@@ -1,36 +1,60 @@
|
|
|
1
1
|
import type { AchievementProgress, AchievementUnlocked } from "./achievement.js";
|
|
2
2
|
import type { JsonObject } from "./api.js";
|
|
3
|
-
export
|
|
3
|
+
export declare const PLATFORM_EVENTS: {
|
|
4
|
+
readonly GAME_STARTED: "game_started";
|
|
5
|
+
readonly GAME_FINISHED: "game_finished";
|
|
6
|
+
readonly PERSONAL_BEST_UPDATED: "personal_best_updated";
|
|
7
|
+
readonly ITEM_OBTAINED: "item_obtained";
|
|
8
|
+
};
|
|
9
|
+
export type PlatformEventType = (typeof PLATFORM_EVENTS)[keyof typeof PLATFORM_EVENTS];
|
|
10
|
+
type EventSpec = {
|
|
4
11
|
value?: number | never;
|
|
5
12
|
metadata?: JsonObject | never;
|
|
6
13
|
};
|
|
7
|
-
export type
|
|
8
|
-
|
|
14
|
+
export type PlatformEventMap = {
|
|
15
|
+
game_started: {
|
|
16
|
+
value?: never;
|
|
17
|
+
metadata?: never;
|
|
18
|
+
};
|
|
19
|
+
game_finished: {
|
|
20
|
+
value?: number;
|
|
21
|
+
metadata?: never;
|
|
22
|
+
};
|
|
23
|
+
personal_best_updated: {
|
|
24
|
+
value: number;
|
|
25
|
+
metadata?: never;
|
|
26
|
+
};
|
|
27
|
+
item_obtained: {
|
|
28
|
+
value?: never;
|
|
29
|
+
metadata: {
|
|
30
|
+
itemId: string;
|
|
31
|
+
quantity?: number;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
type PropertyInput<T extends EventSpec, K extends "value" | "metadata"> = K extends keyof T ? {} extends Pick<T, K> ? {
|
|
9
36
|
[P in K]?: Exclude<T[P], undefined>;
|
|
10
37
|
} : [T[K]] extends [never] ? {
|
|
11
38
|
[P in K]?: never;
|
|
12
39
|
} : {
|
|
13
40
|
[P in K]: T[K];
|
|
14
41
|
} : {
|
|
15
|
-
[P in K]?:
|
|
42
|
+
[P in K]?: never;
|
|
16
43
|
};
|
|
17
|
-
export type EmitEventInputFor<
|
|
44
|
+
export type EmitEventInputFor<TType extends PlatformEventType> = {
|
|
18
45
|
type: TType;
|
|
19
46
|
sourceId?: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}>;
|
|
47
|
+
} & PropertyInput<PlatformEventMap[TType], "value"> & PropertyInput<PlatformEventMap[TType], "metadata">;
|
|
48
|
+
export type EmitPlatformEventInput = {
|
|
49
|
+
[TType in PlatformEventType]: EmitEventInputFor<TType>;
|
|
50
|
+
}[PlatformEventType];
|
|
51
|
+
export declare function isPlatformEventType(value: string): value is PlatformEventType;
|
|
26
52
|
export type EventResult = {
|
|
27
53
|
apiVersion: 1;
|
|
28
54
|
ok: true;
|
|
29
|
-
duplicate: boolean;
|
|
30
55
|
event: {
|
|
31
|
-
id: string;
|
|
32
56
|
gameId: string;
|
|
33
|
-
type:
|
|
57
|
+
type: PlatformEventType;
|
|
34
58
|
origin: "client" | "trusted";
|
|
35
59
|
};
|
|
36
60
|
points: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,MAAM,MAAM,SAAS,GAAG;
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAE1C,eAAO,MAAM,eAAe;;;;;CAKlB,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAEtF,KAAK,SAAS,GAAG;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IACtB,QAAQ,CAAC,EAAE,UAAU,GAAG,KAAK,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE;QACZ,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,QAAQ,CAAC,EAAE,KAAK,CAAA;KACjB,CAAA;IACD,aAAa,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,KAAK,CAAA;KACjB,CAAA;IACD,qBAAqB,EAAE;QACrB,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,KAAK,CAAA;KACjB,CAAA;IACD,aAAa,EAAE;QACb,KAAK,CAAC,EAAE,KAAK,CAAA;QACb,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAA;YACd,QAAQ,CAAC,EAAE,MAAM,CAAA;SAClB,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,aAAa,CAChB,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,OAAO,GAAG,UAAU,IAC5B,CAAC,SAAS,MAAM,CAAC,GACjB,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CAAE,GACvC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpB;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;CAAE,GACpB;KAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GACtB;KAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;CAAE,CAAA;AAExB,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,iBAAiB,IAAI;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAC/C,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAA;AAEtD,MAAM,MAAM,sBAAsB,GAAG;KAClC,KAAK,IAAI,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC;CACvD,CAAC,iBAAiB,CAAC,CAAA;AAEpB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,CAAC,CAAA;IACb,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,iBAAiB,CAAA;QACvB,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;KAC7B,CAAA;IACD,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,mBAAmB,EAAE,CAAA;QAC9B,QAAQ,EAAE,mBAAmB,EAAE,CAAA;KAChC,CAAA;CACF,CAAA"}
|
package/dist/types/event.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export const PLATFORM_EVENTS = {
|
|
2
|
+
GAME_STARTED: "game_started",
|
|
3
|
+
GAME_FINISHED: "game_finished",
|
|
4
|
+
PERSONAL_BEST_UPDATED: "personal_best_updated",
|
|
5
|
+
ITEM_OBTAINED: "item_obtained",
|
|
6
|
+
};
|
|
7
|
+
export function isPlatformEventType(value) {
|
|
8
|
+
return Object.values(PLATFORM_EVENTS).includes(value);
|
|
9
|
+
}
|
|
2
10
|
//# sourceMappingURL=event.js.map
|
package/dist/types/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/types/event.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,aAAa,EAAE,eAAe;CACtB,CAAA;AAoDV,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zuburi-game-platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Framework-independent TypeScript SDK for KZTK Game Platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"access": "public"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build": "tsc -p tsconfig.build.json",
|
|
29
|
+
"build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.build.json",
|
|
30
30
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
31
31
|
"test": "pnpm run build && node --test tests/*.test.mjs"
|
|
32
32
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.d.ts","sourceRoot":"","sources":["../../src/events/idempotency.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAaR"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export function createIdempotencyKey(gameId, eventType, sourceId, explicitKey) {
|
|
2
|
-
const explicit = explicitKey?.trim();
|
|
3
|
-
if (explicit)
|
|
4
|
-
return explicit;
|
|
5
|
-
const source = sourceId?.trim();
|
|
6
|
-
if (source)
|
|
7
|
-
return `${gameId}:${eventType}:${source}`;
|
|
8
|
-
const cryptoObject = globalThis.crypto;
|
|
9
|
-
if (cryptoObject && typeof cryptoObject.randomUUID === "function") {
|
|
10
|
-
return cryptoObject.randomUUID();
|
|
11
|
-
}
|
|
12
|
-
return `gp:${Date.now()}:${Math.random().toString(36).slice(2)}:${Math.random().toString(36).slice(2)}`;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=idempotency.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../src/events/idempotency.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,SAAiB,EACjB,QAAiB,EACjB,WAAoB;IAEpB,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,EAAE,CAAA;IACpC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,MAAM,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAA;IAC/B,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE,CAAA;IAErD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAA;IACtC,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAClE,OAAO,YAAY,CAAC,UAAU,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACzG,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|