@quenty/tie 10.20.4-canary.559.9f38947.0 → 10.21.0-canary.0a5db80.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 +2 -10
- package/package.json +19 -19
- package/src/Shared/Members/Methods/TieMethodDefinition.lua +1 -1
- package/src/Shared/Members/Methods/TieMethodImplementation.lua +2 -1
- package/src/Shared/Members/Methods/TieMethodInterfaceUtils.lua +7 -17
- package/src/Shared/Members/Properties/TiePropertyDefinition.lua +4 -4
- package/src/Shared/Members/Properties/TiePropertyImplementation.lua +5 -5
- package/src/Shared/Members/Properties/TiePropertyImplementationUtils.lua +1 -1
- package/src/Shared/Members/Properties/TiePropertyInterface.lua +18 -40
- package/src/Shared/Members/Signals/TieSignalConnection.lua +1 -1
- package/src/Shared/Members/Signals/TieSignalDefinition.lua +2 -2
- package/src/Shared/Members/Signals/TieSignalImplementation.lua +2 -2
- package/src/Shared/Members/Signals/TieSignalInterface.lua +8 -10
- package/src/Shared/Members/TieMemberDefinition.lua +1 -1
- package/src/Shared/Members/TieMemberInterface.lua +10 -9
- package/src/Shared/Realms/TieRealmUtils.lua +1 -1
- package/src/Shared/Services/TieRealmService.lua +2 -2
- package/src/Shared/TieDefinition.lua +1 -1
- package/src/Shared/TieImplementation.lua +2 -7
- package/src/Shared/TieInterface.lua +4 -11
- package/src/Shared/Utils/TieUtils.lua +7 -8
- package/test/modules/Server/Action/Action.lua +1 -1
- package/test/scripts/Client/ClientMain.client.lua +1 -1
- package/test/scripts/Server/ServerMain.server.lua +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,20 +3,12 @@
|
|
|
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
|
-
|
|
6
|
+
# [10.21.0-canary.0a5db80.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tie@10.20.2...@quenty/tie@10.21.0-canary.0a5db80.0) (2025-05-10)
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
### Bug Fixes
|
|
10
10
|
|
|
11
|
-
* Additional type checking updates ([
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## [10.20.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tie@10.20.2...@quenty/tie@10.20.3) (2025-04-10)
|
|
18
|
-
|
|
19
|
-
**Note:** Version bump only for package @quenty/tie
|
|
11
|
+
* Additional type checking updates ([7e008c5](https://github.com/Quenty/NevermoreEngine/commit/7e008c58547bd00b5904e56541454a38c8d72ccc))
|
|
20
12
|
|
|
21
13
|
|
|
22
14
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/tie",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.21.0-canary.0a5db80.0",
|
|
4
4
|
"description": "Tie allows interfaces to be defined between Lua OOP and Roblox objects.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -28,29 +28,29 @@
|
|
|
28
28
|
"Quenty"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@quenty/attributeutils": "14.
|
|
32
|
-
"@quenty/baseobject": "10.
|
|
33
|
-
"@quenty/brio": "14.
|
|
34
|
-
"@quenty/collectionserviceutils": "8.
|
|
35
|
-
"@quenty/instanceutils": "13.
|
|
36
|
-
"@quenty/loader": "10.
|
|
37
|
-
"@quenty/maid": "3.
|
|
38
|
-
"@quenty/rx": "13.
|
|
39
|
-
"@quenty/rxsignal": "7.
|
|
40
|
-
"@quenty/statestack": "14.
|
|
31
|
+
"@quenty/attributeutils": "14.18.0-canary.0a5db80.0",
|
|
32
|
+
"@quenty/baseobject": "10.9.0-canary.0a5db80.0",
|
|
33
|
+
"@quenty/brio": "14.18.0-canary.0a5db80.0",
|
|
34
|
+
"@quenty/collectionserviceutils": "8.18.0-canary.0a5db80.0",
|
|
35
|
+
"@quenty/instanceutils": "13.18.0-canary.0a5db80.0",
|
|
36
|
+
"@quenty/loader": "10.9.0-canary.0a5db80.0",
|
|
37
|
+
"@quenty/maid": "3.5.0-canary.0a5db80.0",
|
|
38
|
+
"@quenty/rx": "13.18.0-canary.0a5db80.0",
|
|
39
|
+
"@quenty/rxsignal": "7.18.0-canary.0a5db80.0",
|
|
40
|
+
"@quenty/statestack": "14.19.0-canary.0a5db80.0",
|
|
41
41
|
"@quenty/string": "3.3.3",
|
|
42
|
-
"@quenty/symbol": "3.4.
|
|
43
|
-
"@quenty/table": "3.
|
|
44
|
-
"@quenty/tuple": "1.
|
|
45
|
-
"@quenty/valuebaseutils": "13.
|
|
46
|
-
"@quenty/valueobject": "13.
|
|
42
|
+
"@quenty/symbol": "3.4.2",
|
|
43
|
+
"@quenty/table": "3.8.0-canary.0a5db80.0",
|
|
44
|
+
"@quenty/tuple": "1.6.0-canary.0a5db80.0",
|
|
45
|
+
"@quenty/valuebaseutils": "13.18.0-canary.0a5db80.0",
|
|
46
|
+
"@quenty/valueobject": "13.18.0-canary.0a5db80.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@quenty/promise": "10.
|
|
50
|
-
"@quenty/signal": "7.
|
|
49
|
+
"@quenty/promise": "10.11.0-canary.0a5db80.0",
|
|
50
|
+
"@quenty/signal": "7.11.0-canary.0a5db80.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "0a5db8004684dc3e76fd5944599a22602d48cfa9"
|
|
56
56
|
}
|
|
@@ -10,28 +10,18 @@ local TieUtils = require("TieUtils")
|
|
|
10
10
|
|
|
11
11
|
local TieMethodInterfaceUtils = {}
|
|
12
12
|
|
|
13
|
-
function TieMethodInterfaceUtils.get(
|
|
14
|
-
aliasSelf,
|
|
15
|
-
tieMethodDefinition,
|
|
16
|
-
implParent: Instance?,
|
|
17
|
-
adornee: Instance?,
|
|
18
|
-
interfaceTieRealm: TieRealms.TieRealm
|
|
19
|
-
)
|
|
13
|
+
function TieMethodInterfaceUtils.get(aliasSelf, tieMethodDefinition, implParent: Instance?, adornee: Instance?, interfaceTieRealm: TieRealms.TieRealm)
|
|
20
14
|
assert(TieRealmUtils.isTieRealm(interfaceTieRealm), "Bad interfaceTieRealm")
|
|
21
15
|
|
|
22
16
|
local tieDefinition = tieMethodDefinition:GetTieDefinition()
|
|
23
17
|
|
|
24
18
|
return function(firstArg, ...)
|
|
25
19
|
if firstArg ~= aliasSelf then
|
|
26
|
-
error(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
tieDefinition:GetName(),
|
|
32
|
-
tieMethodDefinition:GetMemberName()
|
|
33
|
-
)
|
|
34
|
-
)
|
|
20
|
+
error(string.format("Must call methods with self as first parameter (Hint use `%s:%s()` instead of `%s.%s()`)",
|
|
21
|
+
tieDefinition:GetName(),
|
|
22
|
+
tieMethodDefinition:GetMemberName(),
|
|
23
|
+
tieDefinition:GetName(),
|
|
24
|
+
tieMethodDefinition:GetMemberName()))
|
|
35
25
|
end
|
|
36
26
|
|
|
37
27
|
if implParent and adornee then
|
|
@@ -78,4 +68,4 @@ function TieMethodInterfaceUtils.get(
|
|
|
78
68
|
end
|
|
79
69
|
end
|
|
80
70
|
|
|
81
|
-
return TieMethodInterfaceUtils
|
|
71
|
+
return TieMethodInterfaceUtils
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local TieMemberDefinition = require("TieMemberDefinition")
|
|
8
7
|
local TiePropertyImplementation = require("TiePropertyImplementation")
|
|
9
8
|
local TiePropertyInterface = require("TiePropertyInterface")
|
|
9
|
+
local TieMemberDefinition = require("TieMemberDefinition")
|
|
10
10
|
local TieRealmUtils = require("TieRealmUtils")
|
|
11
11
|
|
|
12
12
|
local TiePropertyDefinition = setmetatable({}, TieMemberDefinition)
|
|
@@ -16,8 +16,7 @@ TiePropertyDefinition.__index = TiePropertyDefinition
|
|
|
16
16
|
function TiePropertyDefinition.new(tieDefinition, propertyName: string, defaultValue: any, memberTieRealm)
|
|
17
17
|
assert(TieRealmUtils.isTieRealm(memberTieRealm), "Bad memberTieRealm")
|
|
18
18
|
|
|
19
|
-
local self =
|
|
20
|
-
setmetatable(TieMemberDefinition.new(tieDefinition, propertyName, memberTieRealm), TiePropertyDefinition)
|
|
19
|
+
local self = setmetatable(TieMemberDefinition.new(tieDefinition, propertyName, memberTieRealm), TiePropertyDefinition)
|
|
21
20
|
|
|
22
21
|
self._defaultValue = defaultValue
|
|
23
22
|
|
|
@@ -55,4 +54,5 @@ function TiePropertyDefinition:GetInterface(implParent: Instance, _actualSelf, t
|
|
|
55
54
|
return TiePropertyInterface.new(implParent, nil, self, tieRealm)
|
|
56
55
|
end
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
|
|
58
|
+
return TiePropertyDefinition
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local AttributeUtils = require("AttributeUtils")
|
|
8
|
-
local AttributeValue = require("AttributeValue")
|
|
9
7
|
local BaseObject = require("BaseObject")
|
|
10
|
-
local Maid = require("Maid")
|
|
11
|
-
local TiePropertyImplementationUtils = require("TiePropertyImplementationUtils")
|
|
12
8
|
local TieUtils = require("TieUtils")
|
|
9
|
+
local Maid = require("Maid")
|
|
13
10
|
local ValueBaseUtils = require("ValueBaseUtils")
|
|
11
|
+
local TiePropertyImplementationUtils = require("TiePropertyImplementationUtils")
|
|
12
|
+
local AttributeUtils = require("AttributeUtils")
|
|
13
|
+
local AttributeValue = require("AttributeValue")
|
|
14
14
|
local ValueObject = require("ValueObject")
|
|
15
15
|
|
|
16
16
|
local TiePropertyImplementation = setmetatable({}, BaseObject)
|
|
@@ -138,4 +138,4 @@ function TiePropertyImplementation:_syncMember(maid, copy, implementation)
|
|
|
138
138
|
end))
|
|
139
139
|
end
|
|
140
140
|
|
|
141
|
-
return TiePropertyImplementation
|
|
141
|
+
return TiePropertyImplementation
|
|
@@ -26,10 +26,7 @@ TiePropertyInterface.ClassName = "TiePropertyInterface"
|
|
|
26
26
|
TiePropertyInterface.__index = TiePropertyInterface
|
|
27
27
|
|
|
28
28
|
function TiePropertyInterface.new(implParent, adornee: Instance, memberDefinition, interfaceTieRealm)
|
|
29
|
-
local self = setmetatable(
|
|
30
|
-
TieMemberInterface.new(implParent, adornee, memberDefinition, interfaceTieRealm),
|
|
31
|
-
TiePropertyInterface
|
|
32
|
-
)
|
|
29
|
+
local self = setmetatable(TieMemberInterface.new(implParent, adornee, memberDefinition, interfaceTieRealm), TiePropertyInterface)
|
|
33
30
|
|
|
34
31
|
return self
|
|
35
32
|
end
|
|
@@ -43,7 +40,7 @@ function TiePropertyInterface:ObserveBrio(predicate)
|
|
|
43
40
|
-- TODO: Maybe don't assumet his exists and use a helper method instead.
|
|
44
41
|
return valueBase:ObserveBrio(predicate)
|
|
45
42
|
end
|
|
46
|
-
end)
|
|
43
|
+
end);
|
|
47
44
|
})
|
|
48
45
|
end
|
|
49
46
|
|
|
@@ -80,8 +77,8 @@ function TiePropertyInterface:Observe()
|
|
|
80
77
|
|
|
81
78
|
return maid
|
|
82
79
|
end)
|
|
83
|
-
end)
|
|
84
|
-
Rx.distinct()
|
|
80
|
+
end);
|
|
81
|
+
Rx.distinct();
|
|
85
82
|
})
|
|
86
83
|
end
|
|
87
84
|
|
|
@@ -109,13 +106,9 @@ end
|
|
|
109
106
|
function TiePropertyInterface:_getValueBaseOrError()
|
|
110
107
|
local valueBase = self:_findValueBase()
|
|
111
108
|
if not valueBase then
|
|
112
|
-
error(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
self._memberDefinition:GetFriendlyName(),
|
|
116
|
-
self:_getFullName()
|
|
117
|
-
)
|
|
118
|
-
)
|
|
109
|
+
error(string.format("%s.%s is not implemented for %s",
|
|
110
|
+
self._memberDefinition:GetFriendlyName(),
|
|
111
|
+
self:_getFullName()))
|
|
119
112
|
end
|
|
120
113
|
return valueBase
|
|
121
114
|
end
|
|
@@ -132,13 +125,13 @@ end
|
|
|
132
125
|
|
|
133
126
|
function TiePropertyInterface:_getChangedEvent()
|
|
134
127
|
return RxSignal.new(self:Observe():Pipe({
|
|
135
|
-
Rx.skip(1)
|
|
128
|
+
Rx.skip(1)
|
|
136
129
|
}))
|
|
137
130
|
end
|
|
138
131
|
|
|
139
132
|
local IMPLEMENTATION_TYPES = {
|
|
140
|
-
attribute = "attribute"
|
|
141
|
-
none = "none"
|
|
133
|
+
attribute = "attribute";
|
|
134
|
+
none = "none";
|
|
142
135
|
}
|
|
143
136
|
|
|
144
137
|
function TiePropertyInterface:_observeFromImplParent(implParent)
|
|
@@ -231,8 +224,8 @@ function TiePropertyInterface:_observeValueBaseBrio()
|
|
|
231
224
|
return self:ObserveImplParentBrio():Pipe({
|
|
232
225
|
RxBrioUtils.switchMapBrio(function(implParent)
|
|
233
226
|
return self:_observeFromImplParent(implParent)
|
|
234
|
-
end)
|
|
235
|
-
RxBrioUtils.onlyLastBrioSurvives()
|
|
227
|
+
end);
|
|
228
|
+
RxBrioUtils.onlyLastBrioSurvives();
|
|
236
229
|
})
|
|
237
230
|
end
|
|
238
231
|
|
|
@@ -252,12 +245,7 @@ function TiePropertyInterface:__index(index)
|
|
|
252
245
|
return valueBase.Value
|
|
253
246
|
elseif index == "Changed" then
|
|
254
247
|
return self:_getChangedEvent()
|
|
255
|
-
elseif
|
|
256
|
-
index == "_adornee"
|
|
257
|
-
or index == "_implParent"
|
|
258
|
-
or index == "_memberDefinition"
|
|
259
|
-
or index == "_tieDefinition"
|
|
260
|
-
then
|
|
248
|
+
elseif index == "_adornee" or index == "_implParent" or index == "_memberDefinition" or index == "_tieDefinition" then
|
|
261
249
|
return rawget(self, index)
|
|
262
250
|
else
|
|
263
251
|
error(string.format("Bad index %q for TiePropertyInterface", tostring(index)))
|
|
@@ -270,12 +258,7 @@ function TiePropertyInterface:__newindex(index, value)
|
|
|
270
258
|
elseif index == "Value" then
|
|
271
259
|
local className = ValueBaseUtils.getClassNameFromType(typeof(value))
|
|
272
260
|
if not className then
|
|
273
|
-
error(
|
|
274
|
-
string.format(
|
|
275
|
-
"[TiePropertyImplementation] - Bad implementation value type %q, cannot set",
|
|
276
|
-
typeof(value)
|
|
277
|
-
)
|
|
278
|
-
)
|
|
261
|
+
error(string.format("[TiePropertyImplementation] - Bad implementation value type %q, cannot set", typeof(value)))
|
|
279
262
|
end
|
|
280
263
|
|
|
281
264
|
local valueBase = self:_findValueBase()
|
|
@@ -296,17 +279,11 @@ function TiePropertyInterface:__newindex(index, value)
|
|
|
296
279
|
else
|
|
297
280
|
local implParent = self:GetImplParent()
|
|
298
281
|
if implParent then
|
|
299
|
-
local copy =
|
|
300
|
-
TiePropertyImplementationUtils.changeToClassIfNeeded(self._memberDefinition, implParent, className)
|
|
282
|
+
local copy = TiePropertyImplementationUtils.changeToClassIfNeeded(self._memberDefinition, implParent, className)
|
|
301
283
|
copy.Value = value
|
|
302
284
|
copy.Parent = implParent
|
|
303
285
|
else
|
|
304
|
-
error(
|
|
305
|
-
string.format(
|
|
306
|
-
"[TiePropertyImplementation] - No implParent for %q",
|
|
307
|
-
self._memberDefinition:GetMemberName()
|
|
308
|
-
)
|
|
309
|
-
)
|
|
286
|
+
error(string.format("[TiePropertyImplementation] - No implParent for %q", self._memberDefinition:GetMemberName()))
|
|
310
287
|
end
|
|
311
288
|
end
|
|
312
289
|
elseif index == "Changed" then
|
|
@@ -316,4 +293,5 @@ function TiePropertyInterface:__newindex(index, value)
|
|
|
316
293
|
end
|
|
317
294
|
end
|
|
318
295
|
|
|
319
|
-
|
|
296
|
+
|
|
297
|
+
return TiePropertyInterface
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
7
|
local TieMemberDefinition = require("TieMemberDefinition")
|
|
8
|
-
local TieRealmUtils = require("TieRealmUtils")
|
|
9
8
|
local TieSignalImplementation = require("TieSignalImplementation")
|
|
10
9
|
local TieSignalInterface = require("TieSignalInterface")
|
|
10
|
+
local TieRealmUtils = require("TieRealmUtils")
|
|
11
11
|
|
|
12
12
|
local TieSignalDefinition = setmetatable({}, TieMemberDefinition)
|
|
13
13
|
TieSignalDefinition.ClassName = "TieSignalDefinition"
|
|
@@ -35,4 +35,4 @@ function TieSignalDefinition:GetInterface(implParent: Instance, _actualSelf, tie
|
|
|
35
35
|
return TieSignalInterface.new(implParent, nil, self, tieRealm)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
return TieSignalDefinition
|
|
38
|
+
return TieSignalDefinition
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
7
|
local BaseObject = require("BaseObject")
|
|
8
|
-
local Maid = require("Maid")
|
|
9
8
|
local TieUtils = require("TieUtils")
|
|
9
|
+
local Maid = require("Maid")
|
|
10
10
|
local Tuple = require("Tuple")
|
|
11
11
|
|
|
12
12
|
local TieSignalImplementation = setmetatable({}, BaseObject)
|
|
@@ -69,4 +69,4 @@ function TieSignalImplementation:SetImplementation(signal)
|
|
|
69
69
|
self._maid._implementationMaid = maid
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
return TieSignalImplementation
|
|
72
|
+
return TieSignalImplementation
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
local require = require(script.Parent.loader).load(script)
|
|
8
8
|
|
|
9
|
-
local RxBrioUtils = require("RxBrioUtils")
|
|
10
|
-
local RxInstanceUtils = require("RxInstanceUtils")
|
|
11
9
|
local TieMemberInterface = require("TieMemberInterface")
|
|
12
|
-
local TieRealmUtils = require("TieRealmUtils")
|
|
13
10
|
local TieSignalConnection = require("TieSignalConnection")
|
|
14
11
|
local TieUtils = require("TieUtils")
|
|
12
|
+
local RxBrioUtils = require("RxBrioUtils")
|
|
13
|
+
local RxInstanceUtils = require("RxInstanceUtils")
|
|
14
|
+
local TieRealmUtils = require("TieRealmUtils")
|
|
15
15
|
|
|
16
16
|
local TieSignalInterface = setmetatable({}, TieMemberInterface)
|
|
17
17
|
TieSignalInterface.ClassName = "TieSignalInterface"
|
|
@@ -20,10 +20,7 @@ TieSignalInterface.__index = TieSignalInterface
|
|
|
20
20
|
function TieSignalInterface.new(implParent: Instance, adornee: Instance, memberDefinition, interfaceTieRealm)
|
|
21
21
|
assert(TieRealmUtils.isTieRealm(interfaceTieRealm), "Bad interfaceTieRealm")
|
|
22
22
|
|
|
23
|
-
local self = setmetatable(
|
|
24
|
-
TieMemberInterface.new(implParent, adornee, memberDefinition, interfaceTieRealm),
|
|
25
|
-
TieSignalInterface
|
|
26
|
-
)
|
|
23
|
+
local self = setmetatable(TieMemberInterface.new(implParent, adornee, memberDefinition, interfaceTieRealm), TieSignalInterface)
|
|
27
24
|
|
|
28
25
|
return self
|
|
29
26
|
end
|
|
@@ -70,9 +67,10 @@ function TieSignalInterface:ObserveBindableEventBrio()
|
|
|
70
67
|
return self:ObserveImplParentBrio():Pipe({
|
|
71
68
|
RxBrioUtils.switchMapBrio(function(implParent)
|
|
72
69
|
return RxInstanceUtils.observeLastNamedChildBrio(implParent, "BindableEvent", name)
|
|
73
|
-
end)
|
|
74
|
-
RxBrioUtils.onlyLastBrioSurvives()
|
|
70
|
+
end);
|
|
71
|
+
RxBrioUtils.onlyLastBrioSurvives();
|
|
75
72
|
})
|
|
73
|
+
|
|
76
74
|
end
|
|
77
75
|
|
|
78
76
|
function TieSignalInterface:_getBindableEvent()
|
|
@@ -89,4 +87,4 @@ function TieSignalInterface:_getBindableEvent()
|
|
|
89
87
|
end
|
|
90
88
|
end
|
|
91
89
|
|
|
92
|
-
return TieSignalInterface
|
|
90
|
+
return TieSignalInterface
|
|
@@ -63,19 +63,20 @@ function TieMemberInterface:ObserveImplParentBrio()
|
|
|
63
63
|
|
|
64
64
|
if self._implParent and self._adornee then
|
|
65
65
|
return Rx.combineLatest({
|
|
66
|
-
Parent = RxInstanceUtils.observeProperty(self._implParent, "Parent")
|
|
67
|
-
Name = RxInstanceUtils.observeProperty(self._implParent, "Name")
|
|
68
|
-
})
|
|
66
|
+
Parent = RxInstanceUtils.observeProperty(self._implParent, "Parent");
|
|
67
|
+
Name = RxInstanceUtils.observeProperty(self._implParent, "Name");
|
|
68
|
+
})
|
|
69
|
+
:Pipe({
|
|
69
70
|
Rx.map(function(state)
|
|
70
71
|
if validContainerNameSet[state.Name] and state.Parent == self._adornee then
|
|
71
72
|
return self._implParent
|
|
72
73
|
else
|
|
73
74
|
return nil
|
|
74
75
|
end
|
|
75
|
-
end)
|
|
76
|
-
Rx.distinct()
|
|
77
|
-
RxBrioUtils.toBrio()
|
|
78
|
-
RxBrioUtils.onlyLastBrioSurvives()
|
|
76
|
+
end);
|
|
77
|
+
Rx.distinct();
|
|
78
|
+
RxBrioUtils.toBrio();
|
|
79
|
+
RxBrioUtils.onlyLastBrioSurvives();
|
|
79
80
|
})
|
|
80
81
|
elseif self._implParent then
|
|
81
82
|
return RxInstanceUtils.observePropertyBrio(self._implParent, "Name", function(name)
|
|
@@ -83,7 +84,7 @@ function TieMemberInterface:ObserveImplParentBrio()
|
|
|
83
84
|
end):Pipe({
|
|
84
85
|
RxBrioUtils.map(function()
|
|
85
86
|
return self._implParent
|
|
86
|
-
end)
|
|
87
|
+
end);
|
|
87
88
|
})
|
|
88
89
|
elseif self._adornee then
|
|
89
90
|
return self._tieDefinition:ObserveValidContainerChildrenBrio(self._adornee, self._interfaceTieRealm)
|
|
@@ -92,4 +93,4 @@ function TieMemberInterface:ObserveImplParentBrio()
|
|
|
92
93
|
end
|
|
93
94
|
end
|
|
94
95
|
|
|
95
|
-
return TieMemberInterface
|
|
96
|
+
return TieMemberInterface
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
local require = require(script.Parent.loader).load(script)
|
|
7
7
|
|
|
8
|
-
local ServiceBag = require("ServiceBag")
|
|
9
8
|
local TieRealmUtils = require("TieRealmUtils")
|
|
9
|
+
local ServiceBag = require("ServiceBag")
|
|
10
10
|
local TieRealms = require("TieRealms")
|
|
11
11
|
|
|
12
12
|
local TieRealmService = {}
|
|
@@ -45,4 +45,4 @@ function TieRealmService.GetTieRealm(self: TieRealmService): TieRealms.TieRealm
|
|
|
45
45
|
return self._tieRealm
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
return TieRealmService
|
|
48
|
+
return TieRealmService
|
|
@@ -59,8 +59,8 @@ local TieImplementation = require("TieImplementation")
|
|
|
59
59
|
local TieInterface = require("TieInterface")
|
|
60
60
|
local TieMethodDefinition = require("TieMethodDefinition")
|
|
61
61
|
local TiePropertyDefinition = require("TiePropertyDefinition")
|
|
62
|
-
local TieRealmUtils = require("TieRealmUtils")
|
|
63
62
|
local TieRealms = require("TieRealms")
|
|
63
|
+
local TieRealmUtils = require("TieRealmUtils")
|
|
64
64
|
local TieSignalDefinition = require("TieSignalDefinition")
|
|
65
65
|
local ValueObject = require("ValueObject")
|
|
66
66
|
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
local require = require(script.Parent.loader).load(script)
|
|
10
10
|
|
|
11
11
|
local BaseObject = require("BaseObject")
|
|
12
|
-
local String = require("String")
|
|
13
12
|
local TieRealmUtils = require("TieRealmUtils")
|
|
14
13
|
local TieRealms = require("TieRealms")
|
|
14
|
+
local String = require("String")
|
|
15
15
|
|
|
16
16
|
local TieImplementation = setmetatable({}, BaseObject)
|
|
17
17
|
TieImplementation.ClassName = "TieImplementation"
|
|
@@ -25,12 +25,7 @@ TieImplementation.__index = TieImplementation
|
|
|
25
25
|
@param implementer table
|
|
26
26
|
@param implementationTieRealm TieRealm
|
|
27
27
|
]=]
|
|
28
|
-
function TieImplementation.new(
|
|
29
|
-
tieDefinition,
|
|
30
|
-
adornee: Instance,
|
|
31
|
-
implementer,
|
|
32
|
-
implementationTieRealm: TieRealms.TieRealm
|
|
33
|
-
)
|
|
28
|
+
function TieImplementation.new(tieDefinition, adornee: Instance, implementer, implementationTieRealm: TieRealms.TieRealm)
|
|
34
29
|
assert(TieRealmUtils.isTieRealm(implementationTieRealm), "Bad implementationTieRealm")
|
|
35
30
|
|
|
36
31
|
local self = setmetatable(BaseObject.new(), TieImplementation)
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
local require = require(script.Parent.loader).load(script)
|
|
8
8
|
|
|
9
|
-
local TieMethodInterfaceUtils = require("TieMethodInterfaceUtils")
|
|
10
|
-
local TiePropertyInterface = require("TiePropertyInterface")
|
|
11
9
|
local TieSignalInterface = require("TieSignalInterface")
|
|
10
|
+
local TiePropertyInterface = require("TiePropertyInterface")
|
|
11
|
+
local TieMethodInterfaceUtils = require("TieMethodInterfaceUtils")
|
|
12
12
|
|
|
13
13
|
local TieInterface = {}
|
|
14
14
|
TieInterface.ClassName = "TieInterface"
|
|
@@ -117,14 +117,7 @@ function TieInterface:__index(index)
|
|
|
117
117
|
error(string.format("Unknown member definition %q", tostring(member.ClassName)))
|
|
118
118
|
end
|
|
119
119
|
else
|
|
120
|
-
error(
|
|
121
|
-
string.format(
|
|
122
|
-
"[TieInterface] - %s is not allowed in realm '%s'. Specify realm to %s.",
|
|
123
|
-
member:GetFriendlyName(),
|
|
124
|
-
interfaceTieRealm,
|
|
125
|
-
member:GetMemberTieRealm()
|
|
126
|
-
)
|
|
127
|
-
)
|
|
120
|
+
error(string.format("[TieInterface] - %s is not allowed in realm '%s'. Specify realm to %s.", member:GetFriendlyName(), interfaceTieRealm, member:GetMemberTieRealm()))
|
|
128
121
|
end
|
|
129
122
|
elseif TieInterface[index] then
|
|
130
123
|
return TieInterface[index]
|
|
@@ -133,4 +126,4 @@ function TieInterface:__index(index)
|
|
|
133
126
|
end
|
|
134
127
|
end
|
|
135
128
|
|
|
136
|
-
return TieInterface
|
|
129
|
+
return TieInterface
|
|
@@ -17,13 +17,12 @@ local TieUtils = {}
|
|
|
17
17
|
function TieUtils.encode(...)
|
|
18
18
|
local results = table.pack(...)
|
|
19
19
|
|
|
20
|
-
for i
|
|
21
|
-
if
|
|
22
|
-
type(results[i])
|
|
23
|
-
or type(results[i]) == "function"
|
|
20
|
+
for i=1, results.n do
|
|
21
|
+
if type(results[i]) == "table"
|
|
22
|
+
or type(results[i]) == "function"
|
|
24
23
|
or typeof(results[i]) == "userdata" -- newproxy() symbols
|
|
25
|
-
or Symbol.isSymbol(results[i])
|
|
26
|
-
|
|
24
|
+
or Symbol.isSymbol(results[i]) then
|
|
25
|
+
|
|
27
26
|
local saved = results[i]
|
|
28
27
|
results[i] = function()
|
|
29
28
|
return saved -- Pack into a callback so we can transfer data.
|
|
@@ -66,7 +65,7 @@ end
|
|
|
66
65
|
function TieUtils.decode(...)
|
|
67
66
|
local results = table.pack(...)
|
|
68
67
|
|
|
69
|
-
for i
|
|
68
|
+
for i=1, results.n do
|
|
70
69
|
if type(results[i]) == "function" then
|
|
71
70
|
results[i] = results[i]()
|
|
72
71
|
end
|
|
@@ -75,4 +74,4 @@ function TieUtils.decode(...)
|
|
|
75
74
|
return unpack(results, 1, results.n)
|
|
76
75
|
end
|
|
77
76
|
|
|
78
|
-
return TieUtils
|
|
77
|
+
return TieUtils
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local ActionInterface = require("ActionInterface")
|
|
8
7
|
local BaseObject = require("BaseObject")
|
|
8
|
+
local ActionInterface = require("ActionInterface")
|
|
9
9
|
local Signal = require("Signal")
|
|
10
10
|
|
|
11
11
|
local Action = setmetatable({}, BaseObject)
|
|
@@ -6,11 +6,11 @@ local ServerScriptService = game:GetService("ServerScriptService")
|
|
|
6
6
|
local loader = ServerScriptService:FindFirstChild("LoaderUtils", true).Parent
|
|
7
7
|
local require = require(loader).bootstrapGame(ServerScriptService.tie)
|
|
8
8
|
|
|
9
|
-
local Action = require("Action")
|
|
10
|
-
local ActionInterface = require("ActionInterface")
|
|
11
9
|
local Door = require("Door")
|
|
12
|
-
local OpenableInterface = require("OpenableInterface")
|
|
13
10
|
local Window = require("Window")
|
|
11
|
+
local OpenableInterface = require("OpenableInterface")
|
|
12
|
+
local ActionInterface = require("ActionInterface")
|
|
13
|
+
local Action = require("Action")
|
|
14
14
|
|
|
15
15
|
local DO_DOOR_WINDOW_TEST = false
|
|
16
16
|
|
|
@@ -36,6 +36,7 @@ if DO_DOOR_WINDOW_TEST then
|
|
|
36
36
|
print("door:ObserveIsImplemented()", isImplemented)
|
|
37
37
|
end)
|
|
38
38
|
|
|
39
|
+
|
|
39
40
|
doorInterface:PromiseOpen():Then(function()
|
|
40
41
|
print("Opened")
|
|
41
42
|
end)
|
|
@@ -56,6 +57,7 @@ if DO_DOOR_WINDOW_TEST then
|
|
|
56
57
|
end)
|
|
57
58
|
end
|
|
58
59
|
|
|
60
|
+
|
|
59
61
|
local adornee = Instance.new("Folder")
|
|
60
62
|
adornee.Name = "Adornee"
|
|
61
63
|
adornee.Parent = workspace
|
|
@@ -155,4 +157,4 @@ end
|
|
|
155
157
|
-- action.Parent = nil
|
|
156
158
|
-- task.wait(0.1)
|
|
157
159
|
|
|
158
|
-
-- action.Parent = adornee
|
|
160
|
+
-- action.Parent = adornee
|