{
	"diagnostics": [],
	"modules": [
		{
			"classes": [],
			"doc": "A tiny reactive state library.",
			"id": "examples/Flux/init.luau",
			"instancePath": [
				"examples",
				"Flux"
			],
			"members": [
				{
					"doc": "Creates a state holding `initial`.\n\nCall the state to read it, and see [State:Connect] for reacting to changes.",
					"errors": [],
					"id": "examples/Flux/init.luau#fn.Flux.state",
					"kind": "function",
					"name": "state",
					"signature": {
						"callee": "Flux.state",
						"params": [
							{
								"name": "initial",
								"type": [
									"T?"
								]
							}
						],
						"returns": [
							{
								"type": [
									{
										"id": "examples/Flux/State.luau#type.State",
										"text": "State.State"
									},
									"<T>"
								]
							}
						],
						"segs": [
							"<T>(initial: T?): ",
							{
								"id": "examples/Flux/State.luau#type.State",
								"text": "State.State"
							},
							"<T>"
						]
					},
					"source": {
						"endLine": 20,
						"file": "examples/Flux/init.luau",
						"line": 18
					},
					"tags": {
						"custom": []
					},
					"visibility": "public"
				}
			],
			"name": "Flux",
			"reexports": [
				{
					"id": "examples/Flux/init.luau#reexport.State",
					"name": "State",
					"targetModule": "examples/Flux/State.luau"
				},
				{
					"id": "examples/Flux/init.luau#reexport.Util",
					"name": "Util",
					"targetModule": "examples/Flux/Util/init.luau"
				},
				{
					"doc": "Reports whether `value` is a state.",
					"id": "examples/Flux/init.luau#reexport.isState",
					"name": "isState",
					"targetId": "examples/Flux/State.luau#fn.State.isState",
					"targetMember": "isState",
					"targetModule": "examples/Flux/State.luau"
				}
			],
			"source": {
				"file": "examples/Flux/init.luau",
				"line": 1
			},
			"types": []
		},
		{
			"classes": [
				{
					"constructors": [
						"examples/Flux/init.luau#fn.Flux.state",
						"examples/Flux/State.luau#fn.State.new"
					],
					"doc": "A single reactive value, and the listeners watching it.",
					"id": "examples/Flux/State.luau#class.State",
					"members": [
						{
							"doc": "Creates a state holding `initial`.",
							"errors": [],
							"id": "examples/Flux/State.luau#fn.State.new",
							"kind": "function",
							"name": "new",
							"signature": {
								"callee": "State.new",
								"params": [
									{
										"name": "initial",
										"type": [
											"T?"
										]
									}
								],
								"returns": [
									{
										"type": [
											{
												"id": "examples/Flux/State.luau#type.State",
												"text": "State"
											},
											"<T>"
										]
									}
								],
								"segs": [
									"<T>(initial: T?): ",
									{
										"id": "examples/Flux/State.luau#type.State",
										"text": "State"
									},
									"<T>"
								]
							},
							"source": {
								"endLine": 17,
								"file": "examples/Flux/State.luau",
								"line": 15
							},
							"tags": {
								"custom": []
							},
							"visibility": "public"
						},
						{
							"doc": "Reports whether `value` is a state.",
							"errors": [],
							"id": "examples/Flux/State.luau#fn.State.isState",
							"kind": "function",
							"name": "isState",
							"signature": {
								"callee": "State.isState",
								"params": [
									{
										"name": "value",
										"type": [
											{
												"text": "any"
											}
										]
									}
								],
								"returns": [
									{
										"type": [
											{
												"text": "boolean"
											}
										]
									}
								],
								"segs": [
									"(value: ",
									{
										"text": "any"
									},
									"): ",
									{
										"text": "boolean"
									}
								]
							},
							"source": {
								"endLine": 22,
								"file": "examples/Flux/State.luau",
								"line": 20
							},
							"tags": {
								"custom": []
							},
							"visibility": "public"
						},
						{
							"doc": "Runs `callback` whenever the value changes.\n\nReturns a function that disconnects the listener again.",
							"errors": [],
							"id": "examples/Flux/State.luau#fn.State.Connect",
							"kind": "method",
							"name": "Connect",
							"signature": {
								"callee": "State:Connect",
								"params": [
									{
										"name": "callback",
										"type": [
											"(",
											{
												"text": "any"
											},
											") -> ()"
										]
									}
								],
								"returns": [
									{
										"type": [
											"() -> ()"
										]
									}
								],
								"segs": [
									"(callback: (",
									{
										"text": "any"
									},
									") -> ()): () -> ()"
								]
							},
							"source": {
								"endLine": 37,
								"file": "examples/Flux/State.luau",
								"line": 29
							},
							"tags": {
								"custom": []
							},
							"visibility": "public"
						},
						{
							"doc": "Drops every listener and releases the state.",
							"errors": [],
							"id": "examples/Flux/State.luau#fn.State.Destroy",
							"kind": "method",
							"name": "Destroy",
							"signature": {
								"callee": "State:Destroy",
								"params": [],
								"returns": [],
								"segs": [
									"()"
								]
							},
							"source": {
								"endLine": 46,
								"file": "examples/Flux/State.luau",
								"line": 44
							},
							"tags": {
								"custom": [],
								"deprecated": {
									"note": "states are collected once nothing references them",
									"version": "2.0"
								}
							},
							"visibility": "public"
						}
					],
					"name": "State",
					"source": {
						"file": "examples/Flux/State.luau",
						"line": 2
					},
					"tags": {
						"custom": []
					}
				}
			],
			"doc": "A single reactive value, and the listeners watching it.",
			"id": "examples/Flux/State.luau",
			"instancePath": [
				"examples",
				"Flux",
				"State"
			],
			"members": [],
			"name": "State",
			"reexports": [],
			"source": {
				"file": "examples/Flux/State.luau",
				"line": 1
			},
			"types": [
				{
					"definition": [
						[
							"typeof(setmetatable("
						],
						[
							"\t{} :: {"
						],
						[
							"\t\tvalue: T, -- the value the state currently holds"
						],
						[
							"\t\tlisteners: { (T) -> () }, -- everything registered through [State:Connect]"
						],
						[
							"\t},"
						],
						[
							"\tState"
						],
						[
							"))"
						]
					],
					"doc": "A value that notifies listeners whenever it changes.",
					"exported": true,
					"generics": [
						{
							"isPack": false,
							"name": "T"
						}
					],
					"id": "examples/Flux/State.luau#type.State",
					"kind": "alias",
					"name": "State",
					"source": {
						"endLine": 12,
						"file": "examples/Flux/State.luau",
						"line": 6
					},
					"tags": {
						"custom": []
					},
					"visibility": "public"
				}
			]
		},
		{
			"classes": [],
			"doc": "Small helpers that stand on their own.",
			"id": "examples/Flux/Util/init.luau",
			"instancePath": [
				"examples",
				"Flux",
				"Util"
			],
			"members": [],
			"name": "Util",
			"reexports": [
				{
					"id": "examples/Flux/Util/init.luau#reexport.Queue",
					"name": "Queue",
					"targetModule": "examples/Flux/Util/Queue.luau"
				}
			],
			"source": {
				"file": "examples/Flux/Util/init.luau",
				"line": 1
			},
			"types": []
		},
		{
			"classes": [
				{
					"constructors": [
						"examples/Flux/Util/Queue.luau#fn.Queue.new"
					],
					"doc": "A queue that yields on `pop` until something is available.",
					"id": "examples/Flux/Util/Queue.luau#class.Queue",
					"members": [
						{
							"doc": "Creates an empty queue.",
							"errors": [],
							"id": "examples/Flux/Util/Queue.luau#fn.Queue.new",
							"kind": "function",
							"name": "new",
							"signature": {
								"callee": "Queue.new",
								"params": [],
								"returns": [
									{
										"type": [
											{
												"id": "examples/Flux/Util/Queue.luau#type.Queue",
												"text": "Queue"
											},
											"<T>"
										]
									}
								],
								"segs": [
									"<T>(): ",
									{
										"id": "examples/Flux/Util/Queue.luau#type.Queue",
										"text": "Queue"
									},
									"<T>"
								]
							},
							"source": {
								"endLine": 16,
								"file": "examples/Flux/Util/Queue.luau",
								"line": 14
							},
							"tags": {
								"custom": []
							},
							"visibility": "public"
						},
						{
							"doc": "Adds `item` to the back of the queue.",
							"errors": [],
							"id": "examples/Flux/Util/Queue.luau#fn.Queue.push",
							"kind": "method",
							"name": "push",
							"signature": {
								"callee": "Queue:push",
								"params": [
									{
										"name": "item",
										"type": [
											{
												"text": "any"
											}
										]
									}
								],
								"returns": [],
								"segs": [
									"(item: ",
									{
										"text": "any"
									},
									")"
								]
							},
							"source": {
								"endLine": 25,
								"file": "examples/Flux/Util/Queue.luau",
								"line": 23
							},
							"tags": {
								"custom": [],
								"since": "1.1.0"
							},
							"visibility": "public"
						},
						{
							"doc": "Removes the front item and returns it, waiting when the queue is empty.",
							"errors": [],
							"id": "examples/Flux/Util/Queue.luau#fn.Queue.pop",
							"kind": "method",
							"name": "pop",
							"signature": {
								"callee": "Queue:pop",
								"params": [],
								"returns": [
									{
										"type": [
											{
												"text": "any"
											}
										]
									}
								],
								"segs": [
									"(): ",
									{
										"text": "any"
									}
								]
							},
							"source": {
								"endLine": 33,
								"file": "examples/Flux/Util/Queue.luau",
								"line": 28
							},
							"tags": {
								"custom": [],
								"yields": true
							},
							"visibility": "public"
						}
					],
					"name": "Queue",
					"source": {
						"file": "examples/Flux/Util/Queue.luau",
						"line": 2
					},
					"tags": {
						"custom": []
					}
				}
			],
			"doc": "A queue that yields on `pop` until something is available.",
			"id": "examples/Flux/Util/Queue.luau",
			"instancePath": [
				"examples",
				"Flux",
				"Util",
				"Queue"
			],
			"members": [],
			"name": "Queue",
			"reexports": [],
			"source": {
				"file": "examples/Flux/Util/Queue.luau",
				"line": 1
			},
			"types": [
				{
					"definition": [
						[
							"typeof(setmetatable("
						],
						[
							"\t{} :: {"
						],
						[
							"\t\titems: { T }, -- everything still waiting, front first"
						],
						[
							"\t},"
						],
						[
							"\tQueue"
						],
						[
							"))"
						]
					],
					"doc": "A first-in, first-out queue.",
					"exported": true,
					"generics": [
						{
							"isPack": false,
							"name": "T"
						}
					],
					"id": "examples/Flux/Util/Queue.luau#type.Queue",
					"kind": "alias",
					"name": "Queue",
					"source": {
						"endLine": 11,
						"file": "examples/Flux/Util/Queue.luau",
						"line": 6
					},
					"tags": {
						"custom": []
					},
					"visibility": "public"
				}
			]
		}
	],
	"project": {
		"entryPoints": [
			"examples/Flux/init.luau"
		]
	},
	"schemaVersion": 1
}
