@quenty/tuple 1.5.0 → 1.5.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,17 @@
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
+ ## [1.5.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tuple@1.5.0...@quenty/tuple@1.5.1) (2025-04-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * Add types to packages ([2374fb2](https://github.com/Quenty/NevermoreEngine/commit/2374fb2b043cfbe0e9b507b3316eec46a4e353a0))
12
+
13
+
14
+
15
+
16
+
6
17
  # [1.5.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/tuple@1.4.1...@quenty/tuple@1.5.0) (2025-02-18)
7
18
 
8
19
  **Note:** Version bump only for package @quenty/tuple
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/tuple",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Tuple utility package",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -25,11 +25,11 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/loader": "^10.8.0",
29
- "@quenty/lrucache": "^1.6.0"
28
+ "@quenty/loader": "^10.8.1",
29
+ "@quenty/lrucache": "^1.6.1"
30
30
  },
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "gitHead": "184a407d8d7366c39009444c3c9a7023cb176471"
34
+ "gitHead": "78c3ac0ab08dd18085b6e6e6e4f745e76ed99f68"
35
35
  }
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Tuple class for Lua
3
4
 
@@ -8,13 +9,20 @@ local Tuple = {}
8
9
  Tuple.ClassName = "Tuple"
9
10
  Tuple.__index = Tuple
10
11
 
12
+ export type Tuple<T...> = typeof(setmetatable(
13
+ {} :: {
14
+ n: number,
15
+ },
16
+ Tuple
17
+ ))
18
+
11
19
  --[=[
12
20
  Constructs a new tuple
13
21
 
14
22
  @param ... any
15
- @return Tuple<T>
23
+ @return Tuple<T...>
16
24
  ]=]
17
- function Tuple.new(...)
25
+ function Tuple.new<T...>(...: T...): Tuple<T...>
18
26
  return setmetatable(table.pack(...), Tuple)
19
27
  end
20
28
 
@@ -24,7 +32,7 @@ end
24
32
  @param value any
25
33
  @return boolean
26
34
  ]=]
27
- function Tuple.isTuple(value)
35
+ function Tuple.isTuple(value: any): boolean
28
36
  return getmetatable(value) == Tuple
29
37
  end
30
38
 
@@ -33,25 +41,25 @@ end
33
41
 
34
42
  @return T
35
43
  ]=]
36
- function Tuple:Unpack()
37
- return table.unpack(self, 1, self.n)
44
+ function Tuple.Unpack<T...>(self: Tuple<T...>): T...
45
+ return table.unpack(self :: any, 1, self.n)
38
46
  end
39
47
 
40
48
  --[=[
41
49
  Converts to array
42
50
 
43
- @return { T }
51
+ @return { T... }
44
52
  ]=]
45
- function Tuple:ToArray()
46
- return { self:Unpack() }
53
+ function Tuple.ToArray<T...>(self: Tuple<T...>): { any }
54
+ return { Tuple.Unpack(self) }
47
55
  end
48
56
 
49
57
  --[=[
50
58
  Converts the tuple to a string for easy debugging
51
59
  ]=]
52
- function Tuple:__tostring()
60
+ function Tuple.__tostring<T...>(self: Tuple<T...>): string
53
61
  local converted = {}
54
- for i=1, self.n do
62
+ for i = 1, self.n do
55
63
  converted[i] = tostring(self[i])
56
64
  end
57
65
  return table.concat(converted, ", ")
@@ -62,7 +70,7 @@ end
62
70
 
63
71
  @return number
64
72
  ]=]
65
- function Tuple:__len()
73
+ function Tuple.__len<T...>(self: Tuple<T...>): number
66
74
  return self.n
67
75
  end
68
76
 
@@ -70,7 +78,7 @@ end
70
78
  Compares the tuple to another tuple
71
79
  @param other Tuple
72
80
  ]=]
73
- function Tuple:__eq(other)
81
+ function Tuple.__eq<T...>(self: Tuple<T...>, other: Tuple<T...>): boolean
74
82
  if not Tuple.isTuple(other) then
75
83
  return false
76
84
  end
@@ -79,7 +87,7 @@ function Tuple:__eq(other)
79
87
  return false
80
88
  end
81
89
 
82
- for i=1, self.n do
90
+ for i = 1, self.n do
83
91
  if self[i] ~= other[i] then
84
92
  return false
85
93
  end
@@ -92,12 +100,12 @@ end
92
100
  Combines the tuple
93
101
  @param other Tuple
94
102
  ]=]
95
- function Tuple:__add(other)
103
+ function Tuple.__add<T...>(self: Tuple<T...>, other: Tuple<T...>): Tuple<T...>
96
104
  assert(Tuple.isTuple(other), "Can only add tuples")
97
105
 
98
- local result = Tuple.new(self:Unpack())
106
+ local result = Tuple.new(Tuple.Unpack(self))
99
107
  local count = self.n
100
- for i=1, other.n do
108
+ for i = 1, other.n do
101
109
  result[count + i] = other[i]
102
110
  end
103
111
  result.n = count + other.n
@@ -109,8 +117,8 @@ end
109
117
 
110
118
  @return ...
111
119
  ]=]
112
- function Tuple:__call()
113
- return table.unpack(self, 1, self.n)
120
+ function Tuple.__call<T...>(self: Tuple<T...>): T...
121
+ return table.unpack(self :: any, 1, self.n)
114
122
  end
115
123
 
116
124
  return Tuple
@@ -6,7 +6,7 @@ local require = require(game:GetService("ServerScriptService"):FindFirstChild("L
6
6
 
7
7
  local Tuple = require("Tuple")
8
8
 
9
- return function(_target)
9
+ return function(_target: Frame)
10
10
  local a = Tuple.new(1, 2, 3)
11
11
  local b = Tuple.new(1, 2, 3)
12
12
  local c = Tuple.new(3, 4, "d")
@@ -1,3 +1,4 @@
1
+ --!strict
1
2
  --[=[
2
3
  Helps look up tuples that can be used as keys
3
4
 
@@ -12,22 +13,30 @@ local TupleLookup = {}
12
13
  TupleLookup.ClassName = "TupleLookup"
13
14
  TupleLookup.__index = TupleLookup
14
15
 
15
- function TupleLookup.new()
16
+ export type TupleLookup = typeof(setmetatable(
17
+ {} :: {
18
+ _tuples: { [Tuple.Tuple<...any>]: boolean },
19
+ _singleArgTuples: { [any]: Tuple.Tuple<...any> },
20
+ },
21
+ TupleLookup
22
+ ))
23
+
24
+ function TupleLookup.new(): TupleLookup
16
25
  local self = setmetatable({}, TupleLookup)
17
26
 
18
- self._tuples = setmetatable({}, { __mode = "k"})
19
- self._singleArgTuples = setmetatable({}, { __mode = "kv"})
27
+ self._tuples = setmetatable({}, { __mode = "k" })
28
+ self._singleArgTuples = setmetatable({}, { __mode = "kv" })
20
29
 
21
- return self
30
+ return self :: any
22
31
  end
23
32
 
24
33
  --[=[
25
34
  Gets a shared tuple with a weak table
26
35
 
27
36
  @param ... any
28
- @return Tuple<T>
37
+ @return Tuple<T...>
29
38
  ]=]
30
- function TupleLookup:ToTuple(...)
39
+ function TupleLookup.ToTuple<T...>(self: TupleLookup, ...): Tuple.Tuple<T...>
31
40
  local n = select("#", ...)
32
41
  if n == 1 then
33
42
  local arg = ...
@@ -38,9 +47,9 @@ function TupleLookup:ToTuple(...)
38
47
 
39
48
  local created = Tuple.new(...)
40
49
 
41
- for item, _ in pairs(self._tuples) do
42
- if item == created then
43
- return item
50
+ for item, _ in self._tuples do
51
+ if (item :: any) == created then
52
+ return item :: any
44
53
  end
45
54
  end
46
55