Skip to content

Commit 876a870

Browse files
authored
Merge pull request #627 from Quenty/users/quenty/typing
Users/quenty/typing
2 parents 5232cd2 + e38a72d commit 876a870

31 files changed

+555
-239
lines changed

aftman.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ luau-lsp = "Quenty/[email protected]"
77
lune = "lune-org/[email protected]"
88
mantle = "blake-mealey/[email protected]"
99
moonwave-extractor = "UpliftGames/[email protected]"
10-
remodel = "rojo-rbx/[email protected]"
1110
rojo = "quenty/[email protected]"
1211
run-in-roblox = "rojo-rbx/[email protected]"
1312
selene = "Kampfkarren/[email protected]"

src/boundingboxutils/src/Shared/CompiledBoundingBoxUtils.lua

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
local CompiledBoundingBoxUtils = {}
99

10+
export type CompiledBoundingBox = CFrame
11+
1012
--[=[
1113
Compiles a bounding box into a CFrame rotation matrix for easy
1214
usage.
@@ -15,7 +17,7 @@ local CompiledBoundingBoxUtils = {}
1517
@param size Vector3
1618
@return CFrame
1719
]=]
18-
function CompiledBoundingBoxUtils.compileBBox(cframe: CFrame, size: Vector3): CFrame
20+
function CompiledBoundingBoxUtils.compileBBox(cframe: CFrame, size: Vector3): CompiledBoundingBox
1921
-- stylua: ignore
2022
return CFrame.fromMatrix(
2123
cframe.Position,
@@ -31,7 +33,7 @@ end
3133
@param bbox CFrame
3234
@return boolean
3335
]=]
34-
function CompiledBoundingBoxUtils.testPointBBox(point: Vector3, bbox: CFrame): boolean
36+
function CompiledBoundingBoxUtils.testPointBBox(point: Vector3, bbox: CompiledBoundingBox): boolean
3537
local objPos = bbox * point
3638

3739
-- stylua: ignore

src/datastore/src/Server/DataStore.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ function DataStore.PromiseViewUpToDate(self: DataStore): Promise.Promise<()>
314314
return promise
315315
end
316316

317-
function DataStore._setupAutoSaving(self: DataStore)
317+
function DataStore._setupAutoSaving(self: DataStore): ()
318318
local startTime = os.clock()
319319

320320
self._maid:GiveTask(Rx.combineLatest({
@@ -364,7 +364,7 @@ function DataStore._setupAutoSaving(self: DataStore)
364364
end))
365365
end
366366

367-
function DataStore._syncData(self: DataStore, doMergeNewData: boolean, doCloseSession: boolean?)
367+
function DataStore._syncData(self: DataStore, doMergeNewData: boolean, doCloseSession: boolean?): Promise.Promise<()>
368368
if self:DidLoadFail() then
369369
warn("[DataStore] - Not syncing, failed to load")
370370
return Promise.rejected("Load not successful, not syncing")

src/datastore/src/Server/GameDataStoreService.lua

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,31 @@ local ServiceBag = require("ServiceBag")
1818
local GameDataStoreService = {}
1919
GameDataStoreService.ServiceName = "GameDataStoreService"
2020

21-
function GameDataStoreService:Init(serviceBag: ServiceBag.ServiceBag)
22-
assert(not self._serviceBag, "Already initialized")
21+
export type GameDataStoreService = typeof(setmetatable(
22+
{} :: {
23+
_serviceBag: ServiceBag.ServiceBag,
24+
_maid: Maid.Maid,
25+
_dataStorePromise: Promise.Promise<DataStore.DataStore>?,
26+
_robloxDataStorePromise: Promise.Promise<any>?,
27+
_bindToCloseService: any,
28+
},
29+
{} :: typeof({ __index = GameDataStoreService })
30+
))
31+
32+
function GameDataStoreService.Init(self: GameDataStoreService, serviceBag: ServiceBag.ServiceBag): ()
33+
assert(not (self :: any)._serviceBag, "Already initialized")
2334
self._serviceBag = assert(serviceBag, "No serviceBag")
35+
self._maid = Maid.new()
2436

2537
self._bindToCloseService = self._serviceBag:GetService(require("BindToCloseService"))
26-
27-
self._maid = Maid.new()
2838
end
2939

30-
function GameDataStoreService:PromiseDataStore(): Promise.Promise<DataStore>
40+
--[=[
41+
Promises a DataStore for the current game that is synchronized every 5 seconds.
42+
43+
@return Promise<DataStore>
44+
]=]
45+
function GameDataStoreService.PromiseDataStore(self: GameDataStoreService): Promise.Promise<DataStore>
3146
if self._dataStorePromise then
3247
return self._dataStorePromise
3348
end
@@ -48,26 +63,29 @@ function GameDataStoreService:PromiseDataStore(): Promise.Promise<DataStore>
4863

4964
return dataStore
5065
end)
66+
assert(self._dataStorePromise, "Typechecking assertion")
5167

5268
return self._dataStorePromise
5369
end
5470

55-
function GameDataStoreService:_promiseRobloxDataStore(): Promise.Promise<any>
71+
function GameDataStoreService._promiseRobloxDataStore(self: GameDataStoreService): Promise.Promise<any>
5672
if self._robloxDataStorePromise then
5773
return self._robloxDataStorePromise
5874
end
5975

6076
self._robloxDataStorePromise =
6177
self._maid:GivePromise(DataStorePromises.promiseDataStore("GameDataStore", "Version1"))
6278

79+
assert(self._robloxDataStorePromise, "Typechecking assertion")
80+
6381
return self._robloxDataStorePromise
6482
end
6583

66-
function GameDataStoreService:_getKey(): string
84+
function GameDataStoreService._getKey(_self: GameDataStoreService): string
6785
return "version1"
6886
end
6987

70-
function GameDataStoreService:Destroy()
88+
function GameDataStoreService.Destroy(self: GameDataStoreService)
7189
self._maid:DoCleaning()
7290
end
7391

src/datastore/src/Server/Modules/DataStoreDeleteToken.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ local require = require(script.Parent.loader).load(script)
99

1010
local Symbol = require("Symbol")
1111

12-
return Symbol.named("dataStoreDeleteToken")
12+
export type DataStoreDeleteToken = Symbol.Symbol
13+
14+
return Symbol.named("dataStoreDeleteToken") :: DataStoreDeleteToken

src/datastore/src/Server/Modules/DataStoreStage.lua

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,12 @@ end
111111
@param key string
112112
@param value any
113113
]=]
114-
function DataStoreStage.Store(self: DataStoreStage, key: string, value: any)
115-
assert(type(key) == "string", "Bad key")
114+
function DataStoreStage.Store(
115+
self: DataStoreStage,
116+
key: DataStoreStageKey,
117+
value: any | DataStoreDeleteToken.DataStoreDeleteToken
118+
): ()
119+
assert(type(key) == "string" or type(key) == "number", "Bad key")
116120

117121
if value == nil then
118122
value = DataStoreDeleteToken
@@ -133,7 +137,7 @@ end
133137
end)
134138
```
135139
136-
@param key string | number
140+
@param key DataStoreStageKey
137141
@param defaultValue T?
138142
@return Promise<T>
139143
]=]
@@ -166,7 +170,7 @@ end
166170
@param defaultValue any
167171
@return Promise<any>
168172
]=]
169-
function DataStoreStage.LoadAll(self: DataStoreStage, defaultValue)
173+
function DataStoreStage.LoadAll<T>(self: DataStoreStage, defaultValue: T?): Promise.Promise<T?>
170174
return self:PromiseViewUpToDate():Then(function()
171175
if self._viewSnapshot == nil then
172176
return defaultValue
@@ -187,10 +191,10 @@ end
187191
saveslot:Store("Money", 0)
188192
```
189193
190-
@param key string | number
194+
@param key DataStoreStageKey
191195
@return DataStoreStage
192196
]=]
193-
function DataStoreStage.GetSubStore(self: DataStoreStage, key: DataStoreStageKey)
197+
function DataStoreStage.GetSubStore(self: DataStoreStage, key: DataStoreStageKey): DataStoreStage
194198
assert(type(key) == "string" or type(key) == "number", "Bad key")
195199

196200
if self._stores[key] then
@@ -243,18 +247,18 @@ end
243247
--[=[
244248
Explicitely deletes data at the key
245249
246-
@param key string | number
250+
@param key DataStoreStageKey
247251
]=]
248-
function DataStoreStage.Delete(self: DataStoreStage, key: string)
249-
assert(type(key) == "string", "Bad key")
252+
function DataStoreStage.Delete(self: DataStoreStage, key: DataStoreStageKey): ()
253+
assert(type(key) == "string" or type(key) == "number", "Bad key")
250254

251255
self:_storeAtKey(key, DataStoreDeleteToken)
252256
end
253257

254258
--[=[
255259
Queues up a wipe of all values. This will completely set the data to nil.
256260
]=]
257-
function DataStoreStage.Wipe(self: DataStoreStage)
261+
function DataStoreStage.Wipe(self: DataStoreStage): ()
258262
self:Overwrite(DataStoreDeleteToken)
259263
end
260264

@@ -263,12 +267,16 @@ end
263267
264268
If no key is passed than it will observe the whole view snapshot
265269
266-
@param key string | number?
270+
@param key DataStoreStageKey?
267271
@param defaultValue T?
268272
@return Observable<T>
269273
]=]
270-
function DataStoreStage.Observe(self: DataStoreStage, key, defaultValue)
271-
assert(type(key) == "string" or type(key) == "number" or key == nil, "Bad key")
274+
function DataStoreStage.Observe<T>(
275+
self: DataStoreStage,
276+
key: DataStoreStageKey?,
277+
defaultValue: T?
278+
): Observable.Observable<T>
279+
assert(type(key) == "string" or type(key) == "number", "Bad key")
272280

273281
if key == nil then
274282
return Observable.new(function(sub)
@@ -293,7 +301,7 @@ function DataStoreStage.Observe(self: DataStoreStage, key, defaultValue)
293301
end)
294302

295303
return maid
296-
end)
304+
end) :: any
297305
end
298306

299307
return Observable.new(function(sub)
@@ -315,16 +323,16 @@ function DataStoreStage.Observe(self: DataStoreStage, key, defaultValue)
315323
end)
316324

317325
return maid
318-
end)
326+
end) :: any
319327
end
320328

321329
--[=[
322330
Adds a callback to be called before save. This may return a promise.
323331
324332
@param callback function -- May return a promise
325-
@return function -- Call to remove
333+
@return () -> () -- Call to remove
326334
]=]
327-
function DataStoreStage.AddSavingCallback(self: DataStoreStage, callback: DataStoreCallback?)
335+
function DataStoreStage.AddSavingCallback(self: DataStoreStage, callback: DataStoreCallback?): () -> ()
328336
assert(type(callback) == "function", "Bad callback")
329337

330338
table.insert(self._savingCallbacks, callback)
@@ -340,7 +348,7 @@ end
340348
Removes a saving callback from the data store stage
341349
@param callback function
342350
]=]
343-
function DataStoreStage.RemoveSavingCallback(self: DataStoreStage, callback: DataStoreCallback?)
351+
function DataStoreStage.RemoveSavingCallback(self: DataStoreStage, callback: DataStoreCallback?): ()
344352
assert(type(callback) == "function", "Bad callback")
345353

346354
local index = table.find(self._savingCallbacks, callback)
@@ -434,7 +442,7 @@ end
434442
435443
@param parentWriter DataStoreWriter
436444
]=]
437-
function DataStoreStage.MarkDataAsSaved(self: DataStoreStage, parentWriter: DataStoreWriter.DataStoreWriter)
445+
function DataStoreStage.MarkDataAsSaved(self: DataStoreStage, parentWriter: DataStoreWriter.DataStoreWriter): ()
438446
-- Update all children first
439447
for key, subwriter in pairs(parentWriter:GetSubWritersMap()) do
440448
local store = self._stores[key]
@@ -504,7 +512,7 @@ end
504512
505513
@return Promise
506514
]=]
507-
function DataStoreStage.PromiseViewUpToDate(self: DataStoreStage)
515+
function DataStoreStage.PromiseViewUpToDate(self: DataStoreStage): Promise.Promise<()>
508516
if not self._loadParent then
509517
error("[DataStoreStage.Load] - Failed to load, no loadParent!")
510518
end
@@ -525,7 +533,7 @@ end
525533
526534
@param data any
527535
]=]
528-
function DataStoreStage.Overwrite(self: DataStoreStage, data)
536+
function DataStoreStage.Overwrite(self: DataStoreStage, data: any | DataStoreDeleteToken.DataStoreDeleteToken): ()
529537
-- Ensure that we at least start loading (and thus the autosave loop) for write
530538
self:PromiseViewUpToDate()
531539

@@ -578,7 +586,7 @@ end
578586
579587
@param data any
580588
]=]
581-
function DataStoreStage.OverwriteMerge(self: DataStoreStage, data)
589+
function DataStoreStage.OverwriteMerge(self: DataStoreStage, data: any): ()
582590
-- Ensure that we at least start loading (and thus the autosave loop) for write
583591
self:PromiseViewUpToDate()
584592

@@ -775,7 +783,7 @@ end
775783
function DataStoreStage._updateStoresAndComputeBaseDataSnapshotValueFromDiffSnapshot(
776784
self: DataStoreStage,
777785
key: DataStoreStageKey,
778-
value
786+
value: any | DataStoreDeleteToken.DataStoreDeleteToken
779787
)
780788
assert(type(key) == "string" or type(key) == "number", "Bad key")
781789

src/datastore/src/Server/Modules/DataStoreWriter.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ end
9595

9696
--[=[
9797
Adds a recursive child writer to use at the key `name`
98-
@param name string | number
98+
@param name DataStoreStageKey
9999
@param writer DataStoreWriter
100100
]=]
101101
function DataStoreWriter.AddSubWriter(self: DataStoreWriter, name: DataStoreStageKey, writer: DataStoreWriter)
@@ -109,7 +109,7 @@ end
109109
--[=[
110110
Gets a sub writer
111111
112-
@param name string | number
112+
@param name DataStoreStageKey
113113
@return DataStoreWriter
114114
]=]
115115
function DataStoreWriter.GetWriter(self: DataStoreWriter, name: DataStoreStageKey): DataStoreWriter?

0 commit comments

Comments
 (0)