You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.5 KiB
62 lines
2.5 KiB
1 month ago
|
import { type DescEnum, type DescMessage } from "./descriptors.js";
|
||
|
import type { JsonValue } from "./json-value.js";
|
||
|
import type { Registry } from "./registry.js";
|
||
|
import type { EnumJsonType, EnumShape, MessageJsonType, MessageShape } from "./types.js";
|
||
|
/**
|
||
|
* Options for serializing to JSON.
|
||
|
*/
|
||
|
export interface JsonWriteOptions {
|
||
|
/**
|
||
|
* By default, fields with implicit presence are not serialized if they are
|
||
|
* unset. For example, an empty list field or a proto3 int32 field with 0 is
|
||
|
* not serialized. With this option enabled, such fields are included in the
|
||
|
* output.
|
||
|
*/
|
||
|
alwaysEmitImplicit: boolean;
|
||
|
/**
|
||
|
* Emit enum values as integers instead of strings: The name of an enum
|
||
|
* value is used by default in JSON output. An option may be provided to
|
||
|
* use the numeric value of the enum value instead.
|
||
|
*/
|
||
|
enumAsInteger: boolean;
|
||
|
/**
|
||
|
* Use proto field name instead of lowerCamelCase name: By default proto3
|
||
|
* JSON printer should convert the field name to lowerCamelCase and use
|
||
|
* that as the JSON name. An implementation may provide an option to use
|
||
|
* proto field name as the JSON name instead. Proto3 JSON parsers are
|
||
|
* required to accept both the converted lowerCamelCase name and the proto
|
||
|
* field name.
|
||
|
*/
|
||
|
useProtoFieldName: boolean;
|
||
|
/**
|
||
|
* This option is required to write `google.protobuf.Any` and extensions
|
||
|
* to JSON format.
|
||
|
*/
|
||
|
registry?: Registry;
|
||
|
}
|
||
|
/**
|
||
|
* Options for serializing to JSON.
|
||
|
*/
|
||
|
export interface JsonWriteStringOptions extends JsonWriteOptions {
|
||
|
prettySpaces: number;
|
||
|
}
|
||
|
/**
|
||
|
* Serialize the message to a JSON value, a JavaScript value that can be
|
||
|
* passed to JSON.stringify().
|
||
|
*/
|
||
|
export declare function toJson<Desc extends DescMessage, Opts extends Partial<JsonWriteOptions> | undefined = undefined>(schema: Desc, message: MessageShape<Desc>, options?: Opts): ToJson<Desc, Opts>;
|
||
|
type ToJson<Desc extends DescMessage, Opts extends undefined | Partial<JsonWriteOptions>> = Opts extends undefined | {
|
||
|
alwaysEmitImplicit?: false;
|
||
|
enumAsInteger?: false;
|
||
|
useProtoFieldName?: false;
|
||
|
} ? MessageJsonType<Desc> : JsonValue;
|
||
|
/**
|
||
|
* Serialize the message to a JSON string.
|
||
|
*/
|
||
|
export declare function toJsonString<Desc extends DescMessage>(schema: Desc, message: MessageShape<Desc>, options?: Partial<JsonWriteStringOptions>): string;
|
||
|
/**
|
||
|
* Serialize a single enum value to JSON.
|
||
|
*/
|
||
|
export declare function enumToJson<Desc extends DescEnum>(descEnum: Desc, value: EnumShape<Desc>): EnumJsonType<Desc>;
|
||
|
export {};
|