@voltro/plugin-progression 0.0.0-stage → 0.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24492 -0
- package/LICENSE +61 -0
- package/README.md +478 -2
- package/SECURITY.md +56 -0
- package/THIRD-PARTY-NOTICES.md +9841 -0
- package/dist/achievementComponents.js +91 -0
- package/dist/achievementStore.js +602 -0
- package/dist/achievementTables.entity.js +97 -0
- package/dist/achievements.d.ts +188 -0
- package/dist/achievements.js +204 -0
- package/dist/capture.js +63 -0
- package/dist/cmsQuests.d.ts +91 -0
- package/dist/cmsQuests.js +82 -0
- package/dist/components.d.ts +172 -0
- package/dist/components.js +4 -0
- package/dist/curve.d.ts +27 -0
- package/dist/curve.js +37 -0
- package/dist/daily.d.ts +152 -0
- package/dist/daily.js +125 -0
- package/dist/dailyStore.js +420 -0
- package/dist/dailySystem.fixture.js +137 -0
- package/dist/dailyTables.entity.js +89 -0
- package/dist/declarationFixtures.js +142 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.js +19 -0
- package/dist/index.d.ts +1833 -0
- package/dist/index.js +19 -0
- package/dist/pass.d.ts +186 -0
- package/dist/pass.js +121 -0
- package/dist/passRules.js +95 -0
- package/dist/passStore.js +484 -0
- package/dist/passTables.entity.js +95 -0
- package/dist/plugin.js +1085 -0
- package/dist/port.js +4 -0
- package/dist/progressionStore.js +705 -0
- package/dist/questComponents.js +162 -0
- package/dist/questPort.d.ts +126 -0
- package/dist/questPort.js +4 -0
- package/dist/questRefresh.js +55 -0
- package/dist/questRefresh.server.js +125 -0
- package/dist/questRerollJournal.js +76 -0
- package/dist/questStore.js +591 -0
- package/dist/questTables.entity.js +116 -0
- package/dist/quests.d.ts +142 -0
- package/dist/quests.js +152 -0
- package/dist/rank-app/schedules/progression.dispatchRankClosures.cron.tsx +19 -0
- package/dist/rank-app/workflows/progression.closeRankSeason.workflow.server.tsx +10 -0
- package/dist/rank-app/workflows/progression.closeRankSeason.workflow.tsx +1 -0
- package/dist/rankClosure.d.ts +69 -0
- package/dist/rankClosure.js +34 -0
- package/dist/rankClosure.server.js +138 -0
- package/dist/rankClosureWorkflow.d.ts +34 -0
- package/dist/rankClosureWorkflow.js +15 -0
- package/dist/rankReader.server.js +56 -0
- package/dist/rankRewardParent.server.js +64 -0
- package/dist/rankSeasons.d.ts +144 -0
- package/dist/rankSeasons.js +90 -0
- package/dist/rankStore.js +520 -0
- package/dist/rankSystem.fixture.js +169 -0
- package/dist/rankTables.entity.js +100 -0
- package/dist/ranks.d.ts +167 -0
- package/dist/ranks.js +218 -0
- package/dist/resourceStore.js +463 -0
- package/dist/resourceTables.entity.js +88 -0
- package/dist/resources.d.ts +105 -0
- package/dist/resources.js +59 -0
- package/dist/reward-app/schedules/progression.dispatchRewards.cron.tsx +19 -0
- package/dist/reward-app/workflows/progression.deliverReward.workflow.server.tsx +10 -0
- package/dist/reward-app/workflows/progression.deliverReward.workflow.tsx +1 -0
- package/dist/reward.d.ts +27 -0
- package/dist/reward.js +38 -0
- package/dist/rewardDelivery.d.ts +163 -0
- package/dist/rewardDelivery.js +37 -0
- package/dist/rewardDelivery.server.js +429 -0
- package/dist/rewardDeliveryRecord.js +47 -0
- package/dist/rewardDeliveryWorkflow.d.ts +36 -0
- package/dist/rewardDeliveryWorkflow.js +15 -0
- package/dist/rpc.d.ts +880 -0
- package/dist/rpc.js +497 -0
- package/dist/server.d.ts +2812 -0
- package/dist/server.js +21 -0
- package/dist/stats.js +44 -0
- package/dist/strategies.d.ts +131 -0
- package/dist/strategies.js +4 -0
- package/dist/systemFixtures.js +473 -0
- package/dist/tables.entity.js +154 -0
- package/dist/testing.d.ts +1566 -0
- package/dist/testing.js +11 -0
- package/dist/track.js +71 -0
- package/dist/tutorial.d.ts +157 -0
- package/dist/tutorial.js +109 -0
- package/dist/tutorialStore.js +495 -0
- package/dist/tutorialSystem.fixture.js +99 -0
- package/dist/tutorialTables.entity.js +90 -0
- package/dist/web.d.ts +363 -0
- package/dist/web.js +6 -0
- package/package.json +167 -4
package/dist/rpc.js
ADDED
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import { ProgressionError as e } from "./errors.js";
|
|
2
|
+
import { Schema as t } from "effect";
|
|
3
|
+
import { defineAction as n, defineQuery as r } from "@voltro/protocol";
|
|
4
|
+
// src/rpc.ts
|
|
5
|
+
var i = "@voltro/plugin-progression", a = t.Struct({
|
|
6
|
+
trackId: t.String,
|
|
7
|
+
xp: t.String,
|
|
8
|
+
level: t.Number,
|
|
9
|
+
prestige: t.Number,
|
|
10
|
+
updatedAt: t.NullOr(t.Number)
|
|
11
|
+
}), o = t.Struct({
|
|
12
|
+
stat: t.String,
|
|
13
|
+
period: t.Literals(["lifetime", "season"]),
|
|
14
|
+
seasonId: t.NullOr(t.String),
|
|
15
|
+
value: t.String,
|
|
16
|
+
updatedAt: t.Number
|
|
17
|
+
}), s = t.Union([t.Struct({
|
|
18
|
+
kind: t.Literal("xp"),
|
|
19
|
+
trackId: t.String,
|
|
20
|
+
xp: t.String,
|
|
21
|
+
delta: t.String,
|
|
22
|
+
fromLevel: t.Number,
|
|
23
|
+
toLevel: t.Number
|
|
24
|
+
}), t.Struct({
|
|
25
|
+
kind: t.Literal("stat"),
|
|
26
|
+
stat: t.String,
|
|
27
|
+
period: t.Literals(["lifetime", "season"]),
|
|
28
|
+
seasonId: t.NullOr(t.String),
|
|
29
|
+
value: t.String,
|
|
30
|
+
operator: t.Literals([
|
|
31
|
+
"increment",
|
|
32
|
+
"max",
|
|
33
|
+
"min",
|
|
34
|
+
"set"
|
|
35
|
+
])
|
|
36
|
+
})]), c = t.Struct({
|
|
37
|
+
operationId: t.String,
|
|
38
|
+
at: t.Number,
|
|
39
|
+
change: s,
|
|
40
|
+
rewardsQueued: t.Number
|
|
41
|
+
}), l = "The installed service requires a verified user or guest; tenant and owner are derived from its authenticated Subject. No player XP or stat write route exists.", u = r({
|
|
42
|
+
name: "progression.mine",
|
|
43
|
+
input: t.Struct({}),
|
|
44
|
+
output: t.Array(a),
|
|
45
|
+
error: e,
|
|
46
|
+
source: ["_voltro_prog_tracks", "_voltro_prog_subjects"],
|
|
47
|
+
openAccess: l
|
|
48
|
+
}), d = r({
|
|
49
|
+
name: "progression.stats",
|
|
50
|
+
input: t.Struct({}),
|
|
51
|
+
output: t.Array(o),
|
|
52
|
+
error: e,
|
|
53
|
+
source: ["_voltro_prog_stats", "_voltro_prog_subjects"],
|
|
54
|
+
openAccess: l
|
|
55
|
+
}), f = t.Union([
|
|
56
|
+
t.Struct({
|
|
57
|
+
kind: t.Literal("currency"),
|
|
58
|
+
currency: t.String,
|
|
59
|
+
amount: t.String
|
|
60
|
+
}),
|
|
61
|
+
t.Struct({
|
|
62
|
+
kind: t.Literal("item"),
|
|
63
|
+
itemId: t.String,
|
|
64
|
+
qty: t.Number
|
|
65
|
+
}),
|
|
66
|
+
t.Struct({
|
|
67
|
+
kind: t.Literal("xp"),
|
|
68
|
+
trackId: t.String,
|
|
69
|
+
amount: t.String
|
|
70
|
+
})
|
|
71
|
+
]), p = t.Struct({
|
|
72
|
+
id: t.String,
|
|
73
|
+
titleKey: t.optional(t.String),
|
|
74
|
+
objectives: t.Array(t.Union([t.Struct({
|
|
75
|
+
stat: t.String,
|
|
76
|
+
target: t.Number
|
|
77
|
+
}), t.Struct({
|
|
78
|
+
event: t.String,
|
|
79
|
+
target: t.Number,
|
|
80
|
+
where: t.optional(t.Record(t.String, t.Union([
|
|
81
|
+
t.String,
|
|
82
|
+
t.Number,
|
|
83
|
+
t.Boolean,
|
|
84
|
+
t.Null
|
|
85
|
+
])))
|
|
86
|
+
})])),
|
|
87
|
+
reward: t.Array(f)
|
|
88
|
+
}), m = t.Struct({
|
|
89
|
+
id: t.String,
|
|
90
|
+
poolId: t.String,
|
|
91
|
+
windowId: t.String,
|
|
92
|
+
quest: p,
|
|
93
|
+
progress: t.Array(t.Number),
|
|
94
|
+
state: t.Literals(["active", "completed"]),
|
|
95
|
+
assignedAt: t.Number,
|
|
96
|
+
expiresAt: t.Number,
|
|
97
|
+
rerollsUsed: t.Number,
|
|
98
|
+
rerollsAllowed: t.Number
|
|
99
|
+
}), h = t.Struct({
|
|
100
|
+
operationId: t.String,
|
|
101
|
+
kind: t.Literals([
|
|
102
|
+
"assign",
|
|
103
|
+
"record",
|
|
104
|
+
"reroll"
|
|
105
|
+
]),
|
|
106
|
+
assignmentIds: t.Array(t.String),
|
|
107
|
+
completedIds: t.Array(t.String),
|
|
108
|
+
rewardsQueued: t.Number,
|
|
109
|
+
at: t.Number
|
|
110
|
+
}), g = r({
|
|
111
|
+
name: "quests.mine",
|
|
112
|
+
input: t.Struct({}),
|
|
113
|
+
output: t.Array(m),
|
|
114
|
+
error: e,
|
|
115
|
+
source: [
|
|
116
|
+
"_voltro_prog_quest_subjects",
|
|
117
|
+
"_voltro_prog_quest_windows",
|
|
118
|
+
"_voltro_prog_quests"
|
|
119
|
+
],
|
|
120
|
+
openAccess: l
|
|
121
|
+
}), _ = n({
|
|
122
|
+
name: "quests.reroll",
|
|
123
|
+
input: t.Struct({
|
|
124
|
+
poolId: t.String,
|
|
125
|
+
windowId: t.String,
|
|
126
|
+
assignmentId: t.String,
|
|
127
|
+
requestId: t.String
|
|
128
|
+
}),
|
|
129
|
+
output: h,
|
|
130
|
+
error: e,
|
|
131
|
+
openAccess: "The installed QuestPort derives tenant/owner from verified Subject and admits only an owned active quest within its immutable window and reroll allowance. No progress, rewards or seed are accepted from players."
|
|
132
|
+
}), v = [{
|
|
133
|
+
tag: "quests.mine",
|
|
134
|
+
kind: "query",
|
|
135
|
+
import: {
|
|
136
|
+
module: "@voltro/plugin-progression/rpc",
|
|
137
|
+
name: "questsMineDescriptor"
|
|
138
|
+
}
|
|
139
|
+
}, {
|
|
140
|
+
tag: "quests.reroll",
|
|
141
|
+
kind: "action",
|
|
142
|
+
import: {
|
|
143
|
+
module: "@voltro/plugin-progression/rpc",
|
|
144
|
+
name: "questsRerollDescriptor"
|
|
145
|
+
}
|
|
146
|
+
}], y = [{
|
|
147
|
+
tag: "progression.mine",
|
|
148
|
+
kind: "query",
|
|
149
|
+
import: {
|
|
150
|
+
module: "@voltro/plugin-progression/rpc",
|
|
151
|
+
name: "progressionMineDescriptor"
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
tag: "progression.stats",
|
|
155
|
+
kind: "query",
|
|
156
|
+
import: {
|
|
157
|
+
module: "@voltro/plugin-progression/rpc",
|
|
158
|
+
name: "progressionStatsDescriptor"
|
|
159
|
+
}
|
|
160
|
+
}], b = t.Struct({
|
|
161
|
+
resourceId: t.String,
|
|
162
|
+
value: t.String,
|
|
163
|
+
max: t.String,
|
|
164
|
+
initialized: t.Boolean,
|
|
165
|
+
observedAt: t.Number,
|
|
166
|
+
nextRegenAt: t.NullOr(t.Number),
|
|
167
|
+
refillOffer: t.optional(t.String)
|
|
168
|
+
}), x = r({
|
|
169
|
+
name: "resources.mine",
|
|
170
|
+
input: t.Struct({}),
|
|
171
|
+
output: t.Array(b),
|
|
172
|
+
error: e,
|
|
173
|
+
source: ["_voltro_prog_resources", "_voltro_prog_resource_subjects"],
|
|
174
|
+
openAccess: l
|
|
175
|
+
}), S = [{
|
|
176
|
+
tag: "resources.mine",
|
|
177
|
+
kind: "query",
|
|
178
|
+
import: {
|
|
179
|
+
module: "@voltro/plugin-progression/rpc",
|
|
180
|
+
name: "resourcesMineDescriptor"
|
|
181
|
+
}
|
|
182
|
+
}], C = t.Struct({
|
|
183
|
+
stat: t.String,
|
|
184
|
+
period: t.Literals(["lifetime", "season"]),
|
|
185
|
+
seasonId: t.NullOr(t.String),
|
|
186
|
+
value: t.String,
|
|
187
|
+
target: t.String,
|
|
188
|
+
met: t.Boolean
|
|
189
|
+
}), w = t.Struct({
|
|
190
|
+
steam: t.optional(t.String),
|
|
191
|
+
gameCenter: t.optional(t.String),
|
|
192
|
+
playGames: t.optional(t.String)
|
|
193
|
+
}), T = t.Struct({
|
|
194
|
+
achievementId: t.String,
|
|
195
|
+
version: t.Number,
|
|
196
|
+
tierId: t.String,
|
|
197
|
+
unlocked: t.Boolean,
|
|
198
|
+
unlockedAt: t.NullOr(t.Number),
|
|
199
|
+
progress: t.Array(C),
|
|
200
|
+
platform: t.NullOr(w)
|
|
201
|
+
}), E = r({
|
|
202
|
+
name: "achievements.mine",
|
|
203
|
+
input: t.Struct({}),
|
|
204
|
+
output: t.Array(T),
|
|
205
|
+
error: e,
|
|
206
|
+
source: ["_voltro_prog_achievements", "_voltro_prog_achievement_subjects"],
|
|
207
|
+
openAccess: l
|
|
208
|
+
}), D = [{
|
|
209
|
+
tag: "achievements.mine",
|
|
210
|
+
kind: "query",
|
|
211
|
+
import: {
|
|
212
|
+
module: "@voltro/plugin-progression/rpc",
|
|
213
|
+
name: "achievementsMineDescriptor"
|
|
214
|
+
}
|
|
215
|
+
}], O = t.Struct({
|
|
216
|
+
calendarId: t.String,
|
|
217
|
+
version: t.Number,
|
|
218
|
+
dayKey: t.String,
|
|
219
|
+
dayOrdinal: t.Number,
|
|
220
|
+
from: t.Number,
|
|
221
|
+
until: t.Number,
|
|
222
|
+
timezone: t.String,
|
|
223
|
+
dayIndex: t.Number,
|
|
224
|
+
streak: t.Number,
|
|
225
|
+
protectionRemaining: t.Number,
|
|
226
|
+
cycle: t.Number,
|
|
227
|
+
at: t.Number
|
|
228
|
+
}), k = t.Struct({
|
|
229
|
+
operationId: t.String,
|
|
230
|
+
claimId: t.String,
|
|
231
|
+
calendarId: t.String,
|
|
232
|
+
dayKey: t.String,
|
|
233
|
+
after: O,
|
|
234
|
+
rewardsQueued: t.Number,
|
|
235
|
+
at: t.Number
|
|
236
|
+
}), A = t.Struct({
|
|
237
|
+
calendarId: t.String,
|
|
238
|
+
version: t.Number,
|
|
239
|
+
dayKey: t.String,
|
|
240
|
+
timezone: t.String,
|
|
241
|
+
from: t.Number,
|
|
242
|
+
until: t.Number,
|
|
243
|
+
observedAt: t.Number,
|
|
244
|
+
claimed: t.Boolean,
|
|
245
|
+
dayIndex: t.Number,
|
|
246
|
+
streak: t.Number,
|
|
247
|
+
protectionRemaining: t.Number,
|
|
248
|
+
reward: t.Array(f)
|
|
249
|
+
}), j = r({
|
|
250
|
+
name: "daily.state",
|
|
251
|
+
input: t.Struct({}),
|
|
252
|
+
output: t.Array(A),
|
|
253
|
+
error: e,
|
|
254
|
+
source: [
|
|
255
|
+
"_voltro_prog_daily",
|
|
256
|
+
"_voltro_prog_daily_subjects",
|
|
257
|
+
"_voltro_prog_daily_claims"
|
|
258
|
+
],
|
|
259
|
+
openAccess: "The installed LoginCalendarPort requires a verified user/guest and derives tenant/owner from Subject; timezone comes from its trusted profile port. No client state is admitted."
|
|
260
|
+
}), M = n({
|
|
261
|
+
name: "progression.claimDaily",
|
|
262
|
+
input: t.Struct({
|
|
263
|
+
calendarId: t.String,
|
|
264
|
+
requestId: t.String
|
|
265
|
+
}),
|
|
266
|
+
output: k,
|
|
267
|
+
error: e,
|
|
268
|
+
openAccess: "The installed LoginCalendarPort derives tenant/owner from verified Subject, resolves timezone through its trusted source and admits one SQL claim per calendar/civil day. The player sends only calendar and request identity; the borrowed adapter owns its transaction."
|
|
269
|
+
}), N = [{
|
|
270
|
+
tag: "daily.state",
|
|
271
|
+
kind: "query",
|
|
272
|
+
import: {
|
|
273
|
+
module: "@voltro/plugin-progression/rpc",
|
|
274
|
+
name: "dailyStateDescriptor"
|
|
275
|
+
}
|
|
276
|
+
}, {
|
|
277
|
+
tag: "progression.claimDaily",
|
|
278
|
+
kind: "action",
|
|
279
|
+
import: {
|
|
280
|
+
module: "@voltro/plugin-progression/rpc",
|
|
281
|
+
name: "claimDailyDescriptor"
|
|
282
|
+
}
|
|
283
|
+
}], P = t.Struct({
|
|
284
|
+
tier: t.Number,
|
|
285
|
+
track: t.Literals(["free", "premium"]),
|
|
286
|
+
rewards: t.Array(f)
|
|
287
|
+
}), F = t.Struct({
|
|
288
|
+
passId: t.String,
|
|
289
|
+
version: t.Number,
|
|
290
|
+
xp: t.String,
|
|
291
|
+
claimedFree: t.String,
|
|
292
|
+
claimedPremium: t.String,
|
|
293
|
+
premium: t.Boolean,
|
|
294
|
+
purchasedAt: t.NullOr(t.Number),
|
|
295
|
+
fulfillmentId: t.NullOr(t.String),
|
|
296
|
+
closed: t.Boolean,
|
|
297
|
+
updatedAt: t.Number
|
|
298
|
+
}), I = t.Struct({
|
|
299
|
+
operationId: t.String,
|
|
300
|
+
kind: t.Literals([
|
|
301
|
+
"xp",
|
|
302
|
+
"premium",
|
|
303
|
+
"claim",
|
|
304
|
+
"close"
|
|
305
|
+
]),
|
|
306
|
+
after: F,
|
|
307
|
+
claims: t.Array(P),
|
|
308
|
+
rewardsQueued: t.Number,
|
|
309
|
+
at: t.Number
|
|
310
|
+
}), L = t.Struct({
|
|
311
|
+
...F.fields,
|
|
312
|
+
tier: t.Number,
|
|
313
|
+
from: t.Number,
|
|
314
|
+
until: t.Number,
|
|
315
|
+
observedAt: t.Number,
|
|
316
|
+
active: t.Boolean,
|
|
317
|
+
premiumOffer: t.NullOr(t.String),
|
|
318
|
+
claimable: t.Array(P)
|
|
319
|
+
}), R = r({
|
|
320
|
+
name: "pass.mine",
|
|
321
|
+
input: t.Struct({}),
|
|
322
|
+
output: t.Array(L),
|
|
323
|
+
error: e,
|
|
324
|
+
source: [
|
|
325
|
+
"_voltro_prog_pass",
|
|
326
|
+
"_voltro_prog_pass_subjects",
|
|
327
|
+
"_voltro_prog_pass_ledger"
|
|
328
|
+
],
|
|
329
|
+
openAccess: "The installed SeasonPassPort derives owner/tenant from the verified user or guest; reads never grant XP, premium or a reward."
|
|
330
|
+
}), z = n({
|
|
331
|
+
name: "pass.claim",
|
|
332
|
+
input: t.Struct({
|
|
333
|
+
passId: t.String,
|
|
334
|
+
tier: t.Number,
|
|
335
|
+
track: t.Literals(["free", "premium"]),
|
|
336
|
+
requestId: t.String
|
|
337
|
+
}),
|
|
338
|
+
output: I,
|
|
339
|
+
error: e,
|
|
340
|
+
openAccess: "The installed SeasonPassPort derives owner/tenant from verified Subject, checks accepted XP/premium and active season, then atomically claims an owned tier. Player input is intent only; the borrowed adapter owns the transaction."
|
|
341
|
+
}), B = [{
|
|
342
|
+
tag: "pass.mine",
|
|
343
|
+
kind: "query",
|
|
344
|
+
import: {
|
|
345
|
+
module: "@voltro/plugin-progression/rpc",
|
|
346
|
+
name: "passesMineDescriptor"
|
|
347
|
+
}
|
|
348
|
+
}, {
|
|
349
|
+
tag: "pass.claim",
|
|
350
|
+
kind: "action",
|
|
351
|
+
import: {
|
|
352
|
+
module: "@voltro/plugin-progression/rpc",
|
|
353
|
+
name: "passClaimDescriptor"
|
|
354
|
+
}
|
|
355
|
+
}], V = t.Struct({
|
|
356
|
+
tutorialId: t.String,
|
|
357
|
+
version: t.Number,
|
|
358
|
+
completedSteps: t.Array(t.String),
|
|
359
|
+
completed: t.Boolean,
|
|
360
|
+
skipped: t.Boolean,
|
|
361
|
+
completedAt: t.NullOr(t.Number),
|
|
362
|
+
updatedAt: t.NullOr(t.Number)
|
|
363
|
+
}), H = t.Struct({
|
|
364
|
+
operationId: t.String,
|
|
365
|
+
kind: t.Literals(["step", "skip"]),
|
|
366
|
+
step: t.NullOr(t.String),
|
|
367
|
+
after: V,
|
|
368
|
+
rewardsQueued: t.Number,
|
|
369
|
+
at: t.Number
|
|
370
|
+
}), U = t.Struct({
|
|
371
|
+
...V.fields,
|
|
372
|
+
nextStep: t.NullOr(t.String),
|
|
373
|
+
skippable: t.Boolean,
|
|
374
|
+
hints: t.NullOr(t.String)
|
|
375
|
+
}), W = r({
|
|
376
|
+
name: "tutorial.mine",
|
|
377
|
+
input: t.Struct({}),
|
|
378
|
+
output: t.Array(U),
|
|
379
|
+
error: e,
|
|
380
|
+
source: [
|
|
381
|
+
"_voltro_prog_tutorial",
|
|
382
|
+
"_voltro_prog_tutorial_subjects",
|
|
383
|
+
"_voltro_prog_tutorial_ledger"
|
|
384
|
+
],
|
|
385
|
+
openAccess: "The installed TutorialPort derives tenant and owner from a verified user or guest; reads never complete or skip a step."
|
|
386
|
+
}), G = n({
|
|
387
|
+
name: "tutorial.completeStep",
|
|
388
|
+
input: t.Struct({
|
|
389
|
+
tutorialId: t.String,
|
|
390
|
+
step: t.String,
|
|
391
|
+
requestId: t.String
|
|
392
|
+
}),
|
|
393
|
+
output: H,
|
|
394
|
+
error: e,
|
|
395
|
+
openAccess: "The installed TutorialPort derives owner from verified Subject and requires its trusted verifier to check actual authoritative evidence before accepting a sequential step; no client completion state is trusted."
|
|
396
|
+
}), K = n({
|
|
397
|
+
name: "tutorial.skip",
|
|
398
|
+
input: t.Struct({
|
|
399
|
+
tutorialId: t.String,
|
|
400
|
+
requestId: t.String
|
|
401
|
+
}),
|
|
402
|
+
output: H,
|
|
403
|
+
error: e,
|
|
404
|
+
openAccess: "The installed TutorialPort derives owner from verified Subject, checks the captured skippable rule and permanently records a skip. Its adapter owns the complete transaction."
|
|
405
|
+
}), q = [
|
|
406
|
+
{
|
|
407
|
+
tag: "tutorial.mine",
|
|
408
|
+
kind: "query",
|
|
409
|
+
import: {
|
|
410
|
+
module: "@voltro/plugin-progression/rpc",
|
|
411
|
+
name: "tutorialsMineDescriptor"
|
|
412
|
+
}
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
tag: "tutorial.completeStep",
|
|
416
|
+
kind: "action",
|
|
417
|
+
import: {
|
|
418
|
+
module: "@voltro/plugin-progression/rpc",
|
|
419
|
+
name: "tutorialStepDescriptor"
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
tag: "tutorial.skip",
|
|
424
|
+
kind: "action",
|
|
425
|
+
import: {
|
|
426
|
+
module: "@voltro/plugin-progression/rpc",
|
|
427
|
+
name: "tutorialSkipDescriptor"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
], J = t.Struct({
|
|
431
|
+
index: t.Number,
|
|
432
|
+
tier: t.String,
|
|
433
|
+
tierIndex: t.Number,
|
|
434
|
+
division: t.Number
|
|
435
|
+
}), Y = t.Struct({
|
|
436
|
+
ladderId: t.String,
|
|
437
|
+
version: t.Number,
|
|
438
|
+
pool: t.String,
|
|
439
|
+
games: t.Number,
|
|
440
|
+
placementsRemaining: t.Number,
|
|
441
|
+
rawScore: t.Number,
|
|
442
|
+
score: t.Number,
|
|
443
|
+
grade: t.NullOr(J),
|
|
444
|
+
ratingUpdatedAt: t.NullOr(t.Number),
|
|
445
|
+
observedAt: t.Number,
|
|
446
|
+
rulesVersion: t.String
|
|
447
|
+
}), X = t.Struct({
|
|
448
|
+
seasonId: t.String,
|
|
449
|
+
version: t.Number,
|
|
450
|
+
ladderId: t.String,
|
|
451
|
+
observations: t.Number,
|
|
452
|
+
last: t.NullOr(Y),
|
|
453
|
+
highest: t.NullOr(J),
|
|
454
|
+
closedAt: t.NullOr(t.Number),
|
|
455
|
+
resetScore: t.NullOr(t.Number)
|
|
456
|
+
}), Z = t.Struct({
|
|
457
|
+
operationId: t.String,
|
|
458
|
+
kind: t.Literals(["observe", "close"]),
|
|
459
|
+
after: X,
|
|
460
|
+
rewardsQueued: t.Number,
|
|
461
|
+
at: t.Number
|
|
462
|
+
}), Q = r({
|
|
463
|
+
name: "ranks.mine",
|
|
464
|
+
input: t.Struct({}),
|
|
465
|
+
output: t.Array(X),
|
|
466
|
+
error: e,
|
|
467
|
+
source: [
|
|
468
|
+
"_voltro_prog_rank",
|
|
469
|
+
"_voltro_prog_rank_subjects",
|
|
470
|
+
"_voltro_prog_rank_ledger"
|
|
471
|
+
],
|
|
472
|
+
openAccess: "The installed RankPort resolves owner and tenant from the verified user or guest. This read never observes a new rating or grants season rewards."
|
|
473
|
+
}), $ = n({
|
|
474
|
+
name: "ranks.observe",
|
|
475
|
+
input: t.Struct({
|
|
476
|
+
seasonId: t.String,
|
|
477
|
+
requestId: t.String
|
|
478
|
+
}),
|
|
479
|
+
output: Z,
|
|
480
|
+
error: e,
|
|
481
|
+
openAccess: "The installed RankPort derives verified owner/tenant and reads its trusted Rating source outside SQL callbacks. The client sends season/request intention, no rank or rating state. The borrowed adapter owns the complete transaction."
|
|
482
|
+
}), ee = [{
|
|
483
|
+
tag: "ranks.mine",
|
|
484
|
+
kind: "query",
|
|
485
|
+
import: {
|
|
486
|
+
module: "@voltro/plugin-progression/rpc",
|
|
487
|
+
name: "ranksMineDescriptor"
|
|
488
|
+
}
|
|
489
|
+
}, {
|
|
490
|
+
tag: "ranks.observe",
|
|
491
|
+
kind: "action",
|
|
492
|
+
import: {
|
|
493
|
+
module: "@voltro/plugin-progression/rpc",
|
|
494
|
+
name: "rankObserveDescriptor"
|
|
495
|
+
}
|
|
496
|
+
}];
|
|
497
|
+
export { w as AchievementPlatformSchema, C as AchievementProgressSchema, k as DailyReceiptSchema, O as DailyStateSchema, i as PROGRESSION_NAME, I as PassReceiptSchema, F as PassStateSchema, P as PassTierClaimSchema, T as PlayerAchievementSchema, A as PlayerDailySchema, L as PlayerPassSchema, m as PlayerQuestSchema, Y as PlayerRankSchema, b as PlayerResourceSchema, o as PlayerStatSchema, a as PlayerTrackSchema, U as PlayerTutorialSchema, s as ProgressionChangeSchema, c as ProgressionReceiptSchema, p as QuestDefinitionSchema, h as QuestReceiptSchema, f as QuestRewardSchema, J as RankGradeSchema, Z as RankSeasonReceiptSchema, X as RankSeasonStateSchema, H as TutorialReceiptSchema, V as TutorialStateSchema, E as achievementsMineDescriptor, D as achievementsRpcClientImports, M as claimDailyDescriptor, N as dailyRpcClientImports, j as dailyStateDescriptor, z as passClaimDescriptor, R as passesMineDescriptor, B as passesRpcClientImports, u as progressionMineDescriptor, y as progressionRpcClientImports, d as progressionStatsDescriptor, g as questsMineDescriptor, _ as questsRerollDescriptor, v as questsRpcClientImports, $ as rankObserveDescriptor, ee as rankRpcClientImports, Q as ranksMineDescriptor, x as resourcesMineDescriptor, S as resourcesRpcClientImports, q as tutorialRpcClientImports, K as tutorialSkipDescriptor, G as tutorialStepDescriptor, W as tutorialsMineDescriptor };
|