Loading CHANGELOG.md +2 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Allow migrate subcommand to use database names that contain dashes. - Add senderID param to channelIdBuild function. - Improve leaderboard rank cache population at startup. ### Changed - JavaScript global variables are made immutable after the `InitModule` function is invoked. - JavaScript global variables are made immutable by default after the `InitModule` function is invoked. - Return system user uuid string in `StorageWrite` acks for all runtimes. ### Fixed - Fix the registered function name for 'nk.channelIdBuild' in the JavaScript runtime. Loading server/core_storage.go +1 −3 Original line number Diff line number Diff line Loading @@ -608,9 +608,7 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, tx *sql.Tx, aut Collection: object.Collection, Key: object.Key, Version: newVersion, } if ownerID != uuid.Nil.String() { ack.UserId = ownerID UserId: ownerID, } return ack, nil Loading server/runtime_javascript_logger_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ func TestJsLoggerWithFields(t *testing.T) { var s = 'info'; var l1 = logger.withField('logger', 'l1'); var l2 = logger.withFields({'logger': 'l2', n: 1}); var l2 = logger.withFields({logger: 'l2', n: 1}); l1.info('logger one') l2.info('logger two') ` Loading server/runtime_javascript_nakama.go +1 −5 Original line number Diff line number Diff line Loading @@ -4179,11 +4179,7 @@ func (n *runtimeJavascriptNakamaModule) storageWrite(r *goja.Runtime) func(goja. result := make(map[string]interface{}, 4) result["key"] = ack.Key result["collection"] = ack.Collection if ack.UserId != "" { result["userId"] = ack.UserId } else { result["userId"] = nil } result["version"] = ack.Version results = append(results, result) Loading server/runtime_javascript_test.go +20 −4 Original line number Diff line number Diff line Loading @@ -16,15 +16,21 @@ package server import ( "github.com/dop251/goja" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" "strings" "testing" ) func TestJsObjectFreeze(t *testing.T) { t.Run("after freeze new global vars cannot be created", func(t *testing.T) { r := goja.New() observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true freezeGlobalObject(r) r := goja.New() freezeGlobalObject(config, r) p, _ := goja.Compile("test", ` var k = 'new string'; Loading @@ -40,6 +46,11 @@ var k = 'new string'; }) t.Run("after freeze global vars become immutable", func(t *testing.T) { observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true r := goja.New() p, _ := goja.Compile("test", ` Loading @@ -51,7 +62,7 @@ var m = {foo: 'bar'}; t.Errorf("failed to run script: %s", err.Error()) } freezeGlobalObject(r) freezeGlobalObject(config, r) p, _ = goja.Compile("test", ` m.foo = 'baz'; Loading @@ -67,6 +78,11 @@ m.foo = 'baz'; }) t.Run("after freeze newly instanced objects are mutable", func(t *testing.T) { observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true r := goja.New() p, _ := goja.Compile("test", ` Loading @@ -78,7 +94,7 @@ var m = new Map(); t.Error("Failed to run JS script") } freezeGlobalObject(r) freezeGlobalObject(config, r) p, _ = goja.Compile("test", ` m.set('a', 1); Loading Loading
CHANGELOG.md +2 −2 Original line number Diff line number Diff line Loading @@ -16,9 +16,9 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Allow migrate subcommand to use database names that contain dashes. - Add senderID param to channelIdBuild function. - Improve leaderboard rank cache population at startup. ### Changed - JavaScript global variables are made immutable after the `InitModule` function is invoked. - JavaScript global variables are made immutable by default after the `InitModule` function is invoked. - Return system user uuid string in `StorageWrite` acks for all runtimes. ### Fixed - Fix the registered function name for 'nk.channelIdBuild' in the JavaScript runtime. Loading
server/core_storage.go +1 −3 Original line number Diff line number Diff line Loading @@ -608,9 +608,7 @@ func storageWriteObject(ctx context.Context, logger *zap.Logger, tx *sql.Tx, aut Collection: object.Collection, Key: object.Key, Version: newVersion, } if ownerID != uuid.Nil.String() { ack.UserId = ownerID UserId: ownerID, } return ack, nil Loading
server/runtime_javascript_logger_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,7 @@ func TestJsLoggerWithFields(t *testing.T) { var s = 'info'; var l1 = logger.withField('logger', 'l1'); var l2 = logger.withFields({'logger': 'l2', n: 1}); var l2 = logger.withFields({logger: 'l2', n: 1}); l1.info('logger one') l2.info('logger two') ` Loading
server/runtime_javascript_nakama.go +1 −5 Original line number Diff line number Diff line Loading @@ -4179,11 +4179,7 @@ func (n *runtimeJavascriptNakamaModule) storageWrite(r *goja.Runtime) func(goja. result := make(map[string]interface{}, 4) result["key"] = ack.Key result["collection"] = ack.Collection if ack.UserId != "" { result["userId"] = ack.UserId } else { result["userId"] = nil } result["version"] = ack.Version results = append(results, result) Loading
server/runtime_javascript_test.go +20 −4 Original line number Diff line number Diff line Loading @@ -16,15 +16,21 @@ package server import ( "github.com/dop251/goja" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" "strings" "testing" ) func TestJsObjectFreeze(t *testing.T) { t.Run("after freeze new global vars cannot be created", func(t *testing.T) { r := goja.New() observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true freezeGlobalObject(r) r := goja.New() freezeGlobalObject(config, r) p, _ := goja.Compile("test", ` var k = 'new string'; Loading @@ -40,6 +46,11 @@ var k = 'new string'; }) t.Run("after freeze global vars become immutable", func(t *testing.T) { observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true r := goja.New() p, _ := goja.Compile("test", ` Loading @@ -51,7 +62,7 @@ var m = {foo: 'bar'}; t.Errorf("failed to run script: %s", err.Error()) } freezeGlobalObject(r) freezeGlobalObject(config, r) p, _ = goja.Compile("test", ` m.foo = 'baz'; Loading @@ -67,6 +78,11 @@ m.foo = 'baz'; }) t.Run("after freeze newly instanced objects are mutable", func(t *testing.T) { observer, _ := observer.New(zap.InfoLevel) logger := zap.New(observer) config := NewConfig(logger) config.Runtime.JsReadOnlyGlobals = true r := goja.New() p, _ := goja.Compile("test", ` Loading @@ -78,7 +94,7 @@ var m = new Map(); t.Error("Failed to run JS script") } freezeGlobalObject(r) freezeGlobalObject(config, r) p, _ = goja.Compile("test", ` m.set('a', 1); Loading