cluaupp 1.5.2 → 2.0.0-beta.2

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.
Files changed (210) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +29 -41
  3. package/api/generated/bench-latest.json +43 -21
  4. package/api/generated/lsp-index.json +1 -1
  5. package/api/manifests/roblox-target.manifest.json +5 -5
  6. package/api/normalized/roblox-target.profile.json +8729 -267
  7. package/api/roblox/luau-builtins.d.luau +185 -0
  8. package/api/roblox/surface.json +1 -0
  9. package/api/roblox-api.lock.json +11 -2
  10. package/bin/cluaupp.js +38 -0
  11. package/editors/vscode/README.md +1 -1
  12. package/editors/vscode/package.json +50 -15
  13. package/editors/vscode/snippets/flare.json +1 -1
  14. package/editors/vscode/snippets/hive.json +1 -1
  15. package/editors/vscode/syntaxes/clpp.tmLanguage.json +211 -0
  16. package/examples/README.md +9 -9
  17. package/examples/game/cluaupp.config.json +2 -2
  18. package/examples/game/default.project.json +4 -15
  19. package/examples/game/out/ReplicatedStorage/Shared/GameInfo.luau +8 -0
  20. package/examples/game/out/ReplicatedStorage/Shared/GameInfo.luau.map.json +13 -0
  21. package/examples/game/out/ServerScriptService/Leaderstats.server.luau +26 -0
  22. package/examples/game/out/ServerScriptService/Leaderstats.server.luau.map.json +13 -0
  23. package/examples/game/out/ServerScriptService/Main.server.luau +15 -0
  24. package/examples/game/out/ServerScriptService/Main.server.luau.map.json +13 -0
  25. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Main.client.luau +10 -0
  26. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Main.client.luau.map.json +13 -0
  27. package/examples/game/src/ReplicatedStorage/Shared/GameInfo.clp +1 -0
  28. package/examples/game/src/ServerScriptService/Leaderstats.server.clp +18 -0
  29. package/examples/game/src/ServerScriptService/Main.server.clp +9 -0
  30. package/examples/game/src/StarterPlayer/StarterPlayerScripts/Main.client.clp +4 -0
  31. package/generated/api/build-profile.js +1 -1
  32. package/generated/api/loader.js +2 -2
  33. package/generated/api/surface/build.js +328 -0
  34. package/generated/api/surface/luau-defs.js +595 -0
  35. package/generated/api/surface/model.js +8 -0
  36. package/generated/api-cli.js +2 -2
  37. package/generated/cli.js +18 -17
  38. package/generated/clpp/contract.js +6 -3
  39. package/generated/clpp/handshake.js +36 -0
  40. package/generated/clpp/modules.js +20 -9
  41. package/generated/clpp/runner.js +62 -31
  42. package/generated/compile.js +18 -1
  43. package/generated/compiler/ast.js +3 -0
  44. package/generated/compiler/checker/calls.js +999 -0
  45. package/generated/compiler/checker/checker.js +1215 -0
  46. package/generated/compiler/checker/exprs.js +791 -0
  47. package/generated/compiler/checker/flow.js +168 -0
  48. package/generated/compiler/checker/members.js +763 -0
  49. package/generated/compiler/checker/statements.js +792 -0
  50. package/generated/compiler/checker/symbols.js +90 -0
  51. package/generated/compiler/checker/typeops.js +348 -0
  52. package/generated/compiler/checker/yields.js +115 -0
  53. package/generated/compiler/diagnostics.js +138 -0
  54. package/generated/compiler/emit/emitter.js +2356 -0
  55. package/generated/compiler/emit/luau-types.js +137 -0
  56. package/generated/compiler/emit/names.js +130 -0
  57. package/generated/compiler/emit/runtime.js +432 -0
  58. package/generated/compiler/lexer.js +403 -0
  59. package/generated/compiler/parser.js +1881 -0
  60. package/generated/compiler/project.js +332 -0
  61. package/generated/compiler/roblox/api.js +388 -0
  62. package/generated/compiler/roblox/context.js +100 -0
  63. package/generated/compiler/source.js +59 -0
  64. package/generated/compiler/stdlib.js +232 -0
  65. package/generated/compiler/types.js +250 -0
  66. package/generated/intellisense.js +1 -15
  67. package/generated/lsp.js +1 -1
  68. package/generated/target/build-cache.js +4 -4
  69. package/generated/target/datamodel-generate.js +12 -0
  70. package/generated/target/gen-rojo-tree.js +15 -0
  71. package/generated/target/source-map.js +61 -8
  72. package/generated/target/studio-bridge.js +1 -0
  73. package/generated/utils/project.js +104 -31
  74. package/include/README.md +5 -0
  75. package/native/bin/.gitkeep +1 -0
  76. package/package.json +17 -6
  77. package/plugins/CluauppNav/Plugin.luau +28 -4
  78. package/rust/cluaupp/Cargo.lock +795 -0
  79. package/rust/cluaupp/Cargo.toml +17 -0
  80. package/rust/cluaupp/src/main.rs +717 -0
  81. package/scripts/postinstall-native.js +56 -0
  82. package/skills/README.md +3 -3
  83. package/skills/clpp-hive-flare/SKILL.md +30 -26
  84. package/skills/clpp-language/SKILL.md +67 -74
  85. package/skills/clpp-language/compiler.md +24 -36
  86. package/skills/clpp-style/SKILL.md +31 -44
  87. package/src/api/build-profile.ts +1 -1
  88. package/src/api/loader.ts +2 -2
  89. package/src/api/surface/build.ts +374 -0
  90. package/src/api/surface/luau-defs.ts +635 -0
  91. package/src/api/surface/model.ts +96 -0
  92. package/src/api-cli.ts +2 -2
  93. package/src/cli.ts +19 -18
  94. package/src/clpp/contract.ts +20 -3
  95. package/src/clpp/handshake.ts +25 -0
  96. package/src/clpp/modules.ts +17 -10
  97. package/src/clpp/runner.ts +52 -34
  98. package/src/compile.ts +20 -2
  99. package/src/compiler/ast.ts +336 -0
  100. package/src/compiler/checker/calls.ts +1025 -0
  101. package/src/compiler/checker/checker.ts +1352 -0
  102. package/src/compiler/checker/exprs.ts +805 -0
  103. package/src/compiler/checker/flow.ts +174 -0
  104. package/src/compiler/checker/members.ts +793 -0
  105. package/src/compiler/checker/statements.ts +802 -0
  106. package/src/compiler/checker/symbols.ts +219 -0
  107. package/src/compiler/checker/typeops.ts +355 -0
  108. package/src/compiler/checker/yields.ts +120 -0
  109. package/src/compiler/diagnostics.ts +163 -0
  110. package/src/compiler/emit/emitter.ts +2486 -0
  111. package/src/compiler/emit/luau-types.ts +143 -0
  112. package/src/compiler/emit/names.ts +130 -0
  113. package/src/compiler/emit/runtime.ts +438 -0
  114. package/src/compiler/lexer.ts +444 -0
  115. package/src/compiler/parser.ts +1943 -0
  116. package/src/compiler/project.ts +354 -0
  117. package/src/compiler/roblox/api.ts +408 -0
  118. package/src/compiler/roblox/context.ts +108 -0
  119. package/src/compiler/source.ts +67 -0
  120. package/src/compiler/stdlib.ts +256 -0
  121. package/src/compiler/types.ts +313 -0
  122. package/src/intellisense.ts +1 -13
  123. package/src/lsp.ts +1 -1
  124. package/src/target/build-cache.ts +5 -8
  125. package/src/target/datamodel-generate.ts +12 -1
  126. package/src/target/gen-rojo-tree.ts +15 -0
  127. package/src/target/source-map.ts +65 -27
  128. package/src/target/studio-bridge.ts +3 -0
  129. package/src/types.ts +3 -0
  130. package/src/utils/project.ts +99 -37
  131. package/templates/README.md +7 -0
  132. package/templates/{game → game-modern}/cluaupp.config.json +2 -2
  133. package/templates/{game → game-modern}/package.json +1 -2
  134. package/templates/game-modern/rokit.toml +2 -0
  135. package/templates/game-modern/src/ReplicatedStorage/Shared/GameInfo.clp +1 -0
  136. package/templates/game-modern/src/ServerScriptService/Handlers/Guard.server.clp +4 -0
  137. package/templates/game-modern/src/ServerScriptService/Main.server.clp +8 -0
  138. package/templates/game-modern/src/StarterPlayer/StarterPlayerScripts/Main.client.clp +4 -0
  139. package/examples/game/out/ReplicatedStorage/Shared/Constants/Datas/TemplateData.luau +0 -29
  140. package/examples/game/out/ReplicatedStorage/Shared/Constants/Datas/TemplateData.luau.map.json +0 -13
  141. package/examples/game/out/ReplicatedStorage/Shared/Net/Net.luau +0 -83
  142. package/examples/game/out/ReplicatedStorage/Shared/Net/Net.luau.map.json +0 -13
  143. package/examples/game/out/ServerScriptService/Boot/DataBoot.server.luau +0 -18
  144. package/examples/game/out/ServerScriptService/Boot/DataBoot.server.luau.map.json +0 -13
  145. package/examples/game/out/ServerScriptService/Configuration/ServerConfig.luau +0 -14
  146. package/examples/game/out/ServerScriptService/Configuration/ServerConfig.luau.map.json +0 -13
  147. package/examples/game/out/ServerScriptService/Handlers/Guard.server.luau +0 -15
  148. package/examples/game/out/ServerScriptService/Handlers/Guard.server.luau.map.json +0 -13
  149. package/examples/game/out/ServerScriptService/Handlers/PlayerHandler.server.luau +0 -50
  150. package/examples/game/out/ServerScriptService/Handlers/PlayerHandler.server.luau.map.json +0 -13
  151. package/examples/game/out/StarterPlayer/StarterCharacterScripts/Character/CharacterReady.client.luau +0 -12
  152. package/examples/game/out/StarterPlayer/StarterCharacterScripts/Character/CharacterReady.client.luau.map.json +0 -13
  153. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.luau +0 -16
  154. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.luau.map.json +0 -13
  155. package/examples/game/src/Client/Controllers/DataController.client.clpp +0 -7
  156. package/examples/game/src/Client/Main.client.clpp +0 -4
  157. package/examples/game/src/Declarations/Net.flare +0 -5
  158. package/examples/game/src/Include/GameTypes.clh +0 -40
  159. package/examples/game/src/Modules/Core/Guard.server.clpp +0 -7
  160. package/examples/game/src/Modules/Core/PlayerHandler.server.clpp +0 -23
  161. package/examples/game/src/Server/Boot/DataBoot.server.clpp +0 -13
  162. package/examples/game/src/Server/Main.server.clpp +0 -4
  163. package/templates/game/.clangd +0 -25
  164. package/templates/game/.vscode/extensions.json +0 -8
  165. package/templates/game/.vscode/settings.json +0 -17
  166. package/templates/game/Packages/.gitkeep +0 -0
  167. package/templates/game/compile_flags.txt +0 -6
  168. package/templates/game/default.project.json +0 -41
  169. package/templates/game/include/clpp/datatypes.clh +0 -575
  170. package/templates/game/include/clpp/generated/enums.clh +0 -4920
  171. package/templates/game/include/clpp/generated/instances.clh +0 -87182
  172. package/templates/game/include/clpp/libs/arrayindexer.clh +0 -12
  173. package/templates/game/include/clpp/libs/axiom.clh +0 -154
  174. package/templates/game/include/clpp/libs/bloom.clh +0 -58
  175. package/templates/game/include/clpp/libs/coil.clh +0 -37
  176. package/templates/game/include/clpp/libs/crest.clh +0 -22
  177. package/templates/game/include/clpp/libs/echo.clh +0 -52
  178. package/templates/game/include/clpp/libs/ember.clh +0 -17
  179. package/templates/game/include/clpp/libs/flare.clh +0 -65
  180. package/templates/game/include/clpp/libs/gleam.clh +0 -111
  181. package/templates/game/include/clpp/libs/guide.clh +0 -42
  182. package/templates/game/include/clpp/libs/helm.clh +0 -31
  183. package/templates/game/include/clpp/libs/hive.clh +0 -20
  184. package/templates/game/include/clpp/libs/keep.clh +0 -158
  185. package/templates/game/include/clpp/libs/lens.clh +0 -24
  186. package/templates/game/include/clpp/libs/mint.clh +0 -28
  187. package/templates/game/include/clpp/libs/net.clh +0 -31
  188. package/templates/game/include/clpp/libs/occlude.clh +0 -15
  189. package/templates/game/include/clpp/libs/pin.clh +0 -28
  190. package/templates/game/include/clpp/libs/promise.clh +0 -24
  191. package/templates/game/include/clpp/libs/roster.clh +0 -123
  192. package/templates/game/include/clpp/libs/shift.clh +0 -22
  193. package/templates/game/include/clpp/libs/spark.clh +0 -28
  194. package/templates/game/include/clpp/libs/stage.clh +0 -23
  195. package/templates/game/include/clpp/libs/sweep.clh +0 -23
  196. package/templates/game/include/clpp/libs/trace.clh +0 -18
  197. package/templates/game/include/clpp/libs/ward.clh +0 -19
  198. package/templates/game/include/clpp/libs.clh +0 -31
  199. package/templates/game/include/clpp/roblox.clh +0 -41
  200. package/templates/game/rokit.toml +0 -5
  201. package/templates/game/src/Client/Controllers/DataController.client.clpp +0 -7
  202. package/templates/game/src/Client/Main.client.clpp +0 -4
  203. package/templates/game/src/Declarations/Net.flare +0 -5
  204. package/templates/game/src/Include/GameTypes.clh +0 -40
  205. package/templates/game/src/Modules/Core/Guard.server.clpp +0 -7
  206. package/templates/game/src/Modules/Core/PlayerHandler.server.clpp +0 -24
  207. package/templates/game/src/Server/Boot/DataBoot.server.clpp +0 -13
  208. package/templates/game/src/Server/Main.server.clpp +0 -4
  209. package/templates/game/stylua.toml +0 -9
  210. package/templates/game/wally.toml +0 -12
@@ -0,0 +1,185 @@
1
+ -- Luau standard library surface used by the Cluaupp checker (the Roblox definitions file only
2
+ -- declares the engine layer). Same syntax as luau-lsp definition files; parsed by
3
+ -- src/api/surface/build.ts. Keep signatures in sync with https://luau.org/library.
4
+
5
+ declare function print(...: any)
6
+ declare function error(message: any, level: number?): never
7
+ declare function assert<T>(value: T, message: string?): T
8
+ declare function tostring(value: any): string
9
+ declare function tonumber(value: any, base: number?): number?
10
+ declare function typeof(value: any): string
11
+ declare function type(value: any): string
12
+ declare function select(index: any, ...: any): any
13
+ declare function pairs(t: { [any]: any }): any
14
+ declare function ipairs(t: { any }): any
15
+ declare function next(t: { [any]: any }, index: any?): any
16
+ declare function pcall(f: any, ...: any): (boolean, any)
17
+ declare function xpcall(f: any, handler: any, ...: any): (boolean, any)
18
+ declare function require(module: any): any
19
+ declare function setmetatable(t: any, mt: any): any
20
+ declare function getmetatable(t: any): any
21
+ declare function rawget(t: any, k: any): any
22
+ declare function rawset(t: any, k: any, v: any): any
23
+ declare function rawequal(a: any, b: any): boolean
24
+ declare function rawlen(t: any): number
25
+ declare function unpack(t: { any }, i: number?, j: number?): ...any
26
+ declare function newproxy(addMetatable: boolean?): any
27
+ declare function gcinfo(): number
28
+
29
+ declare math: {
30
+ pi: number,
31
+ huge: number,
32
+ abs: (x: number) -> number,
33
+ acos: (x: number) -> number,
34
+ asin: (x: number) -> number,
35
+ atan: (x: number) -> number,
36
+ atan2: (y: number, x: number) -> number,
37
+ ceil: (x: number) -> number,
38
+ clamp: (x: number, min: number, max: number) -> number,
39
+ cos: (x: number) -> number,
40
+ cosh: (x: number) -> number,
41
+ deg: (x: number) -> number,
42
+ exp: (x: number) -> number,
43
+ floor: (x: number) -> number,
44
+ fmod: (x: number, y: number) -> number,
45
+ frexp: (x: number) -> (number, number),
46
+ ldexp: (s: number, e: number) -> number,
47
+ log: (x: number, base: number?) -> number,
48
+ log10: (x: number) -> number,
49
+ map: (x: number, inmin: number, inmax: number, outmin: number, outmax: number) -> number,
50
+ max: (x: number, ...number) -> number,
51
+ min: (x: number, ...number) -> number,
52
+ modf: (x: number) -> (number, number),
53
+ noise: (x: number, y: number?, z: number?) -> number,
54
+ pow: (x: number, y: number) -> number,
55
+ rad: (x: number) -> number,
56
+ random: (m: number?, n: number?) -> number,
57
+ randomseed: (seed: number) -> (),
58
+ round: (x: number) -> number,
59
+ sign: (x: number) -> number,
60
+ sin: (x: number) -> number,
61
+ sinh: (x: number) -> number,
62
+ sqrt: (x: number) -> number,
63
+ tan: (x: number) -> number,
64
+ tanh: (x: number) -> number,
65
+ }
66
+
67
+ declare string: {
68
+ byte: (s: string, i: number?, j: number?) -> ...number,
69
+ char: (...number) -> string,
70
+ find: (s: string, pattern: string, init: number?, plain: boolean?) -> (number?, number?),
71
+ format: (format: string, ...any) -> string,
72
+ gmatch: (s: string, pattern: string) -> any,
73
+ gsub: (s: string, pattern: string, repl: any, n: number?) -> (string, number),
74
+ len: (s: string) -> number,
75
+ lower: (s: string) -> string,
76
+ match: (s: string, pattern: string, init: number?) -> string?,
77
+ pack: (format: string, ...any) -> string,
78
+ packsize: (format: string) -> number,
79
+ rep: (s: string, n: number, sep: string?) -> string,
80
+ reverse: (s: string) -> string,
81
+ split: (s: string, separator: string?) -> { string },
82
+ sub: (s: string, i: number, j: number?) -> string,
83
+ unpack: (format: string, s: string, init: number?) -> ...any,
84
+ upper: (s: string) -> string,
85
+ }
86
+
87
+ declare table: {
88
+ clear: (t: { [any]: any }) -> (),
89
+ clone: <T>(t: T) -> T,
90
+ concat: (t: { any }, sep: string?, i: number?, j: number?) -> string,
91
+ create: (count: number, value: any?) -> { any },
92
+ find: (t: { any }, value: any, init: number?) -> number?,
93
+ freeze: <T>(t: T) -> T,
94
+ insert: (t: { any }, ...any) -> (),
95
+ isfrozen: (t: { [any]: any }) -> boolean,
96
+ maxn: (t: { any }) -> number,
97
+ move: (src: { any }, a: number, b: number, t: number, dst: { any }?) -> { any },
98
+ pack: (...any) -> { [any]: any },
99
+ remove: (t: { any }, i: number?) -> any,
100
+ sort: (t: { any }, comp: any?) -> (),
101
+ unpack: (t: { any }, i: number?, j: number?) -> ...any,
102
+ }
103
+
104
+ declare coroutine: {
105
+ close: (co: thread) -> (boolean, any),
106
+ create: (f: any) -> thread,
107
+ isyieldable: () -> boolean,
108
+ resume: (co: thread, ...any) -> (boolean, ...any),
109
+ running: () -> thread,
110
+ status: (co: thread) -> string,
111
+ wrap: (f: any) -> any,
112
+ yield: (...any) -> ...any,
113
+ }
114
+
115
+ declare bit32: {
116
+ arshift: (n: number, i: number) -> number,
117
+ band: (...number) -> number,
118
+ bnot: (n: number) -> number,
119
+ bor: (...number) -> number,
120
+ btest: (...number) -> boolean,
121
+ bxor: (...number) -> number,
122
+ byteswap: (n: number) -> number,
123
+ countlz: (n: number) -> number,
124
+ countrz: (n: number) -> number,
125
+ extract: (n: number, f: number, w: number?) -> number,
126
+ lrotate: (n: number, i: number) -> number,
127
+ lshift: (n: number, i: number) -> number,
128
+ replace: (n: number, r: number, f: number, w: number?) -> number,
129
+ rrotate: (n: number, i: number) -> number,
130
+ rshift: (n: number, i: number) -> number,
131
+ }
132
+
133
+ declare buffer: {
134
+ create: (size: number) -> buffer,
135
+ fromstring: (str: string) -> buffer,
136
+ tostring: (b: buffer) -> string,
137
+ len: (b: buffer) -> number,
138
+ copy: (target: buffer, targetOffset: number, source: buffer, sourceOffset: number?, count: number?) -> (),
139
+ fill: (b: buffer, offset: number, value: number, count: number?) -> (),
140
+ readi8: (b: buffer, offset: number) -> number,
141
+ readu8: (b: buffer, offset: number) -> number,
142
+ readi16: (b: buffer, offset: number) -> number,
143
+ readu16: (b: buffer, offset: number) -> number,
144
+ readi32: (b: buffer, offset: number) -> number,
145
+ readu32: (b: buffer, offset: number) -> number,
146
+ readf32: (b: buffer, offset: number) -> number,
147
+ readf64: (b: buffer, offset: number) -> number,
148
+ writei8: (b: buffer, offset: number, value: number) -> (),
149
+ writeu8: (b: buffer, offset: number, value: number) -> (),
150
+ writei16: (b: buffer, offset: number, value: number) -> (),
151
+ writeu16: (b: buffer, offset: number, value: number) -> (),
152
+ writei32: (b: buffer, offset: number, value: number) -> (),
153
+ writeu32: (b: buffer, offset: number, value: number) -> (),
154
+ writef32: (b: buffer, offset: number, value: number) -> (),
155
+ writef64: (b: buffer, offset: number, value: number) -> (),
156
+ readstring: (b: buffer, offset: number, count: number) -> string,
157
+ writestring: (b: buffer, offset: number, value: string, count: number?) -> (),
158
+ readbits: (b: buffer, bitOffset: number, bitCount: number) -> number,
159
+ writebits: (b: buffer, bitOffset: number, bitCount: number, value: number) -> (),
160
+ }
161
+
162
+ declare os: {
163
+ clock: () -> number,
164
+ date: (format: string?, time: number?) -> any,
165
+ difftime: (t2: number, t1: number?) -> number,
166
+ time: (time: any?) -> number,
167
+ }
168
+
169
+ declare vector: {
170
+ zero: Vector3,
171
+ one: Vector3,
172
+ create: (x: number, y: number, z: number) -> Vector3,
173
+ magnitude: (v: Vector3) -> number,
174
+ normalize: (v: Vector3) -> Vector3,
175
+ cross: (a: Vector3, b: Vector3) -> Vector3,
176
+ dot: (a: Vector3, b: Vector3) -> number,
177
+ angle: (a: Vector3, b: Vector3, axis: Vector3?) -> number,
178
+ floor: (v: Vector3) -> Vector3,
179
+ ceil: (v: Vector3) -> Vector3,
180
+ abs: (v: Vector3) -> Vector3,
181
+ sign: (v: Vector3) -> Vector3,
182
+ clamp: (v: Vector3, min: Vector3, max: Vector3) -> Vector3,
183
+ max: (v: Vector3, ...Vector3) -> Vector3,
184
+ min: (v: Vector3, ...Vector3) -> Vector3,
185
+ }