roblox-opencode 1.0.0 → 1.0.1
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 +112 -122
- package/commands/setup-game.md +108 -108
- package/commands/sync-check.md +53 -53
- package/core/roblox-core.md +93 -93
- package/dist/server.js +189 -167
- package/package.json +35 -35
- package/skills/roblox-analytics/SKILL.md +277 -277
- package/skills/roblox-analytics/references/event-batcher.luau +75 -75
- package/skills/roblox-animation-vfx/SKILL.md +1325 -1325
- package/skills/roblox-architecture/SKILL.md +863 -863
- package/skills/roblox-architecture/references/combat-systems.md +1381 -1381
- package/skills/roblox-code-review/SKILL.md +686 -686
- package/skills/roblox-data/SKILL.md +889 -889
- package/skills/roblox-data/references/inventory-systems.md +1729 -1729
- package/skills/roblox-debug/SKILL.md +98 -98
- package/skills/roblox-gui/SKILL.md +1103 -1103
- package/skills/roblox-gui-fusion/SKILL.md +150 -150
- package/skills/roblox-gui-fusion/references/inventory.luau +427 -427
- package/skills/roblox-gui-fusion/references/settings-menu.luau +579 -579
- package/skills/roblox-gui-fusion/references/shop.luau +411 -411
- package/skills/roblox-luau-mastery/SKILL.md +1519 -1519
- package/skills/roblox-monetization/SKILL.md +1084 -1084
- package/skills/roblox-monetization/references/process-receipt.luau +131 -131
- package/skills/roblox-networking/SKILL.md +669 -669
- package/skills/roblox-networking/references/remote-validator.luau +193 -193
- package/skills/roblox-publish-checklist/SKILL.md +127 -127
- package/skills/roblox-runtime/SKILL.md +753 -753
- package/skills/roblox-sharp-edges/SKILL.md +294 -294
- package/skills/roblox-sync/SKILL.md +126 -126
- package/skills/roblox-testing/SKILL.md +943 -943
- package/skills/roblox-tooling/SKILL.md +149 -149
- package/vendor/LICENSES/ProfileStore-LICENSE +201 -201
- package/vendor/LICENSES/RbxUtil-LICENSE +7 -7
- package/vendor/LICENSES/promise-LICENSE +20 -20
- package/vendor/LICENSES/t-LICENSE +21 -21
- package/vendor/LICENSES/testez-LICENSE +200 -200
- package/vendor/README.md +83 -83
- package/vendor/fusion/Animation/ExternalTime.luau +83 -83
- package/vendor/fusion/Animation/Spring.luau +321 -321
- package/vendor/fusion/Animation/Stopwatch.luau +127 -127
- package/vendor/fusion/Animation/Tween.luau +187 -187
- package/vendor/fusion/Animation/getTweenDuration.luau +27 -27
- package/vendor/fusion/Animation/getTweenRatio.luau +47 -47
- package/vendor/fusion/Animation/lerpType.luau +163 -163
- package/vendor/fusion/Animation/packType.luau +99 -99
- package/vendor/fusion/Animation/springCoefficients.luau +80 -80
- package/vendor/fusion/Animation/unpackType.luau +102 -102
- package/vendor/fusion/Colour/Oklab.luau +70 -70
- package/vendor/fusion/Colour/sRGB.luau +54 -54
- package/vendor/fusion/External.luau +167 -167
- package/vendor/fusion/ExternalDebug.luau +69 -69
- package/vendor/fusion/Graph/Observer.luau +113 -113
- package/vendor/fusion/Graph/castToGraph.luau +28 -28
- package/vendor/fusion/Graph/change.luau +80 -80
- package/vendor/fusion/Graph/depend.luau +32 -32
- package/vendor/fusion/Graph/evaluate.luau +55 -55
- package/vendor/fusion/Instances/Attribute.luau +57 -57
- package/vendor/fusion/Instances/AttributeChange.luau +46 -46
- package/vendor/fusion/Instances/AttributeOut.luau +63 -63
- package/vendor/fusion/Instances/Child.luau +21 -21
- package/vendor/fusion/Instances/Children.luau +147 -147
- package/vendor/fusion/Instances/Hydrate.luau +32 -32
- package/vendor/fusion/Instances/New.luau +52 -52
- package/vendor/fusion/Instances/OnChange.luau +49 -49
- package/vendor/fusion/Instances/OnEvent.luau +53 -53
- package/vendor/fusion/Instances/Out.luau +69 -69
- package/vendor/fusion/Instances/applyInstanceProps.luau +148 -148
- package/vendor/fusion/Instances/defaultProps.luau +194 -194
- package/vendor/fusion/LICENSE +21 -21
- package/vendor/fusion/Logging/formatError.luau +48 -48
- package/vendor/fusion/Logging/messages.luau +51 -51
- package/vendor/fusion/Logging/parseError.luau +24 -24
- package/vendor/fusion/Memory/checkLifetime.luau +133 -133
- package/vendor/fusion/Memory/deriveScope.luau +23 -23
- package/vendor/fusion/Memory/deriveScopeImpl.luau +44 -44
- package/vendor/fusion/Memory/doCleanup.luau +78 -78
- package/vendor/fusion/Memory/innerScope.luau +33 -33
- package/vendor/fusion/Memory/legacyCleanup.luau +17 -17
- package/vendor/fusion/Memory/needsDestruction.luau +16 -16
- package/vendor/fusion/Memory/poisonScope.luau +33 -33
- package/vendor/fusion/Memory/scopePool.luau +54 -54
- package/vendor/fusion/Memory/scoped.luau +26 -26
- package/vendor/fusion/Memory/whichLivesLonger.luau +74 -74
- package/vendor/fusion/RobloxExternal.luau +97 -97
- package/vendor/fusion/State/Computed.luau +138 -138
- package/vendor/fusion/State/For/Disassembly.luau +210 -210
- package/vendor/fusion/State/For/ForTypes.luau +30 -30
- package/vendor/fusion/State/For/init.luau +109 -109
- package/vendor/fusion/State/ForKeys.luau +93 -93
- package/vendor/fusion/State/ForPairs.luau +96 -96
- package/vendor/fusion/State/ForValues.luau +93 -93
- package/vendor/fusion/State/Value.luau +87 -87
- package/vendor/fusion/State/castToState.luau +25 -25
- package/vendor/fusion/State/peek.luau +30 -30
- package/vendor/fusion/Types.luau +314 -314
- package/vendor/fusion/Utility/Contextual.luau +90 -90
- package/vendor/fusion/Utility/Safe.luau +22 -22
- package/vendor/fusion/Utility/isSimilar.luau +29 -29
- package/vendor/fusion/Utility/merge.luau +35 -35
- package/vendor/fusion/Utility/nameOf.luau +34 -34
- package/vendor/fusion/Utility/never.luau +13 -13
- package/vendor/fusion/Utility/nicknames.luau +10 -10
- package/vendor/fusion/Utility/xtypeof.luau +26 -26
- package/vendor/fusion/init.luau +82 -82
- package/vendor/profilestore/init.luau +2242 -2242
- package/vendor/promise/init.luau +1982 -1982
- package/vendor/rbxutil/buffer-util/Buffer.test.luau +25 -25
- package/vendor/rbxutil/buffer-util/BufferReader.luau +228 -228
- package/vendor/rbxutil/buffer-util/BufferWriter.luau +269 -269
- package/vendor/rbxutil/buffer-util/DataTypeBuffer.luau +223 -223
- package/vendor/rbxutil/buffer-util/Types.luau +60 -60
- package/vendor/rbxutil/buffer-util/index.d.ts +153 -153
- package/vendor/rbxutil/buffer-util/init.luau +41 -41
- package/vendor/rbxutil/buffer-util/package.json +16 -16
- package/vendor/rbxutil/buffer-util/wally.toml +9 -9
- package/vendor/rbxutil/comm/Client/ClientComm.luau +232 -232
- package/vendor/rbxutil/comm/Client/ClientRemoteProperty.luau +156 -156
- package/vendor/rbxutil/comm/Client/ClientRemoteSignal.luau +109 -109
- package/vendor/rbxutil/comm/Client/init.luau +135 -135
- package/vendor/rbxutil/comm/Server/RemoteProperty.luau +295 -295
- package/vendor/rbxutil/comm/Server/RemoteSignal.luau +211 -211
- package/vendor/rbxutil/comm/Server/ServerComm.luau +211 -211
- package/vendor/rbxutil/comm/Server/init.luau +140 -140
- package/vendor/rbxutil/comm/Types.luau +18 -18
- package/vendor/rbxutil/comm/Util.luau +27 -27
- package/vendor/rbxutil/comm/init.luau +35 -35
- package/vendor/rbxutil/comm/wally.toml +13 -13
- package/vendor/rbxutil/component/init.luau +759 -759
- package/vendor/rbxutil/component/init.test.luau +311 -311
- package/vendor/rbxutil/component/wally.toml +14 -14
- package/vendor/rbxutil/concur/init.luau +542 -542
- package/vendor/rbxutil/concur/init.test.luau +364 -364
- package/vendor/rbxutil/concur/wally.toml +8 -8
- package/vendor/rbxutil/enum-list/init.luau +101 -101
- package/vendor/rbxutil/enum-list/init.test.luau +91 -91
- package/vendor/rbxutil/enum-list/wally.toml +8 -8
- package/vendor/rbxutil/find/index.d.ts +20 -20
- package/vendor/rbxutil/find/init.luau +44 -44
- package/vendor/rbxutil/find/package.json +17 -17
- package/vendor/rbxutil/find/wally.toml +8 -8
- package/vendor/rbxutil/input/Gamepad.luau +559 -559
- package/vendor/rbxutil/input/Keyboard.luau +124 -124
- package/vendor/rbxutil/input/Mouse.luau +278 -278
- package/vendor/rbxutil/input/PreferredInput.luau +91 -91
- package/vendor/rbxutil/input/Touch.luau +120 -120
- package/vendor/rbxutil/input/init.luau +33 -33
- package/vendor/rbxutil/input/wally.toml +12 -12
- package/vendor/rbxutil/loader/index.d.ts +15 -15
- package/vendor/rbxutil/loader/init.luau +137 -137
- package/vendor/rbxutil/loader/wally.toml +8 -8
- package/vendor/rbxutil/log/index.d.ts +38 -38
- package/vendor/rbxutil/log/init.luau +746 -746
- package/vendor/rbxutil/log/wally.toml +8 -8
- package/vendor/rbxutil/net/init.luau +190 -190
- package/vendor/rbxutil/net/wally.toml +8 -8
- package/vendor/rbxutil/option/index.d.ts +44 -44
- package/vendor/rbxutil/option/init.luau +489 -489
- package/vendor/rbxutil/option/init.test.luau +342 -342
- package/vendor/rbxutil/option/wally.toml +8 -8
- package/vendor/rbxutil/pid/index.d.ts +53 -53
- package/vendor/rbxutil/pid/init.luau +195 -195
- package/vendor/rbxutil/pid/package.json +16 -16
- package/vendor/rbxutil/pid/wally.toml +9 -9
- package/vendor/rbxutil/quaternion/index.d.ts +117 -117
- package/vendor/rbxutil/quaternion/init.luau +570 -570
- package/vendor/rbxutil/quaternion/package.json +16 -16
- package/vendor/rbxutil/quaternion/wally.toml +9 -9
- package/vendor/rbxutil/query/index.d.ts +43 -43
- package/vendor/rbxutil/query/init.luau +117 -117
- package/vendor/rbxutil/query/package.json +18 -18
- package/vendor/rbxutil/query/wally.toml +9 -9
- package/vendor/rbxutil/sequent/index.d.ts +28 -28
- package/vendor/rbxutil/sequent/init.luau +340 -340
- package/vendor/rbxutil/sequent/package.json +16 -16
- package/vendor/rbxutil/sequent/wally.toml +9 -9
- package/vendor/rbxutil/ser/init.luau +175 -175
- package/vendor/rbxutil/ser/init.test.luau +50 -50
- package/vendor/rbxutil/ser/wally.toml +11 -11
- package/vendor/rbxutil/shake/index.d.ts +36 -36
- package/vendor/rbxutil/shake/init.luau +532 -532
- package/vendor/rbxutil/shake/init.test.luau +267 -267
- package/vendor/rbxutil/shake/package.json +16 -16
- package/vendor/rbxutil/shake/wally.toml +9 -9
- package/vendor/rbxutil/signal/index.d.ts +100 -100
- package/vendor/rbxutil/signal/init.luau +432 -432
- package/vendor/rbxutil/signal/init.test.luau +190 -190
- package/vendor/rbxutil/signal/package.json +17 -17
- package/vendor/rbxutil/signal/wally.toml +9 -9
- package/vendor/rbxutil/silo/TableWatcher.luau +65 -65
- package/vendor/rbxutil/silo/Util.luau +55 -55
- package/vendor/rbxutil/silo/init.luau +338 -338
- package/vendor/rbxutil/silo/init.test.luau +215 -215
- package/vendor/rbxutil/silo/wally.toml +8 -8
- package/vendor/rbxutil/spring/index.d.ts +40 -40
- package/vendor/rbxutil/spring/init.luau +97 -97
- package/vendor/rbxutil/spring/package.json +17 -17
- package/vendor/rbxutil/spring/wally.toml +8 -8
- package/vendor/rbxutil/stream/index.d.ts +88 -88
- package/vendor/rbxutil/stream/init.luau +597 -597
- package/vendor/rbxutil/stream/package.json +18 -18
- package/vendor/rbxutil/stream/wally.toml +9 -9
- package/vendor/rbxutil/streamable/Streamable.luau +202 -202
- package/vendor/rbxutil/streamable/StreamableUtil.luau +80 -80
- package/vendor/rbxutil/streamable/init.luau +8 -8
- package/vendor/rbxutil/streamable/wally.toml +12 -12
- package/vendor/rbxutil/symbol/init.luau +56 -56
- package/vendor/rbxutil/symbol/init.test.luau +37 -37
- package/vendor/rbxutil/symbol/wally.toml +8 -8
- package/vendor/rbxutil/table-util/init.luau +938 -938
- package/vendor/rbxutil/table-util/init.test.luau +439 -439
- package/vendor/rbxutil/task-queue/index.d.ts +27 -27
- package/vendor/rbxutil/task-queue/init.luau +97 -97
- package/vendor/rbxutil/task-queue/wally.toml +8 -8
- package/vendor/rbxutil/timer/index.d.ts +81 -81
- package/vendor/rbxutil/timer/init.luau +249 -249
- package/vendor/rbxutil/timer/init.test.luau +73 -73
- package/vendor/rbxutil/timer/wally.toml +11 -11
- package/vendor/rbxutil/tree/index.d.ts +15 -15
- package/vendor/rbxutil/tree/init.luau +137 -137
- package/vendor/rbxutil/tree/wally.toml +8 -8
- package/vendor/rbxutil/trove/index.d.ts +46 -46
- package/vendor/rbxutil/trove/init.luau +787 -787
- package/vendor/rbxutil/trove/init.test.luau +203 -203
- package/vendor/rbxutil/trove/wally.toml +8 -8
- package/vendor/rbxutil/typed-remote/init.luau +196 -196
- package/vendor/rbxutil/typed-remote/wally.toml +8 -8
- package/vendor/rbxutil/wait-for/index.d.ts +17 -17
- package/vendor/rbxutil/wait-for/init.luau +257 -257
- package/vendor/rbxutil/wait-for/init.test.luau +182 -182
- package/vendor/rbxutil/wait-for/wally.toml +11 -11
- package/vendor/t/t.lua +1350 -1350
- package/vendor/testez/Context.lua +26 -26
- package/vendor/testez/Expectation.lua +311 -311
- package/vendor/testez/ExpectationContext.lua +38 -38
- package/vendor/testez/LifecycleHooks.lua +89 -89
- package/vendor/testez/Reporters/TeamCityReporter.lua +101 -101
- package/vendor/testez/Reporters/TextReporter.lua +105 -105
- package/vendor/testez/Reporters/TextReporterQuiet.lua +96 -96
- package/vendor/testez/TestBootstrap.lua +146 -146
- package/vendor/testez/TestEnum.lua +27 -27
- package/vendor/testez/TestPlan.lua +304 -304
- package/vendor/testez/TestPlanner.lua +39 -39
- package/vendor/testez/TestResults.lua +111 -111
- package/vendor/testez/TestRunner.lua +188 -188
- package/vendor/testez/TestSession.lua +243 -243
- package/vendor/testez/init.lua +39 -39
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rbxutil/quaternion",
|
|
3
|
-
"version": "0.2.3",
|
|
4
|
-
"main": "init.luau",
|
|
5
|
-
"repository": "github:Sleitnick/RbxUtil",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"types": "index.d.ts",
|
|
8
|
-
"files": [
|
|
9
|
-
"./",
|
|
10
|
-
"!*.toml",
|
|
11
|
-
"!*.json"
|
|
12
|
-
],
|
|
13
|
-
"publishConfig": {
|
|
14
|
-
"access": "public"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@rbxutil/quaternion",
|
|
3
|
+
"version": "0.2.3",
|
|
4
|
+
"main": "init.luau",
|
|
5
|
+
"repository": "github:Sleitnick/RbxUtil",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"types": "index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"./",
|
|
10
|
+
"!*.toml",
|
|
11
|
+
"!*.json"
|
|
12
|
+
],
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "sleitnick/quaternion"
|
|
3
|
-
description = "Quaternion class"
|
|
4
|
-
version = "0.2.3"
|
|
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"]
|
|
1
|
+
[package]
|
|
2
|
+
name = "sleitnick/quaternion"
|
|
3
|
+
description = "Quaternion class"
|
|
4
|
+
version = "0.2.3"
|
|
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"]
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adds helpful functions that wrap
|
|
3
|
-
* [`Instance:QueryDescendants()`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
4
|
-
*/
|
|
5
|
-
interface Query {
|
|
6
|
-
/**
|
|
7
|
-
* Equivalent to [`parent.QueryDescendants(selector)`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
8
|
-
*/
|
|
9
|
-
all: (parent: Instance, selector: string) => Instance[];
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Returns the query result, filtered by the `filter` function. Ideally, most of
|
|
13
|
-
* the filtering should be done with the selector itself. However, if the selector
|
|
14
|
-
* is not enough, this function can be used to further filter the results.
|
|
15
|
-
*/
|
|
16
|
-
filter: (parent: Instance, selector: string, filter: (instance: Instance) => boolean) => Instance[];
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Returns the query result mapped by the `map` function.
|
|
20
|
-
*/
|
|
21
|
-
map: <T>(parent: Instance, selector: string, map: (instance: Instance) => T) => Instance[];
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Returns the first item from the query. Might be `nil` if the query returns
|
|
25
|
-
* nothing.
|
|
26
|
-
*
|
|
27
|
-
* This is equivalent to `parent.QueryDescendants(selector)[1]`.
|
|
28
|
-
*/
|
|
29
|
-
first: (parent: Instance, selector: string) => Instance | undefined;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Asserts that the query returns exactly one instance. The instance is returned.
|
|
33
|
-
* This is useful when attempting to find an exact match of an instance that
|
|
34
|
-
* must exist.
|
|
35
|
-
*
|
|
36
|
-
* If the result returns zero or more than one result, an error is thrown.
|
|
37
|
-
*/
|
|
38
|
-
one: (parent: Instance, selector: string) => Instance;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
declare const Query: Query;
|
|
42
|
-
|
|
43
|
-
export = Query;
|
|
1
|
+
/**
|
|
2
|
+
* Adds helpful functions that wrap
|
|
3
|
+
* [`Instance:QueryDescendants()`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
4
|
+
*/
|
|
5
|
+
interface Query {
|
|
6
|
+
/**
|
|
7
|
+
* Equivalent to [`parent.QueryDescendants(selector)`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
8
|
+
*/
|
|
9
|
+
all: (parent: Instance, selector: string) => Instance[];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns the query result, filtered by the `filter` function. Ideally, most of
|
|
13
|
+
* the filtering should be done with the selector itself. However, if the selector
|
|
14
|
+
* is not enough, this function can be used to further filter the results.
|
|
15
|
+
*/
|
|
16
|
+
filter: (parent: Instance, selector: string, filter: (instance: Instance) => boolean) => Instance[];
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Returns the query result mapped by the `map` function.
|
|
20
|
+
*/
|
|
21
|
+
map: <T>(parent: Instance, selector: string, map: (instance: Instance) => T) => Instance[];
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Returns the first item from the query. Might be `nil` if the query returns
|
|
25
|
+
* nothing.
|
|
26
|
+
*
|
|
27
|
+
* This is equivalent to `parent.QueryDescendants(selector)[1]`.
|
|
28
|
+
*/
|
|
29
|
+
first: (parent: Instance, selector: string) => Instance | undefined;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Asserts that the query returns exactly one instance. The instance is returned.
|
|
33
|
+
* This is useful when attempting to find an exact match of an instance that
|
|
34
|
+
* must exist.
|
|
35
|
+
*
|
|
36
|
+
* If the result returns zero or more than one result, an error is thrown.
|
|
37
|
+
*/
|
|
38
|
+
one: (parent: Instance, selector: string) => Instance;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare const Query: Query;
|
|
42
|
+
|
|
43
|
+
export = Query;
|
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
--!strict
|
|
2
|
-
|
|
3
|
-
--[=[
|
|
4
|
-
@class Query
|
|
5
|
-
|
|
6
|
-
Adds helpful functions that wrap
|
|
7
|
-
[`Instance:QueryDescendants()`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
8
|
-
]=]
|
|
9
|
-
|
|
10
|
-
local Query = {}
|
|
11
|
-
|
|
12
|
-
--[=[
|
|
13
|
-
@within Query
|
|
14
|
-
|
|
15
|
-
Equivalent to [`parent:QueryDescendants(selector)`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
16
|
-
]=]
|
|
17
|
-
function Query.all(parent: Instance, selector: string): { Instance }
|
|
18
|
-
return parent:QueryDescendants(selector)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
--[=[
|
|
22
|
-
@within Query
|
|
23
|
-
|
|
24
|
-
Returns the query result, filtered by the `filter` function. Ideally, most of
|
|
25
|
-
the filtering should be done with the selector itself. However, if the selector
|
|
26
|
-
is not enough, this function can be used to further filter the results.
|
|
27
|
-
|
|
28
|
-
```lua
|
|
29
|
-
local buttons = Query.filter(workspace, ".Button", function(instance)
|
|
30
|
-
return instance.Transparency > 0.25
|
|
31
|
-
end)
|
|
32
|
-
```
|
|
33
|
-
]=]
|
|
34
|
-
function Query.filter(parent: Instance, selector: string, filter: (Instance) -> boolean): { Instance }
|
|
35
|
-
local instances = parent:QueryDescendants(selector)
|
|
36
|
-
for i = #instances, 1, -1 do
|
|
37
|
-
if not filter(instances[i]) then
|
|
38
|
-
table.remove(instances, i)
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
return instances
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
--[=[
|
|
45
|
-
@within Query
|
|
46
|
-
|
|
47
|
-
Returns the query result mapped by the `map` function.
|
|
48
|
-
|
|
49
|
-
```lua
|
|
50
|
-
local Button = {}
|
|
51
|
-
|
|
52
|
-
function Button.new(btn: BasePart)
|
|
53
|
-
...
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
----
|
|
57
|
-
|
|
58
|
-
local buttons = Query.map(workspace, ".Button", function(instance)
|
|
59
|
-
return Button.new(instance)
|
|
60
|
-
end)
|
|
61
|
-
```
|
|
62
|
-
]=]
|
|
63
|
-
function Query.map<T>(parent: Instance, selector: string, map: (Instance) -> T): { T }
|
|
64
|
-
local instances = parent:QueryDescendants(selector)
|
|
65
|
-
local mapped = table.create(#instances)
|
|
66
|
-
for i, instance in instances do
|
|
67
|
-
mapped[i] = map(instance)
|
|
68
|
-
end
|
|
69
|
-
return mapped
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
--[=[
|
|
73
|
-
@within Query
|
|
74
|
-
|
|
75
|
-
Returns the first item from the query. Might be `nil` if the query returns
|
|
76
|
-
nothing.
|
|
77
|
-
|
|
78
|
-
This is equivalent to `parent:QueryDescendants(selector)[1]`.
|
|
79
|
-
|
|
80
|
-
```lua
|
|
81
|
-
-- Find an instance tagged with 'Tycoon' that has
|
|
82
|
-
-- the OwnerId attribute matching the player's UserId:
|
|
83
|
-
local tycoon = Query.first(workspace, `.Tycoon[$OwnerId = {player.UserId}]`)
|
|
84
|
-
|
|
85
|
-
if tycoon then
|
|
86
|
-
...
|
|
87
|
-
end
|
|
88
|
-
```
|
|
89
|
-
]=]
|
|
90
|
-
function Query.first(parent: Instance, selector: string): Instance?
|
|
91
|
-
return parent:QueryDescendants(selector)[1]
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
--[=[
|
|
95
|
-
@within Query
|
|
96
|
-
|
|
97
|
-
Asserts that the query returns exactly one instance. The instance is returned.
|
|
98
|
-
This is useful when attempting to find an exact match of an instance that
|
|
99
|
-
must exist.
|
|
100
|
-
|
|
101
|
-
If the result returns zero or more than one result, an error is thrown.
|
|
102
|
-
|
|
103
|
-
```lua
|
|
104
|
-
-- Find a SpawnLocation that has the MainSpawn attribute set to true:
|
|
105
|
-
local spawnPoint = Query.one(workspace, "SpawnLocation[$MainSpawn = true]")
|
|
106
|
-
```
|
|
107
|
-
]=]
|
|
108
|
-
function Query.one(parent: Instance, selector: string): Instance
|
|
109
|
-
local instances = parent:QueryDescendants(selector)
|
|
110
|
-
if #instances ~= 1 then
|
|
111
|
-
error(`expected 1 instance from query; got {#instances} instances (selector: {selector})`, 2)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
return instances[1]
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
return Query
|
|
1
|
+
--!strict
|
|
2
|
+
|
|
3
|
+
--[=[
|
|
4
|
+
@class Query
|
|
5
|
+
|
|
6
|
+
Adds helpful functions that wrap
|
|
7
|
+
[`Instance:QueryDescendants()`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
8
|
+
]=]
|
|
9
|
+
|
|
10
|
+
local Query = {}
|
|
11
|
+
|
|
12
|
+
--[=[
|
|
13
|
+
@within Query
|
|
14
|
+
|
|
15
|
+
Equivalent to [`parent:QueryDescendants(selector)`](https://create.roblox.com/docs/reference/engine/classes/Instance#QueryDescendants).
|
|
16
|
+
]=]
|
|
17
|
+
function Query.all(parent: Instance, selector: string): { Instance }
|
|
18
|
+
return parent:QueryDescendants(selector)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
--[=[
|
|
22
|
+
@within Query
|
|
23
|
+
|
|
24
|
+
Returns the query result, filtered by the `filter` function. Ideally, most of
|
|
25
|
+
the filtering should be done with the selector itself. However, if the selector
|
|
26
|
+
is not enough, this function can be used to further filter the results.
|
|
27
|
+
|
|
28
|
+
```lua
|
|
29
|
+
local buttons = Query.filter(workspace, ".Button", function(instance)
|
|
30
|
+
return instance.Transparency > 0.25
|
|
31
|
+
end)
|
|
32
|
+
```
|
|
33
|
+
]=]
|
|
34
|
+
function Query.filter(parent: Instance, selector: string, filter: (Instance) -> boolean): { Instance }
|
|
35
|
+
local instances = parent:QueryDescendants(selector)
|
|
36
|
+
for i = #instances, 1, -1 do
|
|
37
|
+
if not filter(instances[i]) then
|
|
38
|
+
table.remove(instances, i)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
return instances
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
--[=[
|
|
45
|
+
@within Query
|
|
46
|
+
|
|
47
|
+
Returns the query result mapped by the `map` function.
|
|
48
|
+
|
|
49
|
+
```lua
|
|
50
|
+
local Button = {}
|
|
51
|
+
|
|
52
|
+
function Button.new(btn: BasePart)
|
|
53
|
+
...
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
----
|
|
57
|
+
|
|
58
|
+
local buttons = Query.map(workspace, ".Button", function(instance)
|
|
59
|
+
return Button.new(instance)
|
|
60
|
+
end)
|
|
61
|
+
```
|
|
62
|
+
]=]
|
|
63
|
+
function Query.map<T>(parent: Instance, selector: string, map: (Instance) -> T): { T }
|
|
64
|
+
local instances = parent:QueryDescendants(selector)
|
|
65
|
+
local mapped = table.create(#instances)
|
|
66
|
+
for i, instance in instances do
|
|
67
|
+
mapped[i] = map(instance)
|
|
68
|
+
end
|
|
69
|
+
return mapped
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
--[=[
|
|
73
|
+
@within Query
|
|
74
|
+
|
|
75
|
+
Returns the first item from the query. Might be `nil` if the query returns
|
|
76
|
+
nothing.
|
|
77
|
+
|
|
78
|
+
This is equivalent to `parent:QueryDescendants(selector)[1]`.
|
|
79
|
+
|
|
80
|
+
```lua
|
|
81
|
+
-- Find an instance tagged with 'Tycoon' that has
|
|
82
|
+
-- the OwnerId attribute matching the player's UserId:
|
|
83
|
+
local tycoon = Query.first(workspace, `.Tycoon[$OwnerId = {player.UserId}]`)
|
|
84
|
+
|
|
85
|
+
if tycoon then
|
|
86
|
+
...
|
|
87
|
+
end
|
|
88
|
+
```
|
|
89
|
+
]=]
|
|
90
|
+
function Query.first(parent: Instance, selector: string): Instance?
|
|
91
|
+
return parent:QueryDescendants(selector)[1]
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
--[=[
|
|
95
|
+
@within Query
|
|
96
|
+
|
|
97
|
+
Asserts that the query returns exactly one instance. The instance is returned.
|
|
98
|
+
This is useful when attempting to find an exact match of an instance that
|
|
99
|
+
must exist.
|
|
100
|
+
|
|
101
|
+
If the result returns zero or more than one result, an error is thrown.
|
|
102
|
+
|
|
103
|
+
```lua
|
|
104
|
+
-- Find a SpawnLocation that has the MainSpawn attribute set to true:
|
|
105
|
+
local spawnPoint = Query.one(workspace, "SpawnLocation[$MainSpawn = true]")
|
|
106
|
+
```
|
|
107
|
+
]=]
|
|
108
|
+
function Query.one(parent: Instance, selector: string): Instance
|
|
109
|
+
local instances = parent:QueryDescendants(selector)
|
|
110
|
+
if #instances ~= 1 then
|
|
111
|
+
error(`expected 1 instance from query; got {#instances} instances (selector: {selector})`, 2)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
return instances[1]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
return Query
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rbxutil/query",
|
|
3
|
-
"version": "0.2.0",
|
|
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
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@rbxutil/query",
|
|
3
|
+
"version": "0.2.0",
|
|
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
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "sleitnick/query"
|
|
3
|
-
description = "Query instances"
|
|
4
|
-
version = "0.2.0"
|
|
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"]
|
|
1
|
+
[package]
|
|
2
|
+
name = "sleitnick/query"
|
|
3
|
+
description = "Query instances"
|
|
4
|
+
version = "0.2.0"
|
|
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"]
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
declare namespace Sequent {
|
|
2
|
-
interface Constructor {
|
|
3
|
-
new <T>(cancellable?: boolean): Sequent<T>;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
interface SequentEvent<T> {
|
|
7
|
-
readonly Value: T;
|
|
8
|
-
readonly Cancellable: boolean;
|
|
9
|
-
Cancel(): void;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
interface SequentConnection {
|
|
13
|
-
readonly Connected: boolean;
|
|
14
|
-
Disconnect(): void;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
interface Sequent<T> {
|
|
19
|
-
Fire(value: T): void;
|
|
20
|
-
Connect(callback: (event: Sequent.SequentEvent<T>) => void): Sequent.SequentConnection;
|
|
21
|
-
Once(callback: (event: Sequent.SequentEvent<T>) => void): Sequent.SequentConnection;
|
|
22
|
-
Cancel(): void;
|
|
23
|
-
Destroy(): void;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
declare const Sequent: Sequent.Constructor;
|
|
27
|
-
|
|
28
|
-
export = Sequent;
|
|
1
|
+
declare namespace Sequent {
|
|
2
|
+
interface Constructor {
|
|
3
|
+
new <T>(cancellable?: boolean): Sequent<T>;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
interface SequentEvent<T> {
|
|
7
|
+
readonly Value: T;
|
|
8
|
+
readonly Cancellable: boolean;
|
|
9
|
+
Cancel(): void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface SequentConnection {
|
|
13
|
+
readonly Connected: boolean;
|
|
14
|
+
Disconnect(): void;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface Sequent<T> {
|
|
19
|
+
Fire(value: T): void;
|
|
20
|
+
Connect(callback: (event: Sequent.SequentEvent<T>) => void): Sequent.SequentConnection;
|
|
21
|
+
Once(callback: (event: Sequent.SequentEvent<T>) => void): Sequent.SequentConnection;
|
|
22
|
+
Cancel(): void;
|
|
23
|
+
Destroy(): void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
declare const Sequent: Sequent.Constructor;
|
|
27
|
+
|
|
28
|
+
export = Sequent;
|