@quenty/userserviceutils 9.18.3-canary.550.afa1b3b.0 → 9.18.4-canary.11a5dcf.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,7 +3,23 @@
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
- ## [9.18.3-canary.550.afa1b3b.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/userserviceutils@9.18.2...@quenty/userserviceutils@9.18.3-canary.550.afa1b3b.0) (2025-04-10)
6
+ ## [9.18.4-canary.11a5dcf.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/userserviceutils@9.18.3...@quenty/userserviceutils@9.18.4-canary.11a5dcf.0) (2025-05-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Additional type checking updates ([05ba29a](https://github.com/Quenty/NevermoreEngine/commit/05ba29a03efc9f3feed74b34f1d9dfb237496214))
12
+
13
+
14
+ ### Features
15
+
16
+ * Add even more types ([b31717d](https://github.com/Quenty/NevermoreEngine/commit/b31717d8c9f7620c457f5018a2affa760a65334a))
17
+
18
+
19
+
20
+
21
+
22
+ ## [9.18.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/userserviceutils@9.18.2...@quenty/userserviceutils@9.18.3) (2025-04-10)
7
23
 
8
24
  **Note:** Version bump only for package @quenty/userserviceutils
9
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/userserviceutils",
3
- "version": "9.18.3-canary.550.afa1b3b.0",
3
+ "version": "9.18.4-canary.11a5dcf.0",
4
4
  "description": "Utilities involving UserService in Roblox",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -25,17 +25,17 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/aggregator": "1.4.3-canary.550.afa1b3b.0",
29
- "@quenty/baseobject": "10.8.3-canary.550.afa1b3b.0",
30
- "@quenty/loader": "10.8.3-canary.550.afa1b3b.0",
31
- "@quenty/maid": "3.4.3-canary.550.afa1b3b.0",
28
+ "@quenty/aggregator": "1.4.4-canary.11a5dcf.0",
29
+ "@quenty/baseobject": "10.8.4-canary.11a5dcf.0",
30
+ "@quenty/loader": "10.8.4-canary.11a5dcf.0",
31
+ "@quenty/maid": "3.4.4-canary.11a5dcf.0",
32
32
  "@quenty/math": "2.7.3",
33
- "@quenty/promise": "10.10.4-canary.550.afa1b3b.0",
34
- "@quenty/rx": "13.17.3-canary.550.afa1b3b.0",
35
- "@quenty/servicebag": "11.11.4-canary.550.afa1b3b.0"
33
+ "@quenty/promise": "10.10.5-canary.11a5dcf.0",
34
+ "@quenty/rx": "13.17.4-canary.11a5dcf.0",
35
+ "@quenty/servicebag": "11.11.5-canary.11a5dcf.0"
36
36
  },
37
37
  "publishConfig": {
38
38
  "access": "public"
39
39
  },
40
- "gitHead": "afa1b3b99b862698c3ab46009497bd507150867c"
40
+ "gitHead": "11a5dcf7d4c7a0bfbf3337e97d30e8346ea09d3f"
41
41
  }
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Aggregates all requests into one big send request to deduplicate the request
3
4
 
@@ -8,24 +9,33 @@ local require = require(script.Parent.loader).load(script)
8
9
 
9
10
  local Aggregator = require("Aggregator")
10
11
  local BaseObject = require("BaseObject")
12
+ local Observable = require("Observable")
13
+ local Promise = require("Promise")
14
+ local PromiseRetryUtils = require("PromiseRetryUtils")
11
15
  local Rx = require("Rx")
12
16
  local UserServiceUtils = require("UserServiceUtils")
13
- local PromiseRetryUtils = require("PromiseRetryUtils")
14
17
 
15
18
  local UserInfoAggregator = setmetatable({}, BaseObject)
16
19
  UserInfoAggregator.ClassName = "UserInfoAggregator"
17
20
  UserInfoAggregator.__index = UserInfoAggregator
18
21
 
19
- function UserInfoAggregator.new()
20
- local self = setmetatable(BaseObject.new(), UserInfoAggregator)
22
+ export type UserInfoAggregator = typeof(setmetatable(
23
+ {} :: {
24
+ _aggregator: Aggregator.Aggregator<UserServiceUtils.UserInfo>,
25
+ },
26
+ {} :: typeof({ __index = UserInfoAggregator })
27
+ )) & BaseObject.BaseObject
28
+
29
+ function UserInfoAggregator.new(): UserInfoAggregator
30
+ local self: UserInfoAggregator = setmetatable(BaseObject.new() :: any, UserInfoAggregator)
21
31
 
22
32
  self._aggregator = self._maid:Add(Aggregator.new("UserServiceUtils.promiseUserInfosByUserIds", function(userIdList)
23
33
  return PromiseRetryUtils.retry(function()
24
34
  return UserServiceUtils.promiseUserInfosByUserIds(userIdList)
25
35
  end, {
26
- initialWaitTime = 10;
27
- maxAttempts = 10;
28
- printWarning = true;
36
+ initialWaitTime = 10,
37
+ maxAttempts = 10,
38
+ printWarning = true,
29
39
  })
30
40
  end))
31
41
 
@@ -39,7 +49,7 @@ end
39
49
  @param userId number
40
50
  @return Promise<UserInfo>
41
51
  ]=]
42
- function UserInfoAggregator:PromiseUserInfo(userId: number)
52
+ function UserInfoAggregator:PromiseUserInfo(userId: number): Promise.Promise<UserServiceUtils.UserInfo>
43
53
  assert(type(userId) == "number", "Bad userId")
44
54
 
45
55
  return self._aggregator:Promise(userId)
@@ -51,7 +61,7 @@ end
51
61
  @param userId number
52
62
  @return Promise<string>
53
63
  ]=]
54
- function UserInfoAggregator:PromiseDisplayName(userId: number)
64
+ function UserInfoAggregator:PromiseDisplayName(userId: number): Promise.Promise<string>
55
65
  assert(type(userId) == "number", "Bad userId")
56
66
 
57
67
  return self._aggregator:Promise(userId):Then(function(userInfo)
@@ -65,7 +75,7 @@ end
65
75
  @param userId number
66
76
  @return Promise<string>
67
77
  ]=]
68
- function UserInfoAggregator:PromiseUsername(userId: number)
78
+ function UserInfoAggregator:PromiseUsername(userId: number): Promise.Promise<string>
69
79
  assert(type(userId) == "number", "Bad userId")
70
80
 
71
81
  return self._aggregator:Promise(userId):Then(function(userInfo)
@@ -79,7 +89,7 @@ end
79
89
  @param userId number
80
90
  @return Promise<boolean>
81
91
  ]=]
82
- function UserInfoAggregator:PromiseHasVerifiedBadge(userId: number)
92
+ function UserInfoAggregator:PromiseHasVerifiedBadge(userId: number): Promise.Promise<boolean>
83
93
  assert(type(userId) == "number", "Bad userId")
84
94
 
85
95
  return self._aggregator:Promise(userId):Then(function(userInfo)
@@ -93,7 +103,7 @@ end
93
103
  @param userId number
94
104
  @return Observable<UserInfo>
95
105
  ]=]
96
- function UserInfoAggregator:ObserveUserInfo(userId: number)
106
+ function UserInfoAggregator:ObserveUserInfo(userId: number): Observable.Observable<UserServiceUtils.UserInfo>
97
107
  assert(type(userId) == "number", "Bad userId")
98
108
 
99
109
  return self._aggregator:Observe(userId)
@@ -105,7 +115,7 @@ end
105
115
  @param userId number
106
116
  @return Observable<string>
107
117
  ]=]
108
- function UserInfoAggregator:ObserveDisplayName(userId: number)
118
+ function UserInfoAggregator:ObserveDisplayName(userId: number): Observable.Observable<string>
109
119
  assert(type(userId) == "number", "Bad userId")
110
120
 
111
121
  return self._aggregator:Observe(userId):Pipe({
@@ -121,7 +131,7 @@ end
121
131
  @param userId number
122
132
  @return Observable<string>
123
133
  ]=]
124
- function UserInfoAggregator:ObserveUsername(userId: number)
134
+ function UserInfoAggregator:ObserveUsername(userId: number): Observable.Observable<string>
125
135
  assert(type(userId) == "number", "Bad userId")
126
136
 
127
137
  return self._aggregator:Observe(userId):Pipe({
@@ -137,14 +147,14 @@ end
137
147
  @param userId number
138
148
  @return Observable<boolean>
139
149
  ]=]
140
- function UserInfoAggregator:ObserveHasVerifiedBadge(userId: number)
150
+ function UserInfoAggregator:ObserveHasVerifiedBadge(userId: number): Observable.Observable<boolean>
141
151
  assert(type(userId) == "number", "Bad userId")
142
152
 
143
153
  return self._aggregator:Observe(userId):Pipe({
144
154
  Rx.map(function(userInfo)
145
155
  return userInfo.HasVerifiedBadge
146
- end)
156
+ end),
147
157
  })
148
158
  end
149
159
 
150
- return UserInfoAggregator
160
+ return UserInfoAggregator
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Centralized provider for user info so we can coordinate web requests.
3
4
 
@@ -6,14 +7,17 @@
6
7
 
7
8
  local require = require(script.Parent.loader).load(script)
8
9
 
9
- local UserInfoAggregator = require("UserInfoAggregator")
10
10
  local Maid = require("Maid")
11
- local _ServiceBag = require("ServiceBag")
11
+ local Observable = require("Observable")
12
+ local Promise = require("Promise")
13
+ local ServiceBag = require("ServiceBag")
14
+ local UserInfoAggregator = require("UserInfoAggregator")
15
+ local UserServiceUtils = require("UserServiceUtils")
12
16
 
13
17
  local UserInfoService = {}
14
18
  UserInfoService.ServiceName = "UserInfoService"
15
19
 
16
- function UserInfoService:Init(serviceBag: _ServiceBag.ServiceBag)
20
+ function UserInfoService:Init(serviceBag: ServiceBag.ServiceBag)
17
21
  assert(not self._serviceBag, "Already initialized")
18
22
  self._serviceBag = assert(serviceBag, "No serviceBag")
19
23
  self._maid = Maid.new()
@@ -28,8 +32,8 @@ end
28
32
  @param userId number
29
33
  @return Promise<UserInfo>
30
34
  ]=]
31
- function UserInfoService:PromiseUserInfo(userId: number)
32
- assert(type(userId) == "number", "Bad userId")
35
+ function UserInfoService:PromiseUserInfo(userId: number): Promise.Promise<UserServiceUtils.UserInfo>
36
+ assert(type(userId) == "number", "Bad userId")
33
37
 
34
38
  return self._aggregator:PromiseUserInfo(userId)
35
39
  end
@@ -40,8 +44,8 @@ end
40
44
  @param userId number
41
45
  @return Observable<UserInfo>
42
46
  ]=]
43
- function UserInfoService:ObserveUserInfo(userId: number)
44
- assert(type(userId) == "number", "Bad userId")
47
+ function UserInfoService:ObserveUserInfo(userId: number): Observable.Observable<UserServiceUtils.UserInfo>
48
+ assert(type(userId) == "number", "Bad userId")
45
49
 
46
50
  return self._aggregator:ObserveUserInfo(userId)
47
51
  end
@@ -52,8 +56,8 @@ end
52
56
  @param userId number
53
57
  @return Promise<string>
54
58
  ]=]
55
- function UserInfoService:PromiseDisplayName(userId: number)
56
- assert(type(userId) == "number", "Bad userId")
59
+ function UserInfoService:PromiseDisplayName(userId: number): Promise.Promise<string>
60
+ assert(type(userId) == "number", "Bad userId")
57
61
 
58
62
  return self._aggregator:PromiseDisplayName(userId)
59
63
  end
@@ -64,8 +68,8 @@ end
64
68
  @param userId number
65
69
  @return Promise<string>
66
70
  ]=]
67
- function UserInfoService:PromiseUsername(userId: number)
68
- assert(type(userId) == "number", "Bad userId")
71
+ function UserInfoService:PromiseUsername(userId: number): Promise.Promise<string>
72
+ assert(type(userId) == "number", "Bad userId")
69
73
 
70
74
  return self._aggregator:PromiseUsername(userId)
71
75
  end
@@ -76,15 +80,14 @@ end
76
80
  @param userId number
77
81
  @return Observable<string>
78
82
  ]=]
79
- function UserInfoService:ObserveDisplayName(userId: number)
80
- assert(type(userId) == "number", "Bad userId")
83
+ function UserInfoService:ObserveDisplayName(userId: number): Observable.Observable<UserServiceUtils.UserInfo>
84
+ assert(type(userId) == "number", "Bad userId")
81
85
 
82
86
  return self._aggregator:ObserveDisplayName(userId)
83
87
  end
84
88
 
85
-
86
89
  function UserInfoService:Destroy()
87
90
  self._maid:DoCleaning()
88
91
  end
89
92
 
90
- return UserInfoService
93
+ return UserInfoService
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Wraps [UserService] API calls with [Promise].
3
4
 
@@ -20,6 +21,12 @@ local UserServiceUtils = {}
20
21
  .HasVerifiedBadge boolean -- The HasVerifiedBadge value associated with the user.
21
22
  @within UserServiceUtils
22
23
  ]=]
24
+ export type UserInfo = {
25
+ Id: number,
26
+ Username: string,
27
+ DisplayName: string,
28
+ HasVerifiedBadge: boolean,
29
+ }
23
30
 
24
31
  --[=[
25
32
  Wraps UserService:GetUserInfosByUserIdsAsync(userIds)
@@ -31,7 +38,7 @@ local UserServiceUtils = {}
31
38
  @param userIds { number }
32
39
  @return Promise<{ UserInfo }>
33
40
  ]=]
34
- function UserServiceUtils.promiseUserInfosByUserIds(userIds)
41
+ function UserServiceUtils.promiseUserInfosByUserIds(userIds: { number }): Promise.Promise<{ UserInfo }>
35
42
  assert(type(userIds) == "table", "Bad userIds")
36
43
 
37
44
  return Promise.spawn(function(resolve, reject)
@@ -61,19 +68,18 @@ end
61
68
  @param userId number
62
69
  @return Promise<UserInfo>
63
70
  ]=]
64
- function UserServiceUtils.promiseUserInfo(userId)
71
+ function UserServiceUtils.promiseUserInfo(userId: number): Promise.Promise<UserInfo>
65
72
  assert(type(userId) == "number", "Bad userId")
66
73
 
67
- return UserServiceUtils.promiseUserInfosByUserIds({ userId })
68
- :Then(function(infos)
69
- local userInfo = infos[1]
74
+ return UserServiceUtils.promiseUserInfosByUserIds({ userId }):Then(function(infos)
75
+ local userInfo = infos[1]
70
76
 
71
- if not userInfo then
72
- return Promise.rejected("Failed to retrieve data for userId")
73
- end
77
+ if not userInfo then
78
+ return Promise.rejected("Failed to retrieve data for userId")
79
+ end
74
80
 
75
- return userInfo
76
- end)
81
+ return userInfo
82
+ end)
77
83
  end
78
84
 
79
85
  --[=[
@@ -86,13 +92,12 @@ end
86
92
  @param userId number
87
93
  @return Promise<string>
88
94
  ]=]
89
- function UserServiceUtils.promiseDisplayName(userId)
95
+ function UserServiceUtils.promiseDisplayName(userId: number): Promise.Promise<string>
90
96
  assert(type(userId) == "number", "Bad userId")
91
97
 
92
- return UserServiceUtils.promiseUserInfo(userId)
93
- :Then(function(userInfo)
94
- return userInfo.DisplayName
95
- end)
98
+ return UserServiceUtils.promiseUserInfo(userId):Then(function(userInfo)
99
+ return userInfo.DisplayName
100
+ end)
96
101
  end
97
102
 
98
103
  --[=[
@@ -105,13 +110,12 @@ end
105
110
  @param userId number
106
111
  @return Promise<string>
107
112
  ]=]
108
- function UserServiceUtils.promiseUserName(userId)
113
+ function UserServiceUtils.promiseUserName(userId: number): Promise.Promise<string>
109
114
  assert(type(userId) == "number", "Bad userId")
110
115
 
111
- return UserServiceUtils.promiseUserInfo(userId)
112
- :Then(function(userInfo)
113
- return userInfo.Username
114
- end)
116
+ return UserServiceUtils.promiseUserInfo(userId):Then(function(userInfo)
117
+ return userInfo.Username
118
+ end)
115
119
  end
116
120
 
117
- return UserServiceUtils
121
+ return UserServiceUtils