@trioforge/crucible 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/client/package.json +4 -0
- package/emit/package.json +4 -0
- package/out/all.d.ts +7 -0
- package/out/all.luau +2 -0
- package/out/attribute.d.ts +7 -0
- package/out/attribute.luau +7 -0
- package/out/client/index.d.ts +3 -0
- package/out/client/init.luau +20 -0
- package/out/crucible-behaviour.d.ts +16 -0
- package/out/crucible-behaviour.luau +78 -0
- package/out/crucible-object.d.ts +10 -0
- package/out/crucible-object.luau +69 -0
- package/out/emit/index.d.ts +41 -0
- package/out/emit/init.luau +85 -0
- package/out/index.d.ts +12 -0
- package/out/init.luau +11 -0
- package/out/inject.d.ts +1 -0
- package/out/inject.luau +7 -0
- package/out/internal/binding.d.ts +1 -0
- package/out/internal/binding.luau +610 -0
- package/out/internal/boot.d.ts +1 -0
- package/out/internal/boot.luau +463 -0
- package/out/internal/construction-claim.d.ts +1 -0
- package/out/internal/construction-claim.luau +26 -0
- package/out/internal/dense-list.d.ts +1 -0
- package/out/internal/dense-list.luau +155 -0
- package/out/internal/diagnostics.d.ts +1 -0
- package/out/internal/diagnostics.luau +29 -0
- package/out/internal/hooks.d.ts +1 -0
- package/out/internal/hooks.luau +53 -0
- package/out/internal/implementers.d.ts +1 -0
- package/out/internal/implementers.luau +119 -0
- package/out/internal/lifecycle.d.ts +1 -0
- package/out/internal/lifecycle.luau +867 -0
- package/out/internal/log-output.d.ts +1 -0
- package/out/internal/log-output.luau +106 -0
- package/out/internal/port.d.ts +1 -0
- package/out/internal/port.luau +12 -0
- package/out/internal/registry.d.ts +1 -0
- package/out/internal/registry.luau +446 -0
- package/out/internal/roblox-port.d.ts +1 -0
- package/out/internal/roblox-port.luau +117 -0
- package/out/internal/runner.d.ts +1 -0
- package/out/internal/runner.luau +86 -0
- package/out/internal/scheduler.d.ts +1 -0
- package/out/internal/scheduler.luau +207 -0
- package/out/internal/state.d.ts +1 -0
- package/out/internal/state.luau +41 -0
- package/out/log-level.d.ts +7 -0
- package/out/log-level.luau +21 -0
- package/out/logging.d.ts +34 -0
- package/out/logging.luau +233 -0
- package/out/server/index.d.ts +2 -0
- package/out/server/init.luau +16 -0
- package/out/subsystem.d.ts +4 -0
- package/out/subsystem.luau +30 -0
- package/package.json +41 -5
- package/server/package.json +4 -0
- package/transformer/diagnostics.cjs +19 -0
- package/transformer/index.js +715 -0
- package/transformer/type-id.cjs +80 -0
- package/README.md +0 -3
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
--* @internal
|
|
3
|
+
--* @internal
|
|
4
|
+
--* @internal
|
|
5
|
+
local FRAME_HOOK_NAMES = { "preRender", "fixedUpdate", "update", "lateUpdate" }
|
|
6
|
+
--* @internal
|
|
7
|
+
local OBJECT_HOOK_NAMES = { "awake", "start", "fixedUpdate", "update", "lateUpdate", "preRender" }
|
|
8
|
+
--* @internal
|
|
9
|
+
local BEHAVIOUR_HOOK_NAMES = { "onEnable", "onDisable", "onDestroy" }
|
|
10
|
+
--* @internal
|
|
11
|
+
--* @internal
|
|
12
|
+
--* @internal
|
|
13
|
+
local SUBSYSTEM_HOOK_NAMES = { "onShutdown" }
|
|
14
|
+
--* @internal
|
|
15
|
+
local subsystemHooks
|
|
16
|
+
--* @internal
|
|
17
|
+
local function installSubsystemHooks(value)
|
|
18
|
+
subsystemHooks = value
|
|
19
|
+
end
|
|
20
|
+
--* @internal
|
|
21
|
+
local function shutdownHooks()
|
|
22
|
+
return subsystemHooks or error("Subsystem hooks not installed")
|
|
23
|
+
end
|
|
24
|
+
local objectHooks
|
|
25
|
+
local behaviourHooks
|
|
26
|
+
--* @internal
|
|
27
|
+
local function installObjectHooks(hooks)
|
|
28
|
+
objectHooks = hooks
|
|
29
|
+
end
|
|
30
|
+
--* @internal
|
|
31
|
+
local function installBehaviourHooks(hooks)
|
|
32
|
+
behaviourHooks = hooks
|
|
33
|
+
end
|
|
34
|
+
--* @internal
|
|
35
|
+
local function hooks()
|
|
36
|
+
return objectHooks or error("Crucible hooks used before CrucibleObject loaded")
|
|
37
|
+
end
|
|
38
|
+
--* @internal
|
|
39
|
+
local function lifecycleHooks()
|
|
40
|
+
return behaviourHooks or error("Crucible hooks used before CrucibleObject loaded")
|
|
41
|
+
end
|
|
42
|
+
return {
|
|
43
|
+
installSubsystemHooks = installSubsystemHooks,
|
|
44
|
+
shutdownHooks = shutdownHooks,
|
|
45
|
+
installObjectHooks = installObjectHooks,
|
|
46
|
+
installBehaviourHooks = installBehaviourHooks,
|
|
47
|
+
hooks = hooks,
|
|
48
|
+
lifecycleHooks = lifecycleHooks,
|
|
49
|
+
FRAME_HOOK_NAMES = FRAME_HOOK_NAMES,
|
|
50
|
+
OBJECT_HOOK_NAMES = OBJECT_HOOK_NAMES,
|
|
51
|
+
BEHAVIOUR_HOOK_NAMES = BEHAVIOUR_HOOK_NAMES,
|
|
52
|
+
SUBSYSTEM_HOOK_NAMES = SUBSYSTEM_HOOK_NAMES,
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
local TS = _G[script]
|
|
3
|
+
local runtimeDiagnostic = TS.import(script, script.Parent, "diagnostics").runtimeDiagnostic
|
|
4
|
+
local DenseList = TS.import(script, script.Parent, "dense-list").DenseList
|
|
5
|
+
local _lifecycle = TS.import(script, script.Parent, "lifecycle")
|
|
6
|
+
local current = _lifecycle.current
|
|
7
|
+
local hasEnded = _lifecycle.hasEnded
|
|
8
|
+
local stateOf = _lifecycle.stateOf
|
|
9
|
+
local within = _lifecycle.within
|
|
10
|
+
local port
|
|
11
|
+
--* @internal
|
|
12
|
+
local function useImplementerPort(value)
|
|
13
|
+
port = value
|
|
14
|
+
end
|
|
15
|
+
local function visit(callback, item)
|
|
16
|
+
callback(item)
|
|
17
|
+
end
|
|
18
|
+
local function label(state)
|
|
19
|
+
return if state == nil then "external" else (state.record).id
|
|
20
|
+
end
|
|
21
|
+
--* @internal
|
|
22
|
+
local ImplementerSet
|
|
23
|
+
do
|
|
24
|
+
ImplementerSet = setmetatable({}, {
|
|
25
|
+
__tostring = function()
|
|
26
|
+
return "ImplementerSet"
|
|
27
|
+
end,
|
|
28
|
+
})
|
|
29
|
+
ImplementerSet.__index = ImplementerSet
|
|
30
|
+
function ImplementerSet.new(...)
|
|
31
|
+
local self = setmetatable({}, ImplementerSet)
|
|
32
|
+
return self:constructor(...) or self
|
|
33
|
+
end
|
|
34
|
+
function ImplementerSet:constructor(id)
|
|
35
|
+
self.id = id
|
|
36
|
+
self.members = DenseList.new()
|
|
37
|
+
self.observers = DenseList.new()
|
|
38
|
+
end
|
|
39
|
+
function ImplementerSet:size()
|
|
40
|
+
return self.members:size()
|
|
41
|
+
end
|
|
42
|
+
function ImplementerSet:has(item)
|
|
43
|
+
return self.members:has(item)
|
|
44
|
+
end
|
|
45
|
+
function ImplementerSet:first()
|
|
46
|
+
return self.members:first()
|
|
47
|
+
end
|
|
48
|
+
function ImplementerSet:forEach(visitor)
|
|
49
|
+
local owner = current()
|
|
50
|
+
self.members:forEach(function(member)
|
|
51
|
+
return self:deliver(owner, visitor, member)
|
|
52
|
+
end)
|
|
53
|
+
end
|
|
54
|
+
function ImplementerSet:observe(added, removed)
|
|
55
|
+
local owner = current()
|
|
56
|
+
if owner ~= nil and hasEnded(owner) then
|
|
57
|
+
return function() end
|
|
58
|
+
end
|
|
59
|
+
local observer = {
|
|
60
|
+
added = added,
|
|
61
|
+
removed = removed,
|
|
62
|
+
owner = owner,
|
|
63
|
+
}
|
|
64
|
+
self.observers:add(observer)
|
|
65
|
+
local connected = true
|
|
66
|
+
local disconnect = function()
|
|
67
|
+
if not connected then
|
|
68
|
+
return nil
|
|
69
|
+
end
|
|
70
|
+
connected = false
|
|
71
|
+
self.observers:remove(observer)
|
|
72
|
+
end
|
|
73
|
+
if owner ~= nil then
|
|
74
|
+
if owner.subscriptions == nil then
|
|
75
|
+
owner.subscriptions = {}
|
|
76
|
+
end
|
|
77
|
+
local _exp = owner.subscriptions
|
|
78
|
+
table.insert(_exp, disconnect)
|
|
79
|
+
end
|
|
80
|
+
self.members:forEach(function(member)
|
|
81
|
+
if connected then
|
|
82
|
+
self:deliver(owner, added, member)
|
|
83
|
+
end
|
|
84
|
+
end)
|
|
85
|
+
return disconnect
|
|
86
|
+
end
|
|
87
|
+
function ImplementerSet:join(item)
|
|
88
|
+
if not self.members:add(item) then
|
|
89
|
+
return nil
|
|
90
|
+
end
|
|
91
|
+
self.observers:forEach(function(observer)
|
|
92
|
+
return self:deliver(observer.owner, observer.added, item)
|
|
93
|
+
end)
|
|
94
|
+
end
|
|
95
|
+
function ImplementerSet:leave(item)
|
|
96
|
+
if not self.members:remove(item) then
|
|
97
|
+
return nil
|
|
98
|
+
end
|
|
99
|
+
self.observers:forEach(function(observer)
|
|
100
|
+
if observer.removed ~= nil then
|
|
101
|
+
self:deliver(observer.owner, observer.removed, item)
|
|
102
|
+
end
|
|
103
|
+
end)
|
|
104
|
+
end
|
|
105
|
+
function ImplementerSet:deliver(owner, callback, member)
|
|
106
|
+
local result, failure = within(owner, nil, 8, visit, callback, member)
|
|
107
|
+
if result ~= 0 then
|
|
108
|
+
local message = `Crucible All<{self.id}> subscriber {label(owner)}, member {label(stateOf(member))}: {tostring(failure)}`
|
|
109
|
+
if port == nil then
|
|
110
|
+
error("All callback failed before useImplementerPort: " .. message)
|
|
111
|
+
end
|
|
112
|
+
runtimeDiagnostic("error", message)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
return {
|
|
117
|
+
useImplementerPort = useImplementerPort,
|
|
118
|
+
ImplementerSet = ImplementerSet,
|
|
119
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|