@moneypot/hub 1.3.0-dev.6 → 1.3.0-dev.7

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.
@@ -60,6 +60,9 @@ declare const InputSchema: z.ZodObject<{
60
60
  metadata?: Record<string, any> | undefined;
61
61
  }>;
62
62
  type Input = z.infer<typeof InputSchema>;
63
+ type InputWithoutMetadata = Omit<Input, "metadata"> & {
64
+ metadata?: never;
65
+ };
63
66
  type Outcome = z.infer<typeof OutcomeSchema>;
64
67
  type FinalizeMetadataData = {
65
68
  clientSeed: string;
@@ -70,8 +73,8 @@ type FinalizeMetadataData = {
70
73
  export type OutcomeBetConfig = {
71
74
  houseEdge: number;
72
75
  saveOutcomes: boolean;
73
- initializeMetadata?: (input: Input) => Result<Record<string, any>, string>;
74
- finalizeMetadata?: (input: Input, metadata: Record<string, any>, data: FinalizeMetadataData) => Record<string, any>;
76
+ validateUntrustedMetadata?: (input: Input) => Result<Record<string, any>, string>;
77
+ finalizeMetadata?: (input: InputWithoutMetadata, validatedMetadata: Record<string, any>, data: FinalizeMetadataData) => Record<string, any>;
75
78
  };
76
79
  export type OutcomeBetConfigMap<BetKind extends string> = {
77
80
  [betKind in BetKind]: OutcomeBetConfig;
@@ -52,7 +52,7 @@ const BetConfigsSchema = z.record(BetKindSchema, z.object({
52
52
  .gte(0, "House edge must be >= 0")
53
53
  .lte(1, "House edge must be <= 1"),
54
54
  saveOutcomes: z.boolean(),
55
- initializeMetadata: z
55
+ validateUntrustedMetadata: z
56
56
  .function()
57
57
  .optional(),
58
58
  finalizeMetadata: z
@@ -122,8 +122,8 @@ export function MakeOutcomeBetPlugin({ betConfigs }) {
122
122
  throw new GraphQLError(`Invalid bet kind`);
123
123
  }
124
124
  let validatedMetadata;
125
- if (betConfig.initializeMetadata) {
126
- const result = betConfig.initializeMetadata(input);
125
+ if (betConfig.validateUntrustedMetadata) {
126
+ const result = betConfig.validateUntrustedMetadata(input);
127
127
  if (result.ok) {
128
128
  validatedMetadata = result.value;
129
129
  }
@@ -281,7 +281,7 @@ export function MakeOutcomeBetPlugin({ betConfigs }) {
281
281
  outcomeIdx,
282
282
  });
283
283
  const finalizedMetadata = betConfig.finalizeMetadata
284
- ? betConfig.finalizeMetadata(input, validatedMetadata, immutableData)
284
+ ? betConfig.finalizeMetadata(withoutKey(input, "metadata"), validatedMetadata, immutableData)
285
285
  : validatedMetadata;
286
286
  const newBet = {
287
287
  kind: rawInput.kind,
@@ -473,3 +473,7 @@ async function finishHashChainInBackground({ hashChainId, }) {
473
473
  });
474
474
  }
475
475
  }
476
+ function withoutKey(obj, key) {
477
+ const { [key]: _, ...rest } = obj;
478
+ return rest;
479
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneypot/hub",
3
- "version": "1.3.0-dev.6",
3
+ "version": "1.3.0-dev.7",
4
4
  "author": "moneypot.com",
5
5
  "homepage": "https://moneypot.com/hub",
6
6
  "keywords": [