chore: add proper documentation (#763)

* chore: generate API ref using `typedoc`

* chore: declutter readme and add links to ytjs.dev

* chore: clean up
This commit is contained in:
Luan
2024-09-23 17:32:50 -03:00
committed by GitHub
parent dd7f5cf778
commit 74659fd03f
853 changed files with 139814 additions and 1929 deletions

View File

@@ -0,0 +1,36 @@
[youtubei.js](../../README.md) / Generator
# Generator
## Index
### Interfaces
- [ObjectInferenceType](interfaces/ObjectInferenceType.md)
- [PrimativeInferenceType](interfaces/PrimativeInferenceType.md)
- [RendererInferenceType](interfaces/RendererInferenceType.md)
### Type Aliases
- [ArrayInferenceType](type-aliases/ArrayInferenceType.md)
- [InferenceType](type-aliases/InferenceType.md)
- [KeyInfo](type-aliases/KeyInfo.md)
- [MiscInferenceType](type-aliases/MiscInferenceType.md)
### Functions
- [camelToSnake](functions/camelToSnake.md)
- [createRuntimeClass](functions/createRuntimeClass.md)
- [generateRuntimeClass](functions/generateRuntimeClass.md)
- [generateTypescriptClass](functions/generateTypescriptClass.md)
- [inferType](functions/inferType.md)
- [introspect](functions/introspect.md)
- [isArrayType](functions/isArrayType.md)
- [isIgnoredKey](functions/isIgnoredKey.md)
- [isMiscType](functions/isMiscType.md)
- [isRenderer](functions/isRenderer.md)
- [isRendererList](functions/isRendererList.md)
- [mergeKeyInfo](functions/mergeKeyInfo.md)
- [parse](functions/parse.md)
- [toParser](functions/toParser.md)
- [toTypeDeclaration](functions/toTypeDeclaration.md)

View File

@@ -0,0 +1,17 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / camelToSnake
# Function: camelToSnake()
> **camelToSnake**(`str`): `string`
## Parameters
**str**: `string`
## Returns
`string`
## Defined in
[src/parser/generator.ts:80](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L80)

View File

@@ -0,0 +1,29 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / createRuntimeClass
# Function: createRuntimeClass()
> **createRuntimeClass**(`classname`, `key_info`, `logger`): [`YTNodeConstructor`](../../Helpers/interfaces/YTNodeConstructor.md)
Given a classname and its resolved key info, create a new class
## Parameters
**classname**: `string`
The name of the class
**key\_info**: [`KeyInfo`](../type-aliases/KeyInfo.md)
The resolved key info
**logger**: [`ParserErrorHandler`](../../Parser/type-aliases/ParserErrorHandler.md)
## Returns
[`YTNodeConstructor`](../../Helpers/interfaces/YTNodeConstructor.md)
Class based on the key info extending YTNode
## Defined in
[src/parser/generator.ts:408](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L408)

View File

@@ -0,0 +1,29 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / generateRuntimeClass
# Function: generateRuntimeClass()
> **generateRuntimeClass**(`classname`, `classdata`, `logger`): [`YTNodeConstructor`](../../Helpers/interfaces/YTNodeConstructor.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
Given example data for a class, introspect, implement dependencies, and create a new class
## Parameters
**classname**: `string`
The name of the class
**classdata**: `unknown`
The example of the class
**logger**: [`ParserErrorHandler`](../../Parser/type-aliases/ParserErrorHandler.md)
## Returns
[`YTNodeConstructor`](../../Helpers/interfaces/YTNodeConstructor.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
Class based on the example classdata extending YTNode
## Defined in
[src/parser/generator.ts:470](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L470)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / generateTypescriptClass
# Function: generateTypescriptClass()
> **generateTypescriptClass**(`classname`, `key_info`): `string`
Generate a typescript class based on the key info
## Parameters
**classname**: `string`
The name of the class
**key\_info**: [`KeyInfo`](../type-aliases/KeyInfo.md)
The key info, as returned by [introspect](introspect.md)
## Returns
`string`
Typescript class file
## Defined in
[src/parser/generator.ts:491](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L491)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / inferType
# Function: inferType()
> **inferType**(`key`, `value`): [`InferenceType`](../type-aliases/InferenceType.md)
Infer the type of a key given its value
## Parameters
**key**: `string`
The key to infer the type of
**value**: `unknown`
The value of the key
## Returns
[`InferenceType`](../type-aliases/InferenceType.md)
The inferred type
## Defined in
[src/parser/generator.ts:90](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L90)

View File

@@ -0,0 +1,31 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / introspect
# Function: introspect()
> **introspect**(`classdata`): `object`
Introspect an example of a class in order to determine its key info and dependencies
## Parameters
**classdata**: `unknown`
The example of the class
## Returns
`object`
The key info and any unimplemented dependencies
### key\_info
> **key\_info**: readonly [`string`, [`InferenceType`](../type-aliases/InferenceType.md)][]
### unimplemented\_dependencies
> **unimplemented\_dependencies**: [`string`, `any`][]
## Defined in
[src/parser/generator.ts:374](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L374)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / isArrayType
# Function: isArrayType()
> **isArrayType**(`value`): `false` \| [`ArrayInferenceType`](../type-aliases/ArrayInferenceType.md)
Checks if the given value is an array
## Parameters
**value**: `unknown`
The value to check
## Returns
`false` \| [`ArrayInferenceType`](../type-aliases/ArrayInferenceType.md)
If it is an array, return the InferenceType. Otherwise, return false.
## Defined in
[src/parser/generator.ts:220](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L220)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / isIgnoredKey
# Function: isIgnoredKey()
> **isIgnoredKey**(`key`): `boolean`
Is this key ignored by the parser?
## Parameters
**key**: `string` \| `symbol`
The key to check
## Returns
`boolean`
Whether or not the key is ignored
## Defined in
[src/parser/generator.ts:398](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L398)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / isMiscType
# Function: isMiscType()
> **isMiscType**(`key`, `value`): [`MiscInferenceType`](../type-aliases/MiscInferenceType.md) \| `false`
Check if the given value is a misc type.
## Parameters
**key**: `string`
The key of the value
**value**: `unknown`
The value to check
## Returns
[`MiscInferenceType`](../type-aliases/MiscInferenceType.md) \| `false`
If it is a misc type, return the InferenceType. Otherwise, return false.
## Defined in
[src/parser/generator.ts:161](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L161)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / isRenderer
# Function: isRenderer()
> **isRenderer**(`value`): `string` \| `false`
Check if the given value is a renderer
## Parameters
**value**: `unknown`
The value to check
## Returns
`string` \| `false`
If it is a renderer, return the class name. Otherwise, return false.
## Defined in
[src/parser/generator.ts:200](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L200)

View File

@@ -0,0 +1,24 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / isRendererList
# Function: isRendererList()
> **isRendererList**(`value`): `false` \| `object`
Checks if the given value is an array of renderers
## Parameters
**value**: `unknown`
The value to check
## Returns
`false` \| `object`
If it is a renderer list, return an object with keys being the classnames, and values being an example of that class.
Otherwise, return false.
## Defined in
[src/parser/generator.ts:139](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L139)

View File

@@ -0,0 +1,35 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / mergeKeyInfo
# Function: mergeKeyInfo()
> **mergeKeyInfo**(`key_info`, `new_key_info`): `object`
Merges two sets of key info, resolving any conflicts
## Parameters
**key\_info**: [`KeyInfo`](../type-aliases/KeyInfo.md)
The current key info
**new\_key\_info**: [`KeyInfo`](../type-aliases/KeyInfo.md)
The new key info
## Returns
`object`
The merged key info
### changed\_keys
> **changed\_keys**: [`string`, [`InferenceType`](../type-aliases/InferenceType.md)][]
### resolved\_key\_info
> **resolved\_key\_info**: [`string`, [`InferenceType`](../type-aliases/InferenceType.md)][]
## Defined in
[src/parser/generator.ts:736](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L736)

View File

@@ -0,0 +1,35 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / parse
# Function: parse()
> **parse**(`key`, `inference_type`, `data`, `key_path`): `any`
Parse a value from a given key path using the given inference type
## Parameters
**key**: `string`
The key to parse
**inference\_type**: [`InferenceType`](../type-aliases/InferenceType.md)
The inference type to parse
**data**: `unknown`
The data to parse from
**key\_path**: `string`[] = `...`
The path to the key (excluding the key itself)
## Returns
`any`
The parsed value
## Defined in
[src/parser/generator.ts:678](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L678)

View File

@@ -0,0 +1,35 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / toParser
# Function: toParser()
> **toParser**(`key`, `inference_type`, `key_path`, `indentation`): `string`
Generate statements to parse a given inference type
## Parameters
**key**: `string`
The key to parse
**inference\_type**: [`InferenceType`](../type-aliases/InferenceType.md)
The inference type to parse
**key\_path**: `string`[] = `...`
The path to the key (excluding the key itself)
**indentation**: `number` = `1`
The indentation level (used for objects)
## Returns
`string`
Statement to parse the given key
## Defined in
[src/parser/generator.ts:575](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L575)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / toTypeDeclaration
# Function: toTypeDeclaration()
> **toTypeDeclaration**(`inference_type`, `indentation`): `string`
For a given inference type, get the typescript type declaration
## Parameters
**inference\_type**: [`InferenceType`](../type-aliases/InferenceType.md)
The inference type to get the declaration for
**indentation**: `number` = `0`
The indentation level (used for objects)
## Returns
`string`
Typescript type declaration
## Defined in
[src/parser/generator.ts:516](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L516)

View File

@@ -0,0 +1,33 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / ObjectInferenceType
# Interface: ObjectInferenceType
## Properties
### keys
> **keys**: [`KeyInfo`](../type-aliases/KeyInfo.md)
#### Defined in
[src/parser/generator.ts:37](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L37)
***
### optional
> **optional**: `boolean`
#### Defined in
[src/parser/generator.ts:38](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L38)
***
### type
> **type**: `"object"`
#### Defined in
[src/parser/generator.ts:36](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L36)

View File

@@ -0,0 +1,33 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / PrimativeInferenceType
# Interface: PrimativeInferenceType
## Properties
### optional
> **optional**: `boolean`
#### Defined in
[src/parser/generator.ts:50](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L50)
***
### type
> **type**: `"primative"`
#### Defined in
[src/parser/generator.ts:48](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L48)
***
### typeof
> **typeof**: (`"string"` \| `"number"` \| `"bigint"` \| `"boolean"` \| `"symbol"` \| `"undefined"` \| `"function"` \| `"unknown"` \| `"never"`)[]
#### Defined in
[src/parser/generator.ts:49](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L49)

View File

@@ -0,0 +1,33 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / RendererInferenceType
# Interface: RendererInferenceType
## Properties
### optional
> **optional**: `boolean`
#### Defined in
[src/parser/generator.ts:44](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L44)
***
### renderers
> **renderers**: `string`[]
#### Defined in
[src/parser/generator.ts:43](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L43)
***
### type
> **type**: `"renderer"`
#### Defined in
[src/parser/generator.ts:42](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L42)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / ArrayInferenceType
# Type Alias: ArrayInferenceType
> **ArrayInferenceType**: `object` \| `object` \| `object`
## Defined in
[src/parser/generator.ts:53](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L53)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / InferenceType
# Type Alias: InferenceType
> **InferenceType**: [`RendererInferenceType`](../interfaces/RendererInferenceType.md) \| [`MiscInferenceType`](MiscInferenceType.md) \| [`ObjectInferenceType`](../interfaces/ObjectInferenceType.md) \| [`PrimativeInferenceType`](../interfaces/PrimativeInferenceType.md) \| [`ArrayInferenceType`](ArrayInferenceType.md)
## Defined in
[src/parser/generator.ts:70](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L70)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / KeyInfo
# Type Alias: KeyInfo
> **KeyInfo**: readonly [`string`, [`InferenceType`](InferenceType.md)][]
## Defined in
[src/parser/generator.ts:72](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L72)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [Generator](../README.md) / MiscInferenceType
# Type Alias: MiscInferenceType
> **MiscInferenceType**: `object` \| `object` \| `object` \| `object`
## Defined in
[src/parser/generator.ts:13](https://github.com/LuanRT/YouTube.js/blob/eb21af33db708f0355f4fb15881f5d4fabc7b06c/src/parser/generator.ts#L13)