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