, YouTubesJsErrors> | null>;
```
**Returns:**
-Promise<Result<[Pagination](./youtubes.js.pagination.md)<T>, YouTubesJsErrors> \| null>
+Promise<Result<[Pagination](./youtubes.js.pagination.md)<T>, [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)> \| null>
The previous page. If there is no previous page, returns `null`.
@@ -28,9 +28,11 @@ const oauth = new StaticOAuthProvider({
});
const client = new ApiClient({ oauth });
-const playlists = await client.playlists.getMine();
+
+// THIS IS UNSAFE ERROR HANDLING. See the safe error handling in the README.md Introduction.
+const playlists = (await client.playlists.getMine()).throw();
console.log(playlists.data); // The first page of playlists
-const prevPage = await playlists.prev();
+const prevPage = (await playlists.prev()).throw();
console.log(prevPage?.data); // The previous page of playlists or null if there is no previous page
```
diff --git a/docs/api/youtubes.js.paginationoptions.md b/docs/api/youtubes.js.paginationoptions.md
index 3aa62bb..7913570 100644
--- a/docs/api/youtubes.js.paginationoptions.md
+++ b/docs/api/youtubes.js.paginationoptions.md
@@ -60,7 +60,7 @@ T
-(token: string) => Promise<Result<[Pagination](./youtubes.js.pagination.md)<T>, YouTubesJsErrors>>
+(token: string) => Promise<Result<[Pagination](./youtubes.js.pagination.md)<T>, [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
|
diff --git a/docs/api/youtubes.js.playlist.from.md b/docs/api/youtubes.js.playlist.from.md
index b0e432d..740190c 100644
--- a/docs/api/youtubes.js.playlist.from.md
+++ b/docs/api/youtubes.js.playlist.from.md
@@ -59,5 +59,5 @@ Logger
**Returns:**
-Result<[Playlist](./youtubes.js.playlist.md), LikelyBugError>
+Result<[Playlist](./youtubes.js.playlist.md), [LikelyBugError](./youtubes.js.likelybugerror.md)>
diff --git a/docs/api/youtubes.js.playlist.frommany.md b/docs/api/youtubes.js.playlist.frommany.md
index c21eaa1..18add0c 100644
--- a/docs/api/youtubes.js.playlist.frommany.md
+++ b/docs/api/youtubes.js.playlist.frommany.md
@@ -59,5 +59,5 @@ Logger
**Returns:**
-Result<[Playlist](./youtubes.js.playlist.md)\[\], LikelyBugError>
+Result<[Playlist](./youtubes.js.playlist.md)\[\], [LikelyBugError](./youtubes.js.likelybugerror.md)>
diff --git a/docs/api/youtubes.js.playlistmanager.create.md b/docs/api/youtubes.js.playlistmanager.create.md
index 9c480b0..79f13b2 100644
--- a/docs/api/youtubes.js.playlistmanager.create.md
+++ b/docs/api/youtubes.js.playlistmanager.create.md
@@ -53,5 +53,5 @@ Options for creating a playlist.
**Returns:**
-Promise<Result<[Playlist](./youtubes.js.playlist.md), YouTubesJsErrors>>
+Promise<Result<[Playlist](./youtubes.js.playlist.md), [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
diff --git a/docs/api/youtubes.js.playlistmanager.getbychannelid.md b/docs/api/youtubes.js.playlistmanager.getbychannelid.md
index f3175dc..d9a1fba 100644
--- a/docs/api/youtubes.js.playlistmanager.getbychannelid.md
+++ b/docs/api/youtubes.js.playlistmanager.getbychannelid.md
@@ -69,7 +69,7 @@ _(Optional)_ The token for pagination.
**Returns:**
-Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, YouTubesJsErrors>>
+Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
## Example
diff --git a/docs/api/youtubes.js.playlistmanager.getbyids.md b/docs/api/youtubes.js.playlistmanager.getbyids.md
index 25df1c5..64f5941 100644
--- a/docs/api/youtubes.js.playlistmanager.getbyids.md
+++ b/docs/api/youtubes.js.playlistmanager.getbyids.md
@@ -69,7 +69,7 @@ _(Optional)_ The token for pagination.
**Returns:**
-Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, YouTubesJsErrors>>
+Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
## Example
diff --git a/docs/api/youtubes.js.playlistmanager.getmine.md b/docs/api/youtubes.js.playlistmanager.getmine.md
index 4c02214..774e2f2 100644
--- a/docs/api/youtubes.js.playlistmanager.getmine.md
+++ b/docs/api/youtubes.js.playlistmanager.getmine.md
@@ -53,7 +53,7 @@ _(Optional)_ The token for pagination.
**Returns:**
-Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, YouTubesJsErrors>>
+Promise<Result<[Pagination](./youtubes.js.pagination.md)<[Playlist](./youtubes.js.playlist.md)\[\]>, [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
## Example
diff --git a/docs/api/youtubes.js.playlistmanager.md b/docs/api/youtubes.js.playlistmanager.md
index 8cb7a34..74732a1 100644
--- a/docs/api/youtubes.js.playlistmanager.md
+++ b/docs/api/youtubes.js.playlistmanager.md
@@ -155,5 +155,23 @@ Fetches the playlists owned by the authenticated user.
\[YouTube Data API Reference\](https://developers.google.com/youtube/v3/docs/playlists/list)
+ |
+
+
+[updateById(options)](./youtubes.js.playlistmanager.updatebyid.md)
+
+
+ |
+
+
+ |
+
+Updates a playlist by its ID.
+
+- This operation uses 50 quota units. - \[If you are submitting an update request, and your request does not specify a value for a property that already has a value, the property's existing value will be deleted.\](https://developers.google.com/youtube/v3/docs/playlists/update\#request-body) - For example, when updating a playlist that has a description set, if you don't specify the `description`, it will be set to an empty string. - However, for the `privacy` property, it seems to remain unchanged if not specified.
+
+\[YouTube Data API Reference\](https://developers.google.com/youtube/v3/docs/playlists/update)
+
+
|
diff --git a/docs/api/youtubes.js.playlistmanager.updatebyid.md b/docs/api/youtubes.js.playlistmanager.updatebyid.md
new file mode 100644
index 0000000..666782f
--- /dev/null
+++ b/docs/api/youtubes.js.playlistmanager.updatebyid.md
@@ -0,0 +1,59 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [PlaylistManager](./youtubes.js.playlistmanager.md) > [updateById](./youtubes.js.playlistmanager.updatebyid.md)
+
+## PlaylistManager.updateById() method
+
+Updates a playlist by its ID.
+
+- This operation uses 50 quota units. - \[If you are submitting an update request, and your request does not specify a value for a property that already has a value, the property's existing value will be deleted.\](https://developers.google.com/youtube/v3/docs/playlists/update\#request-body) - For example, when updating a playlist that has a description set, if you don't specify the `description`, it will be set to an empty string. - However, for the `privacy` property, it seems to remain unchanged if not specified.
+
+\[YouTube Data API Reference\](https://developers.google.com/youtube/v3/docs/playlists/update)
+
+**Signature:**
+
+```typescript
+updateById(options: UpdatePlaylistOptions): Promise>;
+```
+
+## Parameters
+
+
+
+Parameter
+
+
+ |
+
+Type
+
+
+ |
+
+Description
+
+
+ |
+
+
+options
+
+
+ |
+
+UpdatePlaylistOptions
+
+
+ |
+
+Options for updating a playlist.
+
+
+ |
+
+**Returns:**
+
+Promise<Result<[Playlist](./youtubes.js.playlist.md), [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)>>
+
+- The updated playlist.
+
diff --git a/docs/api/youtubes.js.thumbnails.from.md b/docs/api/youtubes.js.thumbnails.from.md
index b9d2c01..6bb7c0a 100644
--- a/docs/api/youtubes.js.thumbnails.from.md
+++ b/docs/api/youtubes.js.thumbnails.from.md
@@ -63,5 +63,5 @@ Logger
**Returns:**
-Result<[Thumbnails](./youtubes.js.thumbnails.md), LikelyBugError>
+Result<[Thumbnails](./youtubes.js.thumbnails.md), [LikelyBugError](./youtubes.js.likelybugerror.md)>
diff --git a/docs/api/youtubes.js.youtubeapierror._constructor_.md b/docs/api/youtubes.js.youtubeapierror._constructor_.md
new file mode 100644
index 0000000..c1cb426
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror._constructor_.md
@@ -0,0 +1,61 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [(constructor)](./youtubes.js.youtubeapierror._constructor_.md)
+
+## YouTubeApiError.(constructor)
+
+Constructs a new instance of the `YouTubeApiError` class
+
+**Signature:**
+
+```typescript
+constructor(code: number, message: string);
+```
+
+## Parameters
+
+
+
+Parameter
+
+
+ |
+
+Type
+
+
+ |
+
+Description
+
+
+ |
+
+
+code
+
+
+ |
+
+number
+
+
+ |
+
+
+ |
+
+
+message
+
+
+ |
+
+string
+
+
+ |
+
+
+ |
+
diff --git a/docs/api/youtubes.js.youtubeapierror.code.md b/docs/api/youtubes.js.youtubeapierror.code.md
new file mode 100644
index 0000000..6a3c632
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.code.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [code](./youtubes.js.youtubeapierror.code.md)
+
+## YouTubeApiError.code property
+
+**Signature:**
+
+```typescript
+code: number;
+```
diff --git a/docs/api/youtubes.js.youtubeapierror.md b/docs/api/youtubes.js.youtubeapierror.md
new file mode 100644
index 0000000..3163d3c
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.md
@@ -0,0 +1,174 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md)
+
+## YouTubeApiError class
+
+Represents an error from the YouTube API.
+
+This error is thrown when the YouTube API returns an error response.
+
+**Signature:**
+
+```typescript
+export declare class YouTubeApiError implements BaseError
+```
+**Implements:** BaseError
+
+## Constructors
+
+
+
+Constructor
+
+
+ |
+
+Modifiers
+
+
+ |
+
+Description
+
+
+ |
+
+
+[(constructor)(code, message)](./youtubes.js.youtubeapierror._constructor_.md)
+
+
+ |
+
+
+ |
+
+Constructs a new instance of the `YouTubeApiError` class
+
+
+ |
+
+
+## Properties
+
+
+
+Property
+
+
+ |
+
+Modifiers
+
+
+ |
+
+Type
+
+
+ |
+
+Description
+
+
+ |
+
+
+[code](./youtubes.js.youtubeapierror.code.md)
+
+
+ |
+
+
+ |
+
+number
+
+
+ |
+
+
+ |
+
+
+[message](./youtubes.js.youtubeapierror.message.md)
+
+
+ |
+
+
+ |
+
+string
+
+
+ |
+
+
+ |
+
+
+[type](./youtubes.js.youtubeapierror.type.md)
+
+
+ |
+
+
+ |
+
+string
+
+
+ |
+
+
+ |
+
+
+## Methods
+
+
+
+Method
+
+
+ |
+
+Modifiers
+
+
+ |
+
+Description
+
+
+ |
+
+
+[throw()](./youtubes.js.youtubeapierror.throw.md)
+
+
+ |
+
+
+ |
+
+Throws the error.
+
+
+ |
+
+
+[toError()](./youtubes.js.youtubeapierror.toerror.md)
+
+
+ |
+
+
+ |
+
+Converts the error to an `Error` object.
+
+
+ |
+
diff --git a/docs/api/youtubes.js.youtubeapierror.message.md b/docs/api/youtubes.js.youtubeapierror.message.md
new file mode 100644
index 0000000..24fddb0
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.message.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [message](./youtubes.js.youtubeapierror.message.md)
+
+## YouTubeApiError.message property
+
+**Signature:**
+
+```typescript
+message: string;
+```
diff --git a/docs/api/youtubes.js.youtubeapierror.throw.md b/docs/api/youtubes.js.youtubeapierror.throw.md
new file mode 100644
index 0000000..ed7226a
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.throw.md
@@ -0,0 +1,17 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [throw](./youtubes.js.youtubeapierror.throw.md)
+
+## YouTubeApiError.throw() method
+
+Throws the error.
+
+**Signature:**
+
+```typescript
+throw(): never;
+```
+**Returns:**
+
+never
+
diff --git a/docs/api/youtubes.js.youtubeapierror.toerror.md b/docs/api/youtubes.js.youtubeapierror.toerror.md
new file mode 100644
index 0000000..4616929
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.toerror.md
@@ -0,0 +1,18 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [toError](./youtubes.js.youtubeapierror.toerror.md)
+
+## YouTubeApiError.toError() method
+
+Converts the error to an `Error` object.
+
+**Signature:**
+
+```typescript
+toError(): Error;
+```
+**Returns:**
+
+Error
+
+
diff --git a/docs/api/youtubes.js.youtubeapierror.type.md b/docs/api/youtubes.js.youtubeapierror.type.md
new file mode 100644
index 0000000..7e28959
--- /dev/null
+++ b/docs/api/youtubes.js.youtubeapierror.type.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubeApiError](./youtubes.js.youtubeapierror.md) > [type](./youtubes.js.youtubeapierror.type.md)
+
+## YouTubeApiError.type property
+
+**Signature:**
+
+```typescript
+type: string;
+```
diff --git a/docs/api/youtubes.js.youtubesjserrors.md b/docs/api/youtubes.js.youtubesjserrors.md
new file mode 100644
index 0000000..e2f1171
--- /dev/null
+++ b/docs/api/youtubes.js.youtubesjserrors.md
@@ -0,0 +1,13 @@
+
+
+[Home](./index.md) > [youtubes.js](./youtubes.js.md) > [YouTubesJsErrors](./youtubes.js.youtubesjserrors.md)
+
+## YouTubesJsErrors type
+
+**Signature:**
+
+```typescript
+export type YouTubesJsErrors = LikelyBugError | YouTubeApiError;
+```
+**References:** [LikelyBugError](./youtubes.js.likelybugerror.md), [YouTubeApiError](./youtubes.js.youtubeapierror.md)
+
diff --git a/package-lock.json b/package-lock.json
index e2c43b4..65ebe80 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "youtubes.js",
- "version": "0.3.0",
+ "version": "0.4.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "youtubes.js",
- "version": "0.3.0",
+ "version": "0.4.0",
"license": "MIT",
"dependencies": {
"googleapis": "^144.0.0",
diff --git a/package.json b/package.json
index e2f00b5..17e3415 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "youtubes.js",
"description": "A JavaScript client for YouTube Data API v3.",
- "version": "0.3.0",
+ "version": "0.4.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"keywords": [