Loading server/runtime_javascript_nakama.go +36 −7 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ func (n *runtimeJavascriptNakamaModule) mappings(r *goja.Runtime) map[string]fun return map[string]func(goja.FunctionCall) goja.Value{ "event": n.event(r), "uuidv4": n.uuidV4(r), "cronNext": n.cronNext(r), "sqlExec": n.sqlExec(r), "sqlQuery": n.sqlQuery(r), "httpRequest": n.httpRequest(r), Loading @@ -127,7 +128,7 @@ func (n *runtimeJavascriptNakamaModule) mappings(r *goja.Runtime) map[string]fun "authenticateEmail": n.authenticateEmail(r), "authenticateFacebook": n.authenticateFacebook(r), "authenticateFacebookInstantGame": n.authenticateFacebookInstantGame(r), "authenticateGamecenter": n.authenticateGameCenter(r), "authenticateGameCenter": n.authenticateGameCenter(r), "authenticateGoogle": n.authenticateGoogle(r), "authenticateSteam": n.authenticateSteam(r), "authenticateTokenGenerate": n.authenticateTokenGenerate(r), Loading Loading @@ -247,6 +248,24 @@ func (n *runtimeJavascriptNakamaModule) uuidV4(r *goja.Runtime) func(goja.Functi } } func (n *runtimeJavascriptNakamaModule) cronNext(r *goja.Runtime) func(goja.FunctionCall) goja.Value { return func(f goja.FunctionCall) goja.Value { cron := getJsString(r, f.Argument(0)) ts := getJsInt(r, f.Argument(1)) expr, err := cronexpr.Parse(cron) if err != nil { panic(r.NewTypeError("expects a valid cron string")) } t := time.Unix(ts, 0).UTC() next := expr.Next(t) nextTs := next.UTC().Unix() return r.ToValue(nextTs) } } func (n *runtimeJavascriptNakamaModule) sqlExec(r *goja.Runtime) func(goja.FunctionCall) goja.Value { return func(f goja.FunctionCall) goja.Value { query := getJsString(r, f.Argument(0)) Loading Loading @@ -349,10 +368,19 @@ func (n *runtimeJavascriptNakamaModule) httpRequest(r *goja.Runtime) func(goja.F return func(f goja.FunctionCall) goja.Value { url := getJsString(r, f.Argument(0)) method := strings.ToUpper(getJsString(r, f.Argument(1))) headers := getJsStringMap(r, f.Argument(2)) body := getJsString(r, f.Argument(3)) headers := make(map[string]string) if !goja.IsUndefined(f.Argument(2)) && !goja.IsNull(f.Argument(2)) { headers = getJsStringMap(r, f.Argument(2)) } var body string if !goja.IsUndefined(f.Argument(3)) && !goja.IsNull(f.Argument(3)) { body = getJsString(r, f.Argument(3)) } timeoutArg := f.Argument(4) if timeoutArg != goja.Undefined() { if timeoutArg != goja.Undefined() && timeoutArg != goja.Null() { n.httpClient.Timeout = time.Duration(timeoutArg.ToInteger()) * time.Millisecond } Loading Loading @@ -1372,7 +1400,10 @@ func (n *runtimeJavascriptNakamaModule) accountDeleteId(r *goja.Runtime) func(go panic(r.NewTypeError("invalid user id")) } recorded := getJsBool(r, f.Argument(1)) recorded := false if !goja.IsUndefined(f.Argument(1)) && !goja.IsNull(f.Argument(1)) { recorded = getJsBool(r, f.Argument(1)) } if err := DeleteAccount(context.Background(), n.logger, n.db, userID, recorded); err != nil { panic(r.NewGoError(fmt.Errorf("error while trying to delete account: %v", err.Error()))) Loading Loading @@ -4070,8 +4101,6 @@ func (n *runtimeJavascriptNakamaModule) tournamentCreate(r *goja.Runtime) func(g var duration int if f.Argument(3) != goja.Undefined() && f.Argument(3) != goja.Null() { duration = int(getJsInt(r, f.Argument(3))) } else { panic(r.NewTypeError("expects a duration")) } if duration <= 0 { panic(r.NewTypeError("duration must be > 0")) Loading server/runtime_lua_nakama.go +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ func (n *RuntimeLuaNakamaModule) Loader(l *lua.LState) int { "authenticate_email": n.authenticateEmail, "authenticate_facebook": n.authenticateFacebook, "authenticate_facebook_instant_game": n.authenticateFacebookInstantGame, "authenticate_gamecenter": n.authenticateGameCenter, "authenticate_game_center": n.authenticateGameCenter, "authenticate_google": n.authenticateGoogle, "authenticate_steam": n.authenticateSteam, "authenticate_token_generate": n.authenticateTokenGenerate, Loading Loading
server/runtime_javascript_nakama.go +36 −7 Original line number Diff line number Diff line Loading @@ -105,6 +105,7 @@ func (n *runtimeJavascriptNakamaModule) mappings(r *goja.Runtime) map[string]fun return map[string]func(goja.FunctionCall) goja.Value{ "event": n.event(r), "uuidv4": n.uuidV4(r), "cronNext": n.cronNext(r), "sqlExec": n.sqlExec(r), "sqlQuery": n.sqlQuery(r), "httpRequest": n.httpRequest(r), Loading @@ -127,7 +128,7 @@ func (n *runtimeJavascriptNakamaModule) mappings(r *goja.Runtime) map[string]fun "authenticateEmail": n.authenticateEmail(r), "authenticateFacebook": n.authenticateFacebook(r), "authenticateFacebookInstantGame": n.authenticateFacebookInstantGame(r), "authenticateGamecenter": n.authenticateGameCenter(r), "authenticateGameCenter": n.authenticateGameCenter(r), "authenticateGoogle": n.authenticateGoogle(r), "authenticateSteam": n.authenticateSteam(r), "authenticateTokenGenerate": n.authenticateTokenGenerate(r), Loading Loading @@ -247,6 +248,24 @@ func (n *runtimeJavascriptNakamaModule) uuidV4(r *goja.Runtime) func(goja.Functi } } func (n *runtimeJavascriptNakamaModule) cronNext(r *goja.Runtime) func(goja.FunctionCall) goja.Value { return func(f goja.FunctionCall) goja.Value { cron := getJsString(r, f.Argument(0)) ts := getJsInt(r, f.Argument(1)) expr, err := cronexpr.Parse(cron) if err != nil { panic(r.NewTypeError("expects a valid cron string")) } t := time.Unix(ts, 0).UTC() next := expr.Next(t) nextTs := next.UTC().Unix() return r.ToValue(nextTs) } } func (n *runtimeJavascriptNakamaModule) sqlExec(r *goja.Runtime) func(goja.FunctionCall) goja.Value { return func(f goja.FunctionCall) goja.Value { query := getJsString(r, f.Argument(0)) Loading Loading @@ -349,10 +368,19 @@ func (n *runtimeJavascriptNakamaModule) httpRequest(r *goja.Runtime) func(goja.F return func(f goja.FunctionCall) goja.Value { url := getJsString(r, f.Argument(0)) method := strings.ToUpper(getJsString(r, f.Argument(1))) headers := getJsStringMap(r, f.Argument(2)) body := getJsString(r, f.Argument(3)) headers := make(map[string]string) if !goja.IsUndefined(f.Argument(2)) && !goja.IsNull(f.Argument(2)) { headers = getJsStringMap(r, f.Argument(2)) } var body string if !goja.IsUndefined(f.Argument(3)) && !goja.IsNull(f.Argument(3)) { body = getJsString(r, f.Argument(3)) } timeoutArg := f.Argument(4) if timeoutArg != goja.Undefined() { if timeoutArg != goja.Undefined() && timeoutArg != goja.Null() { n.httpClient.Timeout = time.Duration(timeoutArg.ToInteger()) * time.Millisecond } Loading Loading @@ -1372,7 +1400,10 @@ func (n *runtimeJavascriptNakamaModule) accountDeleteId(r *goja.Runtime) func(go panic(r.NewTypeError("invalid user id")) } recorded := getJsBool(r, f.Argument(1)) recorded := false if !goja.IsUndefined(f.Argument(1)) && !goja.IsNull(f.Argument(1)) { recorded = getJsBool(r, f.Argument(1)) } if err := DeleteAccount(context.Background(), n.logger, n.db, userID, recorded); err != nil { panic(r.NewGoError(fmt.Errorf("error while trying to delete account: %v", err.Error()))) Loading Loading @@ -4070,8 +4101,6 @@ func (n *runtimeJavascriptNakamaModule) tournamentCreate(r *goja.Runtime) func(g var duration int if f.Argument(3) != goja.Undefined() && f.Argument(3) != goja.Null() { duration = int(getJsInt(r, f.Argument(3))) } else { panic(r.NewTypeError("expects a duration")) } if duration <= 0 { panic(r.NewTypeError("duration must be > 0")) Loading
server/runtime_lua_nakama.go +1 −1 Original line number Diff line number Diff line Loading @@ -160,7 +160,7 @@ func (n *RuntimeLuaNakamaModule) Loader(l *lua.LState) int { "authenticate_email": n.authenticateEmail, "authenticate_facebook": n.authenticateFacebook, "authenticate_facebook_instant_game": n.authenticateFacebookInstantGame, "authenticate_gamecenter": n.authenticateGameCenter, "authenticate_game_center": n.authenticateGameCenter, "authenticate_google": n.authenticateGoogle, "authenticate_steam": n.authenticateSteam, "authenticate_token_generate": n.authenticateTokenGenerate, Loading