core/abi/v1/render.pb.go
Alex Dunmow 704b046727 feat(abi): wasm plugin ABI protobuf schema v1 (WO-WZ-001)
Defines the host<->guest wire contract for the .so -> wazero migration as a
repo-local buf module (abi/proto/v1, generated Go in abi/v1):

- manifest.proto: PluginManifest mirroring every static field of
  plugin.PluginRegistration (abi_version, deps, block/template registrations,
  admin pages, settings schema, theme presets, fonts, master pages, AI
  actions, RBAC method roles, CSS manifest, icon packs, directory
  extensions, job types, RAG fetcher types, settings panel, hook flags,
  core service bindings)
- invoke.proto: bn_invoke envelope, Hook catalog (RENDER_BLOCK,
  RENDER_TEMPLATE, HANDLE_HTTP, JOB, LOAD, UNLOAD, RAG_FETCH, MEDIA_HOOK,
  DESCRIBE), AbiError, and job/lifecycle/rag/media/describe payloads
- render.proto: RenderBlock/RenderTemplate payloads + RenderContext
  enumerating every ctx value from blocks/context.go (incl. BlockContext 1:1)
- http.proto: buffered HttpRequest/HttpResponse for HANDLE_HTTP
- db.proto: guest sql-driver messages (DbValue oneof over pgx-mappable
  types, query/exec/tx with host-side tx handles, SQLSTATE-carrying DbError)
- capability.proto: HostCall envelope + one request/response pair per
  CoreServices interface method (content, settings+update, gating, crypto,
  menus, datasources, users, subscriptions, media.deposit, email.send,
  ai.text_call, ai.tools.register, bridge, jobs.submit, embeddings, rag,
  reviews, badges.refresh)

The abi/ buf module is deliberately separate from the repo-root config:
proto/ is the shared block/proto submodule (service API contracts); the ABI
is SDK-internal and versions in lockstep with the guest shim. New `make abi`
target runs buf lint + generate. docs/wasm-abi.md documents the ptr+len
calling convention (bn_alloc, bn_invoke, packed u64), hook catalog, error
semantics, abi_version evolution rules, and the full registration/
CoreServices coverage tables.

Verified: `cd abi && buf lint` exit 0; `go build ./...` exit 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 12:47:00 +08:00

1666 lines
52 KiB
Go

// render.proto — block/template render payloads and the explicit
// render-context envelope (WO-WZ-001).
//
// RenderContext serializes every value blocks currently read from ctx via
// core/blocks/context.go. Function-valued context entries (SlotRenderer,
// MediaResolver, EmbedResolver, the generic Queries value) cannot cross the
// wire; see core/docs/wasm-abi.md for how each one maps.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: v1/render.proto
package abiv1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// RenderBlockRequest renders one block (blocks.BlockFunc).
type RenderBlockRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
BlockKey string `protobuf:"bytes,1,opt,name=block_key,json=blockKey,proto3" json:"block_key,omitempty"`
// JSON encoding of the block's content map.
ContentJson []byte `protobuf:"bytes,2,opt,name=content_json,json=contentJson,proto3" json:"content_json,omitempty"`
RenderContext *RenderContext `protobuf:"bytes,3,opt,name=render_context,json=renderContext,proto3" json:"render_context,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RenderBlockRequest) Reset() {
*x = RenderBlockRequest{}
mi := &file_v1_render_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RenderBlockRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenderBlockRequest) ProtoMessage() {}
func (x *RenderBlockRequest) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RenderBlockRequest.ProtoReflect.Descriptor instead.
func (*RenderBlockRequest) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{0}
}
func (x *RenderBlockRequest) GetBlockKey() string {
if x != nil {
return x.BlockKey
}
return ""
}
func (x *RenderBlockRequest) GetContentJson() []byte {
if x != nil {
return x.ContentJson
}
return nil
}
func (x *RenderBlockRequest) GetRenderContext() *RenderContext {
if x != nil {
return x.RenderContext
}
return nil
}
type RenderBlockResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Html string `protobuf:"bytes,1,opt,name=html,proto3" json:"html,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RenderBlockResponse) Reset() {
*x = RenderBlockResponse{}
mi := &file_v1_render_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RenderBlockResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenderBlockResponse) ProtoMessage() {}
func (x *RenderBlockResponse) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RenderBlockResponse.ProtoReflect.Descriptor instead.
func (*RenderBlockResponse) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{1}
}
func (x *RenderBlockResponse) GetHtml() string {
if x != nil {
return x.Html
}
return ""
}
// RenderTemplateRequest renders one template (templates.TemplateFunc).
type RenderTemplateRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
TemplateKey string `protobuf:"bytes,1,opt,name=template_key,json=templateKey,proto3" json:"template_key,omitempty"`
// JSON encoding of the template's doc map (the page document).
DocJson []byte `protobuf:"bytes,2,opt,name=doc_json,json=docJson,proto3" json:"doc_json,omitempty"`
RenderContext *RenderContext `protobuf:"bytes,3,opt,name=render_context,json=renderContext,proto3" json:"render_context,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RenderTemplateRequest) Reset() {
*x = RenderTemplateRequest{}
mi := &file_v1_render_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RenderTemplateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenderTemplateRequest) ProtoMessage() {}
func (x *RenderTemplateRequest) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RenderTemplateRequest.ProtoReflect.Descriptor instead.
func (*RenderTemplateRequest) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{2}
}
func (x *RenderTemplateRequest) GetTemplateKey() string {
if x != nil {
return x.TemplateKey
}
return ""
}
func (x *RenderTemplateRequest) GetDocJson() []byte {
if x != nil {
return x.DocJson
}
return nil
}
func (x *RenderTemplateRequest) GetRenderContext() *RenderContext {
if x != nil {
return x.RenderContext
}
return nil
}
type RenderTemplateResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Html []byte `protobuf:"bytes,1,opt,name=html,proto3" json:"html,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RenderTemplateResponse) Reset() {
*x = RenderTemplateResponse{}
mi := &file_v1_render_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RenderTemplateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenderTemplateResponse) ProtoMessage() {}
func (x *RenderTemplateResponse) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RenderTemplateResponse.ProtoReflect.Descriptor instead.
func (*RenderTemplateResponse) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{3}
}
func (x *RenderTemplateResponse) GetHtml() []byte {
if x != nil {
return x.Html
}
return nil
}
// RenderContext is the explicit envelope of the context values enumerated
// from core/blocks/context.go. Absent sub-messages mean the corresponding
// ctx value was not set (the getters return nil / zero values).
type RenderContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
// blocks.GetRequest — subset of *http.Request that render code reads.
Request *RequestInfo `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
// blocks.GetBlockContext — the pongo2 template data struct.
BlockContext *BlockContext `protobuf:"bytes,2,opt,name=block_context,json=blockContext,proto3" json:"block_context,omitempty"`
// blocks.GetTemplateKey.
TemplateKey string `protobuf:"bytes,3,opt,name=template_key,json=templateKey,proto3" json:"template_key,omitempty"`
// blocks.GetCurrentPage.
Page *PageContext `protobuf:"bytes,4,opt,name=page,proto3" json:"page,omitempty"`
// blocks.GetCurrentBlogPost.
Post *PostContext `protobuf:"bytes,5,opt,name=post,proto3" json:"post,omitempty"`
// blocks.GetCurrentAuthor.
Author *AuthorContext `protobuf:"bytes,6,opt,name=author,proto3" json:"author,omitempty"`
// blocks.GetCurrentCategory.
Category *CategoryContext `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"`
// blocks.GetMasterPage; presence doubles as IsMasterPageContext.
MasterPage *MasterPageContext `protobuf:"bytes,8,opt,name=master_page,json=masterPage,proto3" json:"master_page,omitempty"`
// blocks.GetRequestedPath (404 pages).
RequestedPath string `protobuf:"bytes,9,opt,name=requested_path,json=requestedPath,proto3" json:"requested_path,omitempty"`
// blocks.GetInjectedSlots (master page rendering).
InjectedSlots map[string]string `protobuf:"bytes,10,rep,name=injected_slots,json=injectedSlots,proto3" json:"injected_slots,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// blocks.IsEditor.
IsEditor bool `protobuf:"varint,11,opt,name=is_editor,json=isEditor,proto3" json:"is_editor,omitempty"`
// blocks.GetExpectedSlots.
ExpectedSlots []string `protobuf:"bytes,12,rep,name=expected_slots,json=expectedSlots,proto3" json:"expected_slots,omitempty"`
// blocks.GetBlockID (UUID; empty for uuid.Nil).
BlockId string `protobuf:"bytes,13,opt,name=block_id,json=blockId,proto3" json:"block_id,omitempty"`
// blocks.GetCurrentPageID (UUID; empty for uuid.Nil).
CurrentPageId string `protobuf:"bytes,14,opt,name=current_page_id,json=currentPageId,proto3" json:"current_page_id,omitempty"`
// blocks.GetHumanProofBanner.
HumanProofBanner *HumanProofBanner `protobuf:"bytes,15,opt,name=human_proof_banner,json=humanProofBanner,proto3" json:"human_proof_banner,omitempty"`
// blocks.GetDetailRow.
DetailRow *DetailRow `protobuf:"bytes,16,opt,name=detail_row,json=detailRow,proto3" json:"detail_row,omitempty"`
// Active theme variables, JSON-encoded.
ThemeJson []byte `protobuf:"bytes,17,opt,name=theme_json,json=themeJson,proto3" json:"theme_json,omitempty"`
// Site locale (BCP 47).
Locale string `protobuf:"bytes,18,opt,name=locale,proto3" json:"locale,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RenderContext) Reset() {
*x = RenderContext{}
mi := &file_v1_render_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RenderContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RenderContext) ProtoMessage() {}
func (x *RenderContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RenderContext.ProtoReflect.Descriptor instead.
func (*RenderContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{4}
}
func (x *RenderContext) GetRequest() *RequestInfo {
if x != nil {
return x.Request
}
return nil
}
func (x *RenderContext) GetBlockContext() *BlockContext {
if x != nil {
return x.BlockContext
}
return nil
}
func (x *RenderContext) GetTemplateKey() string {
if x != nil {
return x.TemplateKey
}
return ""
}
func (x *RenderContext) GetPage() *PageContext {
if x != nil {
return x.Page
}
return nil
}
func (x *RenderContext) GetPost() *PostContext {
if x != nil {
return x.Post
}
return nil
}
func (x *RenderContext) GetAuthor() *AuthorContext {
if x != nil {
return x.Author
}
return nil
}
func (x *RenderContext) GetCategory() *CategoryContext {
if x != nil {
return x.Category
}
return nil
}
func (x *RenderContext) GetMasterPage() *MasterPageContext {
if x != nil {
return x.MasterPage
}
return nil
}
func (x *RenderContext) GetRequestedPath() string {
if x != nil {
return x.RequestedPath
}
return ""
}
func (x *RenderContext) GetInjectedSlots() map[string]string {
if x != nil {
return x.InjectedSlots
}
return nil
}
func (x *RenderContext) GetIsEditor() bool {
if x != nil {
return x.IsEditor
}
return false
}
func (x *RenderContext) GetExpectedSlots() []string {
if x != nil {
return x.ExpectedSlots
}
return nil
}
func (x *RenderContext) GetBlockId() string {
if x != nil {
return x.BlockId
}
return ""
}
func (x *RenderContext) GetCurrentPageId() string {
if x != nil {
return x.CurrentPageId
}
return ""
}
func (x *RenderContext) GetHumanProofBanner() *HumanProofBanner {
if x != nil {
return x.HumanProofBanner
}
return nil
}
func (x *RenderContext) GetDetailRow() *DetailRow {
if x != nil {
return x.DetailRow
}
return nil
}
func (x *RenderContext) GetThemeJson() []byte {
if x != nil {
return x.ThemeJson
}
return nil
}
func (x *RenderContext) GetLocale() string {
if x != nil {
return x.Locale
}
return ""
}
// RequestInfo carries the request subset render code reads from
// blocks.GetRequest (single-valued header map, matching BlockContext).
type RequestInfo struct {
state protoimpl.MessageState `protogen:"open.v1"`
Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
Host string `protobuf:"bytes,4,opt,name=host,proto3" json:"host,omitempty"`
RawQuery string `protobuf:"bytes,5,opt,name=raw_query,json=rawQuery,proto3" json:"raw_query,omitempty"`
Headers map[string]string `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Cookies map[string]string `protobuf:"bytes,7,rep,name=cookies,proto3" json:"cookies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
RemoteIp string `protobuf:"bytes,8,opt,name=remote_ip,json=remoteIp,proto3" json:"remote_ip,omitempty"`
Referrer string `protobuf:"bytes,9,opt,name=referrer,proto3" json:"referrer,omitempty"`
UserAgent string `protobuf:"bytes,10,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RequestInfo) Reset() {
*x = RequestInfo{}
mi := &file_v1_render_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RequestInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RequestInfo) ProtoMessage() {}
func (x *RequestInfo) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RequestInfo.ProtoReflect.Descriptor instead.
func (*RequestInfo) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{5}
}
func (x *RequestInfo) GetMethod() string {
if x != nil {
return x.Method
}
return ""
}
func (x *RequestInfo) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *RequestInfo) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *RequestInfo) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *RequestInfo) GetRawQuery() string {
if x != nil {
return x.RawQuery
}
return ""
}
func (x *RequestInfo) GetHeaders() map[string]string {
if x != nil {
return x.Headers
}
return nil
}
func (x *RequestInfo) GetCookies() map[string]string {
if x != nil {
return x.Cookies
}
return nil
}
func (x *RequestInfo) GetRemoteIp() string {
if x != nil {
return x.RemoteIp
}
return ""
}
func (x *RequestInfo) GetReferrer() string {
if x != nil {
return x.Referrer
}
return ""
}
func (x *RequestInfo) GetUserAgent() string {
if x != nil {
return x.UserAgent
}
return ""
}
// PageContext mirrors blocks.PageContext.
type PageContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"`
Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
PostType string `protobuf:"bytes,4,opt,name=post_type,json=postType,proto3" json:"post_type,omitempty"` // "page", "post", "master", "system"
Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` // "published", "draft", "scheduled"
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PageContext) Reset() {
*x = PageContext{}
mi := &file_v1_render_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PageContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PageContext) ProtoMessage() {}
func (x *PageContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PageContext.ProtoReflect.Descriptor instead.
func (*PageContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{6}
}
func (x *PageContext) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *PageContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *PageContext) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *PageContext) GetPostType() string {
if x != nil {
return x.PostType
}
return ""
}
func (x *PageContext) GetStatus() string {
if x != nil {
return x.Status
}
return ""
}
// PostContext mirrors blocks.PostContext.
type PostContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"`
Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
Excerpt string `protobuf:"bytes,4,opt,name=excerpt,proto3" json:"excerpt,omitempty"`
FeaturedImageUrl string `protobuf:"bytes,5,opt,name=featured_image_url,json=featuredImageUrl,proto3" json:"featured_image_url,omitempty"`
AuthorId string `protobuf:"bytes,6,opt,name=author_id,json=authorId,proto3" json:"author_id,omitempty"` // UUID
PublishedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"`
ReadingTime int32 `protobuf:"varint,8,opt,name=reading_time,json=readingTime,proto3" json:"reading_time,omitempty"`
IsFeatured bool `protobuf:"varint,9,opt,name=is_featured,json=isFeatured,proto3" json:"is_featured,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PostContext) Reset() {
*x = PostContext{}
mi := &file_v1_render_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PostContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PostContext) ProtoMessage() {}
func (x *PostContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PostContext.ProtoReflect.Descriptor instead.
func (*PostContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{7}
}
func (x *PostContext) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *PostContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *PostContext) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *PostContext) GetExcerpt() string {
if x != nil {
return x.Excerpt
}
return ""
}
func (x *PostContext) GetFeaturedImageUrl() string {
if x != nil {
return x.FeaturedImageUrl
}
return ""
}
func (x *PostContext) GetAuthorId() string {
if x != nil {
return x.AuthorId
}
return ""
}
func (x *PostContext) GetPublishedAt() *timestamppb.Timestamp {
if x != nil {
return x.PublishedAt
}
return nil
}
func (x *PostContext) GetReadingTime() int32 {
if x != nil {
return x.ReadingTime
}
return 0
}
func (x *PostContext) GetIsFeatured() bool {
if x != nil {
return x.IsFeatured
}
return false
}
// AuthorContext mirrors blocks.AuthorContext.
type AuthorContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"`
Bio string `protobuf:"bytes,4,opt,name=bio,proto3" json:"bio,omitempty"`
AvatarUrl string `protobuf:"bytes,5,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AuthorContext) Reset() {
*x = AuthorContext{}
mi := &file_v1_render_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AuthorContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthorContext) ProtoMessage() {}
func (x *AuthorContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthorContext.ProtoReflect.Descriptor instead.
func (*AuthorContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{8}
}
func (x *AuthorContext) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *AuthorContext) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AuthorContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *AuthorContext) GetBio() string {
if x != nil {
return x.Bio
}
return ""
}
func (x *AuthorContext) GetAvatarUrl() string {
if x != nil {
return x.AvatarUrl
}
return ""
}
// CategoryContext mirrors blocks.CategoryContext.
type CategoryContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CategoryContext) Reset() {
*x = CategoryContext{}
mi := &file_v1_render_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CategoryContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CategoryContext) ProtoMessage() {}
func (x *CategoryContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CategoryContext.ProtoReflect.Descriptor instead.
func (*CategoryContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{9}
}
func (x *CategoryContext) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *CategoryContext) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *CategoryContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
// MasterPageContext mirrors blocks.MasterPageContext.
type MasterPageContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
Slug string `protobuf:"bytes,2,opt,name=slug,proto3" json:"slug,omitempty"`
Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MasterPageContext) Reset() {
*x = MasterPageContext{}
mi := &file_v1_render_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MasterPageContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MasterPageContext) ProtoMessage() {}
func (x *MasterPageContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MasterPageContext.ProtoReflect.Descriptor instead.
func (*MasterPageContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{10}
}
func (x *MasterPageContext) GetId() string {
if x != nil {
return x.Id
}
return ""
}
func (x *MasterPageContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *MasterPageContext) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
// HumanProofBanner mirrors blocks.HumanProofBannerData.
type HumanProofBanner struct {
state protoimpl.MessageState `protogen:"open.v1"`
ActiveTimeMinutes int32 `protobuf:"varint,1,opt,name=active_time_minutes,json=activeTimeMinutes,proto3" json:"active_time_minutes,omitempty"`
KeystrokeCount int32 `protobuf:"varint,2,opt,name=keystroke_count,json=keystrokeCount,proto3" json:"keystroke_count,omitempty"`
SessionCount int32 `protobuf:"varint,3,opt,name=session_count,json=sessionCount,proto3" json:"session_count,omitempty"`
PostSlug string `protobuf:"bytes,4,opt,name=post_slug,json=postSlug,proto3" json:"post_slug,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *HumanProofBanner) Reset() {
*x = HumanProofBanner{}
mi := &file_v1_render_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *HumanProofBanner) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HumanProofBanner) ProtoMessage() {}
func (x *HumanProofBanner) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use HumanProofBanner.ProtoReflect.Descriptor instead.
func (*HumanProofBanner) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{11}
}
func (x *HumanProofBanner) GetActiveTimeMinutes() int32 {
if x != nil {
return x.ActiveTimeMinutes
}
return 0
}
func (x *HumanProofBanner) GetKeystrokeCount() int32 {
if x != nil {
return x.KeystrokeCount
}
return 0
}
func (x *HumanProofBanner) GetSessionCount() int32 {
if x != nil {
return x.SessionCount
}
return 0
}
func (x *HumanProofBanner) GetPostSlug() string {
if x != nil {
return x.PostSlug
}
return ""
}
// DetailRow mirrors blocks.DetailRowInfo.
type DetailRow struct {
state protoimpl.MessageState `protogen:"open.v1"`
TableId string `protobuf:"bytes,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
RowId string `protobuf:"bytes,2,opt,name=row_id,json=rowId,proto3" json:"row_id,omitempty"`
// JSON encoding of the row data map.
DataJson []byte `protobuf:"bytes,3,opt,name=data_json,json=dataJson,proto3" json:"data_json,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DetailRow) Reset() {
*x = DetailRow{}
mi := &file_v1_render_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DetailRow) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DetailRow) ProtoMessage() {}
func (x *DetailRow) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use DetailRow.ProtoReflect.Descriptor instead.
func (*DetailRow) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{12}
}
func (x *DetailRow) GetTableId() string {
if x != nil {
return x.TableId
}
return ""
}
func (x *DetailRow) GetRowId() string {
if x != nil {
return x.RowId
}
return ""
}
func (x *DetailRow) GetDataJson() []byte {
if x != nil {
return x.DataJson
}
return nil
}
// BlockContext mirrors blocks.BlockContext (the pongo2 data struct) 1:1.
// map[string]any fields travel as JSON bytes.
type BlockContext struct {
state protoimpl.MessageState `protogen:"open.v1"`
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"`
PageId string `protobuf:"bytes,4,opt,name=page_id,json=pageId,proto3" json:"page_id,omitempty"`
PageTitle string `protobuf:"bytes,5,opt,name=page_title,json=pageTitle,proto3" json:"page_title,omitempty"`
TemplateKey string `protobuf:"bytes,6,opt,name=template_key,json=templateKey,proto3" json:"template_key,omitempty"`
IsEditor bool `protobuf:"varint,7,opt,name=is_editor,json=isEditor,proto3" json:"is_editor,omitempty"`
Timestamp int64 `protobuf:"varint,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Now *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=now,proto3" json:"now,omitempty"`
IsLoggedIn bool `protobuf:"varint,10,opt,name=is_logged_in,json=isLoggedIn,proto3" json:"is_logged_in,omitempty"`
UserId string `protobuf:"bytes,11,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
UserEmail string `protobuf:"bytes,12,opt,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
UserRole string `protobuf:"bytes,13,opt,name=user_role,json=userRole,proto3" json:"user_role,omitempty"`
Method string `protobuf:"bytes,14,opt,name=method,proto3" json:"method,omitempty"`
Host string `protobuf:"bytes,15,opt,name=host,proto3" json:"host,omitempty"`
Query map[string]string `protobuf:"bytes,16,rep,name=query,proto3" json:"query,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Referrer string `protobuf:"bytes,17,opt,name=referrer,proto3" json:"referrer,omitempty"`
UserAgent string `protobuf:"bytes,18,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"`
Ip string `protobuf:"bytes,19,opt,name=ip,proto3" json:"ip,omitempty"`
Cookies map[string]string `protobuf:"bytes,20,rep,name=cookies,proto3" json:"cookies,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Headers map[string]string `protobuf:"bytes,21,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
Country string `protobuf:"bytes,22,opt,name=country,proto3" json:"country,omitempty"`
City string `protobuf:"bytes,23,opt,name=city,proto3" json:"city,omitempty"`
Timezone string `protobuf:"bytes,24,opt,name=timezone,proto3" json:"timezone,omitempty"`
CurrentAuthorJson []byte `protobuf:"bytes,25,opt,name=current_author_json,json=currentAuthorJson,proto3" json:"current_author_json,omitempty"`
CurrentPostJson []byte `protobuf:"bytes,26,opt,name=current_post_json,json=currentPostJson,proto3" json:"current_post_json,omitempty"`
CurrentCategoryJson []byte `protobuf:"bytes,27,opt,name=current_category_json,json=currentCategoryJson,proto3" json:"current_category_json,omitempty"`
SiteJson []byte `protobuf:"bytes,28,opt,name=site_json,json=siteJson,proto3" json:"site_json,omitempty"`
IsPublicLoggedIn bool `protobuf:"varint,29,opt,name=is_public_logged_in,json=isPublicLoggedIn,proto3" json:"is_public_logged_in,omitempty"`
PublicUserId string `protobuf:"bytes,30,opt,name=public_user_id,json=publicUserId,proto3" json:"public_user_id,omitempty"`
PublicUsername string `protobuf:"bytes,31,opt,name=public_username,json=publicUsername,proto3" json:"public_username,omitempty"`
PublicDisplayName string `protobuf:"bytes,32,opt,name=public_display_name,json=publicDisplayName,proto3" json:"public_display_name,omitempty"`
PublicEmailVerified bool `protobuf:"varint,33,opt,name=public_email_verified,json=publicEmailVerified,proto3" json:"public_email_verified,omitempty"`
DetailRowId string `protobuf:"bytes,34,opt,name=detail_row_id,json=detailRowId,proto3" json:"detail_row_id,omitempty"`
DetailTableId string `protobuf:"bytes,35,opt,name=detail_table_id,json=detailTableId,proto3" json:"detail_table_id,omitempty"`
DetailRowDataJson []byte `protobuf:"bytes,36,opt,name=detail_row_data_json,json=detailRowDataJson,proto3" json:"detail_row_data_json,omitempty"`
BlogIndexUrl string `protobuf:"bytes,37,opt,name=blog_index_url,json=blogIndexUrl,proto3" json:"blog_index_url,omitempty"`
CategoryPageUrl string `protobuf:"bytes,38,opt,name=category_page_url,json=categoryPageUrl,proto3" json:"category_page_url,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *BlockContext) Reset() {
*x = BlockContext{}
mi := &file_v1_render_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BlockContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlockContext) ProtoMessage() {}
func (x *BlockContext) ProtoReflect() protoreflect.Message {
mi := &file_v1_render_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BlockContext.ProtoReflect.Descriptor instead.
func (*BlockContext) Descriptor() ([]byte, []int) {
return file_v1_render_proto_rawDescGZIP(), []int{13}
}
func (x *BlockContext) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *BlockContext) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *BlockContext) GetSlug() string {
if x != nil {
return x.Slug
}
return ""
}
func (x *BlockContext) GetPageId() string {
if x != nil {
return x.PageId
}
return ""
}
func (x *BlockContext) GetPageTitle() string {
if x != nil {
return x.PageTitle
}
return ""
}
func (x *BlockContext) GetTemplateKey() string {
if x != nil {
return x.TemplateKey
}
return ""
}
func (x *BlockContext) GetIsEditor() bool {
if x != nil {
return x.IsEditor
}
return false
}
func (x *BlockContext) GetTimestamp() int64 {
if x != nil {
return x.Timestamp
}
return 0
}
func (x *BlockContext) GetNow() *timestamppb.Timestamp {
if x != nil {
return x.Now
}
return nil
}
func (x *BlockContext) GetIsLoggedIn() bool {
if x != nil {
return x.IsLoggedIn
}
return false
}
func (x *BlockContext) GetUserId() string {
if x != nil {
return x.UserId
}
return ""
}
func (x *BlockContext) GetUserEmail() string {
if x != nil {
return x.UserEmail
}
return ""
}
func (x *BlockContext) GetUserRole() string {
if x != nil {
return x.UserRole
}
return ""
}
func (x *BlockContext) GetMethod() string {
if x != nil {
return x.Method
}
return ""
}
func (x *BlockContext) GetHost() string {
if x != nil {
return x.Host
}
return ""
}
func (x *BlockContext) GetQuery() map[string]string {
if x != nil {
return x.Query
}
return nil
}
func (x *BlockContext) GetReferrer() string {
if x != nil {
return x.Referrer
}
return ""
}
func (x *BlockContext) GetUserAgent() string {
if x != nil {
return x.UserAgent
}
return ""
}
func (x *BlockContext) GetIp() string {
if x != nil {
return x.Ip
}
return ""
}
func (x *BlockContext) GetCookies() map[string]string {
if x != nil {
return x.Cookies
}
return nil
}
func (x *BlockContext) GetHeaders() map[string]string {
if x != nil {
return x.Headers
}
return nil
}
func (x *BlockContext) GetCountry() string {
if x != nil {
return x.Country
}
return ""
}
func (x *BlockContext) GetCity() string {
if x != nil {
return x.City
}
return ""
}
func (x *BlockContext) GetTimezone() string {
if x != nil {
return x.Timezone
}
return ""
}
func (x *BlockContext) GetCurrentAuthorJson() []byte {
if x != nil {
return x.CurrentAuthorJson
}
return nil
}
func (x *BlockContext) GetCurrentPostJson() []byte {
if x != nil {
return x.CurrentPostJson
}
return nil
}
func (x *BlockContext) GetCurrentCategoryJson() []byte {
if x != nil {
return x.CurrentCategoryJson
}
return nil
}
func (x *BlockContext) GetSiteJson() []byte {
if x != nil {
return x.SiteJson
}
return nil
}
func (x *BlockContext) GetIsPublicLoggedIn() bool {
if x != nil {
return x.IsPublicLoggedIn
}
return false
}
func (x *BlockContext) GetPublicUserId() string {
if x != nil {
return x.PublicUserId
}
return ""
}
func (x *BlockContext) GetPublicUsername() string {
if x != nil {
return x.PublicUsername
}
return ""
}
func (x *BlockContext) GetPublicDisplayName() string {
if x != nil {
return x.PublicDisplayName
}
return ""
}
func (x *BlockContext) GetPublicEmailVerified() bool {
if x != nil {
return x.PublicEmailVerified
}
return false
}
func (x *BlockContext) GetDetailRowId() string {
if x != nil {
return x.DetailRowId
}
return ""
}
func (x *BlockContext) GetDetailTableId() string {
if x != nil {
return x.DetailTableId
}
return ""
}
func (x *BlockContext) GetDetailRowDataJson() []byte {
if x != nil {
return x.DetailRowDataJson
}
return nil
}
func (x *BlockContext) GetBlogIndexUrl() string {
if x != nil {
return x.BlogIndexUrl
}
return ""
}
func (x *BlockContext) GetCategoryPageUrl() string {
if x != nil {
return x.CategoryPageUrl
}
return ""
}
var File_v1_render_proto protoreflect.FileDescriptor
const file_v1_render_proto_rawDesc = "" +
"\n" +
"\x0fv1/render.proto\x12\x06abi.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x92\x01\n" +
"\x12RenderBlockRequest\x12\x1b\n" +
"\tblock_key\x18\x01 \x01(\tR\bblockKey\x12!\n" +
"\fcontent_json\x18\x02 \x01(\fR\vcontentJson\x12<\n" +
"\x0erender_context\x18\x03 \x01(\v2\x15.abi.v1.RenderContextR\rrenderContext\")\n" +
"\x13RenderBlockResponse\x12\x12\n" +
"\x04html\x18\x01 \x01(\tR\x04html\"\x93\x01\n" +
"\x15RenderTemplateRequest\x12!\n" +
"\ftemplate_key\x18\x01 \x01(\tR\vtemplateKey\x12\x19\n" +
"\bdoc_json\x18\x02 \x01(\fR\adocJson\x12<\n" +
"\x0erender_context\x18\x03 \x01(\v2\x15.abi.v1.RenderContextR\rrenderContext\",\n" +
"\x16RenderTemplateResponse\x12\x12\n" +
"\x04html\x18\x01 \x01(\fR\x04html\"\x80\a\n" +
"\rRenderContext\x12-\n" +
"\arequest\x18\x01 \x01(\v2\x13.abi.v1.RequestInfoR\arequest\x129\n" +
"\rblock_context\x18\x02 \x01(\v2\x14.abi.v1.BlockContextR\fblockContext\x12!\n" +
"\ftemplate_key\x18\x03 \x01(\tR\vtemplateKey\x12'\n" +
"\x04page\x18\x04 \x01(\v2\x13.abi.v1.PageContextR\x04page\x12'\n" +
"\x04post\x18\x05 \x01(\v2\x13.abi.v1.PostContextR\x04post\x12-\n" +
"\x06author\x18\x06 \x01(\v2\x15.abi.v1.AuthorContextR\x06author\x123\n" +
"\bcategory\x18\a \x01(\v2\x17.abi.v1.CategoryContextR\bcategory\x12:\n" +
"\vmaster_page\x18\b \x01(\v2\x19.abi.v1.MasterPageContextR\n" +
"masterPage\x12%\n" +
"\x0erequested_path\x18\t \x01(\tR\rrequestedPath\x12O\n" +
"\x0einjected_slots\x18\n" +
" \x03(\v2(.abi.v1.RenderContext.InjectedSlotsEntryR\rinjectedSlots\x12\x1b\n" +
"\tis_editor\x18\v \x01(\bR\bisEditor\x12%\n" +
"\x0eexpected_slots\x18\f \x03(\tR\rexpectedSlots\x12\x19\n" +
"\bblock_id\x18\r \x01(\tR\ablockId\x12&\n" +
"\x0fcurrent_page_id\x18\x0e \x01(\tR\rcurrentPageId\x12F\n" +
"\x12human_proof_banner\x18\x0f \x01(\v2\x18.abi.v1.HumanProofBannerR\x10humanProofBanner\x120\n" +
"\n" +
"detail_row\x18\x10 \x01(\v2\x11.abi.v1.DetailRowR\tdetailRow\x12\x1d\n" +
"\n" +
"theme_json\x18\x11 \x01(\fR\tthemeJson\x12\x16\n" +
"\x06locale\x18\x12 \x01(\tR\x06locale\x1a@\n" +
"\x12InjectedSlotsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xc4\x03\n" +
"\vRequestInfo\x12\x16\n" +
"\x06method\x18\x01 \x01(\tR\x06method\x12\x10\n" +
"\x03url\x18\x02 \x01(\tR\x03url\x12\x12\n" +
"\x04path\x18\x03 \x01(\tR\x04path\x12\x12\n" +
"\x04host\x18\x04 \x01(\tR\x04host\x12\x1b\n" +
"\traw_query\x18\x05 \x01(\tR\brawQuery\x12:\n" +
"\aheaders\x18\x06 \x03(\v2 .abi.v1.RequestInfo.HeadersEntryR\aheaders\x12:\n" +
"\acookies\x18\a \x03(\v2 .abi.v1.RequestInfo.CookiesEntryR\acookies\x12\x1b\n" +
"\tremote_ip\x18\b \x01(\tR\bremoteIp\x12\x1a\n" +
"\breferrer\x18\t \x01(\tR\breferrer\x12\x1d\n" +
"\n" +
"user_agent\x18\n" +
" \x01(\tR\tuserAgent\x1a:\n" +
"\fHeadersEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" +
"\fCookiesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"|\n" +
"\vPageContext\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04slug\x18\x02 \x01(\tR\x04slug\x12\x14\n" +
"\x05title\x18\x03 \x01(\tR\x05title\x12\x1b\n" +
"\tpost_type\x18\x04 \x01(\tR\bpostType\x12\x16\n" +
"\x06status\x18\x05 \x01(\tR\x06status\"\xaf\x02\n" +
"\vPostContext\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04slug\x18\x02 \x01(\tR\x04slug\x12\x14\n" +
"\x05title\x18\x03 \x01(\tR\x05title\x12\x18\n" +
"\aexcerpt\x18\x04 \x01(\tR\aexcerpt\x12,\n" +
"\x12featured_image_url\x18\x05 \x01(\tR\x10featuredImageUrl\x12\x1b\n" +
"\tauthor_id\x18\x06 \x01(\tR\bauthorId\x12=\n" +
"\fpublished_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\vpublishedAt\x12!\n" +
"\freading_time\x18\b \x01(\x05R\vreadingTime\x12\x1f\n" +
"\vis_featured\x18\t \x01(\bR\n" +
"isFeatured\"x\n" +
"\rAuthorContext\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
"\x04slug\x18\x03 \x01(\tR\x04slug\x12\x10\n" +
"\x03bio\x18\x04 \x01(\tR\x03bio\x12\x1d\n" +
"\n" +
"avatar_url\x18\x05 \x01(\tR\tavatarUrl\"I\n" +
"\x0fCategoryContext\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x12\n" +
"\x04slug\x18\x03 \x01(\tR\x04slug\"M\n" +
"\x11MasterPageContext\x12\x0e\n" +
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
"\x04slug\x18\x02 \x01(\tR\x04slug\x12\x14\n" +
"\x05title\x18\x03 \x01(\tR\x05title\"\xad\x01\n" +
"\x10HumanProofBanner\x12.\n" +
"\x13active_time_minutes\x18\x01 \x01(\x05R\x11activeTimeMinutes\x12'\n" +
"\x0fkeystroke_count\x18\x02 \x01(\x05R\x0ekeystrokeCount\x12#\n" +
"\rsession_count\x18\x03 \x01(\x05R\fsessionCount\x12\x1b\n" +
"\tpost_slug\x18\x04 \x01(\tR\bpostSlug\"Z\n" +
"\tDetailRow\x12\x19\n" +
"\btable_id\x18\x01 \x01(\tR\atableId\x12\x15\n" +
"\x06row_id\x18\x02 \x01(\tR\x05rowId\x12\x1b\n" +
"\tdata_json\x18\x03 \x01(\fR\bdataJson\"\x85\f\n" +
"\fBlockContext\x12\x10\n" +
"\x03url\x18\x01 \x01(\tR\x03url\x12\x12\n" +
"\x04path\x18\x02 \x01(\tR\x04path\x12\x12\n" +
"\x04slug\x18\x03 \x01(\tR\x04slug\x12\x17\n" +
"\apage_id\x18\x04 \x01(\tR\x06pageId\x12\x1d\n" +
"\n" +
"page_title\x18\x05 \x01(\tR\tpageTitle\x12!\n" +
"\ftemplate_key\x18\x06 \x01(\tR\vtemplateKey\x12\x1b\n" +
"\tis_editor\x18\a \x01(\bR\bisEditor\x12\x1c\n" +
"\ttimestamp\x18\b \x01(\x03R\ttimestamp\x12,\n" +
"\x03now\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x03now\x12 \n" +
"\fis_logged_in\x18\n" +
" \x01(\bR\n" +
"isLoggedIn\x12\x17\n" +
"\auser_id\x18\v \x01(\tR\x06userId\x12\x1d\n" +
"\n" +
"user_email\x18\f \x01(\tR\tuserEmail\x12\x1b\n" +
"\tuser_role\x18\r \x01(\tR\buserRole\x12\x16\n" +
"\x06method\x18\x0e \x01(\tR\x06method\x12\x12\n" +
"\x04host\x18\x0f \x01(\tR\x04host\x125\n" +
"\x05query\x18\x10 \x03(\v2\x1f.abi.v1.BlockContext.QueryEntryR\x05query\x12\x1a\n" +
"\breferrer\x18\x11 \x01(\tR\breferrer\x12\x1d\n" +
"\n" +
"user_agent\x18\x12 \x01(\tR\tuserAgent\x12\x0e\n" +
"\x02ip\x18\x13 \x01(\tR\x02ip\x12;\n" +
"\acookies\x18\x14 \x03(\v2!.abi.v1.BlockContext.CookiesEntryR\acookies\x12;\n" +
"\aheaders\x18\x15 \x03(\v2!.abi.v1.BlockContext.HeadersEntryR\aheaders\x12\x18\n" +
"\acountry\x18\x16 \x01(\tR\acountry\x12\x12\n" +
"\x04city\x18\x17 \x01(\tR\x04city\x12\x1a\n" +
"\btimezone\x18\x18 \x01(\tR\btimezone\x12.\n" +
"\x13current_author_json\x18\x19 \x01(\fR\x11currentAuthorJson\x12*\n" +
"\x11current_post_json\x18\x1a \x01(\fR\x0fcurrentPostJson\x122\n" +
"\x15current_category_json\x18\x1b \x01(\fR\x13currentCategoryJson\x12\x1b\n" +
"\tsite_json\x18\x1c \x01(\fR\bsiteJson\x12-\n" +
"\x13is_public_logged_in\x18\x1d \x01(\bR\x10isPublicLoggedIn\x12$\n" +
"\x0epublic_user_id\x18\x1e \x01(\tR\fpublicUserId\x12'\n" +
"\x0fpublic_username\x18\x1f \x01(\tR\x0epublicUsername\x12.\n" +
"\x13public_display_name\x18 \x01(\tR\x11publicDisplayName\x122\n" +
"\x15public_email_verified\x18! \x01(\bR\x13publicEmailVerified\x12\"\n" +
"\rdetail_row_id\x18\" \x01(\tR\vdetailRowId\x12&\n" +
"\x0fdetail_table_id\x18# \x01(\tR\rdetailTableId\x12/\n" +
"\x14detail_row_data_json\x18$ \x01(\fR\x11detailRowDataJson\x12$\n" +
"\x0eblog_index_url\x18% \x01(\tR\fblogIndexUrl\x12*\n" +
"\x11category_page_url\x18& \x01(\tR\x0fcategoryPageUrl\x1a8\n" +
"\n" +
"QueryEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" +
"\fCookiesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" +
"\fHeadersEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B0Z.git.dev.alexdunmow.com/block/core/abi/v1;abiv1b\x06proto3"
var (
file_v1_render_proto_rawDescOnce sync.Once
file_v1_render_proto_rawDescData []byte
)
func file_v1_render_proto_rawDescGZIP() []byte {
file_v1_render_proto_rawDescOnce.Do(func() {
file_v1_render_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_render_proto_rawDesc), len(file_v1_render_proto_rawDesc)))
})
return file_v1_render_proto_rawDescData
}
var file_v1_render_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_v1_render_proto_goTypes = []any{
(*RenderBlockRequest)(nil), // 0: abi.v1.RenderBlockRequest
(*RenderBlockResponse)(nil), // 1: abi.v1.RenderBlockResponse
(*RenderTemplateRequest)(nil), // 2: abi.v1.RenderTemplateRequest
(*RenderTemplateResponse)(nil), // 3: abi.v1.RenderTemplateResponse
(*RenderContext)(nil), // 4: abi.v1.RenderContext
(*RequestInfo)(nil), // 5: abi.v1.RequestInfo
(*PageContext)(nil), // 6: abi.v1.PageContext
(*PostContext)(nil), // 7: abi.v1.PostContext
(*AuthorContext)(nil), // 8: abi.v1.AuthorContext
(*CategoryContext)(nil), // 9: abi.v1.CategoryContext
(*MasterPageContext)(nil), // 10: abi.v1.MasterPageContext
(*HumanProofBanner)(nil), // 11: abi.v1.HumanProofBanner
(*DetailRow)(nil), // 12: abi.v1.DetailRow
(*BlockContext)(nil), // 13: abi.v1.BlockContext
nil, // 14: abi.v1.RenderContext.InjectedSlotsEntry
nil, // 15: abi.v1.RequestInfo.HeadersEntry
nil, // 16: abi.v1.RequestInfo.CookiesEntry
nil, // 17: abi.v1.BlockContext.QueryEntry
nil, // 18: abi.v1.BlockContext.CookiesEntry
nil, // 19: abi.v1.BlockContext.HeadersEntry
(*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp
}
var file_v1_render_proto_depIdxs = []int32{
4, // 0: abi.v1.RenderBlockRequest.render_context:type_name -> abi.v1.RenderContext
4, // 1: abi.v1.RenderTemplateRequest.render_context:type_name -> abi.v1.RenderContext
5, // 2: abi.v1.RenderContext.request:type_name -> abi.v1.RequestInfo
13, // 3: abi.v1.RenderContext.block_context:type_name -> abi.v1.BlockContext
6, // 4: abi.v1.RenderContext.page:type_name -> abi.v1.PageContext
7, // 5: abi.v1.RenderContext.post:type_name -> abi.v1.PostContext
8, // 6: abi.v1.RenderContext.author:type_name -> abi.v1.AuthorContext
9, // 7: abi.v1.RenderContext.category:type_name -> abi.v1.CategoryContext
10, // 8: abi.v1.RenderContext.master_page:type_name -> abi.v1.MasterPageContext
14, // 9: abi.v1.RenderContext.injected_slots:type_name -> abi.v1.RenderContext.InjectedSlotsEntry
11, // 10: abi.v1.RenderContext.human_proof_banner:type_name -> abi.v1.HumanProofBanner
12, // 11: abi.v1.RenderContext.detail_row:type_name -> abi.v1.DetailRow
15, // 12: abi.v1.RequestInfo.headers:type_name -> abi.v1.RequestInfo.HeadersEntry
16, // 13: abi.v1.RequestInfo.cookies:type_name -> abi.v1.RequestInfo.CookiesEntry
20, // 14: abi.v1.PostContext.published_at:type_name -> google.protobuf.Timestamp
20, // 15: abi.v1.BlockContext.now:type_name -> google.protobuf.Timestamp
17, // 16: abi.v1.BlockContext.query:type_name -> abi.v1.BlockContext.QueryEntry
18, // 17: abi.v1.BlockContext.cookies:type_name -> abi.v1.BlockContext.CookiesEntry
19, // 18: abi.v1.BlockContext.headers:type_name -> abi.v1.BlockContext.HeadersEntry
19, // [19:19] is the sub-list for method output_type
19, // [19:19] is the sub-list for method input_type
19, // [19:19] is the sub-list for extension type_name
19, // [19:19] is the sub-list for extension extendee
0, // [0:19] is the sub-list for field type_name
}
func init() { file_v1_render_proto_init() }
func file_v1_render_proto_init() {
if File_v1_render_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_render_proto_rawDesc), len(file_v1_render_proto_rawDesc)),
NumEnums: 0,
NumMessages: 20,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_v1_render_proto_goTypes,
DependencyIndexes: file_v1_render_proto_depIdxs,
MessageInfos: file_v1_render_proto_msgTypes,
}.Build()
File_v1_render_proto = out.File
file_v1_render_proto_goTypes = nil
file_v1_render_proto_depIdxs = nil
}