types

package
v0.9.9 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ID_PREFIX_APP_PROD      = "app_prd_"
	ID_PREFIX_APP_DEV       = "app_dev_"
	ID_PREFIX_APP_STAGE     = "app_stg_"
	ID_PREFIX_APP_PREVIEW   = "app_pre_"
	INTERNAL_URL_PREFIX     = "/_clace"
	WEBHOOK_URL_PREFIX      = "/_clace_webhook"
	APP_INTERNAL_URL_PREFIX = "/_clace_app"
	INTERNAL_APP_DELIM      = "_cl_"
	STAGE_SUFFIX            = INTERNAL_APP_DELIM + "stage"
	PREVIEW_SUFFIX          = INTERNAL_APP_DELIM + "preview"
	NO_SOURCE               = "-" // No source url is provided
)
View Source
const (
	TL_CONTEXT                  = "TL_context"
	TL_DEFER_MAP                = "TL_defer_map"
	TL_CURRENT_MODULE_FULL_PATH = "TL_current_module_full_path"
	TL_PLUGIN_API_FAILED_ERROR  = "TL_plugin_api_failed_error"
	TL_CONTAINER_URL            = "TL_container_url"
)
View Source
const (
	CONTAINER_SOURCE_AUTO         = "auto"
	CONTAINER_SOURCE_NIXPACKS     = "nixpacks"
	CONTAINER_SOURCE_IMAGE_PREFIX = "image:"
)
View Source
const (
	ANONYMOUS_USER = "anonymous"
	ADMIN_USER     = "admin"
)

Variables

This section is empty.

Functions

func RollingFileLogger

func RollingFileLogger(config *LogConfig, logType string) io.Writer

func StripQuotes added in v0.7.1

func StripQuotes(s string) string

Types

type AccountLink struct {
	Plugin      string `json:"plugin"`
	AccountName string `json:"account_name"`
}

AccountLink links the account to use for each plugin

type AppApproveResponse

type AppApproveResponse struct {
	DryRun              bool            `json:"dry_run"`
	StagedUpdateResults []ApproveResult `json:"staged_update_results"`
	PromoteResults      []AppPathDomain `json:"promote_results"`
}

type AppAuthnType

type AppAuthnType string

AppAuthnType is the app level authentication type

const (
	AppAuthnNone    AppAuthnType = "none"    // No auth
	AppAuthnDefault AppAuthnType = "default" // Use whatever auth is the default for the system
	AppAuthnSystem  AppAuthnType = "system"  // Use the system admin user
)

type AppConfig added in v0.7.1

type AppConfig struct {
	CORS      CORS      `toml:"cors"`
	Container Container `toml:"container"`
	Proxy     Proxy     `toml:"proxy"`
	FS        FS        `toml:"fs"`
}

type AppCreateResponse

type AppCreateResponse struct {
	DryRun         bool            `json:"dry_run"`
	HttpUrl        string          `json:"http_url"`
	HttpsUrl       string          `json:"https_url"`
	ApproveResults []ApproveResult `json:"approve_results"`
}

type AppDeleteResponse

type AppDeleteResponse struct {
	DryRun  bool      `json:"dry_run"`
	AppInfo []AppInfo `json:"app_info"`
}

type AppEntry

type AppEntry struct {
	Id         AppId       `json:"id"`
	Path       string      `json:"path"`
	Domain     string      `json:"domain"`
	MainApp    AppId       `json:"main_app"` // the id of the app that this app is linked to
	SourceUrl  string      `json:"source_url"`
	IsDev      bool        `json:"is_dev"`
	UserID     string      `json:"user_id"`
	CreateTime *time.Time  `json:"create_time"`
	UpdateTime *time.Time  `json:"update_time"`
	Settings   AppSettings `json:"settings"` // settings are not version controlled
	Metadata   AppMetadata `json:"metadata"` // metadata is version controlled
}

AppEntry is the application configuration in the DB

func (*AppEntry) AppPathDomain

func (ae *AppEntry) AppPathDomain() AppPathDomain

func (*AppEntry) String

func (ae *AppEntry) String() string

type AppFile

type AppFile struct {
	Name string
	Etag string
	Size int64
}

type AppGetResponse

type AppGetResponse struct {
	AppEntry AppEntry `json:"app_entry"`
}

type AppId

type AppId string

AppId is the identifier for an App

type AppInfo

type AppInfo struct {
	AppPathDomain
	Name       string
	Id         AppId
	IsDev      bool
	MainApp    AppId
	Auth       AppAuthnType
	SourceUrl  string
	Spec       AppSpec
	Version    int
	GitSha     string
	GitMessage string
}

AppInfo is the basic info for an app

func CreateAppInfo

func CreateAppInfo(id AppId, name, path, domain string, isDev bool, mainApp AppId,
	auth AppAuthnType, sourceUrl string, spec AppSpec,
	version int, gitSha, gitMessage string) AppInfo

type AppLinkAccountResponse

type AppLinkAccountResponse struct {
	DryRun              bool            `json:"dry_run"`
	StagedUpdateResults []AppPathDomain `json:"staged_update_results"`
	PromoteResults      []AppPathDomain `json:"promote_results"`
}

type AppListResponse

type AppListResponse struct {
	Apps []AppResponse `json:"apps"`
}

type AppMetadata

type AppMetadata struct {
	Name             string            `json:"name"`
	VersionMetadata  VersionMetadata   `json:"version_metadata"`
	Loads            []string          `json:"loads"`
	Permissions      []Permission      `json:"permissions"`
	Accounts         []AccountLink     `json:"accounts"`
	ParamValues      map[string]string `json:"param_values"`
	Spec             AppSpec           `json:"spec"`
	SpecFiles        *SpecFiles        `json:"spec_files"`
	ContainerOptions map[string]string `json:"container_options"`
	ContainerArgs    map[string]string `json:"container_args"`
	ContainerVolumes []string          `json:"container_volumes"`
	AppConfig        map[string]string `json:"appconfig"`
}

AppMetadata contains the configuration for an app. App configurations are version controlled.

type AppMetadataConfigType added in v0.7.1

type AppMetadataConfigType string
const (
	AppMetadataAppConfig        AppMetadataConfigType = "app_config"
	AppMetadataContainerOptions AppMetadataConfigType = "container_options"
	AppMetadataContainerArgs    AppMetadataConfigType = "container_args"
	AppMetadataContainerVolumes AppMetadataConfigType = "container_volumes"
)

type AppPathDomain

type AppPathDomain struct {
	Path   string
	Domain string
}

AppPathDomain is a unique identifier for an app, consisting of the path and domain

func CreateAppPathDomain

func CreateAppPathDomain(path, domain string) AppPathDomain

func (AppPathDomain) String

func (a AppPathDomain) String() string

type AppPreviewResponse

type AppPreviewResponse struct {
	DryRun        bool          `json:"dry_run"`
	HttpUrl       string        `json:"http_url"`
	HttpsUrl      string        `json:"https_url"`
	Success       bool          `json:"success"`
	ApproveResult ApproveResult `json:"approve_result"`
}

type AppPromoteResponse

type AppPromoteResponse struct {
	DryRun         bool            `json:"dry_run"`
	PromoteResults []AppPathDomain `json:"promote_results"`
}

type AppReloadResponse

type AppReloadResponse struct {
	DryRun         bool            `json:"dry_run"`
	ReloadResults  []AppPathDomain `json:"reload_results"`
	ApproveResults []ApproveResult `json:"approve_results"`
	PromoteResults []AppPathDomain `json:"promote_results"`
}

type AppResponse

type AppResponse struct {
	AppEntry
	StagedChanges bool `json:"staged_changes"`
}

type AppSettings

type AppSettings struct {
	AuthnType          AppAuthnType  `json:"authn_type"`
	GitAuthName        string        `json:"git_auth_name"`
	StageWriteAccess   bool          `json:"stage_write_access"`
	PreviewWriteAccess bool          `json:"preview_write_access"`
	WebhookTokens      WebhookTokens `json:"webhook_tokens"`
}

AppSettings contains the settings for an app. Settings are not version controlled.

type AppSpec

type AppSpec string

type AppStagedUpdateResponse

type AppStagedUpdateResponse struct {
	DryRun              bool            `json:"dry_run"`
	StagedUpdateResults any             `json:"staged_update_results"`
	PromoteResults      []AppPathDomain `json:"promote_results"`
}

type AppToken added in v0.7.0

type AppToken struct {
	Type  WebhookType `json:"type"`
	Url   string      `json:"url"`
	Token string      `json:"token"`
}

type AppUpdateMetadataResponse

type AppUpdateMetadataResponse struct {
	DryRun              bool            `json:"dry_run"`
	StagedUpdateResults []AppPathDomain `json:"staged_update_results"`
	PromoteResults      []AppPathDomain `json:"promote_results"`
}

type AppUpdateSettingsResponse

type AppUpdateSettingsResponse struct {
	DryRun        bool            `json:"dry_run"`
	UpdateResults []AppPathDomain `json:"update_results"`
}

type AppVersion

type AppVersion struct {
	Active          bool
	AppId           AppId
	Version         int
	PreviousVersion int
	UserId          string
	Metadata        *AppMetadata
	CreateTime      time.Time
}

type AppVersionFilesResponse

type AppVersionFilesResponse struct {
	Files []AppFile `json:"files"`
}

type AppVersionListResponse

type AppVersionListResponse struct {
	Versions []AppVersion `json:"versions"`
}

type AppVersionSwitchResponse

type AppVersionSwitchResponse struct {
	DryRun      bool `json:"dry_run"`
	FromVersion int  `json:"from_version"`
	ToVersion   int  `json:"to_version"`
}

type ApproveResult

type ApproveResult struct {
	Id                  AppId         `json:"id"`
	AppPathDomain       AppPathDomain `json:"app_path_domain"`
	NewLoads            []string      `json:"new_loads"`
	NewPermissions      []Permission  `json:"new_permissions"`
	ApprovedLoads       []string      `json:"approved_loads"`
	ApprovedPermissions []Permission  `json:"approved_permissions"`
	NeedsApproval       bool          `json:"needs_approval"`
}

ApproveResult represents the result of an app approval audit

type AuthConfig

type AuthConfig struct {
	Key          string   `toml:"key"`           // the client id
	Secret       string   `toml:"secret"`        // the client secret
	OrgUrl       string   `toml:"org_url"`       // the org url, used for Okta
	Domain       string   `toml:"domain"`        // the domain, used for Auth0
	DiscoveryUrl string   `toml:"discovery_url"` // the discovery url, used for OIDC
	HostedDomain string   `toml:"hosted_domain"` // the hosted domain, used for Google
	Scopes       []string `toml:"scopes"`        // oauth scopes
}

AuthConfig is the configuration for the Authentication provider

type BoolValue

type BoolValue int
const (
	BoolValueUndefined BoolValue = iota
	BoolValueTrue
	BoolValueFalse
)

type CORS added in v0.7.1

type CORS struct {
	AllowOrigin      string `toml:"allow_origin"`
	AllowMethods     string `toml:"allow_methods"`
	AllowHeaders     string `toml:"allow_headers"`
	AllowCredentials string `toml:"allow_credentials"`
	MaxAge           string `toml:"max_age"`
}

type ClientCertConfig added in v0.7.5

type ClientCertConfig struct {
	CACertFile string         `toml:"ca_cert_file"`
	RootCAs    *x509.CertPool `toml:"-"`
}

type ClientConfig

type ClientConfig struct {
	GlobalConfig
	Client ClientConfigStruct `toml:"client"`
}

ClientConfig is the configuration for the Clace Client

type ClientConfigStruct added in v0.6.5

type ClientConfigStruct struct {
	SkipCertCheck bool   `toml:"skip_cert_check"`
	AdminPassword string `toml:"admin_password"`
	DefaultFormat string `toml:"default_format"` // the default format for the CLI output
}

ClientConfigStruct is the configuration for the Clace Client

type Container added in v0.7.1

type Container struct {
	// Health check related config
	HealthUrl                  string `toml:"health_url"`
	HealthAttemptsAfterStartup int    `toml:"health_attempts_after_startup"`
	HealthTimeoutSecs          int    `toml:"health_timeout_secs"`

	// Idle shutdown related config
	IdleShutdownSecs    int  `toml:"idle_shutdown_secs"`
	IdleShutdownDevApps bool `toml:"idle_shutdown_dev_apps"`

	// Status check related config
	StatusCheckIntervalSecs int `toml:"status_check_interval_secs"`
	StatusHealthAttempts    int `toml:"status_health_attempts"`
}

type ContextKey added in v0.9.0

type ContextKey string
const (
	USER_ID ContextKey = "user_id"
)

type CreateAppRequest

type CreateAppRequest struct {
	SourceUrl        string            `json:"source_url"`
	IsDev            bool              `json:"is_dev"`
	AppAuthn         AppAuthnType      `json:"app_authn"`
	GitBranch        string            `json:"git_branch"`
	GitCommit        string            `json:"git_commit"`
	GitAuthName      string            `json:"git_auth_name"`
	Spec             AppSpec           `json:"spec"`
	ParamValues      map[string]string `json:"param_values"`
	ContainerOptions map[string]string `json:"container_options"`
	ContainerArgs    map[string]string `json:"container_args"`
	ContainerVolumes []string          `json:"container_volumes"`
	AppConfig        map[string]string `json:"appconfig"`
}

CreateAppRequest is the request body for creating an app

type FS added in v0.9.8

type FS struct {
	FileAccess []string `toml:"file_access"`
}

type GitAuthEntry

type GitAuthEntry struct {
	UserID      string `toml:"user_id"`       // the user id of the user, defaults to "git" https://github.com/src-d/go-git/issues/637
	KeyFilePath string `toml:"key_file_path"` // the path to the private key file
	Password    string `toml:"password"`      // the password for the private key file
}

GitAuth is a github auth config entry

type GlobalConfig

type GlobalConfig struct {
	ConfigFile string `toml:"config_file"`
	AdminUser  string `toml:"admin_user"`
	ServerUri  string `toml:"server_uri"`
}

Config entries shared between client and server

type HttpConfig

type HttpConfig struct {
	Host string `toml:"host"`
	Port int    `toml:"port"`
}

HttpConfig is the configuration for the HTTP server

type HttpsConfig

type HttpsConfig struct {
	Host               string `toml:"host"`
	Port               int    `toml:"port"`
	EnableCertLookup   bool   `toml:"enable_cert_lookup"`
	ServiceEmail       string `toml:"service_email"`
	UseStaging         bool   `toml:"use_staging"`
	StorageLocation    string `toml:"storage_location"`
	CertLocation       string `toml:"cert_location"`
	DisableClientCerts bool   `toml:"disable_client_certs"`
}

HttpsConfig is the configuration for the HTTPs server

type LogConfig

type LogConfig struct {
	Level         string `toml:"level"`
	MaxBackups    int    `toml:"max_backups"`
	MaxSizeMB     int    `toml:"max_size_mb"`
	Console       bool   `toml:"console"`
	File          bool   `toml:"file"`
	AccessLogging bool   `toml:"access_logging"`
}

LogConfig is the configuration for the Logger

type Logger

type Logger struct {
	*zerolog.Logger
}

func NewLogger

func NewLogger(config *LogConfig) *Logger

type MetadataConfig

type MetadataConfig struct {
	DBConnection string `toml:"db_connection"`
	AutoUpgrade  bool   `toml:"auto_upgrade"`
}

MetadataConfig is the configuration for the Metadata persistence layer

type Permission

type Permission struct {
	Plugin    string   `json:"plugin"`
	Method    string   `json:"method"`
	Arguments []string `json:"arguments"`
	IsRead    *bool    `json:"is_read,omitempty"` // Whether the call is a Read operation or Write operation.

}

Permission represents a permission granted to an app to run a plugin method with the given arguments

type PluginContext

type PluginContext struct {
	Logger    *Logger
	AppId     AppId
	StoreInfo *starlark_type.StoreInfo
	Config    PluginSettings
	AppConfig AppConfig
	AppPath   string
}

type PluginSettings

type PluginSettings map[string]any

type Proxy added in v0.7.4

type Proxy struct {
	// Proxy related config
	MaxIdleConns        int  `toml:"max_idle_conns"`
	IdleConnTimeoutSecs int  `toml:"idle_conn_timeout_secs"`
	DisableCompression  bool `toml:"disable_compression"`
}

type RequestError

type RequestError struct {
	Message string `json:"message"`
	Code    int    `json:"code"`
}

RequestError is the error returned by the API

func CreateRequestError

func CreateRequestError(message string, code int) RequestError

func (RequestError) Error

func (r RequestError) Error() string

type SecretConfig added in v0.7.2

type SecretConfig map[string]any

type SecurityConfig

type SecurityConfig struct {
	AdminOverTCP              bool   `toml:"admin_over_tcp"`
	AdminPasswordBcrypt       string `toml:"admin_password_bcrypt"`
	AppDefaultAuthType        string `toml:"app_default_auth_type"`
	AppDefaultSecretsProvider string `toml:"app_default_secrets_provider"`
	SessionSecret             string `toml:"session_secret"`
	SessionMaxAge             int    `toml:"session_max_age"`
	SessionHttpsOnly          bool   `toml:"session_https_only"`
	CallbackUrl               string `toml:"callback_url"`
}

SecurityConfig is the configuration for Inter process communication

type ServerConfig

type ServerConfig struct {
	GlobalConfig
	Http        HttpConfig                  `toml:"http"`
	Https       HttpsConfig                 `toml:"https"`
	Security    SecurityConfig              `toml:"security"`
	Metadata    MetadataConfig              `toml:"metadata"`
	Log         LogConfig                   `toml:"logging"`
	System      SystemConfig                `toml:"system"`
	GitAuth     map[string]GitAuthEntry     `toml:"git_auth"`
	Plugins     map[string]PluginSettings   `toml:"plugin"`
	Auth        map[string]AuthConfig       `toml:"auth"`
	ClientAuth  map[string]ClientCertConfig `toml:"client_auth"`
	Secret      map[string]SecretConfig     `toml:"secret"`
	ProfileMode string                      `toml:"profile_mode"`
	AppConfig   AppConfig                   `toml:"app_config"`
}

ServerConfig is the configuration for the Clace Server

type SpecFiles

type SpecFiles map[string]string

SpecFiles is a map of file names to file data. JSON encoding uses base 64 encoding of file text

func (*SpecFiles) MarshalJSON

func (t *SpecFiles) MarshalJSON() ([]byte, error)

func (*SpecFiles) UnmarshalJSON

func (t *SpecFiles) UnmarshalJSON(data []byte) error

type StringValue

type StringValue string
const (
	StringValueUndefined StringValue = "<CL_UNDEFINED>"
)

type StyleType added in v0.8.2

type StyleType string

StyleType is the type of style library used by the app

type SystemConfig

type SystemConfig struct {
	TailwindCSSCommand        string `toml:"tailwindcss_command"`
	FileWatcherDebounceMillis int    `toml:"file_watcher_debounce_millis"`
	NodePath                  string `toml:"node_path"`
	ContainerCommand          string `toml:"container_command"`
	DefaultDomain             string `toml:"default_domain"`
	DisableUnknownDomains     bool   `toml:"disable_unknown_domains"`
	RootServeListApps         string `toml:"root_serve_list_apps"`
}

SystemConfig is the system level configuration

type TokenCreateResponse added in v0.7.0

type TokenCreateResponse struct {
	DryRun bool     `json:"dry_run"`
	Token  AppToken `json:"token"`
}

type TokenDeleteResponse added in v0.7.0

type TokenDeleteResponse struct {
	DryRun bool `json:"dry_run"`
}

type TokenListResponse added in v0.7.0

type TokenListResponse struct {
	Tokens []AppToken `json:"tokens"`
}

type Transaction

type Transaction struct {
	*sql.Tx
}

Transaction is a wrapper around sql.Tx

func (*Transaction) IsInitialized

func (t *Transaction) IsInitialized() bool

type UpdateAppMetadataRequest

type UpdateAppMetadataRequest struct {
	Spec          StringValue           `json:"spec"`
	ConfigType    AppMetadataConfigType `json:"config_type"`
	ConfigEntries []string              `json:"config_entries"`
}

UpdateAppMetadataRequest is the request body for updating an app metadata

func CreateUpdateAppMetadataRequest

func CreateUpdateAppMetadataRequest() UpdateAppMetadataRequest

type UpdateAppRequest

type UpdateAppRequest struct {
	AuthnType          StringValue `json:"authn_type"`
	GitAuthName        StringValue `json:"git_auth_name"`
	StageWriteAccess   BoolValue   `json:"stage_write_access"`
	PreviewWriteAccess BoolValue   `json:"preview_write_access"`
	Spec               StringValue `json:"spec"`
}

UpdateAppRequest is the request body for updating an app settings

func CreateUpdateAppRequest

func CreateUpdateAppRequest() UpdateAppRequest

type UserFile added in v0.9.8

type UserFile struct {
	Id           string
	AppId        string
	FilePath     string
	FileName     string
	MimeType     string
	CreateTime   time.Time
	ExpireAt     time.Time
	CreatedBy    string
	SingleAccess bool
	Visibility   string
	Metadata     map[string]any
}

type VersionMetadata

type VersionMetadata struct {
	Version         int    `json:"version"`
	PreviousVersion int    `json:"previous_version"`
	GitBranch       string `json:"git_branch"`
	GitCommit       string `json:"git_commit"`
	GitMessage      string `json:"git_message"`
}

VersionMetadata contains the metadata for an app

type WebhookTokens added in v0.7.0

type WebhookTokens struct {
	Reload        string `json:"reload"`
	ReloadPromote string `json:"reload_promote"`
	Promote       string `json:"promote"`
}

type WebhookType added in v0.7.0

type WebhookType string
const (
	WebhookReload        WebhookType = "reload"
	WebhookReloadPromote WebhookType = "reload_promote"
	WebhookPromote       WebhookType = "promote"
)

Jump to

Keyboard shortcuts

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