added jsvm sleep binding
This commit is contained in:
parent
64cee264f0
commit
c4116e3a7d
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -1,13 +1,18 @@
|
||||||
## v0.20.2-WIP
|
## v0.20.2
|
||||||
|
|
||||||
|
- Added `sleep(milliseconds)` JSVM binding.
|
||||||
|
_It works the same way as Go `time.Sleep()`, aka. it pauses the goroutine where the JSVM code is running._
|
||||||
|
|
||||||
- Fixed multi-line text paste in the Admin UI search bar ([#4022](https://github.com/pocketbase/pocketbase/discussions/4022)).
|
- Fixed multi-line text paste in the Admin UI search bar ([#4022](https://github.com/pocketbase/pocketbase/discussions/4022)).
|
||||||
|
|
||||||
- Fixed the monospace font loading in the Admin UI.
|
- Fixed the monospace font loading in the Admin UI.
|
||||||
|
|
||||||
|
- Fixed various reported docs and code comment typos.
|
||||||
|
|
||||||
|
|
||||||
## v0.20.1
|
## v0.20.1
|
||||||
|
|
||||||
- Added `--dev` flag and its accompanying `app.IsDev()` method (_in place of the previosly removed `--debug`_) to assist during development ([#3918](https://github.com/pocketbase/pocketbase/discussions/3918)).
|
- Added `--dev` flag and its accompanying `app.IsDev()` method (_in place of the previously removed `--debug`_) to assist during development ([#3918](https://github.com/pocketbase/pocketbase/discussions/3918)).
|
||||||
The `--dev` flag prints in the console "everything" and more specifically:
|
The `--dev` flag prints in the console "everything" and more specifically:
|
||||||
- the data DB SQL statements
|
- the data DB SQL statements
|
||||||
- all `app.Logger().*` logs (debug, info, warning, error, etc.), no matter of the logs persistence settings in the Admin UI
|
- all `app.Logger().*` logs (debug, info, warning, error, etc.), no matter of the logs persistence settings in the Admin UI
|
||||||
|
@ -16,7 +21,7 @@
|
||||||
- Fixed the log `error` label text wrapping.
|
- Fixed the log `error` label text wrapping.
|
||||||
- Added the log `referer` (_when it is from a different source_) and `details` labels in the logs listing.
|
- Added the log `referer` (_when it is from a different source_) and `details` labels in the logs listing.
|
||||||
- Removed the blank current time entry from the logs chart because it was causing confusion when used with custom time ranges.
|
- Removed the blank current time entry from the logs chart because it was causing confusion when used with custom time ranges.
|
||||||
- Updated the SQL syntax highligher and keywords autocompletion in the Admin UI to recognize `CAST(x as bool)` expressions.
|
- Updated the SQL syntax highlighter and keywords autocompletion in the Admin UI to recognize `CAST(x as bool)` expressions.
|
||||||
|
|
||||||
- Replaced the default API tests timeout with a new `ApiScenario.Timeout` option ([#3930](https://github.com/pocketbase/pocketbase/issues/3930)).
|
- Replaced the default API tests timeout with a new `ApiScenario.Timeout` option ([#3930](https://github.com/pocketbase/pocketbase/issues/3930)).
|
||||||
A negative or zero value means no tests timeout.
|
A negative or zero value means no tests timeout.
|
||||||
|
@ -172,7 +177,7 @@
|
||||||
|
|
||||||
- Added the release notes to the console output of `./pocketbase update` ([#3685](https://github.com/pocketbase/pocketbase/discussions/3685)).
|
- Added the release notes to the console output of `./pocketbase update` ([#3685](https://github.com/pocketbase/pocketbase/discussions/3685)).
|
||||||
|
|
||||||
- Added missing documention for the JSVM `$mails.*` bindings.
|
- Added missing documentation for the JSVM `$mails.*` bindings.
|
||||||
|
|
||||||
- Relaxed the OAuth2 redirect url validation to allow any string value ([#3689](https://github.com/pocketbase/pocketbase/pull/3689); thanks @sergeypdev).
|
- Relaxed the OAuth2 redirect url validation to allow any string value ([#3689](https://github.com/pocketbase/pocketbase/pull/3689); thanks @sergeypdev).
|
||||||
_Note that the redirect url format is still bound to the accepted values by the specific OAuth2 provider._
|
_Note that the redirect url format is still bound to the accepted values by the specific OAuth2 provider._
|
||||||
|
|
|
@ -299,6 +299,10 @@ func baseBinds(vm *goja.Runtime) {
|
||||||
return string(bodyBytes), nil
|
return string(bodyBytes), nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
vm.Set("sleep", func(milliseconds int64) {
|
||||||
|
time.Sleep(time.Duration(milliseconds) * time.Millisecond)
|
||||||
|
})
|
||||||
|
|
||||||
vm.Set("arrayOf", func(model any) any {
|
vm.Set("arrayOf", func(model any) any {
|
||||||
mt := reflect.TypeOf(model)
|
mt := reflect.TypeOf(model)
|
||||||
st := reflect.SliceOf(mt)
|
st := reflect.SliceOf(mt)
|
||||||
|
|
|
@ -46,7 +46,29 @@ func TestBaseBindsCount(t *testing.T) {
|
||||||
vm := goja.New()
|
vm := goja.New()
|
||||||
baseBinds(vm)
|
baseBinds(vm)
|
||||||
|
|
||||||
testBindsCount(vm, "this", 16, t)
|
testBindsCount(vm, "this", 17, t)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBaseBindsSleep(t *testing.T) {
|
||||||
|
app, _ := tests.NewTestApp()
|
||||||
|
defer app.Cleanup()
|
||||||
|
|
||||||
|
vm := goja.New()
|
||||||
|
baseBinds(vm)
|
||||||
|
vm.Set("reader", strings.NewReader("test"))
|
||||||
|
|
||||||
|
start := time.Now()
|
||||||
|
_, err := vm.RunString(`
|
||||||
|
sleep(100);
|
||||||
|
`)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
lasted := time.Since(start).Milliseconds()
|
||||||
|
if lasted < 100 || lasted > 150 {
|
||||||
|
t.Fatalf("Expected to sleep for ~100ms, got %d", lasted)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBaseBindsReaderToString(t *testing.T) {
|
func TestBaseBindsReaderToString(t *testing.T) {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -211,6 +211,20 @@ declare var $template: template.Registry
|
||||||
*/
|
*/
|
||||||
declare function readerToString(reader: any, maxBytes?: number): string;
|
declare function readerToString(reader: any, maxBytes?: number): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sleep pauses the current goroutine for at least the specified user duration (in ms).
|
||||||
|
* A zero or negative duration returns immediately.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* ` + "```" + `js
|
||||||
|
* slee(250) // sleeps for 250ms
|
||||||
|
* ` + "```" + `
|
||||||
|
*
|
||||||
|
* @group PocketBase
|
||||||
|
*/
|
||||||
|
declare function sleep(milliseconds: number): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* arrayOf creates a placeholder array of the specified models.
|
* arrayOf creates a placeholder array of the specified models.
|
||||||
* Usually used to populate DB result into an array of models.
|
* Usually used to populate DB result into an array of models.
|
||||||
|
|
Loading…
Reference in New Issue