Skip to main content

ClassProperties

A table of typed constructors, one for every Roblox instance class, that lets the Luau type checker validate plain tables which describe an instance ("pseudo-instances"). It is useful when you keep instance data as ordinary tables, for example templates, serialised objects, replication payloads or a Instance.new-style helper of your own, and you want property names and value types checked at edit time instead of discovering typos at runtime.

What an entry is

ClassProperties.<ClassName> is a function of type (properties: ClassName) -> ClassName. At runtime it does nothing but return the table you give it; all the value comes from the type annotation. Because the parameter is typed as the real Roblox class, Studio autocompletes the class's properties inside the table literal, and in a --!strict script the type checker reports keys that are not properties of that class and values of the wrong type.

--!strict
local ClassProperties = require(path.to.ClassProperties)

-- A pseudo-instance: a plain table checked against Part's properties.
local pseudoPart = ClassProperties.Part({
	Name = "Crate",
	Size = Vector3.new(4, 4, 4),
	Anchored = true,
	Material = Enum.Material.WoodPlanks,
	-- Colour = Color3.new()  -- type error: Colour is not a property of Part
	-- Anchored = "yes"       -- type error: string is not a boolean
})

-- Later, turn the description into a real instance.
local function build(className: string, properties: { [string]: any }): Instance
	local instance = Instance.new(className)
	for property, value in properties do
		(instance :: any)[property] = value
	end
	return instance
end

local crate = build("Part", pseudoPart :: any)
crate.Parent = workspace

Every entry is built with the same small local helper, t<T>(instance: T), which captures the class type T and returns the identity function typed as (T) -> T. There is no runtime table of property names: if you need to enumerate an instance's properties at runtime, use the reflection API dump instead. Indexing a class that is not in the list returns nil.

Classes covered

The table mirrors Roblox's class hierarchy at the time of the release (about 620 classes), including abstract base classes (Instance, BasePart, GuiObject, ...) and engine-only classes that cannot be created by scripts but are still valid types. Grouped roughly:

  • Base and world: Object, Instance, PVInstance, Model, Actor, WorldRoot, Workspace, WorldModel, Camera, Folder, Configuration, Terrain, TerrainDetail, TerrainRegion, Tool, HopperBin, BackpackItem, Flag, FlagStand, Status.
  • Parts: BasePart, FormFactorPart, Part, WedgePart, CornerWedgePart, TrussPart, Seat, VehicleSeat, SpawnLocation, Platform, SkateboardPlatform, TriangleMeshPart, MeshPart, PartOperation, UnionOperation, NegateOperation, IntersectOperation, PartOperationAsset, DataModelMesh, BevelMesh, BlockMesh, CylinderMesh, FileMesh, SpecialMesh, SurfaceAppearance, MaterialVariant, FaceInstance, Decal, Texture.
  • Constraints, joints and movers: Attachment, Bone, Constraint and its subclasses (AlignOrientation, AlignPosition, AngularVelocity, AnimationConstraint, BallSocketConstraint, HingeConstraint, LineForce, LinearVelocity, PlaneConstraint, Plane, RigidConstraint, RodConstraint, RopeConstraint, SlidingBallConstraint, CylindricalConstraint, PrismaticConstraint, SpringConstraint, Torque, TorsionSpringConstraint, UniversalConstraint, VectorForce), WeldConstraint, NoCollisionConstraint, JointInstance and legacy joints (Weld, ManualWeld, Motor, Motor6D, VelocityMotor, Snap, Glue, ManualGlue, Rotate, RotateP, RotateV, DynamicRotate, ManualSurfaceJointInstance), BodyMover and the legacy body movers (BodyAngularVelocity, BodyForce, BodyGyro, BodyPosition, BodyThrust, BodyVelocity, RocketPropulsion), Feature, Hole, MotorFeature.
  • GUI: GuiBase, GuiBase2d, GuiObject, Frame, CanvasGroup, ScrollingFrame, GuiButton, TextButton, ImageButton, GuiLabel, TextLabel, ImageLabel, TextBox, VideoDisplay, VideoFrame, ViewportFrame, LayerCollector, ScreenGui, GuiMain, BillboardGui, SurfaceGuiBase, SurfaceGui, AdGui, PluginGui, DockWidgetPluginGui, QWidgetPluginGui, Path2D, and the 3D adornments (GuiBase3d, FloorWire, InstanceAdornment, SelectionBox, SelectionSphere, PVAdornment, HandleAdornment, BoxHandleAdornment, ConeHandleAdornment, CylinderHandleAdornment, ImageHandleAdornment, LineHandleAdornment, SphereHandleAdornment, WireframeHandleAdornment, PartAdornment, HandlesBase, ArcHandles, Handles, SurfaceSelection, SelectionLasso, SelectionPartLasso, SelectionPointLasso).
  • UI modifiers: UIBase, UIComponent, UIConstraint, UIAspectRatioConstraint, UISizeConstraint, UITextSizeConstraint, UICorner, UIDragDetector, UIFlexItem, UIGradient, UILayout, UIGridStyleLayout, UIGridLayout, UIListLayout, UIPageLayout, UITableLayout, UIPadding, UIScale, UIStroke, and styling (StyleBase, StyleRule, StyleSheet, StyleDerive, StyleLink).
  • Lighting and effects: Lighting, Atmosphere, Sky, Clouds, Light, PointLight, SpotLight, SurfaceLight, PostEffect, BloomEffect, BlurEffect, ColorCorrectionEffect, ColorGradingEffect, DepthOfFieldEffect, SunRaysEffect, ParticleEmitter, Beam, Trail, Fire, Smoke, Sparkles, Explosion, Highlight, ForceField.
  • Audio: Sound, SoundGroup, SoundService, SoundEffect and its subclasses (ChorusSoundEffect, CompressorSoundEffect, DistortionSoundEffect, EchoSoundEffect, EqualizerSoundEffect, FlangeSoundEffect, PitchShiftSoundEffect, ReverbSoundEffect, TremoloSoundEffect), and the audio graph API (AudioPlayer, AudioEmitter, AudioListener, AudioDeviceInput, AudioDeviceOutput, AudioAnalyzer, AudioChannelMixer, AudioChannelSplitter, AudioChorus, AudioCompressor, AudioDistortion, AudioEcho, AudioEqualizer, AudioFader, AudioFilter, AudioFlanger, AudioGate, AudioLimiter, AudioPitchShifter, AudioRecorder, AudioReverb, AudioSearchParams, AudioSpeechToText, AudioTextToSpeech, Wire).
  • Characters and animation: Humanoid, HumanoidDescription, HumanoidRigDescription, HandRigDescription, Animation, AnimationClip, CurveAnimation, KeyframeSequence, Keyframe, KeyframeMarker, PoseBase, Pose, NumberPose, AnimationController, Animator, AnimationTrack, AnimationRigData, FloatCurve, RotationCurve, EulerRotationCurve, Vector3Curve, MarkerCurve, IKControl, FaceControls, CharacterAppearance, Accoutrement, Accessory, Hat, AccessoryDescription, BodyPartDescription, BodyColors, CharacterMesh, Clothing, Shirt, Pants, ShirtGraphic, Skin, BaseWrap, WrapDeformer, WrapLayer, WrapTarget, and the character controller API (ControllerManager, ControllerBase, AirController, ClimbController, GroundController, SwimController, SensorBase, AtmosphereSensor, BuoyancySensor, ControllerSensor, ControllerPartSensor, FluidForceSensor, Controller, HumanoidController, SkateboardController, VehicleController).
  • Scripts, events and values: LuaSourceContainer, BaseScript, Script, LocalScript, ModuleScript, BaseRemoteEvent, RemoteEvent, UnreliableRemoteEvent, RemoteFunction, BindableEvent, BindableFunction, CustomEvent, CustomEventReceiver, ValueBase and its subclasses (BoolValue, IntValue, NumberValue, StringValue, ObjectValue, CFrameValue, Color3Value, BrickColorValue, RayValue, Vector3Value, IntConstrainedValue, DoubleConstrainedValue, BinaryStringValue).
  • Input and interaction: ClickDetector, DragDetector, ProximityPrompt, Dialog, DialogChoice, InputObject, InputAction, InputBinding, InputContext, Mouse, PlayerMouse, PluginMouse, HapticEffect, TouchTransmitter.
  • Players and teams: Player, Players, PlayerGui, PlayerScripts, Backpack, StarterGear, StarterPack, StarterPlayer, StarterPlayerScripts, StarterCharacterScripts, StarterGui, Team, Teams, Message, Hint.
  • Text chat: TextChatService, TextChannel, TextChatCommand, TextChatMessage, TextChatMessageProperties, BubbleChatMessageProperties, ChatWindowMessageProperties, TextChatConfigurations, BubbleChatConfiguration, ChannelTabsConfiguration, ChatInputBarConfiguration, ChatWindowConfiguration, TextSource, TextFilterResult, TextFilterTranslatedResult, Chat.
  • Data and paging: GlobalDataStore, DataStore, OrderedDataStore, DataStoreService, DataStoreOptions, DataStoreGetOptions, DataStoreSetOptions, DataStoreIncrementOptions, DataStoreInfo, DataStoreKey, DataStoreKeyInfo, DataStoreObjectVersionInfo, MemoryStoreService, MemoryStoreHashMap, MemoryStoreQueue, MemoryStoreSortedMap, Pages and its subclasses (AudioPages, BanHistoryPages, CatalogPages, DataStoreKeyPages, DataStoreListingPages, DataStorePages, DataStoreVersionPages, FriendPages, InventoryPages, EmotesPages, MemoryStoreHashMapPages, OutfitPages, RecommendationPages, StandardPages).
  • Pathfinding, tweening, localisation, teleport: Path, PathfindingLink, PathfindingModifier, PathfindingService, TweenBase, Tween, TweenService, LocalizationService, LocalizationTable, Translator, TeleportService, TeleportOptions, TeleportAsyncResult, ExperienceInviteOptions, GetTextBoundsParams.
  • Services: every game:GetService class present in the API dump, e.g. AdService, AnalyticsService, AssetService, AvatarEditorService, BadgeService, CollectionService, ContentProvider, ContextActionService, Debris, GamePassService, GroupService, GuiService, HapticService, HttpService, InsertService, LogService, MarketplaceService, MessagingService, PhysicsService, PolicyService, ProximityPromptService, ReplicatedFirst, ReplicatedStorage, RunService, ServerScriptService, ServerStorage, SocialService, TextService, UserInputService, UserService, VoiceChatService, VRService, ServiceProvider, DataModel, and the settings singletons (GenericSettings, GlobalSettings, UserSettings, UserGameSettings, GameSettings, DebugSettings, LuaSettings, NetworkSettings, PhysicsSettings, RenderSettings, Studio).
  • Plugins and Studio: Plugin, PluginAction, PluginCapabilities, PluginDragEvent, PluginMenu, PluginToolbar, PluginToolbarButton, PluginGuiService, PluginManager, Selection, ChangeHistoryService, ScriptEditorService, ScriptDocument, StudioService, StudioTheme, Dragger, AdvancedDragger, Annotation, WorkspaceAnnotation, PackageLink, TestService, FunctionalTest, RenderingTest, File.
  • Capture, video and editable assets: Capture, ScreenshotCapture, VideoCapture, CaptureService, ScreenshotHud, VideoPlayer, VideoService, VideoCaptureService, EditableImage, EditableMesh, ConfigSnapshot.
  • Engine-internal and reflection: ReflectionMetadata*, NetworkPeer, NetworkClient, NetworkServer, NetworkReplicator, ClientReplicator, ServerReplicator, NetworkMarker, Stats, StatsItem and the running-average items, Visit, VirtualUser, VirtualInputManager, Geometry, TaskScheduler, ScriptContext, Hopper, TerrainIterateOperation, TerrainModifyOperation, TerrainReadOperation, TerrainWriteOperation, MLSession, and the various *Service helpers Roblox uses internally. These are included so that every class type resolves, but scripts cannot create them.

To see the exact list, read the keys of the returned table in the source file.

Credits: written by KashTheKing. No third-party dependencies.

Installation and guide: ClassProperties package page.

Show raw api
{
    "functions": [],
    "properties": [],
    "types": [],
    "name": "ClassProperties",
    "desc": "A table of **typed constructors**, one for every Roblox instance class, that lets the Luau type\nchecker validate plain tables which *describe* an instance (\"pseudo-instances\"). It is useful\nwhen you keep instance data as ordinary tables, for example templates, serialised objects,\nreplication payloads or a `Instance.new`-style helper of your own, and you want property\nnames and value types checked at edit time instead of discovering typos at runtime.\n\n## What an entry is\n\n`ClassProperties.<ClassName>` is a function of type `(properties: ClassName) -> ClassName`.\nAt runtime it does nothing but return the table you give it; all the value comes from the\ntype annotation. Because the parameter is typed as the real Roblox class, Studio autocompletes\nthe class's properties inside the table literal, and in a `--!strict` script the type checker\nreports keys that are not properties of that class and values of the wrong type.\n\n```lua\n--!strict\nlocal ClassProperties = require(path.to.ClassProperties)\n\n-- A pseudo-instance: a plain table checked against Part's properties.\nlocal pseudoPart = ClassProperties.Part({\n\tName = \"Crate\",\n\tSize = Vector3.new(4, 4, 4),\n\tAnchored = true,\n\tMaterial = Enum.Material.WoodPlanks,\n\t-- Colour = Color3.new()  -- type error: Colour is not a property of Part\n\t-- Anchored = \"yes\"       -- type error: string is not a boolean\n})\n\n-- Later, turn the description into a real instance.\nlocal function build(className: string, properties: { [string]: any }): Instance\n\tlocal instance = Instance.new(className)\n\tfor property, value in properties do\n\t\t(instance :: any)[property] = value\n\tend\n\treturn instance\nend\n\nlocal crate = build(\"Part\", pseudoPart :: any)\ncrate.Parent = workspace\n```\n\nEvery entry is built with the same small local helper, `t<T>(instance: T)`, which captures\nthe class type `T` and returns the identity function typed as `(T) -> T`. There is no runtime\ntable of property names: if you need to enumerate an instance's properties at runtime, use\nthe reflection API dump instead. Indexing a class that is not in the list returns `nil`.\n\n## Classes covered\n\nThe table mirrors Roblox's class hierarchy at the time of the release (about 620 classes),\nincluding abstract base classes (`Instance`, `BasePart`, `GuiObject`, ...) and engine-only\nclasses that cannot be created by scripts but are still valid types. Grouped roughly:\n\n- **Base and world**: `Object`, `Instance`, `PVInstance`, `Model`, `Actor`, `WorldRoot`,\n  `Workspace`, `WorldModel`, `Camera`, `Folder`, `Configuration`, `Terrain`, `TerrainDetail`,\n  `TerrainRegion`, `Tool`, `HopperBin`, `BackpackItem`, `Flag`, `FlagStand`, `Status`.\n- **Parts**: `BasePart`, `FormFactorPart`, `Part`, `WedgePart`, `CornerWedgePart`, `TrussPart`,\n  `Seat`, `VehicleSeat`, `SpawnLocation`, `Platform`, `SkateboardPlatform`, `TriangleMeshPart`,\n  `MeshPart`, `PartOperation`, `UnionOperation`, `NegateOperation`, `IntersectOperation`,\n  `PartOperationAsset`, `DataModelMesh`, `BevelMesh`, `BlockMesh`, `CylinderMesh`, `FileMesh`,\n  `SpecialMesh`, `SurfaceAppearance`, `MaterialVariant`, `FaceInstance`, `Decal`, `Texture`.\n- **Constraints, joints and movers**: `Attachment`, `Bone`, `Constraint` and its subclasses\n  (`AlignOrientation`, `AlignPosition`, `AngularVelocity`, `AnimationConstraint`,\n  `BallSocketConstraint`, `HingeConstraint`, `LineForce`, `LinearVelocity`, `PlaneConstraint`,\n  `Plane`, `RigidConstraint`, `RodConstraint`, `RopeConstraint`, `SlidingBallConstraint`,\n  `CylindricalConstraint`, `PrismaticConstraint`, `SpringConstraint`, `Torque`,\n  `TorsionSpringConstraint`, `UniversalConstraint`, `VectorForce`), `WeldConstraint`,\n  `NoCollisionConstraint`, `JointInstance` and legacy joints (`Weld`, `ManualWeld`, `Motor`,\n  `Motor6D`, `VelocityMotor`, `Snap`, `Glue`, `ManualGlue`, `Rotate`, `RotateP`, `RotateV`,\n  `DynamicRotate`, `ManualSurfaceJointInstance`), `BodyMover` and the legacy body movers\n  (`BodyAngularVelocity`, `BodyForce`, `BodyGyro`, `BodyPosition`, `BodyThrust`, `BodyVelocity`,\n  `RocketPropulsion`), `Feature`, `Hole`, `MotorFeature`.\n- **GUI**: `GuiBase`, `GuiBase2d`, `GuiObject`, `Frame`, `CanvasGroup`, `ScrollingFrame`,\n  `GuiButton`, `TextButton`, `ImageButton`, `GuiLabel`, `TextLabel`, `ImageLabel`, `TextBox`,\n  `VideoDisplay`, `VideoFrame`, `ViewportFrame`, `LayerCollector`, `ScreenGui`, `GuiMain`,\n  `BillboardGui`, `SurfaceGuiBase`, `SurfaceGui`, `AdGui`, `PluginGui`, `DockWidgetPluginGui`,\n  `QWidgetPluginGui`, `Path2D`, and the 3D adornments (`GuiBase3d`, `FloorWire`,\n  `InstanceAdornment`, `SelectionBox`, `SelectionSphere`, `PVAdornment`, `HandleAdornment`,\n  `BoxHandleAdornment`, `ConeHandleAdornment`, `CylinderHandleAdornment`, `ImageHandleAdornment`,\n  `LineHandleAdornment`, `SphereHandleAdornment`, `WireframeHandleAdornment`, `PartAdornment`,\n  `HandlesBase`, `ArcHandles`, `Handles`, `SurfaceSelection`, `SelectionLasso`,\n  `SelectionPartLasso`, `SelectionPointLasso`).\n- **UI modifiers**: `UIBase`, `UIComponent`, `UIConstraint`, `UIAspectRatioConstraint`,\n  `UISizeConstraint`, `UITextSizeConstraint`, `UICorner`, `UIDragDetector`, `UIFlexItem`,\n  `UIGradient`, `UILayout`, `UIGridStyleLayout`, `UIGridLayout`, `UIListLayout`, `UIPageLayout`,\n  `UITableLayout`, `UIPadding`, `UIScale`, `UIStroke`, and styling (`StyleBase`, `StyleRule`,\n  `StyleSheet`, `StyleDerive`, `StyleLink`).\n- **Lighting and effects**: `Lighting`, `Atmosphere`, `Sky`, `Clouds`, `Light`, `PointLight`,\n  `SpotLight`, `SurfaceLight`, `PostEffect`, `BloomEffect`, `BlurEffect`, `ColorCorrectionEffect`,\n  `ColorGradingEffect`, `DepthOfFieldEffect`, `SunRaysEffect`, `ParticleEmitter`, `Beam`,\n  `Trail`, `Fire`, `Smoke`, `Sparkles`, `Explosion`, `Highlight`, `ForceField`.\n- **Audio**: `Sound`, `SoundGroup`, `SoundService`, `SoundEffect` and its subclasses\n  (`ChorusSoundEffect`, `CompressorSoundEffect`, `DistortionSoundEffect`, `EchoSoundEffect`,\n  `EqualizerSoundEffect`, `FlangeSoundEffect`, `PitchShiftSoundEffect`, `ReverbSoundEffect`,\n  `TremoloSoundEffect`), and the audio graph API (`AudioPlayer`, `AudioEmitter`, `AudioListener`,\n  `AudioDeviceInput`, `AudioDeviceOutput`, `AudioAnalyzer`, `AudioChannelMixer`,\n  `AudioChannelSplitter`, `AudioChorus`, `AudioCompressor`, `AudioDistortion`, `AudioEcho`,\n  `AudioEqualizer`, `AudioFader`, `AudioFilter`, `AudioFlanger`, `AudioGate`, `AudioLimiter`,\n  `AudioPitchShifter`, `AudioRecorder`, `AudioReverb`, `AudioSearchParams`, `AudioSpeechToText`,\n  `AudioTextToSpeech`, `Wire`).\n- **Characters and animation**: `Humanoid`, `HumanoidDescription`, `HumanoidRigDescription`,\n  `HandRigDescription`, `Animation`, `AnimationClip`, `CurveAnimation`, `KeyframeSequence`,\n  `Keyframe`, `KeyframeMarker`, `PoseBase`, `Pose`, `NumberPose`, `AnimationController`,\n  `Animator`, `AnimationTrack`, `AnimationRigData`, `FloatCurve`, `RotationCurve`,\n  `EulerRotationCurve`, `Vector3Curve`, `MarkerCurve`, `IKControl`, `FaceControls`,\n  `CharacterAppearance`, `Accoutrement`, `Accessory`, `Hat`, `AccessoryDescription`,\n  `BodyPartDescription`, `BodyColors`, `CharacterMesh`, `Clothing`, `Shirt`, `Pants`,\n  `ShirtGraphic`, `Skin`, `BaseWrap`, `WrapDeformer`, `WrapLayer`, `WrapTarget`, and the\n  character controller API (`ControllerManager`, `ControllerBase`, `AirController`,\n  `ClimbController`, `GroundController`, `SwimController`, `SensorBase`, `AtmosphereSensor`,\n  `BuoyancySensor`, `ControllerSensor`, `ControllerPartSensor`, `FluidForceSensor`,\n  `Controller`, `HumanoidController`, `SkateboardController`, `VehicleController`).\n- **Scripts, events and values**: `LuaSourceContainer`, `BaseScript`, `Script`, `LocalScript`,\n  `ModuleScript`, `BaseRemoteEvent`, `RemoteEvent`, `UnreliableRemoteEvent`, `RemoteFunction`,\n  `BindableEvent`, `BindableFunction`, `CustomEvent`, `CustomEventReceiver`, `ValueBase` and its\n  subclasses (`BoolValue`, `IntValue`, `NumberValue`, `StringValue`, `ObjectValue`, `CFrameValue`,\n  `Color3Value`, `BrickColorValue`, `RayValue`, `Vector3Value`, `IntConstrainedValue`,\n  `DoubleConstrainedValue`, `BinaryStringValue`).\n- **Input and interaction**: `ClickDetector`, `DragDetector`, `ProximityPrompt`, `Dialog`,\n  `DialogChoice`, `InputObject`, `InputAction`, `InputBinding`, `InputContext`, `Mouse`,\n  `PlayerMouse`, `PluginMouse`, `HapticEffect`, `TouchTransmitter`.\n- **Players and teams**: `Player`, `Players`, `PlayerGui`, `PlayerScripts`, `Backpack`,\n  `StarterGear`, `StarterPack`, `StarterPlayer`, `StarterPlayerScripts`,\n  `StarterCharacterScripts`, `StarterGui`, `Team`, `Teams`, `Message`, `Hint`.\n- **Text chat**: `TextChatService`, `TextChannel`, `TextChatCommand`, `TextChatMessage`,\n  `TextChatMessageProperties`, `BubbleChatMessageProperties`, `ChatWindowMessageProperties`,\n  `TextChatConfigurations`, `BubbleChatConfiguration`, `ChannelTabsConfiguration`,\n  `ChatInputBarConfiguration`, `ChatWindowConfiguration`, `TextSource`, `TextFilterResult`,\n  `TextFilterTranslatedResult`, `Chat`.\n- **Data and paging**: `GlobalDataStore`, `DataStore`, `OrderedDataStore`, `DataStoreService`,\n  `DataStoreOptions`, `DataStoreGetOptions`, `DataStoreSetOptions`, `DataStoreIncrementOptions`,\n  `DataStoreInfo`, `DataStoreKey`, `DataStoreKeyInfo`, `DataStoreObjectVersionInfo`,\n  `MemoryStoreService`, `MemoryStoreHashMap`, `MemoryStoreQueue`, `MemoryStoreSortedMap`,\n  `Pages` and its subclasses (`AudioPages`, `BanHistoryPages`, `CatalogPages`, `DataStoreKeyPages`,\n  `DataStoreListingPages`, `DataStorePages`, `DataStoreVersionPages`, `FriendPages`,\n  `InventoryPages`, `EmotesPages`, `MemoryStoreHashMapPages`, `OutfitPages`,\n  `RecommendationPages`, `StandardPages`).\n- **Pathfinding, tweening, localisation, teleport**: `Path`, `PathfindingLink`,\n  `PathfindingModifier`, `PathfindingService`, `TweenBase`, `Tween`, `TweenService`,\n  `LocalizationService`, `LocalizationTable`, `Translator`, `TeleportService`, `TeleportOptions`,\n  `TeleportAsyncResult`, `ExperienceInviteOptions`, `GetTextBoundsParams`.\n- **Services**: every `game:GetService` class present in the API dump, e.g. `AdService`,\n  `AnalyticsService`, `AssetService`, `AvatarEditorService`, `BadgeService`, `CollectionService`,\n  `ContentProvider`, `ContextActionService`, `Debris`, `GamePassService`, `GroupService`,\n  `GuiService`, `HapticService`, `HttpService`, `InsertService`, `LogService`,\n  `MarketplaceService`, `MessagingService`, `PhysicsService`, `PolicyService`,\n  `ProximityPromptService`, `ReplicatedFirst`, `ReplicatedStorage`, `RunService`,\n  `ServerScriptService`, `ServerStorage`, `SocialService`, `TextService`, `UserInputService`,\n  `UserService`, `VoiceChatService`, `VRService`, `ServiceProvider`, `DataModel`, and the\n  settings singletons (`GenericSettings`, `GlobalSettings`, `UserSettings`, `UserGameSettings`,\n  `GameSettings`, `DebugSettings`, `LuaSettings`, `NetworkSettings`, `PhysicsSettings`,\n  `RenderSettings`, `Studio`).\n- **Plugins and Studio**: `Plugin`, `PluginAction`, `PluginCapabilities`, `PluginDragEvent`,\n  `PluginMenu`, `PluginToolbar`, `PluginToolbarButton`, `PluginGuiService`, `PluginManager`,\n  `Selection`, `ChangeHistoryService`, `ScriptEditorService`, `ScriptDocument`, `StudioService`,\n  `StudioTheme`, `Dragger`, `AdvancedDragger`, `Annotation`, `WorkspaceAnnotation`,\n  `PackageLink`, `TestService`, `FunctionalTest`, `RenderingTest`, `File`.\n- **Capture, video and editable assets**: `Capture`, `ScreenshotCapture`, `VideoCapture`,\n  `CaptureService`, `ScreenshotHud`, `VideoPlayer`, `VideoService`, `VideoCaptureService`,\n  `EditableImage`, `EditableMesh`, `ConfigSnapshot`.\n- **Engine-internal and reflection**: `ReflectionMetadata*`, `NetworkPeer`, `NetworkClient`,\n  `NetworkServer`, `NetworkReplicator`, `ClientReplicator`, `ServerReplicator`, `NetworkMarker`,\n  `Stats`, `StatsItem` and the running-average items, `Visit`, `VirtualUser`,\n  `VirtualInputManager`, `Geometry`, `TaskScheduler`, `ScriptContext`, `Hopper`,\n  `TerrainIterateOperation`, `TerrainModifyOperation`, `TerrainReadOperation`,\n  `TerrainWriteOperation`, `MLSession`, and the various `*Service` helpers Roblox uses\n  internally. These are included so that every class type resolves, but scripts cannot\n  create them.\n\nTo see the exact list, read the keys of the returned table in the source file.\n\n**Credits:** written by KashTheKing. No third-party dependencies.\n\nInstallation and guide: [ClassProperties package page](/docs/packages/class-properties).",
    "source": {
        "line": 188,
        "path": "packages/src/ClassProperties/init.luau"
    }
}