Skip to content

Commit faf150d

Browse files
authored
Merge pull request #626 from Quenty/users/quenty/vscode-extension
ci: Fix CI for Nevermore VSCode extension
2 parents 8c2f368 + bf9591f commit faf150d

File tree

22 files changed

+597
-128
lines changed

22 files changed

+597
-128
lines changed

.github/workflows/extension-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
- uses: actions/checkout@v4
1212

1313
- run: npm ci
14-
working-directory: tools/nevrmoree-vscode
14+
working-directory: tools/nevermore-vscode
1515

1616
- name: Publish VSCode Extension
1717
working-directory: tools/nevermore-vscode

src/buttonhighlightmodel/src/Client/ButtonHighlightModel.lua

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ end
194194
Sets the button for the highlight model.
195195
@param button
196196
]=]
197-
function ButtonHighlightModel.SetButton(self: ButtonHighlightModel, button: GuiObject?)
197+
function ButtonHighlightModel.SetButton(self: ButtonHighlightModel, button: GuiObject?): () -> ()
198198
assert(typeof(button) == "Instance" or button == nil, "Bad button")
199199

200200
local maid = Maid.new()
@@ -276,7 +276,7 @@ function ButtonHighlightModel._trackIfButtonMovedOutFromMouse(
276276
self: ButtonHighlightModel,
277277
maid: Maid.Maid,
278278
button: GuiObject
279-
)
279+
): ()
280280
maid:GiveTask(button.InputChanged:Connect(function(inputObject: InputObject)
281281
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
282282
self._lastMousePositionForScrollingCheck.Value = inputObject.Position
@@ -449,7 +449,7 @@ end
449449
@param isChoosen boolean
450450
@param doNotAnimate boolean
451451
]=]
452-
function ButtonHighlightModel.SetIsChoosen(self: ButtonHighlightModel, isChoosen: boolean, doNotAnimate: boolean?)
452+
function ButtonHighlightModel.SetIsChoosen(self: ButtonHighlightModel, isChoosen: boolean, doNotAnimate: boolean?): ()
453453
assert(type(isChoosen) == "boolean", "Bad isChoosen")
454454

455455
self._isChoosen:SetValue(isChoosen, doNotAnimate)
@@ -510,8 +510,8 @@ end
510510
Sets whether interaction is enabled
511511
@param interactionEnabled boolean
512512
]=]
513-
function ButtonHighlightModel.SetInteractionEnabled(self: ButtonHighlightModel, interactionEnabled: boolean)
514-
self._interactionEnabled:Mount(interactionEnabled)
513+
function ButtonHighlightModel.SetInteractionEnabled(self: ButtonHighlightModel, interactionEnabled: boolean): () -> ()
514+
return self._interactionEnabled:Mount(interactionEnabled)
515515
end
516516

517517
--[=[
@@ -535,13 +535,13 @@ end
535535
@param isKeyDown boolean
536536
@param doNotAnimate boolean -- Optional
537537
]=]
538-
function ButtonHighlightModel.SetKeyDown(self: ButtonHighlightModel, isKeyDown: boolean, doNotAnimate: boolean?)
538+
function ButtonHighlightModel.SetKeyDown(self: ButtonHighlightModel, isKeyDown: boolean, doNotAnimate: boolean?): ()
539539
assert(type(isKeyDown) == "boolean", "Bad isKeyDown")
540540

541541
self._isKeyDown:SetValue(isKeyDown, doNotAnimate)
542542
end
543543

544-
function ButtonHighlightModel._trackTouch(self: ButtonHighlightModel, inputObject: InputObject)
544+
function ButtonHighlightModel._trackTouch(self: ButtonHighlightModel, inputObject: InputObject): ()
545545
if inputObject.UserInputState == Enum.UserInputState.End then
546546
return
547547
end
@@ -564,12 +564,12 @@ function ButtonHighlightModel._trackTouch(self: ButtonHighlightModel, inputObjec
564564
self._maid[inputObject] = maid
565565
end
566566

567-
function ButtonHighlightModel._stopTouchTrack(self: ButtonHighlightModel, inputObject: InputObject)
567+
function ButtonHighlightModel._stopTouchTrack(self: ButtonHighlightModel, inputObject: InputObject): ()
568568
-- Clears the input tracking as we slide off the button
569569
self._maid[inputObject] = nil
570570
end
571571

572-
function ButtonHighlightModel._updateTargets(self: ButtonHighlightModel)
572+
function ButtonHighlightModel._updateTargets(self: ButtonHighlightModel): ()
573573
self._isMouseOrTouchOver.Value = self._isMouseOver.Value or self._numFingerDown.Value > 0
574574

575575
-- Assume event emission can lead to cleanup in middle of call
@@ -594,7 +594,7 @@ function ButtonHighlightModel._update(self: ButtonHighlightModel): boolean
594594
)
595595
end
596596

597-
function ButtonHighlightModel._setupLegacySteppedMode(self: ButtonHighlightModel)
597+
function ButtonHighlightModel._setupLegacySteppedMode(self: ButtonHighlightModel): ()
598598
self._percentHighlightedAccelTween = AccelTween.new(200)
599599
self._percentHighlightedAccelTween.t = 0
600600
self._percentHighlightedAccelTween.p = 0

src/rogue-properties/src/Shared/Implementation/RogueProperty.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ function RogueProperty:ObserveBrio(predicate)
481481
})
482482
end
483483

484-
function RogueProperty:CreateMultiplier(amount: number, source)
484+
function RogueProperty:CreateMultiplier(amount: number, source): Instance?
485485
assert(type(amount) == "number", "Bad amount")
486486

487487
local className = ValueBaseUtils.getClassNameFromType(typeof(amount))

src/settings/src/Server/Player/PlayerSettings.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function PlayerSettings.new(folder: Folder, serviceBag: ServiceBag.ServiceBag):
5252
return self
5353
end
5454

55-
function PlayerSettings.EnsureInitialized(self: PlayerSettings, settingName: string, defaultValue)
55+
function PlayerSettings.EnsureInitialized<T>(self: PlayerSettings, settingName: string, defaultValue: T): ()
5656
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")
5757
assert(defaultValue ~= nil, "defaultValue cannot be nil")
5858

@@ -68,7 +68,7 @@ function PlayerSettings.EnsureInitialized(self: PlayerSettings, settingName: str
6868

6969
-- Paranoid UTF8 check
7070
if type(encoded) == "string" then
71-
assert(DataStoreStringUtils.isValidUTF8(defaultValue), "Bad UTF8 defaultValue")
71+
assert(DataStoreStringUtils.isValidUTF8(encoded), "Bad UTF8 defaultValue")
7272
end
7373

7474
self._obj:SetAttribute(attributeName, encoded)

src/settings/src/Shared/Player/PlayerSettingsBase.lua

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ local require = require(script.Parent.loader).load(script)
99

1010
local BaseObject = require("BaseObject")
1111
local DataStoreStringUtils = require("DataStoreStringUtils")
12+
local Observable = require("Observable")
1213
local PlayerSettingsUtils = require("PlayerSettingsUtils")
1314
local Rx = require("Rx")
1415
local RxAttributeUtils = require("RxAttributeUtils")
1516
local ServiceBag = require("ServiceBag")
1617
local SettingDefinition = require("SettingDefinition")
18+
local SettingProperty = require("SettingProperty")
1719

1820
local PlayerSettingsBase = setmetatable({}, BaseObject)
1921
PlayerSettingsBase.ClassName = "PlayerSettingsBase"
@@ -65,16 +67,23 @@ end
6567
consider using the setting definitions in a centralized location.
6668
6769
@param settingName string
68-
@param defaultValue any
69-
@return SettingProperty
70+
@param defaultValue T
71+
@return SettingProperty.SettingProperty<T>
7072
]=]
71-
function PlayerSettingsBase.GetSettingProperty(self: PlayerSettingsBase, settingName: string, defaultValue)
73+
function PlayerSettingsBase.GetSettingProperty<T>(
74+
self: PlayerSettingsBase,
75+
settingName: string,
76+
defaultValue: T
77+
): SettingProperty.SettingProperty<T>
7278
assert(type(settingName) == "string", "Bad settingName")
7379
assert(defaultValue ~= nil, "defaultValue cannot be nil")
7480

7581
self:EnsureInitialized(settingName, defaultValue)
7682

77-
return SettingDefinition.new(settingName, defaultValue):GetSettingProperty(self._serviceBag, self:GetPlayer())
83+
local player = self:GetPlayer()
84+
assert(player ~= nil, "No player found for settings")
85+
86+
return SettingDefinition.new(settingName, defaultValue):GetSettingProperty(self._serviceBag, player)
7887
end
7988

8089
--[=[
@@ -84,7 +93,7 @@ end
8493
@param defaultValue any
8594
@return any
8695
]=]
87-
function PlayerSettingsBase.GetValue(self: PlayerSettingsBase, settingName: string, defaultValue)
96+
function PlayerSettingsBase.GetValue<T>(self: PlayerSettingsBase, settingName: string, defaultValue: T): T
8897
assert(type(settingName) == "string", "Bad settingName")
8998
assert(defaultValue ~= nil, "defaultValue cannot be nil")
9099
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")
@@ -108,7 +117,7 @@ end
108117
@param value any
109118
@return any
110119
]=]
111-
function PlayerSettingsBase.SetValue(self: PlayerSettingsBase, settingName: string, value)
120+
function PlayerSettingsBase.SetValue<T>(self: PlayerSettingsBase, settingName: string, value: T): ()
112121
assert(type(settingName) == "string", "Bad settingName")
113122
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")
114123

@@ -124,7 +133,11 @@ end
124133
@param defaultValue any
125134
@return Observable<any>
126135
]=]
127-
function PlayerSettingsBase.ObserveValue(self: PlayerSettingsBase, settingName: string, defaultValue)
136+
function PlayerSettingsBase.ObserveValue<T>(
137+
self: PlayerSettingsBase,
138+
settingName: string,
139+
defaultValue: T
140+
): Observable.Observable<T>
128141
assert(type(settingName) == "string", "Bad settingName")
129142
assert(defaultValue ~= nil, "defaultValue cannot be nil")
130143
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")
@@ -144,7 +157,7 @@ end
144157
@param settingName string
145158
@param defaultValue T
146159
]=]
147-
function PlayerSettingsBase.RestoreDefault(self: PlayerSettingsBase, settingName: string, defaultValue)
160+
function PlayerSettingsBase.RestoreDefault<T>(self: PlayerSettingsBase, settingName: string, defaultValue: T): ()
148161
assert(type(settingName) == "string", "Bad settingName")
149162
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")
150163

@@ -158,7 +171,7 @@ end
158171
@param settingName string
159172
@param defaultValue any
160173
]=]
161-
function PlayerSettingsBase.EnsureInitialized(_self: PlayerSettingsBase, settingName: string, defaultValue)
174+
function PlayerSettingsBase.EnsureInitialized<T>(_self: PlayerSettingsBase, settingName: string, defaultValue: T): ()
162175
assert(type(settingName) == "string", "Bad settingName")
163176
assert(defaultValue ~= nil, "defaultValue cannot be nil")
164177
assert(DataStoreStringUtils.isValidUTF8(settingName), "Bad settingName")

src/settings/src/Shared/Setting/SettingDefinition.lua

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
--!nonstrict
1+
--!strict
22
--[=[
33
These settings definitions are used to define a setting and register them on both the client and server. See
44
[SettingDefinitionProvider] for more details on grouping these.
@@ -25,6 +25,8 @@ local Players = game:GetService("Players")
2525

2626
local DuckTypeUtils = require("DuckTypeUtils")
2727
local Maid = require("Maid")
28+
local Observable = require("Observable")
29+
local Promise = require("Promise")
2830
local ServiceBag = require("ServiceBag")
2931
local SettingProperty = require("SettingProperty")
3032
local SettingsDataService = require("SettingsDataService")
@@ -34,18 +36,29 @@ SettingDefinition.ClassName = "SettingDefinition"
3436
SettingDefinition.ServiceName = "SettingDefinition"
3537
SettingDefinition.__index = SettingDefinition
3638

39+
export type SettingDefinition<T> = typeof(setmetatable(
40+
{} :: {
41+
_settingName: string,
42+
_defaultValue: T,
43+
_maid: Maid.Maid,
44+
_serviceBag: ServiceBag.ServiceBag,
45+
ServiceName: string,
46+
},
47+
{} :: typeof({ __index = SettingDefinition })
48+
))
49+
3750
--[=[
3851
Constructs a new setting definition which defines the name and the defaultValue
3952
4053
@param settingName string
4154
@param defaultValue T
4255
@return SettingDefinition<T>
4356
]=]
44-
function SettingDefinition.new(settingName, defaultValue)
57+
function SettingDefinition.new<T>(settingName: string, defaultValue: T): SettingDefinition<T>
4558
assert(type(settingName) == "string", "Bad settingName")
4659
assert(defaultValue ~= nil, "DefaultValue cannot be nil")
4760

48-
local self = setmetatable({}, SettingDefinition)
61+
local self: SettingDefinition<T> = setmetatable({} :: any, SettingDefinition)
4962

5063
self._settingName = settingName
5164
self._defaultValue = defaultValue
@@ -60,9 +73,9 @@ end
6073
6174
@param serviceBag ServiceBag
6275
]=]
63-
function SettingDefinition:Init(serviceBag: ServiceBag.ServiceBag)
76+
function SettingDefinition.Init<T>(self: SettingDefinition<T>, serviceBag: ServiceBag.ServiceBag)
6477
assert(serviceBag, "No serviceBag")
65-
assert(not self._maid, "Already initialized")
78+
assert(not (self :: any)._maid, "Already initialized")
6679

6780
self._maid = Maid.new()
6881
self._serviceBag = assert(serviceBag, "No serviceBag")
@@ -77,11 +90,11 @@ end
7790
@param player Player
7891
@return T
7992
]=]
80-
function SettingDefinition:Get(player: Player)
93+
function SettingDefinition.Get<T>(self: SettingDefinition<T>, player: Player): T
8194
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
8295
assert(self._serviceBag, "Retrieve from serviceBag")
8396

84-
return self:GetSettingProperty(self._serviceBag, player):GetValue()
97+
return self:GetSettingProperty(self._serviceBag, player).Value
8598
end
8699

87100
--[=[
@@ -90,7 +103,7 @@ end
90103
@param player Player
91104
@param value T
92105
]=]
93-
function SettingDefinition:Set(player: Player, value)
106+
function SettingDefinition.Set<T>(self: SettingDefinition<T>, player: Player, value: T): ()
94107
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
95108
assert(self._serviceBag, "Retrieve from serviceBag")
96109

@@ -103,7 +116,7 @@ end
103116
@param player Player
104117
@return Promise<T>
105118
]=]
106-
function SettingDefinition:Promise(player: Player)
119+
function SettingDefinition.Promise<T>(self: SettingDefinition<T>, player: Player): Promise.Promise<T>
107120
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
108121
assert(self._serviceBag, "Retrieve from serviceBag")
109122

@@ -117,7 +130,7 @@ end
117130
@param value T
118131
@return Promise<T>
119132
]=]
120-
function SettingDefinition:PromiseSet(player: Player, value)
133+
function SettingDefinition.PromiseSet<T>(self: SettingDefinition<T>, player: Player, value: T): Promise.Promise<()>
121134
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
122135
assert(self._serviceBag, "Retrieve from serviceBag")
123136

@@ -130,7 +143,7 @@ end
130143
@param player Player
131144
@return Promise<T>
132145
]=]
133-
function SettingDefinition:Observe(player: Player)
146+
function SettingDefinition.Observe<T>(self: SettingDefinition<T>, player: Player): Observable.Observable<T>
134147
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
135148
assert(self._serviceBag, "Retrieve from serviceBag")
136149

@@ -154,7 +167,11 @@ end
154167
@param player Player
155168
@return SettingProperty<T>
156169
]=]
157-
function SettingDefinition:GetSettingProperty(serviceBag, player: Player)
170+
function SettingDefinition.GetSettingProperty<T>(
171+
self: SettingDefinition<T>,
172+
serviceBag: ServiceBag.ServiceBag,
173+
player: Player
174+
): SettingProperty.SettingProperty<T>
158175
assert(ServiceBag.isServiceBag(serviceBag), "Bad serviceBag")
159176
assert(typeof(player) == "Instance" and player:IsA("Player") or player == nil, "Bad player")
160177

@@ -169,7 +186,10 @@ end
169186
@param serviceBag ServiceBag
170187
@return SettingProperty<T>
171188
]=]
172-
function SettingDefinition:GetLocalPlayerSettingProperty(serviceBag)
189+
function SettingDefinition.GetLocalPlayerSettingProperty<T>(
190+
self: SettingDefinition<T>,
191+
serviceBag: ServiceBag.ServiceBag
192+
): SettingProperty.SettingProperty<T>
173193
assert(ServiceBag.isServiceBag(serviceBag), "Bad serviceBag")
174194

175195
return self:GetSettingProperty(serviceBag, Players.LocalPlayer)
@@ -179,19 +199,19 @@ end
179199
Retrieves the default name of the setting
180200
@return string
181201
]=]
182-
function SettingDefinition:GetSettingName(): string
202+
function SettingDefinition.GetSettingName<T>(self: SettingDefinition<T>): string
183203
return self._settingName
184204
end
185205

186206
--[=[
187207
Retrieves the default value for the setting
188208
@return T
189209
]=]
190-
function SettingDefinition:GetDefaultValue()
210+
function SettingDefinition.GetDefaultValue<T>(self: SettingDefinition<T>): T
191211
return self._defaultValue
192212
end
193213

194-
function SettingDefinition:Destroy()
214+
function SettingDefinition.Destroy<T>(self: SettingDefinition<T>): ()
195215
self._maid:DoCleaning()
196216
end
197217

src/settings/src/Shared/Setting/SettingProperty.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ end
130130
131131
@param value T
132132
]=]
133-
function SettingProperty.SetValue<T>(self: SettingProperty<T>, value: T)
133+
function SettingProperty.SetValue<T>(self: SettingProperty<T>, value: T): ()
134134
local settings = self:_getPlayerSettings()
135135
if settings then
136136
settings:SetValue(self._definition:GetSettingName(), value)

src/soundgroups/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,20 @@
2626
],
2727
"dependencies": {
2828
"@quenty/baseobject": "file:../baseobject",
29+
"@quenty/binder": "file:../binder",
2930
"@quenty/brio": "file:../brio",
3031
"@quenty/counter": "file:../counter",
3132
"@quenty/instanceutils": "file:../instanceutils",
3233
"@quenty/loader": "file:../loader",
3334
"@quenty/maid": "file:../maid",
3435
"@quenty/observablecollection": "file:../observablecollection",
36+
"@quenty/promise": "file:../promise",
37+
"@quenty/rogue-properties": "file:../rogue-properties",
3538
"@quenty/rx": "file:../rx",
3639
"@quenty/servicebag": "file:../servicebag",
3740
"@quenty/signal": "file:../signal",
3841
"@quenty/table": "file:../table",
42+
"@quenty/tie": "file:../tie",
3943
"@quenty/valueobject": "file:../valueobject"
4044
},
4145
"publishConfig": {

0 commit comments

Comments
 (0)