From 3259b18c760edc557478e38cb39940852e2b450f Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Sun, 26 May 2024 00:33:25 +0800 Subject: [PATCH 1/6] feat: add grpc web for memos v0.22.1 --- .../api/v1/activity_service.proto | 56 + .../api/v1/auth_service.proto | 65 + api/memos-proto-v0.22.1/api/v1/common.proto | 17 + .../api/v1/idp_service.proto | 114 + .../api/v1/inbox_service.proto | 80 + .../api/v1/markdown_service.proto | 259 + .../api/v1/memo_relation_service.proto | 22 + .../api/v1/memo_service.proto | 419 ++ .../api/v1/reaction_service.proto | 32 + .../api/v1/resource_service.proto | 128 + .../api/v1/user_service.proto | 228 + .../api/v1/webhook_service.proto | 88 + .../api/v1/workspace_service.proto | 26 + .../api/v1/workspace_setting_service.proto | 108 + api/memos-proto-v0.22.1/buf.gen.yaml | 16 + api/memos-proto-v0.22.1/buf.lock | 9 + api/memos-proto-v0.22.1/buf.yaml | 10 + .../gen/api/v1/activity_service.ts | 430 ++ .../gen/api/v1/auth_service.ts | 561 ++ api/memos-proto-v0.22.1/gen/api/v1/common.ts | 119 + .../gen/api/v1/idp_service.ts | 1072 ++++ .../gen/api/v1/inbox_service.ts | 583 ++ .../gen/api/v1/markdown_service.ts | 2858 +++++++++ .../gen/api/v1/memo_relation_service.ts | 138 + .../gen/api/v1/memo_service.ts | 3504 +++++++++++ .../gen/api/v1/reaction_service.ts | 206 + .../gen/api/v1/resource_service.ts | 1033 ++++ .../gen/api/v1/user_service.ts | 1898 ++++++ .../gen/api/v1/webhook_service.ts | 707 +++ .../gen/api/v1/workspace_service.ts | 186 + .../gen/api/v1/workspace_setting_service.ts | 908 +++ .../gen/google/api/annotations.ts | 9 + .../gen/google/api/client.ts | 1712 ++++++ .../gen/google/api/field_behavior.ts | 145 + .../gen/google/api/http.ts | 657 ++ .../gen/google/api/httpbody.ts | 142 + .../gen/google/api/launch_stage.ts | 121 + .../gen/google/protobuf/any.ts | 197 + .../gen/google/protobuf/descriptor.ts | 5322 +++++++++++++++++ .../gen/google/protobuf/duration.ts | 165 + .../gen/google/protobuf/empty.ts | 64 + .../gen/google/protobuf/field_mask.ts | 278 + .../gen/google/protobuf/timestamp.ts | 194 + api/memos-v0.19.1.ts | 11 +- api/memos-v0.22.1.ts | 61 + gen-proto.sh | 2 + package.json | 3 + tsconfig.json | 2 + yarn.lock | 125 + 49 files changed, 25083 insertions(+), 7 deletions(-) create mode 100644 api/memos-proto-v0.22.1/api/v1/activity_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/auth_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/common.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/idp_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/inbox_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/markdown_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/memo_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/reaction_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/resource_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/user_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/webhook_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/workspace_service.proto create mode 100644 api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto create mode 100644 api/memos-proto-v0.22.1/buf.gen.yaml create mode 100644 api/memos-proto-v0.22.1/buf.lock create mode 100644 api/memos-proto-v0.22.1/buf.yaml create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/common.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/user_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/annotations.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/client.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/http.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/httpbody.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/any.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts create mode 100644 api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts create mode 100644 api/memos-v0.22.1.ts create mode 100755 gen-proto.sh diff --git a/api/memos-proto-v0.22.1/api/v1/activity_service.proto b/api/memos-proto-v0.22.1/api/v1/activity_service.proto new file mode 100644 index 0000000..10bcf7e --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/activity_service.proto @@ -0,0 +1,56 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service ActivityService { + // GetActivity returns the activity with the given id. + rpc GetActivity(GetActivityRequest) returns (Activity) { + option (google.api.http) = {get: "/api/v1/activities/{id}"}; + option (google.api.method_signature) = "id"; + } +} + +message Activity { + // The system-generated unique identifier for the activity. + int32 id = 1; + // The system-generated unique identifier for the user who created the activity. + int32 creator_id = 2; + // The type of the activity. + string type = 3; + // The level of the activity. + string level = 4; + // The create time of the activity. + google.protobuf.Timestamp create_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; + // The payload of the activity. + ActivityPayload payload = 6; +} + +// ActivityMemoCommentPayload represents the payload of a memo comment activity. +message ActivityMemoCommentPayload { + // The memo id of comment. + int32 memo_id = 1; + // The memo id of related memo. + int32 related_memo_id = 2; +} + +message ActivityVersionUpdatePayload { + // The updated version of memos. + string version = 1; +} + +message ActivityPayload { + ActivityMemoCommentPayload memo_comment = 1; + ActivityVersionUpdatePayload version_update = 2; +} + +message GetActivityRequest { + // The system-generated unique identifier for the activity. + int32 id = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/auth_service.proto b/api/memos-proto-v0.22.1/api/v1/auth_service.proto new file mode 100644 index 0000000..7c814e7 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/auth_service.proto @@ -0,0 +1,65 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "api/v1/user_service.proto"; +import "google/api/annotations.proto"; +import "google/protobuf/empty.proto"; + +option go_package = "gen/api/v1"; + +service AuthService { + // GetAuthStatus returns the current auth status of the user. + rpc GetAuthStatus(GetAuthStatusRequest) returns (User) { + option (google.api.http) = {post: "/api/v1/auth/status"}; + } + // SignIn signs in the user with the given username and password. + rpc SignIn(SignInRequest) returns (User) { + option (google.api.http) = {post: "/api/v1/auth/signin"}; + } + // SignInWithSSO signs in the user with the given SSO code. + rpc SignInWithSSO(SignInWithSSORequest) returns (User) { + option (google.api.http) = {post: "/api/v1/auth/signin/sso"}; + } + // SignUp signs up the user with the given username and password. + rpc SignUp(SignUpRequest) returns (User) { + option (google.api.http) = {post: "/api/v1/auth/signup"}; + } + // SignOut signs out the user. + rpc SignOut(SignOutRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {post: "/api/v1/auth/signout"}; + } +} + +message GetAuthStatusRequest {} + +message GetAuthStatusResponse { + User user = 1; +} + +message SignInRequest { + // The username to sign in with. + string username = 1; + // The password to sign in with. + string password = 2; + // Whether the session should never expire. + bool never_expire = 3; +} + +message SignInWithSSORequest { + // The ID of the SSO provider. + int32 idp_id = 1; + // The code to sign in with. + string code = 2; + // The redirect URI. + string redirect_uri = 3; +} + +message SignUpRequest { + // The username to sign up with. + string username = 1; + // The password to sign up with. + string password = 2; +} + +message SignOutRequest {} diff --git a/api/memos-proto-v0.22.1/api/v1/common.proto b/api/memos-proto-v0.22.1/api/v1/common.proto new file mode 100644 index 0000000..c0052c9 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/common.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package memos.api.v1; + +option go_package = "gen/api/v1"; + +enum RowStatus { + ROW_STATUS_UNSPECIFIED = 0; + ACTIVE = 1; + ARCHIVED = 2; +} + +// Used internally for obfuscating the page token. +message PageToken { + int32 limit = 1; + int32 offset = 2; +} diff --git a/api/memos-proto-v0.22.1/api/v1/idp_service.proto b/api/memos-proto-v0.22.1/api/v1/idp_service.proto new file mode 100644 index 0000000..28a0daf --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/idp_service.proto @@ -0,0 +1,114 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; + +option go_package = "gen/api/v1"; + +service IdentityProviderService { + // ListIdentityProviders lists identity providers. + rpc ListIdentityProviders(ListIdentityProvidersRequest) returns (ListIdentityProvidersResponse) { + option (google.api.http) = {get: "/api/v1/identityProviders"}; + } + // GetIdentityProvider gets an identity provider. + rpc GetIdentityProvider(GetIdentityProviderRequest) returns (IdentityProvider) { + option (google.api.http) = {get: "/api/v1/{name=identityProviders/*}"}; + option (google.api.method_signature) = "name"; + } + // CreateIdentityProvider creates an identity provider. + rpc CreateIdentityProvider(CreateIdentityProviderRequest) returns (IdentityProvider) { + option (google.api.http) = { + post: "/api/v1/identityProviders", + body: "identity_provider" + }; + } + // UpdateIdentityProvider updates an identity provider. + rpc UpdateIdentityProvider(UpdateIdentityProviderRequest) returns (IdentityProvider) { + option (google.api.http) = { + patch: "/api/v1/{identity_provider.name=identityProviders/*}" + body: "identity_provider" + }; + option (google.api.method_signature) = "identity_provider,update_mask"; + } + // DeleteIdentityProvider deletes an identity provider. + rpc DeleteIdentityProvider(DeleteIdentityProviderRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=identityProviders/*}"}; + option (google.api.method_signature) = "name"; + } +} + +message IdentityProvider { + // The name of the identityProvider. + // Format: identityProviders/{id} + string name = 1; + + enum Type { + TYPE_UNSPECIFIED = 0; + OAUTH2 = 1; + } + Type type = 2; + + string title = 3; + + string identifier_filter = 4; + + IdentityProviderConfig config = 5; +} + +message IdentityProviderConfig { + oneof config { + OAuth2Config oauth2_config = 1; + } +} + +message FieldMapping { + string identifier = 1; + string display_name = 2; + string email = 3; +} + +message OAuth2Config { + string client_id = 1; + string client_secret = 2; + string auth_url = 3; + string token_url = 4; + string user_info_url = 5; + repeated string scopes = 6; + FieldMapping field_mapping = 7; +} + +message ListIdentityProvidersRequest {} + +message ListIdentityProvidersResponse { + repeated IdentityProvider identity_providers = 1; +} + +message GetIdentityProviderRequest { + // The name of the identityProvider to get. + // Format: identityProviders/{id} + string name = 1; +} + +message CreateIdentityProviderRequest { + // The identityProvider to create. + IdentityProvider identity_provider = 1; +} + +message UpdateIdentityProviderRequest { + // The identityProvider to update. + IdentityProvider identity_provider = 1; + + // The update mask applies to the resource. Only the top level fields of + // IdentityProvider are supported. + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteIdentityProviderRequest { + // The name of the identityProvider to delete. + // Format: identityProviders/{id} + string name = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/inbox_service.proto b/api/memos-proto-v0.22.1/api/v1/inbox_service.proto new file mode 100644 index 0000000..8bb3f22 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/inbox_service.proto @@ -0,0 +1,80 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service InboxService { + // ListInboxes lists inboxes for a user. + rpc ListInboxes(ListInboxesRequest) returns (ListInboxesResponse) { + option (google.api.http) = {get: "/api/v1/inboxes"}; + } + // UpdateInbox updates an inbox. + rpc UpdateInbox(UpdateInboxRequest) returns (Inbox) { + option (google.api.http) = { + patch: "/api/v1/{inbox.name=inboxes/*}" + body: "inbox" + }; + option (google.api.method_signature) = "inbox,update_mask"; + } + // DeleteInbox deletes an inbox. + rpc DeleteInbox(DeleteInboxRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=inboxes/*}"}; + option (google.api.method_signature) = "name"; + } +} + +message Inbox { + // The name of the inbox. + // Format: inboxes/{id} + string name = 1; + // Format: users/{id} + string sender = 2; + // Format: users/{id} + string receiver = 3; + + enum Status { + STATUS_UNSPECIFIED = 0; + UNREAD = 1; + ARCHIVED = 2; + } + Status status = 4; + + google.protobuf.Timestamp create_time = 5; + + enum Type { + TYPE_UNSPECIFIED = 0; + MEMO_COMMENT = 1; + VERSION_UPDATE = 2; + } + Type type = 6; + + optional int32 activity_id = 7; +} + +message ListInboxesRequest { + // Format: users/{id} + string user = 1; +} + +message ListInboxesResponse { + repeated Inbox inboxes = 1; +} + +message UpdateInboxRequest { + Inbox inbox = 1; + + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteInboxRequest { + // The name of the inbox to delete. + // Format: inboxes/{id} + string name = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/markdown_service.proto b/api/memos-proto-v0.22.1/api/v1/markdown_service.proto new file mode 100644 index 0000000..0223589 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/markdown_service.proto @@ -0,0 +1,259 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; + +option go_package = "gen/api/v1"; + +service MarkdownService { + // Parses the given markdown content and returns a list of nodes. + rpc ParseMarkdown(ParseMarkdownRequest) returns (ParseMarkdownResponse) { + option (google.api.http) = { + post: "/api/v1/markdown/parse" + body: "*" + }; + } + // Restores the given nodes to markdown content. + rpc RestoreMarkdown(RestoreMarkdownRequest) returns (RestoreMarkdownResponse) { + option (google.api.http) = { + post: "/api/v1/markdown:restore" + body: "*" + }; + } + // GetLinkMetadata returns metadata for a given link. + rpc GetLinkMetadata(GetLinkMetadataRequest) returns (LinkMetadata) { + option (google.api.http) = {get: "/api/v1/markdown/link:metadata"}; + } +} + +message ParseMarkdownRequest { + string markdown = 1; +} + +message ParseMarkdownResponse { + repeated Node nodes = 1; +} + +message RestoreMarkdownRequest { + repeated Node nodes = 1; +} + +message RestoreMarkdownResponse { + string markdown = 1; +} + +message GetLinkMetadataRequest { + string link = 1; +} + +message LinkMetadata { + string title = 1; + string description = 2; + string image = 3; +} + +enum NodeType { + NODE_UNSPECIFIED = 0; + LINE_BREAK = 1; + PARAGRAPH = 2; + CODE_BLOCK = 3; + HEADING = 4; + HORIZONTAL_RULE = 5; + BLOCKQUOTE = 6; + ORDERED_LIST = 7; + UNORDERED_LIST = 8; + TASK_LIST = 9; + MATH_BLOCK = 10; + TABLE = 11; + EMBEDDED_CONTENT = 12; + TEXT = 13; + BOLD = 14; + ITALIC = 15; + BOLD_ITALIC = 16; + CODE = 17; + IMAGE = 18; + LINK = 19; + AUTO_LINK = 20; + TAG = 21; + STRIKETHROUGH = 22; + ESCAPING_CHARACTER = 23; + MATH = 24; + HIGHLIGHT = 25; + SUBSCRIPT = 26; + SUPERSCRIPT = 27; + REFERENCED_CONTENT = 28; + SPOILER = 29; +} + +message Node { + NodeType type = 1; + oneof node { + LineBreakNode line_break_node = 2; + ParagraphNode paragraph_node = 3; + CodeBlockNode code_block_node = 4; + HeadingNode heading_node = 5; + HorizontalRuleNode horizontal_rule_node = 6; + BlockquoteNode blockquote_node = 7; + OrderedListNode ordered_list_node = 8; + UnorderedListNode unordered_list_node = 9; + TaskListNode task_list_node = 10; + MathBlockNode math_block_node = 11; + TableNode table_node = 12; + EmbeddedContentNode embedded_content_node = 13; + TextNode text_node = 14; + BoldNode bold_node = 15; + ItalicNode italic_node = 16; + BoldItalicNode bold_italic_node = 17; + CodeNode code_node = 18; + ImageNode image_node = 19; + LinkNode link_node = 20; + AutoLinkNode auto_link_node = 21; + TagNode tag_node = 22; + StrikethroughNode strikethrough_node = 23; + EscapingCharacterNode escaping_character_node = 24; + MathNode math_node = 25; + HighlightNode highlight_node = 26; + SubscriptNode subscript_node = 27; + SuperscriptNode superscript_node = 28; + ReferencedContentNode referenced_content_node = 29; + SpoilerNode spoiler_node = 30; + } +} + +message LineBreakNode {} + +message ParagraphNode { + repeated Node children = 1; +} + +message CodeBlockNode { + string language = 1; + string content = 2; +} + +message HeadingNode { + int32 level = 1; + repeated Node children = 2; +} + +message HorizontalRuleNode { + string symbol = 1; +} + +message BlockquoteNode { + repeated Node children = 1; +} + +message OrderedListNode { + string number = 1; + int32 indent = 2; + repeated Node children = 3; +} + +message UnorderedListNode { + string symbol = 1; + int32 indent = 2; + repeated Node children = 3; +} + +message TaskListNode { + string symbol = 1; + int32 indent = 2; + bool complete = 3; + repeated Node children = 4; +} + +message MathBlockNode { + string content = 1; +} + +message TableNode { + repeated string header = 1; + repeated string delimiter = 2; + + message Row { + repeated string cells = 1; + } + repeated Row rows = 3; +} + +message EmbeddedContentNode { + string resource_name = 1; + string params = 2; +} + +message TextNode { + string content = 1; +} + +message BoldNode { + string symbol = 1; + repeated Node children = 2; +} + +message ItalicNode { + string symbol = 1; + string content = 2; +} + +message BoldItalicNode { + string symbol = 1; + string content = 2; +} + +message CodeNode { + string content = 1; +} + +message ImageNode { + string alt_text = 1; + string url = 2; +} + +message LinkNode { + string text = 1; + string url = 2; +} + +message AutoLinkNode { + string url = 1; + bool is_raw_text = 2; +} + +message TagNode { + string content = 1; +} + +message StrikethroughNode { + string content = 1; +} + +message EscapingCharacterNode { + string symbol = 1; +} + +message MathNode { + string content = 1; +} + +message HighlightNode { + string content = 1; +} + +message SubscriptNode { + string content = 1; +} + +message SuperscriptNode { + string content = 1; +} + +message ReferencedContentNode { + string resource_name = 1; + string params = 2; +} + +message SpoilerNode { + string content = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto b/api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package memos.api.v1; + +option go_package = "gen/api/v1"; + +message MemoRelation { + // The name of memo. + // Format: "memos/{uid}" + string memo = 1; + + // The name of related memo. + // Format: "memos/{uid}" + string related_memo = 2; + + enum Type { + TYPE_UNSPECIFIED = 0; + REFERENCE = 1; + COMMENT = 2; + } + Type type = 3; +} diff --git a/api/memos-proto-v0.22.1/api/v1/memo_service.proto b/api/memos-proto-v0.22.1/api/v1/memo_service.proto new file mode 100644 index 0000000..26f94e2 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/memo_service.proto @@ -0,0 +1,419 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "api/v1/common.proto"; +import "api/v1/markdown_service.proto"; +import "api/v1/memo_relation_service.proto"; +import "api/v1/reaction_service.proto"; +import "api/v1/resource_service.proto"; +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service MemoService { + // CreateMemo creates a memo. + rpc CreateMemo(CreateMemoRequest) returns (Memo) { + option (google.api.http) = { + post: "/api/v1/memos" + body: "*" + }; + } + // ListMemos lists memos with pagination and filter. + rpc ListMemos(ListMemosRequest) returns (ListMemosResponse) { + option (google.api.http) = {get: "/api/v1/memos"}; + } + // SearchMemos searches memos. + rpc SearchMemos(SearchMemosRequest) returns (SearchMemosResponse) { + option (google.api.http) = {get: "/api/v1/memos:search"}; + } + // GetMemo gets a memo. + rpc GetMemo(GetMemoRequest) returns (Memo) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}"}; + option (google.api.method_signature) = "name"; + } + // UpdateMemo updates a memo. + rpc UpdateMemo(UpdateMemoRequest) returns (Memo) { + option (google.api.http) = { + patch: "/api/v1/{memo.name=memos/*}" + body: "memo" + }; + option (google.api.method_signature) = "memo,update_mask"; + } + // DeleteMemo deletes a memo. + rpc DeleteMemo(DeleteMemoRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=memos/*}"}; + option (google.api.method_signature) = "name"; + } + // ExportMemos exports memos. + rpc ExportMemos(ExportMemosRequest) returns (ExportMemosResponse) { + option (google.api.http) = { + post: "/api/v1/memos:export", + body: "*" + }; + } + // ListMemoProperties lists memo properties. + rpc ListMemoProperties(ListMemoPropertiesRequest) returns (ListMemoPropertiesResponse) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}/properties"}; + } + // RebuildMemoProperty rebuilds a memo property. + rpc RebuildMemoProperty(RebuildMemoPropertyRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + post: "/api/v1/{name=memos/*}/properties:rebuild" + body: "*" + }; + } + // ListMemoTags lists tags for a memo. + rpc ListMemoTags(ListMemoTagsRequest) returns (ListMemoTagsResponse) { + option (google.api.http) = {get: "/api/v1/{parent=memos/*}/tags"}; + } + // RenameMemoTag renames a tag for a memo. + rpc RenameMemoTag(RenameMemoTagRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + patch: "/api/v1/{parent=memos/*}/tags:rename" + body: "*" + }; + } + // DeleteMemoTag deletes a tag for a memo. + rpc DeleteMemoTag(DeleteMemoTagRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{parent=memos/*}/tags/{tag}"}; + } + // SetMemoResources sets resources for a memo. + rpc SetMemoResources(SetMemoResourcesRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + patch: "/api/v1/{name=memos/*}/resources" + body: "*" + }; + option (google.api.method_signature) = "name"; + } + // ListMemoResources lists resources for a memo. + rpc ListMemoResources(ListMemoResourcesRequest) returns (ListMemoResourcesResponse) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}/resources"}; + option (google.api.method_signature) = "name"; + } + // SetMemoRelations sets relations for a memo. + rpc SetMemoRelations(SetMemoRelationsRequest) returns (google.protobuf.Empty) { + option (google.api.http) = { + patch: "/api/v1/{name=memos/*}/relations" + body: "*" + }; + option (google.api.method_signature) = "name"; + } + // ListMemoRelations lists relations for a memo. + rpc ListMemoRelations(ListMemoRelationsRequest) returns (ListMemoRelationsResponse) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}/relations"}; + option (google.api.method_signature) = "name"; + } + // CreateMemoComment creates a comment for a memo. + rpc CreateMemoComment(CreateMemoCommentRequest) returns (Memo) { + option (google.api.http) = { + post: "/api/v1/{name=memos/*}/comments", + body: "comment" + }; + option (google.api.method_signature) = "name"; + } + // ListMemoComments lists comments for a memo. + rpc ListMemoComments(ListMemoCommentsRequest) returns (ListMemoCommentsResponse) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}/comments"}; + option (google.api.method_signature) = "name"; + } + // GetUserMemosStats gets stats of memos for a user. + rpc GetUserMemosStats(GetUserMemosStatsRequest) returns (GetUserMemosStatsResponse) { + option (google.api.http) = {get: "/api/v1/memos/stats"}; + option (google.api.method_signature) = "username"; + } + // ListMemoReactions lists reactions for a memo. + rpc ListMemoReactions(ListMemoReactionsRequest) returns (ListMemoReactionsResponse) { + option (google.api.http) = {get: "/api/v1/{name=memos/*}/reactions"}; + option (google.api.method_signature) = "name"; + } + // UpsertMemoReaction upserts a reaction for a memo. + rpc UpsertMemoReaction(UpsertMemoReactionRequest) returns (Reaction) { + option (google.api.http) = { + post: "/api/v1/{name=memos/*}/reactions", + body: "*" + }; + option (google.api.method_signature) = "name"; + } + // DeleteMemoReaction deletes a reaction for a memo. + rpc DeleteMemoReaction(DeleteMemoReactionRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/reactions/{reaction_id}"}; + option (google.api.method_signature) = "reaction_id"; + } +} + +enum Visibility { + VISIBILITY_UNSPECIFIED = 0; + PRIVATE = 1; + PROTECTED = 2; + PUBLIC = 3; +} + +message Memo { + // The name of the memo. + // Format: memos/{id} + // id is the system generated id. + string name = 1; + + // The user defined id of the memo. + string uid = 2; + + RowStatus row_status = 3; + + // The name of the creator. + // Format: users/{id} + string creator = 4; + + google.protobuf.Timestamp create_time = 5; + + google.protobuf.Timestamp update_time = 6; + + google.protobuf.Timestamp display_time = 7; + + string content = 8; + + repeated Node nodes = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; + + Visibility visibility = 10; + + repeated string tags = 11; + + bool pinned = 12; + + optional int32 parent_id = 13 [ + deprecated = true, + (google.api.field_behavior) = OUTPUT_ONLY + ]; + + repeated Resource resources = 14 [(google.api.field_behavior) = OUTPUT_ONLY]; + + repeated MemoRelation relations = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; + + repeated Reaction reactions = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; + + MemoProperty property = 17 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // The name of the parent memo. + // Format: memos/{id} + optional string parent = 18 [(google.api.field_behavior) = OUTPUT_ONLY]; +} + +message MemoProperty { + repeated string tags = 1; + bool has_link = 2; + bool has_task_list = 3; +} + +message CreateMemoRequest { + string content = 1; + + Visibility visibility = 2; +} + +message ListMemosRequest { + // The maximum number of memos to return. + int32 page_size = 1; + + // A page token, received from a previous `ListMemos` call. + // Provide this to retrieve the subsequent page. + string page_token = 2; + + // Filter is used to filter memos returned in the list. + // Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + string filter = 3; +} + +message ListMemosResponse { + repeated Memo memos = 1; + + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + string next_page_token = 2; +} + +message SearchMemosRequest { + // Filter is used to filter memos returned. + // Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + string filter = 1; +} + +message SearchMemosResponse { + repeated Memo memos = 1; +} + +message GetMemoRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message UpdateMemoRequest { + Memo memo = 1; + + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteMemoRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message ExportMemosRequest { + // Same as ListMemosRequest.filter + string filter = 1; +} + +message ExportMemosResponse { + bytes content = 1; +} + +message ListMemoPropertiesRequest { + // The name of the memo. + // Format: memos/{id}. Use "memos/-" to list all properties. + string name = 1; +} + +message ListMemoPropertiesResponse { + repeated MemoProperty properties = 1; +} + +message RebuildMemoPropertyRequest { + // The name of the memo. + // Format: memos/{id}. Use "memos/-" to rebuild all memos. + string name = 1; +} + +message ListMemoTagsRequest { + // The parent, who owns the tags. + // Format: memos/{id}. Use "memos/-" to list all tags. + string parent = 1; + + // Filter is used to filter memos. + // Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + string filter = 2; +} + +message ListMemoTagsResponse { + // tag_amounts is the amount of tags. + // key is the tag name. e.g. "tag1". + // value is the amount of the tag. + map tag_amounts = 1; +} + +message RenameMemoTagRequest { + // The parent, who owns the tags. + // Format: memos/{id}. Use "memos/-" to rename all tags. + string parent = 1; + string old_tag = 2; + string new_tag = 3; +} + +message DeleteMemoTagRequest { + // The parent, who owns the tags. + // Format: memos/{id}. Use "memos/-" to delete all tags. + string parent = 1; + string tag = 2; + bool delete_related_memos = 3; +} + +message SetMemoResourcesRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; + + repeated Resource resources = 2; +} + +message ListMemoResourcesRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message ListMemoResourcesResponse { + repeated Resource resources = 1; +} + +message SetMemoRelationsRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; + + repeated MemoRelation relations = 2; +} + +message ListMemoRelationsRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message ListMemoRelationsResponse { + repeated MemoRelation relations = 1; +} + +message CreateMemoCommentRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; + + CreateMemoRequest comment = 2; +} + +message ListMemoCommentsRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message ListMemoCommentsResponse { + repeated Memo memos = 1; +} + +message GetUserMemosStatsRequest { + // name is the name of the user to get stats for. + // Format: users/{id} + string name = 1; + + // timezone location + // Format: uses tz identifier + // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + string timezone = 2; + + // Same as ListMemosRequest.filter + string filter = 3; +} + +message GetUserMemosStatsResponse { + // stats is the stats of memo creating/updating activities. + // key is the year-month-day string. e.g. "2020-01-01". + map stats = 1; +} + +message ListMemoReactionsRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; +} + +message ListMemoReactionsResponse { + repeated Reaction reactions = 1; +} + +message UpsertMemoReactionRequest { + // The name of the memo. + // Format: memos/{id} + string name = 1; + + Reaction reaction = 2; +} + +message DeleteMemoReactionRequest { + int32 reaction_id = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/reaction_service.proto b/api/memos-proto-v0.22.1/api/v1/reaction_service.proto new file mode 100644 index 0000000..0de470c --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/reaction_service.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +package memos.api.v1; + +option go_package = "gen/api/v1"; + +message Reaction { + int32 id = 1; + + // The name of the creator. + // Format: users/{id} + string creator = 2; + + string content_id = 3; + + enum Type { + TYPE_UNSPECIFIED = 0; + THUMBS_UP = 1; + THUMBS_DOWN = 2; + HEART = 3; + FIRE = 4; + CLAPPING_HANDS = 5; + LAUGH = 6; + OK_HAND = 7; + ROCKET = 8; + EYES = 9; + THINKING_FACE = 10; + CLOWN_FACE = 11; + QUESTION_MARK = 12; + } + Type reaction_type = 4; +} diff --git a/api/memos-proto-v0.22.1/api/v1/resource_service.proto b/api/memos-proto-v0.22.1/api/v1/resource_service.proto new file mode 100644 index 0000000..f4045e9 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/resource_service.proto @@ -0,0 +1,128 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/httpbody.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service ResourceService { + // CreateResource creates a new resource. + rpc CreateResource(CreateResourceRequest) returns (Resource) { + option (google.api.http) = { + post: "/api/v1/resources", + body: "resource" + }; + } + // ListResources lists all resources. + rpc ListResources(ListResourcesRequest) returns (ListResourcesResponse) { + option (google.api.http) = {get: "/api/v1/resources"}; + } + // SearchResources searches memos. + rpc SearchResources(SearchResourcesRequest) returns (SearchResourcesResponse) { + option (google.api.http) = {get: "/api/v1/resources:search"}; + } + // GetResource returns a resource by name. + rpc GetResource(GetResourceRequest) returns (Resource) { + option (google.api.http) = {get: "/api/v1/{name=resources/*}"}; + option (google.api.method_signature) = "name"; + } + // GetResourceBinary returns a resource binary by name. + rpc GetResourceBinary(GetResourceBinaryRequest) returns (google.api.HttpBody) { + option (google.api.http) = {get: "/file/{name=resources/*}/{filename}"}; + option (google.api.method_signature) = "name,filename"; + } + // UpdateResource updates a resource. + rpc UpdateResource(UpdateResourceRequest) returns (Resource) { + option (google.api.http) = { + patch: "/api/v1/{resource.name=resources/*}", + body: "resource" + }; + option (google.api.method_signature) = "resource,update_mask"; + } + // DeleteResource deletes a resource by name. + rpc DeleteResource(DeleteResourceRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=resources/*}"}; + option (google.api.method_signature) = "name"; + } +} + +message Resource { + // The name of the resource. + // Format: resources/{id} + // id is the system generated unique identifier. + string name = 1; + + // The user defined id of the resource. + string uid = 2; + + google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + + string filename = 4; + + bytes content = 5 [(google.api.field_behavior) = INPUT_ONLY]; + + string external_link = 6; + + string type = 7; + + int64 size = 8; + + // The related memo. + // Format: memos/{id} + optional string memo = 9; +} + +message CreateResourceRequest { + Resource resource = 1; +} + +message ListResourcesRequest {} + +message ListResourcesResponse { + repeated Resource resources = 1; +} + +message SearchResourcesRequest { + string filter = 1; +} + +message SearchResourcesResponse { + repeated Resource resources = 1; +} + +message GetResourceRequest { + // The name of the resource. + // Format: resources/{id} + // id is the system generated unique identifier. + string name = 1; +} + +message GetResourceBinaryRequest { + // The name of the resource. + // Format: resources/{id} + // id is the system generated unique identifier. + string name = 1; + + // The filename of the resource. Mainly used for downloading. + string filename = 2; +} + +message UpdateResourceRequest { + Resource resource = 1; + + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteResourceRequest { + // The name of the resource. + // Format: resources/{id} + // id is the system generated unique identifier. + string name = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/user_service.proto b/api/memos-proto-v0.22.1/api/v1/user_service.proto new file mode 100644 index 0000000..80fdf98 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/user_service.proto @@ -0,0 +1,228 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "api/v1/common.proto"; +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; +import "google/api/httpbody.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service UserService { + // ListUsers returns a list of users. + rpc ListUsers(ListUsersRequest) returns (ListUsersResponse) { + option (google.api.http) = {get: "/api/v1/users"}; + } + // SearchUsers searches users by filter. + rpc SearchUsers(SearchUsersRequest) returns (SearchUsersResponse) { + option (google.api.http) = {get: "/api/v1/users:search"}; + } + // GetUser gets a user by name. + rpc GetUser(GetUserRequest) returns (User) { + option (google.api.http) = {get: "/api/v1/{name=users/*}"}; + option (google.api.method_signature) = "name"; + } + // GetUserAvatarBinary gets the avatar of a user. + rpc GetUserAvatarBinary(GetUserAvatarBinaryRequest) returns (google.api.HttpBody) { + option (google.api.http) = {get: "/file/{name=users/*}/avatar"}; + option (google.api.method_signature) = "name"; + } + // CreateUser creates a new user. + rpc CreateUser(CreateUserRequest) returns (User) { + option (google.api.http) = { + post: "/api/v1/users" + body: "user" + }; + option (google.api.method_signature) = "user"; + } + // UpdateUser updates a user. + rpc UpdateUser(UpdateUserRequest) returns (User) { + option (google.api.http) = { + patch: "/api/v1/{user.name=users/*}" + body: "user" + }; + option (google.api.method_signature) = "user,update_mask"; + } + // DeleteUser deletes a user. + rpc DeleteUser(DeleteUserRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=users/*}"}; + option (google.api.method_signature) = "name"; + } + // GetUserSetting gets the setting of a user. + rpc GetUserSetting(GetUserSettingRequest) returns (UserSetting) { + option (google.api.http) = {get: "/api/v1/{name=users/*}/setting"}; + option (google.api.method_signature) = "name"; + } + // UpdateUserSetting updates the setting of a user. + rpc UpdateUserSetting(UpdateUserSettingRequest) returns (UserSetting) { + option (google.api.http) = { + patch: "/api/v1/{setting.name=users/*/setting}" + body: "setting" + }; + option (google.api.method_signature) = "setting,update_mask"; + } + // ListUserAccessTokens returns a list of access tokens for a user. + rpc ListUserAccessTokens(ListUserAccessTokensRequest) returns (ListUserAccessTokensResponse) { + option (google.api.http) = {get: "/api/v1/{name=users/*}/access_tokens"}; + option (google.api.method_signature) = "name"; + } + // CreateUserAccessToken creates a new access token for a user. + rpc CreateUserAccessToken(CreateUserAccessTokenRequest) returns (UserAccessToken) { + option (google.api.http) = { + post: "/api/v1/{name=users/*}/access_tokens" + body: "*" + }; + option (google.api.method_signature) = "name"; + } + // DeleteUserAccessToken deletes an access token for a user. + rpc DeleteUserAccessToken(DeleteUserAccessTokenRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/{name=users/*}/access_tokens/{access_token}"}; + option (google.api.method_signature) = "name,access_token"; + } +} + +message User { + // The name of the user. + // Format: users/{id} + string name = 1; + + // The system generated uid of the user. + int32 id = 2; + + enum Role { + ROLE_UNSPECIFIED = 0; + HOST = 1; + ADMIN = 2; + USER = 3; + } + Role role = 3; + + string username = 4; + + string email = 5; + + string nickname = 6; + + string avatar_url = 7; + + string description = 8; + + string password = 9 [(google.api.field_behavior) = INPUT_ONLY]; + + RowStatus row_status = 10; + + google.protobuf.Timestamp create_time = 11; + + google.protobuf.Timestamp update_time = 12; +} + +message ListUsersRequest {} + +message ListUsersResponse { + repeated User users = 1; +} + +message SearchUsersRequest { + // Filter is used to filter users returned in the list. + // Format: "username == 'frank'" + string filter = 1; +} + +message SearchUsersResponse { + repeated User users = 1; +} + +message GetUserRequest { + // The name of the user. + // Format: users/{id} + string name = 1; +} + +message GetUserAvatarBinaryRequest { + // The name of the user. + // Format: users/{id} + string name = 1; + + // The raw HTTP body is bound to this field. + google.api.HttpBody http_body = 2; +} + +message CreateUserRequest { + User user = 1; +} + +message UpdateUserRequest { + User user = 1 [(google.api.field_behavior) = REQUIRED]; + + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteUserRequest { + // The name of the user. + // Format: users/{id} + string name = 1; +} + +message UserSetting { + // The name of the user. + // Format: users/{id} + string name = 1; + // The preferred locale of the user. + string locale = 2; + // The preferred appearance of the user. + string appearance = 3; + // The default visibility of the memo. + string memo_visibility = 4; +} + +message GetUserSettingRequest { + // The name of the user. + // Format: users/{id} + string name = 1; +} + +message UpdateUserSettingRequest { + UserSetting setting = 1 [(google.api.field_behavior) = REQUIRED]; + + google.protobuf.FieldMask update_mask = 2; +} + +message UserAccessToken { + string access_token = 1; + string description = 2; + google.protobuf.Timestamp issued_at = 3; + google.protobuf.Timestamp expires_at = 4; +} + +message ListUserAccessTokensRequest { + // The name of the user. + // Format: users/{id} + string name = 1; +} + +message ListUserAccessTokensResponse { + repeated UserAccessToken access_tokens = 1; +} + +message CreateUserAccessTokenRequest { + // The name of the user. + // Format: users/{id} + string name = 1; + + string description = 2; + + optional google.protobuf.Timestamp expires_at = 3; +} + +message DeleteUserAccessTokenRequest { + // The name of the user. + // Format: users/{id} + string name = 1; + // access_token is the access token to delete. + string access_token = 2; +} diff --git a/api/memos-proto-v0.22.1/api/v1/webhook_service.proto b/api/memos-proto-v0.22.1/api/v1/webhook_service.proto new file mode 100644 index 0000000..c949d43 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/webhook_service.proto @@ -0,0 +1,88 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "api/v1/common.proto"; +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/protobuf/empty.proto"; +import "google/protobuf/field_mask.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "gen/api/v1"; + +service WebhookService { + // CreateWebhook creates a new webhook. + rpc CreateWebhook(CreateWebhookRequest) returns (Webhook) { + option (google.api.http) = { + post: "/api/v1/webhooks" + body: "*" + }; + } + // GetWebhook returns a webhook by id. + rpc GetWebhook(GetWebhookRequest) returns (Webhook) { + option (google.api.http) = {get: "/api/v1/webhooks/{id}"}; + option (google.api.method_signature) = "id"; + } + // ListWebhooks returns a list of webhooks. + rpc ListWebhooks(ListWebhooksRequest) returns (ListWebhooksResponse) { + option (google.api.http) = {get: "/api/v1/webhooks"}; + } + // UpdateWebhook updates a webhook. + rpc UpdateWebhook(UpdateWebhookRequest) returns (Webhook) { + option (google.api.http) = { + patch: "/api/v1/webhooks/{webhook.id}" + body: "webhook" + }; + option (google.api.method_signature) = "webhook,update_mask"; + } + // DeleteWebhook deletes a webhook by id. + rpc DeleteWebhook(DeleteWebhookRequest) returns (google.protobuf.Empty) { + option (google.api.http) = {delete: "/api/v1/webhooks/{id}"}; + option (google.api.method_signature) = "id"; + } +} + +message Webhook { + int32 id = 1; + + int32 creator_id = 2; + + google.protobuf.Timestamp created_time = 3; + + google.protobuf.Timestamp updated_time = 4; + + RowStatus row_status = 5; + + string name = 6; + + string url = 7; +} + +message CreateWebhookRequest { + string name = 1; + + string url = 2; +} + +message GetWebhookRequest { + int32 id = 1; +} + +message ListWebhooksRequest { + int32 creator_id = 1; +} + +message ListWebhooksResponse { + repeated Webhook webhooks = 1; +} + +message UpdateWebhookRequest { + Webhook webhook = 1; + + google.protobuf.FieldMask update_mask = 2; +} + +message DeleteWebhookRequest { + int32 id = 1; +} diff --git a/api/memos-proto-v0.22.1/api/v1/workspace_service.proto b/api/memos-proto-v0.22.1/api/v1/workspace_service.proto new file mode 100644 index 0000000..1f80b07 --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/workspace_service.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; + +option go_package = "gen/api/v1"; + +service WorkspaceService { + // GetWorkspaceProfile returns the workspace profile. + rpc GetWorkspaceProfile(GetWorkspaceProfileRequest) returns (WorkspaceProfile) { + option (google.api.http) = {get: "/api/v1/workspace/profile"}; + } +} + +message WorkspaceProfile { + // The name of instance owner. + // Format: "users/{id}" + string owner = 1; + // version is the current version of instance + string version = 2; + // mode is the instance mode (e.g. "prod", "dev" or "demo"). + string mode = 3; +} + +message GetWorkspaceProfileRequest {} diff --git a/api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto b/api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto new file mode 100644 index 0000000..ac5693c --- /dev/null +++ b/api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto @@ -0,0 +1,108 @@ +syntax = "proto3"; + +package memos.api.v1; + +import "google/api/annotations.proto"; +import "google/api/client.proto"; +import "google/api/field_behavior.proto"; + +option go_package = "gen/api/v1"; + +service WorkspaceSettingService { + // GetWorkspaceSetting returns the setting by name. + rpc GetWorkspaceSetting(GetWorkspaceSettingRequest) returns (WorkspaceSetting) { + option (google.api.http) = {get: "/api/v1/workspace/{name=settings/*}"}; + option (google.api.method_signature) = "name"; + } + // SetWorkspaceSetting updates the setting. + rpc SetWorkspaceSetting(SetWorkspaceSettingRequest) returns (WorkspaceSetting) { + option (google.api.http) = { + patch: "/api/v1/workspace/{setting.name=settings/*}", + body: "setting" + }; + option (google.api.method_signature) = "setting"; + } +} + +message WorkspaceSetting { + // name is the name of the setting. + // Format: settings/{setting} + string name = 1; + oneof value { + WorkspaceGeneralSetting general_setting = 2; + WorkspaceStorageSetting storage_setting = 3; + WorkspaceMemoRelatedSetting memo_related_setting = 4; + } +} + +message WorkspaceGeneralSetting { + // instance_url is the instance URL. + string instance_url = 1; + // disallow_signup is the flag to disallow signup. + bool disallow_signup = 2; + // disallow_password_login is the flag to disallow password login. + bool disallow_password_login = 3; + // additional_script is the additional script. + string additional_script = 4; + // additional_style is the additional style. + string additional_style = 5; + // custom_profile is the custom profile. + WorkspaceCustomProfile custom_profile = 6; +} + +message WorkspaceCustomProfile { + string title = 1; + string description = 2; + string logo_url = 3; + string locale = 4; + string appearance = 5; +} + +message WorkspaceStorageSetting { + enum StorageType { + STORAGE_TYPE_UNSPECIFIED = 0; + // DATABASE is the database storage type. + DATABASE = 1; + // LOCAL is the local storage type. + LOCAL = 2; + // S3 is the S3 storage type. + S3 = 3; + } + // storage_type is the storage type. + StorageType storage_type = 1; + // The template of file path. + // e.g. assets/{timestamp}_{filename} + string filepath_template = 2; + // The max upload size in megabytes. + int64 upload_size_limit_mb = 3; + // Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ + message S3Config { + string access_key_id = 1; + string access_key_secret = 2; + string endpoint = 3; + string region = 4; + string bucket = 5; + } + // The S3 config. + S3Config s3_config = 4; +} + +message WorkspaceMemoRelatedSetting { + // disallow_public_share disallows set memo as public visible. + bool disallow_public_visible = 1; + // display_with_update_time orders and displays memo with update time. + bool display_with_update_time = 2; + // content_length_limit is the limit of content length. Unit is byte. + int32 content_length_limit = 3; +} + +message GetWorkspaceSettingRequest { + // The resource name of the workspace setting. + // Format: settings/{setting} + string name = 1 [(google.api.field_behavior) = REQUIRED]; +} + +message SetWorkspaceSettingRequest { + // setting is the setting to update. + WorkspaceSetting setting = 1; +} diff --git a/api/memos-proto-v0.22.1/buf.gen.yaml b/api/memos-proto-v0.22.1/buf.gen.yaml new file mode 100644 index 0000000..8e5fabf --- /dev/null +++ b/api/memos-proto-v0.22.1/buf.gen.yaml @@ -0,0 +1,16 @@ +version: v1 +managed: + enabled: true +plugins: + # Build the TypeScript definitions for the web. + - plugin: buf.build/community/stephenh-ts-proto + out: gen + # reference: https://github.com/deeplay-io/nice-grpc/blob/master/packages/nice-grpc-web/README.md#using-ts-proto + opt: + - env=browser + - useOptionals=messages + - outputServices=generic-definitions + - outputJsonMethods=false + - useExactTypes=false + - esModuleInterop=true + - stringEnums=true diff --git a/api/memos-proto-v0.22.1/buf.lock b/api/memos-proto-v0.22.1/buf.lock new file mode 100644 index 0000000..495b559 --- /dev/null +++ b/api/memos-proto-v0.22.1/buf.lock @@ -0,0 +1,9 @@ +# Generated by buf. DO NOT EDIT. +version: v2 +deps: + - name: buf.build/googleapis/googleapis + commit: f0e53af8f2fc4556b94f482688b57223 + digest: b5:24e758f963ee1bb3b5218eb452e0bdfb7a5449d9a77d174b8284b6368ccc1884213689381cdcd79e4231796c281c128ac1ae50825237b1774deb542bdc704b32 + - name: buf.build/grpc-ecosystem/grpc-gateway + commit: f04e50c23f5f40f786d0e8fa3fe3d713 + digest: b5:64ac6d9f363dfc69d619ee4649a7cbad7081c5ecbd35e5f6f2c982a36d9c663545e8e31a38b51b0d9813ac20e87988b89f00e9bd4fee64a9740ec34ffc5b942f diff --git a/api/memos-proto-v0.22.1/buf.yaml b/api/memos-proto-v0.22.1/buf.yaml new file mode 100644 index 0000000..93ac6f5 --- /dev/null +++ b/api/memos-proto-v0.22.1/buf.yaml @@ -0,0 +1,10 @@ +version: v2 +lint: + use: + - DEFAULT +breaking: + use: + - FILE +deps: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway diff --git a/api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts new file mode 100644 index 0000000..d8ad2cc --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts @@ -0,0 +1,430 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/activity_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Timestamp } from "../../google/protobuf/timestamp"; + +export const protobufPackage = "memos.api.v1"; + +export interface Activity { + /** The system-generated unique identifier for the activity. */ + id: number; + /** The system-generated unique identifier for the user who created the activity. */ + creatorId: number; + /** The type of the activity. */ + type: string; + /** The level of the activity. */ + level: string; + /** The create time of the activity. */ + createTime?: + | Date + | undefined; + /** The payload of the activity. */ + payload?: ActivityPayload | undefined; +} + +/** ActivityMemoCommentPayload represents the payload of a memo comment activity. */ +export interface ActivityMemoCommentPayload { + /** The memo id of comment. */ + memoId: number; + /** The memo id of related memo. */ + relatedMemoId: number; +} + +export interface ActivityVersionUpdatePayload { + /** The updated version of memos. */ + version: string; +} + +export interface ActivityPayload { + memoComment?: ActivityMemoCommentPayload | undefined; + versionUpdate?: ActivityVersionUpdatePayload | undefined; +} + +export interface GetActivityRequest { + /** The system-generated unique identifier for the activity. */ + id: number; +} + +function createBaseActivity(): Activity { + return { id: 0, creatorId: 0, type: "", level: "", createTime: undefined, payload: undefined }; +} + +export const Activity = { + encode(message: Activity, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + if (message.creatorId !== 0) { + writer.uint32(16).int32(message.creatorId); + } + if (message.type !== "") { + writer.uint32(26).string(message.type); + } + if (message.level !== "") { + writer.uint32(34).string(message.level); + } + if (message.createTime !== undefined) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(42).fork()).ldelim(); + } + if (message.payload !== undefined) { + ActivityPayload.encode(message.payload, writer.uint32(50).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Activity { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseActivity(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.creatorId = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.type = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.level = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.payload = ActivityPayload.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Activity { + return Activity.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Activity { + const message = createBaseActivity(); + message.id = object.id ?? 0; + message.creatorId = object.creatorId ?? 0; + message.type = object.type ?? ""; + message.level = object.level ?? ""; + message.createTime = object.createTime ?? undefined; + message.payload = (object.payload !== undefined && object.payload !== null) + ? ActivityPayload.fromPartial(object.payload) + : undefined; + return message; + }, +}; + +function createBaseActivityMemoCommentPayload(): ActivityMemoCommentPayload { + return { memoId: 0, relatedMemoId: 0 }; +} + +export const ActivityMemoCommentPayload = { + encode(message: ActivityMemoCommentPayload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.memoId !== 0) { + writer.uint32(8).int32(message.memoId); + } + if (message.relatedMemoId !== 0) { + writer.uint32(16).int32(message.relatedMemoId); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ActivityMemoCommentPayload { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseActivityMemoCommentPayload(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.memoId = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.relatedMemoId = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ActivityMemoCommentPayload { + return ActivityMemoCommentPayload.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ActivityMemoCommentPayload { + const message = createBaseActivityMemoCommentPayload(); + message.memoId = object.memoId ?? 0; + message.relatedMemoId = object.relatedMemoId ?? 0; + return message; + }, +}; + +function createBaseActivityVersionUpdatePayload(): ActivityVersionUpdatePayload { + return { version: "" }; +} + +export const ActivityVersionUpdatePayload = { + encode(message: ActivityVersionUpdatePayload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.version !== "") { + writer.uint32(10).string(message.version); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ActivityVersionUpdatePayload { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseActivityVersionUpdatePayload(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.version = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ActivityVersionUpdatePayload { + return ActivityVersionUpdatePayload.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ActivityVersionUpdatePayload { + const message = createBaseActivityVersionUpdatePayload(); + message.version = object.version ?? ""; + return message; + }, +}; + +function createBaseActivityPayload(): ActivityPayload { + return { memoComment: undefined, versionUpdate: undefined }; +} + +export const ActivityPayload = { + encode(message: ActivityPayload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.memoComment !== undefined) { + ActivityMemoCommentPayload.encode(message.memoComment, writer.uint32(10).fork()).ldelim(); + } + if (message.versionUpdate !== undefined) { + ActivityVersionUpdatePayload.encode(message.versionUpdate, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ActivityPayload { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseActivityPayload(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memoComment = ActivityMemoCommentPayload.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.versionUpdate = ActivityVersionUpdatePayload.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ActivityPayload { + return ActivityPayload.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ActivityPayload { + const message = createBaseActivityPayload(); + message.memoComment = (object.memoComment !== undefined && object.memoComment !== null) + ? ActivityMemoCommentPayload.fromPartial(object.memoComment) + : undefined; + message.versionUpdate = (object.versionUpdate !== undefined && object.versionUpdate !== null) + ? ActivityVersionUpdatePayload.fromPartial(object.versionUpdate) + : undefined; + return message; + }, +}; + +function createBaseGetActivityRequest(): GetActivityRequest { + return { id: 0 }; +} + +export const GetActivityRequest = { + encode(message: GetActivityRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetActivityRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetActivityRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetActivityRequest { + return GetActivityRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetActivityRequest { + const message = createBaseGetActivityRequest(); + message.id = object.id ?? 0; + return message; + }, +}; + +export type ActivityServiceDefinition = typeof ActivityServiceDefinition; +export const ActivityServiceDefinition = { + name: "ActivityService", + fullName: "memos.api.v1.ActivityService", + methods: { + /** GetActivity returns the activity with the given id. */ + getActivity: { + name: "GetActivity", + requestType: GetActivityRequest, + requestStream: false, + responseType: Activity, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([2, 105, 100])], + 578365826: [ + new Uint8Array([ + 25, + 18, + 23, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 99, + 116, + 105, + 118, + 105, + 116, + 105, + 101, + 115, + 47, + 123, + 105, + 100, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts new file mode 100644 index 0000000..b124b90 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts @@ -0,0 +1,561 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/auth_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Empty } from "../../google/protobuf/empty"; +import { User } from "./user_service"; + +export const protobufPackage = "memos.api.v1"; + +export interface GetAuthStatusRequest { +} + +export interface GetAuthStatusResponse { + user?: User | undefined; +} + +export interface SignInRequest { + /** The username to sign in with. */ + username: string; + /** The password to sign in with. */ + password: string; + /** Whether the session should never expire. */ + neverExpire: boolean; +} + +export interface SignInWithSSORequest { + /** The ID of the SSO provider. */ + idpId: number; + /** The code to sign in with. */ + code: string; + /** The redirect URI. */ + redirectUri: string; +} + +export interface SignUpRequest { + /** The username to sign up with. */ + username: string; + /** The password to sign up with. */ + password: string; +} + +export interface SignOutRequest { +} + +function createBaseGetAuthStatusRequest(): GetAuthStatusRequest { + return {}; +} + +export const GetAuthStatusRequest = { + encode(_: GetAuthStatusRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetAuthStatusRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetAuthStatusRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetAuthStatusRequest { + return GetAuthStatusRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): GetAuthStatusRequest { + const message = createBaseGetAuthStatusRequest(); + return message; + }, +}; + +function createBaseGetAuthStatusResponse(): GetAuthStatusResponse { + return { user: undefined }; +} + +export const GetAuthStatusResponse = { + encode(message: GetAuthStatusResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.user !== undefined) { + User.encode(message.user, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetAuthStatusResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetAuthStatusResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.user = User.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetAuthStatusResponse { + return GetAuthStatusResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetAuthStatusResponse { + const message = createBaseGetAuthStatusResponse(); + message.user = (object.user !== undefined && object.user !== null) ? User.fromPartial(object.user) : undefined; + return message; + }, +}; + +function createBaseSignInRequest(): SignInRequest { + return { username: "", password: "", neverExpire: false }; +} + +export const SignInRequest = { + encode(message: SignInRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + if (message.neverExpire !== false) { + writer.uint32(24).bool(message.neverExpire); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SignInRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSignInRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.username = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.password = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.neverExpire = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SignInRequest { + return SignInRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SignInRequest { + const message = createBaseSignInRequest(); + message.username = object.username ?? ""; + message.password = object.password ?? ""; + message.neverExpire = object.neverExpire ?? false; + return message; + }, +}; + +function createBaseSignInWithSSORequest(): SignInWithSSORequest { + return { idpId: 0, code: "", redirectUri: "" }; +} + +export const SignInWithSSORequest = { + encode(message: SignInWithSSORequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.idpId !== 0) { + writer.uint32(8).int32(message.idpId); + } + if (message.code !== "") { + writer.uint32(18).string(message.code); + } + if (message.redirectUri !== "") { + writer.uint32(26).string(message.redirectUri); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SignInWithSSORequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSignInWithSSORequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.idpId = reader.int32(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.code = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.redirectUri = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SignInWithSSORequest { + return SignInWithSSORequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SignInWithSSORequest { + const message = createBaseSignInWithSSORequest(); + message.idpId = object.idpId ?? 0; + message.code = object.code ?? ""; + message.redirectUri = object.redirectUri ?? ""; + return message; + }, +}; + +function createBaseSignUpRequest(): SignUpRequest { + return { username: "", password: "" }; +} + +export const SignUpRequest = { + encode(message: SignUpRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SignUpRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSignUpRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.username = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.password = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SignUpRequest { + return SignUpRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SignUpRequest { + const message = createBaseSignUpRequest(); + message.username = object.username ?? ""; + message.password = object.password ?? ""; + return message; + }, +}; + +function createBaseSignOutRequest(): SignOutRequest { + return {}; +} + +export const SignOutRequest = { + encode(_: SignOutRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SignOutRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSignOutRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SignOutRequest { + return SignOutRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): SignOutRequest { + const message = createBaseSignOutRequest(); + return message; + }, +}; + +export type AuthServiceDefinition = typeof AuthServiceDefinition; +export const AuthServiceDefinition = { + name: "AuthService", + fullName: "memos.api.v1.AuthService", + methods: { + /** GetAuthStatus returns the current auth status of the user. */ + getAuthStatus: { + name: "GetAuthStatus", + requestType: GetAuthStatusRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 116, + 97, + 116, + 117, + 115, + ]), + ], + }, + }, + }, + /** SignIn signs in the user with the given username and password. */ + signIn: { + name: "SignIn", + requestType: SignInRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110, + ]), + ], + }, + }, + }, + /** SignInWithSSO signs in the user with the given SSO code. */ + signInWithSSO: { + name: "SignInWithSSO", + requestType: SignInWithSSORequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 25, + 34, + 23, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110, + 47, + 115, + 115, + 111, + ]), + ], + }, + }, + }, + /** SignUp signs up the user with the given username and password. */ + signUp: { + name: "SignUp", + requestType: SignUpRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 117, + 112, + ]), + ], + }, + }, + }, + /** SignOut signs out the user. */ + signOut: { + name: "SignOut", + requestType: SignOutRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 34, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 111, + 117, + 116, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/common.ts b/api/memos-proto-v0.22.1/gen/api/v1/common.ts new file mode 100644 index 0000000..bc47c34 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/common.ts @@ -0,0 +1,119 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/common.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export enum RowStatus { + ROW_STATUS_UNSPECIFIED = "ROW_STATUS_UNSPECIFIED", + ACTIVE = "ACTIVE", + ARCHIVED = "ARCHIVED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function rowStatusFromJSON(object: any): RowStatus { + switch (object) { + case 0: + case "ROW_STATUS_UNSPECIFIED": + return RowStatus.ROW_STATUS_UNSPECIFIED; + case 1: + case "ACTIVE": + return RowStatus.ACTIVE; + case 2: + case "ARCHIVED": + return RowStatus.ARCHIVED; + case -1: + case "UNRECOGNIZED": + default: + return RowStatus.UNRECOGNIZED; + } +} + +export function rowStatusToNumber(object: RowStatus): number { + switch (object) { + case RowStatus.ROW_STATUS_UNSPECIFIED: + return 0; + case RowStatus.ACTIVE: + return 1; + case RowStatus.ARCHIVED: + return 2; + case RowStatus.UNRECOGNIZED: + default: + return -1; + } +} + +/** Used internally for obfuscating the page token. */ +export interface PageToken { + limit: number; + offset: number; +} + +function createBasePageToken(): PageToken { + return { limit: 0, offset: 0 }; +} + +export const PageToken = { + encode(message: PageToken, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.limit !== 0) { + writer.uint32(8).int32(message.limit); + } + if (message.offset !== 0) { + writer.uint32(16).int32(message.offset); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): PageToken { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePageToken(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.limit = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.offset = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): PageToken { + return PageToken.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): PageToken { + const message = createBasePageToken(); + message.limit = object.limit ?? 0; + message.offset = object.offset ?? 0; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts new file mode 100644 index 0000000..ce115b0 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts @@ -0,0 +1,1072 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/idp_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; + +export const protobufPackage = "memos.api.v1"; + +export interface IdentityProvider { + /** + * The name of the identityProvider. + * Format: identityProviders/{id} + */ + name: string; + type: IdentityProvider_Type; + title: string; + identifierFilter: string; + config?: IdentityProviderConfig | undefined; +} + +export enum IdentityProvider_Type { + TYPE_UNSPECIFIED = "TYPE_UNSPECIFIED", + OAUTH2 = "OAUTH2", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function identityProvider_TypeFromJSON(object: any): IdentityProvider_Type { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return IdentityProvider_Type.TYPE_UNSPECIFIED; + case 1: + case "OAUTH2": + return IdentityProvider_Type.OAUTH2; + case -1: + case "UNRECOGNIZED": + default: + return IdentityProvider_Type.UNRECOGNIZED; + } +} + +export function identityProvider_TypeToNumber(object: IdentityProvider_Type): number { + switch (object) { + case IdentityProvider_Type.TYPE_UNSPECIFIED: + return 0; + case IdentityProvider_Type.OAUTH2: + return 1; + case IdentityProvider_Type.UNRECOGNIZED: + default: + return -1; + } +} + +export interface IdentityProviderConfig { + oauth2Config?: OAuth2Config | undefined; +} + +export interface FieldMapping { + identifier: string; + displayName: string; + email: string; +} + +export interface OAuth2Config { + clientId: string; + clientSecret: string; + authUrl: string; + tokenUrl: string; + userInfoUrl: string; + scopes: string[]; + fieldMapping?: FieldMapping | undefined; +} + +export interface ListIdentityProvidersRequest { +} + +export interface ListIdentityProvidersResponse { + identityProviders: IdentityProvider[]; +} + +export interface GetIdentityProviderRequest { + /** + * The name of the identityProvider to get. + * Format: identityProviders/{id} + */ + name: string; +} + +export interface CreateIdentityProviderRequest { + /** The identityProvider to create. */ + identityProvider?: IdentityProvider | undefined; +} + +export interface UpdateIdentityProviderRequest { + /** The identityProvider to update. */ + identityProvider?: + | IdentityProvider + | undefined; + /** + * The update mask applies to the resource. Only the top level fields of + * IdentityProvider are supported. + */ + updateMask?: string[] | undefined; +} + +export interface DeleteIdentityProviderRequest { + /** + * The name of the identityProvider to delete. + * Format: identityProviders/{id} + */ + name: string; +} + +function createBaseIdentityProvider(): IdentityProvider { + return { name: "", type: IdentityProvider_Type.TYPE_UNSPECIFIED, title: "", identifierFilter: "", config: undefined }; +} + +export const IdentityProvider = { + encode(message: IdentityProvider, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.type !== IdentityProvider_Type.TYPE_UNSPECIFIED) { + writer.uint32(16).int32(identityProvider_TypeToNumber(message.type)); + } + if (message.title !== "") { + writer.uint32(26).string(message.title); + } + if (message.identifierFilter !== "") { + writer.uint32(34).string(message.identifierFilter); + } + if (message.config !== undefined) { + IdentityProviderConfig.encode(message.config, writer.uint32(42).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): IdentityProvider { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseIdentityProvider(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.type = identityProvider_TypeFromJSON(reader.int32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.title = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.identifierFilter = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.config = IdentityProviderConfig.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): IdentityProvider { + return IdentityProvider.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): IdentityProvider { + const message = createBaseIdentityProvider(); + message.name = object.name ?? ""; + message.type = object.type ?? IdentityProvider_Type.TYPE_UNSPECIFIED; + message.title = object.title ?? ""; + message.identifierFilter = object.identifierFilter ?? ""; + message.config = (object.config !== undefined && object.config !== null) + ? IdentityProviderConfig.fromPartial(object.config) + : undefined; + return message; + }, +}; + +function createBaseIdentityProviderConfig(): IdentityProviderConfig { + return { oauth2Config: undefined }; +} + +export const IdentityProviderConfig = { + encode(message: IdentityProviderConfig, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.oauth2Config !== undefined) { + OAuth2Config.encode(message.oauth2Config, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): IdentityProviderConfig { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseIdentityProviderConfig(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.oauth2Config = OAuth2Config.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): IdentityProviderConfig { + return IdentityProviderConfig.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): IdentityProviderConfig { + const message = createBaseIdentityProviderConfig(); + message.oauth2Config = (object.oauth2Config !== undefined && object.oauth2Config !== null) + ? OAuth2Config.fromPartial(object.oauth2Config) + : undefined; + return message; + }, +}; + +function createBaseFieldMapping(): FieldMapping { + return { identifier: "", displayName: "", email: "" }; +} + +export const FieldMapping = { + encode(message: FieldMapping, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.identifier !== "") { + writer.uint32(10).string(message.identifier); + } + if (message.displayName !== "") { + writer.uint32(18).string(message.displayName); + } + if (message.email !== "") { + writer.uint32(26).string(message.email); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldMapping { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldMapping(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.identifier = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.displayName = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.email = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldMapping { + return FieldMapping.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldMapping { + const message = createBaseFieldMapping(); + message.identifier = object.identifier ?? ""; + message.displayName = object.displayName ?? ""; + message.email = object.email ?? ""; + return message; + }, +}; + +function createBaseOAuth2Config(): OAuth2Config { + return { + clientId: "", + clientSecret: "", + authUrl: "", + tokenUrl: "", + userInfoUrl: "", + scopes: [], + fieldMapping: undefined, + }; +} + +export const OAuth2Config = { + encode(message: OAuth2Config, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.clientId !== "") { + writer.uint32(10).string(message.clientId); + } + if (message.clientSecret !== "") { + writer.uint32(18).string(message.clientSecret); + } + if (message.authUrl !== "") { + writer.uint32(26).string(message.authUrl); + } + if (message.tokenUrl !== "") { + writer.uint32(34).string(message.tokenUrl); + } + if (message.userInfoUrl !== "") { + writer.uint32(42).string(message.userInfoUrl); + } + for (const v of message.scopes) { + writer.uint32(50).string(v!); + } + if (message.fieldMapping !== undefined) { + FieldMapping.encode(message.fieldMapping, writer.uint32(58).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): OAuth2Config { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseOAuth2Config(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.clientId = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.clientSecret = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.authUrl = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.tokenUrl = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.userInfoUrl = reader.string(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.scopes.push(reader.string()); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.fieldMapping = FieldMapping.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): OAuth2Config { + return OAuth2Config.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): OAuth2Config { + const message = createBaseOAuth2Config(); + message.clientId = object.clientId ?? ""; + message.clientSecret = object.clientSecret ?? ""; + message.authUrl = object.authUrl ?? ""; + message.tokenUrl = object.tokenUrl ?? ""; + message.userInfoUrl = object.userInfoUrl ?? ""; + message.scopes = object.scopes?.map((e) => e) || []; + message.fieldMapping = (object.fieldMapping !== undefined && object.fieldMapping !== null) + ? FieldMapping.fromPartial(object.fieldMapping) + : undefined; + return message; + }, +}; + +function createBaseListIdentityProvidersRequest(): ListIdentityProvidersRequest { + return {}; +} + +export const ListIdentityProvidersRequest = { + encode(_: ListIdentityProvidersRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListIdentityProvidersRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListIdentityProvidersRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListIdentityProvidersRequest { + return ListIdentityProvidersRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): ListIdentityProvidersRequest { + const message = createBaseListIdentityProvidersRequest(); + return message; + }, +}; + +function createBaseListIdentityProvidersResponse(): ListIdentityProvidersResponse { + return { identityProviders: [] }; +} + +export const ListIdentityProvidersResponse = { + encode(message: ListIdentityProvidersResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.identityProviders) { + IdentityProvider.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListIdentityProvidersResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListIdentityProvidersResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.identityProviders.push(IdentityProvider.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListIdentityProvidersResponse { + return ListIdentityProvidersResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListIdentityProvidersResponse { + const message = createBaseListIdentityProvidersResponse(); + message.identityProviders = object.identityProviders?.map((e) => IdentityProvider.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGetIdentityProviderRequest(): GetIdentityProviderRequest { + return { name: "" }; +} + +export const GetIdentityProviderRequest = { + encode(message: GetIdentityProviderRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetIdentityProviderRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetIdentityProviderRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetIdentityProviderRequest { + return GetIdentityProviderRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetIdentityProviderRequest { + const message = createBaseGetIdentityProviderRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseCreateIdentityProviderRequest(): CreateIdentityProviderRequest { + return { identityProvider: undefined }; +} + +export const CreateIdentityProviderRequest = { + encode(message: CreateIdentityProviderRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.identityProvider !== undefined) { + IdentityProvider.encode(message.identityProvider, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateIdentityProviderRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateIdentityProviderRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.identityProvider = IdentityProvider.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateIdentityProviderRequest { + return CreateIdentityProviderRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateIdentityProviderRequest { + const message = createBaseCreateIdentityProviderRequest(); + message.identityProvider = (object.identityProvider !== undefined && object.identityProvider !== null) + ? IdentityProvider.fromPartial(object.identityProvider) + : undefined; + return message; + }, +}; + +function createBaseUpdateIdentityProviderRequest(): UpdateIdentityProviderRequest { + return { identityProvider: undefined, updateMask: undefined }; +} + +export const UpdateIdentityProviderRequest = { + encode(message: UpdateIdentityProviderRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.identityProvider !== undefined) { + IdentityProvider.encode(message.identityProvider, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateIdentityProviderRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateIdentityProviderRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.identityProvider = IdentityProvider.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateIdentityProviderRequest { + return UpdateIdentityProviderRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateIdentityProviderRequest { + const message = createBaseUpdateIdentityProviderRequest(); + message.identityProvider = (object.identityProvider !== undefined && object.identityProvider !== null) + ? IdentityProvider.fromPartial(object.identityProvider) + : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteIdentityProviderRequest(): DeleteIdentityProviderRequest { + return { name: "" }; +} + +export const DeleteIdentityProviderRequest = { + encode(message: DeleteIdentityProviderRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteIdentityProviderRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteIdentityProviderRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteIdentityProviderRequest { + return DeleteIdentityProviderRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteIdentityProviderRequest { + const message = createBaseDeleteIdentityProviderRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +export type IdentityProviderServiceDefinition = typeof IdentityProviderServiceDefinition; +export const IdentityProviderServiceDefinition = { + name: "IdentityProviderService", + fullName: "memos.api.v1.IdentityProviderService", + methods: { + /** ListIdentityProviders lists identity providers. */ + listIdentityProviders: { + name: "ListIdentityProviders", + requestType: ListIdentityProvidersRequest, + requestStream: false, + responseType: ListIdentityProvidersResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 27, + 18, + 25, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 80, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 115, + ]), + ], + }, + }, + }, + /** GetIdentityProvider gets an identity provider. */ + getIdentityProvider: { + name: "GetIdentityProvider", + requestType: GetIdentityProviderRequest, + requestStream: false, + responseType: IdentityProvider, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 36, + 18, + 34, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 80, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** CreateIdentityProvider creates an identity provider. */ + createIdentityProvider: { + name: "CreateIdentityProvider", + requestType: CreateIdentityProviderRequest, + requestStream: false, + responseType: IdentityProvider, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 46, + 58, + 17, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 95, + 112, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 34, + 25, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 80, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 115, + ]), + ], + }, + }, + }, + /** UpdateIdentityProvider updates an identity provider. */ + updateIdentityProvider: { + name: "UpdateIdentityProvider", + requestType: UpdateIdentityProviderRequest, + requestStream: false, + responseType: IdentityProvider, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 29, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 95, + 112, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107, + ]), + ], + 578365826: [ + new Uint8Array([ + 73, + 58, + 17, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 95, + 112, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 50, + 52, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 95, + 112, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 46, + 110, + 97, + 109, + 101, + 61, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 80, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** DeleteIdentityProvider deletes an identity provider. */ + deleteIdentityProvider: { + name: "DeleteIdentityProvider", + requestType: DeleteIdentityProviderRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 36, + 42, + 34, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 105, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 80, + 114, + 111, + 118, + 105, + 100, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts new file mode 100644 index 0000000..dc9350c --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts @@ -0,0 +1,583 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/inbox_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; +import { Timestamp } from "../../google/protobuf/timestamp"; + +export const protobufPackage = "memos.api.v1"; + +export interface Inbox { + /** + * The name of the inbox. + * Format: inboxes/{id} + */ + name: string; + /** Format: users/{id} */ + sender: string; + /** Format: users/{id} */ + receiver: string; + status: Inbox_Status; + createTime?: Date | undefined; + type: Inbox_Type; + activityId?: number | undefined; +} + +export enum Inbox_Status { + STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED", + UNREAD = "UNREAD", + ARCHIVED = "ARCHIVED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function inbox_StatusFromJSON(object: any): Inbox_Status { + switch (object) { + case 0: + case "STATUS_UNSPECIFIED": + return Inbox_Status.STATUS_UNSPECIFIED; + case 1: + case "UNREAD": + return Inbox_Status.UNREAD; + case 2: + case "ARCHIVED": + return Inbox_Status.ARCHIVED; + case -1: + case "UNRECOGNIZED": + default: + return Inbox_Status.UNRECOGNIZED; + } +} + +export function inbox_StatusToNumber(object: Inbox_Status): number { + switch (object) { + case Inbox_Status.STATUS_UNSPECIFIED: + return 0; + case Inbox_Status.UNREAD: + return 1; + case Inbox_Status.ARCHIVED: + return 2; + case Inbox_Status.UNRECOGNIZED: + default: + return -1; + } +} + +export enum Inbox_Type { + TYPE_UNSPECIFIED = "TYPE_UNSPECIFIED", + MEMO_COMMENT = "MEMO_COMMENT", + VERSION_UPDATE = "VERSION_UPDATE", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function inbox_TypeFromJSON(object: any): Inbox_Type { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return Inbox_Type.TYPE_UNSPECIFIED; + case 1: + case "MEMO_COMMENT": + return Inbox_Type.MEMO_COMMENT; + case 2: + case "VERSION_UPDATE": + return Inbox_Type.VERSION_UPDATE; + case -1: + case "UNRECOGNIZED": + default: + return Inbox_Type.UNRECOGNIZED; + } +} + +export function inbox_TypeToNumber(object: Inbox_Type): number { + switch (object) { + case Inbox_Type.TYPE_UNSPECIFIED: + return 0; + case Inbox_Type.MEMO_COMMENT: + return 1; + case Inbox_Type.VERSION_UPDATE: + return 2; + case Inbox_Type.UNRECOGNIZED: + default: + return -1; + } +} + +export interface ListInboxesRequest { + /** Format: users/{id} */ + user: string; +} + +export interface ListInboxesResponse { + inboxes: Inbox[]; +} + +export interface UpdateInboxRequest { + inbox?: Inbox | undefined; + updateMask?: string[] | undefined; +} + +export interface DeleteInboxRequest { + /** + * The name of the inbox to delete. + * Format: inboxes/{id} + */ + name: string; +} + +function createBaseInbox(): Inbox { + return { + name: "", + sender: "", + receiver: "", + status: Inbox_Status.STATUS_UNSPECIFIED, + createTime: undefined, + type: Inbox_Type.TYPE_UNSPECIFIED, + activityId: undefined, + }; +} + +export const Inbox = { + encode(message: Inbox, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.sender !== "") { + writer.uint32(18).string(message.sender); + } + if (message.receiver !== "") { + writer.uint32(26).string(message.receiver); + } + if (message.status !== Inbox_Status.STATUS_UNSPECIFIED) { + writer.uint32(32).int32(inbox_StatusToNumber(message.status)); + } + if (message.createTime !== undefined) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(42).fork()).ldelim(); + } + if (message.type !== Inbox_Type.TYPE_UNSPECIFIED) { + writer.uint32(48).int32(inbox_TypeToNumber(message.type)); + } + if (message.activityId !== undefined) { + writer.uint32(56).int32(message.activityId); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Inbox { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseInbox(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.sender = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.receiver = reader.string(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.status = inbox_StatusFromJSON(reader.int32()); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.type = inbox_TypeFromJSON(reader.int32()); + continue; + case 7: + if (tag !== 56) { + break; + } + + message.activityId = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Inbox { + return Inbox.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Inbox { + const message = createBaseInbox(); + message.name = object.name ?? ""; + message.sender = object.sender ?? ""; + message.receiver = object.receiver ?? ""; + message.status = object.status ?? Inbox_Status.STATUS_UNSPECIFIED; + message.createTime = object.createTime ?? undefined; + message.type = object.type ?? Inbox_Type.TYPE_UNSPECIFIED; + message.activityId = object.activityId ?? undefined; + return message; + }, +}; + +function createBaseListInboxesRequest(): ListInboxesRequest { + return { user: "" }; +} + +export const ListInboxesRequest = { + encode(message: ListInboxesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.user !== "") { + writer.uint32(10).string(message.user); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListInboxesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListInboxesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.user = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListInboxesRequest { + return ListInboxesRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListInboxesRequest { + const message = createBaseListInboxesRequest(); + message.user = object.user ?? ""; + return message; + }, +}; + +function createBaseListInboxesResponse(): ListInboxesResponse { + return { inboxes: [] }; +} + +export const ListInboxesResponse = { + encode(message: ListInboxesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.inboxes) { + Inbox.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListInboxesResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListInboxesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.inboxes.push(Inbox.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListInboxesResponse { + return ListInboxesResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListInboxesResponse { + const message = createBaseListInboxesResponse(); + message.inboxes = object.inboxes?.map((e) => Inbox.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseUpdateInboxRequest(): UpdateInboxRequest { + return { inbox: undefined, updateMask: undefined }; +} + +export const UpdateInboxRequest = { + encode(message: UpdateInboxRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.inbox !== undefined) { + Inbox.encode(message.inbox, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateInboxRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateInboxRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.inbox = Inbox.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateInboxRequest { + return UpdateInboxRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateInboxRequest { + const message = createBaseUpdateInboxRequest(); + message.inbox = (object.inbox !== undefined && object.inbox !== null) ? Inbox.fromPartial(object.inbox) : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteInboxRequest(): DeleteInboxRequest { + return { name: "" }; +} + +export const DeleteInboxRequest = { + encode(message: DeleteInboxRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteInboxRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteInboxRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteInboxRequest { + return DeleteInboxRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteInboxRequest { + const message = createBaseDeleteInboxRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +export type InboxServiceDefinition = typeof InboxServiceDefinition; +export const InboxServiceDefinition = { + name: "InboxService", + fullName: "memos.api.v1.InboxService", + methods: { + /** ListInboxes lists inboxes for a user. */ + listInboxes: { + name: "ListInboxes", + requestType: ListInboxesRequest, + requestStream: false, + responseType: ListInboxesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([17, 18, 15, 47, 97, 112, 105, 47, 118, 49, 47, 105, 110, 98, 111, 120, 101, 115]), + ], + }, + }, + }, + /** UpdateInbox updates an inbox. */ + updateInbox: { + name: "UpdateInbox", + requestType: UpdateInboxRequest, + requestStream: false, + responseType: Inbox, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([17, 105, 110, 98, 111, 120, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 39, + 58, + 5, + 105, + 110, + 98, + 111, + 120, + 50, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 105, + 110, + 98, + 111, + 120, + 46, + 110, + 97, + 109, + 101, + 61, + 105, + 110, + 98, + 111, + 120, + 101, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** DeleteInbox deletes an inbox. */ + deleteInbox: { + name: "DeleteInbox", + requestType: DeleteInboxRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 26, + 42, + 24, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 105, + 110, + 98, + 111, + 120, + 101, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts new file mode 100644 index 0000000..5f6d608 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts @@ -0,0 +1,2858 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/markdown_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export enum NodeType { + NODE_UNSPECIFIED = "NODE_UNSPECIFIED", + LINE_BREAK = "LINE_BREAK", + PARAGRAPH = "PARAGRAPH", + CODE_BLOCK = "CODE_BLOCK", + HEADING = "HEADING", + HORIZONTAL_RULE = "HORIZONTAL_RULE", + BLOCKQUOTE = "BLOCKQUOTE", + ORDERED_LIST = "ORDERED_LIST", + UNORDERED_LIST = "UNORDERED_LIST", + TASK_LIST = "TASK_LIST", + MATH_BLOCK = "MATH_BLOCK", + TABLE = "TABLE", + EMBEDDED_CONTENT = "EMBEDDED_CONTENT", + TEXT = "TEXT", + BOLD = "BOLD", + ITALIC = "ITALIC", + BOLD_ITALIC = "BOLD_ITALIC", + CODE = "CODE", + IMAGE = "IMAGE", + LINK = "LINK", + AUTO_LINK = "AUTO_LINK", + TAG = "TAG", + STRIKETHROUGH = "STRIKETHROUGH", + ESCAPING_CHARACTER = "ESCAPING_CHARACTER", + MATH = "MATH", + HIGHLIGHT = "HIGHLIGHT", + SUBSCRIPT = "SUBSCRIPT", + SUPERSCRIPT = "SUPERSCRIPT", + REFERENCED_CONTENT = "REFERENCED_CONTENT", + SPOILER = "SPOILER", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function nodeTypeFromJSON(object: any): NodeType { + switch (object) { + case 0: + case "NODE_UNSPECIFIED": + return NodeType.NODE_UNSPECIFIED; + case 1: + case "LINE_BREAK": + return NodeType.LINE_BREAK; + case 2: + case "PARAGRAPH": + return NodeType.PARAGRAPH; + case 3: + case "CODE_BLOCK": + return NodeType.CODE_BLOCK; + case 4: + case "HEADING": + return NodeType.HEADING; + case 5: + case "HORIZONTAL_RULE": + return NodeType.HORIZONTAL_RULE; + case 6: + case "BLOCKQUOTE": + return NodeType.BLOCKQUOTE; + case 7: + case "ORDERED_LIST": + return NodeType.ORDERED_LIST; + case 8: + case "UNORDERED_LIST": + return NodeType.UNORDERED_LIST; + case 9: + case "TASK_LIST": + return NodeType.TASK_LIST; + case 10: + case "MATH_BLOCK": + return NodeType.MATH_BLOCK; + case 11: + case "TABLE": + return NodeType.TABLE; + case 12: + case "EMBEDDED_CONTENT": + return NodeType.EMBEDDED_CONTENT; + case 13: + case "TEXT": + return NodeType.TEXT; + case 14: + case "BOLD": + return NodeType.BOLD; + case 15: + case "ITALIC": + return NodeType.ITALIC; + case 16: + case "BOLD_ITALIC": + return NodeType.BOLD_ITALIC; + case 17: + case "CODE": + return NodeType.CODE; + case 18: + case "IMAGE": + return NodeType.IMAGE; + case 19: + case "LINK": + return NodeType.LINK; + case 20: + case "AUTO_LINK": + return NodeType.AUTO_LINK; + case 21: + case "TAG": + return NodeType.TAG; + case 22: + case "STRIKETHROUGH": + return NodeType.STRIKETHROUGH; + case 23: + case "ESCAPING_CHARACTER": + return NodeType.ESCAPING_CHARACTER; + case 24: + case "MATH": + return NodeType.MATH; + case 25: + case "HIGHLIGHT": + return NodeType.HIGHLIGHT; + case 26: + case "SUBSCRIPT": + return NodeType.SUBSCRIPT; + case 27: + case "SUPERSCRIPT": + return NodeType.SUPERSCRIPT; + case 28: + case "REFERENCED_CONTENT": + return NodeType.REFERENCED_CONTENT; + case 29: + case "SPOILER": + return NodeType.SPOILER; + case -1: + case "UNRECOGNIZED": + default: + return NodeType.UNRECOGNIZED; + } +} + +export function nodeTypeToNumber(object: NodeType): number { + switch (object) { + case NodeType.NODE_UNSPECIFIED: + return 0; + case NodeType.LINE_BREAK: + return 1; + case NodeType.PARAGRAPH: + return 2; + case NodeType.CODE_BLOCK: + return 3; + case NodeType.HEADING: + return 4; + case NodeType.HORIZONTAL_RULE: + return 5; + case NodeType.BLOCKQUOTE: + return 6; + case NodeType.ORDERED_LIST: + return 7; + case NodeType.UNORDERED_LIST: + return 8; + case NodeType.TASK_LIST: + return 9; + case NodeType.MATH_BLOCK: + return 10; + case NodeType.TABLE: + return 11; + case NodeType.EMBEDDED_CONTENT: + return 12; + case NodeType.TEXT: + return 13; + case NodeType.BOLD: + return 14; + case NodeType.ITALIC: + return 15; + case NodeType.BOLD_ITALIC: + return 16; + case NodeType.CODE: + return 17; + case NodeType.IMAGE: + return 18; + case NodeType.LINK: + return 19; + case NodeType.AUTO_LINK: + return 20; + case NodeType.TAG: + return 21; + case NodeType.STRIKETHROUGH: + return 22; + case NodeType.ESCAPING_CHARACTER: + return 23; + case NodeType.MATH: + return 24; + case NodeType.HIGHLIGHT: + return 25; + case NodeType.SUBSCRIPT: + return 26; + case NodeType.SUPERSCRIPT: + return 27; + case NodeType.REFERENCED_CONTENT: + return 28; + case NodeType.SPOILER: + return 29; + case NodeType.UNRECOGNIZED: + default: + return -1; + } +} + +export interface ParseMarkdownRequest { + markdown: string; +} + +export interface ParseMarkdownResponse { + nodes: Node[]; +} + +export interface RestoreMarkdownRequest { + nodes: Node[]; +} + +export interface RestoreMarkdownResponse { + markdown: string; +} + +export interface GetLinkMetadataRequest { + link: string; +} + +export interface LinkMetadata { + title: string; + description: string; + image: string; +} + +export interface Node { + type: NodeType; + lineBreakNode?: LineBreakNode | undefined; + paragraphNode?: ParagraphNode | undefined; + codeBlockNode?: CodeBlockNode | undefined; + headingNode?: HeadingNode | undefined; + horizontalRuleNode?: HorizontalRuleNode | undefined; + blockquoteNode?: BlockquoteNode | undefined; + orderedListNode?: OrderedListNode | undefined; + unorderedListNode?: UnorderedListNode | undefined; + taskListNode?: TaskListNode | undefined; + mathBlockNode?: MathBlockNode | undefined; + tableNode?: TableNode | undefined; + embeddedContentNode?: EmbeddedContentNode | undefined; + textNode?: TextNode | undefined; + boldNode?: BoldNode | undefined; + italicNode?: ItalicNode | undefined; + boldItalicNode?: BoldItalicNode | undefined; + codeNode?: CodeNode | undefined; + imageNode?: ImageNode | undefined; + linkNode?: LinkNode | undefined; + autoLinkNode?: AutoLinkNode | undefined; + tagNode?: TagNode | undefined; + strikethroughNode?: StrikethroughNode | undefined; + escapingCharacterNode?: EscapingCharacterNode | undefined; + mathNode?: MathNode | undefined; + highlightNode?: HighlightNode | undefined; + subscriptNode?: SubscriptNode | undefined; + superscriptNode?: SuperscriptNode | undefined; + referencedContentNode?: ReferencedContentNode | undefined; + spoilerNode?: SpoilerNode | undefined; +} + +export interface LineBreakNode { +} + +export interface ParagraphNode { + children: Node[]; +} + +export interface CodeBlockNode { + language: string; + content: string; +} + +export interface HeadingNode { + level: number; + children: Node[]; +} + +export interface HorizontalRuleNode { + symbol: string; +} + +export interface BlockquoteNode { + children: Node[]; +} + +export interface OrderedListNode { + number: string; + indent: number; + children: Node[]; +} + +export interface UnorderedListNode { + symbol: string; + indent: number; + children: Node[]; +} + +export interface TaskListNode { + symbol: string; + indent: number; + complete: boolean; + children: Node[]; +} + +export interface MathBlockNode { + content: string; +} + +export interface TableNode { + header: string[]; + delimiter: string[]; + rows: TableNode_Row[]; +} + +export interface TableNode_Row { + cells: string[]; +} + +export interface EmbeddedContentNode { + resourceName: string; + params: string; +} + +export interface TextNode { + content: string; +} + +export interface BoldNode { + symbol: string; + children: Node[]; +} + +export interface ItalicNode { + symbol: string; + content: string; +} + +export interface BoldItalicNode { + symbol: string; + content: string; +} + +export interface CodeNode { + content: string; +} + +export interface ImageNode { + altText: string; + url: string; +} + +export interface LinkNode { + text: string; + url: string; +} + +export interface AutoLinkNode { + url: string; + isRawText: boolean; +} + +export interface TagNode { + content: string; +} + +export interface StrikethroughNode { + content: string; +} + +export interface EscapingCharacterNode { + symbol: string; +} + +export interface MathNode { + content: string; +} + +export interface HighlightNode { + content: string; +} + +export interface SubscriptNode { + content: string; +} + +export interface SuperscriptNode { + content: string; +} + +export interface ReferencedContentNode { + resourceName: string; + params: string; +} + +export interface SpoilerNode { + content: string; +} + +function createBaseParseMarkdownRequest(): ParseMarkdownRequest { + return { markdown: "" }; +} + +export const ParseMarkdownRequest = { + encode(message: ParseMarkdownRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ParseMarkdownRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.markdown = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ParseMarkdownRequest { + return ParseMarkdownRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ParseMarkdownRequest { + const message = createBaseParseMarkdownRequest(); + message.markdown = object.markdown ?? ""; + return message; + }, +}; + +function createBaseParseMarkdownResponse(): ParseMarkdownResponse { + return { nodes: [] }; +} + +export const ParseMarkdownResponse = { + encode(message: ParseMarkdownResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.nodes) { + Node.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ParseMarkdownResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ParseMarkdownResponse { + return ParseMarkdownResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ParseMarkdownResponse { + const message = createBaseParseMarkdownResponse(); + message.nodes = object.nodes?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseRestoreMarkdownRequest(): RestoreMarkdownRequest { + return { nodes: [] }; +} + +export const RestoreMarkdownRequest = { + encode(message: RestoreMarkdownRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.nodes) { + Node.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): RestoreMarkdownRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): RestoreMarkdownRequest { + return RestoreMarkdownRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): RestoreMarkdownRequest { + const message = createBaseRestoreMarkdownRequest(); + message.nodes = object.nodes?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseRestoreMarkdownResponse(): RestoreMarkdownResponse { + return { markdown: "" }; +} + +export const RestoreMarkdownResponse = { + encode(message: RestoreMarkdownResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): RestoreMarkdownResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.markdown = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): RestoreMarkdownResponse { + return RestoreMarkdownResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): RestoreMarkdownResponse { + const message = createBaseRestoreMarkdownResponse(); + message.markdown = object.markdown ?? ""; + return message; + }, +}; + +function createBaseGetLinkMetadataRequest(): GetLinkMetadataRequest { + return { link: "" }; +} + +export const GetLinkMetadataRequest = { + encode(message: GetLinkMetadataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.link !== "") { + writer.uint32(10).string(message.link); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetLinkMetadataRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetLinkMetadataRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.link = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetLinkMetadataRequest { + return GetLinkMetadataRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetLinkMetadataRequest { + const message = createBaseGetLinkMetadataRequest(); + message.link = object.link ?? ""; + return message; + }, +}; + +function createBaseLinkMetadata(): LinkMetadata { + return { title: "", description: "", image: "" }; +} + +export const LinkMetadata = { + encode(message: LinkMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.title !== "") { + writer.uint32(10).string(message.title); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.image !== "") { + writer.uint32(26).string(message.image); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LinkMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseLinkMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.title = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.image = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): LinkMetadata { + return LinkMetadata.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): LinkMetadata { + const message = createBaseLinkMetadata(); + message.title = object.title ?? ""; + message.description = object.description ?? ""; + message.image = object.image ?? ""; + return message; + }, +}; + +function createBaseNode(): Node { + return { + type: NodeType.NODE_UNSPECIFIED, + lineBreakNode: undefined, + paragraphNode: undefined, + codeBlockNode: undefined, + headingNode: undefined, + horizontalRuleNode: undefined, + blockquoteNode: undefined, + orderedListNode: undefined, + unorderedListNode: undefined, + taskListNode: undefined, + mathBlockNode: undefined, + tableNode: undefined, + embeddedContentNode: undefined, + textNode: undefined, + boldNode: undefined, + italicNode: undefined, + boldItalicNode: undefined, + codeNode: undefined, + imageNode: undefined, + linkNode: undefined, + autoLinkNode: undefined, + tagNode: undefined, + strikethroughNode: undefined, + escapingCharacterNode: undefined, + mathNode: undefined, + highlightNode: undefined, + subscriptNode: undefined, + superscriptNode: undefined, + referencedContentNode: undefined, + spoilerNode: undefined, + }; +} + +export const Node = { + encode(message: Node, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.type !== NodeType.NODE_UNSPECIFIED) { + writer.uint32(8).int32(nodeTypeToNumber(message.type)); + } + if (message.lineBreakNode !== undefined) { + LineBreakNode.encode(message.lineBreakNode, writer.uint32(18).fork()).ldelim(); + } + if (message.paragraphNode !== undefined) { + ParagraphNode.encode(message.paragraphNode, writer.uint32(26).fork()).ldelim(); + } + if (message.codeBlockNode !== undefined) { + CodeBlockNode.encode(message.codeBlockNode, writer.uint32(34).fork()).ldelim(); + } + if (message.headingNode !== undefined) { + HeadingNode.encode(message.headingNode, writer.uint32(42).fork()).ldelim(); + } + if (message.horizontalRuleNode !== undefined) { + HorizontalRuleNode.encode(message.horizontalRuleNode, writer.uint32(50).fork()).ldelim(); + } + if (message.blockquoteNode !== undefined) { + BlockquoteNode.encode(message.blockquoteNode, writer.uint32(58).fork()).ldelim(); + } + if (message.orderedListNode !== undefined) { + OrderedListNode.encode(message.orderedListNode, writer.uint32(66).fork()).ldelim(); + } + if (message.unorderedListNode !== undefined) { + UnorderedListNode.encode(message.unorderedListNode, writer.uint32(74).fork()).ldelim(); + } + if (message.taskListNode !== undefined) { + TaskListNode.encode(message.taskListNode, writer.uint32(82).fork()).ldelim(); + } + if (message.mathBlockNode !== undefined) { + MathBlockNode.encode(message.mathBlockNode, writer.uint32(90).fork()).ldelim(); + } + if (message.tableNode !== undefined) { + TableNode.encode(message.tableNode, writer.uint32(98).fork()).ldelim(); + } + if (message.embeddedContentNode !== undefined) { + EmbeddedContentNode.encode(message.embeddedContentNode, writer.uint32(106).fork()).ldelim(); + } + if (message.textNode !== undefined) { + TextNode.encode(message.textNode, writer.uint32(114).fork()).ldelim(); + } + if (message.boldNode !== undefined) { + BoldNode.encode(message.boldNode, writer.uint32(122).fork()).ldelim(); + } + if (message.italicNode !== undefined) { + ItalicNode.encode(message.italicNode, writer.uint32(130).fork()).ldelim(); + } + if (message.boldItalicNode !== undefined) { + BoldItalicNode.encode(message.boldItalicNode, writer.uint32(138).fork()).ldelim(); + } + if (message.codeNode !== undefined) { + CodeNode.encode(message.codeNode, writer.uint32(146).fork()).ldelim(); + } + if (message.imageNode !== undefined) { + ImageNode.encode(message.imageNode, writer.uint32(154).fork()).ldelim(); + } + if (message.linkNode !== undefined) { + LinkNode.encode(message.linkNode, writer.uint32(162).fork()).ldelim(); + } + if (message.autoLinkNode !== undefined) { + AutoLinkNode.encode(message.autoLinkNode, writer.uint32(170).fork()).ldelim(); + } + if (message.tagNode !== undefined) { + TagNode.encode(message.tagNode, writer.uint32(178).fork()).ldelim(); + } + if (message.strikethroughNode !== undefined) { + StrikethroughNode.encode(message.strikethroughNode, writer.uint32(186).fork()).ldelim(); + } + if (message.escapingCharacterNode !== undefined) { + EscapingCharacterNode.encode(message.escapingCharacterNode, writer.uint32(194).fork()).ldelim(); + } + if (message.mathNode !== undefined) { + MathNode.encode(message.mathNode, writer.uint32(202).fork()).ldelim(); + } + if (message.highlightNode !== undefined) { + HighlightNode.encode(message.highlightNode, writer.uint32(210).fork()).ldelim(); + } + if (message.subscriptNode !== undefined) { + SubscriptNode.encode(message.subscriptNode, writer.uint32(218).fork()).ldelim(); + } + if (message.superscriptNode !== undefined) { + SuperscriptNode.encode(message.superscriptNode, writer.uint32(226).fork()).ldelim(); + } + if (message.referencedContentNode !== undefined) { + ReferencedContentNode.encode(message.referencedContentNode, writer.uint32(234).fork()).ldelim(); + } + if (message.spoilerNode !== undefined) { + SpoilerNode.encode(message.spoilerNode, writer.uint32(242).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Node { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.type = nodeTypeFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.lineBreakNode = LineBreakNode.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.paragraphNode = ParagraphNode.decode(reader, reader.uint32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.codeBlockNode = CodeBlockNode.decode(reader, reader.uint32()); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.headingNode = HeadingNode.decode(reader, reader.uint32()); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.horizontalRuleNode = HorizontalRuleNode.decode(reader, reader.uint32()); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.blockquoteNode = BlockquoteNode.decode(reader, reader.uint32()); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.orderedListNode = OrderedListNode.decode(reader, reader.uint32()); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.unorderedListNode = UnorderedListNode.decode(reader, reader.uint32()); + continue; + case 10: + if (tag !== 82) { + break; + } + + message.taskListNode = TaskListNode.decode(reader, reader.uint32()); + continue; + case 11: + if (tag !== 90) { + break; + } + + message.mathBlockNode = MathBlockNode.decode(reader, reader.uint32()); + continue; + case 12: + if (tag !== 98) { + break; + } + + message.tableNode = TableNode.decode(reader, reader.uint32()); + continue; + case 13: + if (tag !== 106) { + break; + } + + message.embeddedContentNode = EmbeddedContentNode.decode(reader, reader.uint32()); + continue; + case 14: + if (tag !== 114) { + break; + } + + message.textNode = TextNode.decode(reader, reader.uint32()); + continue; + case 15: + if (tag !== 122) { + break; + } + + message.boldNode = BoldNode.decode(reader, reader.uint32()); + continue; + case 16: + if (tag !== 130) { + break; + } + + message.italicNode = ItalicNode.decode(reader, reader.uint32()); + continue; + case 17: + if (tag !== 138) { + break; + } + + message.boldItalicNode = BoldItalicNode.decode(reader, reader.uint32()); + continue; + case 18: + if (tag !== 146) { + break; + } + + message.codeNode = CodeNode.decode(reader, reader.uint32()); + continue; + case 19: + if (tag !== 154) { + break; + } + + message.imageNode = ImageNode.decode(reader, reader.uint32()); + continue; + case 20: + if (tag !== 162) { + break; + } + + message.linkNode = LinkNode.decode(reader, reader.uint32()); + continue; + case 21: + if (tag !== 170) { + break; + } + + message.autoLinkNode = AutoLinkNode.decode(reader, reader.uint32()); + continue; + case 22: + if (tag !== 178) { + break; + } + + message.tagNode = TagNode.decode(reader, reader.uint32()); + continue; + case 23: + if (tag !== 186) { + break; + } + + message.strikethroughNode = StrikethroughNode.decode(reader, reader.uint32()); + continue; + case 24: + if (tag !== 194) { + break; + } + + message.escapingCharacterNode = EscapingCharacterNode.decode(reader, reader.uint32()); + continue; + case 25: + if (tag !== 202) { + break; + } + + message.mathNode = MathNode.decode(reader, reader.uint32()); + continue; + case 26: + if (tag !== 210) { + break; + } + + message.highlightNode = HighlightNode.decode(reader, reader.uint32()); + continue; + case 27: + if (tag !== 218) { + break; + } + + message.subscriptNode = SubscriptNode.decode(reader, reader.uint32()); + continue; + case 28: + if (tag !== 226) { + break; + } + + message.superscriptNode = SuperscriptNode.decode(reader, reader.uint32()); + continue; + case 29: + if (tag !== 234) { + break; + } + + message.referencedContentNode = ReferencedContentNode.decode(reader, reader.uint32()); + continue; + case 30: + if (tag !== 242) { + break; + } + + message.spoilerNode = SpoilerNode.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Node { + return Node.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Node { + const message = createBaseNode(); + message.type = object.type ?? NodeType.NODE_UNSPECIFIED; + message.lineBreakNode = (object.lineBreakNode !== undefined && object.lineBreakNode !== null) + ? LineBreakNode.fromPartial(object.lineBreakNode) + : undefined; + message.paragraphNode = (object.paragraphNode !== undefined && object.paragraphNode !== null) + ? ParagraphNode.fromPartial(object.paragraphNode) + : undefined; + message.codeBlockNode = (object.codeBlockNode !== undefined && object.codeBlockNode !== null) + ? CodeBlockNode.fromPartial(object.codeBlockNode) + : undefined; + message.headingNode = (object.headingNode !== undefined && object.headingNode !== null) + ? HeadingNode.fromPartial(object.headingNode) + : undefined; + message.horizontalRuleNode = (object.horizontalRuleNode !== undefined && object.horizontalRuleNode !== null) + ? HorizontalRuleNode.fromPartial(object.horizontalRuleNode) + : undefined; + message.blockquoteNode = (object.blockquoteNode !== undefined && object.blockquoteNode !== null) + ? BlockquoteNode.fromPartial(object.blockquoteNode) + : undefined; + message.orderedListNode = (object.orderedListNode !== undefined && object.orderedListNode !== null) + ? OrderedListNode.fromPartial(object.orderedListNode) + : undefined; + message.unorderedListNode = (object.unorderedListNode !== undefined && object.unorderedListNode !== null) + ? UnorderedListNode.fromPartial(object.unorderedListNode) + : undefined; + message.taskListNode = (object.taskListNode !== undefined && object.taskListNode !== null) + ? TaskListNode.fromPartial(object.taskListNode) + : undefined; + message.mathBlockNode = (object.mathBlockNode !== undefined && object.mathBlockNode !== null) + ? MathBlockNode.fromPartial(object.mathBlockNode) + : undefined; + message.tableNode = (object.tableNode !== undefined && object.tableNode !== null) + ? TableNode.fromPartial(object.tableNode) + : undefined; + message.embeddedContentNode = (object.embeddedContentNode !== undefined && object.embeddedContentNode !== null) + ? EmbeddedContentNode.fromPartial(object.embeddedContentNode) + : undefined; + message.textNode = (object.textNode !== undefined && object.textNode !== null) + ? TextNode.fromPartial(object.textNode) + : undefined; + message.boldNode = (object.boldNode !== undefined && object.boldNode !== null) + ? BoldNode.fromPartial(object.boldNode) + : undefined; + message.italicNode = (object.italicNode !== undefined && object.italicNode !== null) + ? ItalicNode.fromPartial(object.italicNode) + : undefined; + message.boldItalicNode = (object.boldItalicNode !== undefined && object.boldItalicNode !== null) + ? BoldItalicNode.fromPartial(object.boldItalicNode) + : undefined; + message.codeNode = (object.codeNode !== undefined && object.codeNode !== null) + ? CodeNode.fromPartial(object.codeNode) + : undefined; + message.imageNode = (object.imageNode !== undefined && object.imageNode !== null) + ? ImageNode.fromPartial(object.imageNode) + : undefined; + message.linkNode = (object.linkNode !== undefined && object.linkNode !== null) + ? LinkNode.fromPartial(object.linkNode) + : undefined; + message.autoLinkNode = (object.autoLinkNode !== undefined && object.autoLinkNode !== null) + ? AutoLinkNode.fromPartial(object.autoLinkNode) + : undefined; + message.tagNode = (object.tagNode !== undefined && object.tagNode !== null) + ? TagNode.fromPartial(object.tagNode) + : undefined; + message.strikethroughNode = (object.strikethroughNode !== undefined && object.strikethroughNode !== null) + ? StrikethroughNode.fromPartial(object.strikethroughNode) + : undefined; + message.escapingCharacterNode = + (object.escapingCharacterNode !== undefined && object.escapingCharacterNode !== null) + ? EscapingCharacterNode.fromPartial(object.escapingCharacterNode) + : undefined; + message.mathNode = (object.mathNode !== undefined && object.mathNode !== null) + ? MathNode.fromPartial(object.mathNode) + : undefined; + message.highlightNode = (object.highlightNode !== undefined && object.highlightNode !== null) + ? HighlightNode.fromPartial(object.highlightNode) + : undefined; + message.subscriptNode = (object.subscriptNode !== undefined && object.subscriptNode !== null) + ? SubscriptNode.fromPartial(object.subscriptNode) + : undefined; + message.superscriptNode = (object.superscriptNode !== undefined && object.superscriptNode !== null) + ? SuperscriptNode.fromPartial(object.superscriptNode) + : undefined; + message.referencedContentNode = + (object.referencedContentNode !== undefined && object.referencedContentNode !== null) + ? ReferencedContentNode.fromPartial(object.referencedContentNode) + : undefined; + message.spoilerNode = (object.spoilerNode !== undefined && object.spoilerNode !== null) + ? SpoilerNode.fromPartial(object.spoilerNode) + : undefined; + return message; + }, +}; + +function createBaseLineBreakNode(): LineBreakNode { + return {}; +} + +export const LineBreakNode = { + encode(_: LineBreakNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LineBreakNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseLineBreakNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): LineBreakNode { + return LineBreakNode.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): LineBreakNode { + const message = createBaseLineBreakNode(); + return message; + }, +}; + +function createBaseParagraphNode(): ParagraphNode { + return { children: [] }; +} + +export const ParagraphNode = { + encode(message: ParagraphNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.children) { + Node.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ParagraphNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseParagraphNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ParagraphNode { + return ParagraphNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ParagraphNode { + const message = createBaseParagraphNode(); + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseCodeBlockNode(): CodeBlockNode { + return { language: "", content: "" }; +} + +export const CodeBlockNode = { + encode(message: CodeBlockNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.language !== "") { + writer.uint32(10).string(message.language); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CodeBlockNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCodeBlockNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.language = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CodeBlockNode { + return CodeBlockNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CodeBlockNode { + const message = createBaseCodeBlockNode(); + message.language = object.language ?? ""; + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseHeadingNode(): HeadingNode { + return { level: 0, children: [] }; +} + +export const HeadingNode = { + encode(message: HeadingNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.level !== 0) { + writer.uint32(8).int32(message.level); + } + for (const v of message.children) { + Node.encode(v!, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): HeadingNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHeadingNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.level = reader.int32(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): HeadingNode { + return HeadingNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): HeadingNode { + const message = createBaseHeadingNode(); + message.level = object.level ?? 0; + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseHorizontalRuleNode(): HorizontalRuleNode { + return { symbol: "" }; +} + +export const HorizontalRuleNode = { + encode(message: HorizontalRuleNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): HorizontalRuleNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHorizontalRuleNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): HorizontalRuleNode { + return HorizontalRuleNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): HorizontalRuleNode { + const message = createBaseHorizontalRuleNode(); + message.symbol = object.symbol ?? ""; + return message; + }, +}; + +function createBaseBlockquoteNode(): BlockquoteNode { + return { children: [] }; +} + +export const BlockquoteNode = { + encode(message: BlockquoteNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.children) { + Node.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BlockquoteNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseBlockquoteNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): BlockquoteNode { + return BlockquoteNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): BlockquoteNode { + const message = createBaseBlockquoteNode(); + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseOrderedListNode(): OrderedListNode { + return { number: "", indent: 0, children: [] }; +} + +export const OrderedListNode = { + encode(message: OrderedListNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.number !== "") { + writer.uint32(10).string(message.number); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node.encode(v!, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): OrderedListNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseOrderedListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.number = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.indent = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): OrderedListNode { + return OrderedListNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): OrderedListNode { + const message = createBaseOrderedListNode(); + message.number = object.number ?? ""; + message.indent = object.indent ?? 0; + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseUnorderedListNode(): UnorderedListNode { + return { symbol: "", indent: 0, children: [] }; +} + +export const UnorderedListNode = { + encode(message: UnorderedListNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node.encode(v!, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UnorderedListNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUnorderedListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.indent = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UnorderedListNode { + return UnorderedListNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UnorderedListNode { + const message = createBaseUnorderedListNode(); + message.symbol = object.symbol ?? ""; + message.indent = object.indent ?? 0; + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseTaskListNode(): TaskListNode { + return { symbol: "", indent: 0, complete: false, children: [] }; +} + +export const TaskListNode = { + encode(message: TaskListNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + if (message.complete !== false) { + writer.uint32(24).bool(message.complete); + } + for (const v of message.children) { + Node.encode(v!, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): TaskListNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTaskListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.indent = reader.int32(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.complete = reader.bool(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): TaskListNode { + return TaskListNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): TaskListNode { + const message = createBaseTaskListNode(); + message.symbol = object.symbol ?? ""; + message.indent = object.indent ?? 0; + message.complete = object.complete ?? false; + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseMathBlockNode(): MathBlockNode { + return { content: "" }; +} + +export const MathBlockNode = { + encode(message: MathBlockNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MathBlockNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMathBlockNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MathBlockNode { + return MathBlockNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MathBlockNode { + const message = createBaseMathBlockNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseTableNode(): TableNode { + return { header: [], delimiter: [], rows: [] }; +} + +export const TableNode = { + encode(message: TableNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.header) { + writer.uint32(10).string(v!); + } + for (const v of message.delimiter) { + writer.uint32(18).string(v!); + } + for (const v of message.rows) { + TableNode_Row.encode(v!, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): TableNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTableNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.header.push(reader.string()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.delimiter.push(reader.string()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.rows.push(TableNode_Row.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): TableNode { + return TableNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): TableNode { + const message = createBaseTableNode(); + message.header = object.header?.map((e) => e) || []; + message.delimiter = object.delimiter?.map((e) => e) || []; + message.rows = object.rows?.map((e) => TableNode_Row.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseTableNode_Row(): TableNode_Row { + return { cells: [] }; +} + +export const TableNode_Row = { + encode(message: TableNode_Row, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.cells) { + writer.uint32(10).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): TableNode_Row { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTableNode_Row(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.cells.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): TableNode_Row { + return TableNode_Row.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): TableNode_Row { + const message = createBaseTableNode_Row(); + message.cells = object.cells?.map((e) => e) || []; + return message; + }, +}; + +function createBaseEmbeddedContentNode(): EmbeddedContentNode { + return { resourceName: "", params: "" }; +} + +export const EmbeddedContentNode = { + encode(message: EmbeddedContentNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EmbeddedContentNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEmbeddedContentNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resourceName = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.params = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EmbeddedContentNode { + return EmbeddedContentNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EmbeddedContentNode { + const message = createBaseEmbeddedContentNode(); + message.resourceName = object.resourceName ?? ""; + message.params = object.params ?? ""; + return message; + }, +}; + +function createBaseTextNode(): TextNode { + return { content: "" }; +} + +export const TextNode = { + encode(message: TextNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): TextNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTextNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): TextNode { + return TextNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): TextNode { + const message = createBaseTextNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseBoldNode(): BoldNode { + return { symbol: "", children: [] }; +} + +export const BoldNode = { + encode(message: BoldNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + for (const v of message.children) { + Node.encode(v!, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BoldNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseBoldNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): BoldNode { + return BoldNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): BoldNode { + const message = createBaseBoldNode(); + message.symbol = object.symbol ?? ""; + message.children = object.children?.map((e) => Node.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseItalicNode(): ItalicNode { + return { symbol: "", content: "" }; +} + +export const ItalicNode = { + encode(message: ItalicNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ItalicNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseItalicNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ItalicNode { + return ItalicNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ItalicNode { + const message = createBaseItalicNode(); + message.symbol = object.symbol ?? ""; + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseBoldItalicNode(): BoldItalicNode { + return { symbol: "", content: "" }; +} + +export const BoldItalicNode = { + encode(message: BoldItalicNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): BoldItalicNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseBoldItalicNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): BoldItalicNode { + return BoldItalicNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): BoldItalicNode { + const message = createBaseBoldItalicNode(); + message.symbol = object.symbol ?? ""; + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseCodeNode(): CodeNode { + return { content: "" }; +} + +export const CodeNode = { + encode(message: CodeNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CodeNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCodeNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CodeNode { + return CodeNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CodeNode { + const message = createBaseCodeNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseImageNode(): ImageNode { + return { altText: "", url: "" }; +} + +export const ImageNode = { + encode(message: ImageNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.altText !== "") { + writer.uint32(10).string(message.altText); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ImageNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseImageNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.altText = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.url = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ImageNode { + return ImageNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ImageNode { + const message = createBaseImageNode(); + message.altText = object.altText ?? ""; + message.url = object.url ?? ""; + return message; + }, +}; + +function createBaseLinkNode(): LinkNode { + return { text: "", url: "" }; +} + +export const LinkNode = { + encode(message: LinkNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.text !== "") { + writer.uint32(10).string(message.text); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): LinkNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseLinkNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.text = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.url = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): LinkNode { + return LinkNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): LinkNode { + const message = createBaseLinkNode(); + message.text = object.text ?? ""; + message.url = object.url ?? ""; + return message; + }, +}; + +function createBaseAutoLinkNode(): AutoLinkNode { + return { url: "", isRawText: false }; +} + +export const AutoLinkNode = { + encode(message: AutoLinkNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.url !== "") { + writer.uint32(10).string(message.url); + } + if (message.isRawText !== false) { + writer.uint32(16).bool(message.isRawText); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): AutoLinkNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAutoLinkNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.url = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.isRawText = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): AutoLinkNode { + return AutoLinkNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): AutoLinkNode { + const message = createBaseAutoLinkNode(); + message.url = object.url ?? ""; + message.isRawText = object.isRawText ?? false; + return message; + }, +}; + +function createBaseTagNode(): TagNode { + return { content: "" }; +} + +export const TagNode = { + encode(message: TagNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): TagNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTagNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): TagNode { + return TagNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): TagNode { + const message = createBaseTagNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseStrikethroughNode(): StrikethroughNode { + return { content: "" }; +} + +export const StrikethroughNode = { + encode(message: StrikethroughNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): StrikethroughNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseStrikethroughNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): StrikethroughNode { + return StrikethroughNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): StrikethroughNode { + const message = createBaseStrikethroughNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseEscapingCharacterNode(): EscapingCharacterNode { + return { symbol: "" }; +} + +export const EscapingCharacterNode = { + encode(message: EscapingCharacterNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EscapingCharacterNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEscapingCharacterNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.symbol = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EscapingCharacterNode { + return EscapingCharacterNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EscapingCharacterNode { + const message = createBaseEscapingCharacterNode(); + message.symbol = object.symbol ?? ""; + return message; + }, +}; + +function createBaseMathNode(): MathNode { + return { content: "" }; +} + +export const MathNode = { + encode(message: MathNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MathNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMathNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MathNode { + return MathNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MathNode { + const message = createBaseMathNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseHighlightNode(): HighlightNode { + return { content: "" }; +} + +export const HighlightNode = { + encode(message: HighlightNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): HighlightNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHighlightNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): HighlightNode { + return HighlightNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): HighlightNode { + const message = createBaseHighlightNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseSubscriptNode(): SubscriptNode { + return { content: "" }; +} + +export const SubscriptNode = { + encode(message: SubscriptNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SubscriptNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSubscriptNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SubscriptNode { + return SubscriptNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SubscriptNode { + const message = createBaseSubscriptNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseSuperscriptNode(): SuperscriptNode { + return { content: "" }; +} + +export const SuperscriptNode = { + encode(message: SuperscriptNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SuperscriptNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSuperscriptNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SuperscriptNode { + return SuperscriptNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SuperscriptNode { + const message = createBaseSuperscriptNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +function createBaseReferencedContentNode(): ReferencedContentNode { + return { resourceName: "", params: "" }; +} + +export const ReferencedContentNode = { + encode(message: ReferencedContentNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ReferencedContentNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseReferencedContentNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resourceName = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.params = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ReferencedContentNode { + return ReferencedContentNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ReferencedContentNode { + const message = createBaseReferencedContentNode(); + message.resourceName = object.resourceName ?? ""; + message.params = object.params ?? ""; + return message; + }, +}; + +function createBaseSpoilerNode(): SpoilerNode { + return { content: "" }; +} + +export const SpoilerNode = { + encode(message: SpoilerNode, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SpoilerNode { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSpoilerNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SpoilerNode { + return SpoilerNode.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SpoilerNode { + const message = createBaseSpoilerNode(); + message.content = object.content ?? ""; + return message; + }, +}; + +export type MarkdownServiceDefinition = typeof MarkdownServiceDefinition; +export const MarkdownServiceDefinition = { + name: "MarkdownService", + fullName: "memos.api.v1.MarkdownService", + methods: { + /** Parses the given markdown content and returns a list of nodes. */ + parseMarkdown: { + name: "ParseMarkdown", + requestType: ParseMarkdownRequest, + requestStream: false, + responseType: ParseMarkdownResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 27, + 58, + 1, + 42, + 34, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 112, + 97, + 114, + 115, + 101, + ]), + ], + }, + }, + }, + /** Restores the given nodes to markdown content. */ + restoreMarkdown: { + name: "RestoreMarkdown", + requestType: RestoreMarkdownRequest, + requestStream: false, + responseType: RestoreMarkdownResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 29, + 58, + 1, + 42, + 34, + 24, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 58, + 114, + 101, + 115, + 116, + 111, + 114, + 101, + ]), + ], + }, + }, + }, + /** GetLinkMetadata returns metadata for a given link. */ + getLinkMetadata: { + name: "GetLinkMetadata", + requestType: GetLinkMetadataRequest, + requestStream: false, + responseType: LinkMetadata, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 108, + 105, + 110, + 107, + 58, + 109, + 101, + 116, + 97, + 100, + 97, + 116, + 97, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts new file mode 100644 index 0000000..89e9297 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts @@ -0,0 +1,138 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/memo_relation_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export interface MemoRelation { + /** + * The name of memo. + * Format: "memos/{uid}" + */ + memo: string; + /** + * The name of related memo. + * Format: "memos/{uid}" + */ + relatedMemo: string; + type: MemoRelation_Type; +} + +export enum MemoRelation_Type { + TYPE_UNSPECIFIED = "TYPE_UNSPECIFIED", + REFERENCE = "REFERENCE", + COMMENT = "COMMENT", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function memoRelation_TypeFromJSON(object: any): MemoRelation_Type { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return MemoRelation_Type.TYPE_UNSPECIFIED; + case 1: + case "REFERENCE": + return MemoRelation_Type.REFERENCE; + case 2: + case "COMMENT": + return MemoRelation_Type.COMMENT; + case -1: + case "UNRECOGNIZED": + default: + return MemoRelation_Type.UNRECOGNIZED; + } +} + +export function memoRelation_TypeToNumber(object: MemoRelation_Type): number { + switch (object) { + case MemoRelation_Type.TYPE_UNSPECIFIED: + return 0; + case MemoRelation_Type.REFERENCE: + return 1; + case MemoRelation_Type.COMMENT: + return 2; + case MemoRelation_Type.UNRECOGNIZED: + default: + return -1; + } +} + +function createBaseMemoRelation(): MemoRelation { + return { memo: "", relatedMemo: "", type: MemoRelation_Type.TYPE_UNSPECIFIED }; +} + +export const MemoRelation = { + encode(message: MemoRelation, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.memo !== "") { + writer.uint32(10).string(message.memo); + } + if (message.relatedMemo !== "") { + writer.uint32(18).string(message.relatedMemo); + } + if (message.type !== MemoRelation_Type.TYPE_UNSPECIFIED) { + writer.uint32(24).int32(memoRelation_TypeToNumber(message.type)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MemoRelation { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMemoRelation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memo = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.relatedMemo = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.type = memoRelation_TypeFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MemoRelation { + return MemoRelation.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MemoRelation { + const message = createBaseMemoRelation(); + message.memo = object.memo ?? ""; + message.relatedMemo = object.relatedMemo ?? ""; + message.type = object.type ?? MemoRelation_Type.TYPE_UNSPECIFIED; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts new file mode 100644 index 0000000..4024867 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts @@ -0,0 +1,3504 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/memo_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; +import { Timestamp } from "../../google/protobuf/timestamp"; +import { RowStatus, rowStatusFromJSON, rowStatusToNumber } from "./common"; +import { Node } from "./markdown_service"; +import { MemoRelation } from "./memo_relation_service"; +import { Reaction } from "./reaction_service"; +import { Resource } from "./resource_service"; + +export const protobufPackage = "memos.api.v1"; + +export enum Visibility { + VISIBILITY_UNSPECIFIED = "VISIBILITY_UNSPECIFIED", + PRIVATE = "PRIVATE", + PROTECTED = "PROTECTED", + PUBLIC = "PUBLIC", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function visibilityFromJSON(object: any): Visibility { + switch (object) { + case 0: + case "VISIBILITY_UNSPECIFIED": + return Visibility.VISIBILITY_UNSPECIFIED; + case 1: + case "PRIVATE": + return Visibility.PRIVATE; + case 2: + case "PROTECTED": + return Visibility.PROTECTED; + case 3: + case "PUBLIC": + return Visibility.PUBLIC; + case -1: + case "UNRECOGNIZED": + default: + return Visibility.UNRECOGNIZED; + } +} + +export function visibilityToNumber(object: Visibility): number { + switch (object) { + case Visibility.VISIBILITY_UNSPECIFIED: + return 0; + case Visibility.PRIVATE: + return 1; + case Visibility.PROTECTED: + return 2; + case Visibility.PUBLIC: + return 3; + case Visibility.UNRECOGNIZED: + default: + return -1; + } +} + +export interface Memo { + /** + * The name of the memo. + * Format: memos/{id} + * id is the system generated id. + */ + name: string; + /** The user defined id of the memo. */ + uid: string; + rowStatus: RowStatus; + /** + * The name of the creator. + * Format: users/{id} + */ + creator: string; + createTime?: Date | undefined; + updateTime?: Date | undefined; + displayTime?: Date | undefined; + content: string; + nodes: Node[]; + visibility: Visibility; + tags: string[]; + pinned: boolean; + /** @deprecated */ + parentId?: number | undefined; + resources: Resource[]; + relations: MemoRelation[]; + reactions: Reaction[]; + property?: + | MemoProperty + | undefined; + /** + * The name of the parent memo. + * Format: memos/{id} + */ + parent?: string | undefined; +} + +export interface MemoProperty { + tags: string[]; + hasLink: boolean; + hasTaskList: boolean; +} + +export interface CreateMemoRequest { + content: string; + visibility: Visibility; +} + +export interface ListMemosRequest { + /** The maximum number of memos to return. */ + pageSize: number; + /** + * A page token, received from a previous `ListMemos` call. + * Provide this to retrieve the subsequent page. + */ + pageToken: string; + /** + * Filter is used to filter memos returned in the list. + * Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + */ + filter: string; +} + +export interface ListMemosResponse { + memos: Memo[]; + /** + * A token, which can be sent as `page_token` to retrieve the next page. + * If this field is omitted, there are no subsequent pages. + */ + nextPageToken: string; +} + +export interface SearchMemosRequest { + /** + * Filter is used to filter memos returned. + * Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + */ + filter: string; +} + +export interface SearchMemosResponse { + memos: Memo[]; +} + +export interface GetMemoRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface UpdateMemoRequest { + memo?: Memo | undefined; + updateMask?: string[] | undefined; +} + +export interface DeleteMemoRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface ExportMemosRequest { + /** Same as ListMemosRequest.filter */ + filter: string; +} + +export interface ExportMemosResponse { + content: Uint8Array; +} + +export interface ListMemoPropertiesRequest { + /** + * The name of the memo. + * Format: memos/{id}. Use "memos/-" to list all properties. + */ + name: string; +} + +export interface ListMemoPropertiesResponse { + properties: MemoProperty[]; +} + +export interface RebuildMemoPropertyRequest { + /** + * The name of the memo. + * Format: memos/{id}. Use "memos/-" to rebuild all memos. + */ + name: string; +} + +export interface ListMemoTagsRequest { + /** + * The parent, who owns the tags. + * Format: memos/{id}. Use "memos/-" to list all tags. + */ + parent: string; + /** + * Filter is used to filter memos. + * Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" + */ + filter: string; +} + +export interface ListMemoTagsResponse { + /** + * tag_amounts is the amount of tags. + * key is the tag name. e.g. "tag1". + * value is the amount of the tag. + */ + tagAmounts: { [key: string]: number }; +} + +export interface ListMemoTagsResponse_TagAmountsEntry { + key: string; + value: number; +} + +export interface RenameMemoTagRequest { + /** + * The parent, who owns the tags. + * Format: memos/{id}. Use "memos/-" to rename all tags. + */ + parent: string; + oldTag: string; + newTag: string; +} + +export interface DeleteMemoTagRequest { + /** + * The parent, who owns the tags. + * Format: memos/{id}. Use "memos/-" to delete all tags. + */ + parent: string; + tag: string; + deleteRelatedMemos: boolean; +} + +export interface SetMemoResourcesRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; + resources: Resource[]; +} + +export interface ListMemoResourcesRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface ListMemoResourcesResponse { + resources: Resource[]; +} + +export interface SetMemoRelationsRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; + relations: MemoRelation[]; +} + +export interface ListMemoRelationsRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface ListMemoRelationsResponse { + relations: MemoRelation[]; +} + +export interface CreateMemoCommentRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; + comment?: CreateMemoRequest | undefined; +} + +export interface ListMemoCommentsRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface ListMemoCommentsResponse { + memos: Memo[]; +} + +export interface GetUserMemosStatsRequest { + /** + * name is the name of the user to get stats for. + * Format: users/{id} + */ + name: string; + /** + * timezone location + * Format: uses tz identifier + * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + */ + timezone: string; + /** Same as ListMemosRequest.filter */ + filter: string; +} + +export interface GetUserMemosStatsResponse { + /** + * stats is the stats of memo creating/updating activities. + * key is the year-month-day string. e.g. "2020-01-01". + */ + stats: { [key: string]: number }; +} + +export interface GetUserMemosStatsResponse_StatsEntry { + key: string; + value: number; +} + +export interface ListMemoReactionsRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; +} + +export interface ListMemoReactionsResponse { + reactions: Reaction[]; +} + +export interface UpsertMemoReactionRequest { + /** + * The name of the memo. + * Format: memos/{id} + */ + name: string; + reaction?: Reaction | undefined; +} + +export interface DeleteMemoReactionRequest { + reactionId: number; +} + +function createBaseMemo(): Memo { + return { + name: "", + uid: "", + rowStatus: RowStatus.ROW_STATUS_UNSPECIFIED, + creator: "", + createTime: undefined, + updateTime: undefined, + displayTime: undefined, + content: "", + nodes: [], + visibility: Visibility.VISIBILITY_UNSPECIFIED, + tags: [], + pinned: false, + parentId: undefined, + resources: [], + relations: [], + reactions: [], + property: undefined, + parent: undefined, + }; +} + +export const Memo = { + encode(message: Memo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.uid !== "") { + writer.uint32(18).string(message.uid); + } + if (message.rowStatus !== RowStatus.ROW_STATUS_UNSPECIFIED) { + writer.uint32(24).int32(rowStatusToNumber(message.rowStatus)); + } + if (message.creator !== "") { + writer.uint32(34).string(message.creator); + } + if (message.createTime !== undefined) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(42).fork()).ldelim(); + } + if (message.updateTime !== undefined) { + Timestamp.encode(toTimestamp(message.updateTime), writer.uint32(50).fork()).ldelim(); + } + if (message.displayTime !== undefined) { + Timestamp.encode(toTimestamp(message.displayTime), writer.uint32(58).fork()).ldelim(); + } + if (message.content !== "") { + writer.uint32(66).string(message.content); + } + for (const v of message.nodes) { + Node.encode(v!, writer.uint32(74).fork()).ldelim(); + } + if (message.visibility !== Visibility.VISIBILITY_UNSPECIFIED) { + writer.uint32(80).int32(visibilityToNumber(message.visibility)); + } + for (const v of message.tags) { + writer.uint32(90).string(v!); + } + if (message.pinned !== false) { + writer.uint32(96).bool(message.pinned); + } + if (message.parentId !== undefined) { + writer.uint32(104).int32(message.parentId); + } + for (const v of message.resources) { + Resource.encode(v!, writer.uint32(114).fork()).ldelim(); + } + for (const v of message.relations) { + MemoRelation.encode(v!, writer.uint32(122).fork()).ldelim(); + } + for (const v of message.reactions) { + Reaction.encode(v!, writer.uint32(130).fork()).ldelim(); + } + if (message.property !== undefined) { + MemoProperty.encode(message.property, writer.uint32(138).fork()).ldelim(); + } + if (message.parent !== undefined) { + writer.uint32(146).string(message.parent); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Memo { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMemo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.uid = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.rowStatus = rowStatusFromJSON(reader.int32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.creator = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.updateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.displayTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.content = reader.string(); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + case 10: + if (tag !== 80) { + break; + } + + message.visibility = visibilityFromJSON(reader.int32()); + continue; + case 11: + if (tag !== 90) { + break; + } + + message.tags.push(reader.string()); + continue; + case 12: + if (tag !== 96) { + break; + } + + message.pinned = reader.bool(); + continue; + case 13: + if (tag !== 104) { + break; + } + + message.parentId = reader.int32(); + continue; + case 14: + if (tag !== 114) { + break; + } + + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + case 15: + if (tag !== 122) { + break; + } + + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + case 16: + if (tag !== 130) { + break; + } + + message.reactions.push(Reaction.decode(reader, reader.uint32())); + continue; + case 17: + if (tag !== 138) { + break; + } + + message.property = MemoProperty.decode(reader, reader.uint32()); + continue; + case 18: + if (tag !== 146) { + break; + } + + message.parent = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Memo { + return Memo.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Memo { + const message = createBaseMemo(); + message.name = object.name ?? ""; + message.uid = object.uid ?? ""; + message.rowStatus = object.rowStatus ?? RowStatus.ROW_STATUS_UNSPECIFIED; + message.creator = object.creator ?? ""; + message.createTime = object.createTime ?? undefined; + message.updateTime = object.updateTime ?? undefined; + message.displayTime = object.displayTime ?? undefined; + message.content = object.content ?? ""; + message.nodes = object.nodes?.map((e) => Node.fromPartial(e)) || []; + message.visibility = object.visibility ?? Visibility.VISIBILITY_UNSPECIFIED; + message.tags = object.tags?.map((e) => e) || []; + message.pinned = object.pinned ?? false; + message.parentId = object.parentId ?? undefined; + message.resources = object.resources?.map((e) => Resource.fromPartial(e)) || []; + message.relations = object.relations?.map((e) => MemoRelation.fromPartial(e)) || []; + message.reactions = object.reactions?.map((e) => Reaction.fromPartial(e)) || []; + message.property = (object.property !== undefined && object.property !== null) + ? MemoProperty.fromPartial(object.property) + : undefined; + message.parent = object.parent ?? undefined; + return message; + }, +}; + +function createBaseMemoProperty(): MemoProperty { + return { tags: [], hasLink: false, hasTaskList: false }; +} + +export const MemoProperty = { + encode(message: MemoProperty, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.tags) { + writer.uint32(10).string(v!); + } + if (message.hasLink !== false) { + writer.uint32(16).bool(message.hasLink); + } + if (message.hasTaskList !== false) { + writer.uint32(24).bool(message.hasTaskList); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MemoProperty { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMemoProperty(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.tags.push(reader.string()); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.hasLink = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.hasTaskList = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MemoProperty { + return MemoProperty.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MemoProperty { + const message = createBaseMemoProperty(); + message.tags = object.tags?.map((e) => e) || []; + message.hasLink = object.hasLink ?? false; + message.hasTaskList = object.hasTaskList ?? false; + return message; + }, +}; + +function createBaseCreateMemoRequest(): CreateMemoRequest { + return { content: "", visibility: Visibility.VISIBILITY_UNSPECIFIED }; +} + +export const CreateMemoRequest = { + encode(message: CreateMemoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + if (message.visibility !== Visibility.VISIBILITY_UNSPECIFIED) { + writer.uint32(16).int32(visibilityToNumber(message.visibility)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateMemoRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.visibility = visibilityFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateMemoRequest { + return CreateMemoRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateMemoRequest { + const message = createBaseCreateMemoRequest(); + message.content = object.content ?? ""; + message.visibility = object.visibility ?? Visibility.VISIBILITY_UNSPECIFIED; + return message; + }, +}; + +function createBaseListMemosRequest(): ListMemosRequest { + return { pageSize: 0, pageToken: "", filter: "" }; +} + +export const ListMemosRequest = { + encode(message: ListMemosRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.pageSize !== 0) { + writer.uint32(8).int32(message.pageSize); + } + if (message.pageToken !== "") { + writer.uint32(18).string(message.pageToken); + } + if (message.filter !== "") { + writer.uint32(26).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemosRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.pageSize = reader.int32(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.pageToken = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemosRequest { + return ListMemosRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemosRequest { + const message = createBaseListMemosRequest(); + message.pageSize = object.pageSize ?? 0; + message.pageToken = object.pageToken ?? ""; + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseListMemosResponse(): ListMemosResponse { + return { memos: [], nextPageToken: "" }; +} + +export const ListMemosResponse = { + encode(message: ListMemosResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.memos) { + Memo.encode(v!, writer.uint32(10).fork()).ldelim(); + } + if (message.nextPageToken !== "") { + writer.uint32(18).string(message.nextPageToken); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemosResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.nextPageToken = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemosResponse { + return ListMemosResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemosResponse { + const message = createBaseListMemosResponse(); + message.memos = object.memos?.map((e) => Memo.fromPartial(e)) || []; + message.nextPageToken = object.nextPageToken ?? ""; + return message; + }, +}; + +function createBaseSearchMemosRequest(): SearchMemosRequest { + return { filter: "" }; +} + +export const SearchMemosRequest = { + encode(message: SearchMemosRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchMemosRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchMemosRequest { + return SearchMemosRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchMemosRequest { + const message = createBaseSearchMemosRequest(); + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseSearchMemosResponse(): SearchMemosResponse { + return { memos: [] }; +} + +export const SearchMemosResponse = { + encode(message: SearchMemosResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.memos) { + Memo.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchMemosResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchMemosResponse { + return SearchMemosResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchMemosResponse { + const message = createBaseSearchMemosResponse(); + message.memos = object.memos?.map((e) => Memo.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGetMemoRequest(): GetMemoRequest { + return { name: "" }; +} + +export const GetMemoRequest = { + encode(message: GetMemoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetMemoRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetMemoRequest { + return GetMemoRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetMemoRequest { + const message = createBaseGetMemoRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseUpdateMemoRequest(): UpdateMemoRequest { + return { memo: undefined, updateMask: undefined }; +} + +export const UpdateMemoRequest = { + encode(message: UpdateMemoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.memo !== undefined) { + Memo.encode(message.memo, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateMemoRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memo = Memo.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateMemoRequest { + return UpdateMemoRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateMemoRequest { + const message = createBaseUpdateMemoRequest(); + message.memo = (object.memo !== undefined && object.memo !== null) ? Memo.fromPartial(object.memo) : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteMemoRequest(): DeleteMemoRequest { + return { name: "" }; +} + +export const DeleteMemoRequest = { + encode(message: DeleteMemoRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteMemoRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteMemoRequest { + return DeleteMemoRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteMemoRequest { + const message = createBaseDeleteMemoRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseExportMemosRequest(): ExportMemosRequest { + return { filter: "" }; +} + +export const ExportMemosRequest = { + encode(message: ExportMemosRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ExportMemosRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseExportMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ExportMemosRequest { + return ExportMemosRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ExportMemosRequest { + const message = createBaseExportMemosRequest(); + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseExportMemosResponse(): ExportMemosResponse { + return { content: new Uint8Array(0) }; +} + +export const ExportMemosResponse = { + encode(message: ExportMemosResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.content.length !== 0) { + writer.uint32(10).bytes(message.content); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ExportMemosResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseExportMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.content = reader.bytes(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ExportMemosResponse { + return ExportMemosResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ExportMemosResponse { + const message = createBaseExportMemosResponse(); + message.content = object.content ?? new Uint8Array(0); + return message; + }, +}; + +function createBaseListMemoPropertiesRequest(): ListMemoPropertiesRequest { + return { name: "" }; +} + +export const ListMemoPropertiesRequest = { + encode(message: ListMemoPropertiesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoPropertiesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoPropertiesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoPropertiesRequest { + return ListMemoPropertiesRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoPropertiesRequest { + const message = createBaseListMemoPropertiesRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoPropertiesResponse(): ListMemoPropertiesResponse { + return { properties: [] }; +} + +export const ListMemoPropertiesResponse = { + encode(message: ListMemoPropertiesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.properties) { + MemoProperty.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoPropertiesResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoPropertiesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.properties.push(MemoProperty.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoPropertiesResponse { + return ListMemoPropertiesResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoPropertiesResponse { + const message = createBaseListMemoPropertiesResponse(); + message.properties = object.properties?.map((e) => MemoProperty.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseRebuildMemoPropertyRequest(): RebuildMemoPropertyRequest { + return { name: "" }; +} + +export const RebuildMemoPropertyRequest = { + encode(message: RebuildMemoPropertyRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): RebuildMemoPropertyRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseRebuildMemoPropertyRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): RebuildMemoPropertyRequest { + return RebuildMemoPropertyRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): RebuildMemoPropertyRequest { + const message = createBaseRebuildMemoPropertyRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoTagsRequest(): ListMemoTagsRequest { + return { parent: "", filter: "" }; +} + +export const ListMemoTagsRequest = { + encode(message: ListMemoTagsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.filter !== "") { + writer.uint32(18).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoTagsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.parent = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoTagsRequest { + return ListMemoTagsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoTagsRequest { + const message = createBaseListMemoTagsRequest(); + message.parent = object.parent ?? ""; + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseListMemoTagsResponse(): ListMemoTagsResponse { + return { tagAmounts: {} }; +} + +export const ListMemoTagsResponse = { + encode(message: ListMemoTagsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + Object.entries(message.tagAmounts).forEach(([key, value]) => { + ListMemoTagsResponse_TagAmountsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).ldelim(); + }); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoTagsResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + const entry1 = ListMemoTagsResponse_TagAmountsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.tagAmounts[entry1.key] = entry1.value; + } + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoTagsResponse { + return ListMemoTagsResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoTagsResponse { + const message = createBaseListMemoTagsResponse(); + message.tagAmounts = Object.entries(object.tagAmounts ?? {}).reduce<{ [key: string]: number }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[key] = globalThis.Number(value); + } + return acc; + }, + {}, + ); + return message; + }, +}; + +function createBaseListMemoTagsResponse_TagAmountsEntry(): ListMemoTagsResponse_TagAmountsEntry { + return { key: "", value: 0 }; +} + +export const ListMemoTagsResponse_TagAmountsEntry = { + encode(message: ListMemoTagsResponse_TagAmountsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== 0) { + writer.uint32(16).int32(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoTagsResponse_TagAmountsEntry { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsResponse_TagAmountsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.value = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoTagsResponse_TagAmountsEntry { + return ListMemoTagsResponse_TagAmountsEntry.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoTagsResponse_TagAmountsEntry { + const message = createBaseListMemoTagsResponse_TagAmountsEntry(); + message.key = object.key ?? ""; + message.value = object.value ?? 0; + return message; + }, +}; + +function createBaseRenameMemoTagRequest(): RenameMemoTagRequest { + return { parent: "", oldTag: "", newTag: "" }; +} + +export const RenameMemoTagRequest = { + encode(message: RenameMemoTagRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.oldTag !== "") { + writer.uint32(18).string(message.oldTag); + } + if (message.newTag !== "") { + writer.uint32(26).string(message.newTag); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): RenameMemoTagRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseRenameMemoTagRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.parent = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.oldTag = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.newTag = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): RenameMemoTagRequest { + return RenameMemoTagRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): RenameMemoTagRequest { + const message = createBaseRenameMemoTagRequest(); + message.parent = object.parent ?? ""; + message.oldTag = object.oldTag ?? ""; + message.newTag = object.newTag ?? ""; + return message; + }, +}; + +function createBaseDeleteMemoTagRequest(): DeleteMemoTagRequest { + return { parent: "", tag: "", deleteRelatedMemos: false }; +} + +export const DeleteMemoTagRequest = { + encode(message: DeleteMemoTagRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.tag !== "") { + writer.uint32(18).string(message.tag); + } + if (message.deleteRelatedMemos !== false) { + writer.uint32(24).bool(message.deleteRelatedMemos); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteMemoTagRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoTagRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.parent = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.tag = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.deleteRelatedMemos = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteMemoTagRequest { + return DeleteMemoTagRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteMemoTagRequest { + const message = createBaseDeleteMemoTagRequest(); + message.parent = object.parent ?? ""; + message.tag = object.tag ?? ""; + message.deleteRelatedMemos = object.deleteRelatedMemos ?? false; + return message; + }, +}; + +function createBaseSetMemoResourcesRequest(): SetMemoResourcesRequest { + return { name: "", resources: [] }; +} + +export const SetMemoResourcesRequest = { + encode(message: SetMemoResourcesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.resources) { + Resource.encode(v!, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SetMemoResourcesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSetMemoResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SetMemoResourcesRequest { + return SetMemoResourcesRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SetMemoResourcesRequest { + const message = createBaseSetMemoResourcesRequest(); + message.name = object.name ?? ""; + message.resources = object.resources?.map((e) => Resource.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseListMemoResourcesRequest(): ListMemoResourcesRequest { + return { name: "" }; +} + +export const ListMemoResourcesRequest = { + encode(message: ListMemoResourcesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoResourcesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoResourcesRequest { + return ListMemoResourcesRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoResourcesRequest { + const message = createBaseListMemoResourcesRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoResourcesResponse(): ListMemoResourcesResponse { + return { resources: [] }; +} + +export const ListMemoResourcesResponse = { + encode(message: ListMemoResourcesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.resources) { + Resource.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoResourcesResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoResourcesResponse { + return ListMemoResourcesResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoResourcesResponse { + const message = createBaseListMemoResourcesResponse(); + message.resources = object.resources?.map((e) => Resource.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseSetMemoRelationsRequest(): SetMemoRelationsRequest { + return { name: "", relations: [] }; +} + +export const SetMemoRelationsRequest = { + encode(message: SetMemoRelationsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.relations) { + MemoRelation.encode(v!, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SetMemoRelationsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSetMemoRelationsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SetMemoRelationsRequest { + return SetMemoRelationsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SetMemoRelationsRequest { + const message = createBaseSetMemoRelationsRequest(); + message.name = object.name ?? ""; + message.relations = object.relations?.map((e) => MemoRelation.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseListMemoRelationsRequest(): ListMemoRelationsRequest { + return { name: "" }; +} + +export const ListMemoRelationsRequest = { + encode(message: ListMemoRelationsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoRelationsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoRelationsRequest { + return ListMemoRelationsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoRelationsRequest { + const message = createBaseListMemoRelationsRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoRelationsResponse(): ListMemoRelationsResponse { + return { relations: [] }; +} + +export const ListMemoRelationsResponse = { + encode(message: ListMemoRelationsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.relations) { + MemoRelation.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoRelationsResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoRelationsResponse { + return ListMemoRelationsResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoRelationsResponse { + const message = createBaseListMemoRelationsResponse(); + message.relations = object.relations?.map((e) => MemoRelation.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseCreateMemoCommentRequest(): CreateMemoCommentRequest { + return { name: "", comment: undefined }; +} + +export const CreateMemoCommentRequest = { + encode(message: CreateMemoCommentRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.comment !== undefined) { + CreateMemoRequest.encode(message.comment, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateMemoCommentRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateMemoCommentRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.comment = CreateMemoRequest.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateMemoCommentRequest { + return CreateMemoCommentRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateMemoCommentRequest { + const message = createBaseCreateMemoCommentRequest(); + message.name = object.name ?? ""; + message.comment = (object.comment !== undefined && object.comment !== null) + ? CreateMemoRequest.fromPartial(object.comment) + : undefined; + return message; + }, +}; + +function createBaseListMemoCommentsRequest(): ListMemoCommentsRequest { + return { name: "" }; +} + +export const ListMemoCommentsRequest = { + encode(message: ListMemoCommentsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoCommentsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoCommentsRequest { + return ListMemoCommentsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoCommentsRequest { + const message = createBaseListMemoCommentsRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoCommentsResponse(): ListMemoCommentsResponse { + return { memos: [] }; +} + +export const ListMemoCommentsResponse = { + encode(message: ListMemoCommentsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.memos) { + Memo.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoCommentsResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoCommentsResponse { + return ListMemoCommentsResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoCommentsResponse { + const message = createBaseListMemoCommentsResponse(); + message.memos = object.memos?.map((e) => Memo.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGetUserMemosStatsRequest(): GetUserMemosStatsRequest { + return { name: "", timezone: "", filter: "" }; +} + +export const GetUserMemosStatsRequest = { + encode(message: GetUserMemosStatsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.timezone !== "") { + writer.uint32(18).string(message.timezone); + } + if (message.filter !== "") { + writer.uint32(26).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserMemosStatsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.timezone = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserMemosStatsRequest { + return GetUserMemosStatsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserMemosStatsRequest { + const message = createBaseGetUserMemosStatsRequest(); + message.name = object.name ?? ""; + message.timezone = object.timezone ?? ""; + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseGetUserMemosStatsResponse(): GetUserMemosStatsResponse { + return { stats: {} }; +} + +export const GetUserMemosStatsResponse = { + encode(message: GetUserMemosStatsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + Object.entries(message.stats).forEach(([key, value]) => { + GetUserMemosStatsResponse_StatsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).ldelim(); + }); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserMemosStatsResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + const entry1 = GetUserMemosStatsResponse_StatsEntry.decode(reader, reader.uint32()); + if (entry1.value !== undefined) { + message.stats[entry1.key] = entry1.value; + } + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserMemosStatsResponse { + return GetUserMemosStatsResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserMemosStatsResponse { + const message = createBaseGetUserMemosStatsResponse(); + message.stats = Object.entries(object.stats ?? {}).reduce<{ [key: string]: number }>((acc, [key, value]) => { + if (value !== undefined) { + acc[key] = globalThis.Number(value); + } + return acc; + }, {}); + return message; + }, +}; + +function createBaseGetUserMemosStatsResponse_StatsEntry(): GetUserMemosStatsResponse_StatsEntry { + return { key: "", value: 0 }; +} + +export const GetUserMemosStatsResponse_StatsEntry = { + encode(message: GetUserMemosStatsResponse_StatsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== 0) { + writer.uint32(16).int32(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserMemosStatsResponse_StatsEntry { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsResponse_StatsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.value = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserMemosStatsResponse_StatsEntry { + return GetUserMemosStatsResponse_StatsEntry.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserMemosStatsResponse_StatsEntry { + const message = createBaseGetUserMemosStatsResponse_StatsEntry(); + message.key = object.key ?? ""; + message.value = object.value ?? 0; + return message; + }, +}; + +function createBaseListMemoReactionsRequest(): ListMemoReactionsRequest { + return { name: "" }; +} + +export const ListMemoReactionsRequest = { + encode(message: ListMemoReactionsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoReactionsRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoReactionsRequest { + return ListMemoReactionsRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoReactionsRequest { + const message = createBaseListMemoReactionsRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListMemoReactionsResponse(): ListMemoReactionsResponse { + return { reactions: [] }; +} + +export const ListMemoReactionsResponse = { + encode(message: ListMemoReactionsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.reactions) { + Reaction.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListMemoReactionsResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.reactions.push(Reaction.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListMemoReactionsResponse { + return ListMemoReactionsResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListMemoReactionsResponse { + const message = createBaseListMemoReactionsResponse(); + message.reactions = object.reactions?.map((e) => Reaction.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseUpsertMemoReactionRequest(): UpsertMemoReactionRequest { + return { name: "", reaction: undefined }; +} + +export const UpsertMemoReactionRequest = { + encode(message: UpsertMemoReactionRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.reaction !== undefined) { + Reaction.encode(message.reaction, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpsertMemoReactionRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpsertMemoReactionRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.reaction = Reaction.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpsertMemoReactionRequest { + return UpsertMemoReactionRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpsertMemoReactionRequest { + const message = createBaseUpsertMemoReactionRequest(); + message.name = object.name ?? ""; + message.reaction = (object.reaction !== undefined && object.reaction !== null) + ? Reaction.fromPartial(object.reaction) + : undefined; + return message; + }, +}; + +function createBaseDeleteMemoReactionRequest(): DeleteMemoReactionRequest { + return { reactionId: 0 }; +} + +export const DeleteMemoReactionRequest = { + encode(message: DeleteMemoReactionRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.reactionId !== 0) { + writer.uint32(8).int32(message.reactionId); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteMemoReactionRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoReactionRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.reactionId = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteMemoReactionRequest { + return DeleteMemoReactionRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteMemoReactionRequest { + const message = createBaseDeleteMemoReactionRequest(); + message.reactionId = object.reactionId ?? 0; + return message; + }, +}; + +export type MemoServiceDefinition = typeof MemoServiceDefinition; +export const MemoServiceDefinition = { + name: "MemoService", + fullName: "memos.api.v1.MemoService", + methods: { + /** CreateMemo creates a memo. */ + createMemo: { + name: "CreateMemo", + requestType: CreateMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([18, 58, 1, 42, 34, 13, 47, 97, 112, 105, 47, 118, 49, 47, 109, 101, 109, 111, 115]), + ], + }, + }, + }, + /** ListMemos lists memos with pagination and filter. */ + listMemos: { + name: "ListMemos", + requestType: ListMemosRequest, + requestStream: false, + responseType: ListMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 118, 49, 47, 109, 101, 109, 111, 115])], + }, + }, + }, + /** SearchMemos searches memos. */ + searchMemos: { + name: "SearchMemos", + requestType: SearchMemosRequest, + requestStream: false, + responseType: SearchMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 18, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104, + ]), + ], + }, + }, + }, + /** GetMemo gets a memo. */ + getMemo: { + name: "GetMemo", + requestType: GetMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** UpdateMemo updates a memo. */ + updateMemo: { + name: "UpdateMemo", + requestType: UpdateMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 109, 101, 109, 111, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 109, + 101, + 109, + 111, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 109, + 101, + 109, + 111, + 46, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** DeleteMemo deletes a memo. */ + deleteMemo: { + name: "DeleteMemo", + requestType: DeleteMemoRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** ExportMemos exports memos. */ + exportMemos: { + name: "ExportMemos", + requestType: ExportMemosRequest, + requestStream: false, + responseType: ExportMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 25, + 58, + 1, + 42, + 34, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 58, + 101, + 120, + 112, + 111, + 114, + 116, + ]), + ], + }, + }, + }, + /** ListMemoProperties lists memo properties. */ + listMemoProperties: { + name: "ListMemoProperties", + requestType: ListMemoPropertiesRequest, + requestStream: false, + responseType: ListMemoPropertiesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 35, + 18, + 33, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 112, + 114, + 111, + 112, + 101, + 114, + 116, + 105, + 101, + 115, + ]), + ], + }, + }, + }, + /** RebuildMemoProperty rebuilds a memo property. */ + rebuildMemoProperty: { + name: "RebuildMemoProperty", + requestType: RebuildMemoPropertyRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 46, + 58, + 1, + 42, + 34, + 41, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 112, + 114, + 111, + 112, + 101, + 114, + 116, + 105, + 101, + 115, + 58, + 114, + 101, + 98, + 117, + 105, + 108, + 100, + ]), + ], + }, + }, + }, + /** ListMemoTags lists tags for a memo. */ + listMemoTags: { + name: "ListMemoTags", + requestType: ListMemoTagsRequest, + requestStream: false, + responseType: ListMemoTagsResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 31, + 18, + 29, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + ]), + ], + }, + }, + }, + /** RenameMemoTag renames a tag for a memo. */ + renameMemoTag: { + name: "RenameMemoTag", + requestType: RenameMemoTagRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 50, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 58, + 114, + 101, + 110, + 97, + 109, + 101, + ]), + ], + }, + }, + }, + /** DeleteMemoTag deletes a tag for a memo. */ + deleteMemoTag: { + name: "DeleteMemoTag", + requestType: DeleteMemoTagRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 37, + 42, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 47, + 123, + 116, + 97, + 103, + 125, + ]), + ], + }, + }, + }, + /** SetMemoResources sets resources for a memo. */ + setMemoResources: { + name: "SetMemoResources", + requestType: SetMemoResourcesRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + ]), + ], + }, + }, + }, + /** ListMemoResources lists resources for a memo. */ + listMemoResources: { + name: "ListMemoResources", + requestType: ListMemoResourcesRequest, + requestStream: false, + responseType: ListMemoResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + ]), + ], + }, + }, + }, + /** SetMemoRelations sets relations for a memo. */ + setMemoRelations: { + name: "SetMemoRelations", + requestType: SetMemoRelationsRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115, + ]), + ], + }, + }, + }, + /** ListMemoRelations lists relations for a memo. */ + listMemoRelations: { + name: "ListMemoRelations", + requestType: ListMemoRelationsRequest, + requestStream: false, + responseType: ListMemoRelationsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115, + ]), + ], + }, + }, + }, + /** CreateMemoComment creates a comment for a memo. */ + createMemoComment: { + name: "CreateMemoComment", + requestType: CreateMemoCommentRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 42, + 58, + 7, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 34, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115, + ]), + ], + }, + }, + }, + /** ListMemoComments lists comments for a memo. */ + listMemoComments: { + name: "ListMemoComments", + requestType: ListMemoCommentsRequest, + requestStream: false, + responseType: ListMemoCommentsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 33, + 18, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115, + ]), + ], + }, + }, + }, + /** GetUserMemosStats gets stats of memos for a user. */ + getUserMemosStats: { + name: "GetUserMemosStats", + requestType: GetUserMemosStatsRequest, + requestStream: false, + responseType: GetUserMemosStatsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([8, 117, 115, 101, 114, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 21, + 18, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 47, + 115, + 116, + 97, + 116, + 115, + ]), + ], + }, + }, + }, + /** ListMemoReactions lists reactions for a memo. */ + listMemoReactions: { + name: "ListMemoReactions", + requestType: ListMemoReactionsRequest, + requestStream: false, + responseType: ListMemoReactionsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115, + ]), + ], + }, + }, + }, + /** UpsertMemoReaction upserts a reaction for a memo. */ + upsertMemoReaction: { + name: "UpsertMemoReaction", + requestType: UpsertMemoReactionRequest, + requestStream: false, + responseType: Reaction, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 34, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115, + ]), + ], + }, + }, + }, + /** DeleteMemoReaction deletes a reaction for a memo. */ + deleteMemoReaction: { + name: "DeleteMemoReaction", + requestType: DeleteMemoReactionRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([11, 114, 101, 97, 99, 116, 105, 111, 110, 95, 105, 100])], + 578365826: [ + new Uint8Array([ + 33, + 42, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115, + 47, + 123, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 95, + 105, + 100, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts new file mode 100644 index 0000000..80ae51f --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts @@ -0,0 +1,206 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/reaction_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export interface Reaction { + id: number; + /** + * The name of the creator. + * Format: users/{id} + */ + creator: string; + contentId: string; + reactionType: Reaction_Type; +} + +export enum Reaction_Type { + TYPE_UNSPECIFIED = "TYPE_UNSPECIFIED", + THUMBS_UP = "THUMBS_UP", + THUMBS_DOWN = "THUMBS_DOWN", + HEART = "HEART", + FIRE = "FIRE", + CLAPPING_HANDS = "CLAPPING_HANDS", + LAUGH = "LAUGH", + OK_HAND = "OK_HAND", + ROCKET = "ROCKET", + EYES = "EYES", + THINKING_FACE = "THINKING_FACE", + CLOWN_FACE = "CLOWN_FACE", + QUESTION_MARK = "QUESTION_MARK", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function reaction_TypeFromJSON(object: any): Reaction_Type { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return Reaction_Type.TYPE_UNSPECIFIED; + case 1: + case "THUMBS_UP": + return Reaction_Type.THUMBS_UP; + case 2: + case "THUMBS_DOWN": + return Reaction_Type.THUMBS_DOWN; + case 3: + case "HEART": + return Reaction_Type.HEART; + case 4: + case "FIRE": + return Reaction_Type.FIRE; + case 5: + case "CLAPPING_HANDS": + return Reaction_Type.CLAPPING_HANDS; + case 6: + case "LAUGH": + return Reaction_Type.LAUGH; + case 7: + case "OK_HAND": + return Reaction_Type.OK_HAND; + case 8: + case "ROCKET": + return Reaction_Type.ROCKET; + case 9: + case "EYES": + return Reaction_Type.EYES; + case 10: + case "THINKING_FACE": + return Reaction_Type.THINKING_FACE; + case 11: + case "CLOWN_FACE": + return Reaction_Type.CLOWN_FACE; + case 12: + case "QUESTION_MARK": + return Reaction_Type.QUESTION_MARK; + case -1: + case "UNRECOGNIZED": + default: + return Reaction_Type.UNRECOGNIZED; + } +} + +export function reaction_TypeToNumber(object: Reaction_Type): number { + switch (object) { + case Reaction_Type.TYPE_UNSPECIFIED: + return 0; + case Reaction_Type.THUMBS_UP: + return 1; + case Reaction_Type.THUMBS_DOWN: + return 2; + case Reaction_Type.HEART: + return 3; + case Reaction_Type.FIRE: + return 4; + case Reaction_Type.CLAPPING_HANDS: + return 5; + case Reaction_Type.LAUGH: + return 6; + case Reaction_Type.OK_HAND: + return 7; + case Reaction_Type.ROCKET: + return 8; + case Reaction_Type.EYES: + return 9; + case Reaction_Type.THINKING_FACE: + return 10; + case Reaction_Type.CLOWN_FACE: + return 11; + case Reaction_Type.QUESTION_MARK: + return 12; + case Reaction_Type.UNRECOGNIZED: + default: + return -1; + } +} + +function createBaseReaction(): Reaction { + return { id: 0, creator: "", contentId: "", reactionType: Reaction_Type.TYPE_UNSPECIFIED }; +} + +export const Reaction = { + encode(message: Reaction, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + if (message.creator !== "") { + writer.uint32(18).string(message.creator); + } + if (message.contentId !== "") { + writer.uint32(26).string(message.contentId); + } + if (message.reactionType !== Reaction_Type.TYPE_UNSPECIFIED) { + writer.uint32(32).int32(reaction_TypeToNumber(message.reactionType)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Reaction { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseReaction(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.creator = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.contentId = reader.string(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.reactionType = reaction_TypeFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Reaction { + return Reaction.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Reaction { + const message = createBaseReaction(); + message.id = object.id ?? 0; + message.creator = object.creator ?? ""; + message.contentId = object.contentId ?? ""; + message.reactionType = object.reactionType ?? Reaction_Type.TYPE_UNSPECIFIED; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts new file mode 100644 index 0000000..185891b --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts @@ -0,0 +1,1033 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/resource_service.proto + +/* eslint-disable */ +import Long from "long"; +import _m0 from "protobufjs/minimal"; +import { HttpBody } from "../../google/api/httpbody"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; +import { Timestamp } from "../../google/protobuf/timestamp"; + +export const protobufPackage = "memos.api.v1"; + +export interface Resource { + /** + * The name of the resource. + * Format: resources/{id} + * id is the system generated unique identifier. + */ + name: string; + /** The user defined id of the resource. */ + uid: string; + createTime?: Date | undefined; + filename: string; + content: Uint8Array; + externalLink: string; + type: string; + size: number; + /** + * The related memo. + * Format: memos/{id} + */ + memo?: string | undefined; +} + +export interface CreateResourceRequest { + resource?: Resource | undefined; +} + +export interface ListResourcesRequest { +} + +export interface ListResourcesResponse { + resources: Resource[]; +} + +export interface SearchResourcesRequest { + filter: string; +} + +export interface SearchResourcesResponse { + resources: Resource[]; +} + +export interface GetResourceRequest { + /** + * The name of the resource. + * Format: resources/{id} + * id is the system generated unique identifier. + */ + name: string; +} + +export interface GetResourceBinaryRequest { + /** + * The name of the resource. + * Format: resources/{id} + * id is the system generated unique identifier. + */ + name: string; + /** The filename of the resource. Mainly used for downloading. */ + filename: string; +} + +export interface UpdateResourceRequest { + resource?: Resource | undefined; + updateMask?: string[] | undefined; +} + +export interface DeleteResourceRequest { + /** + * The name of the resource. + * Format: resources/{id} + * id is the system generated unique identifier. + */ + name: string; +} + +function createBaseResource(): Resource { + return { + name: "", + uid: "", + createTime: undefined, + filename: "", + content: new Uint8Array(0), + externalLink: "", + type: "", + size: 0, + memo: undefined, + }; +} + +export const Resource = { + encode(message: Resource, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.uid !== "") { + writer.uint32(18).string(message.uid); + } + if (message.createTime !== undefined) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(26).fork()).ldelim(); + } + if (message.filename !== "") { + writer.uint32(34).string(message.filename); + } + if (message.content.length !== 0) { + writer.uint32(42).bytes(message.content); + } + if (message.externalLink !== "") { + writer.uint32(50).string(message.externalLink); + } + if (message.type !== "") { + writer.uint32(58).string(message.type); + } + if (message.size !== 0) { + writer.uint32(64).int64(message.size); + } + if (message.memo !== undefined) { + writer.uint32(74).string(message.memo); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Resource { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseResource(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.uid = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.filename = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.content = reader.bytes(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.externalLink = reader.string(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.type = reader.string(); + continue; + case 8: + if (tag !== 64) { + break; + } + + message.size = longToNumber(reader.int64() as Long); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.memo = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Resource { + return Resource.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Resource { + const message = createBaseResource(); + message.name = object.name ?? ""; + message.uid = object.uid ?? ""; + message.createTime = object.createTime ?? undefined; + message.filename = object.filename ?? ""; + message.content = object.content ?? new Uint8Array(0); + message.externalLink = object.externalLink ?? ""; + message.type = object.type ?? ""; + message.size = object.size ?? 0; + message.memo = object.memo ?? undefined; + return message; + }, +}; + +function createBaseCreateResourceRequest(): CreateResourceRequest { + return { resource: undefined }; +} + +export const CreateResourceRequest = { + encode(message: CreateResourceRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.resource !== undefined) { + Resource.encode(message.resource, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateResourceRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resource = Resource.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateResourceRequest { + return CreateResourceRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateResourceRequest { + const message = createBaseCreateResourceRequest(); + message.resource = (object.resource !== undefined && object.resource !== null) + ? Resource.fromPartial(object.resource) + : undefined; + return message; + }, +}; + +function createBaseListResourcesRequest(): ListResourcesRequest { + return {}; +} + +export const ListResourcesRequest = { + encode(_: ListResourcesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListResourcesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListResourcesRequest { + return ListResourcesRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): ListResourcesRequest { + const message = createBaseListResourcesRequest(); + return message; + }, +}; + +function createBaseListResourcesResponse(): ListResourcesResponse { + return { resources: [] }; +} + +export const ListResourcesResponse = { + encode(message: ListResourcesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.resources) { + Resource.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListResourcesResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListResourcesResponse { + return ListResourcesResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListResourcesResponse { + const message = createBaseListResourcesResponse(); + message.resources = object.resources?.map((e) => Resource.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseSearchResourcesRequest(): SearchResourcesRequest { + return { filter: "" }; +} + +export const SearchResourcesRequest = { + encode(message: SearchResourcesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchResourcesRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchResourcesRequest { + return SearchResourcesRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchResourcesRequest { + const message = createBaseSearchResourcesRequest(); + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseSearchResourcesResponse(): SearchResourcesResponse { + return { resources: [] }; +} + +export const SearchResourcesResponse = { + encode(message: SearchResourcesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.resources) { + Resource.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchResourcesResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchResourcesResponse { + return SearchResourcesResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchResourcesResponse { + const message = createBaseSearchResourcesResponse(); + message.resources = object.resources?.map((e) => Resource.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGetResourceRequest(): GetResourceRequest { + return { name: "" }; +} + +export const GetResourceRequest = { + encode(message: GetResourceRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetResourceRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetResourceRequest { + return GetResourceRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetResourceRequest { + const message = createBaseGetResourceRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseGetResourceBinaryRequest(): GetResourceBinaryRequest { + return { name: "", filename: "" }; +} + +export const GetResourceBinaryRequest = { + encode(message: GetResourceBinaryRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.filename !== "") { + writer.uint32(18).string(message.filename); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetResourceBinaryRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetResourceBinaryRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.filename = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetResourceBinaryRequest { + return GetResourceBinaryRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetResourceBinaryRequest { + const message = createBaseGetResourceBinaryRequest(); + message.name = object.name ?? ""; + message.filename = object.filename ?? ""; + return message; + }, +}; + +function createBaseUpdateResourceRequest(): UpdateResourceRequest { + return { resource: undefined, updateMask: undefined }; +} + +export const UpdateResourceRequest = { + encode(message: UpdateResourceRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.resource !== undefined) { + Resource.encode(message.resource, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateResourceRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.resource = Resource.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateResourceRequest { + return UpdateResourceRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateResourceRequest { + const message = createBaseUpdateResourceRequest(); + message.resource = (object.resource !== undefined && object.resource !== null) + ? Resource.fromPartial(object.resource) + : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteResourceRequest(): DeleteResourceRequest { + return { name: "" }; +} + +export const DeleteResourceRequest = { + encode(message: DeleteResourceRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteResourceRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteResourceRequest { + return DeleteResourceRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteResourceRequest { + const message = createBaseDeleteResourceRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +export type ResourceServiceDefinition = typeof ResourceServiceDefinition; +export const ResourceServiceDefinition = { + name: "ResourceService", + fullName: "memos.api.v1.ResourceService", + methods: { + /** CreateResource creates a new resource. */ + createResource: { + name: "CreateResource", + requestType: CreateResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 29, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 34, + 17, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + ]), + ], + }, + }, + }, + /** ListResources lists all resources. */ + listResources: { + name: "ListResources", + requestType: ListResourcesRequest, + requestStream: false, + responseType: ListResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([19, 18, 17, 47, 97, 112, 105, 47, 118, 49, 47, 114, 101, 115, 111, 117, 114, 99, 101, 115]), + ], + }, + }, + }, + /** SearchResources searches memos. */ + searchResources: { + name: "SearchResources", + requestType: SearchResourcesRequest, + requestStream: false, + responseType: SearchResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 26, + 18, + 24, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104, + ]), + ], + }, + }, + }, + /** GetResource returns a resource by name. */ + getResource: { + name: "GetResource", + requestType: GetResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 18, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** GetResourceBinary returns a resource binary by name. */ + getResourceBinary: { + name: "GetResourceBinary", + requestType: GetResourceBinaryRequest, + requestStream: false, + responseType: HttpBody, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([13, 110, 97, 109, 101, 44, 102, 105, 108, 101, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 18, + 35, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + 47, + 123, + 102, + 105, + 108, + 101, + 110, + 97, + 109, + 101, + 125, + ]), + ], + }, + }, + }, + /** UpdateResource updates a resource. */ + updateResource: { + name: "UpdateResource", + requestType: UpdateResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 20, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107, + ]), + ], + 578365826: [ + new Uint8Array([ + 47, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 50, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 46, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** DeleteResource deletes a resource by name. */ + deleteResource: { + name: "DeleteResource", + requestType: DeleteResourceRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 42, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} + +function longToNumber(long: Long): number { + if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + return long.toNumber(); +} + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/user_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/user_service.ts new file mode 100644 index 0000000..b03ab2e --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/user_service.ts @@ -0,0 +1,1898 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/user_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { HttpBody } from "../../google/api/httpbody"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; +import { Timestamp } from "../../google/protobuf/timestamp"; +import { RowStatus, rowStatusFromJSON, rowStatusToNumber } from "./common"; + +export const protobufPackage = "memos.api.v1"; + +export interface User { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; + /** The system generated uid of the user. */ + id: number; + role: User_Role; + username: string; + email: string; + nickname: string; + avatarUrl: string; + description: string; + password: string; + rowStatus: RowStatus; + createTime?: Date | undefined; + updateTime?: Date | undefined; +} + +export enum User_Role { + ROLE_UNSPECIFIED = "ROLE_UNSPECIFIED", + HOST = "HOST", + ADMIN = "ADMIN", + USER = "USER", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function user_RoleFromJSON(object: any): User_Role { + switch (object) { + case 0: + case "ROLE_UNSPECIFIED": + return User_Role.ROLE_UNSPECIFIED; + case 1: + case "HOST": + return User_Role.HOST; + case 2: + case "ADMIN": + return User_Role.ADMIN; + case 3: + case "USER": + return User_Role.USER; + case -1: + case "UNRECOGNIZED": + default: + return User_Role.UNRECOGNIZED; + } +} + +export function user_RoleToNumber(object: User_Role): number { + switch (object) { + case User_Role.ROLE_UNSPECIFIED: + return 0; + case User_Role.HOST: + return 1; + case User_Role.ADMIN: + return 2; + case User_Role.USER: + return 3; + case User_Role.UNRECOGNIZED: + default: + return -1; + } +} + +export interface ListUsersRequest { +} + +export interface ListUsersResponse { + users: User[]; +} + +export interface SearchUsersRequest { + /** + * Filter is used to filter users returned in the list. + * Format: "username == 'frank'" + */ + filter: string; +} + +export interface SearchUsersResponse { + users: User[]; +} + +export interface GetUserRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; +} + +export interface GetUserAvatarBinaryRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; + /** The raw HTTP body is bound to this field. */ + httpBody?: HttpBody | undefined; +} + +export interface CreateUserRequest { + user?: User | undefined; +} + +export interface UpdateUserRequest { + user?: User | undefined; + updateMask?: string[] | undefined; +} + +export interface DeleteUserRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; +} + +export interface UserSetting { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; + /** The preferred locale of the user. */ + locale: string; + /** The preferred appearance of the user. */ + appearance: string; + /** The default visibility of the memo. */ + memoVisibility: string; +} + +export interface GetUserSettingRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; +} + +export interface UpdateUserSettingRequest { + setting?: UserSetting | undefined; + updateMask?: string[] | undefined; +} + +export interface UserAccessToken { + accessToken: string; + description: string; + issuedAt?: Date | undefined; + expiresAt?: Date | undefined; +} + +export interface ListUserAccessTokensRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; +} + +export interface ListUserAccessTokensResponse { + accessTokens: UserAccessToken[]; +} + +export interface CreateUserAccessTokenRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; + description: string; + expiresAt?: Date | undefined; +} + +export interface DeleteUserAccessTokenRequest { + /** + * The name of the user. + * Format: users/{id} + */ + name: string; + /** access_token is the access token to delete. */ + accessToken: string; +} + +function createBaseUser(): User { + return { + name: "", + id: 0, + role: User_Role.ROLE_UNSPECIFIED, + username: "", + email: "", + nickname: "", + avatarUrl: "", + description: "", + password: "", + rowStatus: RowStatus.ROW_STATUS_UNSPECIFIED, + createTime: undefined, + updateTime: undefined, + }; +} + +export const User = { + encode(message: User, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.id !== 0) { + writer.uint32(16).int32(message.id); + } + if (message.role !== User_Role.ROLE_UNSPECIFIED) { + writer.uint32(24).int32(user_RoleToNumber(message.role)); + } + if (message.username !== "") { + writer.uint32(34).string(message.username); + } + if (message.email !== "") { + writer.uint32(42).string(message.email); + } + if (message.nickname !== "") { + writer.uint32(50).string(message.nickname); + } + if (message.avatarUrl !== "") { + writer.uint32(58).string(message.avatarUrl); + } + if (message.description !== "") { + writer.uint32(66).string(message.description); + } + if (message.password !== "") { + writer.uint32(74).string(message.password); + } + if (message.rowStatus !== RowStatus.ROW_STATUS_UNSPECIFIED) { + writer.uint32(80).int32(rowStatusToNumber(message.rowStatus)); + } + if (message.createTime !== undefined) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(90).fork()).ldelim(); + } + if (message.updateTime !== undefined) { + Timestamp.encode(toTimestamp(message.updateTime), writer.uint32(98).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): User { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUser(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.id = reader.int32(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.role = user_RoleFromJSON(reader.int32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.username = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.email = reader.string(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.nickname = reader.string(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.avatarUrl = reader.string(); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.description = reader.string(); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.password = reader.string(); + continue; + case 10: + if (tag !== 80) { + break; + } + + message.rowStatus = rowStatusFromJSON(reader.int32()); + continue; + case 11: + if (tag !== 90) { + break; + } + + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 12: + if (tag !== 98) { + break; + } + + message.updateTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): User { + return User.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): User { + const message = createBaseUser(); + message.name = object.name ?? ""; + message.id = object.id ?? 0; + message.role = object.role ?? User_Role.ROLE_UNSPECIFIED; + message.username = object.username ?? ""; + message.email = object.email ?? ""; + message.nickname = object.nickname ?? ""; + message.avatarUrl = object.avatarUrl ?? ""; + message.description = object.description ?? ""; + message.password = object.password ?? ""; + message.rowStatus = object.rowStatus ?? RowStatus.ROW_STATUS_UNSPECIFIED; + message.createTime = object.createTime ?? undefined; + message.updateTime = object.updateTime ?? undefined; + return message; + }, +}; + +function createBaseListUsersRequest(): ListUsersRequest { + return {}; +} + +export const ListUsersRequest = { + encode(_: ListUsersRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListUsersRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListUsersRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListUsersRequest { + return ListUsersRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): ListUsersRequest { + const message = createBaseListUsersRequest(); + return message; + }, +}; + +function createBaseListUsersResponse(): ListUsersResponse { + return { users: [] }; +} + +export const ListUsersResponse = { + encode(message: ListUsersResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.users) { + User.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListUsersResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListUsersResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.users.push(User.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListUsersResponse { + return ListUsersResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListUsersResponse { + const message = createBaseListUsersResponse(); + message.users = object.users?.map((e) => User.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseSearchUsersRequest(): SearchUsersRequest { + return { filter: "" }; +} + +export const SearchUsersRequest = { + encode(message: SearchUsersRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchUsersRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchUsersRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.filter = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchUsersRequest { + return SearchUsersRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchUsersRequest { + const message = createBaseSearchUsersRequest(); + message.filter = object.filter ?? ""; + return message; + }, +}; + +function createBaseSearchUsersResponse(): SearchUsersResponse { + return { users: [] }; +} + +export const SearchUsersResponse = { + encode(message: SearchUsersResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.users) { + User.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SearchUsersResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSearchUsersResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.users.push(User.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SearchUsersResponse { + return SearchUsersResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SearchUsersResponse { + const message = createBaseSearchUsersResponse(); + message.users = object.users?.map((e) => User.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGetUserRequest(): GetUserRequest { + return { name: "" }; +} + +export const GetUserRequest = { + encode(message: GetUserRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserRequest { + return GetUserRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserRequest { + const message = createBaseGetUserRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseGetUserAvatarBinaryRequest(): GetUserAvatarBinaryRequest { + return { name: "", httpBody: undefined }; +} + +export const GetUserAvatarBinaryRequest = { + encode(message: GetUserAvatarBinaryRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.httpBody !== undefined) { + HttpBody.encode(message.httpBody, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserAvatarBinaryRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserAvatarBinaryRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.httpBody = HttpBody.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserAvatarBinaryRequest { + return GetUserAvatarBinaryRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserAvatarBinaryRequest { + const message = createBaseGetUserAvatarBinaryRequest(); + message.name = object.name ?? ""; + message.httpBody = (object.httpBody !== undefined && object.httpBody !== null) + ? HttpBody.fromPartial(object.httpBody) + : undefined; + return message; + }, +}; + +function createBaseCreateUserRequest(): CreateUserRequest { + return { user: undefined }; +} + +export const CreateUserRequest = { + encode(message: CreateUserRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.user !== undefined) { + User.encode(message.user, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.user = User.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateUserRequest { + return CreateUserRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateUserRequest { + const message = createBaseCreateUserRequest(); + message.user = (object.user !== undefined && object.user !== null) ? User.fromPartial(object.user) : undefined; + return message; + }, +}; + +function createBaseUpdateUserRequest(): UpdateUserRequest { + return { user: undefined, updateMask: undefined }; +} + +export const UpdateUserRequest = { + encode(message: UpdateUserRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.user !== undefined) { + User.encode(message.user, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.user = User.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateUserRequest { + return UpdateUserRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateUserRequest { + const message = createBaseUpdateUserRequest(); + message.user = (object.user !== undefined && object.user !== null) ? User.fromPartial(object.user) : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteUserRequest(): DeleteUserRequest { + return { name: "" }; +} + +export const DeleteUserRequest = { + encode(message: DeleteUserRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteUserRequest { + return DeleteUserRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteUserRequest { + const message = createBaseDeleteUserRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseUserSetting(): UserSetting { + return { name: "", locale: "", appearance: "", memoVisibility: "" }; +} + +export const UserSetting = { + encode(message: UserSetting, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.locale !== "") { + writer.uint32(18).string(message.locale); + } + if (message.appearance !== "") { + writer.uint32(26).string(message.appearance); + } + if (message.memoVisibility !== "") { + writer.uint32(34).string(message.memoVisibility); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UserSetting { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUserSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.locale = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.appearance = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.memoVisibility = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UserSetting { + return UserSetting.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UserSetting { + const message = createBaseUserSetting(); + message.name = object.name ?? ""; + message.locale = object.locale ?? ""; + message.appearance = object.appearance ?? ""; + message.memoVisibility = object.memoVisibility ?? ""; + return message; + }, +}; + +function createBaseGetUserSettingRequest(): GetUserSettingRequest { + return { name: "" }; +} + +export const GetUserSettingRequest = { + encode(message: GetUserSettingRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetUserSettingRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetUserSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetUserSettingRequest { + return GetUserSettingRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetUserSettingRequest { + const message = createBaseGetUserSettingRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseUpdateUserSettingRequest(): UpdateUserSettingRequest { + return { setting: undefined, updateMask: undefined }; +} + +export const UpdateUserSettingRequest = { + encode(message: UpdateUserSettingRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.setting !== undefined) { + UserSetting.encode(message.setting, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateUserSettingRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateUserSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.setting = UserSetting.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateUserSettingRequest { + return UpdateUserSettingRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateUserSettingRequest { + const message = createBaseUpdateUserSettingRequest(); + message.setting = (object.setting !== undefined && object.setting !== null) + ? UserSetting.fromPartial(object.setting) + : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseUserAccessToken(): UserAccessToken { + return { accessToken: "", description: "", issuedAt: undefined, expiresAt: undefined }; +} + +export const UserAccessToken = { + encode(message: UserAccessToken, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.accessToken !== "") { + writer.uint32(10).string(message.accessToken); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.issuedAt !== undefined) { + Timestamp.encode(toTimestamp(message.issuedAt), writer.uint32(26).fork()).ldelim(); + } + if (message.expiresAt !== undefined) { + Timestamp.encode(toTimestamp(message.expiresAt), writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UserAccessToken { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUserAccessToken(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.accessToken = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.issuedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.expiresAt = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UserAccessToken { + return UserAccessToken.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UserAccessToken { + const message = createBaseUserAccessToken(); + message.accessToken = object.accessToken ?? ""; + message.description = object.description ?? ""; + message.issuedAt = object.issuedAt ?? undefined; + message.expiresAt = object.expiresAt ?? undefined; + return message; + }, +}; + +function createBaseListUserAccessTokensRequest(): ListUserAccessTokensRequest { + return { name: "" }; +} + +export const ListUserAccessTokensRequest = { + encode(message: ListUserAccessTokensRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListUserAccessTokensRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListUserAccessTokensRequest { + return ListUserAccessTokensRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListUserAccessTokensRequest { + const message = createBaseListUserAccessTokensRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseListUserAccessTokensResponse(): ListUserAccessTokensResponse { + return { accessTokens: [] }; +} + +export const ListUserAccessTokensResponse = { + encode(message: ListUserAccessTokensResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.accessTokens) { + UserAccessToken.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListUserAccessTokensResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.accessTokens.push(UserAccessToken.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListUserAccessTokensResponse { + return ListUserAccessTokensResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListUserAccessTokensResponse { + const message = createBaseListUserAccessTokensResponse(); + message.accessTokens = object.accessTokens?.map((e) => UserAccessToken.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseCreateUserAccessTokenRequest(): CreateUserAccessTokenRequest { + return { name: "", description: "", expiresAt: undefined }; +} + +export const CreateUserAccessTokenRequest = { + encode(message: CreateUserAccessTokenRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.expiresAt !== undefined) { + Timestamp.encode(toTimestamp(message.expiresAt), writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateUserAccessTokenRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateUserAccessTokenRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.expiresAt = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateUserAccessTokenRequest { + return CreateUserAccessTokenRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateUserAccessTokenRequest { + const message = createBaseCreateUserAccessTokenRequest(); + message.name = object.name ?? ""; + message.description = object.description ?? ""; + message.expiresAt = object.expiresAt ?? undefined; + return message; + }, +}; + +function createBaseDeleteUserAccessTokenRequest(): DeleteUserAccessTokenRequest { + return { name: "", accessToken: "" }; +} + +export const DeleteUserAccessTokenRequest = { + encode(message: DeleteUserAccessTokenRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.accessToken !== "") { + writer.uint32(18).string(message.accessToken); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteUserAccessTokenRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteUserAccessTokenRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.accessToken = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteUserAccessTokenRequest { + return DeleteUserAccessTokenRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteUserAccessTokenRequest { + const message = createBaseDeleteUserAccessTokenRequest(); + message.name = object.name ?? ""; + message.accessToken = object.accessToken ?? ""; + return message; + }, +}; + +export type UserServiceDefinition = typeof UserServiceDefinition; +export const UserServiceDefinition = { + name: "UserService", + fullName: "memos.api.v1.UserService", + methods: { + /** ListUsers returns a list of users. */ + listUsers: { + name: "ListUsers", + requestType: ListUsersRequest, + requestStream: false, + responseType: ListUsersResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 118, 49, 47, 117, 115, 101, 114, 115])], + }, + }, + }, + /** SearchUsers searches users by filter. */ + searchUsers: { + name: "SearchUsers", + requestType: SearchUsersRequest, + requestStream: false, + responseType: SearchUsersResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 18, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104, + ]), + ], + }, + }, + }, + /** GetUser gets a user by name. */ + getUser: { + name: "GetUser", + requestType: GetUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** GetUserAvatarBinary gets the avatar of a user. */ + getUserAvatarBinary: { + name: "GetUserAvatarBinary", + requestType: GetUserAvatarBinaryRequest, + requestStream: false, + responseType: HttpBody, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 29, + 18, + 27, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 118, + 97, + 116, + 97, + 114, + ]), + ], + }, + }, + }, + /** CreateUser creates a new user. */ + createUser: { + name: "CreateUser", + requestType: CreateUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 117, 115, 101, 114])], + 578365826: [ + new Uint8Array([ + 21, + 58, + 4, + 117, + 115, + 101, + 114, + 34, + 13, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115, + ]), + ], + }, + }, + }, + /** UpdateUser updates a user. */ + updateUser: { + name: "UpdateUser", + requestType: UpdateUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 117, 115, 101, 114, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 117, + 115, + 101, + 114, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 117, + 115, + 101, + 114, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** DeleteUser deletes a user. */ + deleteUser: { + name: "DeleteUser", + requestType: DeleteUserRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** GetUserSetting gets the setting of a user. */ + getUserSetting: { + name: "GetUserSetting", + requestType: GetUserSettingRequest, + requestStream: false, + responseType: UserSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + ]), + ], + }, + }, + }, + /** UpdateUserSetting updates the setting of a user. */ + updateUserSetting: { + name: "UpdateUserSetting", + requestType: UpdateUserSettingRequest, + requestStream: false, + responseType: UserSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 19, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107, + ]), + ], + 578365826: [ + new Uint8Array([ + 49, + 58, + 7, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 50, + 38, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 125, + ]), + ], + }, + }, + }, + /** ListUserAccessTokens returns a list of access tokens for a user. */ + listUserAccessTokens: { + name: "ListUserAccessTokens", + requestType: ListUserAccessTokensRequest, + requestStream: false, + responseType: ListUserAccessTokensResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 38, + 18, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115, + ]), + ], + }, + }, + }, + /** CreateUserAccessToken creates a new access token for a user. */ + createUserAccessToken: { + name: "CreateUserAccessToken", + requestType: CreateUserAccessTokenRequest, + requestStream: false, + responseType: UserAccessToken, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 34, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115, + ]), + ], + }, + }, + }, + /** DeleteUserAccessToken deletes an access token for a user. */ + deleteUserAccessToken: { + name: "DeleteUserAccessToken", + requestType: DeleteUserAccessTokenRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([17, 110, 97, 109, 101, 44, 97, 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, 110])], + 578365826: [ + new Uint8Array([ + 53, + 42, + 51, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115, + 47, + 123, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts new file mode 100644 index 0000000..fab8080 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts @@ -0,0 +1,707 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/webhook_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Empty } from "../../google/protobuf/empty"; +import { FieldMask } from "../../google/protobuf/field_mask"; +import { Timestamp } from "../../google/protobuf/timestamp"; +import { RowStatus, rowStatusFromJSON, rowStatusToNumber } from "./common"; + +export const protobufPackage = "memos.api.v1"; + +export interface Webhook { + id: number; + creatorId: number; + createdTime?: Date | undefined; + updatedTime?: Date | undefined; + rowStatus: RowStatus; + name: string; + url: string; +} + +export interface CreateWebhookRequest { + name: string; + url: string; +} + +export interface GetWebhookRequest { + id: number; +} + +export interface ListWebhooksRequest { + creatorId: number; +} + +export interface ListWebhooksResponse { + webhooks: Webhook[]; +} + +export interface UpdateWebhookRequest { + webhook?: Webhook | undefined; + updateMask?: string[] | undefined; +} + +export interface DeleteWebhookRequest { + id: number; +} + +function createBaseWebhook(): Webhook { + return { + id: 0, + creatorId: 0, + createdTime: undefined, + updatedTime: undefined, + rowStatus: RowStatus.ROW_STATUS_UNSPECIFIED, + name: "", + url: "", + }; +} + +export const Webhook = { + encode(message: Webhook, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + if (message.creatorId !== 0) { + writer.uint32(16).int32(message.creatorId); + } + if (message.createdTime !== undefined) { + Timestamp.encode(toTimestamp(message.createdTime), writer.uint32(26).fork()).ldelim(); + } + if (message.updatedTime !== undefined) { + Timestamp.encode(toTimestamp(message.updatedTime), writer.uint32(34).fork()).ldelim(); + } + if (message.rowStatus !== RowStatus.ROW_STATUS_UNSPECIFIED) { + writer.uint32(40).int32(rowStatusToNumber(message.rowStatus)); + } + if (message.name !== "") { + writer.uint32(50).string(message.name); + } + if (message.url !== "") { + writer.uint32(58).string(message.url); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Webhook { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWebhook(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.creatorId = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.createdTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.updatedTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.rowStatus = rowStatusFromJSON(reader.int32()); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.name = reader.string(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.url = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Webhook { + return Webhook.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Webhook { + const message = createBaseWebhook(); + message.id = object.id ?? 0; + message.creatorId = object.creatorId ?? 0; + message.createdTime = object.createdTime ?? undefined; + message.updatedTime = object.updatedTime ?? undefined; + message.rowStatus = object.rowStatus ?? RowStatus.ROW_STATUS_UNSPECIFIED; + message.name = object.name ?? ""; + message.url = object.url ?? ""; + return message; + }, +}; + +function createBaseCreateWebhookRequest(): CreateWebhookRequest { + return { name: "", url: "" }; +} + +export const CreateWebhookRequest = { + encode(message: CreateWebhookRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CreateWebhookRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCreateWebhookRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.url = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CreateWebhookRequest { + return CreateWebhookRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CreateWebhookRequest { + const message = createBaseCreateWebhookRequest(); + message.name = object.name ?? ""; + message.url = object.url ?? ""; + return message; + }, +}; + +function createBaseGetWebhookRequest(): GetWebhookRequest { + return { id: 0 }; +} + +export const GetWebhookRequest = { + encode(message: GetWebhookRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetWebhookRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetWebhookRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetWebhookRequest { + return GetWebhookRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetWebhookRequest { + const message = createBaseGetWebhookRequest(); + message.id = object.id ?? 0; + return message; + }, +}; + +function createBaseListWebhooksRequest(): ListWebhooksRequest { + return { creatorId: 0 }; +} + +export const ListWebhooksRequest = { + encode(message: ListWebhooksRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.creatorId !== 0) { + writer.uint32(8).int32(message.creatorId); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListWebhooksRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListWebhooksRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.creatorId = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListWebhooksRequest { + return ListWebhooksRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListWebhooksRequest { + const message = createBaseListWebhooksRequest(); + message.creatorId = object.creatorId ?? 0; + return message; + }, +}; + +function createBaseListWebhooksResponse(): ListWebhooksResponse { + return { webhooks: [] }; +} + +export const ListWebhooksResponse = { + encode(message: ListWebhooksResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.webhooks) { + Webhook.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ListWebhooksResponse { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseListWebhooksResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.webhooks.push(Webhook.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ListWebhooksResponse { + return ListWebhooksResponse.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ListWebhooksResponse { + const message = createBaseListWebhooksResponse(); + message.webhooks = object.webhooks?.map((e) => Webhook.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseUpdateWebhookRequest(): UpdateWebhookRequest { + return { webhook: undefined, updateMask: undefined }; +} + +export const UpdateWebhookRequest = { + encode(message: UpdateWebhookRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.webhook !== undefined) { + Webhook.encode(message.webhook, writer.uint32(10).fork()).ldelim(); + } + if (message.updateMask !== undefined) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UpdateWebhookRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUpdateWebhookRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.webhook = Webhook.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UpdateWebhookRequest { + return UpdateWebhookRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UpdateWebhookRequest { + const message = createBaseUpdateWebhookRequest(); + message.webhook = (object.webhook !== undefined && object.webhook !== null) + ? Webhook.fromPartial(object.webhook) + : undefined; + message.updateMask = object.updateMask ?? undefined; + return message; + }, +}; + +function createBaseDeleteWebhookRequest(): DeleteWebhookRequest { + return { id: 0 }; +} + +export const DeleteWebhookRequest = { + encode(message: DeleteWebhookRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DeleteWebhookRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDeleteWebhookRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.id = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DeleteWebhookRequest { + return DeleteWebhookRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DeleteWebhookRequest { + const message = createBaseDeleteWebhookRequest(); + message.id = object.id ?? 0; + return message; + }, +}; + +export type WebhookServiceDefinition = typeof WebhookServiceDefinition; +export const WebhookServiceDefinition = { + name: "WebhookService", + fullName: "memos.api.v1.WebhookService", + methods: { + /** CreateWebhook creates a new webhook. */ + createWebhook: { + name: "CreateWebhook", + requestType: CreateWebhookRequest, + requestStream: false, + responseType: Webhook, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 58, + 1, + 42, + 34, + 16, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 115, + ]), + ], + }, + }, + }, + /** GetWebhook returns a webhook by id. */ + getWebhook: { + name: "GetWebhook", + requestType: GetWebhookRequest, + requestStream: false, + responseType: Webhook, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([2, 105, 100])], + 578365826: [ + new Uint8Array([ + 23, + 18, + 21, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 115, + 47, + 123, + 105, + 100, + 125, + ]), + ], + }, + }, + }, + /** ListWebhooks returns a list of webhooks. */ + listWebhooks: { + name: "ListWebhooks", + requestType: ListWebhooksRequest, + requestStream: false, + responseType: ListWebhooksResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([18, 18, 16, 47, 97, 112, 105, 47, 118, 49, 47, 119, 101, 98, 104, 111, 111, 107, 115]), + ], + }, + }, + }, + /** UpdateWebhook updates a webhook. */ + updateWebhook: { + name: "UpdateWebhook", + requestType: UpdateWebhookRequest, + requestStream: false, + responseType: Webhook, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 19, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107, + ]), + ], + 578365826: [ + new Uint8Array([ + 40, + 58, + 7, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 50, + 29, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 115, + 47, + 123, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 46, + 105, + 100, + 125, + ]), + ], + }, + }, + }, + /** DeleteWebhook deletes a webhook by id. */ + deleteWebhook: { + name: "DeleteWebhook", + requestType: DeleteWebhookRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([2, 105, 100])], + 578365826: [ + new Uint8Array([ + 23, + 42, + 21, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 101, + 98, + 104, + 111, + 111, + 107, + 115, + 47, + 123, + 105, + 100, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function toTimestamp(date: Date): Timestamp { + const seconds = Math.trunc(date.getTime() / 1_000); + const nanos = (date.getTime() % 1_000) * 1_000_000; + return { seconds, nanos }; +} + +function fromTimestamp(t: Timestamp): Date { + let millis = (t.seconds || 0) * 1_000; + millis += (t.nanos || 0) / 1_000_000; + return new globalThis.Date(millis); +} diff --git a/api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts new file mode 100644 index 0000000..7a6d782 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts @@ -0,0 +1,186 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/workspace_service.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export interface WorkspaceProfile { + /** + * The name of instance owner. + * Format: "users/{id}" + */ + owner: string; + /** version is the current version of instance */ + version: string; + /** mode is the instance mode (e.g. "prod", "dev" or "demo"). */ + mode: string; +} + +export interface GetWorkspaceProfileRequest { +} + +function createBaseWorkspaceProfile(): WorkspaceProfile { + return { owner: "", version: "", mode: "" }; +} + +export const WorkspaceProfile = { + encode(message: WorkspaceProfile, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.owner !== "") { + writer.uint32(10).string(message.owner); + } + if (message.version !== "") { + writer.uint32(18).string(message.version); + } + if (message.mode !== "") { + writer.uint32(26).string(message.mode); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceProfile { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceProfile(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.owner = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.version = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.mode = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceProfile { + return WorkspaceProfile.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceProfile { + const message = createBaseWorkspaceProfile(); + message.owner = object.owner ?? ""; + message.version = object.version ?? ""; + message.mode = object.mode ?? ""; + return message; + }, +}; + +function createBaseGetWorkspaceProfileRequest(): GetWorkspaceProfileRequest { + return {}; +} + +export const GetWorkspaceProfileRequest = { + encode(_: GetWorkspaceProfileRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetWorkspaceProfileRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetWorkspaceProfileRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetWorkspaceProfileRequest { + return GetWorkspaceProfileRequest.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): GetWorkspaceProfileRequest { + const message = createBaseGetWorkspaceProfileRequest(); + return message; + }, +}; + +export type WorkspaceServiceDefinition = typeof WorkspaceServiceDefinition; +export const WorkspaceServiceDefinition = { + name: "WorkspaceService", + fullName: "memos.api.v1.WorkspaceService", + methods: { + /** GetWorkspaceProfile returns the workspace profile. */ + getWorkspaceProfile: { + name: "GetWorkspaceProfile", + requestType: GetWorkspaceProfileRequest, + requestStream: false, + responseType: WorkspaceProfile, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 27, + 18, + 25, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 111, + 114, + 107, + 115, + 112, + 97, + 99, + 101, + 47, + 112, + 114, + 111, + 102, + 105, + 108, + 101, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts b/api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts new file mode 100644 index 0000000..45ba367 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts @@ -0,0 +1,908 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: api/v1/workspace_setting_service.proto + +/* eslint-disable */ +import Long from "long"; +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "memos.api.v1"; + +export interface WorkspaceSetting { + /** + * name is the name of the setting. + * Format: settings/{setting} + */ + name: string; + generalSetting?: WorkspaceGeneralSetting | undefined; + storageSetting?: WorkspaceStorageSetting | undefined; + memoRelatedSetting?: WorkspaceMemoRelatedSetting | undefined; +} + +export interface WorkspaceGeneralSetting { + /** instance_url is the instance URL. */ + instanceUrl: string; + /** disallow_signup is the flag to disallow signup. */ + disallowSignup: boolean; + /** disallow_password_login is the flag to disallow password login. */ + disallowPasswordLogin: boolean; + /** additional_script is the additional script. */ + additionalScript: string; + /** additional_style is the additional style. */ + additionalStyle: string; + /** custom_profile is the custom profile. */ + customProfile?: WorkspaceCustomProfile | undefined; +} + +export interface WorkspaceCustomProfile { + title: string; + description: string; + logoUrl: string; + locale: string; + appearance: string; +} + +export interface WorkspaceStorageSetting { + /** storage_type is the storage type. */ + storageType: WorkspaceStorageSetting_StorageType; + /** + * The template of file path. + * e.g. assets/{timestamp}_{filename} + */ + filepathTemplate: string; + /** The max upload size in megabytes. */ + uploadSizeLimitMb: number; + /** The S3 config. */ + s3Config?: WorkspaceStorageSetting_S3Config | undefined; +} + +export enum WorkspaceStorageSetting_StorageType { + STORAGE_TYPE_UNSPECIFIED = "STORAGE_TYPE_UNSPECIFIED", + /** DATABASE - DATABASE is the database storage type. */ + DATABASE = "DATABASE", + /** LOCAL - LOCAL is the local storage type. */ + LOCAL = "LOCAL", + /** S3 - S3 is the S3 storage type. */ + S3 = "S3", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function workspaceStorageSetting_StorageTypeFromJSON(object: any): WorkspaceStorageSetting_StorageType { + switch (object) { + case 0: + case "STORAGE_TYPE_UNSPECIFIED": + return WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; + case 1: + case "DATABASE": + return WorkspaceStorageSetting_StorageType.DATABASE; + case 2: + case "LOCAL": + return WorkspaceStorageSetting_StorageType.LOCAL; + case 3: + case "S3": + return WorkspaceStorageSetting_StorageType.S3; + case -1: + case "UNRECOGNIZED": + default: + return WorkspaceStorageSetting_StorageType.UNRECOGNIZED; + } +} + +export function workspaceStorageSetting_StorageTypeToNumber(object: WorkspaceStorageSetting_StorageType): number { + switch (object) { + case WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED: + return 0; + case WorkspaceStorageSetting_StorageType.DATABASE: + return 1; + case WorkspaceStorageSetting_StorageType.LOCAL: + return 2; + case WorkspaceStorageSetting_StorageType.S3: + return 3; + case WorkspaceStorageSetting_StorageType.UNRECOGNIZED: + default: + return -1; + } +} + +/** Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ */ +export interface WorkspaceStorageSetting_S3Config { + accessKeyId: string; + accessKeySecret: string; + endpoint: string; + region: string; + bucket: string; +} + +export interface WorkspaceMemoRelatedSetting { + /** disallow_public_share disallows set memo as public visible. */ + disallowPublicVisible: boolean; + /** display_with_update_time orders and displays memo with update time. */ + displayWithUpdateTime: boolean; + /** content_length_limit is the limit of content length. Unit is byte. */ + contentLengthLimit: number; +} + +export interface GetWorkspaceSettingRequest { + /** + * The resource name of the workspace setting. + * Format: settings/{setting} + */ + name: string; +} + +export interface SetWorkspaceSettingRequest { + /** setting is the setting to update. */ + setting?: WorkspaceSetting | undefined; +} + +function createBaseWorkspaceSetting(): WorkspaceSetting { + return { name: "", generalSetting: undefined, storageSetting: undefined, memoRelatedSetting: undefined }; +} + +export const WorkspaceSetting = { + encode(message: WorkspaceSetting, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.generalSetting !== undefined) { + WorkspaceGeneralSetting.encode(message.generalSetting, writer.uint32(18).fork()).ldelim(); + } + if (message.storageSetting !== undefined) { + WorkspaceStorageSetting.encode(message.storageSetting, writer.uint32(26).fork()).ldelim(); + } + if (message.memoRelatedSetting !== undefined) { + WorkspaceMemoRelatedSetting.encode(message.memoRelatedSetting, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceSetting { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.generalSetting = WorkspaceGeneralSetting.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.storageSetting = WorkspaceStorageSetting.decode(reader, reader.uint32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.memoRelatedSetting = WorkspaceMemoRelatedSetting.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceSetting { + return WorkspaceSetting.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceSetting { + const message = createBaseWorkspaceSetting(); + message.name = object.name ?? ""; + message.generalSetting = (object.generalSetting !== undefined && object.generalSetting !== null) + ? WorkspaceGeneralSetting.fromPartial(object.generalSetting) + : undefined; + message.storageSetting = (object.storageSetting !== undefined && object.storageSetting !== null) + ? WorkspaceStorageSetting.fromPartial(object.storageSetting) + : undefined; + message.memoRelatedSetting = (object.memoRelatedSetting !== undefined && object.memoRelatedSetting !== null) + ? WorkspaceMemoRelatedSetting.fromPartial(object.memoRelatedSetting) + : undefined; + return message; + }, +}; + +function createBaseWorkspaceGeneralSetting(): WorkspaceGeneralSetting { + return { + instanceUrl: "", + disallowSignup: false, + disallowPasswordLogin: false, + additionalScript: "", + additionalStyle: "", + customProfile: undefined, + }; +} + +export const WorkspaceGeneralSetting = { + encode(message: WorkspaceGeneralSetting, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.instanceUrl !== "") { + writer.uint32(10).string(message.instanceUrl); + } + if (message.disallowSignup !== false) { + writer.uint32(16).bool(message.disallowSignup); + } + if (message.disallowPasswordLogin !== false) { + writer.uint32(24).bool(message.disallowPasswordLogin); + } + if (message.additionalScript !== "") { + writer.uint32(34).string(message.additionalScript); + } + if (message.additionalStyle !== "") { + writer.uint32(42).string(message.additionalStyle); + } + if (message.customProfile !== undefined) { + WorkspaceCustomProfile.encode(message.customProfile, writer.uint32(50).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceGeneralSetting { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceGeneralSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.instanceUrl = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.disallowSignup = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.disallowPasswordLogin = reader.bool(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.additionalScript = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.additionalStyle = reader.string(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.customProfile = WorkspaceCustomProfile.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceGeneralSetting { + return WorkspaceGeneralSetting.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceGeneralSetting { + const message = createBaseWorkspaceGeneralSetting(); + message.instanceUrl = object.instanceUrl ?? ""; + message.disallowSignup = object.disallowSignup ?? false; + message.disallowPasswordLogin = object.disallowPasswordLogin ?? false; + message.additionalScript = object.additionalScript ?? ""; + message.additionalStyle = object.additionalStyle ?? ""; + message.customProfile = (object.customProfile !== undefined && object.customProfile !== null) + ? WorkspaceCustomProfile.fromPartial(object.customProfile) + : undefined; + return message; + }, +}; + +function createBaseWorkspaceCustomProfile(): WorkspaceCustomProfile { + return { title: "", description: "", logoUrl: "", locale: "", appearance: "" }; +} + +export const WorkspaceCustomProfile = { + encode(message: WorkspaceCustomProfile, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.title !== "") { + writer.uint32(10).string(message.title); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.logoUrl !== "") { + writer.uint32(26).string(message.logoUrl); + } + if (message.locale !== "") { + writer.uint32(34).string(message.locale); + } + if (message.appearance !== "") { + writer.uint32(42).string(message.appearance); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceCustomProfile { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceCustomProfile(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.title = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.description = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.logoUrl = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.locale = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.appearance = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceCustomProfile { + return WorkspaceCustomProfile.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceCustomProfile { + const message = createBaseWorkspaceCustomProfile(); + message.title = object.title ?? ""; + message.description = object.description ?? ""; + message.logoUrl = object.logoUrl ?? ""; + message.locale = object.locale ?? ""; + message.appearance = object.appearance ?? ""; + return message; + }, +}; + +function createBaseWorkspaceStorageSetting(): WorkspaceStorageSetting { + return { + storageType: WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED, + filepathTemplate: "", + uploadSizeLimitMb: 0, + s3Config: undefined, + }; +} + +export const WorkspaceStorageSetting = { + encode(message: WorkspaceStorageSetting, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.storageType !== WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED) { + writer.uint32(8).int32(workspaceStorageSetting_StorageTypeToNumber(message.storageType)); + } + if (message.filepathTemplate !== "") { + writer.uint32(18).string(message.filepathTemplate); + } + if (message.uploadSizeLimitMb !== 0) { + writer.uint32(24).int64(message.uploadSizeLimitMb); + } + if (message.s3Config !== undefined) { + WorkspaceStorageSetting_S3Config.encode(message.s3Config, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceStorageSetting { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceStorageSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.storageType = workspaceStorageSetting_StorageTypeFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.filepathTemplate = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.uploadSizeLimitMb = longToNumber(reader.int64() as Long); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.s3Config = WorkspaceStorageSetting_S3Config.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceStorageSetting { + return WorkspaceStorageSetting.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceStorageSetting { + const message = createBaseWorkspaceStorageSetting(); + message.storageType = object.storageType ?? WorkspaceStorageSetting_StorageType.STORAGE_TYPE_UNSPECIFIED; + message.filepathTemplate = object.filepathTemplate ?? ""; + message.uploadSizeLimitMb = object.uploadSizeLimitMb ?? 0; + message.s3Config = (object.s3Config !== undefined && object.s3Config !== null) + ? WorkspaceStorageSetting_S3Config.fromPartial(object.s3Config) + : undefined; + return message; + }, +}; + +function createBaseWorkspaceStorageSetting_S3Config(): WorkspaceStorageSetting_S3Config { + return { accessKeyId: "", accessKeySecret: "", endpoint: "", region: "", bucket: "" }; +} + +export const WorkspaceStorageSetting_S3Config = { + encode(message: WorkspaceStorageSetting_S3Config, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.accessKeyId !== "") { + writer.uint32(10).string(message.accessKeyId); + } + if (message.accessKeySecret !== "") { + writer.uint32(18).string(message.accessKeySecret); + } + if (message.endpoint !== "") { + writer.uint32(26).string(message.endpoint); + } + if (message.region !== "") { + writer.uint32(34).string(message.region); + } + if (message.bucket !== "") { + writer.uint32(42).string(message.bucket); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceStorageSetting_S3Config { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceStorageSetting_S3Config(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.accessKeyId = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.accessKeySecret = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.endpoint = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.region = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.bucket = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceStorageSetting_S3Config { + return WorkspaceStorageSetting_S3Config.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceStorageSetting_S3Config { + const message = createBaseWorkspaceStorageSetting_S3Config(); + message.accessKeyId = object.accessKeyId ?? ""; + message.accessKeySecret = object.accessKeySecret ?? ""; + message.endpoint = object.endpoint ?? ""; + message.region = object.region ?? ""; + message.bucket = object.bucket ?? ""; + return message; + }, +}; + +function createBaseWorkspaceMemoRelatedSetting(): WorkspaceMemoRelatedSetting { + return { disallowPublicVisible: false, displayWithUpdateTime: false, contentLengthLimit: 0 }; +} + +export const WorkspaceMemoRelatedSetting = { + encode(message: WorkspaceMemoRelatedSetting, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.disallowPublicVisible !== false) { + writer.uint32(8).bool(message.disallowPublicVisible); + } + if (message.displayWithUpdateTime !== false) { + writer.uint32(16).bool(message.displayWithUpdateTime); + } + if (message.contentLengthLimit !== 0) { + writer.uint32(24).int32(message.contentLengthLimit); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): WorkspaceMemoRelatedSetting { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseWorkspaceMemoRelatedSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.disallowPublicVisible = reader.bool(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.displayWithUpdateTime = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.contentLengthLimit = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): WorkspaceMemoRelatedSetting { + return WorkspaceMemoRelatedSetting.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): WorkspaceMemoRelatedSetting { + const message = createBaseWorkspaceMemoRelatedSetting(); + message.disallowPublicVisible = object.disallowPublicVisible ?? false; + message.displayWithUpdateTime = object.displayWithUpdateTime ?? false; + message.contentLengthLimit = object.contentLengthLimit ?? 0; + return message; + }, +}; + +function createBaseGetWorkspaceSettingRequest(): GetWorkspaceSettingRequest { + return { name: "" }; +} + +export const GetWorkspaceSettingRequest = { + encode(message: GetWorkspaceSettingRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GetWorkspaceSettingRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGetWorkspaceSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GetWorkspaceSettingRequest { + return GetWorkspaceSettingRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GetWorkspaceSettingRequest { + const message = createBaseGetWorkspaceSettingRequest(); + message.name = object.name ?? ""; + return message; + }, +}; + +function createBaseSetWorkspaceSettingRequest(): SetWorkspaceSettingRequest { + return { setting: undefined }; +} + +export const SetWorkspaceSettingRequest = { + encode(message: SetWorkspaceSettingRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.setting !== undefined) { + WorkspaceSetting.encode(message.setting, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SetWorkspaceSettingRequest { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSetWorkspaceSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.setting = WorkspaceSetting.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SetWorkspaceSettingRequest { + return SetWorkspaceSettingRequest.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SetWorkspaceSettingRequest { + const message = createBaseSetWorkspaceSettingRequest(); + message.setting = (object.setting !== undefined && object.setting !== null) + ? WorkspaceSetting.fromPartial(object.setting) + : undefined; + return message; + }, +}; + +export type WorkspaceSettingServiceDefinition = typeof WorkspaceSettingServiceDefinition; +export const WorkspaceSettingServiceDefinition = { + name: "WorkspaceSettingService", + fullName: "memos.api.v1.WorkspaceSettingService", + methods: { + /** GetWorkspaceSetting returns the setting by name. */ + getWorkspaceSetting: { + name: "GetWorkspaceSetting", + requestType: GetWorkspaceSettingRequest, + requestStream: false, + responseType: WorkspaceSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 18, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 111, + 114, + 107, + 115, + 112, + 97, + 99, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + /** SetWorkspaceSetting updates the setting. */ + setWorkspaceSetting: { + name: "SetWorkspaceSetting", + requestType: SetWorkspaceSettingRequest, + requestStream: false, + responseType: WorkspaceSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([7, 115, 101, 116, 116, 105, 110, 103])], + 578365826: [ + new Uint8Array([ + 54, + 58, + 7, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 50, + 43, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 119, + 111, + 114, + 107, + 115, + 112, + 97, + 99, + 101, + 47, + 123, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 46, + 110, + 97, + 109, + 101, + 61, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 115, + 47, + 42, + 125, + ]), + ], + }, + }, + }, + }, +} as const; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function longToNumber(long: Long): number { + if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + return long.toNumber(); +} + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/api/memos-proto-v0.22.1/gen/google/api/annotations.ts b/api/memos-proto-v0.22.1/gen/google/api/annotations.ts new file mode 100644 index 0000000..b07e309 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/annotations.ts @@ -0,0 +1,9 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/annotations.proto + +/* eslint-disable */ + +export const protobufPackage = "google.api"; diff --git a/api/memos-proto-v0.22.1/gen/google/api/client.ts b/api/memos-proto-v0.22.1/gen/google/api/client.ts new file mode 100644 index 0000000..95e5825 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/client.ts @@ -0,0 +1,1712 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/client.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Duration } from "../protobuf/duration"; +import { LaunchStage, launchStageFromJSON, launchStageToNumber } from "./launch_stage"; + +export const protobufPackage = "google.api"; + +/** + * The organization for which the client libraries are being published. + * Affects the url where generated docs are published, etc. + */ +export enum ClientLibraryOrganization { + /** CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED - Not useful. */ + CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED", + /** CLOUD - Google Cloud Platform Org. */ + CLOUD = "CLOUD", + /** ADS - Ads (Advertising) Org. */ + ADS = "ADS", + /** PHOTOS - Photos Org. */ + PHOTOS = "PHOTOS", + /** STREET_VIEW - Street View Org. */ + STREET_VIEW = "STREET_VIEW", + /** SHOPPING - Shopping Org. */ + SHOPPING = "SHOPPING", + /** GEO - Geo Org. */ + GEO = "GEO", + /** GENERATIVE_AI - Generative AI - https://developers.generativeai.google */ + GENERATIVE_AI = "GENERATIVE_AI", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function clientLibraryOrganizationFromJSON(object: any): ClientLibraryOrganization { + switch (object) { + case 0: + case "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED": + return ClientLibraryOrganization.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED; + case 1: + case "CLOUD": + return ClientLibraryOrganization.CLOUD; + case 2: + case "ADS": + return ClientLibraryOrganization.ADS; + case 3: + case "PHOTOS": + return ClientLibraryOrganization.PHOTOS; + case 4: + case "STREET_VIEW": + return ClientLibraryOrganization.STREET_VIEW; + case 5: + case "SHOPPING": + return ClientLibraryOrganization.SHOPPING; + case 6: + case "GEO": + return ClientLibraryOrganization.GEO; + case 7: + case "GENERATIVE_AI": + return ClientLibraryOrganization.GENERATIVE_AI; + case -1: + case "UNRECOGNIZED": + default: + return ClientLibraryOrganization.UNRECOGNIZED; + } +} + +export function clientLibraryOrganizationToNumber(object: ClientLibraryOrganization): number { + switch (object) { + case ClientLibraryOrganization.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED: + return 0; + case ClientLibraryOrganization.CLOUD: + return 1; + case ClientLibraryOrganization.ADS: + return 2; + case ClientLibraryOrganization.PHOTOS: + return 3; + case ClientLibraryOrganization.STREET_VIEW: + return 4; + case ClientLibraryOrganization.SHOPPING: + return 5; + case ClientLibraryOrganization.GEO: + return 6; + case ClientLibraryOrganization.GENERATIVE_AI: + return 7; + case ClientLibraryOrganization.UNRECOGNIZED: + default: + return -1; + } +} + +/** To where should client libraries be published? */ +export enum ClientLibraryDestination { + /** + * CLIENT_LIBRARY_DESTINATION_UNSPECIFIED - Client libraries will neither be generated nor published to package + * managers. + */ + CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED", + /** + * GITHUB - Generate the client library in a repo under github.com/googleapis, + * but don't publish it to package managers. + */ + GITHUB = "GITHUB", + /** PACKAGE_MANAGER - Publish the library to package managers like nuget.org and npmjs.com. */ + PACKAGE_MANAGER = "PACKAGE_MANAGER", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function clientLibraryDestinationFromJSON(object: any): ClientLibraryDestination { + switch (object) { + case 0: + case "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED": + return ClientLibraryDestination.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED; + case 10: + case "GITHUB": + return ClientLibraryDestination.GITHUB; + case 20: + case "PACKAGE_MANAGER": + return ClientLibraryDestination.PACKAGE_MANAGER; + case -1: + case "UNRECOGNIZED": + default: + return ClientLibraryDestination.UNRECOGNIZED; + } +} + +export function clientLibraryDestinationToNumber(object: ClientLibraryDestination): number { + switch (object) { + case ClientLibraryDestination.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED: + return 0; + case ClientLibraryDestination.GITHUB: + return 10; + case ClientLibraryDestination.PACKAGE_MANAGER: + return 20; + case ClientLibraryDestination.UNRECOGNIZED: + default: + return -1; + } +} + +/** Required information for every language. */ +export interface CommonLanguageSettings { + /** + * Link to automatically generated reference documentation. Example: + * https://cloud.google.com/nodejs/docs/reference/asset/latest + * + * @deprecated + */ + referenceDocsUri: string; + /** The destination where API teams want this client library to be published. */ + destinations: ClientLibraryDestination[]; +} + +/** Details about how and where to publish client libraries. */ +export interface ClientLibrarySettings { + /** + * Version of the API to apply these settings to. This is the full protobuf + * package for the API, ending in the version element. + * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1". + */ + version: string; + /** Launch stage of this version of the API. */ + launchStage: LaunchStage; + /** + * When using transport=rest, the client request will encode enums as + * numbers rather than strings. + */ + restNumericEnums: boolean; + /** Settings for legacy Java features, supported in the Service YAML. */ + javaSettings?: + | JavaSettings + | undefined; + /** Settings for C++ client libraries. */ + cppSettings?: + | CppSettings + | undefined; + /** Settings for PHP client libraries. */ + phpSettings?: + | PhpSettings + | undefined; + /** Settings for Python client libraries. */ + pythonSettings?: + | PythonSettings + | undefined; + /** Settings for Node client libraries. */ + nodeSettings?: + | NodeSettings + | undefined; + /** Settings for .NET client libraries. */ + dotnetSettings?: + | DotnetSettings + | undefined; + /** Settings for Ruby client libraries. */ + rubySettings?: + | RubySettings + | undefined; + /** Settings for Go client libraries. */ + goSettings?: GoSettings | undefined; +} + +/** + * This message configures the settings for publishing [Google Cloud Client + * libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) + * generated from the service config. + */ +export interface Publishing { + /** + * A list of API method settings, e.g. the behavior for methods that use the + * long-running operation pattern. + */ + methodSettings: MethodSettings[]; + /** + * Link to a *public* URI where users can report issues. Example: + * https://issuetracker.google.com/issues/new?component=190865&template=1161103 + */ + newIssueUri: string; + /** + * Link to product home page. Example: + * https://cloud.google.com/asset-inventory/docs/overview + */ + documentationUri: string; + /** + * Used as a tracking tag when collecting data about the APIs developer + * relations artifacts like docs, packages delivered to package managers, + * etc. Example: "speech". + */ + apiShortName: string; + /** GitHub label to apply to issues and pull requests opened for this API. */ + githubLabel: string; + /** + * GitHub teams to be added to CODEOWNERS in the directory in GitHub + * containing source code for the client libraries for this API. + */ + codeownerGithubTeams: string[]; + /** + * A prefix used in sample code when demarking regions to be included in + * documentation. + */ + docTagPrefix: string; + /** For whom the client library is being published. */ + organization: ClientLibraryOrganization; + /** + * Client library settings. If the same version string appears multiple + * times in this list, then the last one wins. Settings from earlier + * settings with the same version string are discarded. + */ + librarySettings: ClientLibrarySettings[]; + /** + * Optional link to proto reference documentation. Example: + * https://cloud.google.com/pubsub/lite/docs/reference/rpc + */ + protoReferenceDocumentationUri: string; + /** + * Optional link to REST reference documentation. Example: + * https://cloud.google.com/pubsub/lite/docs/reference/rest + */ + restReferenceDocumentationUri: string; +} + +/** Settings for Java client libraries. */ +export interface JavaSettings { + /** + * The package name to use in Java. Clobbers the java_package option + * set in the protobuf. This should be used **only** by APIs + * who have already set the language_settings.java.package_name" field + * in gapic.yaml. API teams should use the protobuf java_package option + * where possible. + * + * Example of a YAML configuration:: + * + * publishing: + * java_settings: + * library_package: com.google.cloud.pubsub.v1 + */ + libraryPackage: string; + /** + * Configure the Java class name to use instead of the service's for its + * corresponding generated GAPIC client. Keys are fully-qualified + * service names as they appear in the protobuf (including the full + * the language_settings.java.interface_names" field in gapic.yaml. API + * teams should otherwise use the service name as it appears in the + * protobuf. + * + * Example of a YAML configuration:: + * + * publishing: + * java_settings: + * service_class_names: + * - google.pubsub.v1.Publisher: TopicAdmin + * - google.pubsub.v1.Subscriber: SubscriptionAdmin + */ + serviceClassNames: { [key: string]: string }; + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +export interface JavaSettings_ServiceClassNamesEntry { + key: string; + value: string; +} + +/** Settings for C++ client libraries. */ +export interface CppSettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Settings for Php client libraries. */ +export interface PhpSettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Settings for Python client libraries. */ +export interface PythonSettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Settings for Node client libraries. */ +export interface NodeSettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Settings for Dotnet client libraries. */ +export interface DotnetSettings { + /** Some settings. */ + common?: + | CommonLanguageSettings + | undefined; + /** + * Map from original service names to renamed versions. + * This is used when the default generated types + * would cause a naming conflict. (Neither name is + * fully-qualified.) + * Example: Subscriber to SubscriberServiceApi. + */ + renamedServices: { [key: string]: string }; + /** + * Map from full resource types to the effective short name + * for the resource. This is used when otherwise resource + * named from different services would cause naming collisions. + * Example entry: + * "datalabeling.googleapis.com/Dataset": "DataLabelingDataset" + */ + renamedResources: { [key: string]: string }; + /** + * List of full resource types to ignore during generation. + * This is typically used for API-specific Location resources, + * which should be handled by the generator as if they were actually + * the common Location resources. + * Example entry: "documentai.googleapis.com/Location" + */ + ignoredResources: string[]; + /** + * Namespaces which must be aliased in snippets due to + * a known (but non-generator-predictable) naming collision + */ + forcedNamespaceAliases: string[]; + /** + * Method signatures (in the form "service.method(signature)") + * which are provided separately, so shouldn't be generated. + * Snippets *calling* these methods are still generated, however. + */ + handwrittenSignatures: string[]; +} + +export interface DotnetSettings_RenamedServicesEntry { + key: string; + value: string; +} + +export interface DotnetSettings_RenamedResourcesEntry { + key: string; + value: string; +} + +/** Settings for Ruby client libraries. */ +export interface RubySettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Settings for Go client libraries. */ +export interface GoSettings { + /** Some settings. */ + common?: CommonLanguageSettings | undefined; +} + +/** Describes the generator configuration for a method. */ +export interface MethodSettings { + /** + * The fully qualified name of the method, for which the options below apply. + * This is used to find the method to apply the options. + */ + selector: string; + /** + * Describes settings to use for long-running operations when generating + * API methods for RPCs. Complements RPCs that use the annotations in + * google/longrunning/operations.proto. + * + * Example of a YAML configuration:: + * + * publishing: + * method_settings: + * - selector: google.cloud.speech.v2.Speech.BatchRecognize + * long_running: + * initial_poll_delay: + * seconds: 60 # 1 minute + * poll_delay_multiplier: 1.5 + * max_poll_delay: + * seconds: 360 # 6 minutes + * total_poll_timeout: + * seconds: 54000 # 90 minutes + */ + longRunning?: + | MethodSettings_LongRunning + | undefined; + /** + * List of top-level fields of the request message, that should be + * automatically populated by the client libraries based on their + * (google.api.field_info).format. Currently supported format: UUID4. + * + * Example of a YAML configuration: + * + * publishing: + * method_settings: + * - selector: google.example.v1.ExampleService.CreateExample + * auto_populated_fields: + * - request_id + */ + autoPopulatedFields: string[]; +} + +/** + * Describes settings to use when generating API methods that use the + * long-running operation pattern. + * All default values below are from those used in the client library + * generators (e.g. + * [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)). + */ +export interface MethodSettings_LongRunning { + /** + * Initial delay after which the first poll request will be made. + * Default value: 5 seconds. + */ + initialPollDelay?: + | Duration + | undefined; + /** + * Multiplier to gradually increase delay between subsequent polls until it + * reaches max_poll_delay. + * Default value: 1.5. + */ + pollDelayMultiplier: number; + /** + * Maximum time between two subsequent poll requests. + * Default value: 45 seconds. + */ + maxPollDelay?: + | Duration + | undefined; + /** + * Total polling timeout. + * Default value: 5 minutes. + */ + totalPollTimeout?: Duration | undefined; +} + +function createBaseCommonLanguageSettings(): CommonLanguageSettings { + return { referenceDocsUri: "", destinations: [] }; +} + +export const CommonLanguageSettings = { + encode(message: CommonLanguageSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.referenceDocsUri !== "") { + writer.uint32(10).string(message.referenceDocsUri); + } + writer.uint32(18).fork(); + for (const v of message.destinations) { + writer.int32(clientLibraryDestinationToNumber(v)); + } + writer.ldelim(); + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CommonLanguageSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCommonLanguageSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.referenceDocsUri = reader.string(); + continue; + case 2: + if (tag === 16) { + message.destinations.push(clientLibraryDestinationFromJSON(reader.int32())); + + continue; + } + + if (tag === 18) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.destinations.push(clientLibraryDestinationFromJSON(reader.int32())); + } + + continue; + } + + break; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CommonLanguageSettings { + return CommonLanguageSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CommonLanguageSettings { + const message = createBaseCommonLanguageSettings(); + message.referenceDocsUri = object.referenceDocsUri ?? ""; + message.destinations = object.destinations?.map((e) => e) || []; + return message; + }, +}; + +function createBaseClientLibrarySettings(): ClientLibrarySettings { + return { + version: "", + launchStage: LaunchStage.LAUNCH_STAGE_UNSPECIFIED, + restNumericEnums: false, + javaSettings: undefined, + cppSettings: undefined, + phpSettings: undefined, + pythonSettings: undefined, + nodeSettings: undefined, + dotnetSettings: undefined, + rubySettings: undefined, + goSettings: undefined, + }; +} + +export const ClientLibrarySettings = { + encode(message: ClientLibrarySettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.version !== "") { + writer.uint32(10).string(message.version); + } + if (message.launchStage !== LaunchStage.LAUNCH_STAGE_UNSPECIFIED) { + writer.uint32(16).int32(launchStageToNumber(message.launchStage)); + } + if (message.restNumericEnums !== false) { + writer.uint32(24).bool(message.restNumericEnums); + } + if (message.javaSettings !== undefined) { + JavaSettings.encode(message.javaSettings, writer.uint32(170).fork()).ldelim(); + } + if (message.cppSettings !== undefined) { + CppSettings.encode(message.cppSettings, writer.uint32(178).fork()).ldelim(); + } + if (message.phpSettings !== undefined) { + PhpSettings.encode(message.phpSettings, writer.uint32(186).fork()).ldelim(); + } + if (message.pythonSettings !== undefined) { + PythonSettings.encode(message.pythonSettings, writer.uint32(194).fork()).ldelim(); + } + if (message.nodeSettings !== undefined) { + NodeSettings.encode(message.nodeSettings, writer.uint32(202).fork()).ldelim(); + } + if (message.dotnetSettings !== undefined) { + DotnetSettings.encode(message.dotnetSettings, writer.uint32(210).fork()).ldelim(); + } + if (message.rubySettings !== undefined) { + RubySettings.encode(message.rubySettings, writer.uint32(218).fork()).ldelim(); + } + if (message.goSettings !== undefined) { + GoSettings.encode(message.goSettings, writer.uint32(226).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ClientLibrarySettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseClientLibrarySettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.version = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.launchStage = launchStageFromJSON(reader.int32()); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.restNumericEnums = reader.bool(); + continue; + case 21: + if (tag !== 170) { + break; + } + + message.javaSettings = JavaSettings.decode(reader, reader.uint32()); + continue; + case 22: + if (tag !== 178) { + break; + } + + message.cppSettings = CppSettings.decode(reader, reader.uint32()); + continue; + case 23: + if (tag !== 186) { + break; + } + + message.phpSettings = PhpSettings.decode(reader, reader.uint32()); + continue; + case 24: + if (tag !== 194) { + break; + } + + message.pythonSettings = PythonSettings.decode(reader, reader.uint32()); + continue; + case 25: + if (tag !== 202) { + break; + } + + message.nodeSettings = NodeSettings.decode(reader, reader.uint32()); + continue; + case 26: + if (tag !== 210) { + break; + } + + message.dotnetSettings = DotnetSettings.decode(reader, reader.uint32()); + continue; + case 27: + if (tag !== 218) { + break; + } + + message.rubySettings = RubySettings.decode(reader, reader.uint32()); + continue; + case 28: + if (tag !== 226) { + break; + } + + message.goSettings = GoSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ClientLibrarySettings { + return ClientLibrarySettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ClientLibrarySettings { + const message = createBaseClientLibrarySettings(); + message.version = object.version ?? ""; + message.launchStage = object.launchStage ?? LaunchStage.LAUNCH_STAGE_UNSPECIFIED; + message.restNumericEnums = object.restNumericEnums ?? false; + message.javaSettings = (object.javaSettings !== undefined && object.javaSettings !== null) + ? JavaSettings.fromPartial(object.javaSettings) + : undefined; + message.cppSettings = (object.cppSettings !== undefined && object.cppSettings !== null) + ? CppSettings.fromPartial(object.cppSettings) + : undefined; + message.phpSettings = (object.phpSettings !== undefined && object.phpSettings !== null) + ? PhpSettings.fromPartial(object.phpSettings) + : undefined; + message.pythonSettings = (object.pythonSettings !== undefined && object.pythonSettings !== null) + ? PythonSettings.fromPartial(object.pythonSettings) + : undefined; + message.nodeSettings = (object.nodeSettings !== undefined && object.nodeSettings !== null) + ? NodeSettings.fromPartial(object.nodeSettings) + : undefined; + message.dotnetSettings = (object.dotnetSettings !== undefined && object.dotnetSettings !== null) + ? DotnetSettings.fromPartial(object.dotnetSettings) + : undefined; + message.rubySettings = (object.rubySettings !== undefined && object.rubySettings !== null) + ? RubySettings.fromPartial(object.rubySettings) + : undefined; + message.goSettings = (object.goSettings !== undefined && object.goSettings !== null) + ? GoSettings.fromPartial(object.goSettings) + : undefined; + return message; + }, +}; + +function createBasePublishing(): Publishing { + return { + methodSettings: [], + newIssueUri: "", + documentationUri: "", + apiShortName: "", + githubLabel: "", + codeownerGithubTeams: [], + docTagPrefix: "", + organization: ClientLibraryOrganization.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED, + librarySettings: [], + protoReferenceDocumentationUri: "", + restReferenceDocumentationUri: "", + }; +} + +export const Publishing = { + encode(message: Publishing, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.methodSettings) { + MethodSettings.encode(v!, writer.uint32(18).fork()).ldelim(); + } + if (message.newIssueUri !== "") { + writer.uint32(810).string(message.newIssueUri); + } + if (message.documentationUri !== "") { + writer.uint32(818).string(message.documentationUri); + } + if (message.apiShortName !== "") { + writer.uint32(826).string(message.apiShortName); + } + if (message.githubLabel !== "") { + writer.uint32(834).string(message.githubLabel); + } + for (const v of message.codeownerGithubTeams) { + writer.uint32(842).string(v!); + } + if (message.docTagPrefix !== "") { + writer.uint32(850).string(message.docTagPrefix); + } + if (message.organization !== ClientLibraryOrganization.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED) { + writer.uint32(856).int32(clientLibraryOrganizationToNumber(message.organization)); + } + for (const v of message.librarySettings) { + ClientLibrarySettings.encode(v!, writer.uint32(874).fork()).ldelim(); + } + if (message.protoReferenceDocumentationUri !== "") { + writer.uint32(882).string(message.protoReferenceDocumentationUri); + } + if (message.restReferenceDocumentationUri !== "") { + writer.uint32(890).string(message.restReferenceDocumentationUri); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Publishing { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePublishing(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (tag !== 18) { + break; + } + + message.methodSettings.push(MethodSettings.decode(reader, reader.uint32())); + continue; + case 101: + if (tag !== 810) { + break; + } + + message.newIssueUri = reader.string(); + continue; + case 102: + if (tag !== 818) { + break; + } + + message.documentationUri = reader.string(); + continue; + case 103: + if (tag !== 826) { + break; + } + + message.apiShortName = reader.string(); + continue; + case 104: + if (tag !== 834) { + break; + } + + message.githubLabel = reader.string(); + continue; + case 105: + if (tag !== 842) { + break; + } + + message.codeownerGithubTeams.push(reader.string()); + continue; + case 106: + if (tag !== 850) { + break; + } + + message.docTagPrefix = reader.string(); + continue; + case 107: + if (tag !== 856) { + break; + } + + message.organization = clientLibraryOrganizationFromJSON(reader.int32()); + continue; + case 109: + if (tag !== 874) { + break; + } + + message.librarySettings.push(ClientLibrarySettings.decode(reader, reader.uint32())); + continue; + case 110: + if (tag !== 882) { + break; + } + + message.protoReferenceDocumentationUri = reader.string(); + continue; + case 111: + if (tag !== 890) { + break; + } + + message.restReferenceDocumentationUri = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Publishing { + return Publishing.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Publishing { + const message = createBasePublishing(); + message.methodSettings = object.methodSettings?.map((e) => MethodSettings.fromPartial(e)) || []; + message.newIssueUri = object.newIssueUri ?? ""; + message.documentationUri = object.documentationUri ?? ""; + message.apiShortName = object.apiShortName ?? ""; + message.githubLabel = object.githubLabel ?? ""; + message.codeownerGithubTeams = object.codeownerGithubTeams?.map((e) => e) || []; + message.docTagPrefix = object.docTagPrefix ?? ""; + message.organization = object.organization ?? ClientLibraryOrganization.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED; + message.librarySettings = object.librarySettings?.map((e) => ClientLibrarySettings.fromPartial(e)) || []; + message.protoReferenceDocumentationUri = object.protoReferenceDocumentationUri ?? ""; + message.restReferenceDocumentationUri = object.restReferenceDocumentationUri ?? ""; + return message; + }, +}; + +function createBaseJavaSettings(): JavaSettings { + return { libraryPackage: "", serviceClassNames: {}, common: undefined }; +} + +export const JavaSettings = { + encode(message: JavaSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.libraryPackage !== "") { + writer.uint32(10).string(message.libraryPackage); + } + Object.entries(message.serviceClassNames).forEach(([key, value]) => { + JavaSettings_ServiceClassNamesEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim(); + }); + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): JavaSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseJavaSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.libraryPackage = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + const entry2 = JavaSettings_ServiceClassNamesEntry.decode(reader, reader.uint32()); + if (entry2.value !== undefined) { + message.serviceClassNames[entry2.key] = entry2.value; + } + continue; + case 3: + if (tag !== 26) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): JavaSettings { + return JavaSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): JavaSettings { + const message = createBaseJavaSettings(); + message.libraryPackage = object.libraryPackage ?? ""; + message.serviceClassNames = Object.entries(object.serviceClassNames ?? {}).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[key] = globalThis.String(value); + } + return acc; + }, + {}, + ); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBaseJavaSettings_ServiceClassNamesEntry(): JavaSettings_ServiceClassNamesEntry { + return { key: "", value: "" }; +} + +export const JavaSettings_ServiceClassNamesEntry = { + encode(message: JavaSettings_ServiceClassNamesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): JavaSettings_ServiceClassNamesEntry { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseJavaSettings_ServiceClassNamesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): JavaSettings_ServiceClassNamesEntry { + return JavaSettings_ServiceClassNamesEntry.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): JavaSettings_ServiceClassNamesEntry { + const message = createBaseJavaSettings_ServiceClassNamesEntry(); + message.key = object.key ?? ""; + message.value = object.value ?? ""; + return message; + }, +}; + +function createBaseCppSettings(): CppSettings { + return { common: undefined }; +} + +export const CppSettings = { + encode(message: CppSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CppSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCppSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CppSettings { + return CppSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CppSettings { + const message = createBaseCppSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBasePhpSettings(): PhpSettings { + return { common: undefined }; +} + +export const PhpSettings = { + encode(message: PhpSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): PhpSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePhpSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): PhpSettings { + return PhpSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): PhpSettings { + const message = createBasePhpSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBasePythonSettings(): PythonSettings { + return { common: undefined }; +} + +export const PythonSettings = { + encode(message: PythonSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): PythonSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePythonSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): PythonSettings { + return PythonSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): PythonSettings { + const message = createBasePythonSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBaseNodeSettings(): NodeSettings { + return { common: undefined }; +} + +export const NodeSettings = { + encode(message: NodeSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): NodeSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseNodeSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): NodeSettings { + return NodeSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): NodeSettings { + const message = createBaseNodeSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBaseDotnetSettings(): DotnetSettings { + return { + common: undefined, + renamedServices: {}, + renamedResources: {}, + ignoredResources: [], + forcedNamespaceAliases: [], + handwrittenSignatures: [], + }; +} + +export const DotnetSettings = { + encode(message: DotnetSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + Object.entries(message.renamedServices).forEach(([key, value]) => { + DotnetSettings_RenamedServicesEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim(); + }); + Object.entries(message.renamedResources).forEach(([key, value]) => { + DotnetSettings_RenamedResourcesEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).ldelim(); + }); + for (const v of message.ignoredResources) { + writer.uint32(34).string(v!); + } + for (const v of message.forcedNamespaceAliases) { + writer.uint32(42).string(v!); + } + for (const v of message.handwrittenSignatures) { + writer.uint32(50).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DotnetSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDotnetSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + const entry2 = DotnetSettings_RenamedServicesEntry.decode(reader, reader.uint32()); + if (entry2.value !== undefined) { + message.renamedServices[entry2.key] = entry2.value; + } + continue; + case 3: + if (tag !== 26) { + break; + } + + const entry3 = DotnetSettings_RenamedResourcesEntry.decode(reader, reader.uint32()); + if (entry3.value !== undefined) { + message.renamedResources[entry3.key] = entry3.value; + } + continue; + case 4: + if (tag !== 34) { + break; + } + + message.ignoredResources.push(reader.string()); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.forcedNamespaceAliases.push(reader.string()); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.handwrittenSignatures.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DotnetSettings { + return DotnetSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DotnetSettings { + const message = createBaseDotnetSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + message.renamedServices = Object.entries(object.renamedServices ?? {}).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[key] = globalThis.String(value); + } + return acc; + }, + {}, + ); + message.renamedResources = Object.entries(object.renamedResources ?? {}).reduce<{ [key: string]: string }>( + (acc, [key, value]) => { + if (value !== undefined) { + acc[key] = globalThis.String(value); + } + return acc; + }, + {}, + ); + message.ignoredResources = object.ignoredResources?.map((e) => e) || []; + message.forcedNamespaceAliases = object.forcedNamespaceAliases?.map((e) => e) || []; + message.handwrittenSignatures = object.handwrittenSignatures?.map((e) => e) || []; + return message; + }, +}; + +function createBaseDotnetSettings_RenamedServicesEntry(): DotnetSettings_RenamedServicesEntry { + return { key: "", value: "" }; +} + +export const DotnetSettings_RenamedServicesEntry = { + encode(message: DotnetSettings_RenamedServicesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DotnetSettings_RenamedServicesEntry { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDotnetSettings_RenamedServicesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DotnetSettings_RenamedServicesEntry { + return DotnetSettings_RenamedServicesEntry.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DotnetSettings_RenamedServicesEntry { + const message = createBaseDotnetSettings_RenamedServicesEntry(); + message.key = object.key ?? ""; + message.value = object.value ?? ""; + return message; + }, +}; + +function createBaseDotnetSettings_RenamedResourcesEntry(): DotnetSettings_RenamedResourcesEntry { + return { key: "", value: "" }; +} + +export const DotnetSettings_RenamedResourcesEntry = { + encode(message: DotnetSettings_RenamedResourcesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DotnetSettings_RenamedResourcesEntry { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDotnetSettings_RenamedResourcesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.key = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DotnetSettings_RenamedResourcesEntry { + return DotnetSettings_RenamedResourcesEntry.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DotnetSettings_RenamedResourcesEntry { + const message = createBaseDotnetSettings_RenamedResourcesEntry(); + message.key = object.key ?? ""; + message.value = object.value ?? ""; + return message; + }, +}; + +function createBaseRubySettings(): RubySettings { + return { common: undefined }; +} + +export const RubySettings = { + encode(message: RubySettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): RubySettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseRubySettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): RubySettings { + return RubySettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): RubySettings { + const message = createBaseRubySettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBaseGoSettings(): GoSettings { + return { common: undefined }; +} + +export const GoSettings = { + encode(message: GoSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.common !== undefined) { + CommonLanguageSettings.encode(message.common, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GoSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGoSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.common = CommonLanguageSettings.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GoSettings { + return GoSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GoSettings { + const message = createBaseGoSettings(); + message.common = (object.common !== undefined && object.common !== null) + ? CommonLanguageSettings.fromPartial(object.common) + : undefined; + return message; + }, +}; + +function createBaseMethodSettings(): MethodSettings { + return { selector: "", longRunning: undefined, autoPopulatedFields: [] }; +} + +export const MethodSettings = { + encode(message: MethodSettings, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.selector !== "") { + writer.uint32(10).string(message.selector); + } + if (message.longRunning !== undefined) { + MethodSettings_LongRunning.encode(message.longRunning, writer.uint32(18).fork()).ldelim(); + } + for (const v of message.autoPopulatedFields) { + writer.uint32(26).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MethodSettings { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMethodSettings(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.selector = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.longRunning = MethodSettings_LongRunning.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.autoPopulatedFields.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MethodSettings { + return MethodSettings.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MethodSettings { + const message = createBaseMethodSettings(); + message.selector = object.selector ?? ""; + message.longRunning = (object.longRunning !== undefined && object.longRunning !== null) + ? MethodSettings_LongRunning.fromPartial(object.longRunning) + : undefined; + message.autoPopulatedFields = object.autoPopulatedFields?.map((e) => e) || []; + return message; + }, +}; + +function createBaseMethodSettings_LongRunning(): MethodSettings_LongRunning { + return { initialPollDelay: undefined, pollDelayMultiplier: 0, maxPollDelay: undefined, totalPollTimeout: undefined }; +} + +export const MethodSettings_LongRunning = { + encode(message: MethodSettings_LongRunning, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.initialPollDelay !== undefined) { + Duration.encode(message.initialPollDelay, writer.uint32(10).fork()).ldelim(); + } + if (message.pollDelayMultiplier !== 0) { + writer.uint32(21).float(message.pollDelayMultiplier); + } + if (message.maxPollDelay !== undefined) { + Duration.encode(message.maxPollDelay, writer.uint32(26).fork()).ldelim(); + } + if (message.totalPollTimeout !== undefined) { + Duration.encode(message.totalPollTimeout, writer.uint32(34).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MethodSettings_LongRunning { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMethodSettings_LongRunning(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.initialPollDelay = Duration.decode(reader, reader.uint32()); + continue; + case 2: + if (tag !== 21) { + break; + } + + message.pollDelayMultiplier = reader.float(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.maxPollDelay = Duration.decode(reader, reader.uint32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.totalPollTimeout = Duration.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MethodSettings_LongRunning { + return MethodSettings_LongRunning.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MethodSettings_LongRunning { + const message = createBaseMethodSettings_LongRunning(); + message.initialPollDelay = (object.initialPollDelay !== undefined && object.initialPollDelay !== null) + ? Duration.fromPartial(object.initialPollDelay) + : undefined; + message.pollDelayMultiplier = object.pollDelayMultiplier ?? 0; + message.maxPollDelay = (object.maxPollDelay !== undefined && object.maxPollDelay !== null) + ? Duration.fromPartial(object.maxPollDelay) + : undefined; + message.totalPollTimeout = (object.totalPollTimeout !== undefined && object.totalPollTimeout !== null) + ? Duration.fromPartial(object.totalPollTimeout) + : undefined; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts b/api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts new file mode 100644 index 0000000..b0ccddc --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts @@ -0,0 +1,145 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/field_behavior.proto + +/* eslint-disable */ + +export const protobufPackage = "google.api"; + +/** + * An indicator of the behavior of a given field (for example, that a field + * is required in requests, or given as output but ignored as input). + * This **does not** change the behavior in protocol buffers itself; it only + * denotes the behavior and may affect how API tooling handles the field. + * + * Note: This enum **may** receive new values in the future. + */ +export enum FieldBehavior { + /** FIELD_BEHAVIOR_UNSPECIFIED - Conventional default for enums. Do not use this. */ + FIELD_BEHAVIOR_UNSPECIFIED = "FIELD_BEHAVIOR_UNSPECIFIED", + /** + * OPTIONAL - Specifically denotes a field as optional. + * While all fields in protocol buffers are optional, this may be specified + * for emphasis if appropriate. + */ + OPTIONAL = "OPTIONAL", + /** + * REQUIRED - Denotes a field as required. + * This indicates that the field **must** be provided as part of the request, + * and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + */ + REQUIRED = "REQUIRED", + /** + * OUTPUT_ONLY - Denotes a field as output only. + * This indicates that the field is provided in responses, but including the + * field in a request does nothing (the server *must* ignore it and + * *must not* throw an error as a result of the field's presence). + */ + OUTPUT_ONLY = "OUTPUT_ONLY", + /** + * INPUT_ONLY - Denotes a field as input only. + * This indicates that the field is provided in requests, and the + * corresponding field is not included in output. + */ + INPUT_ONLY = "INPUT_ONLY", + /** + * IMMUTABLE - Denotes a field as immutable. + * This indicates that the field may be set once in a request to create a + * resource, but may not be changed thereafter. + */ + IMMUTABLE = "IMMUTABLE", + /** + * UNORDERED_LIST - Denotes that a (repeated) field is an unordered list. + * This indicates that the service may provide the elements of the list + * in any arbitrary order, rather than the order the user originally + * provided. Additionally, the list's order may or may not be stable. + */ + UNORDERED_LIST = "UNORDERED_LIST", + /** + * NON_EMPTY_DEFAULT - Denotes that this field returns a non-empty default value if not set. + * This indicates that if the user provides the empty value in a request, + * a non-empty value will be returned. The user will not be aware of what + * non-empty value to expect. + */ + NON_EMPTY_DEFAULT = "NON_EMPTY_DEFAULT", + /** + * IDENTIFIER - Denotes that the field in a resource (a message annotated with + * google.api.resource) is used in the resource name to uniquely identify the + * resource. For AIP-compliant APIs, this should only be applied to the + * `name` field on the resource. + * + * This behavior should not be applied to references to other resources within + * the message. + * + * The identifier field of resources often have different field behavior + * depending on the request it is embedded in (e.g. for Create methods name + * is optional and unused, while for Update methods it is required). Instead + * of method-specific annotations, only `IDENTIFIER` is required. + */ + IDENTIFIER = "IDENTIFIER", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldBehaviorFromJSON(object: any): FieldBehavior { + switch (object) { + case 0: + case "FIELD_BEHAVIOR_UNSPECIFIED": + return FieldBehavior.FIELD_BEHAVIOR_UNSPECIFIED; + case 1: + case "OPTIONAL": + return FieldBehavior.OPTIONAL; + case 2: + case "REQUIRED": + return FieldBehavior.REQUIRED; + case 3: + case "OUTPUT_ONLY": + return FieldBehavior.OUTPUT_ONLY; + case 4: + case "INPUT_ONLY": + return FieldBehavior.INPUT_ONLY; + case 5: + case "IMMUTABLE": + return FieldBehavior.IMMUTABLE; + case 6: + case "UNORDERED_LIST": + return FieldBehavior.UNORDERED_LIST; + case 7: + case "NON_EMPTY_DEFAULT": + return FieldBehavior.NON_EMPTY_DEFAULT; + case 8: + case "IDENTIFIER": + return FieldBehavior.IDENTIFIER; + case -1: + case "UNRECOGNIZED": + default: + return FieldBehavior.UNRECOGNIZED; + } +} + +export function fieldBehaviorToNumber(object: FieldBehavior): number { + switch (object) { + case FieldBehavior.FIELD_BEHAVIOR_UNSPECIFIED: + return 0; + case FieldBehavior.OPTIONAL: + return 1; + case FieldBehavior.REQUIRED: + return 2; + case FieldBehavior.OUTPUT_ONLY: + return 3; + case FieldBehavior.INPUT_ONLY: + return 4; + case FieldBehavior.IMMUTABLE: + return 5; + case FieldBehavior.UNORDERED_LIST: + return 6; + case FieldBehavior.NON_EMPTY_DEFAULT: + return 7; + case FieldBehavior.IDENTIFIER: + return 8; + case FieldBehavior.UNRECOGNIZED: + default: + return -1; + } +} diff --git a/api/memos-proto-v0.22.1/gen/google/api/http.ts b/api/memos-proto-v0.22.1/gen/google/api/http.ts new file mode 100644 index 0000000..bb02b47 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/http.ts @@ -0,0 +1,657 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/http.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.api"; + +/** + * Defines the HTTP configuration for an API service. It contains a list of + * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method + * to one or more HTTP REST API methods. + */ +export interface Http { + /** + * A list of HTTP configuration rules that apply to individual API methods. + * + * **NOTE:** All service configuration rules follow "last one wins" order. + */ + rules: HttpRule[]; + /** + * When set to true, URL path parameters will be fully URI-decoded except in + * cases of single segment matches in reserved expansion, where "%2F" will be + * left encoded. + * + * The default behavior is to not decode RFC 6570 reserved characters in multi + * segment matches. + */ + fullyDecodeReservedExpansion: boolean; +} + +/** + * # gRPC Transcoding + * + * gRPC Transcoding is a feature for mapping between a gRPC method and one or + * more HTTP REST endpoints. It allows developers to build a single API service + * that supports both gRPC APIs and REST APIs. Many systems, including [Google + * APIs](https://github.com/googleapis/googleapis), + * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC + * Gateway](https://github.com/grpc-ecosystem/grpc-gateway), + * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature + * and use it for large scale production services. + * + * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies + * how different portions of the gRPC request message are mapped to the URL + * path, URL query parameters, and HTTP request body. It also controls how the + * gRPC response message is mapped to the HTTP response body. `HttpRule` is + * typically specified as an `google.api.http` annotation on the gRPC method. + * + * Each mapping specifies a URL path template and an HTTP method. The path + * template may refer to one or more fields in the gRPC request message, as long + * as each field is a non-repeated field with a primitive (non-message) type. + * The path template controls how fields of the request message are mapped to + * the URL path. + * + * Example: + * + * service Messaging { + * rpc GetMessage(GetMessageRequest) returns (Message) { + * option (google.api.http) = { + * get: "/v1/{name=messages/*}" + * }; + * } + * } + * message GetMessageRequest { + * string name = 1; // Mapped to URL path. + * } + * message Message { + * string text = 1; // The resource content. + * } + * + * This enables an HTTP REST to gRPC mapping as below: + * + * HTTP | gRPC + * -----|----- + * `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` + * + * Any fields in the request message which are not bound by the path template + * automatically become HTTP query parameters if there is no HTTP request body. + * For example: + * + * service Messaging { + * rpc GetMessage(GetMessageRequest) returns (Message) { + * option (google.api.http) = { + * get:"/v1/messages/{message_id}" + * }; + * } + * } + * message GetMessageRequest { + * message SubMessage { + * string subfield = 1; + * } + * string message_id = 1; // Mapped to URL path. + * int64 revision = 2; // Mapped to URL query parameter `revision`. + * SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. + * } + * + * This enables a HTTP JSON to RPC mapping as below: + * + * HTTP | gRPC + * -----|----- + * `GET /v1/messages/123456?revision=2&sub.subfield=foo` | + * `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: + * "foo"))` + * + * Note that fields which are mapped to URL query parameters must have a + * primitive type or a repeated primitive type or a non-repeated message type. + * In the case of a repeated type, the parameter can be repeated in the URL + * as `...?param=A¶m=B`. In the case of a message type, each field of the + * message is mapped to a separate parameter, such as + * `...?foo.a=A&foo.b=B&foo.c=C`. + * + * For HTTP methods that allow a request body, the `body` field + * specifies the mapping. Consider a REST update method on the + * message resource collection: + * + * service Messaging { + * rpc UpdateMessage(UpdateMessageRequest) returns (Message) { + * option (google.api.http) = { + * patch: "/v1/messages/{message_id}" + * body: "message" + * }; + * } + * } + * message UpdateMessageRequest { + * string message_id = 1; // mapped to the URL + * Message message = 2; // mapped to the body + * } + * + * The following HTTP JSON to RPC mapping is enabled, where the + * representation of the JSON in the request body is determined by + * protos JSON encoding: + * + * HTTP | gRPC + * -----|----- + * `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: + * "123456" message { text: "Hi!" })` + * + * The special name `*` can be used in the body mapping to define that + * every field not bound by the path template should be mapped to the + * request body. This enables the following alternative definition of + * the update method: + * + * service Messaging { + * rpc UpdateMessage(Message) returns (Message) { + * option (google.api.http) = { + * patch: "/v1/messages/{message_id}" + * body: "*" + * }; + * } + * } + * message Message { + * string message_id = 1; + * string text = 2; + * } + * + * The following HTTP JSON to RPC mapping is enabled: + * + * HTTP | gRPC + * -----|----- + * `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: + * "123456" text: "Hi!")` + * + * Note that when using `*` in the body mapping, it is not possible to + * have HTTP parameters, as all fields not bound by the path end in + * the body. This makes this option more rarely used in practice when + * defining REST APIs. The common usage of `*` is in custom methods + * which don't use the URL at all for transferring data. + * + * It is possible to define multiple HTTP methods for one RPC by using + * the `additional_bindings` option. Example: + * + * service Messaging { + * rpc GetMessage(GetMessageRequest) returns (Message) { + * option (google.api.http) = { + * get: "/v1/messages/{message_id}" + * additional_bindings { + * get: "/v1/users/{user_id}/messages/{message_id}" + * } + * }; + * } + * } + * message GetMessageRequest { + * string message_id = 1; + * string user_id = 2; + * } + * + * This enables the following two alternative HTTP JSON to RPC mappings: + * + * HTTP | gRPC + * -----|----- + * `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` + * `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: + * "123456")` + * + * ## Rules for HTTP mapping + * + * 1. Leaf request fields (recursive expansion nested messages in the request + * message) are classified into three categories: + * - Fields referred by the path template. They are passed via the URL path. + * - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They + * are passed via the HTTP + * request body. + * - All other fields are passed via the URL query parameters, and the + * parameter name is the field path in the request message. A repeated + * field can be represented as multiple query parameters under the same + * name. + * 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL + * query parameter, all fields + * are passed via URL path and HTTP request body. + * 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP + * request body, all + * fields are passed via URL path and URL query parameters. + * + * ### Path template syntax + * + * Template = "/" Segments [ Verb ] ; + * Segments = Segment { "/" Segment } ; + * Segment = "*" | "**" | LITERAL | Variable ; + * Variable = "{" FieldPath [ "=" Segments ] "}" ; + * FieldPath = IDENT { "." IDENT } ; + * Verb = ":" LITERAL ; + * + * The syntax `*` matches a single URL path segment. The syntax `**` matches + * zero or more URL path segments, which must be the last part of the URL path + * except the `Verb`. + * + * The syntax `Variable` matches part of the URL path as specified by its + * template. A variable template must not contain other variables. If a variable + * matches a single path segment, its template may be omitted, e.g. `{var}` + * is equivalent to `{var=*}`. + * + * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` + * contains any reserved character, such characters should be percent-encoded + * before the matching. + * + * If a variable contains exactly one path segment, such as `"{var}"` or + * `"{var=*}"`, when such a variable is expanded into a URL path on the client + * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The + * server side does the reverse decoding. Such variables show up in the + * [Discovery + * Document](https://developers.google.com/discovery/v1/reference/apis) as + * `{var}`. + * + * If a variable contains multiple path segments, such as `"{var=foo/*}"` + * or `"{var=**}"`, when such a variable is expanded into a URL path on the + * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. + * The server side does the reverse decoding, except "%2F" and "%2f" are left + * unchanged. Such variables show up in the + * [Discovery + * Document](https://developers.google.com/discovery/v1/reference/apis) as + * `{+var}`. + * + * ## Using gRPC API Service Configuration + * + * gRPC API Service Configuration (service config) is a configuration language + * for configuring a gRPC service to become a user-facing product. The + * service config is simply the YAML representation of the `google.api.Service` + * proto message. + * + * As an alternative to annotating your proto file, you can configure gRPC + * transcoding in your service config YAML files. You do this by specifying a + * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same + * effect as the proto annotation. This can be particularly useful if you + * have a proto that is reused in multiple services. Note that any transcoding + * specified in the service config will override any matching transcoding + * configuration in the proto. + * + * Example: + * + * http: + * rules: + * # Selects a gRPC method and applies HttpRule to it. + * - selector: example.v1.Messaging.GetMessage + * get: /v1/messages/{message_id}/{sub.subfield} + * + * ## Special notes + * + * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the + * proto to JSON conversion must follow the [proto3 + * specification](https://developers.google.com/protocol-buffers/docs/proto3#json). + * + * While the single segment variable follows the semantics of + * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String + * Expansion, the multi segment variable **does not** follow RFC 6570 Section + * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion + * does not expand special characters like `?` and `#`, which would lead + * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding + * for multi segment variables. + * + * The path variables **must not** refer to any repeated or mapped field, + * because client libraries are not capable of handling such variable expansion. + * + * The path variables **must not** capture the leading "/" character. The reason + * is that the most common use case "{var}" does not capture the leading "/" + * character. For consistency, all path variables must share the same behavior. + * + * Repeated message fields must not be mapped to URL query parameters, because + * no client library can support such complicated mapping. + * + * If an API needs to use a JSON array for request or response body, it can map + * the request or response body to a repeated field. However, some gRPC + * Transcoding implementations may not support this feature. + */ +export interface HttpRule { + /** + * Selects a method to which this rule applies. + * + * Refer to [selector][google.api.DocumentationRule.selector] for syntax + * details. + */ + selector: string; + /** + * Maps to HTTP GET. Used for listing and getting information about + * resources. + */ + get?: + | string + | undefined; + /** Maps to HTTP PUT. Used for replacing a resource. */ + put?: + | string + | undefined; + /** Maps to HTTP POST. Used for creating a resource or performing an action. */ + post?: + | string + | undefined; + /** Maps to HTTP DELETE. Used for deleting a resource. */ + delete?: + | string + | undefined; + /** Maps to HTTP PATCH. Used for updating a resource. */ + patch?: + | string + | undefined; + /** + * The custom pattern is used for specifying an HTTP method that is not + * included in the `pattern` field, such as HEAD, or "*" to leave the + * HTTP method unspecified for this rule. The wild-card rule is useful + * for services that provide content to Web (HTML) clients. + */ + custom?: + | CustomHttpPattern + | undefined; + /** + * The name of the request field whose value is mapped to the HTTP request + * body, or `*` for mapping all request fields not captured by the path + * pattern to the HTTP body, or omitted for not having any HTTP request body. + * + * NOTE: the referred field must be present at the top-level of the request + * message type. + */ + body: string; + /** + * Optional. The name of the response field whose value is mapped to the HTTP + * response body. When omitted, the entire response message will be used + * as the HTTP response body. + * + * NOTE: The referred field must be present at the top-level of the response + * message type. + */ + responseBody: string; + /** + * Additional HTTP bindings for the selector. Nested bindings must + * not contain an `additional_bindings` field themselves (that is, + * the nesting may only be one level deep). + */ + additionalBindings: HttpRule[]; +} + +/** A custom pattern is used for defining custom HTTP verb. */ +export interface CustomHttpPattern { + /** The name of this custom HTTP verb. */ + kind: string; + /** The path matched by this custom verb. */ + path: string; +} + +function createBaseHttp(): Http { + return { rules: [], fullyDecodeReservedExpansion: false }; +} + +export const Http = { + encode(message: Http, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.rules) { + HttpRule.encode(v!, writer.uint32(10).fork()).ldelim(); + } + if (message.fullyDecodeReservedExpansion !== false) { + writer.uint32(16).bool(message.fullyDecodeReservedExpansion); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Http { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHttp(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.rules.push(HttpRule.decode(reader, reader.uint32())); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.fullyDecodeReservedExpansion = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Http { + return Http.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Http { + const message = createBaseHttp(); + message.rules = object.rules?.map((e) => HttpRule.fromPartial(e)) || []; + message.fullyDecodeReservedExpansion = object.fullyDecodeReservedExpansion ?? false; + return message; + }, +}; + +function createBaseHttpRule(): HttpRule { + return { + selector: "", + get: undefined, + put: undefined, + post: undefined, + delete: undefined, + patch: undefined, + custom: undefined, + body: "", + responseBody: "", + additionalBindings: [], + }; +} + +export const HttpRule = { + encode(message: HttpRule, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.selector !== "") { + writer.uint32(10).string(message.selector); + } + if (message.get !== undefined) { + writer.uint32(18).string(message.get); + } + if (message.put !== undefined) { + writer.uint32(26).string(message.put); + } + if (message.post !== undefined) { + writer.uint32(34).string(message.post); + } + if (message.delete !== undefined) { + writer.uint32(42).string(message.delete); + } + if (message.patch !== undefined) { + writer.uint32(50).string(message.patch); + } + if (message.custom !== undefined) { + CustomHttpPattern.encode(message.custom, writer.uint32(66).fork()).ldelim(); + } + if (message.body !== "") { + writer.uint32(58).string(message.body); + } + if (message.responseBody !== "") { + writer.uint32(98).string(message.responseBody); + } + for (const v of message.additionalBindings) { + HttpRule.encode(v!, writer.uint32(90).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): HttpRule { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHttpRule(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.selector = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.get = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.put = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.post = reader.string(); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.delete = reader.string(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.patch = reader.string(); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.custom = CustomHttpPattern.decode(reader, reader.uint32()); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.body = reader.string(); + continue; + case 12: + if (tag !== 98) { + break; + } + + message.responseBody = reader.string(); + continue; + case 11: + if (tag !== 90) { + break; + } + + message.additionalBindings.push(HttpRule.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): HttpRule { + return HttpRule.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): HttpRule { + const message = createBaseHttpRule(); + message.selector = object.selector ?? ""; + message.get = object.get ?? undefined; + message.put = object.put ?? undefined; + message.post = object.post ?? undefined; + message.delete = object.delete ?? undefined; + message.patch = object.patch ?? undefined; + message.custom = (object.custom !== undefined && object.custom !== null) + ? CustomHttpPattern.fromPartial(object.custom) + : undefined; + message.body = object.body ?? ""; + message.responseBody = object.responseBody ?? ""; + message.additionalBindings = object.additionalBindings?.map((e) => HttpRule.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseCustomHttpPattern(): CustomHttpPattern { + return { kind: "", path: "" }; +} + +export const CustomHttpPattern = { + encode(message: CustomHttpPattern, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.kind !== "") { + writer.uint32(10).string(message.kind); + } + if (message.path !== "") { + writer.uint32(18).string(message.path); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): CustomHttpPattern { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseCustomHttpPattern(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.kind = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.path = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): CustomHttpPattern { + return CustomHttpPattern.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): CustomHttpPattern { + const message = createBaseCustomHttpPattern(); + message.kind = object.kind ?? ""; + message.path = object.path ?? ""; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/api/httpbody.ts b/api/memos-proto-v0.22.1/gen/google/api/httpbody.ts new file mode 100644 index 0000000..530969e --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/httpbody.ts @@ -0,0 +1,142 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/httpbody.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; +import { Any } from "../protobuf/any"; + +export const protobufPackage = "google.api"; + +/** + * Message that represents an arbitrary HTTP body. It should only be used for + * payload formats that can't be represented as JSON, such as raw binary or + * an HTML page. + * + * This message can be used both in streaming and non-streaming API methods in + * the request as well as the response. + * + * It can be used as a top-level request field, which is convenient if one + * wants to extract parameters from either the URL or HTTP template into the + * request fields and also want access to the raw HTTP body. + * + * Example: + * + * message GetResourceRequest { + * // A unique request id. + * string request_id = 1; + * + * // The raw HTTP body is bound to this field. + * google.api.HttpBody http_body = 2; + * + * } + * + * service ResourceService { + * rpc GetResource(GetResourceRequest) + * returns (google.api.HttpBody); + * rpc UpdateResource(google.api.HttpBody) + * returns (google.protobuf.Empty); + * + * } + * + * Example with streaming methods: + * + * service CaldavService { + * rpc GetCalendar(stream google.api.HttpBody) + * returns (stream google.api.HttpBody); + * rpc UpdateCalendar(stream google.api.HttpBody) + * returns (stream google.api.HttpBody); + * + * } + * + * Use of this type only changes how the request and response bodies are + * handled, all other features will continue to work unchanged. + */ +export interface HttpBody { + /** The HTTP Content-Type header value specifying the content type of the body. */ + contentType: string; + /** The HTTP request/response body as raw binary. */ + data: Uint8Array; + /** + * Application specific response metadata. Must be set in the first response + * for streaming APIs. + */ + extensions: Any[]; +} + +function createBaseHttpBody(): HttpBody { + return { contentType: "", data: new Uint8Array(0), extensions: [] }; +} + +export const HttpBody = { + encode(message: HttpBody, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.contentType !== "") { + writer.uint32(10).string(message.contentType); + } + if (message.data.length !== 0) { + writer.uint32(18).bytes(message.data); + } + for (const v of message.extensions) { + Any.encode(v!, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): HttpBody { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseHttpBody(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.contentType = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.data = reader.bytes(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.extensions.push(Any.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): HttpBody { + return HttpBody.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): HttpBody { + const message = createBaseHttpBody(); + message.contentType = object.contentType ?? ""; + message.data = object.data ?? new Uint8Array(0); + message.extensions = object.extensions?.map((e) => Any.fromPartial(e)) || []; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts b/api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts new file mode 100644 index 0000000..8d70b3e --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts @@ -0,0 +1,121 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/api/launch_stage.proto + +/* eslint-disable */ + +export const protobufPackage = "google.api"; + +/** + * The launch stage as defined by [Google Cloud Platform + * Launch Stages](https://cloud.google.com/terms/launch-stages). + */ +export enum LaunchStage { + /** LAUNCH_STAGE_UNSPECIFIED - Do not use this default value. */ + LAUNCH_STAGE_UNSPECIFIED = "LAUNCH_STAGE_UNSPECIFIED", + /** UNIMPLEMENTED - The feature is not yet implemented. Users can not use it. */ + UNIMPLEMENTED = "UNIMPLEMENTED", + /** PRELAUNCH - Prelaunch features are hidden from users and are only visible internally. */ + PRELAUNCH = "PRELAUNCH", + /** + * EARLY_ACCESS - Early Access features are limited to a closed group of testers. To use + * these features, you must sign up in advance and sign a Trusted Tester + * agreement (which includes confidentiality provisions). These features may + * be unstable, changed in backward-incompatible ways, and are not + * guaranteed to be released. + */ + EARLY_ACCESS = "EARLY_ACCESS", + /** + * ALPHA - Alpha is a limited availability test for releases before they are cleared + * for widespread use. By Alpha, all significant design issues are resolved + * and we are in the process of verifying functionality. Alpha customers + * need to apply for access, agree to applicable terms, and have their + * projects allowlisted. Alpha releases don't have to be feature complete, + * no SLAs are provided, and there are no technical support obligations, but + * they will be far enough along that customers can actually use them in + * test environments or for limited-use tests -- just like they would in + * normal production cases. + */ + ALPHA = "ALPHA", + /** + * BETA - Beta is the point at which we are ready to open a release for any + * customer to use. There are no SLA or technical support obligations in a + * Beta release. Products will be complete from a feature perspective, but + * may have some open outstanding issues. Beta releases are suitable for + * limited production use cases. + */ + BETA = "BETA", + /** + * GA - GA features are open to all developers and are considered stable and + * fully qualified for production use. + */ + GA = "GA", + /** + * DEPRECATED - Deprecated features are scheduled to be shut down and removed. For more + * information, see the "Deprecation Policy" section of our [Terms of + * Service](https://cloud.google.com/terms/) + * and the [Google Cloud Platform Subject to the Deprecation + * Policy](https://cloud.google.com/terms/deprecation) documentation. + */ + DEPRECATED = "DEPRECATED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function launchStageFromJSON(object: any): LaunchStage { + switch (object) { + case 0: + case "LAUNCH_STAGE_UNSPECIFIED": + return LaunchStage.LAUNCH_STAGE_UNSPECIFIED; + case 6: + case "UNIMPLEMENTED": + return LaunchStage.UNIMPLEMENTED; + case 7: + case "PRELAUNCH": + return LaunchStage.PRELAUNCH; + case 1: + case "EARLY_ACCESS": + return LaunchStage.EARLY_ACCESS; + case 2: + case "ALPHA": + return LaunchStage.ALPHA; + case 3: + case "BETA": + return LaunchStage.BETA; + case 4: + case "GA": + return LaunchStage.GA; + case 5: + case "DEPRECATED": + return LaunchStage.DEPRECATED; + case -1: + case "UNRECOGNIZED": + default: + return LaunchStage.UNRECOGNIZED; + } +} + +export function launchStageToNumber(object: LaunchStage): number { + switch (object) { + case LaunchStage.LAUNCH_STAGE_UNSPECIFIED: + return 0; + case LaunchStage.UNIMPLEMENTED: + return 6; + case LaunchStage.PRELAUNCH: + return 7; + case LaunchStage.EARLY_ACCESS: + return 1; + case LaunchStage.ALPHA: + return 2; + case LaunchStage.BETA: + return 3; + case LaunchStage.GA: + return 4; + case LaunchStage.DEPRECATED: + return 5; + case LaunchStage.UNRECOGNIZED: + default: + return -1; + } +} diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/any.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/any.ts new file mode 100644 index 0000000..d4dbe52 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/any.ts @@ -0,0 +1,197 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/any.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** + * `Any` contains an arbitrary serialized protocol buffer message along with a + * URL that describes the type of the serialized message. + * + * Protobuf library provides support to pack/unpack Any values in the form + * of utility functions or additional generated methods of the Any type. + * + * Example 1: Pack and unpack a message in C++. + * + * Foo foo = ...; + * Any any; + * any.PackFrom(foo); + * ... + * if (any.UnpackTo(&foo)) { + * ... + * } + * + * Example 2: Pack and unpack a message in Java. + * + * Foo foo = ...; + * Any any = Any.pack(foo); + * ... + * if (any.is(Foo.class)) { + * foo = any.unpack(Foo.class); + * } + * // or ... + * if (any.isSameTypeAs(Foo.getDefaultInstance())) { + * foo = any.unpack(Foo.getDefaultInstance()); + * } + * + * Example 3: Pack and unpack a message in Python. + * + * foo = Foo(...) + * any = Any() + * any.Pack(foo) + * ... + * if any.Is(Foo.DESCRIPTOR): + * any.Unpack(foo) + * ... + * + * Example 4: Pack and unpack a message in Go + * + * foo := &pb.Foo{...} + * any, err := anypb.New(foo) + * if err != nil { + * ... + * } + * ... + * foo := &pb.Foo{} + * if err := any.UnmarshalTo(foo); err != nil { + * ... + * } + * + * The pack methods provided by protobuf library will by default use + * 'type.googleapis.com/full.type.name' as the type URL and the unpack + * methods only use the fully qualified type name after the last '/' + * in the type URL, for example "foo.bar.com/x/y.z" will yield type + * name "y.z". + * + * JSON + * ==== + * The JSON representation of an `Any` value uses the regular + * representation of the deserialized, embedded message, with an + * additional field `@type` which contains the type URL. Example: + * + * package google.profile; + * message Person { + * string first_name = 1; + * string last_name = 2; + * } + * + * { + * "@type": "type.googleapis.com/google.profile.Person", + * "firstName": , + * "lastName": + * } + * + * If the embedded message type is well-known and has a custom JSON + * representation, that representation will be embedded adding a field + * `value` which holds the custom JSON in addition to the `@type` + * field. Example (for message [google.protobuf.Duration][]): + * + * { + * "@type": "type.googleapis.com/google.protobuf.Duration", + * "value": "1.212s" + * } + */ +export interface Any { + /** + * A URL/resource name that uniquely identifies the type of the serialized + * protocol buffer message. This string must contain at least + * one "/" character. The last segment of the URL's path must represent + * the fully qualified name of the type (as in + * `path/google.protobuf.Duration`). The name should be in a canonical form + * (e.g., leading "." is not accepted). + * + * In practice, teams usually precompile into the binary all types that they + * expect it to use in the context of Any. However, for URLs which use the + * scheme `http`, `https`, or no scheme, one can optionally set up a type + * server that maps type URLs to message definitions as follows: + * + * * If no scheme is provided, `https` is assumed. + * * An HTTP GET on the URL must yield a [google.protobuf.Type][] + * value in binary format, or produce an error. + * * Applications are allowed to cache lookup results based on the + * URL, or have them precompiled into a binary to avoid any + * lookup. Therefore, binary compatibility needs to be preserved + * on changes to types. (Use versioned type names to manage + * breaking changes.) + * + * Note: this functionality is not currently available in the official + * protobuf release, and it is not used for type URLs beginning with + * type.googleapis.com. As of May 2023, there are no widely used type server + * implementations and no plans to implement one. + * + * Schemes other than `http`, `https` (or the empty scheme) might be + * used with implementation specific semantics. + */ + typeUrl: string; + /** Must be a valid serialized protocol buffer of the above specified type. */ + value: Uint8Array; +} + +function createBaseAny(): Any { + return { typeUrl: "", value: new Uint8Array(0) }; +} + +export const Any = { + encode(message: Any, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.typeUrl !== "") { + writer.uint32(10).string(message.typeUrl); + } + if (message.value.length !== 0) { + writer.uint32(18).bytes(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Any { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseAny(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.typeUrl = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value = reader.bytes(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Any { + return Any.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Any { + const message = createBaseAny(); + message.typeUrl = object.typeUrl ?? ""; + message.value = object.value ?? new Uint8Array(0); + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts new file mode 100644 index 0000000..e615bb9 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts @@ -0,0 +1,5322 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/descriptor.proto + +/* eslint-disable */ +import Long from "long"; +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** The full set of known editions. */ +export enum Edition { + /** EDITION_UNKNOWN - A placeholder for an unknown edition value. */ + EDITION_UNKNOWN = "EDITION_UNKNOWN", + /** + * EDITION_LEGACY - A placeholder edition for specifying default behaviors *before* a feature + * was first introduced. This is effectively an "infinite past". + */ + EDITION_LEGACY = "EDITION_LEGACY", + /** + * EDITION_PROTO2 - Legacy syntax "editions". These pre-date editions, but behave much like + * distinct editions. These can't be used to specify the edition of proto + * files, but feature definitions must supply proto2/proto3 defaults for + * backwards compatibility. + */ + EDITION_PROTO2 = "EDITION_PROTO2", + EDITION_PROTO3 = "EDITION_PROTO3", + /** + * EDITION_2023 - Editions that have been released. The specific values are arbitrary and + * should not be depended on, but they will always be time-ordered for easy + * comparison. + */ + EDITION_2023 = "EDITION_2023", + EDITION_2024 = "EDITION_2024", + /** + * EDITION_1_TEST_ONLY - Placeholder editions for testing feature resolution. These should not be + * used or relyed on outside of tests. + */ + EDITION_1_TEST_ONLY = "EDITION_1_TEST_ONLY", + EDITION_2_TEST_ONLY = "EDITION_2_TEST_ONLY", + EDITION_99997_TEST_ONLY = "EDITION_99997_TEST_ONLY", + EDITION_99998_TEST_ONLY = "EDITION_99998_TEST_ONLY", + EDITION_99999_TEST_ONLY = "EDITION_99999_TEST_ONLY", + /** + * EDITION_MAX - Placeholder for specifying unbounded edition support. This should only + * ever be used by plugins that can expect to never require any changes to + * support a new edition. + */ + EDITION_MAX = "EDITION_MAX", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function editionFromJSON(object: any): Edition { + switch (object) { + case 0: + case "EDITION_UNKNOWN": + return Edition.EDITION_UNKNOWN; + case 900: + case "EDITION_LEGACY": + return Edition.EDITION_LEGACY; + case 998: + case "EDITION_PROTO2": + return Edition.EDITION_PROTO2; + case 999: + case "EDITION_PROTO3": + return Edition.EDITION_PROTO3; + case 1000: + case "EDITION_2023": + return Edition.EDITION_2023; + case 1001: + case "EDITION_2024": + return Edition.EDITION_2024; + case 1: + case "EDITION_1_TEST_ONLY": + return Edition.EDITION_1_TEST_ONLY; + case 2: + case "EDITION_2_TEST_ONLY": + return Edition.EDITION_2_TEST_ONLY; + case 99997: + case "EDITION_99997_TEST_ONLY": + return Edition.EDITION_99997_TEST_ONLY; + case 99998: + case "EDITION_99998_TEST_ONLY": + return Edition.EDITION_99998_TEST_ONLY; + case 99999: + case "EDITION_99999_TEST_ONLY": + return Edition.EDITION_99999_TEST_ONLY; + case 2147483647: + case "EDITION_MAX": + return Edition.EDITION_MAX; + case -1: + case "UNRECOGNIZED": + default: + return Edition.UNRECOGNIZED; + } +} + +export function editionToNumber(object: Edition): number { + switch (object) { + case Edition.EDITION_UNKNOWN: + return 0; + case Edition.EDITION_LEGACY: + return 900; + case Edition.EDITION_PROTO2: + return 998; + case Edition.EDITION_PROTO3: + return 999; + case Edition.EDITION_2023: + return 1000; + case Edition.EDITION_2024: + return 1001; + case Edition.EDITION_1_TEST_ONLY: + return 1; + case Edition.EDITION_2_TEST_ONLY: + return 2; + case Edition.EDITION_99997_TEST_ONLY: + return 99997; + case Edition.EDITION_99998_TEST_ONLY: + return 99998; + case Edition.EDITION_99999_TEST_ONLY: + return 99999; + case Edition.EDITION_MAX: + return 2147483647; + case Edition.UNRECOGNIZED: + default: + return -1; + } +} + +/** + * The protocol compiler can output a FileDescriptorSet containing the .proto + * files it parses. + */ +export interface FileDescriptorSet { + file: FileDescriptorProto[]; +} + +/** Describes a complete .proto file. */ +export interface FileDescriptorProto { + /** file name, relative to root of source tree */ + name?: + | string + | undefined; + /** e.g. "foo", "foo.bar", etc. */ + package?: + | string + | undefined; + /** Names of files imported by this file. */ + dependency: string[]; + /** Indexes of the public imported files in the dependency list above. */ + publicDependency: number[]; + /** + * Indexes of the weak imported files in the dependency list. + * For Google-internal migration only. Do not use. + */ + weakDependency: number[]; + /** All top-level definitions in this file. */ + messageType: DescriptorProto[]; + enumType: EnumDescriptorProto[]; + service: ServiceDescriptorProto[]; + extension: FieldDescriptorProto[]; + options?: + | FileOptions + | undefined; + /** + * This field contains optional information about the original source code. + * You may safely remove this entire field without harming runtime + * functionality of the descriptors -- the information is needed only by + * development tools. + */ + sourceCodeInfo?: + | SourceCodeInfo + | undefined; + /** + * The syntax of the proto file. + * The supported values are "proto2", "proto3", and "editions". + * + * If `edition` is present, this value must be "editions". + */ + syntax?: + | string + | undefined; + /** The edition of the proto file. */ + edition?: Edition | undefined; +} + +/** Describes a message type. */ +export interface DescriptorProto { + name?: string | undefined; + field: FieldDescriptorProto[]; + extension: FieldDescriptorProto[]; + nestedType: DescriptorProto[]; + enumType: EnumDescriptorProto[]; + extensionRange: DescriptorProto_ExtensionRange[]; + oneofDecl: OneofDescriptorProto[]; + options?: MessageOptions | undefined; + reservedRange: DescriptorProto_ReservedRange[]; + /** + * Reserved field names, which may not be used by fields in the same message. + * A given name may only be reserved once. + */ + reservedName: string[]; +} + +export interface DescriptorProto_ExtensionRange { + /** Inclusive. */ + start?: + | number + | undefined; + /** Exclusive. */ + end?: number | undefined; + options?: ExtensionRangeOptions | undefined; +} + +/** + * Range of reserved tag numbers. Reserved tag numbers may not be used by + * fields or extension ranges in the same message. Reserved ranges may + * not overlap. + */ +export interface DescriptorProto_ReservedRange { + /** Inclusive. */ + start?: + | number + | undefined; + /** Exclusive. */ + end?: number | undefined; +} + +export interface ExtensionRangeOptions { + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; + /** + * For external users: DO NOT USE. We are in the process of open sourcing + * extension declaration and executing internal cleanups before it can be + * used externally. + */ + declaration: ExtensionRangeOptions_Declaration[]; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** + * The verification state of the range. + * TODO: flip the default to DECLARATION once all empty ranges + * are marked as UNVERIFIED. + */ + verification?: ExtensionRangeOptions_VerificationState | undefined; +} + +/** The verification state of the extension range. */ +export enum ExtensionRangeOptions_VerificationState { + /** DECLARATION - All the extensions of the range must be declared. */ + DECLARATION = "DECLARATION", + UNVERIFIED = "UNVERIFIED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function extensionRangeOptions_VerificationStateFromJSON(object: any): ExtensionRangeOptions_VerificationState { + switch (object) { + case 0: + case "DECLARATION": + return ExtensionRangeOptions_VerificationState.DECLARATION; + case 1: + case "UNVERIFIED": + return ExtensionRangeOptions_VerificationState.UNVERIFIED; + case -1: + case "UNRECOGNIZED": + default: + return ExtensionRangeOptions_VerificationState.UNRECOGNIZED; + } +} + +export function extensionRangeOptions_VerificationStateToNumber( + object: ExtensionRangeOptions_VerificationState, +): number { + switch (object) { + case ExtensionRangeOptions_VerificationState.DECLARATION: + return 0; + case ExtensionRangeOptions_VerificationState.UNVERIFIED: + return 1; + case ExtensionRangeOptions_VerificationState.UNRECOGNIZED: + default: + return -1; + } +} + +export interface ExtensionRangeOptions_Declaration { + /** The extension number declared within the extension range. */ + number?: + | number + | undefined; + /** + * The fully-qualified name of the extension field. There must be a leading + * dot in front of the full name. + */ + fullName?: + | string + | undefined; + /** + * The fully-qualified type name of the extension field. Unlike + * Metadata.type, Declaration.type must have a leading dot for messages + * and enums. + */ + type?: + | string + | undefined; + /** + * If true, indicates that the number is reserved in the extension range, + * and any extension field with the number will fail to compile. Set this + * when a declared extension field is deleted. + */ + reserved?: + | boolean + | undefined; + /** + * If true, indicates that the extension must be defined as repeated. + * Otherwise the extension must be defined as optional. + */ + repeated?: boolean | undefined; +} + +/** Describes a field within a message. */ +export interface FieldDescriptorProto { + name?: string | undefined; + number?: number | undefined; + label?: + | FieldDescriptorProto_Label + | undefined; + /** + * If type_name is set, this need not be set. If both this and type_name + * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + */ + type?: + | FieldDescriptorProto_Type + | undefined; + /** + * For message and enum types, this is the name of the type. If the name + * starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + * rules are used to find the type (i.e. first the nested types within this + * message are searched, then within the parent, on up to the root + * namespace). + */ + typeName?: + | string + | undefined; + /** + * For extensions, this is the name of the type being extended. It is + * resolved in the same manner as type_name. + */ + extendee?: + | string + | undefined; + /** + * For numeric types, contains the original text representation of the value. + * For booleans, "true" or "false". + * For strings, contains the default text contents (not escaped in any way). + * For bytes, contains the C escaped value. All bytes >= 128 are escaped. + */ + defaultValue?: + | string + | undefined; + /** + * If set, gives the index of a oneof in the containing type's oneof_decl + * list. This field is a member of that oneof. + */ + oneofIndex?: + | number + | undefined; + /** + * JSON name of this field. The value is set by protocol compiler. If the + * user has set a "json_name" option on this field, that option's value + * will be used. Otherwise, it's deduced from the field's name by converting + * it to camelCase. + */ + jsonName?: string | undefined; + options?: + | FieldOptions + | undefined; + /** + * If true, this is a proto3 "optional". When a proto3 field is optional, it + * tracks presence regardless of field type. + * + * When proto3_optional is true, this field must belong to a oneof to signal + * to old proto3 clients that presence is tracked for this field. This oneof + * is known as a "synthetic" oneof, and this field must be its sole member + * (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs + * exist in the descriptor only, and do not generate any API. Synthetic oneofs + * must be ordered after all "real" oneofs. + * + * For message fields, proto3_optional doesn't create any semantic change, + * since non-repeated message fields always track presence. However it still + * indicates the semantic detail of whether the user wrote "optional" or not. + * This can be useful for round-tripping the .proto file. For consistency we + * give message fields a synthetic oneof also, even though it is not required + * to track presence. This is especially important because the parser can't + * tell if a field is a message or an enum, so it must always create a + * synthetic oneof. + * + * Proto2 optional fields do not set this flag, because they already indicate + * optional with `LABEL_OPTIONAL`. + */ + proto3Optional?: boolean | undefined; +} + +export enum FieldDescriptorProto_Type { + /** + * TYPE_DOUBLE - 0 is reserved for errors. + * Order is weird for historical reasons. + */ + TYPE_DOUBLE = "TYPE_DOUBLE", + TYPE_FLOAT = "TYPE_FLOAT", + /** + * TYPE_INT64 - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + * negative values are likely. + */ + TYPE_INT64 = "TYPE_INT64", + TYPE_UINT64 = "TYPE_UINT64", + /** + * TYPE_INT32 - Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + * negative values are likely. + */ + TYPE_INT32 = "TYPE_INT32", + TYPE_FIXED64 = "TYPE_FIXED64", + TYPE_FIXED32 = "TYPE_FIXED32", + TYPE_BOOL = "TYPE_BOOL", + TYPE_STRING = "TYPE_STRING", + /** + * TYPE_GROUP - Tag-delimited aggregate. + * Group type is deprecated and not supported after google.protobuf. However, Proto3 + * implementations should still be able to parse the group wire format and + * treat group fields as unknown fields. In Editions, the group wire format + * can be enabled via the `message_encoding` feature. + */ + TYPE_GROUP = "TYPE_GROUP", + /** TYPE_MESSAGE - Length-delimited aggregate. */ + TYPE_MESSAGE = "TYPE_MESSAGE", + /** TYPE_BYTES - New in version 2. */ + TYPE_BYTES = "TYPE_BYTES", + TYPE_UINT32 = "TYPE_UINT32", + TYPE_ENUM = "TYPE_ENUM", + TYPE_SFIXED32 = "TYPE_SFIXED32", + TYPE_SFIXED64 = "TYPE_SFIXED64", + /** TYPE_SINT32 - Uses ZigZag encoding. */ + TYPE_SINT32 = "TYPE_SINT32", + /** TYPE_SINT64 - Uses ZigZag encoding. */ + TYPE_SINT64 = "TYPE_SINT64", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldDescriptorProto_TypeFromJSON(object: any): FieldDescriptorProto_Type { + switch (object) { + case 1: + case "TYPE_DOUBLE": + return FieldDescriptorProto_Type.TYPE_DOUBLE; + case 2: + case "TYPE_FLOAT": + return FieldDescriptorProto_Type.TYPE_FLOAT; + case 3: + case "TYPE_INT64": + return FieldDescriptorProto_Type.TYPE_INT64; + case 4: + case "TYPE_UINT64": + return FieldDescriptorProto_Type.TYPE_UINT64; + case 5: + case "TYPE_INT32": + return FieldDescriptorProto_Type.TYPE_INT32; + case 6: + case "TYPE_FIXED64": + return FieldDescriptorProto_Type.TYPE_FIXED64; + case 7: + case "TYPE_FIXED32": + return FieldDescriptorProto_Type.TYPE_FIXED32; + case 8: + case "TYPE_BOOL": + return FieldDescriptorProto_Type.TYPE_BOOL; + case 9: + case "TYPE_STRING": + return FieldDescriptorProto_Type.TYPE_STRING; + case 10: + case "TYPE_GROUP": + return FieldDescriptorProto_Type.TYPE_GROUP; + case 11: + case "TYPE_MESSAGE": + return FieldDescriptorProto_Type.TYPE_MESSAGE; + case 12: + case "TYPE_BYTES": + return FieldDescriptorProto_Type.TYPE_BYTES; + case 13: + case "TYPE_UINT32": + return FieldDescriptorProto_Type.TYPE_UINT32; + case 14: + case "TYPE_ENUM": + return FieldDescriptorProto_Type.TYPE_ENUM; + case 15: + case "TYPE_SFIXED32": + return FieldDescriptorProto_Type.TYPE_SFIXED32; + case 16: + case "TYPE_SFIXED64": + return FieldDescriptorProto_Type.TYPE_SFIXED64; + case 17: + case "TYPE_SINT32": + return FieldDescriptorProto_Type.TYPE_SINT32; + case 18: + case "TYPE_SINT64": + return FieldDescriptorProto_Type.TYPE_SINT64; + case -1: + case "UNRECOGNIZED": + default: + return FieldDescriptorProto_Type.UNRECOGNIZED; + } +} + +export function fieldDescriptorProto_TypeToNumber(object: FieldDescriptorProto_Type): number { + switch (object) { + case FieldDescriptorProto_Type.TYPE_DOUBLE: + return 1; + case FieldDescriptorProto_Type.TYPE_FLOAT: + return 2; + case FieldDescriptorProto_Type.TYPE_INT64: + return 3; + case FieldDescriptorProto_Type.TYPE_UINT64: + return 4; + case FieldDescriptorProto_Type.TYPE_INT32: + return 5; + case FieldDescriptorProto_Type.TYPE_FIXED64: + return 6; + case FieldDescriptorProto_Type.TYPE_FIXED32: + return 7; + case FieldDescriptorProto_Type.TYPE_BOOL: + return 8; + case FieldDescriptorProto_Type.TYPE_STRING: + return 9; + case FieldDescriptorProto_Type.TYPE_GROUP: + return 10; + case FieldDescriptorProto_Type.TYPE_MESSAGE: + return 11; + case FieldDescriptorProto_Type.TYPE_BYTES: + return 12; + case FieldDescriptorProto_Type.TYPE_UINT32: + return 13; + case FieldDescriptorProto_Type.TYPE_ENUM: + return 14; + case FieldDescriptorProto_Type.TYPE_SFIXED32: + return 15; + case FieldDescriptorProto_Type.TYPE_SFIXED64: + return 16; + case FieldDescriptorProto_Type.TYPE_SINT32: + return 17; + case FieldDescriptorProto_Type.TYPE_SINT64: + return 18; + case FieldDescriptorProto_Type.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FieldDescriptorProto_Label { + /** LABEL_OPTIONAL - 0 is reserved for errors */ + LABEL_OPTIONAL = "LABEL_OPTIONAL", + LABEL_REPEATED = "LABEL_REPEATED", + /** + * LABEL_REQUIRED - The required label is only allowed in google.protobuf. In proto3 and Editions + * it's explicitly prohibited. In Editions, the `field_presence` feature + * can be used to get this behavior. + */ + LABEL_REQUIRED = "LABEL_REQUIRED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldDescriptorProto_LabelFromJSON(object: any): FieldDescriptorProto_Label { + switch (object) { + case 1: + case "LABEL_OPTIONAL": + return FieldDescriptorProto_Label.LABEL_OPTIONAL; + case 3: + case "LABEL_REPEATED": + return FieldDescriptorProto_Label.LABEL_REPEATED; + case 2: + case "LABEL_REQUIRED": + return FieldDescriptorProto_Label.LABEL_REQUIRED; + case -1: + case "UNRECOGNIZED": + default: + return FieldDescriptorProto_Label.UNRECOGNIZED; + } +} + +export function fieldDescriptorProto_LabelToNumber(object: FieldDescriptorProto_Label): number { + switch (object) { + case FieldDescriptorProto_Label.LABEL_OPTIONAL: + return 1; + case FieldDescriptorProto_Label.LABEL_REPEATED: + return 3; + case FieldDescriptorProto_Label.LABEL_REQUIRED: + return 2; + case FieldDescriptorProto_Label.UNRECOGNIZED: + default: + return -1; + } +} + +/** Describes a oneof. */ +export interface OneofDescriptorProto { + name?: string | undefined; + options?: OneofOptions | undefined; +} + +/** Describes an enum type. */ +export interface EnumDescriptorProto { + name?: string | undefined; + value: EnumValueDescriptorProto[]; + options?: + | EnumOptions + | undefined; + /** + * Range of reserved numeric values. Reserved numeric values may not be used + * by enum values in the same enum declaration. Reserved ranges may not + * overlap. + */ + reservedRange: EnumDescriptorProto_EnumReservedRange[]; + /** + * Reserved enum value names, which may not be reused. A given name may only + * be reserved once. + */ + reservedName: string[]; +} + +/** + * Range of reserved numeric values. Reserved values may not be used by + * entries in the same enum. Reserved ranges may not overlap. + * + * Note that this is distinct from DescriptorProto.ReservedRange in that it + * is inclusive such that it can appropriately represent the entire int32 + * domain. + */ +export interface EnumDescriptorProto_EnumReservedRange { + /** Inclusive. */ + start?: + | number + | undefined; + /** Inclusive. */ + end?: number | undefined; +} + +/** Describes a value within an enum. */ +export interface EnumValueDescriptorProto { + name?: string | undefined; + number?: number | undefined; + options?: EnumValueOptions | undefined; +} + +/** Describes a service. */ +export interface ServiceDescriptorProto { + name?: string | undefined; + method: MethodDescriptorProto[]; + options?: ServiceOptions | undefined; +} + +/** Describes a method of a service. */ +export interface MethodDescriptorProto { + name?: + | string + | undefined; + /** + * Input and output type names. These are resolved in the same way as + * FieldDescriptorProto.type_name, but must refer to a message type. + */ + inputType?: string | undefined; + outputType?: string | undefined; + options?: + | MethodOptions + | undefined; + /** Identifies if client streams multiple client messages */ + clientStreaming?: + | boolean + | undefined; + /** Identifies if server streams multiple server messages */ + serverStreaming?: boolean | undefined; +} + +export interface FileOptions { + /** + * Sets the Java package where classes generated from this .proto will be + * placed. By default, the proto package is used, but this is often + * inappropriate because proto packages do not normally start with backwards + * domain names. + */ + javaPackage?: + | string + | undefined; + /** + * Controls the name of the wrapper Java class generated for the .proto file. + * That class will always contain the .proto file's getDescriptor() method as + * well as any top-level extensions defined in the .proto file. + * If java_multiple_files is disabled, then all the other classes from the + * .proto file will be nested inside the single wrapper outer class. + */ + javaOuterClassname?: + | string + | undefined; + /** + * If enabled, then the Java code generator will generate a separate .java + * file for each top-level message, enum, and service defined in the .proto + * file. Thus, these types will *not* be nested inside the wrapper class + * named by java_outer_classname. However, the wrapper class will still be + * generated to contain the file's getDescriptor() method as well as any + * top-level extensions defined in the file. + */ + javaMultipleFiles?: + | boolean + | undefined; + /** + * This option does nothing. + * + * @deprecated + */ + javaGenerateEqualsAndHash?: + | boolean + | undefined; + /** + * A proto2 file can set this to true to opt in to UTF-8 checking for Java, + * which will throw an exception if invalid UTF-8 is parsed from the wire or + * assigned to a string field. + * + * TODO: clarify exactly what kinds of field types this option + * applies to, and update these docs accordingly. + * + * Proto3 files already perform these checks. Setting the option explicitly to + * false has no effect: it cannot be used to opt proto3 files out of UTF-8 + * checks. + */ + javaStringCheckUtf8?: boolean | undefined; + optimizeFor?: + | FileOptions_OptimizeMode + | undefined; + /** + * Sets the Go package where structs generated from this .proto will be + * placed. If omitted, the Go package will be derived from the following: + * - The basename of the package import path, if provided. + * - Otherwise, the package statement in the .proto file, if present. + * - Otherwise, the basename of the .proto file, without extension. + */ + goPackage?: + | string + | undefined; + /** + * Should generic services be generated in each language? "Generic" services + * are not specific to any particular RPC system. They are generated by the + * main code generators in each language (without additional plugins). + * Generic services were the only kind of service generation supported by + * early versions of google.protobuf. + * + * Generic services are now considered deprecated in favor of using plugins + * that generate code specific to your particular RPC system. Therefore, + * these default to false. Old code which depends on generic services should + * explicitly set them to true. + */ + ccGenericServices?: boolean | undefined; + javaGenericServices?: boolean | undefined; + pyGenericServices?: + | boolean + | undefined; + /** + * Is this file deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for everything in the file, or it will be completely ignored; in the very + * least, this is a formalization for deprecating files. + */ + deprecated?: + | boolean + | undefined; + /** + * Enables the use of arenas for the proto messages in this file. This applies + * only to generated classes for C++. + */ + ccEnableArenas?: + | boolean + | undefined; + /** + * Sets the objective c class prefix which is prepended to all objective c + * generated classes from this .proto. There is no default. + */ + objcClassPrefix?: + | string + | undefined; + /** Namespace for generated classes; defaults to the package. */ + csharpNamespace?: + | string + | undefined; + /** + * By default Swift generators will take the proto package and CamelCase it + * replacing '.' with underscore and use that to prefix the types/symbols + * defined. When this options is provided, they will use this value instead + * to prefix the types/symbols defined. + */ + swiftPrefix?: + | string + | undefined; + /** + * Sets the php class prefix which is prepended to all php generated classes + * from this .proto. Default is empty. + */ + phpClassPrefix?: + | string + | undefined; + /** + * Use this option to change the namespace of php generated classes. Default + * is empty. When this option is empty, the package name will be used for + * determining the namespace. + */ + phpNamespace?: + | string + | undefined; + /** + * Use this option to change the namespace of php generated metadata classes. + * Default is empty. When this option is empty, the proto file name will be + * used for determining the namespace. + */ + phpMetadataNamespace?: + | string + | undefined; + /** + * Use this option to change the package of ruby generated classes. Default + * is empty. When this option is not set, the package name will be used for + * determining the ruby package. + */ + rubyPackage?: + | string + | undefined; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** + * The parser stores options it doesn't recognize here. + * See the documentation for the "Options" section above. + */ + uninterpretedOption: UninterpretedOption[]; +} + +/** Generated classes can be optimized for speed or code size. */ +export enum FileOptions_OptimizeMode { + /** SPEED - Generate complete code for parsing, serialization, */ + SPEED = "SPEED", + /** CODE_SIZE - etc. */ + CODE_SIZE = "CODE_SIZE", + /** LITE_RUNTIME - Generate code using MessageLite and the lite runtime. */ + LITE_RUNTIME = "LITE_RUNTIME", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fileOptions_OptimizeModeFromJSON(object: any): FileOptions_OptimizeMode { + switch (object) { + case 1: + case "SPEED": + return FileOptions_OptimizeMode.SPEED; + case 2: + case "CODE_SIZE": + return FileOptions_OptimizeMode.CODE_SIZE; + case 3: + case "LITE_RUNTIME": + return FileOptions_OptimizeMode.LITE_RUNTIME; + case -1: + case "UNRECOGNIZED": + default: + return FileOptions_OptimizeMode.UNRECOGNIZED; + } +} + +export function fileOptions_OptimizeModeToNumber(object: FileOptions_OptimizeMode): number { + switch (object) { + case FileOptions_OptimizeMode.SPEED: + return 1; + case FileOptions_OptimizeMode.CODE_SIZE: + return 2; + case FileOptions_OptimizeMode.LITE_RUNTIME: + return 3; + case FileOptions_OptimizeMode.UNRECOGNIZED: + default: + return -1; + } +} + +export interface MessageOptions { + /** + * Set true to use the old proto1 MessageSet wire format for extensions. + * This is provided for backwards-compatibility with the MessageSet wire + * format. You should not use this for any other reason: It's less + * efficient, has fewer features, and is more complicated. + * + * The message must be defined exactly as follows: + * message Foo { + * option message_set_wire_format = true; + * extensions 4 to max; + * } + * Note that the message cannot have any defined fields; MessageSets only + * have extensions. + * + * All extensions of your type must be singular messages; e.g. they cannot + * be int32s, enums, or repeated messages. + * + * Because this is an option, the above two restrictions are not enforced by + * the protocol compiler. + */ + messageSetWireFormat?: + | boolean + | undefined; + /** + * Disables the generation of the standard "descriptor()" accessor, which can + * conflict with a field of the same name. This is meant to make migration + * from proto1 easier; new code should avoid fields named "descriptor". + */ + noStandardDescriptorAccessor?: + | boolean + | undefined; + /** + * Is this message deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for the message, or it will be completely ignored; in the very least, + * this is a formalization for deprecating messages. + */ + deprecated?: + | boolean + | undefined; + /** + * Whether the message is an automatically generated map entry type for the + * maps field. + * + * For maps fields: + * map map_field = 1; + * The parsed descriptor looks like: + * message MapFieldEntry { + * option map_entry = true; + * optional KeyType key = 1; + * optional ValueType value = 2; + * } + * repeated MapFieldEntry map_field = 1; + * + * Implementations may choose not to generate the map_entry=true message, but + * use a native map in the target language to hold the keys and values. + * The reflection APIs in such implementations still need to work as + * if the field is a repeated message field. + * + * NOTE: Do not set the option in .proto files. Always use the maps syntax + * instead. The option should only be implicitly set by the proto compiler + * parser. + */ + mapEntry?: + | boolean + | undefined; + /** + * Enable the legacy handling of JSON field name conflicts. This lowercases + * and strips underscored from the fields before comparison in proto3 only. + * The new behavior takes `json_name` into account and applies to proto2 as + * well. + * + * This should only be used as a temporary measure against broken builds due + * to the change in behavior for JSON field name conflicts. + * + * TODO This is legacy behavior we plan to remove once downstream + * teams have had time to migrate. + * + * @deprecated + */ + deprecatedLegacyJsonFieldConflicts?: + | boolean + | undefined; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export interface FieldOptions { + /** + * The ctype option instructs the C++ code generator to use a different + * representation of the field than it normally would. See the specific + * options below. This option is only implemented to support use of + * [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of + * type "bytes" in the open source release -- sorry, we'll try to include + * other types in a future version! + */ + ctype?: + | FieldOptions_CType + | undefined; + /** + * The packed option can be enabled for repeated primitive fields to enable + * a more efficient representation on the wire. Rather than repeatedly + * writing the tag and type for each element, the entire array is encoded as + * a single length-delimited blob. In proto3, only explicit setting it to + * false will avoid using packed encoding. This option is prohibited in + * Editions, but the `repeated_field_encoding` feature can be used to control + * the behavior. + */ + packed?: + | boolean + | undefined; + /** + * The jstype option determines the JavaScript type used for values of the + * field. The option is permitted only for 64 bit integral and fixed types + * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + * is represented as JavaScript string, which avoids loss of precision that + * can happen when a large value is converted to a floating point JavaScript. + * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + * use the JavaScript "number" type. The behavior of the default option + * JS_NORMAL is implementation dependent. + * + * This option is an enum to permit additional types to be added, e.g. + * goog.math.Integer. + */ + jstype?: + | FieldOptions_JSType + | undefined; + /** + * Should this field be parsed lazily? Lazy applies only to message-type + * fields. It means that when the outer message is initially parsed, the + * inner message's contents will not be parsed but instead stored in encoded + * form. The inner message will actually be parsed when it is first accessed. + * + * This is only a hint. Implementations are free to choose whether to use + * eager or lazy parsing regardless of the value of this option. However, + * setting this option true suggests that the protocol author believes that + * using lazy parsing on this field is worth the additional bookkeeping + * overhead typically needed to implement it. + * + * This option does not affect the public interface of any generated code; + * all method signatures remain the same. Furthermore, thread-safety of the + * interface is not affected by this option; const methods remain safe to + * call from multiple threads concurrently, while non-const methods continue + * to require exclusive access. + * + * Note that lazy message fields are still eagerly verified to check + * ill-formed wireformat or missing required fields. Calling IsInitialized() + * on the outer message would fail if the inner message has missing required + * fields. Failed verification would result in parsing failure (except when + * uninitialized messages are acceptable). + */ + lazy?: + | boolean + | undefined; + /** + * unverified_lazy does no correctness checks on the byte stream. This should + * only be used where lazy with verification is prohibitive for performance + * reasons. + */ + unverifiedLazy?: + | boolean + | undefined; + /** + * Is this field deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for accessors, or it will be completely ignored; in the very least, this + * is a formalization for deprecating fields. + */ + deprecated?: + | boolean + | undefined; + /** For Google-internal migration only. Do not use. */ + weak?: + | boolean + | undefined; + /** + * Indicate that the field value should not be printed out when using debug + * formats, e.g. when the field contains sensitive credentials. + */ + debugRedact?: boolean | undefined; + retention?: FieldOptions_OptionRetention | undefined; + targets: FieldOptions_OptionTargetType[]; + editionDefaults: FieldOptions_EditionDefault[]; + /** Any features defined in the specific edition. */ + features?: FeatureSet | undefined; + featureSupport?: + | FieldOptions_FeatureSupport + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export enum FieldOptions_CType { + /** STRING - Default mode. */ + STRING = "STRING", + /** + * CORD - The option [ctype=CORD] may be applied to a non-repeated field of type + * "bytes". It indicates that in C++, the data should be stored in a Cord + * instead of a string. For very large strings, this may reduce memory + * fragmentation. It may also allow better performance when parsing from a + * Cord, or when parsing with aliasing enabled, as the parsed Cord may then + * alias the original buffer. + */ + CORD = "CORD", + STRING_PIECE = "STRING_PIECE", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldOptions_CTypeFromJSON(object: any): FieldOptions_CType { + switch (object) { + case 0: + case "STRING": + return FieldOptions_CType.STRING; + case 1: + case "CORD": + return FieldOptions_CType.CORD; + case 2: + case "STRING_PIECE": + return FieldOptions_CType.STRING_PIECE; + case -1: + case "UNRECOGNIZED": + default: + return FieldOptions_CType.UNRECOGNIZED; + } +} + +export function fieldOptions_CTypeToNumber(object: FieldOptions_CType): number { + switch (object) { + case FieldOptions_CType.STRING: + return 0; + case FieldOptions_CType.CORD: + return 1; + case FieldOptions_CType.STRING_PIECE: + return 2; + case FieldOptions_CType.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FieldOptions_JSType { + /** JS_NORMAL - Use the default type. */ + JS_NORMAL = "JS_NORMAL", + /** JS_STRING - Use JavaScript strings. */ + JS_STRING = "JS_STRING", + /** JS_NUMBER - Use JavaScript numbers. */ + JS_NUMBER = "JS_NUMBER", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldOptions_JSTypeFromJSON(object: any): FieldOptions_JSType { + switch (object) { + case 0: + case "JS_NORMAL": + return FieldOptions_JSType.JS_NORMAL; + case 1: + case "JS_STRING": + return FieldOptions_JSType.JS_STRING; + case 2: + case "JS_NUMBER": + return FieldOptions_JSType.JS_NUMBER; + case -1: + case "UNRECOGNIZED": + default: + return FieldOptions_JSType.UNRECOGNIZED; + } +} + +export function fieldOptions_JSTypeToNumber(object: FieldOptions_JSType): number { + switch (object) { + case FieldOptions_JSType.JS_NORMAL: + return 0; + case FieldOptions_JSType.JS_STRING: + return 1; + case FieldOptions_JSType.JS_NUMBER: + return 2; + case FieldOptions_JSType.UNRECOGNIZED: + default: + return -1; + } +} + +/** + * If set to RETENTION_SOURCE, the option will be omitted from the binary. + * Note: as of January 2023, support for this is in progress and does not yet + * have an effect (b/264593489). + */ +export enum FieldOptions_OptionRetention { + RETENTION_UNKNOWN = "RETENTION_UNKNOWN", + RETENTION_RUNTIME = "RETENTION_RUNTIME", + RETENTION_SOURCE = "RETENTION_SOURCE", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldOptions_OptionRetentionFromJSON(object: any): FieldOptions_OptionRetention { + switch (object) { + case 0: + case "RETENTION_UNKNOWN": + return FieldOptions_OptionRetention.RETENTION_UNKNOWN; + case 1: + case "RETENTION_RUNTIME": + return FieldOptions_OptionRetention.RETENTION_RUNTIME; + case 2: + case "RETENTION_SOURCE": + return FieldOptions_OptionRetention.RETENTION_SOURCE; + case -1: + case "UNRECOGNIZED": + default: + return FieldOptions_OptionRetention.UNRECOGNIZED; + } +} + +export function fieldOptions_OptionRetentionToNumber(object: FieldOptions_OptionRetention): number { + switch (object) { + case FieldOptions_OptionRetention.RETENTION_UNKNOWN: + return 0; + case FieldOptions_OptionRetention.RETENTION_RUNTIME: + return 1; + case FieldOptions_OptionRetention.RETENTION_SOURCE: + return 2; + case FieldOptions_OptionRetention.UNRECOGNIZED: + default: + return -1; + } +} + +/** + * This indicates the types of entities that the field may apply to when used + * as an option. If it is unset, then the field may be freely used as an + * option on any kind of entity. Note: as of January 2023, support for this is + * in progress and does not yet have an effect (b/264593489). + */ +export enum FieldOptions_OptionTargetType { + TARGET_TYPE_UNKNOWN = "TARGET_TYPE_UNKNOWN", + TARGET_TYPE_FILE = "TARGET_TYPE_FILE", + TARGET_TYPE_EXTENSION_RANGE = "TARGET_TYPE_EXTENSION_RANGE", + TARGET_TYPE_MESSAGE = "TARGET_TYPE_MESSAGE", + TARGET_TYPE_FIELD = "TARGET_TYPE_FIELD", + TARGET_TYPE_ONEOF = "TARGET_TYPE_ONEOF", + TARGET_TYPE_ENUM = "TARGET_TYPE_ENUM", + TARGET_TYPE_ENUM_ENTRY = "TARGET_TYPE_ENUM_ENTRY", + TARGET_TYPE_SERVICE = "TARGET_TYPE_SERVICE", + TARGET_TYPE_METHOD = "TARGET_TYPE_METHOD", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function fieldOptions_OptionTargetTypeFromJSON(object: any): FieldOptions_OptionTargetType { + switch (object) { + case 0: + case "TARGET_TYPE_UNKNOWN": + return FieldOptions_OptionTargetType.TARGET_TYPE_UNKNOWN; + case 1: + case "TARGET_TYPE_FILE": + return FieldOptions_OptionTargetType.TARGET_TYPE_FILE; + case 2: + case "TARGET_TYPE_EXTENSION_RANGE": + return FieldOptions_OptionTargetType.TARGET_TYPE_EXTENSION_RANGE; + case 3: + case "TARGET_TYPE_MESSAGE": + return FieldOptions_OptionTargetType.TARGET_TYPE_MESSAGE; + case 4: + case "TARGET_TYPE_FIELD": + return FieldOptions_OptionTargetType.TARGET_TYPE_FIELD; + case 5: + case "TARGET_TYPE_ONEOF": + return FieldOptions_OptionTargetType.TARGET_TYPE_ONEOF; + case 6: + case "TARGET_TYPE_ENUM": + return FieldOptions_OptionTargetType.TARGET_TYPE_ENUM; + case 7: + case "TARGET_TYPE_ENUM_ENTRY": + return FieldOptions_OptionTargetType.TARGET_TYPE_ENUM_ENTRY; + case 8: + case "TARGET_TYPE_SERVICE": + return FieldOptions_OptionTargetType.TARGET_TYPE_SERVICE; + case 9: + case "TARGET_TYPE_METHOD": + return FieldOptions_OptionTargetType.TARGET_TYPE_METHOD; + case -1: + case "UNRECOGNIZED": + default: + return FieldOptions_OptionTargetType.UNRECOGNIZED; + } +} + +export function fieldOptions_OptionTargetTypeToNumber(object: FieldOptions_OptionTargetType): number { + switch (object) { + case FieldOptions_OptionTargetType.TARGET_TYPE_UNKNOWN: + return 0; + case FieldOptions_OptionTargetType.TARGET_TYPE_FILE: + return 1; + case FieldOptions_OptionTargetType.TARGET_TYPE_EXTENSION_RANGE: + return 2; + case FieldOptions_OptionTargetType.TARGET_TYPE_MESSAGE: + return 3; + case FieldOptions_OptionTargetType.TARGET_TYPE_FIELD: + return 4; + case FieldOptions_OptionTargetType.TARGET_TYPE_ONEOF: + return 5; + case FieldOptions_OptionTargetType.TARGET_TYPE_ENUM: + return 6; + case FieldOptions_OptionTargetType.TARGET_TYPE_ENUM_ENTRY: + return 7; + case FieldOptions_OptionTargetType.TARGET_TYPE_SERVICE: + return 8; + case FieldOptions_OptionTargetType.TARGET_TYPE_METHOD: + return 9; + case FieldOptions_OptionTargetType.UNRECOGNIZED: + default: + return -1; + } +} + +export interface FieldOptions_EditionDefault { + edition?: + | Edition + | undefined; + /** Textproto value. */ + value?: string | undefined; +} + +/** Information about the support window of a feature. */ +export interface FieldOptions_FeatureSupport { + /** + * The edition that this feature was first available in. In editions + * earlier than this one, the default assigned to EDITION_LEGACY will be + * used, and proto files will not be able to override it. + */ + editionIntroduced?: + | Edition + | undefined; + /** + * The edition this feature becomes deprecated in. Using this after this + * edition may trigger warnings. + */ + editionDeprecated?: + | Edition + | undefined; + /** + * The deprecation warning text if this feature is used after the edition it + * was marked deprecated in. + */ + deprecationWarning?: + | string + | undefined; + /** + * The edition this feature is no longer available in. In editions after + * this one, the last default assigned will be used, and proto files will + * not be able to override it. + */ + editionRemoved?: Edition | undefined; +} + +export interface OneofOptions { + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export interface EnumOptions { + /** + * Set this option to true to allow mapping different tag names to the same + * value. + */ + allowAlias?: + | boolean + | undefined; + /** + * Is this enum deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for the enum, or it will be completely ignored; in the very least, this + * is a formalization for deprecating enums. + */ + deprecated?: + | boolean + | undefined; + /** + * Enable the legacy handling of JSON field name conflicts. This lowercases + * and strips underscored from the fields before comparison in proto3 only. + * The new behavior takes `json_name` into account and applies to proto2 as + * well. + * TODO Remove this legacy behavior once downstream teams have + * had time to migrate. + * + * @deprecated + */ + deprecatedLegacyJsonFieldConflicts?: + | boolean + | undefined; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export interface EnumValueOptions { + /** + * Is this enum value deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for the enum value, or it will be completely ignored; in the very least, + * this is a formalization for deprecating enum values. + */ + deprecated?: + | boolean + | undefined; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** + * Indicate that fields annotated with this enum value should not be printed + * out when using debug formats, e.g. when the field contains sensitive + * credentials. + */ + debugRedact?: + | boolean + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export interface ServiceOptions { + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** + * Is this service deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for the service, or it will be completely ignored; in the very least, + * this is a formalization for deprecating services. + */ + deprecated?: + | boolean + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +export interface MethodOptions { + /** + * Is this method deprecated? + * Depending on the target platform, this can emit Deprecated annotations + * for the method, or it will be completely ignored; in the very least, + * this is a formalization for deprecating methods. + */ + deprecated?: boolean | undefined; + idempotencyLevel?: + | MethodOptions_IdempotencyLevel + | undefined; + /** Any features defined in the specific edition. */ + features?: + | FeatureSet + | undefined; + /** The parser stores options it doesn't recognize here. See above. */ + uninterpretedOption: UninterpretedOption[]; +} + +/** + * Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + * or neither? HTTP based RPC implementation may choose GET verb for safe + * methods, and PUT verb for idempotent methods instead of the default POST. + */ +export enum MethodOptions_IdempotencyLevel { + IDEMPOTENCY_UNKNOWN = "IDEMPOTENCY_UNKNOWN", + /** NO_SIDE_EFFECTS - implies idempotent */ + NO_SIDE_EFFECTS = "NO_SIDE_EFFECTS", + /** IDEMPOTENT - idempotent, but may have side effects */ + IDEMPOTENT = "IDEMPOTENT", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function methodOptions_IdempotencyLevelFromJSON(object: any): MethodOptions_IdempotencyLevel { + switch (object) { + case 0: + case "IDEMPOTENCY_UNKNOWN": + return MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN; + case 1: + case "NO_SIDE_EFFECTS": + return MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS; + case 2: + case "IDEMPOTENT": + return MethodOptions_IdempotencyLevel.IDEMPOTENT; + case -1: + case "UNRECOGNIZED": + default: + return MethodOptions_IdempotencyLevel.UNRECOGNIZED; + } +} + +export function methodOptions_IdempotencyLevelToNumber(object: MethodOptions_IdempotencyLevel): number { + switch (object) { + case MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN: + return 0; + case MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS: + return 1; + case MethodOptions_IdempotencyLevel.IDEMPOTENT: + return 2; + case MethodOptions_IdempotencyLevel.UNRECOGNIZED: + default: + return -1; + } +} + +/** + * A message representing a option the parser does not recognize. This only + * appears in options protos created by the compiler::Parser class. + * DescriptorPool resolves these when building Descriptor objects. Therefore, + * options protos in descriptor objects (e.g. returned by Descriptor::options(), + * or produced by Descriptor::CopyTo()) will never have UninterpretedOptions + * in them. + */ +export interface UninterpretedOption { + name: UninterpretedOption_NamePart[]; + /** + * The value of the uninterpreted option, in whatever type the tokenizer + * identified it as during parsing. Exactly one of these should be set. + */ + identifierValue?: string | undefined; + positiveIntValue?: number | undefined; + negativeIntValue?: number | undefined; + doubleValue?: number | undefined; + stringValue?: Uint8Array | undefined; + aggregateValue?: string | undefined; +} + +/** + * The name of the uninterpreted option. Each string represents a segment in + * a dot-separated name. is_extension is true iff a segment represents an + * extension (denoted with parentheses in options specs in .proto files). + * E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents + * "foo.(bar.baz).moo". + */ +export interface UninterpretedOption_NamePart { + namePart: string; + isExtension: boolean; +} + +/** + * TODO Enums in C++ gencode (and potentially other languages) are + * not well scoped. This means that each of the feature enums below can clash + * with each other. The short names we've chosen maximize call-site + * readability, but leave us very open to this scenario. A future feature will + * be designed and implemented to handle this, hopefully before we ever hit a + * conflict here. + */ +export interface FeatureSet { + fieldPresence?: FeatureSet_FieldPresence | undefined; + enumType?: FeatureSet_EnumType | undefined; + repeatedFieldEncoding?: FeatureSet_RepeatedFieldEncoding | undefined; + utf8Validation?: FeatureSet_Utf8Validation | undefined; + messageEncoding?: FeatureSet_MessageEncoding | undefined; + jsonFormat?: FeatureSet_JsonFormat | undefined; +} + +export enum FeatureSet_FieldPresence { + FIELD_PRESENCE_UNKNOWN = "FIELD_PRESENCE_UNKNOWN", + EXPLICIT = "EXPLICIT", + IMPLICIT = "IMPLICIT", + LEGACY_REQUIRED = "LEGACY_REQUIRED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_FieldPresenceFromJSON(object: any): FeatureSet_FieldPresence { + switch (object) { + case 0: + case "FIELD_PRESENCE_UNKNOWN": + return FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN; + case 1: + case "EXPLICIT": + return FeatureSet_FieldPresence.EXPLICIT; + case 2: + case "IMPLICIT": + return FeatureSet_FieldPresence.IMPLICIT; + case 3: + case "LEGACY_REQUIRED": + return FeatureSet_FieldPresence.LEGACY_REQUIRED; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_FieldPresence.UNRECOGNIZED; + } +} + +export function featureSet_FieldPresenceToNumber(object: FeatureSet_FieldPresence): number { + switch (object) { + case FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN: + return 0; + case FeatureSet_FieldPresence.EXPLICIT: + return 1; + case FeatureSet_FieldPresence.IMPLICIT: + return 2; + case FeatureSet_FieldPresence.LEGACY_REQUIRED: + return 3; + case FeatureSet_FieldPresence.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FeatureSet_EnumType { + ENUM_TYPE_UNKNOWN = "ENUM_TYPE_UNKNOWN", + OPEN = "OPEN", + CLOSED = "CLOSED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_EnumTypeFromJSON(object: any): FeatureSet_EnumType { + switch (object) { + case 0: + case "ENUM_TYPE_UNKNOWN": + return FeatureSet_EnumType.ENUM_TYPE_UNKNOWN; + case 1: + case "OPEN": + return FeatureSet_EnumType.OPEN; + case 2: + case "CLOSED": + return FeatureSet_EnumType.CLOSED; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_EnumType.UNRECOGNIZED; + } +} + +export function featureSet_EnumTypeToNumber(object: FeatureSet_EnumType): number { + switch (object) { + case FeatureSet_EnumType.ENUM_TYPE_UNKNOWN: + return 0; + case FeatureSet_EnumType.OPEN: + return 1; + case FeatureSet_EnumType.CLOSED: + return 2; + case FeatureSet_EnumType.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FeatureSet_RepeatedFieldEncoding { + REPEATED_FIELD_ENCODING_UNKNOWN = "REPEATED_FIELD_ENCODING_UNKNOWN", + PACKED = "PACKED", + EXPANDED = "EXPANDED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_RepeatedFieldEncodingFromJSON(object: any): FeatureSet_RepeatedFieldEncoding { + switch (object) { + case 0: + case "REPEATED_FIELD_ENCODING_UNKNOWN": + return FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN; + case 1: + case "PACKED": + return FeatureSet_RepeatedFieldEncoding.PACKED; + case 2: + case "EXPANDED": + return FeatureSet_RepeatedFieldEncoding.EXPANDED; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_RepeatedFieldEncoding.UNRECOGNIZED; + } +} + +export function featureSet_RepeatedFieldEncodingToNumber(object: FeatureSet_RepeatedFieldEncoding): number { + switch (object) { + case FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN: + return 0; + case FeatureSet_RepeatedFieldEncoding.PACKED: + return 1; + case FeatureSet_RepeatedFieldEncoding.EXPANDED: + return 2; + case FeatureSet_RepeatedFieldEncoding.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FeatureSet_Utf8Validation { + UTF8_VALIDATION_UNKNOWN = "UTF8_VALIDATION_UNKNOWN", + VERIFY = "VERIFY", + NONE = "NONE", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_Utf8ValidationFromJSON(object: any): FeatureSet_Utf8Validation { + switch (object) { + case 0: + case "UTF8_VALIDATION_UNKNOWN": + return FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN; + case 2: + case "VERIFY": + return FeatureSet_Utf8Validation.VERIFY; + case 3: + case "NONE": + return FeatureSet_Utf8Validation.NONE; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_Utf8Validation.UNRECOGNIZED; + } +} + +export function featureSet_Utf8ValidationToNumber(object: FeatureSet_Utf8Validation): number { + switch (object) { + case FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN: + return 0; + case FeatureSet_Utf8Validation.VERIFY: + return 2; + case FeatureSet_Utf8Validation.NONE: + return 3; + case FeatureSet_Utf8Validation.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FeatureSet_MessageEncoding { + MESSAGE_ENCODING_UNKNOWN = "MESSAGE_ENCODING_UNKNOWN", + LENGTH_PREFIXED = "LENGTH_PREFIXED", + DELIMITED = "DELIMITED", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_MessageEncodingFromJSON(object: any): FeatureSet_MessageEncoding { + switch (object) { + case 0: + case "MESSAGE_ENCODING_UNKNOWN": + return FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN; + case 1: + case "LENGTH_PREFIXED": + return FeatureSet_MessageEncoding.LENGTH_PREFIXED; + case 2: + case "DELIMITED": + return FeatureSet_MessageEncoding.DELIMITED; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_MessageEncoding.UNRECOGNIZED; + } +} + +export function featureSet_MessageEncodingToNumber(object: FeatureSet_MessageEncoding): number { + switch (object) { + case FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN: + return 0; + case FeatureSet_MessageEncoding.LENGTH_PREFIXED: + return 1; + case FeatureSet_MessageEncoding.DELIMITED: + return 2; + case FeatureSet_MessageEncoding.UNRECOGNIZED: + default: + return -1; + } +} + +export enum FeatureSet_JsonFormat { + JSON_FORMAT_UNKNOWN = "JSON_FORMAT_UNKNOWN", + ALLOW = "ALLOW", + LEGACY_BEST_EFFORT = "LEGACY_BEST_EFFORT", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function featureSet_JsonFormatFromJSON(object: any): FeatureSet_JsonFormat { + switch (object) { + case 0: + case "JSON_FORMAT_UNKNOWN": + return FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN; + case 1: + case "ALLOW": + return FeatureSet_JsonFormat.ALLOW; + case 2: + case "LEGACY_BEST_EFFORT": + return FeatureSet_JsonFormat.LEGACY_BEST_EFFORT; + case -1: + case "UNRECOGNIZED": + default: + return FeatureSet_JsonFormat.UNRECOGNIZED; + } +} + +export function featureSet_JsonFormatToNumber(object: FeatureSet_JsonFormat): number { + switch (object) { + case FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN: + return 0; + case FeatureSet_JsonFormat.ALLOW: + return 1; + case FeatureSet_JsonFormat.LEGACY_BEST_EFFORT: + return 2; + case FeatureSet_JsonFormat.UNRECOGNIZED: + default: + return -1; + } +} + +/** + * A compiled specification for the defaults of a set of features. These + * messages are generated from FeatureSet extensions and can be used to seed + * feature resolution. The resolution with this object becomes a simple search + * for the closest matching edition, followed by proto merges. + */ +export interface FeatureSetDefaults { + defaults: FeatureSetDefaults_FeatureSetEditionDefault[]; + /** + * The minimum supported edition (inclusive) when this was constructed. + * Editions before this will not have defaults. + */ + minimumEdition?: + | Edition + | undefined; + /** + * The maximum known edition (inclusive) when this was constructed. Editions + * after this will not have reliable defaults. + */ + maximumEdition?: Edition | undefined; +} + +/** + * A map from every known edition with a unique set of defaults to its + * defaults. Not all editions may be contained here. For a given edition, + * the defaults at the closest matching edition ordered at or before it should + * be used. This field must be in strict ascending order by edition. + */ +export interface FeatureSetDefaults_FeatureSetEditionDefault { + edition?: + | Edition + | undefined; + /** Defaults of features that can be overridden in this edition. */ + overridableFeatures?: + | FeatureSet + | undefined; + /** Defaults of features that can't be overridden in this edition. */ + fixedFeatures?: FeatureSet | undefined; +} + +/** + * Encapsulates information about the original source file from which a + * FileDescriptorProto was generated. + */ +export interface SourceCodeInfo { + /** + * A Location identifies a piece of source code in a .proto file which + * corresponds to a particular definition. This information is intended + * to be useful to IDEs, code indexers, documentation generators, and similar + * tools. + * + * For example, say we have a file like: + * message Foo { + * optional string foo = 1; + * } + * Let's look at just the field definition: + * optional string foo = 1; + * ^ ^^ ^^ ^ ^^^ + * a bc de f ghi + * We have the following locations: + * span path represents + * [a,i) [ 4, 0, 2, 0 ] The whole field definition. + * [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + * [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + * [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + * [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + * + * Notes: + * - A location may refer to a repeated field itself (i.e. not to any + * particular index within it). This is used whenever a set of elements are + * logically enclosed in a single code segment. For example, an entire + * extend block (possibly containing multiple extension definitions) will + * have an outer location whose path refers to the "extensions" repeated + * field without an index. + * - Multiple locations may have the same path. This happens when a single + * logical declaration is spread out across multiple places. The most + * obvious example is the "extend" block again -- there may be multiple + * extend blocks in the same scope, each of which will have the same path. + * - A location's span is not always a subset of its parent's span. For + * example, the "extendee" of an extension declaration appears at the + * beginning of the "extend" block and is shared by all extensions within + * the block. + * - Just because a location's span is a subset of some other location's span + * does not mean that it is a descendant. For example, a "group" defines + * both a type and a field in a single declaration. Thus, the locations + * corresponding to the type and field and their components will overlap. + * - Code which tries to interpret locations should probably be designed to + * ignore those that it doesn't understand, as more types of locations could + * be recorded in the future. + */ + location: SourceCodeInfo_Location[]; +} + +export interface SourceCodeInfo_Location { + /** + * Identifies which part of the FileDescriptorProto was defined at this + * location. + * + * Each element is a field number or an index. They form a path from + * the root FileDescriptorProto to the place where the definition appears. + * For example, this path: + * [ 4, 3, 2, 7, 1 ] + * refers to: + * file.message_type(3) // 4, 3 + * .field(7) // 2, 7 + * .name() // 1 + * This is because FileDescriptorProto.message_type has field number 4: + * repeated DescriptorProto message_type = 4; + * and DescriptorProto.field has field number 2: + * repeated FieldDescriptorProto field = 2; + * and FieldDescriptorProto.name has field number 1: + * optional string name = 1; + * + * Thus, the above path gives the location of a field name. If we removed + * the last element: + * [ 4, 3, 2, 7 ] + * this path refers to the whole field declaration (from the beginning + * of the label to the terminating semicolon). + */ + path: number[]; + /** + * Always has exactly three or four elements: start line, start column, + * end line (optional, otherwise assumed same as start line), end column. + * These are packed into a single field for efficiency. Note that line + * and column numbers are zero-based -- typically you will want to add + * 1 to each before displaying to a user. + */ + span: number[]; + /** + * If this SourceCodeInfo represents a complete declaration, these are any + * comments appearing before and after the declaration which appear to be + * attached to the declaration. + * + * A series of line comments appearing on consecutive lines, with no other + * tokens appearing on those lines, will be treated as a single comment. + * + * leading_detached_comments will keep paragraphs of comments that appear + * before (but not connected to) the current element. Each paragraph, + * separated by empty lines, will be one comment element in the repeated + * field. + * + * Only the comment content is provided; comment markers (e.g. //) are + * stripped out. For block comments, leading whitespace and an asterisk + * will be stripped from the beginning of each line other than the first. + * Newlines are included in the output. + * + * Examples: + * + * optional int32 foo = 1; // Comment attached to foo. + * // Comment attached to bar. + * optional int32 bar = 2; + * + * optional string baz = 3; + * // Comment attached to baz. + * // Another line attached to baz. + * + * // Comment attached to moo. + * // + * // Another line attached to moo. + * optional double moo = 4; + * + * // Detached comment for corge. This is not leading or trailing comments + * // to moo or corge because there are blank lines separating it from + * // both. + * + * // Detached comment for corge paragraph 2. + * + * optional string corge = 5; + * /* Block comment attached + * * to corge. Leading asterisks + * * will be removed. * / + * /* Block comment attached to + * * grault. * / + * optional int32 grault = 6; + * + * // ignored detached comments. + */ + leadingComments?: string | undefined; + trailingComments?: string | undefined; + leadingDetachedComments: string[]; +} + +/** + * Describes the relationship between generated code and its original source + * file. A GeneratedCodeInfo message is associated with only one generated + * source file, but may contain references to different source .proto files. + */ +export interface GeneratedCodeInfo { + /** + * An Annotation connects some span of text in generated code to an element + * of its generating .proto file. + */ + annotation: GeneratedCodeInfo_Annotation[]; +} + +export interface GeneratedCodeInfo_Annotation { + /** + * Identifies the element in the original source .proto file. This field + * is formatted the same as SourceCodeInfo.Location.path. + */ + path: number[]; + /** Identifies the filesystem path to the original source .proto. */ + sourceFile?: + | string + | undefined; + /** + * Identifies the starting offset in bytes in the generated code + * that relates to the identified object. + */ + begin?: + | number + | undefined; + /** + * Identifies the ending offset in bytes in the generated code that + * relates to the identified object. The end offset should be one past + * the last relevant byte (so the length of the text = end - begin). + */ + end?: number | undefined; + semantic?: GeneratedCodeInfo_Annotation_Semantic | undefined; +} + +/** + * Represents the identified object's effect on the element in the original + * .proto file. + */ +export enum GeneratedCodeInfo_Annotation_Semantic { + /** NONE - There is no effect or the effect is indescribable. */ + NONE = "NONE", + /** SET - The element is set or otherwise mutated. */ + SET = "SET", + /** ALIAS - An alias to the element is returned. */ + ALIAS = "ALIAS", + UNRECOGNIZED = "UNRECOGNIZED", +} + +export function generatedCodeInfo_Annotation_SemanticFromJSON(object: any): GeneratedCodeInfo_Annotation_Semantic { + switch (object) { + case 0: + case "NONE": + return GeneratedCodeInfo_Annotation_Semantic.NONE; + case 1: + case "SET": + return GeneratedCodeInfo_Annotation_Semantic.SET; + case 2: + case "ALIAS": + return GeneratedCodeInfo_Annotation_Semantic.ALIAS; + case -1: + case "UNRECOGNIZED": + default: + return GeneratedCodeInfo_Annotation_Semantic.UNRECOGNIZED; + } +} + +export function generatedCodeInfo_Annotation_SemanticToNumber(object: GeneratedCodeInfo_Annotation_Semantic): number { + switch (object) { + case GeneratedCodeInfo_Annotation_Semantic.NONE: + return 0; + case GeneratedCodeInfo_Annotation_Semantic.SET: + return 1; + case GeneratedCodeInfo_Annotation_Semantic.ALIAS: + return 2; + case GeneratedCodeInfo_Annotation_Semantic.UNRECOGNIZED: + default: + return -1; + } +} + +function createBaseFileDescriptorSet(): FileDescriptorSet { + return { file: [] }; +} + +export const FileDescriptorSet = { + encode(message: FileDescriptorSet, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.file) { + FileDescriptorProto.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FileDescriptorSet { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFileDescriptorSet(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.file.push(FileDescriptorProto.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FileDescriptorSet { + return FileDescriptorSet.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FileDescriptorSet { + const message = createBaseFileDescriptorSet(); + message.file = object.file?.map((e) => FileDescriptorProto.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseFileDescriptorProto(): FileDescriptorProto { + return { + name: "", + package: "", + dependency: [], + publicDependency: [], + weakDependency: [], + messageType: [], + enumType: [], + service: [], + extension: [], + options: undefined, + sourceCodeInfo: undefined, + syntax: "", + edition: Edition.EDITION_UNKNOWN, + }; +} + +export const FileDescriptorProto = { + encode(message: FileDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.package !== undefined && message.package !== "") { + writer.uint32(18).string(message.package); + } + for (const v of message.dependency) { + writer.uint32(26).string(v!); + } + writer.uint32(82).fork(); + for (const v of message.publicDependency) { + writer.int32(v); + } + writer.ldelim(); + writer.uint32(90).fork(); + for (const v of message.weakDependency) { + writer.int32(v); + } + writer.ldelim(); + for (const v of message.messageType) { + DescriptorProto.encode(v!, writer.uint32(34).fork()).ldelim(); + } + for (const v of message.enumType) { + EnumDescriptorProto.encode(v!, writer.uint32(42).fork()).ldelim(); + } + for (const v of message.service) { + ServiceDescriptorProto.encode(v!, writer.uint32(50).fork()).ldelim(); + } + for (const v of message.extension) { + FieldDescriptorProto.encode(v!, writer.uint32(58).fork()).ldelim(); + } + if (message.options !== undefined) { + FileOptions.encode(message.options, writer.uint32(66).fork()).ldelim(); + } + if (message.sourceCodeInfo !== undefined) { + SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(74).fork()).ldelim(); + } + if (message.syntax !== undefined && message.syntax !== "") { + writer.uint32(98).string(message.syntax); + } + if (message.edition !== undefined && message.edition !== Edition.EDITION_UNKNOWN) { + writer.uint32(112).int32(editionToNumber(message.edition)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FileDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFileDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.package = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.dependency.push(reader.string()); + continue; + case 10: + if (tag === 80) { + message.publicDependency.push(reader.int32()); + + continue; + } + + if (tag === 82) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.publicDependency.push(reader.int32()); + } + + continue; + } + + break; + case 11: + if (tag === 88) { + message.weakDependency.push(reader.int32()); + + continue; + } + + if (tag === 90) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.weakDependency.push(reader.int32()); + } + + continue; + } + + break; + case 4: + if (tag !== 34) { + break; + } + + message.messageType.push(DescriptorProto.decode(reader, reader.uint32())); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.enumType.push(EnumDescriptorProto.decode(reader, reader.uint32())); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.service.push(ServiceDescriptorProto.decode(reader, reader.uint32())); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.extension.push(FieldDescriptorProto.decode(reader, reader.uint32())); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.options = FileOptions.decode(reader, reader.uint32()); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.sourceCodeInfo = SourceCodeInfo.decode(reader, reader.uint32()); + continue; + case 12: + if (tag !== 98) { + break; + } + + message.syntax = reader.string(); + continue; + case 14: + if (tag !== 112) { + break; + } + + message.edition = editionFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FileDescriptorProto { + return FileDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FileDescriptorProto { + const message = createBaseFileDescriptorProto(); + message.name = object.name ?? ""; + message.package = object.package ?? ""; + message.dependency = object.dependency?.map((e) => e) || []; + message.publicDependency = object.publicDependency?.map((e) => e) || []; + message.weakDependency = object.weakDependency?.map((e) => e) || []; + message.messageType = object.messageType?.map((e) => DescriptorProto.fromPartial(e)) || []; + message.enumType = object.enumType?.map((e) => EnumDescriptorProto.fromPartial(e)) || []; + message.service = object.service?.map((e) => ServiceDescriptorProto.fromPartial(e)) || []; + message.extension = object.extension?.map((e) => FieldDescriptorProto.fromPartial(e)) || []; + message.options = (object.options !== undefined && object.options !== null) + ? FileOptions.fromPartial(object.options) + : undefined; + message.sourceCodeInfo = (object.sourceCodeInfo !== undefined && object.sourceCodeInfo !== null) + ? SourceCodeInfo.fromPartial(object.sourceCodeInfo) + : undefined; + message.syntax = object.syntax ?? ""; + message.edition = object.edition ?? Edition.EDITION_UNKNOWN; + return message; + }, +}; + +function createBaseDescriptorProto(): DescriptorProto { + return { + name: "", + field: [], + extension: [], + nestedType: [], + enumType: [], + extensionRange: [], + oneofDecl: [], + options: undefined, + reservedRange: [], + reservedName: [], + }; +} + +export const DescriptorProto = { + encode(message: DescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.field) { + FieldDescriptorProto.encode(v!, writer.uint32(18).fork()).ldelim(); + } + for (const v of message.extension) { + FieldDescriptorProto.encode(v!, writer.uint32(50).fork()).ldelim(); + } + for (const v of message.nestedType) { + DescriptorProto.encode(v!, writer.uint32(26).fork()).ldelim(); + } + for (const v of message.enumType) { + EnumDescriptorProto.encode(v!, writer.uint32(34).fork()).ldelim(); + } + for (const v of message.extensionRange) { + DescriptorProto_ExtensionRange.encode(v!, writer.uint32(42).fork()).ldelim(); + } + for (const v of message.oneofDecl) { + OneofDescriptorProto.encode(v!, writer.uint32(66).fork()).ldelim(); + } + if (message.options !== undefined) { + MessageOptions.encode(message.options, writer.uint32(58).fork()).ldelim(); + } + for (const v of message.reservedRange) { + DescriptorProto_ReservedRange.encode(v!, writer.uint32(74).fork()).ldelim(); + } + for (const v of message.reservedName) { + writer.uint32(82).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.field.push(FieldDescriptorProto.decode(reader, reader.uint32())); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.extension.push(FieldDescriptorProto.decode(reader, reader.uint32())); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.nestedType.push(DescriptorProto.decode(reader, reader.uint32())); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.enumType.push(EnumDescriptorProto.decode(reader, reader.uint32())); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.extensionRange.push(DescriptorProto_ExtensionRange.decode(reader, reader.uint32())); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.oneofDecl.push(OneofDescriptorProto.decode(reader, reader.uint32())); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.options = MessageOptions.decode(reader, reader.uint32()); + continue; + case 9: + if (tag !== 74) { + break; + } + + message.reservedRange.push(DescriptorProto_ReservedRange.decode(reader, reader.uint32())); + continue; + case 10: + if (tag !== 82) { + break; + } + + message.reservedName.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DescriptorProto { + return DescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DescriptorProto { + const message = createBaseDescriptorProto(); + message.name = object.name ?? ""; + message.field = object.field?.map((e) => FieldDescriptorProto.fromPartial(e)) || []; + message.extension = object.extension?.map((e) => FieldDescriptorProto.fromPartial(e)) || []; + message.nestedType = object.nestedType?.map((e) => DescriptorProto.fromPartial(e)) || []; + message.enumType = object.enumType?.map((e) => EnumDescriptorProto.fromPartial(e)) || []; + message.extensionRange = object.extensionRange?.map((e) => DescriptorProto_ExtensionRange.fromPartial(e)) || []; + message.oneofDecl = object.oneofDecl?.map((e) => OneofDescriptorProto.fromPartial(e)) || []; + message.options = (object.options !== undefined && object.options !== null) + ? MessageOptions.fromPartial(object.options) + : undefined; + message.reservedRange = object.reservedRange?.map((e) => DescriptorProto_ReservedRange.fromPartial(e)) || []; + message.reservedName = object.reservedName?.map((e) => e) || []; + return message; + }, +}; + +function createBaseDescriptorProto_ExtensionRange(): DescriptorProto_ExtensionRange { + return { start: 0, end: 0, options: undefined }; +} + +export const DescriptorProto_ExtensionRange = { + encode(message: DescriptorProto_ExtensionRange, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.start !== undefined && message.start !== 0) { + writer.uint32(8).int32(message.start); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(16).int32(message.end); + } + if (message.options !== undefined) { + ExtensionRangeOptions.encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DescriptorProto_ExtensionRange { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDescriptorProto_ExtensionRange(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.start = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.end = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.options = ExtensionRangeOptions.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DescriptorProto_ExtensionRange { + return DescriptorProto_ExtensionRange.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DescriptorProto_ExtensionRange { + const message = createBaseDescriptorProto_ExtensionRange(); + message.start = object.start ?? 0; + message.end = object.end ?? 0; + message.options = (object.options !== undefined && object.options !== null) + ? ExtensionRangeOptions.fromPartial(object.options) + : undefined; + return message; + }, +}; + +function createBaseDescriptorProto_ReservedRange(): DescriptorProto_ReservedRange { + return { start: 0, end: 0 }; +} + +export const DescriptorProto_ReservedRange = { + encode(message: DescriptorProto_ReservedRange, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.start !== undefined && message.start !== 0) { + writer.uint32(8).int32(message.start); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(16).int32(message.end); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): DescriptorProto_ReservedRange { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDescriptorProto_ReservedRange(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.start = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.end = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): DescriptorProto_ReservedRange { + return DescriptorProto_ReservedRange.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): DescriptorProto_ReservedRange { + const message = createBaseDescriptorProto_ReservedRange(); + message.start = object.start ?? 0; + message.end = object.end ?? 0; + return message; + }, +}; + +function createBaseExtensionRangeOptions(): ExtensionRangeOptions { + return { + uninterpretedOption: [], + declaration: [], + features: undefined, + verification: ExtensionRangeOptions_VerificationState.UNVERIFIED, + }; +} + +export const ExtensionRangeOptions = { + encode(message: ExtensionRangeOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + for (const v of message.declaration) { + ExtensionRangeOptions_Declaration.encode(v!, writer.uint32(18).fork()).ldelim(); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(402).fork()).ldelim(); + } + if ( + message.verification !== undefined && message.verification !== ExtensionRangeOptions_VerificationState.DECLARATION + ) { + writer.uint32(24).int32(extensionRangeOptions_VerificationStateToNumber(message.verification)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ExtensionRangeOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseExtensionRangeOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.declaration.push(ExtensionRangeOptions_Declaration.decode(reader, reader.uint32())); + continue; + case 50: + if (tag !== 402) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.verification = extensionRangeOptions_VerificationStateFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ExtensionRangeOptions { + return ExtensionRangeOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ExtensionRangeOptions { + const message = createBaseExtensionRangeOptions(); + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + message.declaration = object.declaration?.map((e) => ExtensionRangeOptions_Declaration.fromPartial(e)) || []; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.verification = object.verification ?? ExtensionRangeOptions_VerificationState.UNVERIFIED; + return message; + }, +}; + +function createBaseExtensionRangeOptions_Declaration(): ExtensionRangeOptions_Declaration { + return { number: 0, fullName: "", type: "", reserved: false, repeated: false }; +} + +export const ExtensionRangeOptions_Declaration = { + encode(message: ExtensionRangeOptions_Declaration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.number !== undefined && message.number !== 0) { + writer.uint32(8).int32(message.number); + } + if (message.fullName !== undefined && message.fullName !== "") { + writer.uint32(18).string(message.fullName); + } + if (message.type !== undefined && message.type !== "") { + writer.uint32(26).string(message.type); + } + if (message.reserved !== undefined && message.reserved !== false) { + writer.uint32(40).bool(message.reserved); + } + if (message.repeated !== undefined && message.repeated !== false) { + writer.uint32(48).bool(message.repeated); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ExtensionRangeOptions_Declaration { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseExtensionRangeOptions_Declaration(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.number = reader.int32(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.fullName = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.type = reader.string(); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.reserved = reader.bool(); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.repeated = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ExtensionRangeOptions_Declaration { + return ExtensionRangeOptions_Declaration.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ExtensionRangeOptions_Declaration { + const message = createBaseExtensionRangeOptions_Declaration(); + message.number = object.number ?? 0; + message.fullName = object.fullName ?? ""; + message.type = object.type ?? ""; + message.reserved = object.reserved ?? false; + message.repeated = object.repeated ?? false; + return message; + }, +}; + +function createBaseFieldDescriptorProto(): FieldDescriptorProto { + return { + name: "", + number: 0, + label: FieldDescriptorProto_Label.LABEL_OPTIONAL, + type: FieldDescriptorProto_Type.TYPE_DOUBLE, + typeName: "", + extendee: "", + defaultValue: "", + oneofIndex: 0, + jsonName: "", + options: undefined, + proto3Optional: false, + }; +} + +export const FieldDescriptorProto = { + encode(message: FieldDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.number !== undefined && message.number !== 0) { + writer.uint32(24).int32(message.number); + } + if (message.label !== undefined && message.label !== FieldDescriptorProto_Label.LABEL_OPTIONAL) { + writer.uint32(32).int32(fieldDescriptorProto_LabelToNumber(message.label)); + } + if (message.type !== undefined && message.type !== FieldDescriptorProto_Type.TYPE_DOUBLE) { + writer.uint32(40).int32(fieldDescriptorProto_TypeToNumber(message.type)); + } + if (message.typeName !== undefined && message.typeName !== "") { + writer.uint32(50).string(message.typeName); + } + if (message.extendee !== undefined && message.extendee !== "") { + writer.uint32(18).string(message.extendee); + } + if (message.defaultValue !== undefined && message.defaultValue !== "") { + writer.uint32(58).string(message.defaultValue); + } + if (message.oneofIndex !== undefined && message.oneofIndex !== 0) { + writer.uint32(72).int32(message.oneofIndex); + } + if (message.jsonName !== undefined && message.jsonName !== "") { + writer.uint32(82).string(message.jsonName); + } + if (message.options !== undefined) { + FieldOptions.encode(message.options, writer.uint32(66).fork()).ldelim(); + } + if (message.proto3Optional !== undefined && message.proto3Optional !== false) { + writer.uint32(136).bool(message.proto3Optional); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.number = reader.int32(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.label = fieldDescriptorProto_LabelFromJSON(reader.int32()); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.type = fieldDescriptorProto_TypeFromJSON(reader.int32()); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.typeName = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.extendee = reader.string(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.defaultValue = reader.string(); + continue; + case 9: + if (tag !== 72) { + break; + } + + message.oneofIndex = reader.int32(); + continue; + case 10: + if (tag !== 82) { + break; + } + + message.jsonName = reader.string(); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.options = FieldOptions.decode(reader, reader.uint32()); + continue; + case 17: + if (tag !== 136) { + break; + } + + message.proto3Optional = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldDescriptorProto { + return FieldDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldDescriptorProto { + const message = createBaseFieldDescriptorProto(); + message.name = object.name ?? ""; + message.number = object.number ?? 0; + message.label = object.label ?? FieldDescriptorProto_Label.LABEL_OPTIONAL; + message.type = object.type ?? FieldDescriptorProto_Type.TYPE_DOUBLE; + message.typeName = object.typeName ?? ""; + message.extendee = object.extendee ?? ""; + message.defaultValue = object.defaultValue ?? ""; + message.oneofIndex = object.oneofIndex ?? 0; + message.jsonName = object.jsonName ?? ""; + message.options = (object.options !== undefined && object.options !== null) + ? FieldOptions.fromPartial(object.options) + : undefined; + message.proto3Optional = object.proto3Optional ?? false; + return message; + }, +}; + +function createBaseOneofDescriptorProto(): OneofDescriptorProto { + return { name: "", options: undefined }; +} + +export const OneofDescriptorProto = { + encode(message: OneofDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.options !== undefined) { + OneofOptions.encode(message.options, writer.uint32(18).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): OneofDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseOneofDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.options = OneofOptions.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): OneofDescriptorProto { + return OneofDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): OneofDescriptorProto { + const message = createBaseOneofDescriptorProto(); + message.name = object.name ?? ""; + message.options = (object.options !== undefined && object.options !== null) + ? OneofOptions.fromPartial(object.options) + : undefined; + return message; + }, +}; + +function createBaseEnumDescriptorProto(): EnumDescriptorProto { + return { name: "", value: [], options: undefined, reservedRange: [], reservedName: [] }; +} + +export const EnumDescriptorProto = { + encode(message: EnumDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.value) { + EnumValueDescriptorProto.encode(v!, writer.uint32(18).fork()).ldelim(); + } + if (message.options !== undefined) { + EnumOptions.encode(message.options, writer.uint32(26).fork()).ldelim(); + } + for (const v of message.reservedRange) { + EnumDescriptorProto_EnumReservedRange.encode(v!, writer.uint32(34).fork()).ldelim(); + } + for (const v of message.reservedName) { + writer.uint32(42).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EnumDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEnumDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value.push(EnumValueDescriptorProto.decode(reader, reader.uint32())); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.options = EnumOptions.decode(reader, reader.uint32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.reservedRange.push(EnumDescriptorProto_EnumReservedRange.decode(reader, reader.uint32())); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.reservedName.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EnumDescriptorProto { + return EnumDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EnumDescriptorProto { + const message = createBaseEnumDescriptorProto(); + message.name = object.name ?? ""; + message.value = object.value?.map((e) => EnumValueDescriptorProto.fromPartial(e)) || []; + message.options = (object.options !== undefined && object.options !== null) + ? EnumOptions.fromPartial(object.options) + : undefined; + message.reservedRange = object.reservedRange?.map((e) => EnumDescriptorProto_EnumReservedRange.fromPartial(e)) || + []; + message.reservedName = object.reservedName?.map((e) => e) || []; + return message; + }, +}; + +function createBaseEnumDescriptorProto_EnumReservedRange(): EnumDescriptorProto_EnumReservedRange { + return { start: 0, end: 0 }; +} + +export const EnumDescriptorProto_EnumReservedRange = { + encode(message: EnumDescriptorProto_EnumReservedRange, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.start !== undefined && message.start !== 0) { + writer.uint32(8).int32(message.start); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(16).int32(message.end); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EnumDescriptorProto_EnumReservedRange { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEnumDescriptorProto_EnumReservedRange(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.start = reader.int32(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.end = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EnumDescriptorProto_EnumReservedRange { + return EnumDescriptorProto_EnumReservedRange.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EnumDescriptorProto_EnumReservedRange { + const message = createBaseEnumDescriptorProto_EnumReservedRange(); + message.start = object.start ?? 0; + message.end = object.end ?? 0; + return message; + }, +}; + +function createBaseEnumValueDescriptorProto(): EnumValueDescriptorProto { + return { name: "", number: 0, options: undefined }; +} + +export const EnumValueDescriptorProto = { + encode(message: EnumValueDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.number !== undefined && message.number !== 0) { + writer.uint32(16).int32(message.number); + } + if (message.options !== undefined) { + EnumValueOptions.encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EnumValueDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEnumValueDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.number = reader.int32(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.options = EnumValueOptions.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EnumValueDescriptorProto { + return EnumValueDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EnumValueDescriptorProto { + const message = createBaseEnumValueDescriptorProto(); + message.name = object.name ?? ""; + message.number = object.number ?? 0; + message.options = (object.options !== undefined && object.options !== null) + ? EnumValueOptions.fromPartial(object.options) + : undefined; + return message; + }, +}; + +function createBaseServiceDescriptorProto(): ServiceDescriptorProto { + return { name: "", method: [], options: undefined }; +} + +export const ServiceDescriptorProto = { + encode(message: ServiceDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.method) { + MethodDescriptorProto.encode(v!, writer.uint32(18).fork()).ldelim(); + } + if (message.options !== undefined) { + ServiceOptions.encode(message.options, writer.uint32(26).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ServiceDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseServiceDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.method.push(MethodDescriptorProto.decode(reader, reader.uint32())); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.options = ServiceOptions.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ServiceDescriptorProto { + return ServiceDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ServiceDescriptorProto { + const message = createBaseServiceDescriptorProto(); + message.name = object.name ?? ""; + message.method = object.method?.map((e) => MethodDescriptorProto.fromPartial(e)) || []; + message.options = (object.options !== undefined && object.options !== null) + ? ServiceOptions.fromPartial(object.options) + : undefined; + return message; + }, +}; + +function createBaseMethodDescriptorProto(): MethodDescriptorProto { + return { + name: "", + inputType: "", + outputType: "", + options: undefined, + clientStreaming: false, + serverStreaming: false, + }; +} + +export const MethodDescriptorProto = { + encode(message: MethodDescriptorProto, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.name !== undefined && message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.inputType !== undefined && message.inputType !== "") { + writer.uint32(18).string(message.inputType); + } + if (message.outputType !== undefined && message.outputType !== "") { + writer.uint32(26).string(message.outputType); + } + if (message.options !== undefined) { + MethodOptions.encode(message.options, writer.uint32(34).fork()).ldelim(); + } + if (message.clientStreaming !== undefined && message.clientStreaming !== false) { + writer.uint32(40).bool(message.clientStreaming); + } + if (message.serverStreaming !== undefined && message.serverStreaming !== false) { + writer.uint32(48).bool(message.serverStreaming); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MethodDescriptorProto { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMethodDescriptorProto(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.name = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.inputType = reader.string(); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.outputType = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.options = MethodOptions.decode(reader, reader.uint32()); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.clientStreaming = reader.bool(); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.serverStreaming = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MethodDescriptorProto { + return MethodDescriptorProto.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MethodDescriptorProto { + const message = createBaseMethodDescriptorProto(); + message.name = object.name ?? ""; + message.inputType = object.inputType ?? ""; + message.outputType = object.outputType ?? ""; + message.options = (object.options !== undefined && object.options !== null) + ? MethodOptions.fromPartial(object.options) + : undefined; + message.clientStreaming = object.clientStreaming ?? false; + message.serverStreaming = object.serverStreaming ?? false; + return message; + }, +}; + +function createBaseFileOptions(): FileOptions { + return { + javaPackage: "", + javaOuterClassname: "", + javaMultipleFiles: false, + javaGenerateEqualsAndHash: false, + javaStringCheckUtf8: false, + optimizeFor: FileOptions_OptimizeMode.SPEED, + goPackage: "", + ccGenericServices: false, + javaGenericServices: false, + pyGenericServices: false, + deprecated: false, + ccEnableArenas: true, + objcClassPrefix: "", + csharpNamespace: "", + swiftPrefix: "", + phpClassPrefix: "", + phpNamespace: "", + phpMetadataNamespace: "", + rubyPackage: "", + features: undefined, + uninterpretedOption: [], + }; +} + +export const FileOptions = { + encode(message: FileOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.javaPackage !== undefined && message.javaPackage !== "") { + writer.uint32(10).string(message.javaPackage); + } + if (message.javaOuterClassname !== undefined && message.javaOuterClassname !== "") { + writer.uint32(66).string(message.javaOuterClassname); + } + if (message.javaMultipleFiles !== undefined && message.javaMultipleFiles !== false) { + writer.uint32(80).bool(message.javaMultipleFiles); + } + if (message.javaGenerateEqualsAndHash !== undefined && message.javaGenerateEqualsAndHash !== false) { + writer.uint32(160).bool(message.javaGenerateEqualsAndHash); + } + if (message.javaStringCheckUtf8 !== undefined && message.javaStringCheckUtf8 !== false) { + writer.uint32(216).bool(message.javaStringCheckUtf8); + } + if (message.optimizeFor !== undefined && message.optimizeFor !== FileOptions_OptimizeMode.SPEED) { + writer.uint32(72).int32(fileOptions_OptimizeModeToNumber(message.optimizeFor)); + } + if (message.goPackage !== undefined && message.goPackage !== "") { + writer.uint32(90).string(message.goPackage); + } + if (message.ccGenericServices !== undefined && message.ccGenericServices !== false) { + writer.uint32(128).bool(message.ccGenericServices); + } + if (message.javaGenericServices !== undefined && message.javaGenericServices !== false) { + writer.uint32(136).bool(message.javaGenericServices); + } + if (message.pyGenericServices !== undefined && message.pyGenericServices !== false) { + writer.uint32(144).bool(message.pyGenericServices); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(184).bool(message.deprecated); + } + if (message.ccEnableArenas !== undefined && message.ccEnableArenas !== true) { + writer.uint32(248).bool(message.ccEnableArenas); + } + if (message.objcClassPrefix !== undefined && message.objcClassPrefix !== "") { + writer.uint32(290).string(message.objcClassPrefix); + } + if (message.csharpNamespace !== undefined && message.csharpNamespace !== "") { + writer.uint32(298).string(message.csharpNamespace); + } + if (message.swiftPrefix !== undefined && message.swiftPrefix !== "") { + writer.uint32(314).string(message.swiftPrefix); + } + if (message.phpClassPrefix !== undefined && message.phpClassPrefix !== "") { + writer.uint32(322).string(message.phpClassPrefix); + } + if (message.phpNamespace !== undefined && message.phpNamespace !== "") { + writer.uint32(330).string(message.phpNamespace); + } + if (message.phpMetadataNamespace !== undefined && message.phpMetadataNamespace !== "") { + writer.uint32(354).string(message.phpMetadataNamespace); + } + if (message.rubyPackage !== undefined && message.rubyPackage !== "") { + writer.uint32(362).string(message.rubyPackage); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(402).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FileOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFileOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.javaPackage = reader.string(); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.javaOuterClassname = reader.string(); + continue; + case 10: + if (tag !== 80) { + break; + } + + message.javaMultipleFiles = reader.bool(); + continue; + case 20: + if (tag !== 160) { + break; + } + + message.javaGenerateEqualsAndHash = reader.bool(); + continue; + case 27: + if (tag !== 216) { + break; + } + + message.javaStringCheckUtf8 = reader.bool(); + continue; + case 9: + if (tag !== 72) { + break; + } + + message.optimizeFor = fileOptions_OptimizeModeFromJSON(reader.int32()); + continue; + case 11: + if (tag !== 90) { + break; + } + + message.goPackage = reader.string(); + continue; + case 16: + if (tag !== 128) { + break; + } + + message.ccGenericServices = reader.bool(); + continue; + case 17: + if (tag !== 136) { + break; + } + + message.javaGenericServices = reader.bool(); + continue; + case 18: + if (tag !== 144) { + break; + } + + message.pyGenericServices = reader.bool(); + continue; + case 23: + if (tag !== 184) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 31: + if (tag !== 248) { + break; + } + + message.ccEnableArenas = reader.bool(); + continue; + case 36: + if (tag !== 290) { + break; + } + + message.objcClassPrefix = reader.string(); + continue; + case 37: + if (tag !== 298) { + break; + } + + message.csharpNamespace = reader.string(); + continue; + case 39: + if (tag !== 314) { + break; + } + + message.swiftPrefix = reader.string(); + continue; + case 40: + if (tag !== 322) { + break; + } + + message.phpClassPrefix = reader.string(); + continue; + case 41: + if (tag !== 330) { + break; + } + + message.phpNamespace = reader.string(); + continue; + case 44: + if (tag !== 354) { + break; + } + + message.phpMetadataNamespace = reader.string(); + continue; + case 45: + if (tag !== 362) { + break; + } + + message.rubyPackage = reader.string(); + continue; + case 50: + if (tag !== 402) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FileOptions { + return FileOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FileOptions { + const message = createBaseFileOptions(); + message.javaPackage = object.javaPackage ?? ""; + message.javaOuterClassname = object.javaOuterClassname ?? ""; + message.javaMultipleFiles = object.javaMultipleFiles ?? false; + message.javaGenerateEqualsAndHash = object.javaGenerateEqualsAndHash ?? false; + message.javaStringCheckUtf8 = object.javaStringCheckUtf8 ?? false; + message.optimizeFor = object.optimizeFor ?? FileOptions_OptimizeMode.SPEED; + message.goPackage = object.goPackage ?? ""; + message.ccGenericServices = object.ccGenericServices ?? false; + message.javaGenericServices = object.javaGenericServices ?? false; + message.pyGenericServices = object.pyGenericServices ?? false; + message.deprecated = object.deprecated ?? false; + message.ccEnableArenas = object.ccEnableArenas ?? true; + message.objcClassPrefix = object.objcClassPrefix ?? ""; + message.csharpNamespace = object.csharpNamespace ?? ""; + message.swiftPrefix = object.swiftPrefix ?? ""; + message.phpClassPrefix = object.phpClassPrefix ?? ""; + message.phpNamespace = object.phpNamespace ?? ""; + message.phpMetadataNamespace = object.phpMetadataNamespace ?? ""; + message.rubyPackage = object.rubyPackage ?? ""; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseMessageOptions(): MessageOptions { + return { + messageSetWireFormat: false, + noStandardDescriptorAccessor: false, + deprecated: false, + mapEntry: false, + deprecatedLegacyJsonFieldConflicts: false, + features: undefined, + uninterpretedOption: [], + }; +} + +export const MessageOptions = { + encode(message: MessageOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.messageSetWireFormat !== undefined && message.messageSetWireFormat !== false) { + writer.uint32(8).bool(message.messageSetWireFormat); + } + if (message.noStandardDescriptorAccessor !== undefined && message.noStandardDescriptorAccessor !== false) { + writer.uint32(16).bool(message.noStandardDescriptorAccessor); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if (message.mapEntry !== undefined && message.mapEntry !== false) { + writer.uint32(56).bool(message.mapEntry); + } + if ( + message.deprecatedLegacyJsonFieldConflicts !== undefined && message.deprecatedLegacyJsonFieldConflicts !== false + ) { + writer.uint32(88).bool(message.deprecatedLegacyJsonFieldConflicts); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(98).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MessageOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMessageOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.messageSetWireFormat = reader.bool(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.noStandardDescriptorAccessor = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 7: + if (tag !== 56) { + break; + } + + message.mapEntry = reader.bool(); + continue; + case 11: + if (tag !== 88) { + break; + } + + message.deprecatedLegacyJsonFieldConflicts = reader.bool(); + continue; + case 12: + if (tag !== 98) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MessageOptions { + return MessageOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MessageOptions { + const message = createBaseMessageOptions(); + message.messageSetWireFormat = object.messageSetWireFormat ?? false; + message.noStandardDescriptorAccessor = object.noStandardDescriptorAccessor ?? false; + message.deprecated = object.deprecated ?? false; + message.mapEntry = object.mapEntry ?? false; + message.deprecatedLegacyJsonFieldConflicts = object.deprecatedLegacyJsonFieldConflicts ?? false; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseFieldOptions(): FieldOptions { + return { + ctype: FieldOptions_CType.STRING, + packed: false, + jstype: FieldOptions_JSType.JS_NORMAL, + lazy: false, + unverifiedLazy: false, + deprecated: false, + weak: false, + debugRedact: false, + retention: FieldOptions_OptionRetention.RETENTION_UNKNOWN, + targets: [], + editionDefaults: [], + features: undefined, + featureSupport: undefined, + uninterpretedOption: [], + }; +} + +export const FieldOptions = { + encode(message: FieldOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.ctype !== undefined && message.ctype !== FieldOptions_CType.STRING) { + writer.uint32(8).int32(fieldOptions_CTypeToNumber(message.ctype)); + } + if (message.packed !== undefined && message.packed !== false) { + writer.uint32(16).bool(message.packed); + } + if (message.jstype !== undefined && message.jstype !== FieldOptions_JSType.JS_NORMAL) { + writer.uint32(48).int32(fieldOptions_JSTypeToNumber(message.jstype)); + } + if (message.lazy !== undefined && message.lazy !== false) { + writer.uint32(40).bool(message.lazy); + } + if (message.unverifiedLazy !== undefined && message.unverifiedLazy !== false) { + writer.uint32(120).bool(message.unverifiedLazy); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if (message.weak !== undefined && message.weak !== false) { + writer.uint32(80).bool(message.weak); + } + if (message.debugRedact !== undefined && message.debugRedact !== false) { + writer.uint32(128).bool(message.debugRedact); + } + if (message.retention !== undefined && message.retention !== FieldOptions_OptionRetention.RETENTION_UNKNOWN) { + writer.uint32(136).int32(fieldOptions_OptionRetentionToNumber(message.retention)); + } + writer.uint32(154).fork(); + for (const v of message.targets) { + writer.int32(fieldOptions_OptionTargetTypeToNumber(v)); + } + writer.ldelim(); + for (const v of message.editionDefaults) { + FieldOptions_EditionDefault.encode(v!, writer.uint32(162).fork()).ldelim(); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(170).fork()).ldelim(); + } + if (message.featureSupport !== undefined) { + FieldOptions_FeatureSupport.encode(message.featureSupport, writer.uint32(178).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.ctype = fieldOptions_CTypeFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.packed = reader.bool(); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.jstype = fieldOptions_JSTypeFromJSON(reader.int32()); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.lazy = reader.bool(); + continue; + case 15: + if (tag !== 120) { + break; + } + + message.unverifiedLazy = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 10: + if (tag !== 80) { + break; + } + + message.weak = reader.bool(); + continue; + case 16: + if (tag !== 128) { + break; + } + + message.debugRedact = reader.bool(); + continue; + case 17: + if (tag !== 136) { + break; + } + + message.retention = fieldOptions_OptionRetentionFromJSON(reader.int32()); + continue; + case 19: + if (tag === 152) { + message.targets.push(fieldOptions_OptionTargetTypeFromJSON(reader.int32())); + + continue; + } + + if (tag === 154) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.targets.push(fieldOptions_OptionTargetTypeFromJSON(reader.int32())); + } + + continue; + } + + break; + case 20: + if (tag !== 162) { + break; + } + + message.editionDefaults.push(FieldOptions_EditionDefault.decode(reader, reader.uint32())); + continue; + case 21: + if (tag !== 170) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 22: + if (tag !== 178) { + break; + } + + message.featureSupport = FieldOptions_FeatureSupport.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldOptions { + return FieldOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldOptions { + const message = createBaseFieldOptions(); + message.ctype = object.ctype ?? FieldOptions_CType.STRING; + message.packed = object.packed ?? false; + message.jstype = object.jstype ?? FieldOptions_JSType.JS_NORMAL; + message.lazy = object.lazy ?? false; + message.unverifiedLazy = object.unverifiedLazy ?? false; + message.deprecated = object.deprecated ?? false; + message.weak = object.weak ?? false; + message.debugRedact = object.debugRedact ?? false; + message.retention = object.retention ?? FieldOptions_OptionRetention.RETENTION_UNKNOWN; + message.targets = object.targets?.map((e) => e) || []; + message.editionDefaults = object.editionDefaults?.map((e) => FieldOptions_EditionDefault.fromPartial(e)) || []; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.featureSupport = (object.featureSupport !== undefined && object.featureSupport !== null) + ? FieldOptions_FeatureSupport.fromPartial(object.featureSupport) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseFieldOptions_EditionDefault(): FieldOptions_EditionDefault { + return { edition: Edition.EDITION_UNKNOWN, value: "" }; +} + +export const FieldOptions_EditionDefault = { + encode(message: FieldOptions_EditionDefault, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.edition !== undefined && message.edition !== Edition.EDITION_UNKNOWN) { + writer.uint32(24).int32(editionToNumber(message.edition)); + } + if (message.value !== undefined && message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldOptions_EditionDefault { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldOptions_EditionDefault(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 3: + if (tag !== 24) { + break; + } + + message.edition = editionFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.value = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldOptions_EditionDefault { + return FieldOptions_EditionDefault.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldOptions_EditionDefault { + const message = createBaseFieldOptions_EditionDefault(); + message.edition = object.edition ?? Edition.EDITION_UNKNOWN; + message.value = object.value ?? ""; + return message; + }, +}; + +function createBaseFieldOptions_FeatureSupport(): FieldOptions_FeatureSupport { + return { + editionIntroduced: Edition.EDITION_UNKNOWN, + editionDeprecated: Edition.EDITION_UNKNOWN, + deprecationWarning: "", + editionRemoved: Edition.EDITION_UNKNOWN, + }; +} + +export const FieldOptions_FeatureSupport = { + encode(message: FieldOptions_FeatureSupport, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.editionIntroduced !== undefined && message.editionIntroduced !== Edition.EDITION_UNKNOWN) { + writer.uint32(8).int32(editionToNumber(message.editionIntroduced)); + } + if (message.editionDeprecated !== undefined && message.editionDeprecated !== Edition.EDITION_UNKNOWN) { + writer.uint32(16).int32(editionToNumber(message.editionDeprecated)); + } + if (message.deprecationWarning !== undefined && message.deprecationWarning !== "") { + writer.uint32(26).string(message.deprecationWarning); + } + if (message.editionRemoved !== undefined && message.editionRemoved !== Edition.EDITION_UNKNOWN) { + writer.uint32(32).int32(editionToNumber(message.editionRemoved)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldOptions_FeatureSupport { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldOptions_FeatureSupport(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.editionIntroduced = editionFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.editionDeprecated = editionFromJSON(reader.int32()); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.deprecationWarning = reader.string(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.editionRemoved = editionFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldOptions_FeatureSupport { + return FieldOptions_FeatureSupport.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldOptions_FeatureSupport { + const message = createBaseFieldOptions_FeatureSupport(); + message.editionIntroduced = object.editionIntroduced ?? Edition.EDITION_UNKNOWN; + message.editionDeprecated = object.editionDeprecated ?? Edition.EDITION_UNKNOWN; + message.deprecationWarning = object.deprecationWarning ?? ""; + message.editionRemoved = object.editionRemoved ?? Edition.EDITION_UNKNOWN; + return message; + }, +}; + +function createBaseOneofOptions(): OneofOptions { + return { features: undefined, uninterpretedOption: [] }; +} + +export const OneofOptions = { + encode(message: OneofOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(10).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): OneofOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseOneofOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): OneofOptions { + return OneofOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): OneofOptions { + const message = createBaseOneofOptions(); + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseEnumOptions(): EnumOptions { + return { + allowAlias: false, + deprecated: false, + deprecatedLegacyJsonFieldConflicts: false, + features: undefined, + uninterpretedOption: [], + }; +} + +export const EnumOptions = { + encode(message: EnumOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.allowAlias !== undefined && message.allowAlias !== false) { + writer.uint32(16).bool(message.allowAlias); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(24).bool(message.deprecated); + } + if ( + message.deprecatedLegacyJsonFieldConflicts !== undefined && message.deprecatedLegacyJsonFieldConflicts !== false + ) { + writer.uint32(48).bool(message.deprecatedLegacyJsonFieldConflicts); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(58).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EnumOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEnumOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (tag !== 16) { + break; + } + + message.allowAlias = reader.bool(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.deprecatedLegacyJsonFieldConflicts = reader.bool(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EnumOptions { + return EnumOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EnumOptions { + const message = createBaseEnumOptions(); + message.allowAlias = object.allowAlias ?? false; + message.deprecated = object.deprecated ?? false; + message.deprecatedLegacyJsonFieldConflicts = object.deprecatedLegacyJsonFieldConflicts ?? false; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseEnumValueOptions(): EnumValueOptions { + return { deprecated: false, features: undefined, debugRedact: false, uninterpretedOption: [] }; +} + +export const EnumValueOptions = { + encode(message: EnumValueOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(8).bool(message.deprecated); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(18).fork()).ldelim(); + } + if (message.debugRedact !== undefined && message.debugRedact !== false) { + writer.uint32(24).bool(message.debugRedact); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): EnumValueOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEnumValueOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.debugRedact = reader.bool(); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): EnumValueOptions { + return EnumValueOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): EnumValueOptions { + const message = createBaseEnumValueOptions(); + message.deprecated = object.deprecated ?? false; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.debugRedact = object.debugRedact ?? false; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseServiceOptions(): ServiceOptions { + return { features: undefined, deprecated: false, uninterpretedOption: [] }; +} + +export const ServiceOptions = { + encode(message: ServiceOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(274).fork()).ldelim(); + } + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(264).bool(message.deprecated); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): ServiceOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseServiceOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 34: + if (tag !== 274) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 33: + if (tag !== 264) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): ServiceOptions { + return ServiceOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): ServiceOptions { + const message = createBaseServiceOptions(); + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.deprecated = object.deprecated ?? false; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseMethodOptions(): MethodOptions { + return { + deprecated: false, + idempotencyLevel: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN, + features: undefined, + uninterpretedOption: [], + }; +} + +export const MethodOptions = { + encode(message: MethodOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.deprecated !== undefined && message.deprecated !== false) { + writer.uint32(264).bool(message.deprecated); + } + if ( + message.idempotencyLevel !== undefined && + message.idempotencyLevel !== MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN + ) { + writer.uint32(272).int32(methodOptions_IdempotencyLevelToNumber(message.idempotencyLevel)); + } + if (message.features !== undefined) { + FeatureSet.encode(message.features, writer.uint32(282).fork()).ldelim(); + } + for (const v of message.uninterpretedOption) { + UninterpretedOption.encode(v!, writer.uint32(7994).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): MethodOptions { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseMethodOptions(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 33: + if (tag !== 264) { + break; + } + + message.deprecated = reader.bool(); + continue; + case 34: + if (tag !== 272) { + break; + } + + message.idempotencyLevel = methodOptions_IdempotencyLevelFromJSON(reader.int32()); + continue; + case 35: + if (tag !== 282) { + break; + } + + message.features = FeatureSet.decode(reader, reader.uint32()); + continue; + case 999: + if (tag !== 7994) { + break; + } + + message.uninterpretedOption.push(UninterpretedOption.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): MethodOptions { + return MethodOptions.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): MethodOptions { + const message = createBaseMethodOptions(); + message.deprecated = object.deprecated ?? false; + message.idempotencyLevel = object.idempotencyLevel ?? MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN; + message.features = (object.features !== undefined && object.features !== null) + ? FeatureSet.fromPartial(object.features) + : undefined; + message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseUninterpretedOption(): UninterpretedOption { + return { + name: [], + identifierValue: "", + positiveIntValue: 0, + negativeIntValue: 0, + doubleValue: 0, + stringValue: new Uint8Array(0), + aggregateValue: "", + }; +} + +export const UninterpretedOption = { + encode(message: UninterpretedOption, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.name) { + UninterpretedOption_NamePart.encode(v!, writer.uint32(18).fork()).ldelim(); + } + if (message.identifierValue !== undefined && message.identifierValue !== "") { + writer.uint32(26).string(message.identifierValue); + } + if (message.positiveIntValue !== undefined && message.positiveIntValue !== 0) { + writer.uint32(32).uint64(message.positiveIntValue); + } + if (message.negativeIntValue !== undefined && message.negativeIntValue !== 0) { + writer.uint32(40).int64(message.negativeIntValue); + } + if (message.doubleValue !== undefined && message.doubleValue !== 0) { + writer.uint32(49).double(message.doubleValue); + } + if (message.stringValue !== undefined && message.stringValue.length !== 0) { + writer.uint32(58).bytes(message.stringValue); + } + if (message.aggregateValue !== undefined && message.aggregateValue !== "") { + writer.uint32(66).string(message.aggregateValue); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UninterpretedOption { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUninterpretedOption(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 2: + if (tag !== 18) { + break; + } + + message.name.push(UninterpretedOption_NamePart.decode(reader, reader.uint32())); + continue; + case 3: + if (tag !== 26) { + break; + } + + message.identifierValue = reader.string(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.positiveIntValue = longToNumber(reader.uint64() as Long); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.negativeIntValue = longToNumber(reader.int64() as Long); + continue; + case 6: + if (tag !== 49) { + break; + } + + message.doubleValue = reader.double(); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.stringValue = reader.bytes(); + continue; + case 8: + if (tag !== 66) { + break; + } + + message.aggregateValue = reader.string(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UninterpretedOption { + return UninterpretedOption.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UninterpretedOption { + const message = createBaseUninterpretedOption(); + message.name = object.name?.map((e) => UninterpretedOption_NamePart.fromPartial(e)) || []; + message.identifierValue = object.identifierValue ?? ""; + message.positiveIntValue = object.positiveIntValue ?? 0; + message.negativeIntValue = object.negativeIntValue ?? 0; + message.doubleValue = object.doubleValue ?? 0; + message.stringValue = object.stringValue ?? new Uint8Array(0); + message.aggregateValue = object.aggregateValue ?? ""; + return message; + }, +}; + +function createBaseUninterpretedOption_NamePart(): UninterpretedOption_NamePart { + return { namePart: "", isExtension: false }; +} + +export const UninterpretedOption_NamePart = { + encode(message: UninterpretedOption_NamePart, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.namePart !== "") { + writer.uint32(10).string(message.namePart); + } + if (message.isExtension !== false) { + writer.uint32(16).bool(message.isExtension); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): UninterpretedOption_NamePart { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseUninterpretedOption_NamePart(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.namePart = reader.string(); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.isExtension = reader.bool(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): UninterpretedOption_NamePart { + return UninterpretedOption_NamePart.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): UninterpretedOption_NamePart { + const message = createBaseUninterpretedOption_NamePart(); + message.namePart = object.namePart ?? ""; + message.isExtension = object.isExtension ?? false; + return message; + }, +}; + +function createBaseFeatureSet(): FeatureSet { + return { + fieldPresence: FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN, + enumType: FeatureSet_EnumType.ENUM_TYPE_UNKNOWN, + repeatedFieldEncoding: FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN, + utf8Validation: FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN, + messageEncoding: FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN, + jsonFormat: FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN, + }; +} + +export const FeatureSet = { + encode(message: FeatureSet, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if ( + message.fieldPresence !== undefined && message.fieldPresence !== FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN + ) { + writer.uint32(8).int32(featureSet_FieldPresenceToNumber(message.fieldPresence)); + } + if (message.enumType !== undefined && message.enumType !== FeatureSet_EnumType.ENUM_TYPE_UNKNOWN) { + writer.uint32(16).int32(featureSet_EnumTypeToNumber(message.enumType)); + } + if ( + message.repeatedFieldEncoding !== undefined && + message.repeatedFieldEncoding !== FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN + ) { + writer.uint32(24).int32(featureSet_RepeatedFieldEncodingToNumber(message.repeatedFieldEncoding)); + } + if ( + message.utf8Validation !== undefined && + message.utf8Validation !== FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN + ) { + writer.uint32(32).int32(featureSet_Utf8ValidationToNumber(message.utf8Validation)); + } + if ( + message.messageEncoding !== undefined && + message.messageEncoding !== FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN + ) { + writer.uint32(40).int32(featureSet_MessageEncodingToNumber(message.messageEncoding)); + } + if (message.jsonFormat !== undefined && message.jsonFormat !== FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN) { + writer.uint32(48).int32(featureSet_JsonFormatToNumber(message.jsonFormat)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FeatureSet { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFeatureSet(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.fieldPresence = featureSet_FieldPresenceFromJSON(reader.int32()); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.enumType = featureSet_EnumTypeFromJSON(reader.int32()); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.repeatedFieldEncoding = featureSet_RepeatedFieldEncodingFromJSON(reader.int32()); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.utf8Validation = featureSet_Utf8ValidationFromJSON(reader.int32()); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.messageEncoding = featureSet_MessageEncodingFromJSON(reader.int32()); + continue; + case 6: + if (tag !== 48) { + break; + } + + message.jsonFormat = featureSet_JsonFormatFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FeatureSet { + return FeatureSet.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FeatureSet { + const message = createBaseFeatureSet(); + message.fieldPresence = object.fieldPresence ?? FeatureSet_FieldPresence.FIELD_PRESENCE_UNKNOWN; + message.enumType = object.enumType ?? FeatureSet_EnumType.ENUM_TYPE_UNKNOWN; + message.repeatedFieldEncoding = object.repeatedFieldEncoding ?? + FeatureSet_RepeatedFieldEncoding.REPEATED_FIELD_ENCODING_UNKNOWN; + message.utf8Validation = object.utf8Validation ?? FeatureSet_Utf8Validation.UTF8_VALIDATION_UNKNOWN; + message.messageEncoding = object.messageEncoding ?? FeatureSet_MessageEncoding.MESSAGE_ENCODING_UNKNOWN; + message.jsonFormat = object.jsonFormat ?? FeatureSet_JsonFormat.JSON_FORMAT_UNKNOWN; + return message; + }, +}; + +function createBaseFeatureSetDefaults(): FeatureSetDefaults { + return { defaults: [], minimumEdition: Edition.EDITION_UNKNOWN, maximumEdition: Edition.EDITION_UNKNOWN }; +} + +export const FeatureSetDefaults = { + encode(message: FeatureSetDefaults, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.defaults) { + FeatureSetDefaults_FeatureSetEditionDefault.encode(v!, writer.uint32(10).fork()).ldelim(); + } + if (message.minimumEdition !== undefined && message.minimumEdition !== Edition.EDITION_UNKNOWN) { + writer.uint32(32).int32(editionToNumber(message.minimumEdition)); + } + if (message.maximumEdition !== undefined && message.maximumEdition !== Edition.EDITION_UNKNOWN) { + writer.uint32(40).int32(editionToNumber(message.maximumEdition)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FeatureSetDefaults { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFeatureSetDefaults(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.defaults.push(FeatureSetDefaults_FeatureSetEditionDefault.decode(reader, reader.uint32())); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.minimumEdition = editionFromJSON(reader.int32()); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.maximumEdition = editionFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FeatureSetDefaults { + return FeatureSetDefaults.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FeatureSetDefaults { + const message = createBaseFeatureSetDefaults(); + message.defaults = object.defaults?.map((e) => FeatureSetDefaults_FeatureSetEditionDefault.fromPartial(e)) || []; + message.minimumEdition = object.minimumEdition ?? Edition.EDITION_UNKNOWN; + message.maximumEdition = object.maximumEdition ?? Edition.EDITION_UNKNOWN; + return message; + }, +}; + +function createBaseFeatureSetDefaults_FeatureSetEditionDefault(): FeatureSetDefaults_FeatureSetEditionDefault { + return { edition: Edition.EDITION_UNKNOWN, overridableFeatures: undefined, fixedFeatures: undefined }; +} + +export const FeatureSetDefaults_FeatureSetEditionDefault = { + encode(message: FeatureSetDefaults_FeatureSetEditionDefault, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.edition !== undefined && message.edition !== Edition.EDITION_UNKNOWN) { + writer.uint32(24).int32(editionToNumber(message.edition)); + } + if (message.overridableFeatures !== undefined) { + FeatureSet.encode(message.overridableFeatures, writer.uint32(34).fork()).ldelim(); + } + if (message.fixedFeatures !== undefined) { + FeatureSet.encode(message.fixedFeatures, writer.uint32(42).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FeatureSetDefaults_FeatureSetEditionDefault { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFeatureSetDefaults_FeatureSetEditionDefault(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 3: + if (tag !== 24) { + break; + } + + message.edition = editionFromJSON(reader.int32()); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.overridableFeatures = FeatureSet.decode(reader, reader.uint32()); + continue; + case 5: + if (tag !== 42) { + break; + } + + message.fixedFeatures = FeatureSet.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FeatureSetDefaults_FeatureSetEditionDefault { + return FeatureSetDefaults_FeatureSetEditionDefault.fromPartial(base ?? {}); + }, + fromPartial( + object: DeepPartial, + ): FeatureSetDefaults_FeatureSetEditionDefault { + const message = createBaseFeatureSetDefaults_FeatureSetEditionDefault(); + message.edition = object.edition ?? Edition.EDITION_UNKNOWN; + message.overridableFeatures = (object.overridableFeatures !== undefined && object.overridableFeatures !== null) + ? FeatureSet.fromPartial(object.overridableFeatures) + : undefined; + message.fixedFeatures = (object.fixedFeatures !== undefined && object.fixedFeatures !== null) + ? FeatureSet.fromPartial(object.fixedFeatures) + : undefined; + return message; + }, +}; + +function createBaseSourceCodeInfo(): SourceCodeInfo { + return { location: [] }; +} + +export const SourceCodeInfo = { + encode(message: SourceCodeInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.location) { + SourceCodeInfo_Location.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SourceCodeInfo { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSourceCodeInfo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.location.push(SourceCodeInfo_Location.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SourceCodeInfo { + return SourceCodeInfo.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SourceCodeInfo { + const message = createBaseSourceCodeInfo(); + message.location = object.location?.map((e) => SourceCodeInfo_Location.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseSourceCodeInfo_Location(): SourceCodeInfo_Location { + return { path: [], span: [], leadingComments: "", trailingComments: "", leadingDetachedComments: [] }; +} + +export const SourceCodeInfo_Location = { + encode(message: SourceCodeInfo_Location, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + writer.uint32(10).fork(); + for (const v of message.path) { + writer.int32(v); + } + writer.ldelim(); + writer.uint32(18).fork(); + for (const v of message.span) { + writer.int32(v); + } + writer.ldelim(); + if (message.leadingComments !== undefined && message.leadingComments !== "") { + writer.uint32(26).string(message.leadingComments); + } + if (message.trailingComments !== undefined && message.trailingComments !== "") { + writer.uint32(34).string(message.trailingComments); + } + for (const v of message.leadingDetachedComments) { + writer.uint32(50).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): SourceCodeInfo_Location { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseSourceCodeInfo_Location(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag === 8) { + message.path.push(reader.int32()); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.path.push(reader.int32()); + } + + continue; + } + + break; + case 2: + if (tag === 16) { + message.span.push(reader.int32()); + + continue; + } + + if (tag === 18) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.span.push(reader.int32()); + } + + continue; + } + + break; + case 3: + if (tag !== 26) { + break; + } + + message.leadingComments = reader.string(); + continue; + case 4: + if (tag !== 34) { + break; + } + + message.trailingComments = reader.string(); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.leadingDetachedComments.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): SourceCodeInfo_Location { + return SourceCodeInfo_Location.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): SourceCodeInfo_Location { + const message = createBaseSourceCodeInfo_Location(); + message.path = object.path?.map((e) => e) || []; + message.span = object.span?.map((e) => e) || []; + message.leadingComments = object.leadingComments ?? ""; + message.trailingComments = object.trailingComments ?? ""; + message.leadingDetachedComments = object.leadingDetachedComments?.map((e) => e) || []; + return message; + }, +}; + +function createBaseGeneratedCodeInfo(): GeneratedCodeInfo { + return { annotation: [] }; +} + +export const GeneratedCodeInfo = { + encode(message: GeneratedCodeInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.annotation) { + GeneratedCodeInfo_Annotation.encode(v!, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GeneratedCodeInfo { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGeneratedCodeInfo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.annotation.push(GeneratedCodeInfo_Annotation.decode(reader, reader.uint32())); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GeneratedCodeInfo { + return GeneratedCodeInfo.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GeneratedCodeInfo { + const message = createBaseGeneratedCodeInfo(); + message.annotation = object.annotation?.map((e) => GeneratedCodeInfo_Annotation.fromPartial(e)) || []; + return message; + }, +}; + +function createBaseGeneratedCodeInfo_Annotation(): GeneratedCodeInfo_Annotation { + return { path: [], sourceFile: "", begin: 0, end: 0, semantic: GeneratedCodeInfo_Annotation_Semantic.NONE }; +} + +export const GeneratedCodeInfo_Annotation = { + encode(message: GeneratedCodeInfo_Annotation, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + writer.uint32(10).fork(); + for (const v of message.path) { + writer.int32(v); + } + writer.ldelim(); + if (message.sourceFile !== undefined && message.sourceFile !== "") { + writer.uint32(18).string(message.sourceFile); + } + if (message.begin !== undefined && message.begin !== 0) { + writer.uint32(24).int32(message.begin); + } + if (message.end !== undefined && message.end !== 0) { + writer.uint32(32).int32(message.end); + } + if (message.semantic !== undefined && message.semantic !== GeneratedCodeInfo_Annotation_Semantic.NONE) { + writer.uint32(40).int32(generatedCodeInfo_Annotation_SemanticToNumber(message.semantic)); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GeneratedCodeInfo_Annotation { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGeneratedCodeInfo_Annotation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag === 8) { + message.path.push(reader.int32()); + + continue; + } + + if (tag === 10) { + const end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) { + message.path.push(reader.int32()); + } + + continue; + } + + break; + case 2: + if (tag !== 18) { + break; + } + + message.sourceFile = reader.string(); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.begin = reader.int32(); + continue; + case 4: + if (tag !== 32) { + break; + } + + message.end = reader.int32(); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.semantic = generatedCodeInfo_Annotation_SemanticFromJSON(reader.int32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): GeneratedCodeInfo_Annotation { + return GeneratedCodeInfo_Annotation.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GeneratedCodeInfo_Annotation { + const message = createBaseGeneratedCodeInfo_Annotation(); + message.path = object.path?.map((e) => e) || []; + message.sourceFile = object.sourceFile ?? ""; + message.begin = object.begin ?? 0; + message.end = object.end ?? 0; + message.semantic = object.semantic ?? GeneratedCodeInfo_Annotation_Semantic.NONE; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function longToNumber(long: Long): number { + if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + return long.toNumber(); +} + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts new file mode 100644 index 0000000..fe069a9 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts @@ -0,0 +1,165 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/duration.proto + +/* eslint-disable */ +import Long from "long"; +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** + * A Duration represents a signed, fixed-length span of time represented + * as a count of seconds and fractions of seconds at nanosecond + * resolution. It is independent of any calendar and concepts like "day" + * or "month". It is related to Timestamp in that the difference between + * two Timestamp values is a Duration and it can be added or subtracted + * from a Timestamp. Range is approximately +-10,000 years. + * + * # Examples + * + * Example 1: Compute Duration from two Timestamps in pseudo code. + * + * Timestamp start = ...; + * Timestamp end = ...; + * Duration duration = ...; + * + * duration.seconds = end.seconds - start.seconds; + * duration.nanos = end.nanos - start.nanos; + * + * if (duration.seconds < 0 && duration.nanos > 0) { + * duration.seconds += 1; + * duration.nanos -= 1000000000; + * } else if (duration.seconds > 0 && duration.nanos < 0) { + * duration.seconds -= 1; + * duration.nanos += 1000000000; + * } + * + * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. + * + * Timestamp start = ...; + * Duration duration = ...; + * Timestamp end = ...; + * + * end.seconds = start.seconds + duration.seconds; + * end.nanos = start.nanos + duration.nanos; + * + * if (end.nanos < 0) { + * end.seconds -= 1; + * end.nanos += 1000000000; + * } else if (end.nanos >= 1000000000) { + * end.seconds += 1; + * end.nanos -= 1000000000; + * } + * + * Example 3: Compute Duration from datetime.timedelta in Python. + * + * td = datetime.timedelta(days=3, minutes=10) + * duration = Duration() + * duration.FromTimedelta(td) + * + * # JSON Mapping + * + * In JSON format, the Duration type is encoded as a string rather than an + * object, where the string ends in the suffix "s" (indicating seconds) and + * is preceded by the number of seconds, with nanoseconds expressed as + * fractional seconds. For example, 3 seconds with 0 nanoseconds should be + * encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should + * be expressed in JSON format as "3.000000001s", and 3 seconds and 1 + * microsecond should be expressed in JSON format as "3.000001s". + */ +export interface Duration { + /** + * Signed seconds of the span of time. Must be from -315,576,000,000 + * to +315,576,000,000 inclusive. Note: these bounds are computed from: + * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + */ + seconds: number; + /** + * Signed fractions of a second at nanosecond resolution of the span + * of time. Durations less than one second are represented with a 0 + * `seconds` field and a positive or negative `nanos` field. For durations + * of one second or more, a non-zero value for the `nanos` field must be + * of the same sign as the `seconds` field. Must be from -999,999,999 + * to +999,999,999 inclusive. + */ + nanos: number; +} + +function createBaseDuration(): Duration { + return { seconds: 0, nanos: 0 }; +} + +export const Duration = { + encode(message: Duration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.seconds !== 0) { + writer.uint32(8).int64(message.seconds); + } + if (message.nanos !== 0) { + writer.uint32(16).int32(message.nanos); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Duration { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseDuration(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.seconds = longToNumber(reader.int64() as Long); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.nanos = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Duration { + return Duration.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Duration { + const message = createBaseDuration(); + message.seconds = object.seconds ?? 0; + message.nanos = object.nanos ?? 0; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function longToNumber(long: Long): number { + if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + return long.toNumber(); +} + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts new file mode 100644 index 0000000..9a8275c --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts @@ -0,0 +1,64 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/empty.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** + * A generic empty message that you can re-use to avoid defining duplicated + * empty messages in your APIs. A typical example is to use it as the request + * or the response type of an API method. For instance: + * + * service Foo { + * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); + * } + */ +export interface Empty { +} + +function createBaseEmpty(): Empty { + return {}; +} + +export const Empty = { + encode(_: Empty, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Empty { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseEmpty(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Empty { + return Empty.fromPartial(base ?? {}); + }, + fromPartial(_: DeepPartial): Empty { + const message = createBaseEmpty(); + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts new file mode 100644 index 0000000..a1b5fa3 --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts @@ -0,0 +1,278 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/field_mask.proto + +/* eslint-disable */ +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** + * `FieldMask` represents a set of symbolic field paths, for example: + * + * paths: "f.a" + * paths: "f.b.d" + * + * Here `f` represents a field in some root message, `a` and `b` + * fields in the message found in `f`, and `d` a field found in the + * message in `f.b`. + * + * Field masks are used to specify a subset of fields that should be + * returned by a get operation or modified by an update operation. + * Field masks also have a custom JSON encoding (see below). + * + * # Field Masks in Projections + * + * When used in the context of a projection, a response message or + * sub-message is filtered by the API to only contain those fields as + * specified in the mask. For example, if the mask in the previous + * example is applied to a response message as follows: + * + * f { + * a : 22 + * b { + * d : 1 + * x : 2 + * } + * y : 13 + * } + * z: 8 + * + * The result will not contain specific values for fields x,y and z + * (their value will be set to the default, and omitted in proto text + * output): + * + * f { + * a : 22 + * b { + * d : 1 + * } + * } + * + * A repeated field is not allowed except at the last position of a + * paths string. + * + * If a FieldMask object is not present in a get operation, the + * operation applies to all fields (as if a FieldMask of all fields + * had been specified). + * + * Note that a field mask does not necessarily apply to the + * top-level response message. In case of a REST get operation, the + * field mask applies directly to the response, but in case of a REST + * list operation, the mask instead applies to each individual message + * in the returned resource list. In case of a REST custom method, + * other definitions may be used. Where the mask applies will be + * clearly documented together with its declaration in the API. In + * any case, the effect on the returned resource/resources is required + * behavior for APIs. + * + * # Field Masks in Update Operations + * + * A field mask in update operations specifies which fields of the + * targeted resource are going to be updated. The API is required + * to only change the values of the fields as specified in the mask + * and leave the others untouched. If a resource is passed in to + * describe the updated values, the API ignores the values of all + * fields not covered by the mask. + * + * If a repeated field is specified for an update operation, new values will + * be appended to the existing repeated field in the target resource. Note that + * a repeated field is only allowed in the last position of a `paths` string. + * + * If a sub-message is specified in the last position of the field mask for an + * update operation, then new value will be merged into the existing sub-message + * in the target resource. + * + * For example, given the target message: + * + * f { + * b { + * d: 1 + * x: 2 + * } + * c: [1] + * } + * + * And an update message: + * + * f { + * b { + * d: 10 + * } + * c: [2] + * } + * + * then if the field mask is: + * + * paths: ["f.b", "f.c"] + * + * then the result will be: + * + * f { + * b { + * d: 10 + * x: 2 + * } + * c: [1, 2] + * } + * + * An implementation may provide options to override this default behavior for + * repeated and message fields. + * + * In order to reset a field's value to the default, the field must + * be in the mask and set to the default value in the provided resource. + * Hence, in order to reset all fields of a resource, provide a default + * instance of the resource and set all fields in the mask, or do + * not provide a mask as described below. + * + * If a field mask is not present on update, the operation applies to + * all fields (as if a field mask of all fields has been specified). + * Note that in the presence of schema evolution, this may mean that + * fields the client does not know and has therefore not filled into + * the request will be reset to their default. If this is unwanted + * behavior, a specific service may require a client to always specify + * a field mask, producing an error if not. + * + * As with get operations, the location of the resource which + * describes the updated values in the request message depends on the + * operation kind. In any case, the effect of the field mask is + * required to be honored by the API. + * + * ## Considerations for HTTP REST + * + * The HTTP kind of an update operation which uses a field mask must + * be set to PATCH instead of PUT in order to satisfy HTTP semantics + * (PUT must only be used for full updates). + * + * # JSON Encoding of Field Masks + * + * In JSON, a field mask is encoded as a single string where paths are + * separated by a comma. Fields name in each path are converted + * to/from lower-camel naming conventions. + * + * As an example, consider the following message declarations: + * + * message Profile { + * User user = 1; + * Photo photo = 2; + * } + * message User { + * string display_name = 1; + * string address = 2; + * } + * + * In proto a field mask for `Profile` may look as such: + * + * mask { + * paths: "user.display_name" + * paths: "photo" + * } + * + * In JSON, the same mask is represented as below: + * + * { + * mask: "user.displayName,photo" + * } + * + * # Field Masks and Oneof Fields + * + * Field masks treat fields in oneofs just as regular fields. Consider the + * following message: + * + * message SampleMessage { + * oneof test_oneof { + * string name = 4; + * SubMessage sub_message = 9; + * } + * } + * + * The field mask can be: + * + * mask { + * paths: "name" + * } + * + * Or: + * + * mask { + * paths: "sub_message" + * } + * + * Note that oneof type names ("test_oneof" in this case) cannot be used in + * paths. + * + * ## Field Mask Verification + * + * The implementation of any API method which has a FieldMask type field in the + * request should verify the included field paths, and return an + * `INVALID_ARGUMENT` error if any path is unmappable. + */ +export interface FieldMask { + /** The set of field mask paths. */ + paths: string[]; +} + +function createBaseFieldMask(): FieldMask { + return { paths: [] }; +} + +export const FieldMask = { + encode(message: FieldMask, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + for (const v of message.paths) { + writer.uint32(10).string(v!); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): FieldMask { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseFieldMask(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.paths.push(reader.string()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): FieldMask { + return FieldMask.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): FieldMask { + const message = createBaseFieldMask(); + message.paths = object.paths?.map((e) => e) || []; + return message; + }, + + wrap(paths: string[]): FieldMask { + const result = createBaseFieldMask(); + result.paths = paths; + return result; + }, + + unwrap(message: FieldMask): string[] { + return message.paths; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts b/api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts new file mode 100644 index 0000000..77c128c --- /dev/null +++ b/api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts @@ -0,0 +1,194 @@ +// Code generated by protoc-gen-ts_proto. DO NOT EDIT. +// versions: +// protoc-gen-ts_proto v1.176.0 +// protoc unknown +// source: google/protobuf/timestamp.proto + +/* eslint-disable */ +import Long from "long"; +import _m0 from "protobufjs/minimal"; + +export const protobufPackage = "google.protobuf"; + +/** + * A Timestamp represents a point in time independent of any time zone or local + * calendar, encoded as a count of seconds and fractions of seconds at + * nanosecond resolution. The count is relative to an epoch at UTC midnight on + * January 1, 1970, in the proleptic Gregorian calendar which extends the + * Gregorian calendar backwards to year one. + * + * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap + * second table is needed for interpretation, using a [24-hour linear + * smear](https://developers.google.com/time/smear). + * + * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By + * restricting to that range, we ensure that we can convert to and from [RFC + * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. + * + * # Examples + * + * Example 1: Compute Timestamp from POSIX `time()`. + * + * Timestamp timestamp; + * timestamp.set_seconds(time(NULL)); + * timestamp.set_nanos(0); + * + * Example 2: Compute Timestamp from POSIX `gettimeofday()`. + * + * struct timeval tv; + * gettimeofday(&tv, NULL); + * + * Timestamp timestamp; + * timestamp.set_seconds(tv.tv_sec); + * timestamp.set_nanos(tv.tv_usec * 1000); + * + * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. + * + * FILETIME ft; + * GetSystemTimeAsFileTime(&ft); + * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; + * + * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z + * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. + * Timestamp timestamp; + * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); + * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); + * + * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. + * + * long millis = System.currentTimeMillis(); + * + * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) + * .setNanos((int) ((millis % 1000) * 1000000)).build(); + * + * Example 5: Compute Timestamp from Java `Instant.now()`. + * + * Instant now = Instant.now(); + * + * Timestamp timestamp = + * Timestamp.newBuilder().setSeconds(now.getEpochSecond()) + * .setNanos(now.getNano()).build(); + * + * Example 6: Compute Timestamp from current time in Python. + * + * timestamp = Timestamp() + * timestamp.GetCurrentTime() + * + * # JSON Mapping + * + * In JSON format, the Timestamp type is encoded as a string in the + * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the + * format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" + * where {year} is always expressed using four digits while {month}, {day}, + * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional + * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), + * are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone + * is required. A proto3 JSON serializer should always use UTC (as indicated by + * "Z") when printing the Timestamp type and a proto3 JSON parser should be + * able to accept both UTC and other timezones (as indicated by an offset). + * + * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past + * 01:30 UTC on January 15, 2017. + * + * In JavaScript, one can convert a Date object to this format using the + * standard + * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) + * method. In Python, a standard `datetime.datetime` object can be converted + * to this format using + * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with + * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use + * the Joda Time's [`ISODateTimeFormat.dateTime()`]( + * http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() + * ) to obtain a formatter capable of generating timestamps in this format. + */ +export interface Timestamp { + /** + * Represents seconds of UTC time since Unix epoch + * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + * 9999-12-31T23:59:59Z inclusive. + */ + seconds: number; + /** + * Non-negative fractions of a second at nanosecond resolution. Negative + * second values with fractions must still have non-negative nanos values + * that count forward in time. Must be from 0 to 999,999,999 + * inclusive. + */ + nanos: number; +} + +function createBaseTimestamp(): Timestamp { + return { seconds: 0, nanos: 0 }; +} + +export const Timestamp = { + encode(message: Timestamp, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.seconds !== 0) { + writer.uint32(8).int64(message.seconds); + } + if (message.nanos !== 0) { + writer.uint32(16).int32(message.nanos); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): Timestamp { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseTimestamp(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.seconds = longToNumber(reader.int64() as Long); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.nanos = reader.int32(); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + create(base?: DeepPartial): Timestamp { + return Timestamp.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): Timestamp { + const message = createBaseTimestamp(); + message.seconds = object.seconds ?? 0; + message.nanos = object.nanos ?? 0; + return message; + }, +}; + +type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; + +export type DeepPartial = T extends Builtin ? T + : T extends globalThis.Array ? globalThis.Array> + : T extends ReadonlyArray ? ReadonlyArray> + : T extends {} ? { [K in keyof T]?: DeepPartial } + : Partial; + +function longToNumber(long: Long): number { + if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + return long.toNumber(); +} + +if (_m0.util.Long !== Long) { + _m0.util.Long = Long as any; + _m0.configure(); +} diff --git a/api/memos-v0.19.1.ts b/api/memos-v0.19.1.ts index 47a5c52..e745d03 100644 --- a/api/memos-v0.19.1.ts +++ b/api/memos-v0.19.1.ts @@ -3,15 +3,12 @@ import { DailyRecordType, FetchError, ResourceType } from "types/usememos"; import * as log from "utils/log"; export class MemosClient0191 { - private origin: string; private axios: AxiosInstance; constructor( - private endpoint: string, // http://localhost:5230/api/v1 + private endpoint: string, // http://localhost:5230/ private token: string ) { - const { origin } = new URL(endpoint); - this.origin = origin; this.axios = axios.create({ headers: { Authorization: `Bearer ${token}`, @@ -27,7 +24,7 @@ export class MemosClient0191 { try { const { data } = await this.axios.get< DailyRecordType[] | FetchError - >(this.endpoint + `/memo`, { + >(this.endpoint + `api/v1/memo`, { params: { limit: limit, offset: offset, @@ -49,7 +46,7 @@ export class MemosClient0191 { listResources = async () => { const { data } = await this.axios.get( - this.endpoint + `/resource` + this.endpoint + `api/v1/resource` ); return data; }; @@ -59,7 +56,7 @@ export class MemosClient0191 { * @returns ArrayBuffer of the resource that could write into a file */ getResourceBuffer = async (resource: ResourceType) => { - const resourceURL = `${this.origin}/o/r/${ + const resourceURL = `${this.endpoint}o/r/${ resource.uid || resource.name || resource.id }`; const { data } = await this.axios.get(resourceURL, { diff --git a/api/memos-v0.22.1.ts b/api/memos-v0.22.1.ts new file mode 100644 index 0000000..9fda601 --- /dev/null +++ b/api/memos-v0.22.1.ts @@ -0,0 +1,61 @@ +import { + createChannel, + createClientFactory, + FetchTransport, + Client, + Metadata, +} from "nice-grpc-web"; +import axios, { AxiosInstance } from "axios"; +import * as log from "utils/log"; +import { + ListMemosRequest, + MemoServiceDefinition, +} from "./memos-proto-v0.22.1/gen/api/v1/memo_service"; + +// export type ListMemosParams = { +// // The maximum number of memos to return. +// page_size: number; + +// // A page token, received from a previous `ListMemos` call. +// // Provide this to retrieve the subsequent page. +// page_token: string; + +// // Filter is used to filter memos returned in the list. +// // Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" +// filter: string; +// }; + +export class MemosClient0210 { + private memoCli: Client; + + constructor( + private endpoint: string, // http://localhost:5230/ + private token: string + ) { + const channel = createChannel( + endpoint, + FetchTransport({ + credentials: "include", + }) + ); + const clientFactory = createClientFactory().use((call, options) => + call.next(call.request, { + ...options, + metadata: Metadata(options.metadata).set( + "authorization", + `Bearer ${token}` + ), + })! + ); + + this.memoCli = clientFactory.create(MemoServiceDefinition, channel); + } + + listMemos = async (req: ListMemosRequest) => { + try { + const { memos } = await this.memoCli.listMemos(req); + } catch (error) { + log.error(`Failed to fetch daily memos: ${error}`); + } + }; +} diff --git a/gen-proto.sh b/gen-proto.sh new file mode 100755 index 0000000..177bbf5 --- /dev/null +++ b/gen-proto.sh @@ -0,0 +1,2 @@ +cd ./api/memos-proto-v0.22.1/ +buf generate diff --git a/package.json b/package.json index 2e80fb3..49d3e3c 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,10 @@ }, "dependencies": { "axios": "^1.6.8", + "long": "^5.2.3", + "nice-grpc-web": "^3.3.3", "obsidian-daily-notes-interface": "^0.9.4", + "protobufjs": "^7.3.0", "react": "^18.3.1", "react-dom": "^18.3.1" } diff --git a/tsconfig.json b/tsconfig.json index 76570a7..714ec90 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,8 @@ "module": "ESNext", "target": "ES6", "allowJs": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, "noImplicitAny": true, "moduleResolution": "node", "importHelpers": true, diff --git a/yarn.lock b/yarn.lock index ab02e71..004ec27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -133,6 +133,59 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + "@types/codemirror@5.60.8": version "5.60.8" resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-5.60.8.tgz#b647d04b470e8e1836dd84b2879988fc55c9de68" @@ -150,6 +203,13 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== +"@types/node@>=13.7.0": + version "20.12.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" + integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== + dependencies: + undici-types "~5.26.4" + "@types/node@^16.11.6": version "16.18.97" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.97.tgz#d7926a8030f0d714d555b4550c0cc7731495cfe5" @@ -262,6 +322,11 @@ "@typescript-eslint/types" "5.29.0" eslint-visitor-keys "^3.3.0" +abort-controller-x@^0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/abort-controller-x/-/abort-controller-x-0.4.3.tgz#ff269788386fabd58a7b6eeaafcb6cf55c2958e0" + integrity sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -479,11 +544,26 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + +js-base64@^3.7.2: + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +long@^5.0.0, long@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + loose-envify@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -526,6 +606,23 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +nice-grpc-common@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/nice-grpc-common/-/nice-grpc-common-2.0.2.tgz#e6aeebb2bd19d87114b351e291e30d79dd38acf7" + integrity sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ== + dependencies: + ts-error "^1.0.6" + +nice-grpc-web@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nice-grpc-web/-/nice-grpc-web-3.3.3.tgz#b66c1c7358b17019fb862023523383504a46a35c" + integrity sha512-sVz8n3tRwk8Iy8Lppek0qD1HFGexvy0915/uiXfQvOTUDHCsTJqcIEjmSQWLO6FZtZMwVMtPXrs9WZMNDrkcyQ== + dependencies: + abort-controller-x "^0.4.0" + isomorphic-ws "^5.0.0" + js-base64 "^3.7.2" + nice-grpc-common "^2.0.2" + obsidian-daily-notes-interface@^0.9.4: version "0.9.4" resolved "https://registry.yarnpkg.com/obsidian-daily-notes-interface/-/obsidian-daily-notes-interface-0.9.4.tgz#df085c5aa4c8c2b2b810185d4d9dc24344cb7604" @@ -559,6 +656,24 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +protobufjs@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" + integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -625,6 +740,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-error@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/ts-error/-/ts-error-1.0.6.tgz#277496f2a28de6c184cfce8dfd5cdd03a4e6b0fc" + integrity sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA== + tslib@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" @@ -651,3 +771,8 @@ typescript@4.7.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== From c9c94dc537662541731de3be4a33b106d11f8ca3 Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Sun, 26 May 2024 18:05:59 +0800 Subject: [PATCH 2/6] feat: use polymothy for different version api --- api/memos-v0.19.1.ts | 8 +- api/memos-v0.22.1.ts | 22 +- main.tsx | 19 +- services/DailyMemos/DailyMemos.ts | 41 ++-- ...eModifierRegex.ts => DailyNoteModifier.ts} | 0 services/DailyMemos/MemosPaginator.ts | 216 +++++++++++++++++- types/PluginSettings.ts | 5 + 7 files changed, 280 insertions(+), 31 deletions(-) rename services/DailyMemos/{DailyNoteModifierRegex.ts => DailyNoteModifier.ts} (100%) diff --git a/api/memos-v0.19.1.ts b/api/memos-v0.19.1.ts index e745d03..d72fb8c 100644 --- a/api/memos-v0.19.1.ts +++ b/api/memos-v0.19.1.ts @@ -6,7 +6,7 @@ export class MemosClient0191 { private axios: AxiosInstance; constructor( - private endpoint: string, // http://localhost:5230/ + private endpoint: string, // http://localhost:5230 private token: string ) { this.axios = axios.create({ @@ -24,7 +24,7 @@ export class MemosClient0191 { try { const { data } = await this.axios.get< DailyRecordType[] | FetchError - >(this.endpoint + `api/v1/memo`, { + >(this.endpoint + `/api/v1/memo`, { params: { limit: limit, offset: offset, @@ -46,7 +46,7 @@ export class MemosClient0191 { listResources = async () => { const { data } = await this.axios.get( - this.endpoint + `api/v1/resource` + this.endpoint + `/api/v1/resource` ); return data; }; @@ -56,7 +56,7 @@ export class MemosClient0191 { * @returns ArrayBuffer of the resource that could write into a file */ getResourceBuffer = async (resource: ResourceType) => { - const resourceURL = `${this.endpoint}o/r/${ + const resourceURL = `${this.endpoint}/o/r/${ resource.uid || resource.name || resource.id }`; const { data } = await this.axios.get(resourceURL, { diff --git a/api/memos-v0.22.1.ts b/api/memos-v0.22.1.ts index 9fda601..065f009 100644 --- a/api/memos-v0.22.1.ts +++ b/api/memos-v0.22.1.ts @@ -29,7 +29,7 @@ export class MemosClient0210 { private memoCli: Client; constructor( - private endpoint: string, // http://localhost:5230/ + private endpoint: string, // http://localhost:5230 private token: string ) { const channel = createChannel( @@ -38,14 +38,15 @@ export class MemosClient0210 { credentials: "include", }) ); - const clientFactory = createClientFactory().use((call, options) => - call.next(call.request, { - ...options, - metadata: Metadata(options.metadata).set( - "authorization", - `Bearer ${token}` - ), - })! + const clientFactory = createClientFactory().use( + (call, options) => + call.next(call.request, { + ...options, + metadata: Metadata(options.metadata).set( + "authorization", + `Bearer ${token}` + ), + })! ); this.memoCli = clientFactory.create(MemoServiceDefinition, channel); @@ -53,7 +54,8 @@ export class MemosClient0210 { listMemos = async (req: ListMemosRequest) => { try { - const { memos } = await this.memoCli.listMemos(req); + const resp = await this.memoCli.listMemos(req); + return resp; } catch (error) { log.error(`Failed to fetch daily memos: ${error}`); } diff --git a/main.tsx b/main.tsx index 9506245..32647d8 100644 --- a/main.tsx +++ b/main.tsx @@ -20,6 +20,7 @@ const DEFAULT_SETTINGS: PluginSettings = { usememosAPI: "https://usememos.com/api/v1", usememosToken: "", attachmentFolder: "Attachments", + memosAPIVersion: "v0.19.1", }; export default class MyPlugin extends Plugin { @@ -121,10 +122,26 @@ class SampleSettingTab extends PluginSettingTab { }); }); }); + + new Setting(this.containerEl) + .setName("Memos API Version") + .setDesc("Memos API Version") + .addDropdown((dropDown)=>{ + dropDown.addOptions({ + "v0.19.1": "v0.19.1", + "v0.22.1": "v0.22.1", + }); + dropDown.setValue(this.plugin.settings.memosAPIVersion); + dropDown.onChange((value) => { + this.saveSettings({ + memosAPIVersion: value as "v0.19.1" | "v0.22.1", + }); + }) + }) new Setting(this.containerEl) .setName("Usememos API URL") - .setDesc("Usememos API URL.") + .setDesc("Usememos API URL, e.g. http://localhost:5230") .addText((textfield) => { textfield.setPlaceholder(DEFAULT_SETTINGS.usememosAPI); textfield.setValue(this.plugin.settings.usememosAPI); diff --git a/services/DailyMemos/DailyMemos.ts b/services/DailyMemos/DailyMemos.ts index f65cff0..5a46d44 100644 --- a/services/DailyMemos/DailyMemos.ts +++ b/services/DailyMemos/DailyMemos.ts @@ -11,8 +11,8 @@ import { DailyRecordType, FetchError, ResourceType } from "types/usememos"; import * as log from "utils/log"; import { MemosClient0191 } from "api/memos-v0.19.1"; import { generateFileName } from "./memos-util"; -import { MemosPaginator0191 } from "./MemosPaginator"; -import { DailyNoteModifier } from "./DailyNoteModifierRegex"; +import { MemosPaginator, MemosPaginatorFactory } from "./MemosPaginator"; +import { DailyNoteModifier } from "./DailyNoteModifier"; class DailyNoteManager { private allDailyNotes: Record; @@ -42,7 +42,8 @@ export class DailyMemos { private settings: PluginSettings; private localKey: string; private memosClient: MemosClient0191; - private memosPaginator: MemosPaginator0191; + private memosPaginatorFactory: MemosPaginatorFactory; + private memosPaginator: MemosPaginator; constructor(app: App, settings: PluginSettings) { if (!settings.usememosAPI) { @@ -62,26 +63,38 @@ export class DailyMemos { this.localKey = `periodic-para-daily-record-last-time-${this.settings.usememosToken}`; const lastTime = window.localStorage.getItem(this.localKey) || ""; - this.memosPaginator = new MemosPaginator0191( - this.memosClient, - lastTime - ); + this.memosPaginatorFactory = new MemosPaginatorFactory(this.settings); + this.memosPaginator = + this.memosPaginatorFactory.createMemosPaginator(lastTime); } + /** + * Force syncing daily memos, ignore the lastTime. + * After syncing, save the lastTime to localStorage, and reload the memosPaginator. + */ forceSync = async () => { log.info("Force syncing daily memos..."); - const forcePaginator = new MemosPaginator0191(this.memosClient, ""); + const forcePaginator = + this.memosPaginatorFactory.createMemosPaginator(""); this.downloadResource(); this.insertDailyMemos(forcePaginator); this.memosPaginator = forcePaginator; }; + /** + * Sync daily memos, only sync the memos after the lastTime. + * After syncing, save the lastTime to localStorage. + */ sync = async () => { log.info("Syncing daily memos..."); this.downloadResource(); this.insertDailyMemos(this.memosPaginator); }; + /** + * Sync daily memos for the current daily note file. + * If the current file is not a daily note, do nothing. + */ syncForCurrentFile = async () => { const view = this.app.workspace.getActiveViewOfType(MarkdownView); if (!view) { @@ -100,11 +113,11 @@ export class DailyMemos { log.debug("Failed to get date from file."); return; } - const currentMomentMmemosPaginator = new MemosPaginator0191( - this.memosClient, - "", - (date) => date === currentDate - ); + const currentMomentMmemosPaginator = + this.memosPaginatorFactory.createMemosPaginator( + "", + (date) => date === currentDate + ); this.downloadResource(); this.insertDailyMemos(currentMomentMmemosPaginator); @@ -188,7 +201,7 @@ export class DailyMemos { } }; - private insertDailyMemos = async (memosPaginator: MemosPaginator0191) => { + private insertDailyMemos = async (memosPaginator: MemosPaginator) => { const dailyNoteManager = new DailyNoteManager(); const dailyNoteModifier = new DailyNoteModifier( this.settings.dailyMemosHeader diff --git a/services/DailyMemos/DailyNoteModifierRegex.ts b/services/DailyMemos/DailyNoteModifier.ts similarity index 100% rename from services/DailyMemos/DailyNoteModifierRegex.ts rename to services/DailyMemos/DailyNoteModifier.ts diff --git a/services/DailyMemos/MemosPaginator.ts b/services/DailyMemos/MemosPaginator.ts index b9631a4..b4fe10b 100644 --- a/services/DailyMemos/MemosPaginator.ts +++ b/services/DailyMemos/MemosPaginator.ts @@ -2,6 +2,10 @@ import { MemosClient0191 } from "api/memos-v0.19.1"; import * as log from "utils/log"; import { DailyRecordType, ResourceType } from "types/usememos"; import { generateFileLink } from "./memos-util"; +import { MemosClient0210 } from "api/memos-v0.22.1"; +import { Memo } from "api/memos-proto-v0.22.1/gen/api/v1/memo_service"; +import { Resource } from "api/memos-proto-v0.22.1/gen/api/v1/resource_service"; +import { PluginSettings } from "types/PluginSettings"; /** * @@ -58,7 +62,53 @@ function formatDailyRecord(record: DailyRecordType): [string, string, string] { return [date, String(timeStamp), finalTargetContent]; } -export class MemosPaginator0191 { +export type MemosPaginator = { + foreach: ( + handle: ([today, dailyMemosForToday]: [ + string, // date, format "YYYY-MM-DD" + Record // daily memos for today, map + ]) => Promise + ) => Promise; +}; + +/** + * MemosPaginatorFactory + * Create MemosPaginator based on settings + * it will create different version of MemosPaginator + * by checking the settings.memosAPIVersion + */ +export class MemosPaginatorFactory { + constructor(private settings: PluginSettings) {} + createMemosPaginator = ( + lastTime?: string, + filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ): MemosPaginator => { + if (this.settings.memosAPIVersion === "v0.22.1") { + return new MemosPaginator0220( + new MemosClient0210( + this.settings.usememosAPI, + this.settings.usememosToken + ), + lastTime, + filter + ); + } + return new MemosPaginator0191( + new MemosClient0191( + this.settings.usememosAPI, + this.settings.usememosToken + ), + lastTime, + filter + ); + }; +} + + +class MemosPaginator0191 { private limit: number; private offset: number; private lastTime: string; @@ -112,7 +162,10 @@ export class MemosPaginator0191 { await Promise.all( Object.entries(dailyMemosByDay).map( async ([today, dailyMemosForToday]) => { - if (this.filter && !this.filter(today, dailyMemosForToday)){ + if ( + this.filter && + !this.filter(today, dailyMemosForToday) + ) { return; } await handle([today, dailyMemosForToday]); @@ -145,3 +198,162 @@ export class MemosPaginator0191 { return dailyMemosByDay; }; } + +class MemosPaginator0220 { + private pageSize: number; + private pageToken: string; + private lastTime: string; + + constructor( + private client: MemosClient0210, + lastTime?: string, + private filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ) { + this.pageSize = 50; + this.pageToken = ""; + this.lastTime = lastTime || ""; + } + + /** + * return lastTime + * @param handle + * @returns + */ + foreach = async ( + handle: ([today, dailyMemosForToday]: [ + string, // date, format "YYYY-MM-DD" + Record // daily memos for today, map + ]) => Promise + ) => { + this.pageToken = ""; // iterate from newest, reset pageToken + while (true) { + const resp = await this.client.listMemos({ + pageSize: this.pageSize, + pageToken: this.pageToken, + filter: "", + }); + if (!resp) { + log.info("No new daily memos found."); + this.lastTime = Date.now().toString(); + return this.lastTime; + } + const { memos, nextPageToken } = resp; + + const mostRecentRecordTimeStamp = memos[0]?.updateTime + ? window.moment(memos[0]?.updateTime).unix() + : window.moment(memos[0]?.createTime).unix(); + + if ( + !memos.length || + mostRecentRecordTimeStamp * 1000 < Number(this.lastTime) + ) { + // bug if one memo pinned to top + // but it's not a big deal, use sync for current daily notes + log.info("No new daily memos found."); + this.lastTime = Date.now().toString(); + return this.lastTime; + } + + const dailyMemosByDay = this.generalizeDailyMemos(memos); + + await Promise.all( + Object.entries(dailyMemosByDay).map( + async ([today, dailyMemosForToday]) => { + if ( + this.filter && + !this.filter(today, dailyMemosForToday) + ) { + return; + } + await handle([today, dailyMemosForToday]); + } + ) + ); + + this.lastTime = String(mostRecentRecordTimeStamp * 1000); + // if (!nextPageToken) { + // return this.lastTime; + // } + this.pageToken = nextPageToken; + } + }; + + // generalize daily memos by day and timestamp + // map> + private generalizeDailyMemos = (memos: Memo[]) => { + const dailyMemosByDay: Record> = {}; + for (const memo of memos) { + if (!memo.content && !memo.resources?.length) { + continue; + } + + const [date, timestamp, formattedRecord] = + formatDailyRecord0221(memo); + + if (!dailyMemosByDay[date]) { + dailyMemosByDay[date] = {}; + } + + dailyMemosByDay[date][timestamp] = formattedRecord; + } + return dailyMemosByDay; + }; +} + +function formatDailyRecord0221(memo: Memo): [string, string, string] { + const { createTime, content, resources } = memo; + const timeStamp = window.moment(createTime).unix(); + const [date, time] = window + .moment(timeStamp * 1000) + .format("YYYY-MM-DD HH:mm") + .split(" "); + const [firstLine, ...otherLine] = content.trim().split("\n"); + const isTask = /^- \[.*?\]/.test(firstLine); // 目前仅支持 task + const isCode = /```/.test(firstLine); + + let targetFirstLine = ""; + + if (isTask) { + targetFirstLine = `- [ ] ${time} ${firstLine.replace( + /^- \[.*?\]/, + "" + )}`; + } else if (isCode) { + targetFirstLine = `- ${time}`; // 首行不允许存在代码片段 + otherLine.unshift(firstLine); + } else { + targetFirstLine = `- ${time} ${firstLine.replace(/^- /, "")}`; + } + + targetFirstLine += ` #daily-record ^${timeStamp}`; + + const targetOtherLine = otherLine?.length //剩余行 + ? "\n" + + otherLine + .filter((line: string) => line.trim()) + .map((line) => `\t${line}`) + .join("\n") + .trimEnd() + : ""; + const targetResourceLine = resources?.length // 资源文件 + ? "\n" + + resources + ?.map( + (resource: Resource) => + `\t- ${generateFileLink({ + id: resource.uid, + externalLink: resource.externalLink, + filename: resource.filename, + name: resource.name, + })}` + ) + .join("\n") + : ""; + const finalTargetContent = + targetFirstLine + targetOtherLine + targetResourceLine; + + return [date, String(timeStamp), finalTargetContent]; +} diff --git a/types/PluginSettings.ts b/types/PluginSettings.ts index 1b55757..cdd3d90 100644 --- a/types/PluginSettings.ts +++ b/types/PluginSettings.ts @@ -15,4 +15,9 @@ export interface PluginSettings { * The folder for attachments. */ attachmentFolder: string; + + /** + * Memos Version, for using different version of memos API. + */ + memosAPIVersion: "v0.22.1" | "v0.19.1"; } From 42ce463118ad9032edbd3dfa2432a0b2dfb9fca2 Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Sun, 26 May 2024 18:11:15 +0800 Subject: [PATCH 3/6] feat: rename v0.19.1 types for further refactor --- api/memos-v0.19.1.ts | 2 +- services/DailyMemos/DailyMemos.ts | 2 +- services/DailyMemos/MemosPaginator.ts | 6 +++--- services/DailyMemos/memos-util.ts | 2 +- types/{usememos.ts => memos-v0.19.1-types.ts} | 0 5 files changed, 6 insertions(+), 6 deletions(-) rename types/{usememos.ts => memos-v0.19.1-types.ts} (100%) diff --git a/api/memos-v0.19.1.ts b/api/memos-v0.19.1.ts index d72fb8c..7a9154b 100644 --- a/api/memos-v0.19.1.ts +++ b/api/memos-v0.19.1.ts @@ -1,5 +1,5 @@ import axios, { AxiosInstance } from "axios"; -import { DailyRecordType, FetchError, ResourceType } from "types/usememos"; +import { DailyRecordType, FetchError, ResourceType } from "types/memos-v0.19.1-types"; import * as log from "utils/log"; export class MemosClient0191 { diff --git a/services/DailyMemos/DailyMemos.ts b/services/DailyMemos/DailyMemos.ts index 5a46d44..1137ece 100644 --- a/services/DailyMemos/DailyMemos.ts +++ b/services/DailyMemos/DailyMemos.ts @@ -7,7 +7,7 @@ import { import type { Moment } from "moment"; import { App, MarkdownView, TFile, normalizePath } from "obsidian"; import { PluginSettings } from "types/PluginSettings"; -import { DailyRecordType, FetchError, ResourceType } from "types/usememos"; +import { DailyRecordType, FetchError, ResourceType } from "types/memos-v0.19.1-types"; import * as log from "utils/log"; import { MemosClient0191 } from "api/memos-v0.19.1"; import { generateFileName } from "./memos-util"; diff --git a/services/DailyMemos/MemosPaginator.ts b/services/DailyMemos/MemosPaginator.ts index b4fe10b..c32249f 100644 --- a/services/DailyMemos/MemosPaginator.ts +++ b/services/DailyMemos/MemosPaginator.ts @@ -1,6 +1,6 @@ import { MemosClient0191 } from "api/memos-v0.19.1"; import * as log from "utils/log"; -import { DailyRecordType, ResourceType } from "types/usememos"; +import { DailyRecordType, ResourceType } from "types/memos-v0.19.1-types"; import { generateFileLink } from "./memos-util"; import { MemosClient0210 } from "api/memos-v0.22.1"; import { Memo } from "api/memos-proto-v0.22.1/gen/api/v1/memo_service"; @@ -12,7 +12,7 @@ import { PluginSettings } from "types/PluginSettings"; * @param record fetch from usememos API * @returns [date, timestamp, finalTargetContent], date in format "YYYY-MM-DD", timestamp is unix timestamp */ -function formatDailyRecord(record: DailyRecordType): [string, string, string] { +function formatDailyRecord0191(record: DailyRecordType): [string, string, string] { const { createdTs, createdAt, content, resourceList } = record; const timeStamp = createdAt ? window.moment(createdAt).unix() : createdTs; const [date, time] = window @@ -187,7 +187,7 @@ class MemosPaginator0191 { continue; } - const [date, timestamp, formattedRecord] = formatDailyRecord(memo); + const [date, timestamp, formattedRecord] = formatDailyRecord0191(memo); if (!dailyMemosByDay[date]) { dailyMemosByDay[date] = {}; diff --git a/services/DailyMemos/memos-util.ts b/services/DailyMemos/memos-util.ts index 1f3bf3a..76e85a2 100644 --- a/services/DailyMemos/memos-util.ts +++ b/services/DailyMemos/memos-util.ts @@ -1,4 +1,4 @@ -import { ResourceType } from "types/usememos"; +import { ResourceType } from "types/memos-v0.19.1-types"; export function generateFileName(resource: ResourceType): string { diff --git a/types/usememos.ts b/types/memos-v0.19.1-types.ts similarity index 100% rename from types/usememos.ts rename to types/memos-v0.19.1-types.ts From 8b3ff4e1215f1958bdcc1f44430605ae7ea37b81 Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Sun, 26 May 2024 20:06:11 +0800 Subject: [PATCH 4/6] feat: use same transform function for both api --- esbuild.config.mjs | 3 + services/DailyMemos/DailyMemos.ts | 1 - services/DailyMemos/MemosPaginator.ts | 149 ++++++++++++-------------- services/DailyMemos/memos-util.ts | 2 + utils/log.ts | 8 ++ 5 files changed, 83 insertions(+), 80 deletions(-) diff --git a/esbuild.config.mjs b/esbuild.config.mjs index ec61755..0cfaf03 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -38,6 +38,9 @@ const context = await esbuild.context({ sourcemap: prod ? false : "inline", treeShaking: true, outfile: "main.js", + define: { + "process.env.BUILD_ENV": prod ? "'production'" : "'development'", + } }); if (prod) { diff --git a/services/DailyMemos/DailyMemos.ts b/services/DailyMemos/DailyMemos.ts index 1137ece..b961eb8 100644 --- a/services/DailyMemos/DailyMemos.ts +++ b/services/DailyMemos/DailyMemos.ts @@ -7,7 +7,6 @@ import { import type { Moment } from "moment"; import { App, MarkdownView, TFile, normalizePath } from "obsidian"; import { PluginSettings } from "types/PluginSettings"; -import { DailyRecordType, FetchError, ResourceType } from "types/memos-v0.19.1-types"; import * as log from "utils/log"; import { MemosClient0191 } from "api/memos-v0.19.1"; import { generateFileName } from "./memos-util"; diff --git a/services/DailyMemos/MemosPaginator.ts b/services/DailyMemos/MemosPaginator.ts index c32249f..7277f5a 100644 --- a/services/DailyMemos/MemosPaginator.ts +++ b/services/DailyMemos/MemosPaginator.ts @@ -7,16 +7,38 @@ import { Memo } from "api/memos-proto-v0.22.1/gen/api/v1/memo_service"; import { Resource } from "api/memos-proto-v0.22.1/gen/api/v1/resource_service"; import { PluginSettings } from "types/PluginSettings"; +type APIMemoParam = { + /** + * created at or udpated at for the memo, for identifying the memo + * for identifying the memo, sorting, and decide which daily note to place in + */ + timestamp: number; + /** + * content of the memo + */ + content: string; + /** + * resources for the memo + * for generating file link + */ + resources?: ResourceType[]; +}; +type MdItemMemo = { + date: string; // date for which daily memo to place + timestamp: string; // timestamp for identifying the memo + content: string; // content of the memo +}; + /** - * - * @param record fetch from usememos API - * @returns [date, timestamp, finalTargetContent], date in format "YYYY-MM-DD", timestamp is unix timestamp + * transformAPIToMdItemMemo + * transform API returned memo to md item. + * It will find all resources and generate file link. + * @param param APIMemoParam */ -function formatDailyRecord0191(record: DailyRecordType): [string, string, string] { - const { createdTs, createdAt, content, resourceList } = record; - const timeStamp = createdAt ? window.moment(createdAt).unix() : createdTs; +function transformAPIToMdItemMemo(param: APIMemoParam): MdItemMemo { + const { timestamp, content, resources } = param; const [date, time] = window - .moment(timeStamp * 1000) + .moment(timestamp * 1000) .format("YYYY-MM-DD HH:mm") .split(" "); const [firstLine, ...otherLine] = content.trim().split("\n"); @@ -37,7 +59,7 @@ function formatDailyRecord0191(record: DailyRecordType): [string, string, string targetFirstLine = `- ${time} ${firstLine.replace(/^- /, "")}`; } - targetFirstLine += ` #daily-record ^${timeStamp}`; + targetFirstLine += ` #daily-record ^${timestamp}`; const targetOtherLine = otherLine?.length //剩余行 ? "\n" + @@ -47,9 +69,9 @@ function formatDailyRecord0191(record: DailyRecordType): [string, string, string .join("\n") .trimEnd() : ""; - const targetResourceLine = resourceList?.length // 资源文件 + const targetResourceLine = resources?.length // 资源文件 ? "\n" + - resourceList + resources ?.map( (resource: ResourceType) => `\t- ${generateFileLink(resource)}` @@ -59,7 +81,11 @@ function formatDailyRecord0191(record: DailyRecordType): [string, string, string const finalTargetContent = targetFirstLine + targetOtherLine + targetResourceLine; - return [date, String(timeStamp), finalTargetContent]; + return { + date, + timestamp: String(timestamp), + content: finalTargetContent, + }; } export type MemosPaginator = { @@ -107,7 +133,6 @@ export class MemosPaginatorFactory { }; } - class MemosPaginator0191 { private limit: number; private offset: number; @@ -152,7 +177,7 @@ class MemosPaginator0191 { ) { // bug if one memo pinned to top // but it's not a big deal, use sync for current daily notes - log.info("No new daily memos found."); + log.debug("No new daily memos found."); this.lastTime = Date.now().toString(); return this.lastTime; } @@ -187,13 +212,23 @@ class MemosPaginator0191 { continue; } - const [date, timestamp, formattedRecord] = formatDailyRecord0191(memo); + const { createdTs, createdAt } = memo; + const timestampInput = createdAt + ? window.moment(createdAt).unix() + : createdTs; + + const mdItemMemo = transformAPIToMdItemMemo({ + timestamp: timestampInput, + content: memo.content, + resources: memo.resourceList, + }); - if (!dailyMemosByDay[date]) { - dailyMemosByDay[date] = {}; + if (!dailyMemosByDay[mdItemMemo.date]) { + dailyMemosByDay[mdItemMemo.date] = {}; } - dailyMemosByDay[date][timestamp] = formattedRecord; + dailyMemosByDay[mdItemMemo.date][mdItemMemo.timestamp] = + mdItemMemo.content; } return dailyMemosByDay; }; @@ -236,7 +271,7 @@ class MemosPaginator0220 { filter: "", }); if (!resp) { - log.info("No new daily memos found."); + log.debug("No new daily memos found."); this.lastTime = Date.now().toString(); return this.lastTime; } @@ -252,7 +287,7 @@ class MemosPaginator0220 { ) { // bug if one memo pinned to top // but it's not a big deal, use sync for current daily notes - log.info("No new daily memos found."); + log.debug("No new daily memos found."); this.lastTime = Date.now().toString(); return this.lastTime; } @@ -290,70 +325,26 @@ class MemosPaginator0220 { continue; } - const [date, timestamp, formattedRecord] = - formatDailyRecord0221(memo); + const resources = memo.resources?.map((resource) => ({ + id: resource.uid, + externalLink: resource.externalLink, + filename: resource.filename, + name: resource.name, + })); + + const mdItemMemo = transformAPIToMdItemMemo({ + timestamp: window.moment(memo.createTime).unix(), + content: memo.content, + resources: resources, + }); - if (!dailyMemosByDay[date]) { - dailyMemosByDay[date] = {}; + if (!dailyMemosByDay[mdItemMemo.date]) { + dailyMemosByDay[mdItemMemo.date] = {}; } - dailyMemosByDay[date][timestamp] = formattedRecord; + dailyMemosByDay[mdItemMemo.date][mdItemMemo.timestamp] = + mdItemMemo.content; } return dailyMemosByDay; }; } - -function formatDailyRecord0221(memo: Memo): [string, string, string] { - const { createTime, content, resources } = memo; - const timeStamp = window.moment(createTime).unix(); - const [date, time] = window - .moment(timeStamp * 1000) - .format("YYYY-MM-DD HH:mm") - .split(" "); - const [firstLine, ...otherLine] = content.trim().split("\n"); - const isTask = /^- \[.*?\]/.test(firstLine); // 目前仅支持 task - const isCode = /```/.test(firstLine); - - let targetFirstLine = ""; - - if (isTask) { - targetFirstLine = `- [ ] ${time} ${firstLine.replace( - /^- \[.*?\]/, - "" - )}`; - } else if (isCode) { - targetFirstLine = `- ${time}`; // 首行不允许存在代码片段 - otherLine.unshift(firstLine); - } else { - targetFirstLine = `- ${time} ${firstLine.replace(/^- /, "")}`; - } - - targetFirstLine += ` #daily-record ^${timeStamp}`; - - const targetOtherLine = otherLine?.length //剩余行 - ? "\n" + - otherLine - .filter((line: string) => line.trim()) - .map((line) => `\t${line}`) - .join("\n") - .trimEnd() - : ""; - const targetResourceLine = resources?.length // 资源文件 - ? "\n" + - resources - ?.map( - (resource: Resource) => - `\t- ${generateFileLink({ - id: resource.uid, - externalLink: resource.externalLink, - filename: resource.filename, - name: resource.name, - })}` - ) - .join("\n") - : ""; - const finalTargetContent = - targetFirstLine + targetOtherLine + targetResourceLine; - - return [date, String(timeStamp), finalTargetContent]; -} diff --git a/services/DailyMemos/memos-util.ts b/services/DailyMemos/memos-util.ts index 76e85a2..8f93686 100644 --- a/services/DailyMemos/memos-util.ts +++ b/services/DailyMemos/memos-util.ts @@ -1,10 +1,12 @@ import { ResourceType } from "types/memos-v0.19.1-types"; +//TODO: rename to generateResourceName export function generateFileName(resource: ResourceType): string { return `${resource.id}-${resource.filename.replace(/[/\\?%*:|"<>]/g, "-")}`; } +//TODO: rename to generateResourceLink export function generateFileLink(resource: ResourceType): string { if (!resource.externalLink) { return `![[${generateFileName(resource)}]]`; diff --git a/utils/log.ts b/utils/log.ts index ea9b106..97bdbfc 100644 --- a/utils/log.ts +++ b/utils/log.ts @@ -1,4 +1,11 @@ import { Component, MarkdownRenderer, Notice, TFile, moment } from "obsidian"; + + +/** + * Build environment, defined in esbuild.config.mjs + */ +const env: "production" | "development" = process.env.BUILD_ENV as any || "production"; + export enum LogLevel { "debug", "info", @@ -6,6 +13,7 @@ export enum LogLevel { "error", } export function debug(msg:string) { + if (env === "production") return; console.debug(msg); } export function info(msg: string) { From 94964ee4e99b33fc4c61e9db300f9c52e6d8f45a Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Mon, 27 May 2024 00:36:33 +0800 Subject: [PATCH 5/6] feat: add resource api for memos v0.22.1 --- api/memos-v0.19.1.ts | 27 +++- api/memos-v0.22.1.ts | 73 ++++------- services/DailyMemos/DailyMemos.ts | 134 ++++++++------------ services/DailyMemos/MemosPaginator.ts | 76 +++-------- services/DailyMemos/MemosResource.ts | 39 ++++++ services/DailyMemos/MemosResourceFetcher.ts | 96 ++++++++++++++ services/DailyMemos/MemosVersionFactory.ts | 114 +++++++++++++++++ services/DailyMemos/memos-util.ts | 20 --- types/memos-v0.19.1-types.ts | 25 ---- 9 files changed, 378 insertions(+), 226 deletions(-) create mode 100644 services/DailyMemos/MemosResource.ts create mode 100644 services/DailyMemos/MemosResourceFetcher.ts create mode 100644 services/DailyMemos/MemosVersionFactory.ts delete mode 100644 services/DailyMemos/memos-util.ts delete mode 100644 types/memos-v0.19.1-types.ts diff --git a/api/memos-v0.19.1.ts b/api/memos-v0.19.1.ts index 7a9154b..9eb6cbf 100644 --- a/api/memos-v0.19.1.ts +++ b/api/memos-v0.19.1.ts @@ -1,7 +1,32 @@ import axios, { AxiosInstance } from "axios"; -import { DailyRecordType, FetchError, ResourceType } from "types/memos-v0.19.1-types"; import * as log from "utils/log"; +export type ResourceType = { + name?: string; + externalLink?: string; + type?: string; + uid?: string; + id: string; + filename: string; +}; + +export type DailyRecordType = { + rowStatus: "ARCHIVED" | "ACTIVE" | "NORMAL"; + updatedTs: number; + createdTs: number; + createdAt: string; + updatedAt: string; + content: string; + resourceList?: ResourceType[]; +}; + +export type FetchError = { + code: number; + message: string; + msg?: string; + error?: string; +}; + export class MemosClient0191 { private axios: AxiosInstance; diff --git a/api/memos-v0.22.1.ts b/api/memos-v0.22.1.ts index 065f009..a5cdb69 100644 --- a/api/memos-v0.22.1.ts +++ b/api/memos-v0.22.1.ts @@ -4,6 +4,8 @@ import { FetchTransport, Client, Metadata, + Channel, + ClientFactory, } from "nice-grpc-web"; import axios, { AxiosInstance } from "axios"; import * as log from "utils/log"; @@ -11,53 +13,34 @@ import { ListMemosRequest, MemoServiceDefinition, } from "./memos-proto-v0.22.1/gen/api/v1/memo_service"; +import { ResourceServiceDefinition } from "./memos-proto-v0.22.1/gen/api/v1/resource_service"; -// export type ListMemosParams = { -// // The maximum number of memos to return. -// page_size: number; +export type MemoCli = Client; +export type ResourceCli = Client; -// // A page token, received from a previous `ListMemos` call. -// // Provide this to retrieve the subsequent page. -// page_token: string; +export function newClients( + endpoint: string, + token: string +) { + const channel = createChannel( + endpoint, + FetchTransport({ + credentials: "include", + }) + ); + const clientFactory = createClientFactory().use( + (call, options) => + call.next(call.request, { + ...options, + metadata: Metadata(options.metadata).set( + "authorization", + `Bearer ${token}` + ), + })! + ); -// // Filter is used to filter memos returned in the list. -// // Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']" -// filter: string; -// }; - -export class MemosClient0210 { - private memoCli: Client; - - constructor( - private endpoint: string, // http://localhost:5230 - private token: string - ) { - const channel = createChannel( - endpoint, - FetchTransport({ - credentials: "include", - }) - ); - const clientFactory = createClientFactory().use( - (call, options) => - call.next(call.request, { - ...options, - metadata: Metadata(options.metadata).set( - "authorization", - `Bearer ${token}` - ), - })! - ); - - this.memoCli = clientFactory.create(MemoServiceDefinition, channel); - } - - listMemos = async (req: ListMemosRequest) => { - try { - const resp = await this.memoCli.listMemos(req); - return resp; - } catch (error) { - log.error(`Failed to fetch daily memos: ${error}`); - } + return { + memoCli: clientFactory.create(MemoServiceDefinition, channel) as MemoCli, + resourceCli: clientFactory.create(ResourceServiceDefinition, channel) as ResourceCli, }; } diff --git a/services/DailyMemos/DailyMemos.ts b/services/DailyMemos/DailyMemos.ts index b961eb8..fc6670c 100644 --- a/services/DailyMemos/DailyMemos.ts +++ b/services/DailyMemos/DailyMemos.ts @@ -8,10 +8,11 @@ import type { Moment } from "moment"; import { App, MarkdownView, TFile, normalizePath } from "obsidian"; import { PluginSettings } from "types/PluginSettings"; import * as log from "utils/log"; -import { MemosClient0191 } from "api/memos-v0.19.1"; -import { generateFileName } from "./memos-util"; -import { MemosPaginator, MemosPaginatorFactory } from "./MemosPaginator"; +import { MemosPaginator } from "./MemosPaginator"; import { DailyNoteModifier } from "./DailyNoteModifier"; +import { MemosResourceFetcher } from "./MemosResourceFetcher"; +import { generateResourceName } from "./MemosResource"; +import { MemosAbstractFactory } from "./MemosVersionFactory"; class DailyNoteManager { private allDailyNotes: Record; @@ -40,9 +41,9 @@ export class DailyMemos { private app: App; private settings: PluginSettings; private localKey: string; - private memosClient: MemosClient0191; - private memosPaginatorFactory: MemosPaginatorFactory; + private memosFactory: MemosAbstractFactory; private memosPaginator: MemosPaginator; + private memosResourceFetcher: MemosResourceFetcher; constructor(app: App, settings: PluginSettings) { if (!settings.usememosAPI) { @@ -55,16 +56,12 @@ export class DailyMemos { this.app = app; this.settings = settings; - this.memosClient = new MemosClient0191( - this.settings.usememosAPI, - this.settings.usememosToken - ); + this.memosFactory = new MemosAbstractFactory(this.settings); this.localKey = `periodic-para-daily-record-last-time-${this.settings.usememosToken}`; const lastTime = window.localStorage.getItem(this.localKey) || ""; - this.memosPaginatorFactory = new MemosPaginatorFactory(this.settings); - this.memosPaginator = - this.memosPaginatorFactory.createMemosPaginator(lastTime); + this.memosPaginator = this.memosFactory.createMemosPaginator(lastTime); + this.memosResourceFetcher = this.memosFactory.createResourceFetcher(); } /** @@ -73,8 +70,7 @@ export class DailyMemos { */ forceSync = async () => { log.info("Force syncing daily memos..."); - const forcePaginator = - this.memosPaginatorFactory.createMemosPaginator(""); + const forcePaginator = this.memosFactory.createMemosPaginator(""); this.downloadResource(); this.insertDailyMemos(forcePaginator); this.memosPaginator = forcePaginator; @@ -113,7 +109,7 @@ export class DailyMemos { return; } const currentMomentMmemosPaginator = - this.memosPaginatorFactory.createMemosPaginator( + this.memosFactory.createMemosPaginator( "", (date) => date === currentDate ); @@ -127,77 +123,57 @@ export class DailyMemos { */ private downloadResource = async (): Promise => { const { origin } = new URL(this.settings.usememosAPI); - try { - const data = await this.memosClient.listResources(); - - if (!Array.isArray(data)) { - throw new Error( - data.message || - data.msg || - data.error || - JSON.stringify(data) - ); - } + const data = await this.memosResourceFetcher.listResources(); - if (!data.length) { - log.debug(`No resources found: ${origin}/resource`); - return; - } + if (!data) { + log.debug(`No resources found: ${origin}/resource`); + return; + } - //TODO: Set the folder use obsidian-daily-notes-interface - const folder = this.settings.attachmentFolder; - //TODO: Create Folder... - // will cause error, make it more robust - if (!this.app.vault.getAbstractFileByPath(folder)) { - log.info(`Creating folder: ${folder}`); - await this.app.vault.createFolder(folder); - } - await Promise.all( - data.map(async (resource) => { - if (resource.externalLink) { - // do not download external resources - log.debug( - `External resource, skip download: ${resource.externalLink}` - ); - return; - } - - const resourcePath = normalizePath( - `${folder}/${generateFileName(resource)}` + const folder = this.settings.attachmentFolder; + //TODO Create Folder... + // will cause error, make it more robust + if (!this.app.vault.getAbstractFileByPath(folder)) { + log.info(`Creating folder: ${folder}`); + await this.app.vault.createFolder(folder); + } + await Promise.all( + data.map(async (resource) => { + if (resource.externalLink) { + // do not download external resources + log.debug( + `External resource, skip download: ${resource.externalLink}` ); + return; + } + + const resourcePath = normalizePath( + `${folder}/${generateResourceName(resource)}` + ); - const isResourceExists = - await this.app.vault.adapter.exists(resourcePath); - if (isResourceExists) { - log.debug( - `Resource exists, skip download: ${resourcePath}` - ); - return; - } - - const data = await this.memosClient.getResourceBuffer( - resource + const isResourceExists = await this.app.vault.adapter.exists( + resourcePath + ); + if (isResourceExists) { + log.debug( + `Resource exists, skip download: ${resourcePath}` ); + return; + } - if (!data) { - log.warn(`Failed to fetch resource: ${resource}`); - return; - } + const data = await this.memosResourceFetcher.fetchResource( + resource + ); - log.debug(`Download resource: ${resourcePath}`); - await this.app.vault.adapter.writeBinary( - resourcePath, - data - ); - }) - ); - } catch (error) { - if (error.response && error.response.status === 404) { - log.debug(`fetch resources 404: ${origin}/resource`); - return; - } - log.error(`Failed to fetch resource: ${error}`); - } + if (!data) { + log.warn(`Failed to fetch resource: ${resource}`); + return; + } + + log.debug(`Download resource: ${resourcePath}`); + await this.app.vault.adapter.writeBinary(resourcePath, data); + }) + ); }; private insertDailyMemos = async (memosPaginator: MemosPaginator) => { diff --git a/services/DailyMemos/MemosPaginator.ts b/services/DailyMemos/MemosPaginator.ts index 7277f5a..ff618d5 100644 --- a/services/DailyMemos/MemosPaginator.ts +++ b/services/DailyMemos/MemosPaginator.ts @@ -1,13 +1,15 @@ -import { MemosClient0191 } from "api/memos-v0.19.1"; +import { DailyRecordType, MemosClient0191 } from "api/memos-v0.19.1"; import * as log from "utils/log"; -import { DailyRecordType, ResourceType } from "types/memos-v0.19.1-types"; -import { generateFileLink } from "./memos-util"; -import { MemosClient0210 } from "api/memos-v0.22.1"; +import { MemoCli } from "api/memos-v0.22.1"; import { Memo } from "api/memos-proto-v0.22.1/gen/api/v1/memo_service"; -import { Resource } from "api/memos-proto-v0.22.1/gen/api/v1/resource_service"; import { PluginSettings } from "types/PluginSettings"; +import { + APIResource, + convert0220ResourceToAPIResource, + generateResourceLink, +} from "./MemosResource"; -type APIMemoParam = { +type APIMemo = { /** * created at or udpated at for the memo, for identifying the memo * for identifying the memo, sorting, and decide which daily note to place in @@ -21,8 +23,9 @@ type APIMemoParam = { * resources for the memo * for generating file link */ - resources?: ResourceType[]; + resources?: APIResource[]; }; + type MdItemMemo = { date: string; // date for which daily memo to place timestamp: string; // timestamp for identifying the memo @@ -35,7 +38,7 @@ type MdItemMemo = { * It will find all resources and generate file link. * @param param APIMemoParam */ -function transformAPIToMdItemMemo(param: APIMemoParam): MdItemMemo { +function transformAPIToMdItemMemo(param: APIMemo): MdItemMemo { const { timestamp, content, resources } = param; const [date, time] = window .moment(timestamp * 1000) @@ -73,8 +76,8 @@ function transformAPIToMdItemMemo(param: APIMemoParam): MdItemMemo { ? "\n" + resources ?.map( - (resource: ResourceType) => - `\t- ${generateFileLink(resource)}` + (resource: APIResource) => + `\t- ${generateResourceLink(resource)}` ) .join("\n") : ""; @@ -97,43 +100,7 @@ export type MemosPaginator = { ) => Promise; }; -/** - * MemosPaginatorFactory - * Create MemosPaginator based on settings - * it will create different version of MemosPaginator - * by checking the settings.memosAPIVersion - */ -export class MemosPaginatorFactory { - constructor(private settings: PluginSettings) {} - createMemosPaginator = ( - lastTime?: string, - filter?: ( - date: string, - dailyMemosForDate: Record - ) => boolean - ): MemosPaginator => { - if (this.settings.memosAPIVersion === "v0.22.1") { - return new MemosPaginator0220( - new MemosClient0210( - this.settings.usememosAPI, - this.settings.usememosToken - ), - lastTime, - filter - ); - } - return new MemosPaginator0191( - new MemosClient0191( - this.settings.usememosAPI, - this.settings.usememosToken - ), - lastTime, - filter - ); - }; -} - -class MemosPaginator0191 { +export class MemosPaginator0191 { private limit: number; private offset: number; private lastTime: string; @@ -234,13 +201,13 @@ class MemosPaginator0191 { }; } -class MemosPaginator0220 { +export class MemosPaginator0220 { private pageSize: number; private pageToken: string; private lastTime: string; constructor( - private client: MemosClient0210, + private memoCli: MemoCli, lastTime?: string, private filter?: ( date: string, @@ -265,7 +232,7 @@ class MemosPaginator0220 { ) => { this.pageToken = ""; // iterate from newest, reset pageToken while (true) { - const resp = await this.client.listMemos({ + const resp = await this.memoCli.listMemos({ pageSize: this.pageSize, pageToken: this.pageToken, filter: "", @@ -325,12 +292,9 @@ class MemosPaginator0220 { continue; } - const resources = memo.resources?.map((resource) => ({ - id: resource.uid, - externalLink: resource.externalLink, - filename: resource.filename, - name: resource.name, - })); + const resources = memo.resources?.map( + convert0220ResourceToAPIResource + ); const mdItemMemo = transformAPIToMdItemMemo({ timestamp: window.moment(memo.createTime).unix(), diff --git a/services/DailyMemos/MemosResource.ts b/services/DailyMemos/MemosResource.ts new file mode 100644 index 0000000..1049630 --- /dev/null +++ b/services/DailyMemos/MemosResource.ts @@ -0,0 +1,39 @@ +import { Resource } from "api/memos-proto-v0.22.1/gen/api/v1/resource_service"; + +export type APIResource = { + name?: string; + externalLink?: string; + type?: string; + uid?: string; + id: string; + filename: string; +}; + +export function convert0220ResourceToAPIResource( + resource: Resource +): APIResource { + return { + id: resource.name.replace("resources/", ""), + filename: resource.filename, + externalLink: resource.externalLink, + name: resource.name, + type: resource.type, + uid: resource.uid, + }; +} + +export function generateResourceName(resource: APIResource): string { + return `${resource.id}-${resource.filename.replace(/[/\\?%*:|"<>]/g, "-")}`; +} + +export function generateResourceLink(resource: APIResource): string { + if (!resource.externalLink) { + return `![[${generateResourceName(resource)}]]`; + } + + const prefix = resource.type?.includes("image") ? "!" : ""; // only add ! for image type + + return `${prefix}[${resource.name || resource.filename}](${ + resource.externalLink + })`; +} diff --git a/services/DailyMemos/MemosResourceFetcher.ts b/services/DailyMemos/MemosResourceFetcher.ts new file mode 100644 index 0000000..67027ca --- /dev/null +++ b/services/DailyMemos/MemosResourceFetcher.ts @@ -0,0 +1,96 @@ +import { MemosClient0191 } from "api/memos-v0.19.1"; +import { Client } from "nice-grpc-web"; +import * as log from "utils/log"; +import { + ResourceServiceDefinition, +} from "../../api/memos-proto-v0.22.1/gen/api/v1/resource_service"; +import { ResourceCli, newClients } from "api/memos-v0.22.1"; +import { APIResource, convert0220ResourceToAPIResource } from "./MemosResource"; + +export type MemosResourceFetcher = { + listResources: () => Promise; + fetchResource: (resource: APIResource) => Promise; +}; + +export class MemosResourceFetcher0191 { + constructor(private client: MemosClient0191) {} + + listResources = async (): Promise => { + try { + const data = await this.client.listResources(); + if (!Array.isArray(data)) { + throw new Error( + data.message || + data.msg || + data.error || + JSON.stringify(data) + ); + } + return data; + } catch (error) { + if (error.response && error.response.status === 404) { + log.debug(`fetch resources 404: ${origin}/resource`); + return; + } + log.error(error); + return undefined; + } + }; + + fetchResource = async ( + resource: APIResource + ): Promise => { + try { + const data = await this.client.getResourceBuffer(resource); + if (!data) { + throw new Error( + `Failed to fetch resource: ${resource.filename}` + ); + } + return data; + } catch (error) { + log.error(error); + return undefined; + } + }; +} + +export class MemosResourceFetcher0210 { + constructor(private resourceCli: ResourceCli) {} + static new( + endpoint: string, // http://localhost:5230 + token: string + ): MemosResourceFetcher0210 { + const { resourceCli } = newClients(endpoint, token); + return new MemosResourceFetcher0210(resourceCli); + } + + listResources = async (): Promise => { + try { + const resp = await this.resourceCli.listResources({}); + return resp.resources.map(convert0220ResourceToAPIResource); + } catch (error) { + if (error.response && error.response.status === 404) { + log.debug(`fetch resources 404: ${origin}/resource`); + return; + } + log.error(error); + return undefined; + } + }; + + fetchResource = async ( + resource: APIResource + ): Promise => { + try { + const resp = await this.resourceCli.getResourceBinary({ + name: resource.name, + filename: resource.filename, + }); + return resp.data; + } catch (error) { + log.error(error); + return undefined; + } + }; +} diff --git a/services/DailyMemos/MemosVersionFactory.ts b/services/DailyMemos/MemosVersionFactory.ts new file mode 100644 index 0000000..c59ce29 --- /dev/null +++ b/services/DailyMemos/MemosVersionFactory.ts @@ -0,0 +1,114 @@ +import { PluginSettings } from "types/PluginSettings"; +import { + MemosPaginator, + MemosPaginator0191, + MemosPaginator0220, +} from "./MemosPaginator"; +import { MemoCli, ResourceCli, newClients } from "api/memos-v0.22.1"; +import { MemosClient0191 } from "api/memos-v0.19.1"; +import { + MemosResourceFetcher, + MemosResourceFetcher0191, + MemosResourceFetcher0210, +} from "./MemosResourceFetcher"; + +/** + * MemosPaginatorFactory + * Create MemosPaginator based on settings + * it will create different version of MemosPaginator + * by checking the settings.memosAPIVersion + */ +export class MemosAbstractFactory { + private inner: MemosFactory; + + constructor(private settings: PluginSettings) { + if (this.settings.memosAPIVersion === "v0.22.1") { + const { memoCli, resourceCli } = newClients( + this.settings.usememosAPI, + this.settings.usememosToken + ); + + this.inner = new MemosFactory0210(this.settings); + return; + } + + this.inner = new MemosFactory0191(this.settings); + } + + createMemosPaginator = ( + lastTime?: string, + filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ): MemosPaginator => { + return this.inner.createMemosPaginator(lastTime, filter); + }; + + createResourceFetcher = () => { + return this.inner.createResourceFetcher(); + }; +} + +type MemosFactory = { + createMemosPaginator: ( + lastTime?: string, + filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ) => MemosPaginator; + createResourceFetcher: () => MemosResourceFetcher; +}; + +class MemosFactory0191 { + private client: MemosClient0191; + constructor(private settings: PluginSettings) { + this.client = new MemosClient0191( + this.settings.usememosAPI, + this.settings.usememosToken + ); + } + + createMemosPaginator = ( + lastTime?: string, + filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ): MemosPaginator => { + return new MemosPaginator0191(this.client, lastTime, filter); + }; + + createResourceFetcher = () => { + return new MemosResourceFetcher0191(this.client); + }; +} + +class MemosFactory0210 { + private memoCli: MemoCli; + private resourceCli: ResourceCli; + constructor(private settings: PluginSettings) { + const { memoCli, resourceCli } = newClients( + this.settings.usememosAPI, + this.settings.usememosToken + ); + + this.memoCli = memoCli; + this.resourceCli = resourceCli; + } + + createMemosPaginator = ( + lastTime?: string, + filter?: ( + date: string, + dailyMemosForDate: Record + ) => boolean + ): MemosPaginator => { + return new MemosPaginator0220(this.memoCli, lastTime, filter); + }; + + createResourceFetcher = () => { + return new MemosResourceFetcher0210(this.resourceCli); + }; +} diff --git a/services/DailyMemos/memos-util.ts b/services/DailyMemos/memos-util.ts deleted file mode 100644 index 8f93686..0000000 --- a/services/DailyMemos/memos-util.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ResourceType } from "types/memos-v0.19.1-types"; - - -//TODO: rename to generateResourceName -export function generateFileName(resource: ResourceType): string { - return `${resource.id}-${resource.filename.replace(/[/\\?%*:|"<>]/g, "-")}`; -} - -//TODO: rename to generateResourceLink -export function generateFileLink(resource: ResourceType): string { - if (!resource.externalLink) { - return `![[${generateFileName(resource)}]]`; - } - - const prefix = resource.type?.includes("image") ? "!" : ""; // only add ! for image type - - return `${prefix}[${resource.name || resource.filename}](${ - resource.externalLink - })`; -} diff --git a/types/memos-v0.19.1-types.ts b/types/memos-v0.19.1-types.ts deleted file mode 100644 index 8927c7b..0000000 --- a/types/memos-v0.19.1-types.ts +++ /dev/null @@ -1,25 +0,0 @@ -export type ResourceType = { - name?: string; - externalLink?: string; - type?: string; - uid?: string; - id: string; - filename: string; -}; - -export type DailyRecordType = { - rowStatus: "ARCHIVED" | "ACTIVE" | "NORMAL"; - updatedTs: number; - createdTs: number; - createdAt: string; - updatedAt: string; - content: string; - resourceList?: ResourceType[]; -}; - -export type FetchError = { - code: number; - message: string; - msg?: string; - error?: string; -}; From d3b4f4972608b9bbd7ded0c3ee2986dd327a9edb Mon Sep 17 00:00:00 2001 From: Ryo <36154873+RyoJerryYu@users.noreply.github.com> Date: Mon, 27 May 2024 00:42:40 +0800 Subject: [PATCH 6/6] feat: rename new memos api to v0.22.0 --- .../api/v1/activity_service.proto | 0 .../api/v1/auth_service.proto | 0 .../api/v1/common.proto | 0 .../api/v1/idp_service.proto | 0 .../api/v1/inbox_service.proto | 0 .../api/v1/markdown_service.proto | 0 .../api/v1/memo_relation_service.proto | 0 .../api/v1/memo_service.proto | 0 .../api/v1/reaction_service.proto | 0 .../api/v1/resource_service.proto | 0 .../api/v1/user_service.proto | 0 .../api/v1/webhook_service.proto | 0 .../api/v1/workspace_service.proto | 0 .../api/v1/workspace_setting_service.proto | 0 .../buf.gen.yaml | 0 .../buf.lock | 0 .../buf.yaml | 0 .../gen/api/v1/activity_service.ts | 0 .../gen/api/v1/auth_service.ts | 0 .../gen/api/v1/common.ts | 0 .../gen/api/v1/idp_service.ts | 0 .../gen/api/v1/inbox_service.ts | 0 .../gen/api/v1/markdown_service.ts | 0 .../gen/api/v1/memo_relation_service.ts | 0 .../gen/api/v1/memo_service.ts | 0 .../gen/api/v1/reaction_service.ts | 0 .../gen/api/v1/resource_service.ts | 0 .../gen/api/v1/user_service.ts | 0 .../gen/api/v1/webhook_service.ts | 0 .../gen/api/v1/workspace_service.ts | 0 .../gen/api/v1/workspace_setting_service.ts | 0 .../gen/google/api/annotations.ts | 0 .../gen/google/api/client.ts | 0 .../gen/google/api/field_behavior.ts | 0 .../gen/google/api/http.ts | 0 .../gen/google/api/httpbody.ts | 0 .../gen/google/api/launch_stage.ts | 0 .../gen/google/protobuf/any.ts | 0 .../gen/google/protobuf/descriptor.ts | 0 .../gen/google/protobuf/duration.ts | 0 .../gen/google/protobuf/empty.ts | 0 .../gen/google/protobuf/field_mask.ts | 0 .../gen/google/protobuf/timestamp.ts | 0 api/{memos-v0.22.1.ts => memos-v0.22.0.ts} | 26 ++++++++----------- gen-proto.sh | 2 +- main.tsx | 6 ++--- services/DailyMemos/MemosPaginator.ts | 5 ++-- services/DailyMemos/MemosResource.ts | 2 +- services/DailyMemos/MemosResourceFetcher.ts | 15 ++--------- services/DailyMemos/MemosVersionFactory.ts | 12 ++++----- types/PluginSettings.ts | 2 +- 51 files changed, 27 insertions(+), 43 deletions(-) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/activity_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/auth_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/common.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/idp_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/inbox_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/markdown_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/memo_relation_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/memo_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/reaction_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/resource_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/user_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/webhook_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/workspace_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/api/v1/workspace_setting_service.proto (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/buf.gen.yaml (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/buf.lock (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/buf.yaml (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/activity_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/auth_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/common.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/idp_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/inbox_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/markdown_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/memo_relation_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/memo_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/reaction_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/resource_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/user_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/webhook_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/workspace_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/api/v1/workspace_setting_service.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/annotations.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/client.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/field_behavior.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/http.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/httpbody.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/api/launch_stage.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/any.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/descriptor.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/duration.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/empty.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/field_mask.ts (100%) rename api/{memos-proto-v0.22.1 => memos-proto-v0.22.0}/gen/google/protobuf/timestamp.ts (100%) rename api/{memos-v0.22.1.ts => memos-v0.22.0.ts} (53%) diff --git a/api/memos-proto-v0.22.1/api/v1/activity_service.proto b/api/memos-proto-v0.22.0/api/v1/activity_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/activity_service.proto rename to api/memos-proto-v0.22.0/api/v1/activity_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/auth_service.proto b/api/memos-proto-v0.22.0/api/v1/auth_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/auth_service.proto rename to api/memos-proto-v0.22.0/api/v1/auth_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/common.proto b/api/memos-proto-v0.22.0/api/v1/common.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/common.proto rename to api/memos-proto-v0.22.0/api/v1/common.proto diff --git a/api/memos-proto-v0.22.1/api/v1/idp_service.proto b/api/memos-proto-v0.22.0/api/v1/idp_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/idp_service.proto rename to api/memos-proto-v0.22.0/api/v1/idp_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/inbox_service.proto b/api/memos-proto-v0.22.0/api/v1/inbox_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/inbox_service.proto rename to api/memos-proto-v0.22.0/api/v1/inbox_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/markdown_service.proto b/api/memos-proto-v0.22.0/api/v1/markdown_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/markdown_service.proto rename to api/memos-proto-v0.22.0/api/v1/markdown_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto b/api/memos-proto-v0.22.0/api/v1/memo_relation_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/memo_relation_service.proto rename to api/memos-proto-v0.22.0/api/v1/memo_relation_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/memo_service.proto b/api/memos-proto-v0.22.0/api/v1/memo_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/memo_service.proto rename to api/memos-proto-v0.22.0/api/v1/memo_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/reaction_service.proto b/api/memos-proto-v0.22.0/api/v1/reaction_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/reaction_service.proto rename to api/memos-proto-v0.22.0/api/v1/reaction_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/resource_service.proto b/api/memos-proto-v0.22.0/api/v1/resource_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/resource_service.proto rename to api/memos-proto-v0.22.0/api/v1/resource_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/user_service.proto b/api/memos-proto-v0.22.0/api/v1/user_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/user_service.proto rename to api/memos-proto-v0.22.0/api/v1/user_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/webhook_service.proto b/api/memos-proto-v0.22.0/api/v1/webhook_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/webhook_service.proto rename to api/memos-proto-v0.22.0/api/v1/webhook_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/workspace_service.proto b/api/memos-proto-v0.22.0/api/v1/workspace_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/workspace_service.proto rename to api/memos-proto-v0.22.0/api/v1/workspace_service.proto diff --git a/api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto b/api/memos-proto-v0.22.0/api/v1/workspace_setting_service.proto similarity index 100% rename from api/memos-proto-v0.22.1/api/v1/workspace_setting_service.proto rename to api/memos-proto-v0.22.0/api/v1/workspace_setting_service.proto diff --git a/api/memos-proto-v0.22.1/buf.gen.yaml b/api/memos-proto-v0.22.0/buf.gen.yaml similarity index 100% rename from api/memos-proto-v0.22.1/buf.gen.yaml rename to api/memos-proto-v0.22.0/buf.gen.yaml diff --git a/api/memos-proto-v0.22.1/buf.lock b/api/memos-proto-v0.22.0/buf.lock similarity index 100% rename from api/memos-proto-v0.22.1/buf.lock rename to api/memos-proto-v0.22.0/buf.lock diff --git a/api/memos-proto-v0.22.1/buf.yaml b/api/memos-proto-v0.22.0/buf.yaml similarity index 100% rename from api/memos-proto-v0.22.1/buf.yaml rename to api/memos-proto-v0.22.0/buf.yaml diff --git a/api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/activity_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/activity_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/activity_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/auth_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/auth_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/auth_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/common.ts b/api/memos-proto-v0.22.0/gen/api/v1/common.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/common.ts rename to api/memos-proto-v0.22.0/gen/api/v1/common.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/idp_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/idp_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/idp_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/inbox_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/inbox_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/inbox_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/markdown_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/markdown_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/markdown_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/memo_relation_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/memo_relation_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/memo_relation_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/memo_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/memo_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/memo_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/reaction_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/reaction_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/reaction_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/resource_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/resource_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/resource_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/user_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/user_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/user_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/user_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/webhook_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/webhook_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/webhook_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/workspace_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/workspace_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/workspace_service.ts diff --git a/api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts b/api/memos-proto-v0.22.0/gen/api/v1/workspace_setting_service.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/api/v1/workspace_setting_service.ts rename to api/memos-proto-v0.22.0/gen/api/v1/workspace_setting_service.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/annotations.ts b/api/memos-proto-v0.22.0/gen/google/api/annotations.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/annotations.ts rename to api/memos-proto-v0.22.0/gen/google/api/annotations.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/client.ts b/api/memos-proto-v0.22.0/gen/google/api/client.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/client.ts rename to api/memos-proto-v0.22.0/gen/google/api/client.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts b/api/memos-proto-v0.22.0/gen/google/api/field_behavior.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/field_behavior.ts rename to api/memos-proto-v0.22.0/gen/google/api/field_behavior.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/http.ts b/api/memos-proto-v0.22.0/gen/google/api/http.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/http.ts rename to api/memos-proto-v0.22.0/gen/google/api/http.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/httpbody.ts b/api/memos-proto-v0.22.0/gen/google/api/httpbody.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/httpbody.ts rename to api/memos-proto-v0.22.0/gen/google/api/httpbody.ts diff --git a/api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts b/api/memos-proto-v0.22.0/gen/google/api/launch_stage.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/api/launch_stage.ts rename to api/memos-proto-v0.22.0/gen/google/api/launch_stage.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/any.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/any.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/any.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/any.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/descriptor.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/descriptor.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/descriptor.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/duration.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/duration.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/duration.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/empty.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/empty.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/empty.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/field_mask.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/field_mask.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/field_mask.ts diff --git a/api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts b/api/memos-proto-v0.22.0/gen/google/protobuf/timestamp.ts similarity index 100% rename from api/memos-proto-v0.22.1/gen/google/protobuf/timestamp.ts rename to api/memos-proto-v0.22.0/gen/google/protobuf/timestamp.ts diff --git a/api/memos-v0.22.1.ts b/api/memos-v0.22.0.ts similarity index 53% rename from api/memos-v0.22.1.ts rename to api/memos-v0.22.0.ts index a5cdb69..5528775 100644 --- a/api/memos-v0.22.1.ts +++ b/api/memos-v0.22.0.ts @@ -4,24 +4,14 @@ import { FetchTransport, Client, Metadata, - Channel, - ClientFactory, } from "nice-grpc-web"; -import axios, { AxiosInstance } from "axios"; -import * as log from "utils/log"; -import { - ListMemosRequest, - MemoServiceDefinition, -} from "./memos-proto-v0.22.1/gen/api/v1/memo_service"; -import { ResourceServiceDefinition } from "./memos-proto-v0.22.1/gen/api/v1/resource_service"; +import { MemoServiceDefinition } from "./memos-proto-v0.22.0/gen/api/v1/memo_service"; +import { ResourceServiceDefinition } from "./memos-proto-v0.22.0/gen/api/v1/resource_service"; export type MemoCli = Client; export type ResourceCli = Client; -export function newClients( - endpoint: string, - token: string -) { +export function newClients(endpoint: string, token: string) { const channel = createChannel( endpoint, FetchTransport({ @@ -40,7 +30,13 @@ export function newClients( ); return { - memoCli: clientFactory.create(MemoServiceDefinition, channel) as MemoCli, - resourceCli: clientFactory.create(ResourceServiceDefinition, channel) as ResourceCli, + memoCli: clientFactory.create( + MemoServiceDefinition, + channel + ) as MemoCli, + resourceCli: clientFactory.create( + ResourceServiceDefinition, + channel + ) as ResourceCli, }; } diff --git a/gen-proto.sh b/gen-proto.sh index 177bbf5..9d09a6b 100755 --- a/gen-proto.sh +++ b/gen-proto.sh @@ -1,2 +1,2 @@ -cd ./api/memos-proto-v0.22.1/ +cd ./api/memos-proto-v0.22.0/ buf generate diff --git a/main.tsx b/main.tsx index 32647d8..024aa65 100644 --- a/main.tsx +++ b/main.tsx @@ -128,13 +128,13 @@ class SampleSettingTab extends PluginSettingTab { .setDesc("Memos API Version") .addDropdown((dropDown)=>{ dropDown.addOptions({ - "v0.19.1": "v0.19.1", - "v0.22.1": "v0.22.1", + "v0.19.1": "before v0.21.x", + "v0.22.0": "after v0.22.x", }); dropDown.setValue(this.plugin.settings.memosAPIVersion); dropDown.onChange((value) => { this.saveSettings({ - memosAPIVersion: value as "v0.19.1" | "v0.22.1", + memosAPIVersion: value as "v0.19.1" | "v0.22.0", }); }) }) diff --git a/services/DailyMemos/MemosPaginator.ts b/services/DailyMemos/MemosPaginator.ts index ff618d5..ee3fc05 100644 --- a/services/DailyMemos/MemosPaginator.ts +++ b/services/DailyMemos/MemosPaginator.ts @@ -1,8 +1,7 @@ import { DailyRecordType, MemosClient0191 } from "api/memos-v0.19.1"; import * as log from "utils/log"; -import { MemoCli } from "api/memos-v0.22.1"; -import { Memo } from "api/memos-proto-v0.22.1/gen/api/v1/memo_service"; -import { PluginSettings } from "types/PluginSettings"; +import { MemoCli } from "api/memos-v0.22.0"; +import { Memo } from "api/memos-proto-v0.22.0/gen/api/v1/memo_service"; import { APIResource, convert0220ResourceToAPIResource, diff --git a/services/DailyMemos/MemosResource.ts b/services/DailyMemos/MemosResource.ts index 1049630..56f96c7 100644 --- a/services/DailyMemos/MemosResource.ts +++ b/services/DailyMemos/MemosResource.ts @@ -1,4 +1,4 @@ -import { Resource } from "api/memos-proto-v0.22.1/gen/api/v1/resource_service"; +import { Resource } from "api/memos-proto-v0.22.0/gen/api/v1/resource_service"; export type APIResource = { name?: string; diff --git a/services/DailyMemos/MemosResourceFetcher.ts b/services/DailyMemos/MemosResourceFetcher.ts index 67027ca..e709056 100644 --- a/services/DailyMemos/MemosResourceFetcher.ts +++ b/services/DailyMemos/MemosResourceFetcher.ts @@ -1,10 +1,6 @@ import { MemosClient0191 } from "api/memos-v0.19.1"; -import { Client } from "nice-grpc-web"; import * as log from "utils/log"; -import { - ResourceServiceDefinition, -} from "../../api/memos-proto-v0.22.1/gen/api/v1/resource_service"; -import { ResourceCli, newClients } from "api/memos-v0.22.1"; +import { ResourceCli, newClients } from "api/memos-v0.22.0"; import { APIResource, convert0220ResourceToAPIResource } from "./MemosResource"; export type MemosResourceFetcher = { @@ -55,15 +51,8 @@ export class MemosResourceFetcher0191 { }; } -export class MemosResourceFetcher0210 { +export class MemosResourceFetcher0220 { constructor(private resourceCli: ResourceCli) {} - static new( - endpoint: string, // http://localhost:5230 - token: string - ): MemosResourceFetcher0210 { - const { resourceCli } = newClients(endpoint, token); - return new MemosResourceFetcher0210(resourceCli); - } listResources = async (): Promise => { try { diff --git a/services/DailyMemos/MemosVersionFactory.ts b/services/DailyMemos/MemosVersionFactory.ts index c59ce29..8039091 100644 --- a/services/DailyMemos/MemosVersionFactory.ts +++ b/services/DailyMemos/MemosVersionFactory.ts @@ -4,12 +4,12 @@ import { MemosPaginator0191, MemosPaginator0220, } from "./MemosPaginator"; -import { MemoCli, ResourceCli, newClients } from "api/memos-v0.22.1"; +import { MemoCli, ResourceCli, newClients } from "api/memos-v0.22.0"; import { MemosClient0191 } from "api/memos-v0.19.1"; import { MemosResourceFetcher, MemosResourceFetcher0191, - MemosResourceFetcher0210, + MemosResourceFetcher0220, } from "./MemosResourceFetcher"; /** @@ -22,13 +22,13 @@ export class MemosAbstractFactory { private inner: MemosFactory; constructor(private settings: PluginSettings) { - if (this.settings.memosAPIVersion === "v0.22.1") { + if (this.settings.memosAPIVersion === "v0.22.0") { const { memoCli, resourceCli } = newClients( this.settings.usememosAPI, this.settings.usememosToken ); - this.inner = new MemosFactory0210(this.settings); + this.inner = new MemosFactory0220(this.settings); return; } @@ -85,7 +85,7 @@ class MemosFactory0191 { }; } -class MemosFactory0210 { +class MemosFactory0220 { private memoCli: MemoCli; private resourceCli: ResourceCli; constructor(private settings: PluginSettings) { @@ -109,6 +109,6 @@ class MemosFactory0210 { }; createResourceFetcher = () => { - return new MemosResourceFetcher0210(this.resourceCli); + return new MemosResourceFetcher0220(this.resourceCli); }; } diff --git a/types/PluginSettings.ts b/types/PluginSettings.ts index cdd3d90..c330f08 100644 --- a/types/PluginSettings.ts +++ b/types/PluginSettings.ts @@ -19,5 +19,5 @@ export interface PluginSettings { /** * Memos Version, for using different version of memos API. */ - memosAPIVersion: "v0.22.1" | "v0.19.1"; + memosAPIVersion: "v0.22.0" | "v0.19.1"; }