@quenty/gameconfig 12.55.0 → 12.57.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,16 @@
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
+ # [12.57.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/gameconfig@12.56.0...@quenty/gameconfig@12.57.0) (2026-07-23)
7
+
8
+ ### Features
9
+
10
+ - Add baseline player-mock and support across Nevermore for mocked players. ([567d121](https://github.com/Quenty/NevermoreEngine/commit/567d121ffc014b42391554088189a1a6296dda83))
11
+
12
+ # [12.56.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/gameconfig@12.55.0...@quenty/gameconfig@12.56.0) (2026-07-22)
13
+
14
+ **Note:** Version bump only for package @quenty/gameconfig
15
+
6
16
  # [12.55.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/gameconfig@12.54.0...@quenty/gameconfig@12.55.0) (2026-07-21)
7
17
 
8
18
  **Note:** Version bump only for package @quenty/gameconfig
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/gameconfig",
3
- "version": "12.55.0",
3
+ "version": "12.57.0",
4
4
  "description": "Configuration service to specify Roblox badges, products, and other specific assets.",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -30,36 +30,36 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@quenty/attributeutils": "14.32.0",
34
- "@quenty/badgeutils": "10.20.0",
35
- "@quenty/baseobject": "10.14.0",
36
- "@quenty/binder": "14.39.0",
37
- "@quenty/brio": "14.32.0",
38
- "@quenty/canceltoken": "11.21.0",
39
- "@quenty/clienttranslator": "14.41.0",
40
- "@quenty/cmdrservice": "13.49.0",
33
+ "@quenty/attributeutils": "14.33.0",
34
+ "@quenty/badgeutils": "10.21.0",
35
+ "@quenty/baseobject": "10.15.0",
36
+ "@quenty/binder": "14.41.0",
37
+ "@quenty/brio": "14.33.0",
38
+ "@quenty/canceltoken": "11.22.0",
39
+ "@quenty/clienttranslator": "14.42.0",
40
+ "@quenty/cmdrservice": "13.51.0",
41
41
  "@quenty/enums": "1.3.0",
42
- "@quenty/instanceutils": "13.32.0",
42
+ "@quenty/instanceutils": "13.33.0",
43
43
  "@quenty/loader": "10.11.0",
44
- "@quenty/maid": "3.10.0",
45
- "@quenty/marketplaceutils": "11.24.0",
46
- "@quenty/nevermore-test-runner": "1.4.0",
47
- "@quenty/nevermoreclimanifest": "1.5.0",
48
- "@quenty/observablecollection": "12.41.0",
49
- "@quenty/playerutils": "8.35.0",
44
+ "@quenty/maid": "3.11.0",
45
+ "@quenty/marketplaceutils": "11.25.0",
46
+ "@quenty/nevermore-test-runner": "1.5.0",
47
+ "@quenty/nevermoreclimanifest": "1.6.0",
48
+ "@quenty/observablecollection": "12.42.0",
49
+ "@quenty/playerutils": "8.36.0",
50
50
  "@quenty/preferredparentutils": "4.4.2",
51
- "@quenty/promise": "10.20.0",
51
+ "@quenty/promise": "10.21.0",
52
52
  "@quenty/pseudolocalize": "3.5.2",
53
- "@quenty/remotefunctionutils": "10.20.0",
54
- "@quenty/remoting": "12.34.0",
55
- "@quenty/rx": "13.30.0",
56
- "@quenty/rxbinderutils": "14.39.0",
57
- "@quenty/servicebag": "11.19.0",
58
- "@quenty/statestack": "14.34.0",
59
- "@quenty/string": "3.3.7",
53
+ "@quenty/remotefunctionutils": "10.21.0",
54
+ "@quenty/remoting": "12.36.0",
55
+ "@quenty/rx": "13.31.0",
56
+ "@quenty/rxbinderutils": "14.41.0",
57
+ "@quenty/servicebag": "11.20.0",
58
+ "@quenty/statestack": "14.35.0",
59
+ "@quenty/string": "3.4.0",
60
60
  "@quenty/table": "3.9.2",
61
- "@quenty/valueobject": "13.33.0",
61
+ "@quenty/valueobject": "13.34.0",
62
62
  "@quentystudios/jest-lua": "3.10.0-quenty.2"
63
63
  },
64
- "gitHead": "8bd905a5c7e7f1fd4e178b54beeadef94a615d1d"
64
+ "gitHead": "1de37218a2bedb8e3f8614a2e09bba9eddc812da"
65
65
  }
@@ -28,10 +28,9 @@ local PLACE: GameConfigAssetTypes.GameConfigAssetType = GameConfigAssetTypes.PLA
28
28
 
29
29
  local function newProvider()
30
30
  local serviceBag = ServiceBag.new()
31
- local gameConfigService = (serviceBag:GetService(GameConfigService) :: any) :: GameConfigService.GameConfigService
32
- local provider = (
31
+ local gameConfigService: GameConfigService.GameConfigService = serviceBag:GetService(GameConfigService) :: any
32
+ local provider: NevermoreManifestConfigProvider.NevermoreManifestConfigProvider =
33
33
  serviceBag:GetService(NevermoreManifestConfigProvider) :: any
34
- ) :: NevermoreManifestConfigProvider.NevermoreManifestConfigProvider
35
34
  serviceBag:Init()
36
35
  serviceBag:Start()
37
36
  return serviceBag, gameConfigService, provider, gameConfigService:GetConfigPicker()
@@ -1,16 +1,5 @@
1
1
  --!strict
2
2
  --[[
3
- Coverage for GameConfigPicker priority selection: when several active assets
4
- share a type and key (e.g. a hand-authored place and one registered from the
5
- deploy manifest), the highest-priority one wins, and equal priorities keep
6
- the first iterated -- so a lone hand-authored asset resolves exactly as it did
7
- before priority existed.
8
-
9
- Each test uses a distinct asset key. Configs are bound through global
10
- CollectionService tags under a shared parent, so assets registered by one
11
- ServiceBag remain visible to the next within a run; distinct keys keep lookups
12
- isolated regardless.
13
-
14
3
  @class GameConfigPicker.spec.lua
15
4
  ]]
16
5
  local require = require(script.Parent.loader).load(script)
@@ -31,7 +20,7 @@ local PLACE: GameConfigAssetTypes.GameConfigAssetType = GameConfigAssetTypes.PLA
31
20
 
32
21
  local function newPicker()
33
22
  local serviceBag = ServiceBag.new()
34
- local gameConfigService = (serviceBag:GetService(GameConfigService) :: any) :: GameConfigService.GameConfigService
23
+ local gameConfigService: GameConfigService.GameConfigService = serviceBag:GetService(GameConfigService) :: any
35
24
  serviceBag:Init()
36
25
  serviceBag:Start()
37
26
  return serviceBag, gameConfigService, gameConfigService:GetConfigPicker()
@@ -64,8 +53,8 @@ describe("GameConfigPicker.FindFirstActiveAssetOfKey priority", function()
64
53
  it("prefers the higher-priority asset added after a default one", function()
65
54
  local serviceBag, gameConfigService, picker = newPicker()
66
55
 
67
- gameConfigService:AddPlace("specClashAfter", 111) -- hand-authored (priority 0)
68
- gameConfigService:AddPlace("specClashAfter", 222, 100) -- manifest (priority 100)
56
+ gameConfigService:AddPlace("specClashAfter", 111)
57
+ gameConfigService:AddPlace("specClashAfter", 222, 100)
69
58
 
70
59
  local asset = picker:FindFirstActiveAssetOfKey(PLACE, "specClashAfter")
71
60
  assert(asset, "No asset")
@@ -77,8 +66,8 @@ describe("GameConfigPicker.FindFirstActiveAssetOfKey priority", function()
77
66
  it("prefers the higher-priority asset even when added first", function()
78
67
  local serviceBag, gameConfigService, picker = newPicker()
79
68
 
80
- gameConfigService:AddPlace("specClashFirst", 222, 100) -- manifest first
81
- gameConfigService:AddPlace("specClashFirst", 111) -- hand-authored second
69
+ gameConfigService:AddPlace("specClashFirst", 222, 100)
70
+ gameConfigService:AddPlace("specClashFirst", 111)
82
71
 
83
72
  local asset = picker:FindFirstActiveAssetOfKey(PLACE, "specClashFirst")
84
73
  assert(asset, "No asset")
@@ -93,10 +82,6 @@ describe("GameConfigPicker.FindFirstActiveAssetOfKey priority", function()
93
82
  gameConfigService:AddPlace("specTie", 111)
94
83
  gameConfigService:AddPlace("specTie", 222)
95
84
 
96
- -- Equal priority keeps the config's own iteration order (unchanged from
97
- -- before priority existed), so the exact winner is implementation-defined.
98
- -- The real contract is only that it is stable and matches -- a higher
99
- -- priority is the deterministic tie-breaker, covered above.
100
85
  local firstAsset = picker:FindFirstActiveAssetOfKey(PLACE, "specTie")
101
86
  local secondAsset = picker:FindFirstActiveAssetOfKey(PLACE, "specTie")
102
87
  assert(firstAsset, "No firstAsset")
@@ -119,10 +104,6 @@ describe("GameConfigPicker.FindFirstActiveAssetOfKey priority", function()
119
104
  end)
120
105
 
121
106
  describe("GameConfigPicker gameId gate dominates priority", function()
122
- -- Builds a config whose GameId is NOT the running place's, containing one
123
- -- PLACE asset. Such a config is never active, so its assets must never be
124
- -- returned -- no matter how high their priority. Returns the config folder so
125
- -- the caller can destroy it.
126
107
  local function addInactiveConfigPlace(
127
108
  serviceBag: any,
128
109
  gameConfigService: any,
@@ -154,9 +135,7 @@ describe("GameConfigPicker gameId gate dominates priority", function()
154
135
  it("keeps a lower-priority active asset over a higher-priority wrong-gameId one", function()
155
136
  local serviceBag, gameConfigService, picker = newPicker()
156
137
 
157
- -- Wrong-gameId asset with a far higher priority than the active one.
158
138
  local inactive = addInactiveConfigPlace(serviceBag, gameConfigService, "specGateBeatsPriority", 888, 5000)
159
- -- Correct-gameId asset at the default priority.
160
139
  gameConfigService:AddPlace("specGateBeatsPriority", 111)
161
140
 
162
141
  local resolved = picker:FindFirstActiveAssetOfKey(PLACE, "specGateBeatsPriority")