https://github.com/r-unic/flamework-meta-utility
Metadata utility for Flamework
https://github.com/r-unic/flamework-meta-utility
Last synced: 4 months ago
JSON representation
Metadata utility for Flamework
- Host: GitHub
- URL: https://github.com/r-unic/flamework-meta-utility
- Owner: R-unic
- Created: 2024-12-03T17:37:00.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-23T21:11:42.000Z (about 1 year ago)
- Last Synced: 2025-08-29T23:10:41.832Z (11 months ago)
- Language: TypeScript
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @rbxts/flamework-meta-utils
Metadata utility and utility macros for Flamework
## Macros
### enumKey< E, V> ()
Retrieves the key associated with a const (or non-const) enum value
```ts
const enum Abc {
A,
B,
C
}
const a = enumKey();
```
Compiles to
```lua
local a = "A";
```
### deunify< T> ()
Deunifies a union type `T` into an array of all constituents
```ts
const constituents = deunify<"a" | "b" | "c">();
```
Compiles to
```lua
local constituents = deunify({"a", "b", "c"}); -- which returns the passed param
```
### repeatString< S, N> ()
Repeats the string `S` `N` times.
```ts
const line = repeatString<"-", 30>();
```
Compiles to
```lua
local line = "------------------------------";
```
### getChildrenOfType< T> ()
Generates a type guard (if one is not specified) and returns all children of the given instance that pass the guard.
```ts
interface CharacterModel extends Model {
Humanoid: Humanoid;
HumanoidRootPart: Part;
}
const characters = getChildrenOfType(Workspace.Characters);
```
### getDescendantsOfType< T> ()
Generates a type guard (if one is not specified) and returns all descendants of the given instance that pass the guard.
```ts
const assetsToPreload = getDescendantsOfType(ReplicatedStorage);
```
### getInstanceAtPath()
Resolves the instance at the given path using Rojo
```ts
const module = getInstanceAtPath("src/client/controllers/mouse.ts");
```
### safeCast< T> ()
Generates a type guard (if one is not specified) and if the guard passes, returns the casted value. Otherwise returns undefined.
```ts
const value = safeCast(someUnknownValue);
if (value !== undefined)
print("doubled value:", value * 2);
```
```ts
interface CharacterModel extends Model {
Humanoid: Humanoid;
HumanoidRootPart: Part;
}
const character = safeCast(Players.LocalPlayer.Character);
if (character !== undefined)
print("character root:", character.HumanoidRootPart);
```
## Methods
These next three methods are generally used in combination with decorators.
### resolveDependencies()
Takes a constructor and resolves it and all of it's dependencies
### processDependencies()
Calls the provided method for each dependency resolved from the provided constructor
### callMethodOnDependencies()
Calls the method from the provided method descriptor for each dependency resolved from the provided constructor