@domino-sdk/relay 0.7.0 → 0.8.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.
@@ -1,5 +1,5 @@
1
- import { O as Observation, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, I as IntegrationProvider } from './settings-CU_oBcx0.js';
2
- export { d as defineLeaderboard, b as defineReferral, c as discord, s as settings } from './settings-CU_oBcx0.js';
1
+ import { O as Observation, D as DiscordMember, a as DiscordMessage, W as WalletConnection, S as SolanaBalance, o as observationTriggerSchema, B as Budget, A as AuthoringIdentity, I as IntegrationProvider } from './settings-BA8XjT4m.js';
2
+ export { d as defineLeaderboard, b as defineReferral, c as discord, p as pointLedgers, s as settings } from './settings-BA8XjT4m.js';
3
3
  import { z } from 'zod';
4
4
  import { PhotoResult, rewardSchema, triggerSchema, QuestPresentation, QuizEvidence, Decision, TieredRewardDefinition } from './schema.js';
5
5
 
@@ -68,9 +68,7 @@ declare const keyed: (key: (ctx: {
68
68
  eligibleAt: number;
69
69
  }) => string;
70
70
  };
71
- declare const completed: (quest: {
72
- id: string;
73
- } | string) => {
71
+ declare const completed: (quest: AuthoringIdentity | string) => {
74
72
  quest: string;
75
73
  scope: "ever";
76
74
  };
@@ -80,7 +78,9 @@ declare const untracked: () => {
80
78
  declare const staffHandover: () => {
81
79
  kind: "staff-handover";
82
80
  };
83
- declare function defineTieredReward(input: TieredRewardDefinition): {
81
+ declare function defineTieredReward(input: Omit<TieredRewardDefinition, "id"> & AuthoringIdentity): {
82
+ key: string;
83
+ /** @deprecated Authoring key alias. Use key. */
84
84
  id: string;
85
85
  tier: (tier: string) => {
86
86
  kind: "tier";
@@ -177,8 +177,7 @@ type QuestInput<T extends Trigger> = T extends {
177
177
  } : T extends {
178
178
  input: "quiz";
179
179
  } ? QuizEvidence : Record<string, never>;
180
- declare function defineQuest<T extends Record<string, z.ZodType>, const G extends Trigger>(definition: {
181
- id: string;
180
+ declare function defineQuest<T extends Record<string, z.ZodType>, const G extends Trigger>(definition: AuthoringIdentity & {
182
181
  title: string | ((ctx: {
183
182
  settings: z.output<z.ZodObject<T>>;
184
183
  }) => string);
@@ -202,6 +201,8 @@ declare function defineQuest<T extends Record<string, z.ZodType>, const G extend
202
201
  }) => Reward[]);
203
202
  evaluate?: Evaluator<z.output<z.ZodObject<T>>, QuestInput<G>>;
204
203
  }): {
204
+ key: string;
205
+ /** @deprecated Authoring key alias. Use key. */
205
206
  id: string;
206
207
  describe: (input: unknown) => {
207
208
  quest: string;
@@ -242,6 +243,9 @@ declare function defineQuest<T extends Record<string, z.ZodType>, const G extend
242
243
  kind: "resource";
243
244
  default: string;
244
245
  source: {
246
+ provider: "domino";
247
+ resource: "point-ledger";
248
+ } | {
245
249
  provider: "discord";
246
250
  resource: "channel";
247
251
  types: ("text" | "announcement")[];
@@ -365,7 +369,7 @@ declare function defineQuest<T extends Record<string, z.ZodType>, const G extend
365
369
  humanReview: boolean;
366
370
  }): Promise<Decision>;
367
371
  };
368
- /** Publish this artifact as a reusable type. Its id identifies the type;
372
+ /** Publish this artifact as a reusable type. Its key names the type;
369
373
  * Console instances receive independent quest identities and pinned versions. */
370
374
  declare const defineQuestType: typeof defineQuest;
371
375
 
package/dist/authoring.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import {
2
+ authoringKey,
2
3
  defineLeaderboard,
3
4
  defineReferral
4
- } from "./chunk-TYVT5BPZ.js";
5
+ } from "./chunk-XVHWBZRG.js";
5
6
  import {
6
7
  budgetSchema,
7
8
  decisionSchema,
8
9
  discord,
9
10
  integrationRewardSchema,
10
11
  parseSettings,
12
+ pointLedgers,
11
13
  pointsRewardSchema,
12
14
  questDescriptionSchema,
13
15
  quizAnswersSchema,
@@ -16,7 +18,7 @@ import {
16
18
  settings,
17
19
  tierRewardSchema,
18
20
  tieredRewardDefinitionSchema
19
- } from "./chunk-6QUCADMF.js";
21
+ } from "./chunk-Z43O273V.js";
20
22
 
21
23
  // src/authoring.ts
22
24
  import { z } from "zod";
@@ -45,14 +47,18 @@ var automatic = (observation) => ({
45
47
  var budget = (definition) => budgetSchema.parse(definition);
46
48
  var keyed = (key) => ({ kind: "keyed", key });
47
49
  var completed = (quest) => ({
48
- quest: typeof quest === "string" ? quest : quest.id,
50
+ quest: typeof quest === "string" ? quest : authoringKey(quest),
49
51
  scope: "ever"
50
52
  });
51
53
  var untracked = () => ({ kind: "untracked" });
52
54
  var staffHandover = () => ({ kind: "staff-handover" });
53
55
  function defineTieredReward(input) {
54
- const reward = tieredRewardDefinitionSchema.parse(input);
56
+ const { key: _, id: __, ...properties } = input;
57
+ const key = authoringKey(input);
58
+ const reward = tieredRewardDefinitionSchema.parse({ id: key, ...properties });
55
59
  return {
60
+ key: reward.id,
61
+ /** @deprecated Authoring key alias. Use key. */
56
62
  id: reward.id,
57
63
  tier: (tier) => tierRewardSchema.parse({ kind: "tier", reward, tier })
58
64
  };
@@ -99,11 +105,12 @@ var evaluators = {
99
105
  }
100
106
  };
101
107
  function defineQuest(definition) {
108
+ const key = authoringKey(definition);
102
109
  if (definition.trigger.kind === "manual" && definition.trigger.input !== "none" && !definition.evaluate)
103
110
  throw new Error("Evidence quests require an evaluator");
104
111
  const fields = Object.fromEntries(
105
- Object.entries(definition.settings.shape).map(([key, schema]) => [
106
- key,
112
+ Object.entries(definition.settings.shape).map(([key2, schema]) => [
113
+ key2,
107
114
  settingFieldSchema.parse(schema.meta())
108
115
  ])
109
116
  );
@@ -114,7 +121,7 @@ function defineQuest(definition) {
114
121
  typeof definition.rewards === "function" ? definition.rewards({ settings: settings2 }) : definition.rewards
115
122
  );
116
123
  return questDescriptionSchema.parse({
117
- quest: definition.id,
124
+ quest: key,
118
125
  runtimeVersion: 2,
119
126
  title: typeof definition.title === "function" ? definition.title({ settings: settings2 }) : definition.title,
120
127
  presentation: definition.presentation?.({ settings: settings2 }) ?? {},
@@ -130,7 +137,7 @@ function defineQuest(definition) {
130
137
  (reward) => reward.kind === "integration" ? [reward.provider] : []
131
138
  ),
132
139
  ...Object.values(fields).flatMap(
133
- (field) => field.kind === "resource" ? [field.source.provider] : []
140
+ (field) => field.kind === "resource" && field.source.provider !== "domino" ? [field.source.provider] : []
134
141
  )
135
142
  ])
136
143
  ],
@@ -141,7 +148,9 @@ function defineQuest(definition) {
141
148
  });
142
149
  }
143
150
  return {
144
- id: definition.id,
151
+ key,
152
+ /** @deprecated Authoring key alias. Use key. */
153
+ id: key,
145
154
  describe,
146
155
  async evaluate(ctx) {
147
156
  const settings2 = definition.settings.parse(ctx.settings);
@@ -186,6 +195,7 @@ export {
186
195
  keyed,
187
196
  manual,
188
197
  once,
198
+ pointLedgers,
189
199
  points,
190
200
  settings,
191
201
  staffHandover,
package/dist/browser.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SubmitInput, ReviewListOptions, MemberListOptions, ReleaseInput, beginHandoverSchema } from './schema.js';
2
2
  import { SubmissionStore, createRelayClient, QuestView, QuestController, ProgressObservation, questExperienceSchema, ProgressObserver, ExchangeInput, PhotoSubmission, QuizSubmission, ClaimSubmission } from './index.js';
3
- import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, e as walletProofSchema, A as AuthProvider } from './settings-CU_oBcx0.js';
3
+ import { r as referralAcceptSchema, L as LeaderboardQuery, w as walletChallengeInputSchema, e as walletProofSchema, f as AuthProvider } from './settings-BA8XjT4m.js';
4
4
  import * as zod from 'zod';
5
5
 
6
6
  /** Browser client with durable submission recovery; safe to construct during SSR. */
@@ -99,6 +99,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
99
99
  durationDays?: number | undefined;
100
100
  maxPoints?: number | undefined;
101
101
  }[];
102
+ key?: string | undefined;
102
103
  inviterGroup?: string | undefined;
103
104
  }[]>;
104
105
  summary: () => Promise<{
@@ -198,6 +199,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
198
199
  durationDays?: number | undefined;
199
200
  maxPoints?: number | undefined;
200
201
  }[];
202
+ key?: string | undefined;
201
203
  inviterGroup?: string | undefined;
202
204
  };
203
205
  qualified: number;
@@ -274,6 +276,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
274
276
  };
275
277
  };
276
278
  access: "participants" | "public";
279
+ key?: string | undefined;
277
280
  group?: string | undefined;
278
281
  }[]>;
279
282
  standings: (board: string, options?: LeaderboardQuery) => Promise<{
@@ -442,6 +445,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
442
445
  rewards: {
443
446
  label: string;
444
447
  }[];
448
+ key?: string | undefined;
445
449
  }>;
446
450
  retry: (view: QuestView) => Promise<{
447
451
  id: string;
@@ -621,6 +625,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
621
625
  rewards: {
622
626
  label: string;
623
627
  }[];
628
+ key?: string | undefined;
624
629
  }[];
625
630
  collections: {
626
631
  id: string;
@@ -754,7 +759,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
754
759
  rewards: {
755
760
  label: string;
756
761
  }[];
762
+ key?: string | undefined;
757
763
  }[];
764
+ key?: string | undefined;
758
765
  }[];
759
766
  }>;
760
767
  collection: (id: string) => Promise<{
@@ -889,7 +896,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
889
896
  rewards: {
890
897
  label: string;
891
898
  }[];
899
+ key?: string | undefined;
892
900
  }[];
901
+ key?: string | undefined;
893
902
  }>;
894
903
  open: (view: QuestView) => Promise<QuestController>;
895
904
  observe: (listener: (value: ProgressObservation<zod.infer<typeof questExperienceSchema>>) => void, options?: {
@@ -1208,6 +1217,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1208
1217
  release?: string | undefined;
1209
1218
  } | undefined;
1210
1219
  } | null;
1220
+ key?: string | undefined;
1211
1221
  release?: string | undefined;
1212
1222
  }[];
1213
1223
  entitlements: ({
@@ -1487,6 +1497,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1487
1497
  provider: "discord";
1488
1498
  resource: "channel";
1489
1499
  types: ("text" | "announcement")[];
1500
+ } | {
1501
+ provider: "domino";
1502
+ resource: "point-ledger";
1490
1503
  } | {
1491
1504
  provider: "discord";
1492
1505
  resource: "role";
@@ -1595,7 +1608,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1595
1608
  budgets: {
1596
1609
  id: string;
1597
1610
  scope: "project" | "member";
1598
- period: "day" | "lifetime";
1611
+ period: "lifetime" | "day";
1599
1612
  limit: number;
1600
1613
  cost: number | {
1601
1614
  balance: string;
@@ -1647,6 +1660,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1647
1660
  provider: "discord";
1648
1661
  resource: "channel";
1649
1662
  types: ("text" | "announcement")[];
1663
+ } | {
1664
+ provider: "domino";
1665
+ resource: "point-ledger";
1650
1666
  } | {
1651
1667
  provider: "discord";
1652
1668
  resource: "role";
@@ -1755,7 +1771,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1755
1771
  budgets: {
1756
1772
  id: string;
1757
1773
  scope: "project" | "member";
1758
- period: "day" | "lifetime";
1774
+ period: "lifetime" | "day";
1759
1775
  limit: number;
1760
1776
  cost: number | {
1761
1777
  balance: string;
@@ -1806,6 +1822,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1806
1822
  provider: "discord";
1807
1823
  resource: "channel";
1808
1824
  types: ("text" | "announcement")[];
1825
+ } | {
1826
+ provider: "domino";
1827
+ resource: "point-ledger";
1809
1828
  } | {
1810
1829
  provider: "discord";
1811
1830
  resource: "role";
@@ -1914,7 +1933,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1914
1933
  budgets: {
1915
1934
  id: string;
1916
1935
  scope: "project" | "member";
1917
- period: "day" | "lifetime";
1936
+ period: "lifetime" | "day";
1918
1937
  limit: number;
1919
1938
  cost: number | {
1920
1939
  balance: string;
@@ -1926,6 +1945,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
1926
1945
  createdAt: number;
1927
1946
  legacy: boolean;
1928
1947
  lifecycle: "active" | "paused" | "archived";
1948
+ key?: string | undefined;
1929
1949
  origin?: {
1930
1950
  typeVersion: string;
1931
1951
  } | undefined;
@@ -2139,6 +2159,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2139
2159
  provider: "discord";
2140
2160
  resource: "channel";
2141
2161
  types: ("text" | "announcement")[];
2162
+ } | {
2163
+ provider: "domino";
2164
+ resource: "point-ledger";
2142
2165
  } | {
2143
2166
  provider: "discord";
2144
2167
  resource: "role";
@@ -2247,7 +2270,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2247
2270
  budgets: {
2248
2271
  id: string;
2249
2272
  scope: "project" | "member";
2250
- period: "day" | "lifetime";
2273
+ period: "lifetime" | "day";
2251
2274
  limit: number;
2252
2275
  cost: number | {
2253
2276
  balance: string;
@@ -2259,6 +2282,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2259
2282
  createdAt: number;
2260
2283
  legacy: boolean;
2261
2284
  lifecycle: "active" | "paused" | "archived";
2285
+ key?: string | undefined;
2262
2286
  origin?: {
2263
2287
  typeVersion: string;
2264
2288
  } | undefined;
@@ -2326,6 +2350,9 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2326
2350
  provider: "discord";
2327
2351
  resource: "channel";
2328
2352
  types: ("text" | "announcement")[];
2353
+ } | {
2354
+ provider: "domino";
2355
+ resource: "point-ledger";
2329
2356
  } | {
2330
2357
  provider: "discord";
2331
2358
  resource: "role";
@@ -2434,7 +2461,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2434
2461
  budgets: {
2435
2462
  id: string;
2436
2463
  scope: "project" | "member";
2437
- period: "day" | "lifetime";
2464
+ period: "lifetime" | "day";
2438
2465
  limit: number;
2439
2466
  cost: number | {
2440
2467
  balance: string;
@@ -2446,6 +2473,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2446
2473
  createdAt: number;
2447
2474
  legacy: boolean;
2448
2475
  lifecycle: "active" | "paused" | "archived";
2476
+ key?: string | undefined;
2449
2477
  origin?: {
2450
2478
  typeVersion: string;
2451
2479
  } | undefined;
@@ -2596,6 +2624,7 @@ declare function createBrowserRelayClient(options: Parameters<typeof createRelay
2596
2624
  release?: string | undefined;
2597
2625
  } | undefined;
2598
2626
  } | null;
2627
+ key?: string | undefined;
2599
2628
  release?: string | undefined;
2600
2629
  }[];
2601
2630
  entitlements: ({
package/dist/browser.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  createRelayClient
3
- } from "./chunk-LXLNC4CN.js";
4
- import "./chunk-TYVT5BPZ.js";
5
- import "./chunk-36LZ3IOO.js";
6
- import "./chunk-6QUCADMF.js";
3
+ } from "./chunk-APMYDKEX.js";
4
+ import "./chunk-XVHWBZRG.js";
5
+ import "./chunk-2BN7XZH3.js";
6
+ import "./chunk-Z43O273V.js";
7
7
 
8
8
  // src/browser.ts
9
9
  function createBrowserRelayClient(options) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  identifier
3
- } from "./chunk-6QUCADMF.js";
3
+ } from "./chunk-Z43O273V.js";
4
4
 
5
5
  // src/auth.ts
6
6
  import { z } from "zod";
@@ -1,21 +1,24 @@
1
1
  import {
2
+ authoringIdentityShape,
2
3
  leaderboardArtifactSchema,
3
4
  leaderboardDefinitionSchema,
4
5
  leaderboardPageSchema,
5
6
  leaderboardPreviewSchema,
6
7
  leaderboardQuerySchema,
8
+ normalizeAuthoringIdentity,
7
9
  publishedReferralSchema,
8
10
  referralAcceptSchema,
9
11
  referralArtifactSchema,
10
12
  referralDefinitionSchema,
11
13
  referralHistorySchema,
12
- referralSummarySchema
13
- } from "./chunk-TYVT5BPZ.js";
14
+ referralSummarySchema,
15
+ validateAuthoringIdentity
16
+ } from "./chunk-XVHWBZRG.js";
14
17
  import {
15
18
  authScopeSchema,
16
19
  exchangeResultSchema,
17
20
  sessionSchema
18
- } from "./chunk-36LZ3IOO.js";
21
+ } from "./chunk-2BN7XZH3.js";
19
22
  import {
20
23
  accountConnectionSchema,
21
24
  attemptSchema,
@@ -39,15 +42,19 @@ import {
39
42
  settingsValuesSchema,
40
43
  snapshotSchema,
41
44
  templateSchema
42
- } from "./chunk-6QUCADMF.js";
45
+ } from "./chunk-Z43O273V.js";
43
46
 
44
47
  // src/point-ledgers.ts
45
48
  import { z } from "zod";
46
- var pointLedgerSchema = z.object({
47
- id: identifier,
49
+ var pointLedgerPropertiesSchema = z.object({
48
50
  name: z.string().trim().min(1).max(120),
49
51
  description: z.string().trim().max(1e3).default("")
50
52
  }).strict();
53
+ var createPointLedgerSchema = pointLedgerPropertiesSchema.extend({ actionId: identifier, key: identifier.optional() }).strict();
54
+ var pointLedgerSchema = pointLedgerPropertiesSchema.extend({
55
+ id: identifier
56
+ });
57
+ var pointLedgerDeclarationSchema = pointLedgerPropertiesSchema.extend({ key: identifier }).strict();
51
58
 
52
59
  // src/reward-deliveries.ts
53
60
  import { z as z2 } from "zod";
@@ -70,19 +77,6 @@ var rewardDeliveriesSchema = z2.object({
70
77
  deliveries: z2.array(rewardDeliverySchema)
71
78
  });
72
79
 
73
- // src/resource-id.ts
74
- var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
75
- function resourceId(prefix) {
76
- let suffix = "";
77
- while (suffix.length < 22) {
78
- for (const byte of crypto.getRandomValues(new Uint8Array(32))) {
79
- if (byte < 248) suffix += alphabet[byte % 62];
80
- if (suffix.length === 22) break;
81
- }
82
- }
83
- return `${prefix}_${suffix}`;
84
- }
85
-
86
80
  // src/catalog.ts
87
81
  import { z as z3 } from "zod";
88
82
  var interactionSchema = z3.enum([
@@ -96,6 +90,7 @@ function questInteraction(trigger) {
96
90
  return trigger.kind === "automatic" ? "automatic" : trigger.actor === "staff" ? "staff" : trigger.input === "none" ? "claim" : trigger.input;
97
91
  }
98
92
  var questTypeVersionSchema = z3.object({
93
+ key: identifier.optional(),
99
94
  id: identifier,
100
95
  version: identifier,
101
96
  code: z3.string(),
@@ -103,7 +98,12 @@ var questTypeVersionSchema = z3.object({
103
98
  provider: reviewModeSchema,
104
99
  createdAt: z3.number()
105
100
  });
106
- var collectionSlotSchema = z3.object({ id: identifier, title: z3.string().trim().min(1).max(120) }).strict();
101
+ var collectionSlotSchema = z3.object({
102
+ id: identifier,
103
+ key: identifier.optional(),
104
+ title: z3.string().trim().min(1).max(120)
105
+ }).strict();
106
+ var collectionSlotDeclarationSchema = collectionSlotSchema.omit({ id: true }).extend(authoringIdentityShape).strict().superRefine(validateAuthoringIdentity).transform(normalizeAuthoringIdentity);
107
107
  var questCollectionSchema = collectionSlotSchema.extend({
108
108
  quests: z3.array(identifier).max(100).refine(
109
109
  (v) => new Set(v).size === v.length,
@@ -154,7 +154,7 @@ var catalogDeploymentSchema = z3.object({
154
154
  provider: reviewModeSchema
155
155
  })
156
156
  ).max(50).default([]),
157
- collections: z3.array(collectionSlotSchema).max(50).default([]),
157
+ collections: z3.array(collectionSlotDeclarationSchema).max(50).default([]),
158
158
  supportedInteractions: z3.array(interactionSchema).min(1).optional()
159
159
  }).strict();
160
160
  var catalogDeploymentPreviewSchema = z3.object({
@@ -164,7 +164,8 @@ var catalogDeploymentPreviewSchema = z3.object({
164
164
  supportedInteractions: z3.array(interactionSchema)
165
165
  });
166
166
  var saveQuestDraftSchema = z3.object({
167
- id: identifier,
167
+ id: identifier.optional(),
168
+ actionId: identifier,
168
169
  expectedRevision: z3.number().int().nonnegative(),
169
170
  baseRevision: z3.number().int().nonnegative(),
170
171
  changes: questDraftChangesSchema
@@ -179,6 +180,7 @@ var questViewSchema = memberProgressSchema.shape.quests.element.extend(
179
180
  }
180
181
  );
181
182
  var collectionViewSchema = z3.object({
183
+ key: identifier.optional(),
182
184
  id: identifier,
183
185
  title: z3.string(),
184
186
  quests: z3.array(questViewSchema)
@@ -193,6 +195,8 @@ var questPublicationPreviewSchema = z3.object({
193
195
  releases: z3.array(publishedReleaseSchema),
194
196
  affectedCollections: z3.array(questCollectionSchema)
195
197
  });
198
+ var allocateQuestSchema = z3.object({ actionId: identifier }).strict();
199
+ var allocatedQuestSchema = z3.object({ id: identifier });
196
200
 
197
201
  // src/errors.ts
198
202
  var RelayError = class extends Error {
@@ -727,16 +731,18 @@ function questConfiguration(release) {
727
731
  // src/deployments.ts
728
732
  import { z as z7 } from "zod";
729
733
  var projectCatalogArtifactSchema = catalogDeploymentSchema.omit({ expectedRevision: true }).extend({
734
+ pointLedgers: z7.array(pointLedgerDeclarationSchema).max(50).default([]),
730
735
  referrals: z7.array(referralArtifactSchema).max(50).default([]),
731
736
  leaderboards: z7.array(leaderboardArtifactSchema).max(50).default([])
732
737
  });
733
738
  var projectDeploymentSchema = projectCatalogArtifactSchema.extend({ releases: z7.array(releaseSchema).max(50).default([]) }).refine(
734
- (value) => value.releases.length > 0 || value.leaderboards.length > 0 || value.referrals.length > 0 || value.types.length > 0 || value.collections.length > 0 || value.supportedInteractions !== void 0,
735
- "No resources configured. Add quests, questTypes, leaderboards, collections, or supportedInteractions to relay.json."
739
+ (value) => value.pointLedgers.length > 0 || value.releases.length > 0 || value.leaderboards.length > 0 || value.referrals.length > 0 || value.types.length > 0 || value.collections.length > 0 || value.supportedInteractions !== void 0,
740
+ "No resources configured. Add quests, questTypes, pointLedgers, leaderboards, referrals, collections, or supportedInteractions to relay.json."
736
741
  );
737
742
  var deploymentPreviewSchema = z7.object({
738
743
  id: identifier,
739
744
  baseRevision: z7.number().int().nonnegative(),
745
+ pointLedgers: z7.array(pointLedgerSchema).default([]),
740
746
  releases: z7.array(publishedReleaseSchema),
741
747
  types: z7.array(questTypeVersionSchema),
742
748
  collections: z7.array(questCollectionSchema),
@@ -878,7 +884,9 @@ function createRelayClient(options) {
878
884
  }
879
885
  const experience = () => request("/v1/me/experience", questExperienceSchema);
880
886
  async function getQuest(id) {
881
- const quest = (await experience()).quests.find((q) => q.quest === id);
887
+ const quest = (await experience()).quests.find(
888
+ (q) => q.quest === id || q.key === id
889
+ );
882
890
  if (!quest) throw new RelayError("Quest not found", 404);
883
891
  return quest;
884
892
  }
@@ -931,7 +939,7 @@ function createRelayClient(options) {
931
939
  experience,
932
940
  collection: async (id) => {
933
941
  const collection = (await experience()).collections.find(
934
- (c) => c.id === id
942
+ (c) => c.id === id || c.key === id
935
943
  );
936
944
  if (!collection) throw new RelayError("Collection not found", 404);
937
945
  return collection;
@@ -1132,14 +1140,17 @@ function createRelayClient(options) {
1132
1140
  }
1133
1141
 
1134
1142
  export {
1143
+ pointLedgerPropertiesSchema,
1144
+ createPointLedgerSchema,
1135
1145
  pointLedgerSchema,
1146
+ pointLedgerDeclarationSchema,
1136
1147
  rewardDeliverySchema,
1137
1148
  rewardDeliveriesSchema,
1138
- resourceId,
1139
1149
  interactionSchema,
1140
1150
  questInteraction,
1141
1151
  questTypeVersionSchema,
1142
1152
  collectionSlotSchema,
1153
+ collectionSlotDeclarationSchema,
1143
1154
  questCollectionSchema,
1144
1155
  questInstanceSchema,
1145
1156
  questDraftChangesSchema,
@@ -1153,6 +1164,8 @@ export {
1153
1164
  collectionViewSchema,
1154
1165
  questExperienceSchema,
1155
1166
  questPublicationPreviewSchema,
1167
+ allocateQuestSchema,
1168
+ allocatedQuestSchema,
1156
1169
  RelayError,
1157
1170
  QuestUpdatedError,
1158
1171
  reconcileQuestDraft,