@rb-pulse/roblox 1.2.24

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 (2) hide show
  1. package/index.ts +503 -0
  2. package/package.json +19 -0
package/index.ts ADDED
@@ -0,0 +1,503 @@
1
+ /**
2
+ * @pulse/roblox — Roblox API type declarations for Pulse framework scripts.
3
+ *
4
+ * Provides types for Roblox services, instances, enums, and globals so
5
+ * TypeScript game scripts get full IntelliSense without `any` casts.
6
+ *
7
+ * For comprehensive Roblox types, also see: `@rbxts/types`
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Players, RunService, Enum } from '@pulse/roblox'
12
+ *
13
+ * const player = Players.LocalPlayer
14
+ * const char = player.Character
15
+ * ```
16
+ */
17
+
18
+ // ── Instances ──────────────────────────────────────────────────────────────────
19
+
20
+ export interface Instance {
21
+ Name: string
22
+ Parent: Instance | undefined
23
+ ClassName: string
24
+ Destroy(): void
25
+ Clone(): this
26
+ GetChildren(): Instance[]
27
+ GetDescendants(): Instance[]
28
+ IsA(className: string): boolean
29
+ FindFirstChild(name: string, recursive?: boolean): Instance | undefined
30
+ FindFirstChildOfClass(className: string): Instance | undefined
31
+ FindFirstAncestorOfClass(className: string): Instance | undefined
32
+ WaitForChild(name: string, timeout?: number): Instance
33
+ }
34
+
35
+ export interface BasePart extends Instance {
36
+ Position: Vector3
37
+ CFrame: CFrame
38
+ Size: Vector3
39
+ Orientation: Vector3
40
+ Anchored: boolean
41
+ CanCollide: boolean
42
+ CanTouch: boolean
43
+ Massless: boolean
44
+ Transparency: number
45
+ BrickColor: BrickColor
46
+ Material: EnumItem
47
+ Velocity: Vector3
48
+ AssemblyLinearVelocity: Vector3
49
+ }
50
+
51
+ export interface Part extends BasePart {
52
+ Shape: EnumItem
53
+ }
54
+
55
+ export interface MeshPart extends BasePart {
56
+ MeshId: string
57
+ }
58
+
59
+ export interface Model extends Instance {
60
+ PrimaryPart: BasePart | undefined
61
+ WorldPivot: CFrame
62
+ GetBoundingBox(): [CFrame, Vector3]
63
+ MoveTo(position: Vector3): void
64
+ SetPrimaryPartCFrame(cframe: CFrame): void
65
+ GetChildren(): Instance[]
66
+ }
67
+
68
+ export interface Humanoid extends Instance {
69
+ Health: number
70
+ MaxHealth: number
71
+ WalkSpeed: number
72
+ JumpPower: number
73
+ JumpHeight: number
74
+ AutoRotate: boolean
75
+ PlatformStand: boolean
76
+ RigType: EnumItem
77
+ MoveDirection: Vector3
78
+ HipHeight: number
79
+ Died: RBXScriptSignal<[]>
80
+ HealthChanged: RBXScriptSignal<[number]>
81
+ Jumping: RBXScriptSignal<[boolean]>
82
+ Running: RBXScriptSignal<[number]>
83
+ StateChanged: RBXScriptSignal<[EnumItem, EnumItem]>
84
+ GetState(): EnumItem
85
+ ChangeState(state: EnumItem): void
86
+ TakeDamage(amount: number): void
87
+ }
88
+
89
+ export interface HumanoidRootPart extends BasePart {}
90
+
91
+ export interface AnimationTrack extends Instance {
92
+ Length: number
93
+ Looped: boolean
94
+ Speed: number
95
+ IsPlaying: boolean
96
+ Play(fadeTime?: number, weight?: number, speed?: number): void
97
+ Stop(fadeTime?: number): void
98
+ AdjustSpeed(speed: number): void
99
+ AdjustWeight(weight: number, fadeTime?: number): void
100
+ }
101
+
102
+ export interface Animator extends Instance {
103
+ LoadAnimation(animation: Instance): AnimationTrack
104
+ GetPlayingAnimationTracks(): AnimationTrack[]
105
+ }
106
+
107
+ export interface Camera extends Instance {
108
+ CFrame: CFrame
109
+ Focus: CFrame
110
+ CameraType: EnumItem
111
+ FieldOfView: number
112
+ ViewportSize: Vector2
113
+ WorldToViewportPoint(worldPos: Vector3): [Vector3, boolean]
114
+ WorldToScreenPoint(worldPos: Vector3): [Vector3, boolean]
115
+ ScreenPointToRay(x: number, y: number, depth?: number): Ray
116
+ }
117
+
118
+ // ── Player ─────────────────────────────────────────────────────────────────────
119
+
120
+ export interface Player extends Instance {
121
+ Name: string
122
+ UserId: number
123
+ DisplayName: string
124
+ Team: Instance | undefined
125
+ Character: Model | undefined
126
+ CharacterAdded: RBXScriptSignal<[Model]>
127
+ CharacterRemoving: RBXScriptSignal<[Model]>
128
+ GetHumanoid(): Humanoid | undefined
129
+ GetMouse(): Mouse
130
+ IsInGroup(groupId: number): boolean
131
+ }
132
+
133
+ export interface Mouse {
134
+ Hit: CFrame
135
+ Origin: CFrame
136
+ Target: BasePart | undefined
137
+ UnitRay: Ray
138
+ X: number
139
+ Y: number
140
+ ViewSizeX: number
141
+ ViewSizeY: number
142
+ }
143
+
144
+ // ── Services ───────────────────────────────────────────────────────────────────
145
+
146
+ export interface PlayersService {
147
+ LocalPlayer: Player
148
+ GetPlayers(): Player[]
149
+ GetPlayerFromCharacter(character: Model): Player | undefined
150
+ PlayerAdded: RBXScriptSignal<[Player]>
151
+ PlayerRemoving: RBXScriptSignal<[Player]>
152
+ }
153
+
154
+ export interface RunServiceInstance {
155
+ Heartbeat: RBXScriptSignal<[number]>
156
+ RenderStepped: RBXScriptSignal<[number]>
157
+ Stepped: RBXScriptSignal<[number, number]>
158
+ IsClient(): boolean
159
+ IsServer(): boolean
160
+ IsStudio(): boolean
161
+ }
162
+
163
+ export interface UserInputServiceInstance {
164
+ InputBegan: RBXScriptSignal<[InputObject, boolean]>
165
+ InputEnded: RBXScriptSignal<[InputObject, boolean]>
166
+ InputChanged: RBXScriptSignal<[InputObject, boolean]>
167
+ GetMouseLocation(): Vector2
168
+ GetMouseDelta(): Vector2
169
+ IsKeyDown(key: EnumItem): boolean
170
+ IsMouseButtonPressed(btn: EnumItem): boolean
171
+ GetGamepadState(gp: EnumItem): InputObject[]
172
+ MouseBehavior: EnumItem
173
+ MouseIconEnabled: boolean
174
+ }
175
+
176
+ export interface TweenServiceInstance {
177
+ Create(instance: Instance, info: TweenInfo, goals: Record<string, unknown>): Tween
178
+ }
179
+
180
+ export interface WorkspaceInstance extends Model {
181
+ CurrentCamera: Camera
182
+ Gravity: number
183
+ Raycast(origin: Vector3, direction: Vector3, params?: RaycastParams): RaycastResult | undefined
184
+ }
185
+
186
+ export interface HttpServiceInstance {
187
+ GetAsync(url: string, nocache?: boolean): string
188
+ PostAsync(url: string, data: string, contentType?: EnumItem): string
189
+ JSONEncode(data: unknown): string
190
+ JSONDecode(data: string): unknown
191
+ }
192
+
193
+ export interface DataStoreServiceInstance {
194
+ GetDataStore(name: string, scope?: string): DataStore
195
+ }
196
+
197
+ export interface DataStore {
198
+ GetAsync(key: string): unknown
199
+ SetAsync(key: string, value: unknown): void
200
+ RemoveAsync(key: string): unknown
201
+ UpdateAsync(key: string, fn: (oldVal: unknown) => unknown): unknown
202
+ }
203
+
204
+ export interface TeleportServiceInstance {
205
+ Teleport(placeId: number, player?: Player): void
206
+ TeleportToPrivateServer(placeId: number, reservedServerAccessCode: string, players: Player[]): void
207
+ }
208
+
209
+ // ── DataModel (game) ───────────────────────────────────────────────────────────
210
+
211
+ export interface DataModel extends Instance {
212
+ PlaceId: number
213
+ GameId: number
214
+ Workspace: WorkspaceInstance
215
+ Players: PlayersService
216
+ RunService: RunServiceInstance
217
+ UserInputService: UserInputServiceInstance
218
+ TweenService: TweenServiceInstance
219
+ HttpService: HttpServiceInstance
220
+ DataStoreService: DataStoreServiceInstance
221
+ TeleportService: TeleportServiceInstance
222
+ GetService(serviceName: string): Instance
223
+ HttpGet(url: string, nocache?: boolean): string
224
+ HttpGetAsync(url: string, nocache?: boolean): string
225
+ }
226
+
227
+ // ── Math types ────────────────────────────────────────────────────────────────
228
+
229
+ export interface Vector3 {
230
+ X: number; Y: number; Z: number
231
+ Magnitude: number
232
+ Unit: Vector3
233
+ add(v: Vector3): Vector3
234
+ sub(v: Vector3): Vector3
235
+ mul(n: number): Vector3
236
+ div(n: number): Vector3
237
+ Dot(v: Vector3): number
238
+ Cross(v: Vector3): Vector3
239
+ Lerp(v: Vector3, t: number): Vector3
240
+ new(x: number, y: number, z: number): Vector3
241
+ }
242
+
243
+ export interface Vector2 {
244
+ X: number; Y: number
245
+ Magnitude: number
246
+ Unit: Vector2
247
+ add(v: Vector2): Vector2
248
+ sub(v: Vector2): Vector2
249
+ mul(n: number): Vector2
250
+ new(x: number, y: number): Vector2
251
+ }
252
+
253
+ export interface CFrame {
254
+ Position: Vector3
255
+ LookVector: Vector3
256
+ RightVector: Vector3
257
+ UpVector: Vector3
258
+ X: number; Y: number; Z: number
259
+ mul(cf: CFrame): CFrame
260
+ ToWorldSpace(cf: CFrame): CFrame
261
+ ToObjectSpace(cf: CFrame): CFrame
262
+ PointToWorldSpace(v: Vector3): Vector3
263
+ PointToObjectSpace(v: Vector3): Vector3
264
+ Lerp(cf: CFrame, t: number): CFrame
265
+ new(pos: Vector3, lookAt?: Vector3): CFrame
266
+ }
267
+
268
+ export interface BrickColor {
269
+ Name: string
270
+ Number: number
271
+ Color: Color3
272
+ }
273
+
274
+ export interface Color3 {
275
+ R: number; G: number; B: number
276
+ ToHSV(): [number, number, number]
277
+ Lerp(c: Color3, t: number): Color3
278
+ new(r: number, g: number, b: number): Color3
279
+ fromRGB(r: number, g: number, b: number): Color3
280
+ fromHSV(h: number, s: number, v: number): Color3
281
+ }
282
+
283
+ export interface UDim2 {
284
+ X: UDim; Y: UDim
285
+ new(xScale: number, xOffset: number, yScale: number, yOffset: number): UDim2
286
+ }
287
+
288
+ export interface UDim {
289
+ Scale: number; Offset: number
290
+ }
291
+
292
+ export interface Ray {
293
+ Origin: Vector3
294
+ Direction: Vector3
295
+ ClosestPoint(point: Vector3): Vector3
296
+ Distance(point: Vector3): number
297
+ }
298
+
299
+ // ── Raycast ───────────────────────────────────────────────────────────────────
300
+
301
+ export interface RaycastParams {
302
+ FilterDescendantsInstances: Instance[]
303
+ FilterType: EnumItem
304
+ IgnoreWater: boolean
305
+ }
306
+
307
+ export interface RaycastResult {
308
+ Instance: BasePart
309
+ Position: Vector3
310
+ Normal: Vector3
311
+ Material: EnumItem
312
+ Distance: number
313
+ }
314
+
315
+ // ── Tweening ──────────────────────────────────────────────────────────────────
316
+
317
+ export interface TweenInfo {
318
+ Time: number
319
+ EasingStyle: EnumItem
320
+ EasingDirection: EnumItem
321
+ RepeatCount: number
322
+ Reverses: boolean
323
+ DelayTime: number
324
+ new(time: number, easingStyle?: EnumItem, easingDirection?: EnumItem,
325
+ repeatCount?: number, reverses?: boolean, delayTime?: number): TweenInfo
326
+ }
327
+
328
+ export interface Tween extends Instance {
329
+ PlaybackState: EnumItem
330
+ Play(): void
331
+ Pause(): void
332
+ Cancel(): void
333
+ Completed: RBXScriptSignal<[EnumItem]>
334
+ }
335
+
336
+ // ── Input ─────────────────────────────────────────────────────────────────────
337
+
338
+ export interface InputObject {
339
+ KeyCode: EnumItem
340
+ UserInputType: EnumItem
341
+ UserInputState: EnumItem
342
+ Position: Vector3
343
+ Delta: Vector3
344
+ }
345
+
346
+ // ── Signals ───────────────────────────────────────────────────────────────────
347
+
348
+ export interface RBXScriptSignal<T extends unknown[] = []> {
349
+ Connect(fn: (...args: T) => void): RBXScriptConnection
350
+ Once(fn: (...args: T) => void): RBXScriptConnection
351
+ Wait(): LuaMultiReturn<T>
352
+ }
353
+
354
+ export interface RBXScriptConnection {
355
+ Connected: boolean
356
+ Disconnect(): void
357
+ }
358
+
359
+ export type LuaMultiReturn<T extends unknown[]> = T
360
+
361
+ // ── Enum ──────────────────────────────────────────────────────────────────────
362
+
363
+ export interface EnumItem {
364
+ Name: string
365
+ Value: number
366
+ EnumType: EnumType
367
+ }
368
+
369
+ export interface EnumType {
370
+ GetEnumItems(): EnumItem[]
371
+ }
372
+
373
+ export declare namespace Enum {
374
+ namespace KeyCode {
375
+ const Unknown: EnumItem
376
+ const Backspace: EnumItem
377
+ const Tab: EnumItem
378
+ const Return: EnumItem
379
+ const Escape: EnumItem
380
+ const Space: EnumItem
381
+ const Delete: EnumItem
382
+ const A: EnumItem; const B: EnumItem; const C: EnumItem
383
+ const D: EnumItem; const E: EnumItem; const F: EnumItem
384
+ const G: EnumItem; const H: EnumItem; const I: EnumItem
385
+ const J: EnumItem; const K: EnumItem; const L: EnumItem
386
+ const M: EnumItem; const N: EnumItem; const O: EnumItem
387
+ const P: EnumItem; const Q: EnumItem; const R: EnumItem
388
+ const S: EnumItem; const T: EnumItem; const U: EnumItem
389
+ const V: EnumItem; const W: EnumItem; const X: EnumItem
390
+ const Y: EnumItem; const Z: EnumItem
391
+ const Zero: EnumItem; const One: EnumItem; const Two: EnumItem
392
+ const Three: EnumItem; const Four: EnumItem; const Five: EnumItem
393
+ const Six: EnumItem; const Seven: EnumItem; const Eight: EnumItem; const Nine: EnumItem
394
+ const F1: EnumItem; const F2: EnumItem; const F3: EnumItem; const F4: EnumItem
395
+ const F5: EnumItem; const F6: EnumItem; const F7: EnumItem; const F8: EnumItem
396
+ const F9: EnumItem; const F10: EnumItem; const F11: EnumItem; const F12: EnumItem
397
+ const LeftShift: EnumItem; const RightShift: EnumItem
398
+ const LeftControl: EnumItem; const RightControl: EnumItem
399
+ const LeftAlt: EnumItem; const RightAlt: EnumItem
400
+ const Up: EnumItem; const Down: EnumItem; const Left: EnumItem; const Right: EnumItem
401
+ const Insert: EnumItem; const Home: EnumItem; const End: EnumItem
402
+ const PageUp: EnumItem; const PageDown: EnumItem
403
+ const CapsLock: EnumItem; const NumLock: EnumItem; const ScrollLock: EnumItem
404
+ const LeftBracket: EnumItem; const RightBracket: EnumItem
405
+ const Semicolon: EnumItem; const Quote: EnumItem; const Comma: EnumItem
406
+ const Period: EnumItem; const Slash: EnumItem; const Backslash: EnumItem
407
+ const Minus: EnumItem; const Equals: EnumItem; const Tilde: EnumItem
408
+ }
409
+
410
+ namespace UserInputType {
411
+ const None: EnumItem
412
+ const MouseButton1: EnumItem
413
+ const MouseButton2: EnumItem
414
+ const MouseButton3: EnumItem
415
+ const MouseWheel: EnumItem
416
+ const MouseMovement: EnumItem
417
+ const Touch: EnumItem
418
+ const Keyboard: EnumItem
419
+ const Focus: EnumItem
420
+ const Accelerometer: EnumItem
421
+ const Gyro: EnumItem
422
+ const Gamepad1: EnumItem
423
+ const TextInput: EnumItem
424
+ }
425
+
426
+ namespace HumanoidStateType {
427
+ const None: EnumItem
428
+ const Jumping: EnumItem
429
+ const Flying: EnumItem
430
+ const Freefall: EnumItem
431
+ const Seated: EnumItem
432
+ const Running: EnumItem
433
+ const RunningNoPhysics: EnumItem
434
+ const Climbing: EnumItem
435
+ const Swimming: EnumItem
436
+ const Dead: EnumItem
437
+ const Physics: EnumItem
438
+ const Landed: EnumItem
439
+ const StrafingNoPhysics: EnumItem
440
+ const FallingDown: EnumItem
441
+ const GettingUp: EnumItem
442
+ const PlatformStanding: EnumItem
443
+ }
444
+
445
+ namespace RaycastFilterType {
446
+ const Include: EnumItem
447
+ const Exclude: EnumItem
448
+ }
449
+
450
+ namespace EasingStyle {
451
+ const Linear: EnumItem; const Quad: EnumItem; const Cubic: EnumItem
452
+ const Quart: EnumItem; const Quint: EnumItem; const Sine: EnumItem
453
+ const Bounce: EnumItem; const Elastic: EnumItem; const Exponential: EnumItem
454
+ const Circular: EnumItem; const Back: EnumItem
455
+ }
456
+
457
+ namespace EasingDirection {
458
+ const In: EnumItem; const Out: EnumItem; const InOut: EnumItem
459
+ }
460
+
461
+ namespace MouseBehavior {
462
+ const Default: EnumItem
463
+ const LockCenter: EnumItem
464
+ const LockCurrentPosition: EnumItem
465
+ }
466
+
467
+ namespace Material {
468
+ const Plastic: EnumItem; const Wood: EnumItem; const Slate: EnumItem
469
+ const Concrete: EnumItem; const CorrodedMetal: EnumItem; const DiamondPlate: EnumItem
470
+ const Foil: EnumItem; const Grass: EnumItem; const Ice: EnumItem; const Marble: EnumItem
471
+ const Granite: EnumItem; const Brick: EnumItem; const Pebble: EnumItem; const Sand: EnumItem
472
+ const Fabric: EnumItem; const SmoothPlastic: EnumItem; const Metal: EnumItem
473
+ const WoodPlanks: EnumItem; const Cobblestone: EnumItem; const Air: EnumItem
474
+ const Water: EnumItem; const Rock: EnumItem; const Glacier: EnumItem; const Snow: EnumItem
475
+ const Sandstone: EnumItem; const Mud: EnumItem; const Basalt: EnumItem; const Ground: EnumItem
476
+ const CrackedLava: EnumItem; const Neon: EnumItem; const Glass: EnumItem
477
+ const Asphalt: EnumItem; const LeafyGrass: EnumItem; const Salt: EnumItem
478
+ const Limestone: EnumItem; const Pavement: EnumItem
479
+ }
480
+ }
481
+
482
+ // ── Globals ───────────────────────────────────────────────────────────────────
483
+ // These are declared as ambient globals in Roblox scripts.
484
+
485
+ declare const game: DataModel
486
+ declare const workspace: WorkspaceInstance
487
+ declare const script: Instance
488
+
489
+ declare const Players: PlayersService
490
+ declare const RunService: RunServiceInstance
491
+ declare const UserInputService: UserInputServiceInstance
492
+ declare const TweenService: TweenServiceInstance
493
+ declare const HttpService: HttpServiceInstance
494
+ declare const DataStoreService: DataStoreServiceInstance
495
+ declare const TeleportService: TeleportServiceInstance
496
+
497
+ // Export the types so they can be imported explicitly
498
+ export type {
499
+ DataModel, WorkspaceInstance, PlayersService,
500
+ RunServiceInstance, UserInputServiceInstance,
501
+ TweenServiceInstance, HttpServiceInstance,
502
+ }
503
+ export { game, workspace, script, Players, RunService, UserInputService, TweenService }
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@rb-pulse/roblox",
3
+ "version": "1.2.24",
4
+ "description": "Pulse framework — Roblox API type declarations for TypeScript game scripts",
5
+ "main": "./index.ts",
6
+ "types": "./index.ts",
7
+ "files": [
8
+ "index.ts",
9
+ "*.d.ts"
10
+ ],
11
+ "keywords": [
12
+ "roblox",
13
+ "pulse",
14
+ "lua",
15
+ "typescript",
16
+ "types"
17
+ ],
18
+ "license": "MIT"
19
+ }