@quenty/secrets 7.23.3 → 7.23.4-canary.559.339cfa7.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 +16 -0
- package/package.json +14 -14
- package/src/Client/SecretsServiceClient.lua +14 -10
- package/src/Server/Cmdr/SecretsCommandService.lua +49 -49
- package/src/Server/SecretsService.lua +15 -13
- package/src/Shared/Cmdr/SecretsCmdrTypeUtils.lua +5 -4
- package/src/Shared/SecretsServiceConstants.lua +4 -3
- package/test/scripts/Client/ClientMain.client.lua +0 -1
- package/test/scripts/Server/ServerMain.server.lua +3 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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
|
+
## [7.23.4-canary.559.339cfa7.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/secrets@7.23.3...@quenty/secrets@7.23.4-canary.559.339cfa7.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
|
+
|
|
6
22
|
## [7.23.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/secrets@7.23.2...@quenty/secrets@7.23.3) (2025-04-10)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @quenty/secrets
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/secrets",
|
|
3
|
-
"version": "7.23.
|
|
3
|
+
"version": "7.23.4-canary.559.339cfa7.0",
|
|
4
4
|
"description": "Secrets storage system and API surface",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,21 +25,21 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/cmdrservice": "
|
|
29
|
-
"@quenty/datastore": "
|
|
30
|
-
"@quenty/ellipticcurvecryptography": "
|
|
31
|
-
"@quenty/loader": "
|
|
32
|
-
"@quenty/maid": "
|
|
33
|
-
"@quenty/permissionprovider": "
|
|
34
|
-
"@quenty/promise": "
|
|
35
|
-
"@quenty/remotefunctionutils": "
|
|
36
|
-
"@quenty/remoting": "
|
|
37
|
-
"@quenty/rx": "
|
|
38
|
-
"@quenty/servicebag": "
|
|
39
|
-
"@quenty/table": "
|
|
28
|
+
"@quenty/cmdrservice": "13.22.4-canary.559.339cfa7.0",
|
|
29
|
+
"@quenty/datastore": "13.20.4-canary.559.339cfa7.0",
|
|
30
|
+
"@quenty/ellipticcurvecryptography": "1.6.3-canary.559.339cfa7.0",
|
|
31
|
+
"@quenty/loader": "10.8.4-canary.559.339cfa7.0",
|
|
32
|
+
"@quenty/maid": "3.4.4-canary.559.339cfa7.0",
|
|
33
|
+
"@quenty/permissionprovider": "14.19.4-canary.559.339cfa7.0",
|
|
34
|
+
"@quenty/promise": "10.10.5-canary.559.339cfa7.0",
|
|
35
|
+
"@quenty/remotefunctionutils": "10.10.5-canary.559.339cfa7.0",
|
|
36
|
+
"@quenty/remoting": "12.18.4-canary.559.339cfa7.0",
|
|
37
|
+
"@quenty/rx": "13.17.4-canary.559.339cfa7.0",
|
|
38
|
+
"@quenty/servicebag": "11.11.5-canary.559.339cfa7.0",
|
|
39
|
+
"@quenty/table": "3.7.5-canary.559.339cfa7.0"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
|
42
42
|
"access": "public"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "339cfa778736f08768ed7305041f6221faa35bfc"
|
|
45
45
|
}
|
|
@@ -5,17 +5,17 @@
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
7
|
local Maid = require("Maid")
|
|
8
|
+
local Promise = require("Promise")
|
|
8
9
|
local PromiseGetRemoteFunction = require("PromiseGetRemoteFunction")
|
|
10
|
+
local RemoteFunctionUtils = require("RemoteFunctionUtils")
|
|
9
11
|
local SecretsCmdrTypeUtils = require("SecretsCmdrTypeUtils")
|
|
10
12
|
local SecretsServiceConstants = require("SecretsServiceConstants")
|
|
11
|
-
local
|
|
12
|
-
local Promise = require("Promise")
|
|
13
|
-
local _ServiceBag = require("ServiceBag")
|
|
13
|
+
local ServiceBag = require("ServiceBag")
|
|
14
14
|
|
|
15
15
|
local SecretsServiceClient = {}
|
|
16
16
|
SecretsServiceClient.ServiceName = "SecretsServiceClient"
|
|
17
17
|
|
|
18
|
-
function SecretsServiceClient:Init(serviceBag:
|
|
18
|
+
function SecretsServiceClient:Init(serviceBag: ServiceBag.ServiceBag)
|
|
19
19
|
assert(not self._serviceBag, "Already initialized")
|
|
20
20
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
21
21
|
self._maid = Maid.new()
|
|
@@ -29,12 +29,15 @@ function SecretsServiceClient:Start()
|
|
|
29
29
|
self:_registerCmdrTypes()
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
function SecretsServiceClient:PromiseSecretKeyNamesList()
|
|
32
|
+
function SecretsServiceClient:PromiseSecretKeyNamesList(): Promise.Promise<{ string }>
|
|
33
33
|
return self:_promiseRemoteFunction()
|
|
34
34
|
:Then(function(remoteFunction)
|
|
35
|
-
return self._maid:GivePromise(
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
return self._maid:GivePromise(
|
|
36
|
+
RemoteFunctionUtils.promiseInvokeServer(
|
|
37
|
+
remoteFunction,
|
|
38
|
+
SecretsServiceConstants.REQUEST_SECRET_KEY_NAMES_LIST
|
|
39
|
+
)
|
|
40
|
+
)
|
|
38
41
|
end)
|
|
39
42
|
:Then(function(ok, list)
|
|
40
43
|
if not ok then
|
|
@@ -56,7 +59,8 @@ function SecretsServiceClient:_promiseRemoteFunction()
|
|
|
56
59
|
return self._remoteFunctionPromise
|
|
57
60
|
end
|
|
58
61
|
|
|
59
|
-
self._remoteFunctionPromise =
|
|
62
|
+
self._remoteFunctionPromise =
|
|
63
|
+
self._maid:GivePromise(PromiseGetRemoteFunction(SecretsServiceConstants.REMOTE_FUNCTION_NAME))
|
|
60
64
|
return self._remoteFunctionPromise
|
|
61
65
|
end
|
|
62
66
|
|
|
@@ -64,4 +68,4 @@ function SecretsServiceClient:Destroy()
|
|
|
64
68
|
self._maid:DoCleaning()
|
|
65
69
|
end
|
|
66
70
|
|
|
67
|
-
return SecretsServiceClient
|
|
71
|
+
return SecretsServiceClient
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local SecretsCmdrTypeUtils = require("SecretsCmdrTypeUtils")
|
|
8
7
|
local Maid = require("Maid")
|
|
9
|
-
local
|
|
8
|
+
local SecretsCmdrTypeUtils = require("SecretsCmdrTypeUtils")
|
|
9
|
+
local ServiceBag = require("ServiceBag")
|
|
10
10
|
|
|
11
11
|
local SecretsCommandService = {}
|
|
12
12
|
SecretsCommandService.ServiceName = "SecretsCommandService"
|
|
13
13
|
|
|
14
|
-
function SecretsCommandService:Init(serviceBag:
|
|
14
|
+
function SecretsCommandService:Init(serviceBag: ServiceBag.ServiceBag)
|
|
15
15
|
assert(not self._serviceBag, "Already initialized")
|
|
16
16
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
17
17
|
self._maid = Maid.new()
|
|
@@ -30,11 +30,11 @@ function SecretsCommandService:_registerCommands()
|
|
|
30
30
|
end)
|
|
31
31
|
|
|
32
32
|
self._cmdrService:RegisterCommand({
|
|
33
|
-
Name = "list-all-secret-keys"
|
|
34
|
-
Aliases = {
|
|
35
|
-
Description = "Lists all secret keys available."
|
|
36
|
-
Group = "Secrets"
|
|
37
|
-
Args = {}
|
|
33
|
+
Name = "list-all-secret-keys",
|
|
34
|
+
Aliases = {},
|
|
35
|
+
Description = "Lists all secret keys available.",
|
|
36
|
+
Group = "Secrets",
|
|
37
|
+
Args = {},
|
|
38
38
|
}, function(_context)
|
|
39
39
|
local secrets = self._secretsService:PromiseSecretKeyNamesList():Wait()
|
|
40
40
|
|
|
@@ -47,22 +47,22 @@ function SecretsCommandService:_registerCommands()
|
|
|
47
47
|
end)
|
|
48
48
|
|
|
49
49
|
self._cmdrService:RegisterCommand({
|
|
50
|
-
Name = "store-secret"
|
|
51
|
-
Aliases = {
|
|
52
|
-
Description = "Stores a secret key."
|
|
53
|
-
Group = "Secrets"
|
|
50
|
+
Name = "store-secret",
|
|
51
|
+
Aliases = {},
|
|
52
|
+
Description = "Stores a secret key.",
|
|
53
|
+
Group = "Secrets",
|
|
54
54
|
Args = {
|
|
55
55
|
{
|
|
56
|
-
Name = "SecretKey"
|
|
57
|
-
Type = "secretKey"
|
|
58
|
-
Description = "The key of the secret to store."
|
|
56
|
+
Name = "SecretKey",
|
|
57
|
+
Type = "secretKey",
|
|
58
|
+
Description = "The key of the secret to store.",
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
|
-
Name = "SecretValue"
|
|
62
|
-
Type = "string"
|
|
63
|
-
Description = "The value of the secret to store"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
61
|
+
Name = "SecretValue",
|
|
62
|
+
Type = "string",
|
|
63
|
+
Description = "The value of the secret to store",
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
66
|
}, function(_context, secretKey, secretValue)
|
|
67
67
|
self._secretsService:StoreSecret(secretKey, secretValue)
|
|
68
68
|
|
|
@@ -70,17 +70,17 @@ function SecretsCommandService:_registerCommands()
|
|
|
70
70
|
end)
|
|
71
71
|
|
|
72
72
|
self._cmdrService:RegisterCommand({
|
|
73
|
-
Name = "delete-secret"
|
|
74
|
-
Aliases = {
|
|
75
|
-
Description = "Stores a secret by key."
|
|
76
|
-
Group = "Secrets"
|
|
73
|
+
Name = "delete-secret",
|
|
74
|
+
Aliases = {},
|
|
75
|
+
Description = "Stores a secret by key.",
|
|
76
|
+
Group = "Secrets",
|
|
77
77
|
Args = {
|
|
78
78
|
{
|
|
79
|
-
Name = "SecretKey"
|
|
80
|
-
Type = "requiredSecretKey"
|
|
81
|
-
Description = "The key of the secret to store."
|
|
82
|
-
}
|
|
83
|
-
}
|
|
79
|
+
Name = "SecretKey",
|
|
80
|
+
Type = "requiredSecretKey",
|
|
81
|
+
Description = "The key of the secret to store.",
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
84
|
}, function(_context, secretKey)
|
|
85
85
|
self._secretsService:DeleteSecret(secretKey)
|
|
86
86
|
|
|
@@ -88,17 +88,17 @@ function SecretsCommandService:_registerCommands()
|
|
|
88
88
|
end)
|
|
89
89
|
|
|
90
90
|
self._cmdrService:RegisterCommand({
|
|
91
|
-
Name = "read-secret"
|
|
92
|
-
Aliases = {
|
|
93
|
-
Description = "Reads a secret by key."
|
|
94
|
-
Group = "Secrets"
|
|
91
|
+
Name = "read-secret",
|
|
92
|
+
Aliases = {},
|
|
93
|
+
Description = "Reads a secret by key.",
|
|
94
|
+
Group = "Secrets",
|
|
95
95
|
Args = {
|
|
96
96
|
{
|
|
97
|
-
Name = "SecretKey"
|
|
98
|
-
Type = "requiredSecretKey"
|
|
99
|
-
Description = "The key of the secret to read."
|
|
100
|
-
}
|
|
101
|
-
}
|
|
97
|
+
Name = "SecretKey",
|
|
98
|
+
Type = "requiredSecretKey",
|
|
99
|
+
Description = "The key of the secret to read.",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
102
|
}, function(_context, secretKey)
|
|
103
103
|
local secret = self._secretsService:PromiseSecret(secretKey):Wait()
|
|
104
104
|
|
|
@@ -110,11 +110,11 @@ function SecretsCommandService:_registerCommands()
|
|
|
110
110
|
end)
|
|
111
111
|
|
|
112
112
|
self._cmdrService:RegisterCommand({
|
|
113
|
-
Name = "list-all-secrets"
|
|
114
|
-
Aliases = {
|
|
115
|
-
Description = "Reads all secrets."
|
|
116
|
-
Group = "Secrets"
|
|
117
|
-
Args = {}
|
|
113
|
+
Name = "list-all-secrets",
|
|
114
|
+
Aliases = {},
|
|
115
|
+
Description = "Reads all secrets.",
|
|
116
|
+
Group = "Secrets",
|
|
117
|
+
Args = {},
|
|
118
118
|
}, function(_context)
|
|
119
119
|
local secrets = self._secretsService:PromiseAllSecrets():Wait()
|
|
120
120
|
|
|
@@ -140,11 +140,11 @@ function SecretsCommandService:_registerCommands()
|
|
|
140
140
|
end)
|
|
141
141
|
|
|
142
142
|
self._cmdrService:RegisterCommand({
|
|
143
|
-
Name = "clear-all-secrets"
|
|
144
|
-
Aliases = {
|
|
145
|
-
Description = "Clears all secrets in the store."
|
|
146
|
-
Group = "Secrets"
|
|
147
|
-
Args = {}
|
|
143
|
+
Name = "clear-all-secrets",
|
|
144
|
+
Aliases = {},
|
|
145
|
+
Description = "Clears all secrets in the store.",
|
|
146
|
+
Group = "Secrets",
|
|
147
|
+
Args = {},
|
|
148
148
|
}, function(_context)
|
|
149
149
|
self._secretsService:ClearAllSecrets()
|
|
150
150
|
|
|
@@ -156,4 +156,4 @@ function SecretsCommandService:Destroy()
|
|
|
156
156
|
self._maid:DoCleaning()
|
|
157
157
|
end
|
|
158
158
|
|
|
159
|
-
return SecretsCommandService
|
|
159
|
+
return SecretsCommandService
|
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local
|
|
8
|
-
local SecretsServiceConstants = require("SecretsServiceConstants")
|
|
7
|
+
local EllipticCurveCryptography = require("EllipticCurveCryptography")
|
|
9
8
|
local GetRemoteFunction = require("GetRemoteFunction")
|
|
10
|
-
local
|
|
9
|
+
local Maid = require("Maid")
|
|
11
10
|
local Observable = require("Observable")
|
|
12
|
-
local
|
|
13
|
-
local
|
|
11
|
+
local Promise = require("Promise")
|
|
12
|
+
local SecretsServiceConstants = require("SecretsServiceConstants")
|
|
13
|
+
local ServiceBag = require("ServiceBag")
|
|
14
14
|
|
|
15
15
|
local SecretsService = {}
|
|
16
16
|
SecretsService.ServiceName = "SecretsService"
|
|
17
17
|
|
|
18
|
-
function SecretsService:Init(serviceBag:
|
|
18
|
+
function SecretsService:Init(serviceBag: ServiceBag.ServiceBag)
|
|
19
19
|
assert(not self._serviceBag, "Already initialized")
|
|
20
20
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
21
21
|
self._maid = Maid.new()
|
|
@@ -40,7 +40,7 @@ end
|
|
|
40
40
|
|
|
41
41
|
@param seed number
|
|
42
42
|
]=]
|
|
43
|
-
function SecretsService:SetPublicKeySeed(seed: number)
|
|
43
|
+
function SecretsService:SetPublicKeySeed(seed: number): ()
|
|
44
44
|
assert(type(seed) == "number", "Bad seed")
|
|
45
45
|
|
|
46
46
|
local private, public = EllipticCurveCryptography.keypair(seed or EllipticCurveCryptography.random.random())
|
|
@@ -65,7 +65,7 @@ end
|
|
|
65
65
|
@param secretKey string
|
|
66
66
|
@return Promise<string>
|
|
67
67
|
]=]
|
|
68
|
-
function SecretsService:PromiseSecret(secretKey: string)
|
|
68
|
+
function SecretsService:PromiseSecret(secretKey: string): Promise.Promise<string>
|
|
69
69
|
assert(type(secretKey) == "string", "Bad secretKey")
|
|
70
70
|
|
|
71
71
|
return self:_promiseSubstore():Then(function(substore)
|
|
@@ -164,7 +164,7 @@ end
|
|
|
164
164
|
@param secretKey string
|
|
165
165
|
@param value string
|
|
166
166
|
]=]
|
|
167
|
-
function SecretsService:StoreSecret(secretKey: string, value: string)
|
|
167
|
+
function SecretsService:StoreSecret(secretKey: string, value: string): ()
|
|
168
168
|
assert(type(secretKey) == "string", "Bad secretKey")
|
|
169
169
|
assert(type(value) == "string", "Bad value")
|
|
170
170
|
|
|
@@ -206,7 +206,7 @@ function SecretsService:PromiseSecretKeyNamesList(): Promise.Promise<{ string }>
|
|
|
206
206
|
end)
|
|
207
207
|
end
|
|
208
208
|
|
|
209
|
-
function SecretsService:_warnAboutNoPublicKeyStoredInSourceCode()
|
|
209
|
+
function SecretsService:_warnAboutNoPublicKeyStoredInSourceCode(): ()
|
|
210
210
|
if self._warningRequired then
|
|
211
211
|
self._warningRequired = false
|
|
212
212
|
warn(self:_getInstructions())
|
|
@@ -257,7 +257,8 @@ function SecretsService:_handleServerInvoke(player, request)
|
|
|
257
257
|
end
|
|
258
258
|
|
|
259
259
|
function SecretsService:_promiseHandleList(player)
|
|
260
|
-
return self._permissionsService
|
|
260
|
+
return self._permissionsService
|
|
261
|
+
:PromisePermissionProvider()
|
|
261
262
|
:Then(function(provider)
|
|
262
263
|
return provider:PromiseIsAdmin(player)
|
|
263
264
|
end)
|
|
@@ -275,7 +276,8 @@ function SecretsService:_promiseSubstore()
|
|
|
275
276
|
return self._substorePromise
|
|
276
277
|
end
|
|
277
278
|
|
|
278
|
-
self._substorePromise = self._maid
|
|
279
|
+
self._substorePromise = self._maid
|
|
280
|
+
:GivePromise(self._gameDataStoreService:PromiseDataStore())
|
|
279
281
|
:Then(function(dataStore)
|
|
280
282
|
return dataStore:GetSubStore("secrets")
|
|
281
283
|
end)
|
|
@@ -287,4 +289,4 @@ function SecretsService:Destroy()
|
|
|
287
289
|
self._maid:DoCleaning()
|
|
288
290
|
end
|
|
289
291
|
|
|
290
|
-
return SecretsService
|
|
292
|
+
return SecretsService
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
--!strict
|
|
1
2
|
--[=[
|
|
2
3
|
@class SecretsCmdrTypeUtils
|
|
3
4
|
]=]
|
|
@@ -17,7 +18,7 @@ end
|
|
|
17
18
|
function SecretsCmdrTypeUtils.makeSecretKeyType(cmdr, secretsService, isRequired)
|
|
18
19
|
return {
|
|
19
20
|
Transform = function(text)
|
|
20
|
-
|
|
21
|
+
local secretNames = secretsService:PromiseSecretKeyNamesList():Wait()
|
|
21
22
|
local list
|
|
22
23
|
if not isRequired then
|
|
23
24
|
list = table.clone(secretNames)
|
|
@@ -28,7 +29,7 @@ function SecretsCmdrTypeUtils.makeSecretKeyType(cmdr, secretsService, isRequired
|
|
|
28
29
|
|
|
29
30
|
local find = cmdr.Util.MakeFuzzyFinder(list)
|
|
30
31
|
return find(text)
|
|
31
|
-
end
|
|
32
|
+
end,
|
|
32
33
|
Validate = function(keys)
|
|
33
34
|
return #keys > 0, "No secret exists with key."
|
|
34
35
|
end,
|
|
@@ -37,8 +38,8 @@ function SecretsCmdrTypeUtils.makeSecretKeyType(cmdr, secretsService, isRequired
|
|
|
37
38
|
end,
|
|
38
39
|
Parse = function(keys)
|
|
39
40
|
return keys[1]
|
|
40
|
-
end
|
|
41
|
+
end,
|
|
41
42
|
}
|
|
42
43
|
end
|
|
43
44
|
|
|
44
|
-
return SecretsCmdrTypeUtils
|
|
45
|
+
return SecretsCmdrTypeUtils
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
--!strict
|
|
1
2
|
--[=[
|
|
2
3
|
@class SecretsServiceConstants
|
|
3
4
|
]=]
|
|
@@ -7,6 +8,6 @@ local require = require(script.Parent.loader).load(script)
|
|
|
7
8
|
local Table = require("Table")
|
|
8
9
|
|
|
9
10
|
return Table.readonly({
|
|
10
|
-
REMOTE_FUNCTION_NAME = "SecretsServiceRemoteFunction"
|
|
11
|
-
REQUEST_SECRET_KEY_NAMES_LIST = "requestSecretKeyNamesList"
|
|
12
|
-
})
|
|
11
|
+
REMOTE_FUNCTION_NAME = "SecretsServiceRemoteFunction",
|
|
12
|
+
REQUEST_SECRET_KEY_NAMES_LIST = "requestSecretKeyNamesList",
|
|
13
|
+
})
|
|
@@ -15,7 +15,6 @@ serviceBag:Start()
|
|
|
15
15
|
serviceBag:GetService(require("SecretsService")):SetPublicKeySeed(1523523523)
|
|
16
16
|
serviceBag:GetService(require("SecretsService")):StoreSecret("test", "36dfda27-1ba4-42f3-92ff-79262fc7a6e6")
|
|
17
17
|
|
|
18
|
-
serviceBag:GetService(require("SecretsService")):PromiseSecret("test")
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
end)
|
|
18
|
+
serviceBag:GetService(require("SecretsService")):PromiseSecret("test"):Then(function(value)
|
|
19
|
+
print("Got secret", value)
|
|
20
|
+
end)
|