roblox-opencode 1.0.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/README.md +122 -0
- package/commands/setup-game.md +108 -0
- package/commands/sync-check.md +53 -0
- package/core/roblox-core.md +93 -0
- package/dist/server.js +167 -0
- package/package.json +35 -0
- package/skills/roblox-analytics/SKILL.md +277 -0
- package/skills/roblox-analytics/references/event-batcher.luau +75 -0
- package/skills/roblox-animation-vfx/SKILL.md +1325 -0
- package/skills/roblox-architecture/SKILL.md +863 -0
- package/skills/roblox-architecture/references/combat-systems.md +1381 -0
- package/skills/roblox-code-review/SKILL.md +687 -0
- package/skills/roblox-data/SKILL.md +889 -0
- package/skills/roblox-data/references/inventory-systems.md +1729 -0
- package/skills/roblox-debug/SKILL.md +99 -0
- package/skills/roblox-gui/SKILL.md +1103 -0
- package/skills/roblox-gui-fusion/SKILL.md +150 -0
- package/skills/roblox-gui-fusion/references/inventory.luau +427 -0
- package/skills/roblox-gui-fusion/references/settings-menu.luau +579 -0
- package/skills/roblox-gui-fusion/references/shop.luau +411 -0
- package/skills/roblox-luau-mastery/SKILL.md +1519 -0
- package/skills/roblox-monetization/SKILL.md +1084 -0
- package/skills/roblox-monetization/references/process-receipt.luau +131 -0
- package/skills/roblox-networking/SKILL.md +669 -0
- package/skills/roblox-networking/references/remote-validator.luau +193 -0
- package/skills/roblox-publish-checklist/SKILL.md +128 -0
- package/skills/roblox-runtime/SKILL.md +753 -0
- package/skills/roblox-sharp-edges/SKILL.md +295 -0
- package/skills/roblox-sync/SKILL.md +126 -0
- package/skills/roblox-testing/SKILL.md +943 -0
- package/skills/roblox-tooling/SKILL.md +150 -0
- package/vendor/LICENSES/ProfileStore-LICENSE +201 -0
- package/vendor/LICENSES/RbxUtil-LICENSE +7 -0
- package/vendor/LICENSES/promise-LICENSE +21 -0
- package/vendor/LICENSES/t-LICENSE +21 -0
- package/vendor/LICENSES/testez-LICENSE +201 -0
- package/vendor/README.md +84 -0
- package/vendor/fusion/Animation/ExternalTime.luau +84 -0
- package/vendor/fusion/Animation/Spring.luau +322 -0
- package/vendor/fusion/Animation/Stopwatch.luau +128 -0
- package/vendor/fusion/Animation/Tween.luau +187 -0
- package/vendor/fusion/Animation/getTweenDuration.luau +27 -0
- package/vendor/fusion/Animation/getTweenRatio.luau +47 -0
- package/vendor/fusion/Animation/lerpType.luau +164 -0
- package/vendor/fusion/Animation/packType.luau +100 -0
- package/vendor/fusion/Animation/springCoefficients.luau +80 -0
- package/vendor/fusion/Animation/unpackType.luau +103 -0
- package/vendor/fusion/Colour/Oklab.luau +70 -0
- package/vendor/fusion/Colour/sRGB.luau +55 -0
- package/vendor/fusion/External.luau +168 -0
- package/vendor/fusion/ExternalDebug.luau +70 -0
- package/vendor/fusion/Graph/Observer.luau +114 -0
- package/vendor/fusion/Graph/castToGraph.luau +29 -0
- package/vendor/fusion/Graph/change.luau +81 -0
- package/vendor/fusion/Graph/depend.luau +33 -0
- package/vendor/fusion/Graph/evaluate.luau +56 -0
- package/vendor/fusion/Instances/Attribute.luau +58 -0
- package/vendor/fusion/Instances/AttributeChange.luau +47 -0
- package/vendor/fusion/Instances/AttributeOut.luau +63 -0
- package/vendor/fusion/Instances/Child.luau +21 -0
- package/vendor/fusion/Instances/Children.luau +148 -0
- package/vendor/fusion/Instances/Hydrate.luau +33 -0
- package/vendor/fusion/Instances/New.luau +53 -0
- package/vendor/fusion/Instances/OnChange.luau +50 -0
- package/vendor/fusion/Instances/OnEvent.luau +54 -0
- package/vendor/fusion/Instances/Out.luau +69 -0
- package/vendor/fusion/Instances/applyInstanceProps.luau +149 -0
- package/vendor/fusion/Instances/defaultProps.luau +194 -0
- package/vendor/fusion/LICENSE +21 -0
- package/vendor/fusion/Logging/formatError.luau +49 -0
- package/vendor/fusion/Logging/messages.luau +52 -0
- package/vendor/fusion/Logging/parseError.luau +25 -0
- package/vendor/fusion/Memory/checkLifetime.luau +134 -0
- package/vendor/fusion/Memory/deriveScope.luau +24 -0
- package/vendor/fusion/Memory/deriveScopeImpl.luau +45 -0
- package/vendor/fusion/Memory/doCleanup.luau +79 -0
- package/vendor/fusion/Memory/innerScope.luau +34 -0
- package/vendor/fusion/Memory/legacyCleanup.luau +18 -0
- package/vendor/fusion/Memory/needsDestruction.luau +17 -0
- package/vendor/fusion/Memory/poisonScope.luau +34 -0
- package/vendor/fusion/Memory/scopePool.luau +55 -0
- package/vendor/fusion/Memory/scoped.luau +27 -0
- package/vendor/fusion/Memory/whichLivesLonger.luau +75 -0
- package/vendor/fusion/RobloxExternal.luau +98 -0
- package/vendor/fusion/State/Computed.luau +139 -0
- package/vendor/fusion/State/For/Disassembly.luau +211 -0
- package/vendor/fusion/State/For/ForTypes.luau +30 -0
- package/vendor/fusion/State/For/init.luau +110 -0
- package/vendor/fusion/State/ForKeys.luau +94 -0
- package/vendor/fusion/State/ForPairs.luau +97 -0
- package/vendor/fusion/State/ForValues.luau +94 -0
- package/vendor/fusion/State/Value.luau +88 -0
- package/vendor/fusion/State/castToState.luau +26 -0
- package/vendor/fusion/State/peek.luau +31 -0
- package/vendor/fusion/State/updateAll.luau +1 -0
- package/vendor/fusion/Types.luau +314 -0
- package/vendor/fusion/Utility/Contextual.luau +91 -0
- package/vendor/fusion/Utility/Safe.luau +23 -0
- package/vendor/fusion/Utility/isSimilar.luau +29 -0
- package/vendor/fusion/Utility/merge.luau +35 -0
- package/vendor/fusion/Utility/nameOf.luau +35 -0
- package/vendor/fusion/Utility/never.luau +14 -0
- package/vendor/fusion/Utility/nicknames.luau +11 -0
- package/vendor/fusion/Utility/xtypeof.luau +27 -0
- package/vendor/fusion/init.luau +82 -0
- package/vendor/profilestore/init.luau +2243 -0
- package/vendor/promise/init.luau +1982 -0
- package/vendor/rbxutil/buffer-util/Buffer.test.luau +25 -0
- package/vendor/rbxutil/buffer-util/BufferReader.luau +228 -0
- package/vendor/rbxutil/buffer-util/BufferWriter.luau +269 -0
- package/vendor/rbxutil/buffer-util/DataTypeBuffer.luau +223 -0
- package/vendor/rbxutil/buffer-util/Types.luau +60 -0
- package/vendor/rbxutil/buffer-util/index.d.ts +153 -0
- package/vendor/rbxutil/buffer-util/init.luau +41 -0
- package/vendor/rbxutil/buffer-util/package.json +16 -0
- package/vendor/rbxutil/buffer-util/wally.toml +9 -0
- package/vendor/rbxutil/comm/Client/ClientComm.luau +232 -0
- package/vendor/rbxutil/comm/Client/ClientRemoteProperty.luau +156 -0
- package/vendor/rbxutil/comm/Client/ClientRemoteSignal.luau +109 -0
- package/vendor/rbxutil/comm/Client/init.luau +135 -0
- package/vendor/rbxutil/comm/Server/RemoteProperty.luau +295 -0
- package/vendor/rbxutil/comm/Server/RemoteSignal.luau +211 -0
- package/vendor/rbxutil/comm/Server/ServerComm.luau +211 -0
- package/vendor/rbxutil/comm/Server/init.luau +140 -0
- package/vendor/rbxutil/comm/Types.luau +18 -0
- package/vendor/rbxutil/comm/Util.luau +27 -0
- package/vendor/rbxutil/comm/init.luau +35 -0
- package/vendor/rbxutil/comm/wally.toml +13 -0
- package/vendor/rbxutil/component/init.luau +759 -0
- package/vendor/rbxutil/component/init.test.luau +311 -0
- package/vendor/rbxutil/component/wally.toml +14 -0
- package/vendor/rbxutil/concur/init.luau +542 -0
- package/vendor/rbxutil/concur/init.test.luau +364 -0
- package/vendor/rbxutil/concur/wally.toml +8 -0
- package/vendor/rbxutil/enum-list/init.luau +101 -0
- package/vendor/rbxutil/enum-list/init.test.luau +91 -0
- package/vendor/rbxutil/enum-list/wally.toml +8 -0
- package/vendor/rbxutil/find/index.d.ts +20 -0
- package/vendor/rbxutil/find/init.luau +44 -0
- package/vendor/rbxutil/find/package.json +17 -0
- package/vendor/rbxutil/find/wally.toml +8 -0
- package/vendor/rbxutil/input/Gamepad.luau +559 -0
- package/vendor/rbxutil/input/Keyboard.luau +124 -0
- package/vendor/rbxutil/input/Mouse.luau +278 -0
- package/vendor/rbxutil/input/PreferredInput.luau +91 -0
- package/vendor/rbxutil/input/Touch.luau +120 -0
- package/vendor/rbxutil/input/init.luau +33 -0
- package/vendor/rbxutil/input/wally.toml +12 -0
- package/vendor/rbxutil/loader/index.d.ts +15 -0
- package/vendor/rbxutil/loader/init.luau +137 -0
- package/vendor/rbxutil/loader/wally.toml +8 -0
- package/vendor/rbxutil/log/index.d.ts +38 -0
- package/vendor/rbxutil/log/init.luau +746 -0
- package/vendor/rbxutil/log/wally.toml +8 -0
- package/vendor/rbxutil/net/init.luau +190 -0
- package/vendor/rbxutil/net/wally.toml +8 -0
- package/vendor/rbxutil/option/index.d.ts +44 -0
- package/vendor/rbxutil/option/init.luau +489 -0
- package/vendor/rbxutil/option/init.test.luau +342 -0
- package/vendor/rbxutil/option/wally.toml +8 -0
- package/vendor/rbxutil/pid/index.d.ts +53 -0
- package/vendor/rbxutil/pid/init.luau +195 -0
- package/vendor/rbxutil/pid/package.json +16 -0
- package/vendor/rbxutil/pid/wally.toml +9 -0
- package/vendor/rbxutil/quaternion/index.d.ts +117 -0
- package/vendor/rbxutil/quaternion/init.luau +570 -0
- package/vendor/rbxutil/quaternion/package.json +16 -0
- package/vendor/rbxutil/quaternion/wally.toml +9 -0
- package/vendor/rbxutil/query/index.d.ts +43 -0
- package/vendor/rbxutil/query/init.luau +117 -0
- package/vendor/rbxutil/query/package.json +18 -0
- package/vendor/rbxutil/query/wally.toml +9 -0
- package/vendor/rbxutil/sequent/index.d.ts +28 -0
- package/vendor/rbxutil/sequent/init.luau +340 -0
- package/vendor/rbxutil/sequent/package.json +16 -0
- package/vendor/rbxutil/sequent/wally.toml +9 -0
- package/vendor/rbxutil/ser/init.luau +175 -0
- package/vendor/rbxutil/ser/init.test.luau +50 -0
- package/vendor/rbxutil/ser/wally.toml +11 -0
- package/vendor/rbxutil/shake/index.d.ts +36 -0
- package/vendor/rbxutil/shake/init.luau +532 -0
- package/vendor/rbxutil/shake/init.test.luau +267 -0
- package/vendor/rbxutil/shake/package.json +16 -0
- package/vendor/rbxutil/shake/wally.toml +9 -0
- package/vendor/rbxutil/signal/index.d.ts +100 -0
- package/vendor/rbxutil/signal/init.luau +432 -0
- package/vendor/rbxutil/signal/init.test.luau +190 -0
- package/vendor/rbxutil/signal/package.json +17 -0
- package/vendor/rbxutil/signal/wally.toml +9 -0
- package/vendor/rbxutil/silo/TableWatcher.luau +65 -0
- package/vendor/rbxutil/silo/Util.luau +55 -0
- package/vendor/rbxutil/silo/init.luau +338 -0
- package/vendor/rbxutil/silo/init.test.luau +215 -0
- package/vendor/rbxutil/silo/wally.toml +8 -0
- package/vendor/rbxutil/spring/index.d.ts +40 -0
- package/vendor/rbxutil/spring/init.luau +97 -0
- package/vendor/rbxutil/spring/package.json +17 -0
- package/vendor/rbxutil/spring/wally.toml +8 -0
- package/vendor/rbxutil/stream/index.d.ts +88 -0
- package/vendor/rbxutil/stream/init.luau +597 -0
- package/vendor/rbxutil/stream/package.json +18 -0
- package/vendor/rbxutil/stream/wally.toml +9 -0
- package/vendor/rbxutil/streamable/Streamable.luau +202 -0
- package/vendor/rbxutil/streamable/StreamableUtil.luau +80 -0
- package/vendor/rbxutil/streamable/init.luau +8 -0
- package/vendor/rbxutil/streamable/wally.toml +12 -0
- package/vendor/rbxutil/symbol/init.luau +56 -0
- package/vendor/rbxutil/symbol/init.test.luau +37 -0
- package/vendor/rbxutil/symbol/wally.toml +8 -0
- package/vendor/rbxutil/table-util/init.luau +938 -0
- package/vendor/rbxutil/table-util/init.test.luau +439 -0
- package/vendor/rbxutil/table-util/wally.toml +8 -0
- package/vendor/rbxutil/task-queue/index.d.ts +27 -0
- package/vendor/rbxutil/task-queue/init.luau +97 -0
- package/vendor/rbxutil/task-queue/wally.toml +8 -0
- package/vendor/rbxutil/timer/index.d.ts +81 -0
- package/vendor/rbxutil/timer/init.luau +249 -0
- package/vendor/rbxutil/timer/init.test.luau +73 -0
- package/vendor/rbxutil/timer/wally.toml +11 -0
- package/vendor/rbxutil/tree/index.d.ts +15 -0
- package/vendor/rbxutil/tree/init.luau +137 -0
- package/vendor/rbxutil/tree/wally.toml +8 -0
- package/vendor/rbxutil/trove/index.d.ts +46 -0
- package/vendor/rbxutil/trove/init.luau +787 -0
- package/vendor/rbxutil/trove/init.test.luau +203 -0
- package/vendor/rbxutil/trove/wally.toml +8 -0
- package/vendor/rbxutil/typed-remote/init.luau +196 -0
- package/vendor/rbxutil/typed-remote/wally.toml +8 -0
- package/vendor/rbxutil/wait-for/index.d.ts +17 -0
- package/vendor/rbxutil/wait-for/init.luau +257 -0
- package/vendor/rbxutil/wait-for/init.test.luau +182 -0
- package/vendor/rbxutil/wait-for/wally.toml +11 -0
- package/vendor/t/t.lua +1350 -0
- package/vendor/testez/Context.lua +26 -0
- package/vendor/testez/Expectation.lua +311 -0
- package/vendor/testez/ExpectationContext.lua +38 -0
- package/vendor/testez/LifecycleHooks.lua +89 -0
- package/vendor/testez/Reporters/TeamCityReporter.lua +102 -0
- package/vendor/testez/Reporters/TextReporter.lua +106 -0
- package/vendor/testez/Reporters/TextReporterQuiet.lua +97 -0
- package/vendor/testez/TestBootstrap.lua +147 -0
- package/vendor/testez/TestEnum.lua +28 -0
- package/vendor/testez/TestPlan.lua +304 -0
- package/vendor/testez/TestPlanner.lua +40 -0
- package/vendor/testez/TestResults.lua +112 -0
- package/vendor/testez/TestRunner.lua +188 -0
- package/vendor/testez/TestSession.lua +243 -0
- package/vendor/testez/init.lua +40 -0
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
--!native
|
|
2
|
+
--!strict
|
|
3
|
+
|
|
4
|
+
--[=[
|
|
5
|
+
@class stream
|
|
6
|
+
|
|
7
|
+
The `stream` library allows a stream-like interface abstraction on top of buffers. This is useful
|
|
8
|
+
for reading or writing buffers without having to keep track of the current offset position.
|
|
9
|
+
|
|
10
|
+
This library is specifically tailored around fixed-length buffers.
|
|
11
|
+
|
|
12
|
+
```lua
|
|
13
|
+
-- Create an empty stream and write some data:
|
|
14
|
+
local s = stream.create(4)
|
|
15
|
+
stream.writeu8(s, 10)
|
|
16
|
+
stream.writeu8(s, 25)
|
|
17
|
+
stream.writeu8(s, 2)
|
|
18
|
+
stream.writeu8(s, 43)
|
|
19
|
+
|
|
20
|
+
-- Grab the buffer if needed:
|
|
21
|
+
local buf = stream.buffer(s)
|
|
22
|
+
|
|
23
|
+
-- Create a stream from an existing buffer:
|
|
24
|
+
local s = stream.from(buf)
|
|
25
|
+
print(stream.readu8()) -- 10
|
|
26
|
+
print(stream.readu8()) -- 25
|
|
27
|
+
print(stream.readu8()) -- 2
|
|
28
|
+
print(stream.readu8()) -- 43
|
|
29
|
+
|
|
30
|
+
-- Move the cursor:
|
|
31
|
+
stream.seek(s, 1)
|
|
32
|
+
print(stream.readu8()) -- 25
|
|
33
|
+
```
|
|
34
|
+
]=]
|
|
35
|
+
|
|
36
|
+
export type Stream = {
|
|
37
|
+
b: buffer,
|
|
38
|
+
l: number,
|
|
39
|
+
o: number,
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
local stream = {}
|
|
43
|
+
|
|
44
|
+
--[=[
|
|
45
|
+
@within stream
|
|
46
|
+
|
|
47
|
+
Create a stream around a new buffer with the given size in bytes.
|
|
48
|
+
|
|
49
|
+
This is equivalent to `stream.frombuffer(buffer.create(size))`.
|
|
50
|
+
]=]
|
|
51
|
+
function stream.create(size: number): Stream
|
|
52
|
+
return stream.frombuffer(buffer.create(size))
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
--[=[
|
|
56
|
+
@within stream
|
|
57
|
+
|
|
58
|
+
Create a stream around an existing buffer.
|
|
59
|
+
]=]
|
|
60
|
+
function stream.frombuffer(buf: buffer): Stream
|
|
61
|
+
return {
|
|
62
|
+
b = buf,
|
|
63
|
+
l = buffer.len(buf),
|
|
64
|
+
o = 0,
|
|
65
|
+
}
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
--[=[
|
|
69
|
+
@within stream
|
|
70
|
+
|
|
71
|
+
Create a stream from an existing string.
|
|
72
|
+
|
|
73
|
+
This is equivalent to `stream.frombuffer(buffer.fromstring(size))`.
|
|
74
|
+
]=]
|
|
75
|
+
function stream.fromstring(str: string): Stream
|
|
76
|
+
local buf = buffer.fromstring(str)
|
|
77
|
+
return {
|
|
78
|
+
b = buf,
|
|
79
|
+
l = buffer.len(buf),
|
|
80
|
+
o = 0,
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
-------------------------------------------------------------------------
|
|
85
|
+
-- Read
|
|
86
|
+
|
|
87
|
+
--[=[
|
|
88
|
+
@within stream
|
|
89
|
+
]=]
|
|
90
|
+
function stream.readu8(s: Stream): number
|
|
91
|
+
local n = buffer.readu8(s.b, s.o)
|
|
92
|
+
s.o += 1
|
|
93
|
+
return n
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
--[=[
|
|
97
|
+
@within stream
|
|
98
|
+
]=]
|
|
99
|
+
function stream.readi8(s: Stream): number
|
|
100
|
+
local n = buffer.readi8(s.b, s.o)
|
|
101
|
+
s.o += 1
|
|
102
|
+
return n
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
--[=[
|
|
106
|
+
@within stream
|
|
107
|
+
]=]
|
|
108
|
+
function stream.readu16(s: Stream): number
|
|
109
|
+
local n = buffer.readu16(s.b, s.o)
|
|
110
|
+
s.o += 2
|
|
111
|
+
return n
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
--[=[
|
|
115
|
+
@within stream
|
|
116
|
+
]=]
|
|
117
|
+
function stream.readi16(s: Stream): number
|
|
118
|
+
local n = buffer.readi16(s.b, s.o)
|
|
119
|
+
s.o += 2
|
|
120
|
+
return n
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
--[=[
|
|
124
|
+
@within stream
|
|
125
|
+
]=]
|
|
126
|
+
function stream.readu32(s: Stream): number
|
|
127
|
+
local n = buffer.readu32(s.b, s.o)
|
|
128
|
+
s.o += 4
|
|
129
|
+
return n
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
--[=[
|
|
133
|
+
@within stream
|
|
134
|
+
]=]
|
|
135
|
+
function stream.readi32(s: Stream): number
|
|
136
|
+
local n = buffer.readi32(s.b, s.o)
|
|
137
|
+
s.o += 4
|
|
138
|
+
return n
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
--[=[
|
|
142
|
+
@within stream
|
|
143
|
+
]=]
|
|
144
|
+
function stream.readf32(s: Stream): number
|
|
145
|
+
local n = buffer.readf32(s.b, s.o)
|
|
146
|
+
s.o += 4
|
|
147
|
+
return n
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
--[=[
|
|
151
|
+
@within stream
|
|
152
|
+
]=]
|
|
153
|
+
function stream.readf64(s: Stream): number
|
|
154
|
+
local n = buffer.readf64(s.b, s.o)
|
|
155
|
+
s.o += 8
|
|
156
|
+
return n
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
--[=[
|
|
160
|
+
@within stream
|
|
161
|
+
]=]
|
|
162
|
+
function stream.readstring(s: Stream, count: number): string
|
|
163
|
+
local str = buffer.readstring(s.b, s.o, count)
|
|
164
|
+
s.o += count
|
|
165
|
+
return str
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
--[=[
|
|
169
|
+
@within stream
|
|
170
|
+
|
|
171
|
+
Reads a string previously written using `stream.writelstring`. This function
|
|
172
|
+
assumes that the length of the string is written at the beginning as a u32 int.
|
|
173
|
+
]=]
|
|
174
|
+
function stream.readlstring(s: Stream): string
|
|
175
|
+
local count = stream.readu32(s)
|
|
176
|
+
return stream.readstring(s, count)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
--[=[
|
|
180
|
+
@within stream
|
|
181
|
+
|
|
182
|
+
Equivalent to `stream.readvectorf32`.
|
|
183
|
+
]=]
|
|
184
|
+
function stream.readvector(s: Stream): vector
|
|
185
|
+
local b = s.b
|
|
186
|
+
local o = s.o
|
|
187
|
+
local x = buffer.readf32(b, o + 0)
|
|
188
|
+
local y = buffer.readf32(b, o + 4)
|
|
189
|
+
local z = buffer.readf32(b, o + 8)
|
|
190
|
+
s.o += 12
|
|
191
|
+
return vector.create(x, y, z)
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
--[=[
|
|
195
|
+
@within stream
|
|
196
|
+
]=]
|
|
197
|
+
function stream.readvectorf32(s: Stream): vector
|
|
198
|
+
local b = s.b
|
|
199
|
+
local o = s.o
|
|
200
|
+
local x = buffer.readf32(b, o + 0)
|
|
201
|
+
local y = buffer.readf32(b, o + 4)
|
|
202
|
+
local z = buffer.readf32(b, o + 8)
|
|
203
|
+
s.o += 12
|
|
204
|
+
return vector.create(x, y, z)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
--[=[
|
|
208
|
+
@within stream
|
|
209
|
+
]=]
|
|
210
|
+
function stream.readvectoru32(s: Stream): vector
|
|
211
|
+
local b = s.b
|
|
212
|
+
local o = s.o
|
|
213
|
+
local x = buffer.readu32(b, o + 0)
|
|
214
|
+
local y = buffer.readu32(b, o + 4)
|
|
215
|
+
local z = buffer.readu32(b, o + 8)
|
|
216
|
+
s.o += 12
|
|
217
|
+
return vector.create(x, y, z)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
--[=[
|
|
221
|
+
@within stream
|
|
222
|
+
]=]
|
|
223
|
+
function stream.readvectori32(s: Stream): vector
|
|
224
|
+
local b = s.b
|
|
225
|
+
local o = s.o
|
|
226
|
+
local x = buffer.readi32(b, o + 0)
|
|
227
|
+
local y = buffer.readi32(b, o + 4)
|
|
228
|
+
local z = buffer.readi32(b, o + 8)
|
|
229
|
+
s.o += 12
|
|
230
|
+
return vector.create(x, y, z)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
--[=[
|
|
234
|
+
@within stream
|
|
235
|
+
]=]
|
|
236
|
+
function stream.readvectoru16(s: Stream): vector
|
|
237
|
+
local b = s.b
|
|
238
|
+
local o = s.o
|
|
239
|
+
local x = buffer.readu16(b, o + 0)
|
|
240
|
+
local y = buffer.readu16(b, o + 2)
|
|
241
|
+
local z = buffer.readu16(b, o + 4)
|
|
242
|
+
s.o += 6
|
|
243
|
+
return vector.create(x, y, z)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
--[=[
|
|
247
|
+
@within stream
|
|
248
|
+
]=]
|
|
249
|
+
function stream.readvectori16(s: Stream): vector
|
|
250
|
+
local b = s.b
|
|
251
|
+
local o = s.o
|
|
252
|
+
local x = buffer.readi16(b, o + 0)
|
|
253
|
+
local y = buffer.readi16(b, o + 2)
|
|
254
|
+
local z = buffer.readi16(b, o + 4)
|
|
255
|
+
s.o += 6
|
|
256
|
+
return vector.create(x, y, z)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
--[=[
|
|
260
|
+
@within stream
|
|
261
|
+
]=]
|
|
262
|
+
function stream.readvectoru8(s: Stream): vector
|
|
263
|
+
local b = s.b
|
|
264
|
+
local o = s.o
|
|
265
|
+
local x = buffer.readu8(b, o + 0)
|
|
266
|
+
local y = buffer.readu8(b, o + 1)
|
|
267
|
+
local z = buffer.readu8(b, o + 2)
|
|
268
|
+
s.o += 3
|
|
269
|
+
return vector.create(x, y, z)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
--[=[
|
|
273
|
+
@within stream
|
|
274
|
+
]=]
|
|
275
|
+
function stream.readvectori8(s: Stream): vector
|
|
276
|
+
local b = s.b
|
|
277
|
+
local o = s.o
|
|
278
|
+
local x = buffer.readi8(b, o + 0)
|
|
279
|
+
local y = buffer.readi8(b, o + 1)
|
|
280
|
+
local z = buffer.readi8(b, o + 2)
|
|
281
|
+
s.o += 3
|
|
282
|
+
return vector.create(x, y, z)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
-------------------------------------------------------------------------
|
|
286
|
+
-- Write
|
|
287
|
+
|
|
288
|
+
--[=[
|
|
289
|
+
@within stream
|
|
290
|
+
]=]
|
|
291
|
+
function stream.writeu8(s: Stream, n: number)
|
|
292
|
+
buffer.writeu8(s.b, s.o, n)
|
|
293
|
+
s.o += 1
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
--[=[
|
|
297
|
+
@within stream
|
|
298
|
+
]=]
|
|
299
|
+
function stream.writei8(s: Stream, n: number)
|
|
300
|
+
buffer.writei8(s.b, s.o, n)
|
|
301
|
+
s.o += 1
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
--[=[
|
|
305
|
+
@within stream
|
|
306
|
+
]=]
|
|
307
|
+
function stream.writeu16(s: Stream, n: number)
|
|
308
|
+
buffer.writeu16(s.b, s.o, n)
|
|
309
|
+
s.o += 2
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
--[=[
|
|
313
|
+
@within stream
|
|
314
|
+
]=]
|
|
315
|
+
function stream.writei16(s: Stream, n: number)
|
|
316
|
+
buffer.writei16(s.b, s.o, n)
|
|
317
|
+
s.o += 2
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
--[=[
|
|
321
|
+
@within stream
|
|
322
|
+
]=]
|
|
323
|
+
function stream.writeu32(s: Stream, n: number)
|
|
324
|
+
buffer.writeu32(s.b, s.o, n)
|
|
325
|
+
s.o += 4
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
--[=[
|
|
329
|
+
@within stream
|
|
330
|
+
]=]
|
|
331
|
+
function stream.writei32(s: Stream, n: number)
|
|
332
|
+
buffer.writei32(s.b, s.o, n)
|
|
333
|
+
s.o += 4
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
--[=[
|
|
337
|
+
@within stream
|
|
338
|
+
]=]
|
|
339
|
+
function stream.writef32(s: Stream, n: number)
|
|
340
|
+
buffer.writef32(s.b, s.o, n)
|
|
341
|
+
s.o += 4
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
--[=[
|
|
345
|
+
@within stream
|
|
346
|
+
]=]
|
|
347
|
+
function stream.writef64(s: Stream, n: number)
|
|
348
|
+
buffer.writef64(s.b, s.o, n)
|
|
349
|
+
s.o += 8
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
--[=[
|
|
353
|
+
@within stream
|
|
354
|
+
]=]
|
|
355
|
+
function stream.writestring(s: Stream, str: string, count: number?)
|
|
356
|
+
buffer.writestring(s.b, s.o, str, count)
|
|
357
|
+
s.o += count or #str
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
--[=[
|
|
361
|
+
@within stream
|
|
362
|
+
]=]
|
|
363
|
+
function stream.writelstring(s: Stream, str: string, count: number?)
|
|
364
|
+
stream.writeu32(s, count or #str)
|
|
365
|
+
stream.writestring(s, str, count)
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
--[=[
|
|
369
|
+
@within stream
|
|
370
|
+
|
|
371
|
+
Equivalent to `stream.writevectorf32`.
|
|
372
|
+
]=]
|
|
373
|
+
function stream.writevector(s: Stream, v: vector)
|
|
374
|
+
local b = s.b
|
|
375
|
+
local o = s.o
|
|
376
|
+
buffer.writef32(b, o + 0, v.x)
|
|
377
|
+
buffer.writef32(b, o + 4, v.y)
|
|
378
|
+
buffer.writef32(b, o + 8, v.z)
|
|
379
|
+
s.o += 12
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
--[=[
|
|
383
|
+
@within stream
|
|
384
|
+
]=]
|
|
385
|
+
function stream.writevectorf32(s: Stream, v: vector)
|
|
386
|
+
local b = s.b
|
|
387
|
+
local o = s.o
|
|
388
|
+
buffer.writef32(b, o + 0, v.x)
|
|
389
|
+
buffer.writef32(b, o + 4, v.y)
|
|
390
|
+
buffer.writef32(b, o + 8, v.z)
|
|
391
|
+
s.o += 12
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
--[=[
|
|
395
|
+
@within stream
|
|
396
|
+
]=]
|
|
397
|
+
function stream.writevectoru32(s: Stream, v: vector)
|
|
398
|
+
local b = s.b
|
|
399
|
+
local o = s.o
|
|
400
|
+
buffer.writeu32(b, o + 0, v.x)
|
|
401
|
+
buffer.writeu32(b, o + 4, v.y)
|
|
402
|
+
buffer.writeu32(b, o + 8, v.z)
|
|
403
|
+
s.o += 12
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
--[=[
|
|
407
|
+
@within stream
|
|
408
|
+
]=]
|
|
409
|
+
function stream.writevectori32(s: Stream, v: vector)
|
|
410
|
+
local b = s.b
|
|
411
|
+
local o = s.o
|
|
412
|
+
buffer.writei32(b, o + 0, v.x)
|
|
413
|
+
buffer.writei32(b, o + 4, v.y)
|
|
414
|
+
buffer.writei32(b, o + 8, v.z)
|
|
415
|
+
s.o += 12
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
--[=[
|
|
419
|
+
@within stream
|
|
420
|
+
]=]
|
|
421
|
+
function stream.writevectoru16(s: Stream, v: vector)
|
|
422
|
+
local b = s.b
|
|
423
|
+
local o = s.o
|
|
424
|
+
buffer.writeu16(b, o + 0, v.x)
|
|
425
|
+
buffer.writeu16(b, o + 2, v.y)
|
|
426
|
+
buffer.writeu16(b, o + 4, v.z)
|
|
427
|
+
s.o += 6
|
|
428
|
+
end
|
|
429
|
+
|
|
430
|
+
--[=[
|
|
431
|
+
@within stream
|
|
432
|
+
]=]
|
|
433
|
+
function stream.writevectori16(s: Stream, v: vector)
|
|
434
|
+
local b = s.b
|
|
435
|
+
local o = s.o
|
|
436
|
+
buffer.writei16(b, o + 0, v.x)
|
|
437
|
+
buffer.writei16(b, o + 2, v.y)
|
|
438
|
+
buffer.writei16(b, o + 4, v.z)
|
|
439
|
+
s.o += 6
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
--[=[
|
|
443
|
+
@within stream
|
|
444
|
+
]=]
|
|
445
|
+
function stream.writevectoru8(s: Stream, v: vector)
|
|
446
|
+
local b = s.b
|
|
447
|
+
local o = s.o
|
|
448
|
+
buffer.writeu8(b, o + 0, v.x)
|
|
449
|
+
buffer.writeu8(b, o + 1, v.y)
|
|
450
|
+
buffer.writeu8(b, o + 2, v.z)
|
|
451
|
+
s.o += 3
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
--[=[
|
|
455
|
+
@within stream
|
|
456
|
+
]=]
|
|
457
|
+
function stream.writevectori8(s: Stream, v: vector)
|
|
458
|
+
local b = s.b
|
|
459
|
+
local o = s.o
|
|
460
|
+
buffer.writei8(b, o + 0, v.x)
|
|
461
|
+
buffer.writei8(b, o + 1, v.y)
|
|
462
|
+
buffer.writei8(b, o + 2, v.z)
|
|
463
|
+
s.o += 3
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
-------------------------------------------------------------------------
|
|
467
|
+
|
|
468
|
+
--[=[
|
|
469
|
+
@within stream
|
|
470
|
+
|
|
471
|
+
Returns the length of the backing buffer.
|
|
472
|
+
]=]
|
|
473
|
+
function stream.len(s: Stream): number
|
|
474
|
+
return s.l
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
--[=[
|
|
478
|
+
@within stream
|
|
479
|
+
|
|
480
|
+
Returns the position of the stream's cursor.
|
|
481
|
+
]=]
|
|
482
|
+
function stream.pos(s: Stream): number
|
|
483
|
+
return s.o
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
--[=[
|
|
487
|
+
@within stream
|
|
488
|
+
|
|
489
|
+
Copy `count` bytes from `source` into `target`. The provided streams' cursors are
|
|
490
|
+
incremented by `count`.
|
|
491
|
+
]=]
|
|
492
|
+
function stream.copy(target: Stream, source: Stream, count: number)
|
|
493
|
+
buffer.copy(target.b, target.o, source.b, source.o, count)
|
|
494
|
+
target.o += count
|
|
495
|
+
source.o += count
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
--[=[
|
|
499
|
+
@within stream
|
|
500
|
+
|
|
501
|
+
Copy `count` bytes from the `source` stream into the `target` buffer. The `source` stream
|
|
502
|
+
cursor is incremented by `count`.
|
|
503
|
+
]=]
|
|
504
|
+
function stream.copytobuffer(target: buffer, targetOffset: number, source: Stream, count: number)
|
|
505
|
+
buffer.copy(target, targetOffset, source.b, source.o, count)
|
|
506
|
+
source.o += count
|
|
507
|
+
end
|
|
508
|
+
|
|
509
|
+
--[=[
|
|
510
|
+
@within stream
|
|
511
|
+
|
|
512
|
+
Copy `count` bytes from the `source` buffer (optionally offset by `sourceOffset`) into the
|
|
513
|
+
`target` stream. The `target` stream cursor is incremented by `count`.
|
|
514
|
+
]=]
|
|
515
|
+
function stream.copyfrombuffer(target: Stream, source: buffer, sourceOffset: number?, count: number)
|
|
516
|
+
buffer.copy(target.b, target.o, source, sourceOffset, count)
|
|
517
|
+
target.o += count
|
|
518
|
+
end
|
|
519
|
+
|
|
520
|
+
--[=[
|
|
521
|
+
@within stream
|
|
522
|
+
|
|
523
|
+
Moves the cursor relative to the beginning of the stream.
|
|
524
|
+
]=]
|
|
525
|
+
function stream.seek(s: Stream, offset: number)
|
|
526
|
+
s.o = offset
|
|
527
|
+
if s.o < 0 or s.o > s.l then
|
|
528
|
+
error("seek out of bounds", 2)
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
--[=[
|
|
533
|
+
@within stream
|
|
534
|
+
|
|
535
|
+
Moves the cursor backward relative to the end of the stream.
|
|
536
|
+
]=]
|
|
537
|
+
function stream.seekend(s: Stream, offset: number)
|
|
538
|
+
s.o = s.l - offset
|
|
539
|
+
if s.o < 0 or s.o > s.l then
|
|
540
|
+
error("seek out of bounds", 2)
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
--[=[
|
|
545
|
+
@within stream
|
|
546
|
+
|
|
547
|
+
Moves the cursor forward relative to the current cursor position.
|
|
548
|
+
]=]
|
|
549
|
+
function stream.seekforward(s: Stream, offset: number)
|
|
550
|
+
s.o += offset
|
|
551
|
+
if s.o < 0 or s.o > s.l then
|
|
552
|
+
error("seek out of bounds", 2)
|
|
553
|
+
end
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
--[=[
|
|
557
|
+
@within stream
|
|
558
|
+
|
|
559
|
+
Moves the cursor backward relative to the current cursor position.
|
|
560
|
+
]=]
|
|
561
|
+
function stream.seekbackward(s: Stream, offset: number)
|
|
562
|
+
s.o -= offset
|
|
563
|
+
if s.o < 0 or s.o > s.l then
|
|
564
|
+
error("seek out of bounds", 2)
|
|
565
|
+
end
|
|
566
|
+
end
|
|
567
|
+
|
|
568
|
+
--[=[
|
|
569
|
+
@within stream
|
|
570
|
+
|
|
571
|
+
Gets the backing buffer for the stream.
|
|
572
|
+
]=]
|
|
573
|
+
function stream.buffer(s: Stream): buffer
|
|
574
|
+
return s.b
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
--[=[
|
|
578
|
+
@within stream
|
|
579
|
+
|
|
580
|
+
Returns the backing buffer as a string.
|
|
581
|
+
]=]
|
|
582
|
+
function stream.tostring(s: Stream): string
|
|
583
|
+
return buffer.tostring(s.b)
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
--[=[
|
|
587
|
+
@within stream
|
|
588
|
+
|
|
589
|
+
Returns `true` if the cursor is at the end of the stream.
|
|
590
|
+
]=]
|
|
591
|
+
function stream.atend(s: Stream): boolean
|
|
592
|
+
return s.o == s.l
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
-------------------------------------------------------------------------
|
|
596
|
+
|
|
597
|
+
return table.freeze(stream)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@rbxutil/stream",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"main": "init.luau",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "git+https://github.com/Sleitnick/RbxUtil.git"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"types": "index.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"./*",
|
|
12
|
+
"!*.toml",
|
|
13
|
+
"!*.json"
|
|
14
|
+
],
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "sleitnick/stream"
|
|
3
|
+
description = "Stream abstraction wrapper around buffers"
|
|
4
|
+
version = "0.1.1"
|
|
5
|
+
license = "MIT"
|
|
6
|
+
authors = ["Stephen Leitnick"]
|
|
7
|
+
registry = "https://github.com/UpliftGames/wally-index"
|
|
8
|
+
realm = "shared"
|
|
9
|
+
exclude = ["node_modules", "package.json", "**/*.ts"]
|