summaryrefslogtreecommitdiff
path: root/packages/taler-util/src/codec.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-util/src/codec.ts')
-rw-r--r--packages/taler-util/src/codec.ts13
1 files changed, 12 insertions, 1 deletions
diff --git a/packages/taler-util/src/codec.ts b/packages/taler-util/src/codec.ts
index 54d450d82..b04ce0612 100644
--- a/packages/taler-util/src/codec.ts
+++ b/packages/taler-util/src/codec.ts
@@ -146,7 +146,7 @@ class UnionCodecBuilder<
constructor(
private discriminator: TagPropertyLabel,
private baseCodec?: Codec<CommonBaseType>,
- ) {}
+ ) { }
/**
* Define a property for the object.
@@ -491,6 +491,17 @@ export function codecOptional<V>(innerCodec: Codec<V>): Codec<V | undefined> {
};
}
+export function codecOptionalDefault<V>(innerCodec: Codec<V>, def: V): Codec<V> {
+ return {
+ decode(x: any, c?: Context): V {
+ if (x === undefined || x === null) {
+ return def;
+ }
+ return innerCodec.decode(x, c);
+ },
+ };
+}
+
export function codecForLazy<V>(innerCodec: () => Codec<V>): Codec<V> {
let instance: Codec<V> | undefined = undefined
return {