@domino-sdk/relay 1.61.0 → 1.63.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +276 -8
  2. package/README.md +3 -2
  3. package/dist/{schema-CZ6Rj0ZF.d.ts → accounts-nz3mzfRQ.d.ts} +3146 -1765
  4. package/dist/action-9Xl0StBg.d.ts +33 -0
  5. package/dist/{attempt-captures-DYnJVkfg.d.ts → attempt-captures-DMi8oR9T.d.ts} +1 -1
  6. package/dist/authoring.d.ts +171 -49
  7. package/dist/authoring.js +158 -49
  8. package/dist/{automatic-outcomes-If88LR9f.d.ts → automatic-outcomes-C_LLQU1p.d.ts} +15 -1
  9. package/dist/avatar.d.ts +1 -1
  10. package/dist/browser.d.ts +15 -11
  11. package/dist/browser.js +18 -12
  12. package/dist/capability-error-CuI_F7yM.d.ts +296 -0
  13. package/dist/{pages-K7-KjSXw.d.ts → catalog-BaTOKpNw.d.ts} +56 -567
  14. package/dist/{chunk-XBV2CK2H.js → chunk-3RFP6GT5.js} +15 -3
  15. package/dist/{chunk-VURRFVNP.js → chunk-4GQW43UU.js} +239 -361
  16. package/dist/chunk-4NOFSGAL.js +320 -0
  17. package/dist/{chunk-24I4R732.js → chunk-5XLZ34PV.js} +34 -19
  18. package/dist/{chunk-L77O64I4.js → chunk-7X67QLPB.js} +43 -43
  19. package/dist/{chunk-RHBS5FJL.js → chunk-7Z4SZ6YM.js} +3 -3
  20. package/dist/{chunk-QEAS4ZGS.js → chunk-AQOL3SK5.js} +1 -1
  21. package/dist/chunk-EHUSD3O2.js +377 -0
  22. package/dist/chunk-FO2LCZTL.js +19 -0
  23. package/dist/{chunk-DYXDZFKA.js → chunk-FU5CGNTR.js} +166 -178
  24. package/dist/chunk-FWLQ5XCS.js +21 -0
  25. package/dist/chunk-GLH6MEI2.js +193 -0
  26. package/dist/chunk-ICXZZNPS.js +199 -0
  27. package/dist/{chunk-ZDJLPN4L.js → chunk-ID3BZXFZ.js} +2696 -2693
  28. package/dist/chunk-KP2MCX3R.js +587 -0
  29. package/dist/{chunk-SKGTNTLF.js → chunk-LZWXCBUB.js} +213 -297
  30. package/dist/chunk-MTKRIQEU.js +31 -0
  31. package/dist/{chunk-4OC7REYX.js → chunk-MWMCQLCG.js} +3 -3
  32. package/dist/{chunk-PPB7HALD.js → chunk-N4BDKS6Y.js} +27 -26
  33. package/dist/{chunk-5I54XBK2.js → chunk-N4LNEGQX.js} +2 -2
  34. package/dist/chunk-NQDEWJWE.js +554 -0
  35. package/dist/chunk-QR6HH4DI.js +508 -0
  36. package/dist/chunk-TLSQETTY.js +41 -0
  37. package/dist/{chunk-MHPKEVEW.js → chunk-U66GUVSG.js} +7 -2
  38. package/dist/{chunk-KDR2VAJP.js → chunk-UYVJZR33.js} +2 -2
  39. package/dist/chunk-UZ765UGH.js +18 -0
  40. package/dist/{chunk-7A4J67ZL.js → chunk-VWQGWGCH.js} +7 -7
  41. package/dist/chunk-W7YSMSGC.js +725 -0
  42. package/dist/{client-C51w7fMb.d.ts → client-DHmG7rn6.d.ts} +126 -93
  43. package/dist/{announcements-CHx3-HBw.d.ts → dashboards-CLemT6kj.d.ts} +14 -137
  44. package/dist/{deployments-kWoHFaqj.d.ts → deployments-DTULi7dF.d.ts} +450 -18
  45. package/dist/identity-integration-DOeNZaxF.d.ts +1271 -0
  46. package/dist/index.d.ts +13 -11
  47. package/dist/index.js +16 -11
  48. package/dist/internal.d.ts +29 -13
  49. package/dist/internal.js +57 -17
  50. package/dist/{integrations-B3y36OaB.d.ts → limits-kNzYdZ00.d.ts} +464 -53
  51. package/dist/{offers-BoV4ryUc.d.ts → offers-CYeN_I0Y.d.ts} +22 -4
  52. package/dist/{participant-activity-DHL8QYks.d.ts → participant-activity-D-Drp24G.d.ts} +16 -3
  53. package/dist/portal-proxy.d.ts +75 -2
  54. package/dist/portal-proxy.js +153 -25
  55. package/dist/react/index.d.ts +214 -27
  56. package/dist/react/index.js +196 -42
  57. package/dist/{action-DBzILFx9.d.ts → request-error-D_dUPLwo.d.ts} +1 -31
  58. package/dist/reward-deliveries-drp-x1G-.d.ts +782 -0
  59. package/dist/runtime/authoring.js +1 -1
  60. package/dist/runtime/chunks/UGDV5W4N.js +1 -0
  61. package/dist/runtime/manifest.json +3 -3
  62. package/dist/runtime/schema.js +1 -1
  63. package/dist/schema.d.ts +330 -31
  64. package/dist/schema.js +147 -91
  65. package/dist/server/index.d.ts +14 -12
  66. package/dist/server/index.js +6425 -6260
  67. package/dist/sign-in-providers-B1Q9eDRm.d.ts +44 -0
  68. package/dist/submission-input-DZCbjQUH.d.ts +343 -0
  69. package/dist/{telegram-browser-BUceZIGZ.d.ts → telegram-browser-NL0Asmsi.d.ts} +46 -6
  70. package/dist/telegram.d.ts +64 -0
  71. package/dist/telegram.js +23 -0
  72. package/dist/testing.d.ts +326 -27
  73. package/dist/testing.js +440 -90
  74. package/dist/tracker-data-esm3WG8R.d.ts +1881 -0
  75. package/dist/{transport-BrX9pIGN.d.ts → transport-Czht_irp.d.ts} +43483 -38512
  76. package/dist/{wallet-CIqFoxdm.d.ts → wallet-B7e06v4m.d.ts} +32 -9
  77. package/package.json +5 -1
  78. package/dist/accounts-DoabriBX.d.ts +0 -306
  79. package/dist/capability-error-DufwG3G0.d.ts +0 -159
  80. package/dist/chunk-3Y3L2F54.js +0 -982
  81. package/dist/chunk-DHXDBAJF.js +0 -544
  82. package/dist/chunk-EN3M5Z4J.js +0 -13
  83. package/dist/chunk-QNUHWK7R.js +0 -602
  84. package/dist/chunk-SE4PFJPT.js +0 -247
  85. package/dist/groups-CqcA2Ycs.d.ts +0 -2827
  86. package/dist/runtime/chunks/5QVFB4TU.js +0 -1
  87. package/dist/submission-input-C54Q8yAD.d.ts +0 -146
  88. package/dist/x-D1PGi8Sq.d.ts +0 -331
@@ -0,0 +1,508 @@
1
+ import {
2
+ parseDefinition
3
+ } from "./chunk-FO2LCZTL.js";
4
+ import {
5
+ authoringIdentityShape,
6
+ calendarPeriodSchema,
7
+ contentMetricSchema,
8
+ contentMetricsSchema,
9
+ identifier,
10
+ maxPointsAmount,
11
+ missingPrerequisiteSchema,
12
+ pageCursorSchema,
13
+ pointsRewardSchema,
14
+ prerequisiteSchema,
15
+ resourceHandle,
16
+ responseShape,
17
+ tierRewardSchema
18
+ } from "./chunk-ID3BZXFZ.js";
19
+
20
+ // src/engagement.ts
21
+ import * as z from "zod";
22
+ var amount = /* @__PURE__ */ (() => z.number().int().safe().nonnegative())();
23
+ var engagementBudgetSchema = /* @__PURE__ */ (() => z.strictObject({
24
+ scope: z.enum(["member", "project"]),
25
+ period: calendarPeriodSchema,
26
+ limit: amount
27
+ }))();
28
+ var engagementDefinitionSchema = /* @__PURE__ */ (() => z.strictObject({
29
+ key: identifier,
30
+ qualifiedBy: identifier,
31
+ balance: identifier,
32
+ metrics: z.array(contentMetricSchema).min(1).max(10).refine(
33
+ (metrics) => new Set(metrics).size === metrics.length,
34
+ "Metrics must be unique"
35
+ ),
36
+ baseline: z.literal("historical"),
37
+ maxAgeMs: z.number().int().positive().max(864e5).default(36e5),
38
+ budgets: z.array(engagementBudgetSchema).max(8).default([]).refine(
39
+ (budgets) => new Set(budgets.map((b) => b.scope + ":" + b.period)).size === budgets.length,
40
+ "Give each scope and period one budget"
41
+ )
42
+ }))();
43
+ var engagementScoreInputSchema = /* @__PURE__ */ (() => z.strictObject({
44
+ metrics: contentMetricsSchema,
45
+ baseline: contentMetricsSchema
46
+ }))();
47
+ var engagementScoreSchema = /* @__PURE__ */ (() => z.strictObject({
48
+ target: amount,
49
+ baseline: amount
50
+ }))();
51
+ var engagementPublishSchema = /* @__PURE__ */ (() => z.strictObject({
52
+ actionId: identifier,
53
+ code: z.string().min(1).max(1e6)
54
+ }))();
55
+ var engagementRuleSchema = /* @__PURE__ */ (() => z.strictObject({
56
+ version: identifier,
57
+ definition: engagementDefinitionSchema,
58
+ publishedAt: amount
59
+ }))();
60
+ var engagementPageQuerySchema = /* @__PURE__ */ (() => z.strictObject({
61
+ rule: identifier,
62
+ content: z.string().min(1).max(256),
63
+ member: identifier.optional(),
64
+ cursor: pageCursorSchema.optional()
65
+ }))();
66
+ var engagementSettlementSchema = /* @__PURE__ */ (() => z.strictObject({
67
+ id: identifier,
68
+ day: z.string(),
69
+ observation: identifier,
70
+ qualification: identifier,
71
+ earned: amount,
72
+ growth: amount,
73
+ paid: amount,
74
+ excluded: amount,
75
+ entry: identifier.nullable(),
76
+ createdAt: amount
77
+ }))();
78
+ var engagementPageSchema = /* @__PURE__ */ (() => z.strictObject({
79
+ rule: engagementRuleSchema,
80
+ account: z.strictObject({
81
+ member: identifier,
82
+ earned: amount,
83
+ accounted: amount,
84
+ paid: amount,
85
+ excluded: amount,
86
+ pending: amount,
87
+ counters: contentMetricsSchema,
88
+ baseline: contentMetricsSchema,
89
+ observation: identifier.nullable(),
90
+ nextSettlementAt: amount.nullable(),
91
+ reason: z.string().nullable()
92
+ }).nullable(),
93
+ items: z.array(engagementSettlementSchema),
94
+ nextCursor: pageCursorSchema.nullable()
95
+ }))();
96
+ var engagementChangePreviewInputSchema = /* @__PURE__ */ (() => z.strictObject({
97
+ code: z.string().min(1).max(1e6)
98
+ }))();
99
+ var engagementChangeSchema = /* @__PURE__ */ (() => engagementPublishSchema.extend({
100
+ expectedVersion: identifier,
101
+ previewHash: identifier
102
+ }))();
103
+ var total = /* @__PURE__ */ (() => z.string().regex(/^(0|[1-9][0-9]*)$/))();
104
+ var engagementChangePreviewSchema = /* @__PURE__ */ (() => z.strictObject({
105
+ rule: identifier,
106
+ fromVersion: identifier,
107
+ toVersion: identifier,
108
+ previewHash: identifier,
109
+ definition: engagementDefinitionSchema,
110
+ boundary: z.literal("available-eligible-observation"),
111
+ settlement: z.literal("deferred"),
112
+ summary: z.strictObject({
113
+ knownAdmissions: amount,
114
+ accounts: amount,
115
+ uninitialized: amount,
116
+ pendingTransitions: amount,
117
+ earned: total,
118
+ paid: total,
119
+ excluded: total,
120
+ pending: total
121
+ })
122
+ }))();
123
+ var engagementVersionSchema = /* @__PURE__ */ (() => engagementRuleSchema.extend({
124
+ previousVersion: identifier.nullable()
125
+ }))();
126
+ var engagementRuleVersionPageSchema = /* @__PURE__ */ (() => z.object({
127
+ items: z.array(
128
+ z.object({
129
+ version: identifier,
130
+ definition: z.object({
131
+ ...engagementDefinitionSchema.shape,
132
+ budgets: z.array(z.object(engagementBudgetSchema.shape)).max(8).default([])
133
+ }),
134
+ publishedAt: amount,
135
+ previousVersion: identifier.nullable()
136
+ })
137
+ ),
138
+ nextCursor: pageCursorSchema.nullable()
139
+ }))();
140
+ var engagementVersionPageSchema = /* @__PURE__ */ (() => z.strictObject({
141
+ items: z.array(engagementVersionSchema),
142
+ next: amount.nullable()
143
+ }))();
144
+ var engagementVersionQuerySchema = /* @__PURE__ */ (() => z.strictObject({
145
+ rule: identifier,
146
+ before: z.coerce.number().int().positive().safe().optional()
147
+ }))();
148
+ var engagementBoundaryPageSchema = /* @__PURE__ */ (() => z.strictObject({
149
+ current: engagementRuleSchema.nullable(),
150
+ requested: engagementRuleSchema,
151
+ items: z.array(
152
+ z.strictObject({
153
+ from: identifier,
154
+ to: identifier,
155
+ baseline: contentMetricsSchema,
156
+ observedAt: amount,
157
+ settlement: engagementSettlementSchema
158
+ })
159
+ ),
160
+ nextCursor: pageCursorSchema.nullable()
161
+ }))();
162
+ var engagementArtifactSchema = /* @__PURE__ */ (() => engagementPublishSchema.omit({
163
+ actionId: true
164
+ }))();
165
+ var deploymentEntry = /* @__PURE__ */ (() => engagementArtifactSchema.extend({
166
+ rule: engagementRuleSchema
167
+ }))();
168
+ var engagementDeploymentEntrySchema = /* @__PURE__ */ (() => z.discriminatedUnion("kind", [
169
+ deploymentEntry.extend({ kind: z.literal("create") }),
170
+ deploymentEntry.extend({ kind: z.literal("unchanged") }),
171
+ deploymentEntry.extend({
172
+ kind: z.literal("change"),
173
+ change: engagementChangePreviewSchema
174
+ })
175
+ ]))();
176
+
177
+ // src/referrals.ts
178
+ import * as z2 from "zod";
179
+ var rewardSchema = /* @__PURE__ */ (() => z2.union([pointsRewardSchema, tierRewardSchema]))();
180
+ var amount2 = /* @__PURE__ */ (() => z2.number().int().safe().nonnegative())();
181
+ var reason = /* @__PURE__ */ (() => z2.string().trim().min(1).max(1e3))();
182
+ var referralDefinitionSchema = /* @__PURE__ */ (() => z2.object({
183
+ id: identifier,
184
+ key: identifier.optional(),
185
+ title: z2.string().trim().min(1).max(120),
186
+ enabled: z2.boolean().default(true),
187
+ qualification: z2.discriminatedUnion("kind", [
188
+ z2.object({ kind: z2.literal("signup") }).strict(),
189
+ z2.object({ kind: z2.literal("quest"), quest: identifier }).strict(),
190
+ z2.object({ kind: z2.literal("external") }).strict()
191
+ ]),
192
+ inviterGroup: identifier.optional(),
193
+ rewards: z2.object({
194
+ inviter: z2.array(rewardSchema).max(10).default([]),
195
+ invitee: z2.array(rewardSchema).max(10).default([])
196
+ }).strict().default({ inviter: [], invitee: [] }),
197
+ milestones: z2.array(
198
+ z2.object({
199
+ id: identifier,
200
+ count: amount2.min(1),
201
+ rewards: z2.array(rewardSchema).min(1).max(10)
202
+ }).strict()
203
+ ).max(30).default([]),
204
+ bonuses: z2.array(
205
+ z2.object({
206
+ id: identifier,
207
+ balance: identifier,
208
+ basisPoints: amount2.min(1).max(1e4),
209
+ quests: z2.array(identifier).min(1).max(100).optional(),
210
+ external: z2.boolean().default(false),
211
+ durationDays: amount2.min(1).max(36500).optional(),
212
+ maxPoints: amount2.min(1).optional()
213
+ }).strict()
214
+ ).max(20).default([])
215
+ }).strict().superRefine((value, ctx) => {
216
+ for (const entries of [value.milestones, value.bonuses]) {
217
+ if (new Set(entries.map((e) => e.id)).size !== entries.length) {
218
+ ctx.addIssue({ code: "custom", message: "Rule IDs must be unique" });
219
+ }
220
+ }
221
+ }))();
222
+ var referralAuthoringSchema = /* @__PURE__ */ (() => z2.object(referralDefinitionSchema.shape).omit({ id: true }).extend({
223
+ ...authoringIdentityShape,
224
+ inviterGroup: identifier.optional()
225
+ }).strict().superRefine((value, ctx) => {
226
+ for (const entries of [value.milestones, value.bonuses]) {
227
+ if (new Set(entries.map((entry) => entry.id)).size !== entries.length) {
228
+ ctx.addIssue({ code: "custom", message: "Rule keys must be unique" });
229
+ }
230
+ }
231
+ }))();
232
+ var referralArtifactSchema = /* @__PURE__ */ (() => z2.union([
233
+ referralAuthoringSchema,
234
+ z2.object({ code: z2.string().min(1).max(2e6) }).strict()
235
+ ]))();
236
+ var publishedReferralSchema = /* @__PURE__ */ (() => z2.object({
237
+ archivedAt: z2.number().int().nonnegative().nullable().optional(),
238
+ version: identifier,
239
+ definition: referralDefinitionSchema,
240
+ publishedAt: amount2,
241
+ actor: z2.string().nullable()
242
+ }))();
243
+ var referralAcceptSchema = /* @__PURE__ */ (() => z2.object({ actionId: identifier, code: identifier }).strict())();
244
+ var referralSuspensionSchema = /* @__PURE__ */ (() => z2.object({ actionId: identifier, suspended: z2.boolean(), reason }).strict())();
245
+ var referralQualificationSchema = /* @__PURE__ */ (() => z2.object({ actionId: identifier, qualified: z2.boolean(), reason }).strict())();
246
+ var referralRewardResolutionSchema = /* @__PURE__ */ (() => z2.object({ actionId: identifier, reason }).strict())();
247
+ var referralControlSchema = /* @__PURE__ */ (() => z2.discriminatedUnion("kind", [
248
+ z2.object({
249
+ kind: z2.literal("suspend"),
250
+ actionId: identifier,
251
+ member: identifier,
252
+ suspended: z2.boolean(),
253
+ reason
254
+ }).strict(),
255
+ z2.object({
256
+ kind: z2.literal("qualify"),
257
+ actionId: identifier,
258
+ member: identifier,
259
+ program: identifier,
260
+ qualified: z2.boolean(),
261
+ reason
262
+ }).strict(),
263
+ z2.object({
264
+ kind: z2.literal("resolve-reward"),
265
+ actionId: identifier,
266
+ entitlement: identifier,
267
+ reason
268
+ }).strict()
269
+ ]))();
270
+ var referralRelationshipSchema = /* @__PURE__ */ (() => z2.object({
271
+ member: identifier,
272
+ inviter: identifier,
273
+ acceptedAt: amount2,
274
+ suspended: z2.boolean(),
275
+ /** The member import that recorded this referral, or null when the friend accepted an invitation. */
276
+ import: identifier.nullable().optional()
277
+ }))();
278
+ var referralAccountSchema = /* @__PURE__ */ (() => z2.object({
279
+ id: identifier,
280
+ program: identifier,
281
+ kind: z2.enum(["bonus", "fixed", "milestone"]),
282
+ balance: identifier,
283
+ earned: amount2,
284
+ settled: amount2,
285
+ outstanding: amount2
286
+ }))();
287
+ var referralSummarySchema = /* @__PURE__ */ (() => z2.object({
288
+ code: identifier,
289
+ attributed: amount2,
290
+ programs: z2.array(
291
+ z2.object({
292
+ definition: referralDefinitionSchema,
293
+ qualified: amount2,
294
+ milestones: z2.array(
295
+ z2.object({ id: identifier, count: amount2, reached: z2.boolean() })
296
+ )
297
+ })
298
+ ),
299
+ accounts: z2.array(referralAccountSchema)
300
+ }))();
301
+ var referralHistorySchema = /* @__PURE__ */ (() => z2.object({
302
+ items: z2.array(
303
+ z2.object({
304
+ id: amount2,
305
+ program: identifier,
306
+ balance: identifier,
307
+ amount: z2.number().int().safe(),
308
+ at: amount2,
309
+ reason: z2.string()
310
+ })
311
+ ),
312
+ nextCursor: pageCursorSchema.nullable()
313
+ }))();
314
+ var referralManagementSchema = /* @__PURE__ */ (() => z2.object({
315
+ relationships: z2.array(referralRelationshipSchema),
316
+ qualifications: z2.array(
317
+ z2.object({
318
+ member: identifier,
319
+ program: identifier,
320
+ qualified: z2.boolean(),
321
+ qualifiedAt: amount2,
322
+ /** The member import that recorded this qualification, which paid no reward, or null. */
323
+ import: identifier.nullable().optional()
324
+ })
325
+ ),
326
+ accounts: z2.array(
327
+ referralAccountSchema.extend({ member: identifier, invitee: z2.string() })
328
+ ),
329
+ reviews: z2.array(
330
+ z2.object({
331
+ entitlement: identifier,
332
+ member: identifier,
333
+ program: identifier,
334
+ reason: z2.string()
335
+ })
336
+ ),
337
+ nextCursor: pageCursorSchema.nullable().default(null),
338
+ /** @deprecated Use `nextCursor`, passed back as `cursor`. Removed in 2.0.0. */
339
+ next: amount2.nullable()
340
+ }))();
341
+
342
+ // src/offers.ts
343
+ import * as z3 from "zod";
344
+ var quantity = /* @__PURE__ */ (() => z3.number().int().safe().nonnegative())();
345
+ var offerPriceSchema = /* @__PURE__ */ (() => pointsRewardSchema.extend({
346
+ amount: z3.number().int().positive().max(maxPointsAmount)
347
+ }))();
348
+ var offerLimitSchema = /* @__PURE__ */ (() => z3.object({ perMember: z3.number().int().positive().max(1e4) }).strict())();
349
+ var offerDefinitionSchema = /* @__PURE__ */ (() => z3.object({
350
+ id: identifier,
351
+ key: identifier.optional(),
352
+ title: z3.string().trim().min(1).max(120),
353
+ price: offerPriceSchema,
354
+ reward: tierRewardSchema,
355
+ stock: quantity.max(1e6),
356
+ limit: offerLimitSchema.default({ perMember: 1 }),
357
+ /**
358
+ * What a member must meet to redeem, the same prerequisites quests take: `completed`,
359
+ * `balanceAtLeast` and `inGroup`. Checked when the member redeems; absent, anyone can.
360
+ */
361
+ requires: z3.array(prerequisiteSchema).max(30).optional(),
362
+ enabled: z3.boolean().default(true)
363
+ }).strict())();
364
+ var offerAuthoringSchema = /* @__PURE__ */ (() => offerDefinitionSchema.omit({ id: true, title: true, enabled: true }).extend({
365
+ ...authoringIdentityShape,
366
+ title: z3.string().trim().min(1).max(120).optional(),
367
+ // `defineOffer` returns `enabled: true`, and a deployment describes the module's default
368
+ // export and parses it again, so the output has to read back. Pause an offer in Console.
369
+ enabled: z3.literal(true).optional()
370
+ }).strict().transform(({ enabled: _, ...offer }) => ({
371
+ ...offer,
372
+ title: offer.title ?? offer.reward.reward.title,
373
+ enabled: true
374
+ })))();
375
+ var offerArtifactSchema = /* @__PURE__ */ (() => z3.union([
376
+ offerAuthoringSchema,
377
+ z3.object({ code: z3.string().min(1).max(2e6) }).strict()
378
+ ]))();
379
+ var offerAvailabilitySchema = /* @__PURE__ */ (() => responseShape(
380
+ z3.discriminatedUnion("kind", [
381
+ z3.object({ kind: z3.literal("available"), remaining: quantity }).strict(),
382
+ z3.object({ kind: z3.literal("out-of-stock") }).strict(),
383
+ z3.object({ kind: z3.literal("limit-reached") }).strict(),
384
+ z3.object({ kind: z3.literal("paused") }).strict()
385
+ ])
386
+ ))();
387
+ var offerSchema = /* @__PURE__ */ (() => responseShape(
388
+ offerDefinitionSchema.extend({
389
+ revision: z3.number().int().positive(),
390
+ available: quantity,
391
+ redeemed: quantity,
392
+ availability: offerAvailabilitySchema,
393
+ /**
394
+ * When an operator archived the offer, or `null`. Only management reads carry it and list an
395
+ * archived offer; it refuses new redemptions with `offer-paused` until it is restored.
396
+ */
397
+ archivedAt: z3.number().int().nonnegative().nullable().optional(),
398
+ /**
399
+ * The prerequisites the signed-in member has not met yet, so an app can show the offer locked
400
+ * and why. Empty when nothing is missing or the read has no member; redeeming while it is not
401
+ * empty fails with `prerequisites-incomplete`.
402
+ */
403
+ missing: z3.array(missingPrerequisiteSchema).default([])
404
+ })
405
+ ))();
406
+ var redeemOfferSchema = /* @__PURE__ */ (() => z3.object({ actionId: identifier }).strict())();
407
+ var redemptionBase = /* @__PURE__ */ (() => ({
408
+ id: identifier,
409
+ offer: identifier,
410
+ member: identifier,
411
+ /**
412
+ * @deprecated Use `id` to refer to a redemption. A redemption is fulfilled in the request that
413
+ * makes it, so nothing is reserved beforehand; the ID refers to no other record. Removed in
414
+ * 2.0.0.
415
+ */
416
+ reservation: identifier,
417
+ price: offerPriceSchema,
418
+ reward: tierRewardSchema,
419
+ entitlement: identifier,
420
+ revision: z3.number().int().positive(),
421
+ redeemedAt: z3.number().int().safe().nonnegative()
422
+ }))();
423
+ var redemptionSchema = /* @__PURE__ */ (() => responseShape(
424
+ z3.discriminatedUnion("status", [
425
+ z3.object({ ...redemptionBase, status: z3.literal("fulfilled") }).strict(),
426
+ z3.object({
427
+ ...redemptionBase,
428
+ status: z3.literal("canceled"),
429
+ canceledAt: z3.number().int().safe().nonnegative(),
430
+ reason: z3.string().min(1).max(500)
431
+ }).strict()
432
+ ])
433
+ ))();
434
+ var redemptionQuerySchema = /* @__PURE__ */ (() => z3.strictObject({
435
+ member: identifier.optional(),
436
+ cursor: pageCursorSchema.optional(),
437
+ limit: z3.coerce.number().int().min(1).max(100).optional()
438
+ }))();
439
+ var redemptionPageSchema = /* @__PURE__ */ (() => z3.object({
440
+ items: z3.array(redemptionSchema),
441
+ nextCursor: pageCursorSchema.nullable()
442
+ }))();
443
+ var offerControlSchema = /* @__PURE__ */ (() => z3.object({
444
+ actionId: identifier,
445
+ revision: z3.number().int().positive(),
446
+ enabled: z3.boolean(),
447
+ reason: z3.string().trim().min(1).max(500)
448
+ }).strict())();
449
+ var redemptionCancellationSchema = /* @__PURE__ */ (() => z3.object({
450
+ actionId: identifier,
451
+ revision: z3.number().int().positive(),
452
+ reason: z3.string().trim().min(1).max(500)
453
+ }).strict())();
454
+ function defineOffer(input) {
455
+ return resourceHandle(
456
+ "offer",
457
+ parseDefinition("Offer", offerAuthoringSchema, input)
458
+ );
459
+ }
460
+
461
+ export {
462
+ engagementBudgetSchema,
463
+ engagementDefinitionSchema,
464
+ engagementScoreInputSchema,
465
+ engagementScoreSchema,
466
+ engagementPublishSchema,
467
+ engagementRuleSchema,
468
+ engagementPageQuerySchema,
469
+ engagementSettlementSchema,
470
+ engagementPageSchema,
471
+ engagementChangePreviewInputSchema,
472
+ engagementChangeSchema,
473
+ engagementChangePreviewSchema,
474
+ engagementRuleVersionPageSchema,
475
+ engagementVersionPageSchema,
476
+ engagementVersionQuerySchema,
477
+ engagementBoundaryPageSchema,
478
+ engagementArtifactSchema,
479
+ engagementDeploymentEntrySchema,
480
+ referralDefinitionSchema,
481
+ referralAuthoringSchema,
482
+ referralArtifactSchema,
483
+ publishedReferralSchema,
484
+ referralAcceptSchema,
485
+ referralSuspensionSchema,
486
+ referralQualificationSchema,
487
+ referralRewardResolutionSchema,
488
+ referralControlSchema,
489
+ referralRelationshipSchema,
490
+ referralAccountSchema,
491
+ referralSummarySchema,
492
+ referralHistorySchema,
493
+ referralManagementSchema,
494
+ offerPriceSchema,
495
+ offerLimitSchema,
496
+ offerDefinitionSchema,
497
+ offerAuthoringSchema,
498
+ offerArtifactSchema,
499
+ offerAvailabilitySchema,
500
+ offerSchema,
501
+ redeemOfferSchema,
502
+ redemptionSchema,
503
+ redemptionQuerySchema,
504
+ redemptionPageSchema,
505
+ offerControlSchema,
506
+ redemptionCancellationSchema,
507
+ defineOffer
508
+ };
@@ -0,0 +1,41 @@
1
+ // src/youtube.ts
2
+ import * as z from "zod";
3
+ var youtubeShortBodySchema = /* @__PURE__ */ (() => z.object({
4
+ title: z.string(),
5
+ description: z.string(),
6
+ tags: z.array(z.string()),
7
+ durationSeconds: z.number().int().nonnegative(),
8
+ /** When the video was published, epoch milliseconds. */
9
+ publishedAt: z.number().int().nonnegative()
10
+ }))();
11
+ var youtubeShortMetrics = ["views", "likes", "comments"];
12
+
13
+ // src/tiktok.ts
14
+ import * as z2 from "zod";
15
+ var tiktokVideoBodySchema = /* @__PURE__ */ (() => z2.object({
16
+ title: z2.string(),
17
+ /** The creator's caption, `video_description` in TikTok's API. */
18
+ description: z2.string(),
19
+ durationSeconds: z2.number().int().nonnegative(),
20
+ width: z2.number().int().nonnegative(),
21
+ height: z2.number().int().nonnegative(),
22
+ /** When the video was posted, epoch milliseconds. */
23
+ createdAt: z2.number().int().nonnegative(),
24
+ /** TikTok's shareable link to the video. */
25
+ shareUrl: z2.string(),
26
+ /** Whether the creator labelled the video as AI-generated content. */
27
+ isAigc: z2.boolean()
28
+ }))();
29
+ var tiktokVideoMetrics = [
30
+ "views",
31
+ "likes",
32
+ "comments",
33
+ "shares"
34
+ ];
35
+
36
+ export {
37
+ youtubeShortBodySchema,
38
+ youtubeShortMetrics,
39
+ tiktokVideoBodySchema,
40
+ tiktokVideoMetrics
41
+ };
@@ -20,6 +20,7 @@ var participantRoutes = [
20
20
  { method: "POST", path: "/v1/auth/logout" },
21
21
  { method: "GET", path: "/v1/auth/accounts" },
22
22
  { method: "GET", path: "/v1/auth/accounts/telegram" },
23
+ { method: "GET", path: "/v1/auth/sign-in-accounts" },
23
24
  { method: "GET", path: "/v1/auth/creator-accounts" },
24
25
  { method: "POST", path: "/v1/auth/accounts/disconnect" },
25
26
  { method: "POST", path: "/v1/auth/telegram/mini-app" },
@@ -52,6 +53,9 @@ var participantRoutes = [
52
53
  { method: "GET", path: "/v1/me/profile" },
53
54
  { method: "POST", path: "/v1/me/profile" },
54
55
  { method: "POST", path: "/v1/me/profile/avatar" },
56
+ // The member's marketing consent per channel.
57
+ { method: "GET", path: "/v1/me/consent" },
58
+ { method: "POST", path: "/v1/me/consent" },
55
59
  { method: "GET", path: `/v1/profiles/:profile${id}` },
56
60
  { method: "GET", path: `/v1/profiles/:profile${id}/completions` },
57
61
  {
@@ -85,6 +89,7 @@ var participantRoutes = [
85
89
  { method: "GET", path: `/v1/leaderboards/:board${id}` },
86
90
  { method: "GET", path: "/v1/point-ledgers" },
87
91
  { method: "GET", path: "/v1/badges" },
92
+ { method: "GET", path: "/v1/badges/catalog" },
88
93
  { method: "GET", path: "/v1/me/badges" },
89
94
  { method: "GET", path: "/v1/profiles/:profile{[\\w-]+}/badges" },
90
95
  { method: "GET", path: "/v1/tiered-rewards" }
@@ -105,10 +110,10 @@ function participantRoutePattern(path) {
105
110
  });
106
111
  return new RegExp("^" + source.join("") + "$");
107
112
  }
108
- var compiled = participantRoutes.map((route) => ({
113
+ var compiled = /* @__PURE__ */ (() => participantRoutes.map((route) => ({
109
114
  ...route,
110
115
  pattern: participantRoutePattern(route.path)
111
- }));
116
+ })))();
112
117
  function isParticipantRoute(path, method) {
113
118
  return compiled.some(
114
119
  (route) => route.method === method && route.pattern.test(path)
@@ -1,10 +1,10 @@
1
1
  // src/host-environment.ts
2
2
  import * as z from "zod";
3
3
  var hostEnvironmentPath = "/__domino/environment";
4
- var hostEnvironmentSchema = z.object({
4
+ var hostEnvironmentSchema = /* @__PURE__ */ (() => z.object({
5
5
  environment: z.enum(["test", "live"]),
6
6
  kind: z.enum(["staging", "preview", "live"])
7
- });
7
+ }))();
8
8
  var pending;
9
9
  async function readHostEnvironment() {
10
10
  try {
@@ -0,0 +1,18 @@
1
+ // src/origins.ts
2
+ var loopbackHosts = [
3
+ "localhost",
4
+ "127.0.0.1",
5
+ "[::1]"
6
+ ];
7
+ function secureOrLoopbackOrigin(url, options = {}) {
8
+ return url.protocol === "https:" || url.protocol === "http:" && (loopbackHosts.includes(url.hostname) || (options.localHosts ?? []).includes(url.hostname));
9
+ }
10
+ function bareOrigin(url) {
11
+ return !url.username && !url.password && !url.search && !url.hash && url.pathname === "/";
12
+ }
13
+
14
+ export {
15
+ loopbackHosts,
16
+ secureOrLoopbackOrigin,
17
+ bareOrigin
18
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  capabilityFailureSchema
3
- } from "./chunk-4OC7REYX.js";
3
+ } from "./chunk-MWMCQLCG.js";
4
4
  import {
5
5
  contentPerformanceSnapshotSchema,
6
6
  decisionSchema,
@@ -8,12 +8,12 @@ import {
8
8
  rewardBundleSchema,
9
9
  settingsValuesSchema,
10
10
  trackerTriggerContextSchema
11
- } from "./chunk-ZDJLPN4L.js";
11
+ } from "./chunk-ID3BZXFZ.js";
12
12
 
13
13
  // src/server/attempt-captures.ts
14
14
  import * as z from "zod";
15
- var timestamp = z.number().int().nonnegative().safe();
16
- var capturedFactSchema = z.object({
15
+ var timestamp = /* @__PURE__ */ (() => z.number().int().nonnegative().safe())();
16
+ var capturedFactSchema = /* @__PURE__ */ (() => z.object({
17
17
  /** The call's position in the run, from 0. */
18
18
  sequence: z.number().int().nonnegative(),
19
19
  /** The capability request quest code sent, after validation. */
@@ -31,8 +31,8 @@ var capturedFactSchema = z.object({
31
31
  * did not keep, or a call without an answer. A replay cannot answer such a call.
32
32
  */
33
33
  captured: z.boolean()
34
- });
35
- var attemptCaptureSchema = z.object({
34
+ }))();
35
+ var attemptCaptureSchema = /* @__PURE__ */ (() => z.object({
36
36
  format: z.literal(1),
37
37
  attempt: identifier,
38
38
  environment: z.literal("test"),
@@ -71,7 +71,7 @@ var attemptCaptureSchema = z.object({
71
71
  * has decided nothing, and for runs decided before Relay kept decisions.
72
72
  */
73
73
  recorded: decisionSchema.nullable()
74
- });
74
+ }))();
75
75
 
76
76
  export {
77
77
  capturedFactSchema,