Files
metabuilder/packages/stream_cast/seed/scripts/init.lua

52 lines
1.8 KiB
Lua

--- Stream Cast package entry point
--- Provides streaming and broadcasting components
---@class StreamCast
---@field name string Package name
---@field version string Package version
---@field player StreamPlayerModule Player module
---@field scenes StreamScenesModule Scenes module
---@field schedule StreamScheduleModule Schedule module
---@field init fun(): { name: string, version: string, loaded: boolean }
---@class StreamPlayerModule
---@field PLAYING PlayerState
---@field PAUSED PlayerState
---@field BUFFERING PlayerState
---@field OFFLINE PlayerState
---@field render fun(stream: Stream): VideoPlayerComponent
---@field render_controls fun(state: PlayerState): PlayerControlsComponent
---@field render_status fun(state: PlayerState, viewers: number): StatusBarComponent
---@class StreamScenesModule
---@field render_scene fun(scene: Scene): ScenePreviewComponent
---@field render_list fun(scenes: Scene[]): SceneListComponent
---@field switch fun(scene_id: string): SwitchSceneAction
---@field create fun(name: string, sources?: table[]): CreateSceneAction
---@class StreamScheduleModule
---@field render_item fun(stream: ScheduledStream): ScheduleItemComponent
---@field render_list fun(streams: ScheduledStream[]): ScheduleListComponent
---@field create fun(data: { title: string, start_time: string, duration?: number }): ScheduleStreamAction
---@field cancel fun(stream_id: string): CancelStreamAction
local M = {}
M.name = "stream_cast"
M.version = "1.0.0"
M.player = require("player")
M.scenes = require("scenes")
M.schedule = require("schedule")
--- Initialize the stream cast module
---@return { name: string, version: string, loaded: boolean }
function M.init()
return {
name = M.name,
version = M.version,
loaded = true
}
end
return M