common

package
v0.0.0-...-deba56b Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2023 License: AGPL-3.0 Imports: 20 Imported by: 0

Documentation

Overview

Package common contains helpers for interacting with the JavaScript runtime.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyCustomUserMetadata

func ApplyCustomUserMetadata(tagsAndMeta *metrics.TagsAndMeta, key string, val goja.Value) error

ApplyCustomUserMetadata modifies the given metrics.TagsAndMeta object with the given custom metadata and their value.

func ApplyCustomUserTag

func ApplyCustomUserTag(tagsAndMeta *metrics.TagsAndMeta, key string, val goja.Value) error

ApplyCustomUserTag modifies the given metrics.TagsAndMeta object with the given custom tag and theirs value.

func ApplyCustomUserTags

func ApplyCustomUserTags(rt *goja.Runtime, tagsAndMeta *metrics.TagsAndMeta, keyValues goja.Value) error

ApplyCustomUserTags modifies the given metrics.TagsAndMeta object with the user specified custom tags and metadata. It expects to receive the `keyValues` object in the `{key1: value1, key2: value2, ...}` format.

func FieldName

func FieldName(t reflect.Type, f reflect.StructField) string

FieldName Returns the JS name for an exported struct field. The name is snake_cased, with respect for certain common initialisms (URL, ID, HTTP, etc).

func FreezeObject

func FreezeObject(rt *goja.Runtime, obj goja.Value) error

FreezeObject replicates the JavaScript Object.freeze function.

func GetReader

func GetReader(data interface{}) (io.Reader, error)

GetReader tries to return an io.Reader value from an exported goja value.

func IsAsyncFunction

func IsAsyncFunction(rt *goja.Runtime, val goja.Value) bool

IsAsyncFunction checks if the provided value is an AsyncFunction

func IsNullish

func IsNullish(v goja.Value) bool

IsNullish checks if the given value is nullish, i.e. nil, undefined or null.

func MethodName

func MethodName(t reflect.Type, m reflect.Method) string

MethodName Returns the JS name for an exported method. The first letter of the method's name is lowercased, otherwise it is unaltered.

func NewRandSource

func NewRandSource() goja.RandSource

NewRandSource is copied from goja's source code: https://github.com/dop251/goja/blob/master/goja/main.go#L44 The returned RandSource is NOT safe for concurrent use: https://golang.org/pkg/math/rand/#NewSource

func RunWithPanicCatching

func RunWithPanicCatching(logger logrus.FieldLogger, rt *goja.Runtime, fn func() error) (err error)

RunWithPanicCatching catches panic and converts into an InterruptError error that should abort a script

func Throw

func Throw(rt *goja.Runtime, err error)

Throw a JS error; avoids re-wrapping GoErrors.

func ToBytes

func ToBytes(data interface{}) ([]byte, error)

ToBytes tries to return a byte slice from compatible types.

func ToString

func ToString(data interface{}) (string, error)

ToString tries to return a string from compatible types.

func UnwrapGojaInterruptedError

func UnwrapGojaInterruptedError(err error) error

UnwrapGojaInterruptedError returns the internal error handled by goja.

Types

type Events

type Events struct {
	Global, Local event.Subscriber
}

Events are the event subscriber interfaces for the global event system, and the local (per-VU) event system.

type FieldNameMapper

type FieldNameMapper struct{}

FieldNameMapper for goja.Runtime.SetFieldNameMapper()

func (FieldNameMapper) FieldName

FieldName is part of the goja.FieldNameMapper interface https://godoc.org/github.com/dop251/goja#FieldNameMapper

func (FieldNameMapper) MethodName

func (FieldNameMapper) MethodName(t reflect.Type, m reflect.Method) string

MethodName is part of the goja.FieldNameMapper interface https://godoc.org/github.com/dop251/goja#FieldNameMapper

type InitContextError

type InitContextError string

InitContextError is an error that happened during the a test init context

func NewInitContextError

func NewInitContextError(msg string) InitContextError

NewInitContextError returns a new InitContextError with the provided message

func (InitContextError) Error

func (i InitContextError) Error() string

func (InitContextError) String

func (i InitContextError) String() string

type InitEnvironment

type InitEnvironment struct {
	*lib.TestPreInitState
	FileSystems map[string]fsext.Fs
	CWD         *url.URL
}

InitEnvironment contains properties that can be accessed by Go code executed in the k6 init context. It can be accessed by calling common.GetInitEnv().

func (*InitEnvironment) GetAbsFilePath

func (ie *InitEnvironment) GetAbsFilePath(filename string) string

GetAbsFilePath should be used to access the FileSystems, since afero has a bug when opening files with relative paths - it caches them from the FS root, not the current working directory... So, if necessary, this method will transform any relative paths into absolute ones, using the CWD.

TODO: refactor? It was copied from https://github.com/k6io/k6/blob/c51095ad7304bdd1e82cdb33c91abc331533b886/js/initcontext.go#L211-L222

Jump to

Keyboard shortcuts

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