File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2,6 +2,30 @@ import {Value} from "../pb/shared.struct_pb.js";
22
33type AllowedValue = null | number | string | boolean | Array < AllowedValue > | object ;
44
5+ export function toAllowedValue ( value : Value ) : AllowedValue {
6+ switch ( value . kind . oneofKind ) {
7+ case "nullValue" :
8+ return null ;
9+ case "numberValue" :
10+ return value . kind . numberValue ;
11+ case "stringValue" :
12+ return value . kind . stringValue ;
13+ case "boolValue" :
14+ return value . kind . boolValue ;
15+ case "listValue" :
16+ return value . kind . listValue . values . map ( toAllowedValue ) ;
17+ case "structValue" :
18+ const obj : { [ key : string ] : AllowedValue } = { } ;
19+ for ( const [ k , v ] of Object . entries ( value . kind . structValue . fields ) ) {
20+ obj [ k ] = toAllowedValue ( v ) ;
21+ }
22+ return obj ;
23+ default :
24+ throw new Error ( `Unsupported Value kind: ${ value . kind . oneofKind } ` ) ;
25+ }
26+ }
27+
28+
529export function constructValue ( value : AllowedValue ) : Value {
630 if ( value === null ) {
731 return { kind : { oneofKind : "nullValue" , nullValue : 0 } } ;
@@ -37,4 +61,4 @@ export function constructValue(value: AllowedValue): Value {
3761 } ;
3862 }
3963 throw new Error ( `Unsupported value type: ${ typeof value } ` ) ;
40- }
64+ }
You can’t perform that action at this time.
0 commit comments