@quenty/settings 11.70.0 → 11.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [11.72.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/settings@11.71.0...@quenty/settings@11.72.0) (2026-09-02)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @quenty/settings
|
|
9
|
+
|
|
10
|
+
# [11.71.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/settings@11.70.0...@quenty/settings@11.71.0) (2026-08-28)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @quenty/settings
|
|
13
|
+
|
|
6
14
|
# [11.70.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/settings@11.69.1...@quenty/settings@11.70.0) (2026-08-28)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @quenty/settings
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/settings",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.72.0",
|
|
4
4
|
"description": "Centralized player settings service",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -28,43 +28,44 @@
|
|
|
28
28
|
"Quenty"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@quenty/attributeutils": "14.
|
|
31
|
+
"@quenty/attributeutils": "14.38.0",
|
|
32
32
|
"@quenty/baseobject": "10.16.0",
|
|
33
|
-
"@quenty/binder": "14.
|
|
34
|
-
"@quenty/brio": "14.
|
|
33
|
+
"@quenty/binder": "14.46.0",
|
|
34
|
+
"@quenty/brio": "14.37.0",
|
|
35
35
|
"@quenty/canceltoken": "11.25.0",
|
|
36
|
-
"@quenty/cmdrservice": "13.
|
|
37
|
-
"@quenty/datastore": "13.
|
|
36
|
+
"@quenty/cmdrservice": "13.61.0",
|
|
37
|
+
"@quenty/datastore": "13.56.0",
|
|
38
38
|
"@quenty/ducktype": "5.11.1",
|
|
39
39
|
"@quenty/enumutils": "3.4.6",
|
|
40
|
-
"@quenty/instanceutils": "13.
|
|
40
|
+
"@quenty/instanceutils": "13.37.0",
|
|
41
|
+
"@quenty/jestutils": "1.1.0",
|
|
41
42
|
"@quenty/jsonutils": "10.24.0",
|
|
42
43
|
"@quenty/loader": "10.11.1",
|
|
43
44
|
"@quenty/maid": "3.12.0",
|
|
44
45
|
"@quenty/nevermore-test-runner": "1.6.0",
|
|
45
|
-
"@quenty/observablecollection": "12.
|
|
46
|
-
"@quenty/playerbinder": "14.
|
|
47
|
-
"@quenty/playermock": "1.
|
|
48
|
-
"@quenty/playerutils": "8.
|
|
46
|
+
"@quenty/observablecollection": "12.51.0",
|
|
47
|
+
"@quenty/playerbinder": "14.49.0",
|
|
48
|
+
"@quenty/playermock": "1.9.0",
|
|
49
|
+
"@quenty/playerutils": "8.44.0",
|
|
49
50
|
"@quenty/promise": "10.24.0",
|
|
50
51
|
"@quenty/remotefunctionutils": "10.24.0",
|
|
51
|
-
"@quenty/remoting": "12.
|
|
52
|
+
"@quenty/remoting": "12.44.0",
|
|
52
53
|
"@quenty/rx": "13.34.0",
|
|
53
|
-
"@quenty/rxbinderutils": "14.
|
|
54
|
+
"@quenty/rxbinderutils": "14.46.0",
|
|
54
55
|
"@quenty/rxsignal": "7.34.0",
|
|
55
56
|
"@quenty/servicebag": "11.21.0",
|
|
56
57
|
"@quenty/signal": "7.13.2",
|
|
57
|
-
"@quenty/statestack": "14.
|
|
58
|
+
"@quenty/statestack": "14.39.0",
|
|
58
59
|
"@quenty/string": "3.5.0",
|
|
59
60
|
"@quenty/symbol": "3.5.2",
|
|
60
61
|
"@quenty/table": "3.9.2",
|
|
61
62
|
"@quenty/throttle": "10.15.0",
|
|
62
|
-
"@quenty/tie": "10.
|
|
63
|
-
"@quenty/valueobject": "13.
|
|
63
|
+
"@quenty/tie": "10.50.0",
|
|
64
|
+
"@quenty/valueobject": "13.38.0",
|
|
64
65
|
"@quentystudios/jest-lua": "3.10.0-quenty.2"
|
|
65
66
|
},
|
|
66
67
|
"publishConfig": {
|
|
67
68
|
"access": "public"
|
|
68
69
|
},
|
|
69
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "278f4ca25486a8ba0601704b27a11da8c77499c9"
|
|
70
71
|
}
|
|
@@ -16,6 +16,7 @@ local require = require(script.Parent.loader).load(script)
|
|
|
16
16
|
local Workspace = game:GetService("Workspace")
|
|
17
17
|
|
|
18
18
|
local Jest = require("Jest")
|
|
19
|
+
local JestUtils = require("JestUtils")
|
|
19
20
|
local Maid = require("Maid")
|
|
20
21
|
local PlayerMock = require("PlayerMock")
|
|
21
22
|
local PlayerSettingsInterface = require("PlayerSettingsInterface")
|
|
@@ -72,17 +73,21 @@ local function setup()
|
|
|
72
73
|
end
|
|
73
74
|
implement()
|
|
74
75
|
|
|
75
|
-
|
|
76
|
+
local controller = {
|
|
76
77
|
serviceBag = serviceBag,
|
|
77
78
|
player = player,
|
|
78
79
|
definition = SettingDefinition.new(SETTING_NAME, DEFAULT_VALUE),
|
|
79
80
|
-- Swaps in an equivalent implementation -- the container churn that mints the new interface
|
|
80
81
|
-- identity downstream sees.
|
|
81
82
|
reimplement = implement,
|
|
82
|
-
|
|
83
|
+
Destroy = function(_self)
|
|
83
84
|
maid:DoCleaning()
|
|
84
85
|
end,
|
|
85
86
|
}
|
|
87
|
+
|
|
88
|
+
maid:GiveTask(JestUtils.afterThis(controller))
|
|
89
|
+
|
|
90
|
+
return controller
|
|
86
91
|
end
|
|
87
92
|
|
|
88
93
|
describe("SettingDefinition.GetSettingProperty", function()
|
|
@@ -94,7 +99,7 @@ describe("SettingDefinition.GetSettingProperty", function()
|
|
|
94
99
|
|
|
95
100
|
expect(second).toBe(first)
|
|
96
101
|
|
|
97
|
-
controller:
|
|
102
|
+
controller:Destroy()
|
|
98
103
|
end)
|
|
99
104
|
|
|
100
105
|
it("keeps a separate property per player", function()
|
|
@@ -108,7 +113,7 @@ describe("SettingDefinition.GetSettingProperty", function()
|
|
|
108
113
|
expect(otherProperty).never.toBe(property)
|
|
109
114
|
|
|
110
115
|
otherPlayer:Destroy()
|
|
111
|
-
controller:
|
|
116
|
+
controller:Destroy()
|
|
112
117
|
end)
|
|
113
118
|
end)
|
|
114
119
|
|
|
@@ -119,7 +124,7 @@ describe("SettingProperty.Observe", function()
|
|
|
119
124
|
|
|
120
125
|
expect(property:Observe()).toBe(property:Observe())
|
|
121
126
|
|
|
122
|
-
controller:
|
|
127
|
+
controller:Destroy()
|
|
123
128
|
end)
|
|
124
129
|
|
|
125
130
|
it("does not re-emit when the tie churns but the value does not", function()
|
|
@@ -140,6 +145,6 @@ describe("SettingProperty.Observe", function()
|
|
|
140
145
|
expect(emissions).toBe(1)
|
|
141
146
|
|
|
142
147
|
maid:DoCleaning()
|
|
143
|
-
controller:
|
|
148
|
+
controller:Destroy()
|
|
144
149
|
end)
|
|
145
150
|
end)
|
|
@@ -16,6 +16,7 @@ local require = require(script.Parent.loader).load(script)
|
|
|
16
16
|
local Workspace = game:GetService("Workspace")
|
|
17
17
|
|
|
18
18
|
local Jest = require("Jest")
|
|
19
|
+
local JestUtils = require("JestUtils")
|
|
19
20
|
local Maid = require("Maid")
|
|
20
21
|
local PlayerMock = require("PlayerMock")
|
|
21
22
|
local PlayerSettingsInterface = require("PlayerSettingsInterface")
|
|
@@ -60,17 +61,21 @@ local function setup()
|
|
|
60
61
|
EnsureInitialized = function() end,
|
|
61
62
|
}, TieRealmUtils.inferTieRealm()))
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
local controller = {
|
|
64
65
|
settingsDataService = settingsDataService,
|
|
65
66
|
player = player,
|
|
66
67
|
getPlayerCalls = function()
|
|
67
68
|
return getPlayerCalls
|
|
68
69
|
end,
|
|
69
70
|
maid = maid,
|
|
70
|
-
|
|
71
|
+
Destroy = function(_self)
|
|
71
72
|
maid:DoCleaning()
|
|
72
73
|
end,
|
|
73
74
|
}
|
|
75
|
+
|
|
76
|
+
maid:GiveTask(JestUtils.afterThis(controller))
|
|
77
|
+
|
|
78
|
+
return controller
|
|
74
79
|
end
|
|
75
80
|
|
|
76
81
|
describe("SettingsDataService hydration", function()
|
|
@@ -83,7 +88,7 @@ describe("SettingsDataService hydration", function()
|
|
|
83
88
|
expect(first).never.toBeNil()
|
|
84
89
|
expect(second).toBe(first)
|
|
85
90
|
|
|
86
|
-
controller:
|
|
91
|
+
controller:Destroy()
|
|
87
92
|
end)
|
|
88
93
|
|
|
89
94
|
it("hydrates without invoking the implementation's GetPlayer", function()
|
|
@@ -93,7 +98,7 @@ describe("SettingsDataService hydration", function()
|
|
|
93
98
|
|
|
94
99
|
expect(controller.getPlayerCalls()).toBe(0)
|
|
95
100
|
|
|
96
|
-
controller:
|
|
101
|
+
controller:Destroy()
|
|
97
102
|
end)
|
|
98
103
|
|
|
99
104
|
it("does not re-hydrate when an observer reads settings during a re-hydration", function()
|
|
@@ -123,7 +128,7 @@ describe("SettingsDataService hydration", function()
|
|
|
123
128
|
-- read rebuilds from inside that emission.
|
|
124
129
|
expect(sequence).toBe("impl,nil,impl,")
|
|
125
130
|
|
|
126
|
-
controller:
|
|
131
|
+
controller:Destroy()
|
|
127
132
|
end)
|
|
128
133
|
|
|
129
134
|
it("does not hydrate a player who has left", function()
|
|
@@ -150,7 +155,7 @@ describe("SettingsDataService hydration", function()
|
|
|
150
155
|
expect(settingsDataService:GetPlayerSettings(player)).toBeNil()
|
|
151
156
|
expect(sequence).toBe("impl,nil,")
|
|
152
157
|
|
|
153
|
-
controller:
|
|
158
|
+
controller:Destroy()
|
|
154
159
|
end)
|
|
155
160
|
|
|
156
161
|
it("stops holding a player once they are out of the DataModel", function()
|
|
@@ -176,6 +181,6 @@ describe("SettingsDataService hydration", function()
|
|
|
176
181
|
expect(settingsDataService:GetPlayerSettings(player)).toBeNil()
|
|
177
182
|
expect(internal._hydratedPlayersMaid[player]).toBeNil()
|
|
178
183
|
|
|
179
|
-
controller:
|
|
184
|
+
controller:Destroy()
|
|
180
185
|
end)
|
|
181
186
|
end)
|