@quenty/tie 10.19.0 → 10.19.1

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,6 +3,14 @@
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
+ ## [10.19.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tie@10.19.0...@quenty/tie@10.19.1) (2025-03-21)
7
+
8
+ **Note:** Version bump only for package @quenty/tie
9
+
10
+
11
+
12
+
13
+
6
14
  # [10.19.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tie@10.18.1...@quenty/tie@10.19.0) (2025-02-18)
7
15
 
8
16
  **Note:** Version bump only for package @quenty/tie
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/tie",
3
- "version": "10.19.0",
3
+ "version": "10.19.1",
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.16.0",
31
+ "@quenty/attributeutils": "^14.16.1",
32
32
  "@quenty/baseobject": "^10.8.0",
33
- "@quenty/brio": "^14.16.0",
34
- "@quenty/collectionserviceutils": "^8.16.0",
35
- "@quenty/instanceutils": "^13.16.0",
33
+ "@quenty/brio": "^14.16.1",
34
+ "@quenty/collectionserviceutils": "^8.16.1",
35
+ "@quenty/instanceutils": "^13.16.1",
36
36
  "@quenty/loader": "^10.8.0",
37
37
  "@quenty/maid": "^3.4.0",
38
- "@quenty/rx": "^13.16.0",
39
- "@quenty/rxsignal": "^7.16.0",
40
- "@quenty/statestack": "^14.17.0",
41
- "@quenty/string": "^3.3.0",
38
+ "@quenty/rx": "^13.16.1",
39
+ "@quenty/rxsignal": "^7.16.1",
40
+ "@quenty/statestack": "^14.17.1",
41
+ "@quenty/string": "^3.3.1",
42
42
  "@quenty/symbol": "^3.4.0",
43
- "@quenty/table": "^3.7.0",
43
+ "@quenty/table": "^3.7.1",
44
44
  "@quenty/tuple": "^1.5.0",
45
- "@quenty/valuebaseutils": "^13.16.0",
46
- "@quenty/valueobject": "^13.16.0"
45
+ "@quenty/valuebaseutils": "^13.16.1",
46
+ "@quenty/valueobject": "^13.16.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@quenty/promise": "^10.10.0",
49
+ "@quenty/promise": "^10.10.1",
50
50
  "@quenty/signal": "^7.10.0"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
54
54
  },
55
- "gitHead": "184a407d8d7366c39009444c3c9a7023cb176471"
55
+ "gitHead": "6b7c3e15e60cdb185986207b574e2b5591261e7a"
56
56
  }
@@ -71,9 +71,9 @@ TieDefinition.ClassName = "TieDefinition"
71
71
  TieDefinition.__index = TieDefinition
72
72
 
73
73
  TieDefinition.Types = Table.readonly({
74
- METHOD = Symbol.named("method");
75
- SIGNAL = Symbol.named("signal");
76
- PROPERTY = Symbol.named("property"); -- will default to nil
74
+ METHOD = Symbol.named("method"),
75
+ SIGNAL = Symbol.named("signal"),
76
+ PROPERTY = Symbol.named("property"), -- will default to nil
77
77
  })
78
78
 
79
79
  TieDefinition.Realms = TieRealms
@@ -89,7 +89,7 @@ function TieDefinition.new(definitionName, members)
89
89
  local self = setmetatable({}, TieDefinition)
90
90
 
91
91
  self._definitionName = assert(definitionName, "No definitionName")
92
- self._validContainerNameSetWeakCache = setmetatable({}, {__mode = "kv"})
92
+ self._validContainerNameSetWeakCache = setmetatable({}, { __mode = "kv" })
93
93
  self._memberMap = {}
94
94
  self._defaultTieRealm = TieRealms.SHARED
95
95
 
@@ -97,15 +97,15 @@ function TieDefinition.new(definitionName, members)
97
97
  self:_addMembers(members, TieRealms.SHARED)
98
98
 
99
99
  self.Server = setmetatable({
100
- _defaultTieRealm = TieRealms.SERVER
100
+ _defaultTieRealm = TieRealms.SERVER,
101
101
  }, {
102
- __index = self;
102
+ __index = self,
103
103
  })
104
104
 
105
105
  self.Client = setmetatable({
106
- _defaultTieRealm = TieRealms.CLIENT
106
+ _defaultTieRealm = TieRealms.CLIENT,
107
107
  }, {
108
- __index = self;
108
+ __index = self,
109
109
  })
110
110
 
111
111
  return self
@@ -114,12 +114,16 @@ end
114
114
  function TieDefinition:_addMembers(members, realm)
115
115
  for memberName, memberTypeOrDefaultValue in pairs(members) do
116
116
  if TieRealmUtils.isTieRealm(memberName) then
117
-
118
117
  self:_addMembers(memberTypeOrDefaultValue, memberName)
119
118
  elseif type(memberName) == "string" then
120
119
  self:_addMember(memberName, memberTypeOrDefaultValue, realm)
121
120
  else
122
- error(string.format("[TieDefinition] - Bad memberName %q, expected either string or TieRealm.", tostring(memberName)))
121
+ error(
122
+ string.format(
123
+ "[TieDefinition] - Bad memberName %q, expected either string or TieRealm.",
124
+ tostring(memberName)
125
+ )
126
+ )
123
127
  end
124
128
  end
125
129
  end
@@ -168,20 +172,19 @@ function TieDefinition:GetNewImplClass(tieRealm)
168
172
  end
169
173
 
170
174
  local IMPL_CLIENT_SET = table.freeze({
171
- ["Configuration"] = true;
175
+ ["Configuration"] = true,
172
176
  })
173
177
 
174
178
  local IMPL_SERVER_SET = table.freeze({
175
- ["Camera"] = true;
179
+ ["Camera"] = true,
176
180
  })
177
181
 
178
182
  local IMPL_SHARED_SET = table.freeze({
179
- ["Camera"] = true;
180
- ["Configuration"] = true;
183
+ ["Camera"] = true,
184
+ ["Configuration"] = true,
181
185
  })
182
186
 
183
187
  function TieDefinition:GetImplClassSet(tieRealm)
184
-
185
188
  if tieRealm == TieRealms.CLIENT then
186
189
  -- Shared implements both...
187
190
  return IMPL_CLIENT_SET
@@ -229,7 +232,7 @@ function TieDefinition:ObserveChildrenBrio(adornee: Instance, tieRealm)
229
232
  return RxInstanceUtils.observeChildrenBrio(adornee):Pipe({
230
233
  RxBrioUtils.flatMapBrio(function(child)
231
234
  return self:ObserveBrio(child, tieRealm)
232
- end)
235
+ end),
233
236
  })
234
237
  end
235
238
 
@@ -240,7 +243,7 @@ end
240
243
  @param tieRealm TieRealm?
241
244
  @return Promise<TieInterface>
242
245
  ]=]
243
- function TieDefinition:Promise(adornee, tieRealm)
246
+ function TieDefinition:Promise(adornee: Instance, tieRealm)
244
247
  assert(typeof(adornee) == "Instance", "Bad adornee")
245
248
  assert(TieRealmUtils.isTieRealm(tieRealm) or tieRealm == nil, "Bad tieRealm")
246
249
 
@@ -249,7 +252,7 @@ function TieDefinition:Promise(adornee, tieRealm)
249
252
  return Rx.toPromise(self:Observe(adornee, tieRealm):Pipe({
250
253
  Rx.where(function(value)
251
254
  return value ~= nil
252
- end)
255
+ end),
253
256
  }))
254
257
  end
255
258
 
@@ -304,7 +307,7 @@ function TieDefinition:ObserveAllTaggedBrio(tagName, tieRealm)
304
307
  return RxCollectionServiceUtils.observeTaggedBrio(tagName):Pipe({
305
308
  RxBrioUtils.flatMapBrio(function(instance)
306
309
  return self:ObserveBrio(instance, tieRealm)
307
- end)
310
+ end),
308
311
  })
309
312
  end
310
313
 
@@ -369,15 +372,14 @@ function TieDefinition:ObserveIsImplemented(adornee: Instance, tieRealm): boolea
369
372
  assert(typeof(adornee) == "Instance", "Bad adornee")
370
373
  assert(TieRealmUtils.isTieRealm(tieRealm) or tieRealm == nil, "Bad tieRealm")
371
374
 
372
- return self:ObserveLastImplementationBrio(adornee, tieRealm)
373
- :Pipe({
374
- RxBrioUtils.map(function(result)
375
- return result and true or false
376
- end);
377
- RxBrioUtils.emitOnDeath(false);
378
- Rx.defaultsTo(false);
379
- Rx.distinct();
380
- })
375
+ return self:ObserveLastImplementationBrio(adornee, tieRealm):Pipe({
376
+ RxBrioUtils.map(function(result)
377
+ return result and true or false
378
+ end),
379
+ RxBrioUtils.emitOnDeath(false),
380
+ Rx.defaultsTo(false),
381
+ Rx.distinct(),
382
+ })
381
383
  end
382
384
 
383
385
  --[=[
@@ -392,15 +394,14 @@ function TieDefinition:ObserveIsImplementation(implParent: Instance, tieRealm)
392
394
 
393
395
  tieRealm = tieRealm or self._defaultTieRealm
394
396
 
395
- return self:_observeImplementation(implParent, tieRealm)
396
- :Pipe({
397
- RxBrioUtils.map(function(result)
398
- return result and true or false
399
- end);
400
- RxBrioUtils.emitOnDeath(false);
401
- Rx.defaultsTo(false);
402
- Rx.distinct();
403
- })
397
+ return self:_observeImplementation(implParent, tieRealm):Pipe({
398
+ RxBrioUtils.map(function(result)
399
+ return result and true or false
400
+ end),
401
+ RxBrioUtils.emitOnDeath(false),
402
+ Rx.defaultsTo(false),
403
+ Rx.distinct(),
404
+ })
404
405
  end
405
406
 
406
407
  --[=[
@@ -422,13 +423,13 @@ function TieDefinition:ObserveIsImplementedOn(implParent: Instance, adornee: Ins
422
423
  end):Pipe({
423
424
  RxBrioUtils.switchMapBrio(function()
424
425
  return self:_observeImplementation(implParent, tieRealm)
425
- end);
426
+ end),
426
427
  RxBrioUtils.map(function(result)
427
428
  return result and true or false
428
- end);
429
- RxBrioUtils.emitOnDeath(false);
430
- Rx.defaultsTo(false);
431
- Rx.distinct();
429
+ end),
430
+ RxBrioUtils.emitOnDeath(false),
431
+ Rx.defaultsTo(false),
432
+ Rx.distinct(),
432
433
  })
433
434
  end
434
435
 
@@ -445,13 +446,12 @@ function TieDefinition:ObserveBrio(adornee: Instance, tieRealm)
445
446
 
446
447
  tieRealm = tieRealm or self._defaultTieRealm
447
448
 
448
- return self:ObserveValidContainerChildrenBrio(adornee, tieRealm)
449
- :Pipe({
450
- RxBrioUtils.switchMapBrio(function(implParent)
451
- return self:_observeImplementation(implParent, tieRealm)
452
- end);
453
- RxBrioUtils.onlyLastBrioSurvives();
454
- })
449
+ return self:ObserveValidContainerChildrenBrio(adornee, tieRealm):Pipe({
450
+ RxBrioUtils.switchMapBrio(function(implParent)
451
+ return self:_observeImplementation(implParent, tieRealm)
452
+ end),
453
+ RxBrioUtils.onlyLastBrioSurvives(),
454
+ })
455
455
  end
456
456
 
457
457
  --[=[
@@ -466,7 +466,7 @@ function TieDefinition:Observe(adornee: Instance, tieRealm)
466
466
  assert(TieRealmUtils.isTieRealm(tieRealm) or tieRealm == nil, "Bad tieRealm")
467
467
 
468
468
  return self:ObserveBrio(adornee, tieRealm):Pipe({
469
- RxStateStackUtils.topOfStack();
469
+ RxStateStackUtils.topOfStack(),
470
470
  })
471
471
  end
472
472
 
@@ -485,12 +485,11 @@ function TieDefinition:ObserveImplementationsBrio(adornee: Instance, tieRealm)
485
485
 
486
486
  tieRealm = tieRealm or self._defaultTieRealm
487
487
 
488
- return self:ObserveValidContainerChildrenBrio(adornee, tieRealm)
489
- :Pipe({
490
- RxBrioUtils.flatMapBrio(function(implParent)
491
- return self:_observeImplementation(implParent, tieRealm)
492
- end)
493
- })
488
+ return self:ObserveValidContainerChildrenBrio(adornee, tieRealm):Pipe({
489
+ RxBrioUtils.flatMapBrio(function(implParent)
490
+ return self:_observeImplementation(implParent, tieRealm)
491
+ end),
492
+ })
494
493
  end
495
494
 
496
495
  function TieDefinition:ObserveValidContainerChildrenBrio(adornee, tieRealm)
@@ -639,23 +638,23 @@ function TieDefinition:GetValidContainerNameSet(tieRealm)
639
638
  if tieRealm == TieRealms.CLIENT then
640
639
  -- Shared implements both...
641
640
  self._validContainerNameSetWeakCache[tieRealm] = table.freeze({
642
- [self._definitionName .. "Client"] = true;
643
- [self._definitionName .. "Shared"] = true;
641
+ [self._definitionName .. "Client"] = true,
642
+ [self._definitionName .. "Shared"] = true,
644
643
  })
645
644
  return self._validContainerNameSetWeakCache[tieRealm]
646
645
  elseif tieRealm == TieRealms.SERVER then
647
646
  self._validContainerNameSetWeakCache[tieRealm] = table.freeze({
648
- [self._definitionName] = true;
649
- [self._definitionName .. "Shared"] = true;
647
+ [self._definitionName] = true,
648
+ [self._definitionName .. "Shared"] = true,
650
649
  })
651
650
  return self._validContainerNameSetWeakCache[tieRealm]
652
651
  elseif tieRealm == TieRealms.SHARED then
653
652
  -- Technically on the implementation shared is very strict,
654
653
  -- but we allow any calls here for discovery
655
654
  self._validContainerNameSetWeakCache[tieRealm] = table.freeze({
656
- [self._definitionName] = true;
657
- [self._definitionName .. "Client"] = true;
658
- [self._definitionName .. "Shared"] = true;
655
+ [self._definitionName] = true,
656
+ [self._definitionName .. "Client"] = true,
657
+ [self._definitionName .. "Shared"] = true,
659
658
  })
660
659
  return self._validContainerNameSetWeakCache[tieRealm]
661
660
  else
@@ -748,4 +747,4 @@ function TieDefinition:IsImplementation(implParent, tieRealm)
748
747
  return true
749
748
  end
750
749
 
751
- return TieDefinition
750
+ return TieDefinition
@@ -17,7 +17,15 @@ local TieImplementation = setmetatable({}, BaseObject)
17
17
  TieImplementation.ClassName = "TieImplementation"
18
18
  TieImplementation.__index = TieImplementation
19
19
 
20
- function TieImplementation.new(tieDefinition, adornee, implementer, implementationTieRealm)
20
+ --[=[
21
+ Constructs a new implementation. Use [TieDefinition.Implement] instead of using this directly.
22
+
23
+ @param tieDefinition TieDefinition
24
+ @param adornee Instance
25
+ @param implementer table
26
+ @param implementationTieRealm TieRealm
27
+ ]=]
28
+ function TieImplementation.new(tieDefinition, adornee: Instance, implementer, implementationTieRealm)
21
29
  assert(TieRealmUtils.isTieRealm(implementationTieRealm), "Bad implementationTieRealm")
22
30
 
23
31
  local self = setmetatable(BaseObject.new(), TieImplementation)
@@ -53,14 +61,15 @@ function TieImplementation:__index(index)
53
61
  return TieImplementation[index]
54
62
  end
55
63
 
56
- if index == "_implParent"
64
+ if
65
+ index == "_implParent"
57
66
  or index == "_adornee"
58
67
  or index == "_tieDefinition"
59
68
  or index == "_memberImplementations"
60
69
  or index == "_implementationTieRealm"
61
70
  or index == "_memberMap"
62
- or index == "_actualSelf" then
63
-
71
+ or index == "_actualSelf"
72
+ then
64
73
  return rawget(self, index)
65
74
  end
66
75
 
@@ -72,7 +81,13 @@ function TieImplementation:__index(index)
72
81
  if memberDefinition:IsAllowedForImplementation(self._implementationTieRealm) then
73
82
  return memberDefinition:GetInterface(self._implParent, self, implementationTieRealm)
74
83
  else
75
- error(string.format("[TieImplementation] - %q is not available on %s", memberDefinition:GetFriendlyName(), self._implementationTieRealm))
84
+ error(
85
+ string.format(
86
+ "[TieImplementation] - %q is not available on %s",
87
+ memberDefinition:GetFriendlyName(),
88
+ self._implementationTieRealm
89
+ )
90
+ )
76
91
  end
77
92
  else
78
93
  error(string.format("Bad index %q for TieImplementation", tostring(index)))
@@ -80,14 +95,15 @@ function TieImplementation:__index(index)
80
95
  end
81
96
 
82
97
  function TieImplementation:__newindex(index, value)
83
- if index == "_implParent"
98
+ if
99
+ index == "_implParent"
84
100
  or index == "_adornee"
85
101
  or index == "_tieDefinition"
86
102
  or index == "_memberImplementations"
87
103
  or index == "_implementationTieRealm"
88
104
  or index == "_memberMap"
89
- or index == "_actualSelf" then
90
-
105
+ or index == "_actualSelf"
106
+ then
91
107
  rawset(self, index, value)
92
108
  elseif self._memberImplementations[index] then
93
109
  self._memberImplementations[index]:SetImplementation(value, self._actualSelf)
@@ -119,7 +135,9 @@ function TieImplementation:_buildMemberImplementations(implementer)
119
135
  end
120
136
  end
121
137
 
122
- local memberImplementation = self._maid:Add(memberDefinition:Implement(self._implParent, found, self._actualSelf, self._implementationTieRealm))
138
+ local memberImplementation = self._maid:Add(
139
+ memberDefinition:Implement(self._implParent, found, self._actualSelf, self._implementationTieRealm)
140
+ )
123
141
  self._memberImplementations[memberDefinition:GetMemberName()] = memberImplementation
124
142
  end
125
143
 
@@ -127,18 +145,22 @@ function TieImplementation:_buildMemberImplementations(implementer)
127
145
  end
128
146
 
129
147
  function TieImplementation:_getErrorMessageForNotAllowedMember(memberDefinition)
130
- local errorMessage = string.format("[TieImplementation] - Member implements %s only member %s (we are a %s implementation)",
148
+ local errorMessage = string.format(
149
+ "[TieImplementation] - Member implements %s only member %s (we are a %s implementation)",
131
150
  memberDefinition:GetMemberTieRealm(),
132
151
  memberDefinition:GetFriendlyName(),
133
- self._implementationTieRealm)
152
+ self._implementationTieRealm
153
+ )
134
154
 
135
155
  if self._implementationTieRealm == TieRealms.SHARED then
136
156
  if memberDefinition:GetMemberTieRealm() ~= TieRealms.SHARED then
137
- errorMessage = string.format("%s\n\tHINT: This is declared as a %s implementation. %s is only allowed on %s.",
157
+ errorMessage = string.format(
158
+ "%s\n\tHINT: This is declared as a %s implementation. %s is only allowed on %s.",
138
159
  errorMessage,
139
160
  self._implementationTieRealm,
140
161
  memberDefinition:GetFriendlyName(),
141
- memberDefinition:GetMemberTieRealm())
162
+ memberDefinition:GetMemberTieRealm()
163
+ )
142
164
  end
143
165
  end
144
166
 
@@ -146,22 +168,26 @@ function TieImplementation:_getErrorMessageForNotAllowedMember(memberDefinition)
146
168
  end
147
169
 
148
170
  function TieImplementation:_getErrorMessageRequiredMember(memberDefinition)
149
- local errorMessage = string.format("[TieImplementation] - Missing %s member %s (we are a %s implementation)",
171
+ local errorMessage = string.format(
172
+ "[TieImplementation] - Missing %s member %s (we are a %s implementation)",
150
173
  memberDefinition:GetMemberTieRealm(),
151
174
  memberDefinition:GetFriendlyName(),
152
- self._implementationTieRealm)
175
+ self._implementationTieRealm
176
+ )
153
177
 
154
178
  if self._implementationTieRealm == TieRealms.SHARED then
155
179
  if memberDefinition:GetMemberTieRealm() ~= TieRealms.SHARED then
156
- errorMessage = string.format("%s\n\tHINT: This is declared as a %s implementation. Shared implements require both client and server components. You could also specify the implementation realm by writing %sInterface.%s:Implement(...)",
180
+ errorMessage = string.format(
181
+ "%s\n\tHINT: This is declared as a %s implementation. Shared implements require both client and server components. You could also specify the implementation realm by writing %sInterface.%s:Implement(...)",
157
182
  errorMessage,
158
183
  self._implementationTieRealm,
159
184
  self._tieDefinition:GetName(),
160
- String.uppercaseFirstLetter(memberDefinition:GetMemberTieRealm()))
185
+ String.uppercaseFirstLetter(memberDefinition:GetMemberTieRealm())
186
+ )
161
187
  end
162
188
  end
163
189
 
164
190
  return errorMessage
165
191
  end
166
192
 
167
- return TieImplementation
193
+ return TieImplementation
@@ -1,6 +1,6 @@
1
- --[=[
1
+ --[[
2
2
  @class Action
3
- ]=]
3
+ ]]
4
4
 
5
5
  local require = require(script.Parent.loader).load(script)
6
6
 
@@ -32,4 +32,4 @@ function Action:Activate()
32
32
  self.Activated:Fire()
33
33
  end
34
34
 
35
- return Action
35
+ return Action
@@ -1,14 +1,14 @@
1
- --[=[
1
+ --[[
2
2
  @class ActionInterface
3
- ]=]
3
+ ]]
4
4
 
5
5
  local require = require(script.Parent.loader).load(script)
6
6
 
7
7
  local TieDefinition = require("TieDefinition")
8
8
 
9
9
  return TieDefinition.new("Action", {
10
- DisplayName = "???";
11
- IsEnabled = false;
12
- Activated = TieDefinition.Types.SIGNAL;
13
- Activate = TieDefinition.Types.METHOD;
14
- })
10
+ DisplayName = "???",
11
+ IsEnabled = false,
12
+ Activated = TieDefinition.Types.SIGNAL,
13
+ Activate = TieDefinition.Types.METHOD,
14
+ })
@@ -1,6 +1,6 @@
1
- --[=[
1
+ --[[
2
2
  @class Door
3
- ]=]
3
+ ]]
4
4
 
5
5
  local require = require(script.Parent.loader).load(script)
6
6
 
@@ -56,4 +56,4 @@ function Door:PromiseClose()
56
56
  return promise
57
57
  end
58
58
 
59
- return Door
59
+ return Door
@@ -1,16 +1,16 @@
1
- --[=[
1
+ --[[
2
2
  @class OpenableInterface
3
- ]=]
3
+ ]]
4
4
 
5
5
  local require = require(script.Parent.loader).load(script)
6
6
 
7
7
  local TieDefinition = require("TieDefinition")
8
8
 
9
9
  return TieDefinition.new("Openable", {
10
- Opening = TieDefinition.Types.SIGNAL;
11
- Closing = TieDefinition.Types.SIGNAL;
12
- IsOpen = TieDefinition.Types.PROPERTY;
13
- LastPromise = TieDefinition.Types.PROPERTY;
14
- PromiseOpen = TieDefinition.Types.METHOD;
15
- PromiseClose = TieDefinition.Types.METHOD;
10
+ Opening = TieDefinition.Types.SIGNAL,
11
+ Closing = TieDefinition.Types.SIGNAL,
12
+ IsOpen = TieDefinition.Types.PROPERTY,
13
+ LastPromise = TieDefinition.Types.PROPERTY,
14
+ PromiseOpen = TieDefinition.Types.METHOD,
15
+ PromiseClose = TieDefinition.Types.METHOD,
16
16
  })
@@ -1,6 +1,6 @@
1
- --[=[
1
+ --[[
2
2
  @class Window
3
- ]=]
3
+ ]]
4
4
 
5
5
  local require = require(script.Parent.loader).load(script)
6
6
 
@@ -56,4 +56,4 @@ function Window:PromiseClose()
56
56
  return promise
57
57
  end
58
58
 
59
- return Window
59
+ return Window