Skip to content

Allure API

Allure is a (Container DI, IoC) Node & Worker Framework that provides a container for loading modules as Nodes via NodeTrees.
Node and NodeTree workflows are capable of orchestrating many architectures like MVC, Master-Worker, Messaging Bus, etc.


Types

Node

luau
type Node<T=table> = T & {
	read Dependencies: { unknown },

	Tags: {
		[any]: any,
	},
}

Standard Node Contents derived from default HiddenMeta.
The type of any Node is Node or Node<T>.

NodeTree

luau
type NodeTree = {
	Tree: { Node },

	ForEachParallel: (
		self: NodeTree,
		fn: (self: NodeTree, Node: Node) -> ...any?,
		errhandler: nil | <E>(self: NodeTree, Node: Node, Err: E) -> ...any?,
		yieldthreshold: number?
	) -> NodeTree,
	ForEach: (
		self: NodeTree,
		fn: (self: NodeTree, Node: Node) -> ...any?,
		errhandler: nil | <E>(self: NodeTree, Node: Node, Err: E) -> ...any?,
		yieldthreshold: number?
	) -> NodeTree,
	ForAll: (self: NodeTree, fn: (self: NodeTree, Nodes: { Node }) -> ...any?) -> NodeTree,
	ForEachTagged: (self: NodeTree, tag: any, fn: (self: NodeTree, Node: Node) -> ...any?) -> NodeTree,
	ForAllTagged: (self: NodeTree, tag: any, fn: (self: NodeTree, Nodes: { Node }) -> ...any?) -> NodeTree,
	Sort: (self: NodeTree, fn: (self: NodeTree, node: Node, shared: table) -> number) -> NodeTree,
	NodeFromInstance: (self: NodeTree, instance: Instance) -> Node?,
	NodeFromPredicate: (self: NodeTree, predicate: (self: NodeTree, Node: Node) -> boolean) -> Node?,
	Clone: (self: NodeTree) -> NodeTree,

	LoadNode: (self: NodeTree, node: Node) -> NodeTree,
	LoadNodes: (self: NodeTree, nodes: { table & Node }) -> NodeTree,
	LoadChildren: (self: NodeTree, instance: Instance) -> NodeTree,
	LoadDescendants: (self: NodeTree, instance: Instance) -> NodeTree,
	LoadDescendantsPredicate: (self: NodeTree, instance: Instance, predicate: (self: NodeTree, Instance: Instance) -> boolean) -> NodeTree,
	LoadFromTree: (self: NodeTree, tree: NodeTree) -> NodeTree,
	UnloadFromTree: (self: NodeTree, tree: NodeTree) -> NodeTree,

	SlicePredicate: (self: NodeTree, predicate: (self: NodeTree, Node: Node) -> boolean) -> NodeTree,
	SliceNode: (self: NodeTree, Node: Node) -> NodeTree,
	SliceFromChild: (self: NodeTree, child: Instance) -> NodeTree,
	SliceTagged: (self: NodeTree, tag: any, valueType: string?, value: any?) -> NodeTree,
}

The type of NodeTrees.

Worker

luau
type Worker = {
	Function: <A..., R...>(self: Thread, fn: (A...) -> R...) -> (A...) -> (),
	Enqueue: <A..., R...>(self: Thread, fn: (A...) -> R...) -> Thread,
	Dequeue: <A..., R...>(self: Thread, index: number?) -> (A...) -> R...,
	Queue: { (...any?) -> ...any? },
	QueueHook: { (...any?) -> ...any? },
	Yield: (self: Thread, sec: number) -> number,
	Coroutine: thread,
	Kill: (self: Thread) -> (),
}

Custom thread object for Worker Nodes.
Encapsulates a thread and a queue for task (function) consumption.

Released under the MIT License.