@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.70.0",
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.37.0",
31
+ "@quenty/attributeutils": "14.38.0",
32
32
  "@quenty/baseobject": "10.16.0",
33
- "@quenty/binder": "14.44.0",
34
- "@quenty/brio": "14.36.0",
33
+ "@quenty/binder": "14.46.0",
34
+ "@quenty/brio": "14.37.0",
35
35
  "@quenty/canceltoken": "11.25.0",
36
- "@quenty/cmdrservice": "13.59.0",
37
- "@quenty/datastore": "13.54.0",
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.36.0",
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.49.0",
46
- "@quenty/playerbinder": "14.47.0",
47
- "@quenty/playermock": "1.7.0",
48
- "@quenty/playerutils": "8.42.0",
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.42.0",
52
+ "@quenty/remoting": "12.44.0",
52
53
  "@quenty/rx": "13.34.0",
53
- "@quenty/rxbinderutils": "14.44.0",
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.38.0",
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.48.0",
63
- "@quenty/valueobject": "13.37.0",
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": "f75f93d5b2ac51cf7da3b7599788dcce31fd8a29"
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
- return {
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
- destroy = function(_self)
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:destroy()
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:destroy()
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:destroy()
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:destroy()
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
- return {
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
- destroy = function(_self)
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:destroy()
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:destroy()
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:destroy()
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:destroy()
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:destroy()
184
+ controller:Destroy()
180
185
  end)
181
186
  end)