@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
|
-
|
|
74
|
-
finalizeMetadata?: (input:
|
|
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
|
-
|
|
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.
|
|
126
|
-
const result = betConfig.
|
|
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
|
+
}
|