est

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2022 License: MPL-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package est provides the Encore Syntax Tree (EST).

It is an Encore-specific syntax tree that represents the higher-level representation of the application that Encore understands.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessType

type AccessType string
const (
	Public  AccessType = "public"
	Private AccessType = "private"
	// Auth is like public but requires authentication.
	Auth AccessType = "auth"
)

type Application

type Application struct {
	ModulePath  string
	Packages    []*Package
	Services    []*Service
	CronJobs    []*CronJob
	Decls       []*schema.Decl
	AuthHandler *AuthHandler
}

type AuthHandler

type AuthHandler struct {
	Svc    *Service
	Name   string
	Doc    string
	Func   *ast.FuncDecl
	File   *File
	Params *schema.Type // builtin string or named type

	// AuthData is the custom auth data type the app may specify
	// as part of the returns from the auth handler.
	// It is nil if no such auth data type is specified.
	AuthData *Param
}

type CronJob added in v0.19.0

type CronJob struct {
	ID       string
	Title    string
	Doc      string
	Schedule string
	RPC      *RPC
	AST      *ast.ValueSpec
}

func (*CronJob) IsValid added in v0.19.0

func (cj *CronJob) IsValid() (bool, error)

type File

type File struct {
	Name       string   // file name ("foo.go")
	Pkg        *Package // package it belongs to
	Path       string   // filesystem path
	AST        *ast.File
	Token      *token.File
	Contents   []byte
	References map[ast.Node]*Node
}

type Node

type Node struct {
	Type NodeType
	// If Type == RPCDefNode or RPCCallNode,
	// RPC is the RPC being defined or called.
	RPC *RPC

	// If Type == SQLDBNode or RLogNode,
	// Func is the func name being called.
	Func string

	// Resource this refers to, if any
	Res Resource
}

type NodeType

type NodeType int
const (
	RPCDefNode NodeType = iota + 1
	RPCRefNode
	SQLDBNode
	RLogNode
	SecretsNode
)

type Package

type Package struct {
	AST        *ast.Package
	Name       string
	Doc        string
	ImportPath string // import path
	RelPath    string // import path relative to app root
	Dir        string // filesystem path
	Files      []*File
	Service    *Service // the service this package belongs to, if any
	Secrets    []string
	Resources  []Resource
}

type Param

type Param struct {
	IsPtr bool
	Type  *schema.Type
}

type RPC

type RPC struct {
	Svc         *Service
	Name        string
	Doc         string
	Func        *ast.FuncDecl
	File        *File
	Access      AccessType
	Raw         bool
	Path        *paths.Path
	HTTPMethods []string
	Request     *Param // request data; nil for Raw RPCs
	Response    *Param // response data; nil for Raw RPCs
}

type Resource added in v0.17.2

type Resource interface {
	Type() ResourceType
	File() *File
	Ident() *ast.Ident
}

type ResourceType added in v0.17.2

type ResourceType int
const (
	SQLDBResource ResourceType = iota + 1
)

func (ResourceType) String added in v0.17.2

func (i ResourceType) String() string

type SQLDB added in v0.17.2

type SQLDB struct {
	DeclFile *File
	DeclName *ast.Ident // where the resource is declared
	DBName   string
}

func (*SQLDB) File added in v0.17.2

func (r *SQLDB) File() *File

func (*SQLDB) Ident added in v0.17.2

func (r *SQLDB) Ident() *ast.Ident

func (*SQLDB) Type added in v0.17.2

func (r *SQLDB) Type() ResourceType

type Service

type Service struct {
	Name string
	Root *Package
	Pkgs []*Package
	RPCs []*RPC
}

A Service is a Go package that defines one or more RPCs. Its name is defined by the Go package name. A Service may not be a located in a child directory of another service.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL