@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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/client/package.json +4 -0
  3. package/emit/package.json +4 -0
  4. package/out/all.d.ts +7 -0
  5. package/out/all.luau +2 -0
  6. package/out/attribute.d.ts +7 -0
  7. package/out/attribute.luau +7 -0
  8. package/out/client/index.d.ts +3 -0
  9. package/out/client/init.luau +20 -0
  10. package/out/crucible-behaviour.d.ts +16 -0
  11. package/out/crucible-behaviour.luau +78 -0
  12. package/out/crucible-object.d.ts +10 -0
  13. package/out/crucible-object.luau +69 -0
  14. package/out/emit/index.d.ts +41 -0
  15. package/out/emit/init.luau +85 -0
  16. package/out/index.d.ts +12 -0
  17. package/out/init.luau +11 -0
  18. package/out/inject.d.ts +1 -0
  19. package/out/inject.luau +7 -0
  20. package/out/internal/binding.d.ts +1 -0
  21. package/out/internal/binding.luau +610 -0
  22. package/out/internal/boot.d.ts +1 -0
  23. package/out/internal/boot.luau +463 -0
  24. package/out/internal/construction-claim.d.ts +1 -0
  25. package/out/internal/construction-claim.luau +26 -0
  26. package/out/internal/dense-list.d.ts +1 -0
  27. package/out/internal/dense-list.luau +155 -0
  28. package/out/internal/diagnostics.d.ts +1 -0
  29. package/out/internal/diagnostics.luau +29 -0
  30. package/out/internal/hooks.d.ts +1 -0
  31. package/out/internal/hooks.luau +53 -0
  32. package/out/internal/implementers.d.ts +1 -0
  33. package/out/internal/implementers.luau +119 -0
  34. package/out/internal/lifecycle.d.ts +1 -0
  35. package/out/internal/lifecycle.luau +867 -0
  36. package/out/internal/log-output.d.ts +1 -0
  37. package/out/internal/log-output.luau +106 -0
  38. package/out/internal/port.d.ts +1 -0
  39. package/out/internal/port.luau +12 -0
  40. package/out/internal/registry.d.ts +1 -0
  41. package/out/internal/registry.luau +446 -0
  42. package/out/internal/roblox-port.d.ts +1 -0
  43. package/out/internal/roblox-port.luau +117 -0
  44. package/out/internal/runner.d.ts +1 -0
  45. package/out/internal/runner.luau +86 -0
  46. package/out/internal/scheduler.d.ts +1 -0
  47. package/out/internal/scheduler.luau +207 -0
  48. package/out/internal/state.d.ts +1 -0
  49. package/out/internal/state.luau +41 -0
  50. package/out/log-level.d.ts +7 -0
  51. package/out/log-level.luau +21 -0
  52. package/out/logging.d.ts +34 -0
  53. package/out/logging.luau +233 -0
  54. package/out/server/index.d.ts +2 -0
  55. package/out/server/init.luau +16 -0
  56. package/out/subsystem.d.ts +4 -0
  57. package/out/subsystem.luau +30 -0
  58. package/package.json +41 -5
  59. package/server/package.json +4 -0
  60. package/transformer/diagnostics.cjs +19 -0
  61. package/transformer/index.js +715 -0
  62. package/transformer/type-id.cjs +80 -0
  63. 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 {};