Skip to content

Commit ab25daa

Browse files
stainless-app[bot]Stainless Bot
and
Stainless Bot
authored
release: 2.1.1 (#59)
Automated Release PR --- ## 2.1.1 (2024-12-12) Full Changelog: [v2.1.0...v2.1.1](v2.1.0...v2.1.1) ### Chores * **internal:** bump cross-spawn to v7.0.6 ([#63](#63)) ([43a8303](43a8303)) * **internal:** codegen related update ([#50](#50)) ([bb1dfba](bb1dfba)) * **internal:** codegen related update ([#65](#65)) ([03b26a2](03b26a2)) * **internal:** remove unnecessary getRequestClient function ([#62](#62)) ([ad17e82](ad17e82)) * **internal:** version bump ([#56](#56)) ([1434357](1434357)) * **internal:** version bump ([#60](#60)) ([535d652](535d652)) * **types:** nicer error class types + jsdocs ([#64](#64)) ([7bf7d7b](7bf7d7b)) --- This pull request is managed by Stainless's [GitHub App](https://github.com/apps/stainless-app). The [semver version number](https://semver.org/#semantic-versioning-specification-semver) is based on included [commit messages](https://www.conventionalcommits.org/en/v1.0.0/). Alternatively, you can manually set the version number in the title of this pull request. For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request. 🔗 Stainless [website](https://www.stainlessapi.com) 📚 Read the [docs](https://app.stainlessapi.com/docs) 🙋 [Reach out](mailto:[email protected]) for help or questions --------- Co-authored-by: Stainless Bot <[email protected]> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com>
1 parent 630e50c commit ab25daa

8 files changed

+52
-60
lines changed

.release-please-manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "2.1.0"
2+
".": "2.1.1"
33
}

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## 2.1.1 (2024-12-12)
4+
5+
Full Changelog: [v2.1.0...v2.1.1](https://github.com/browserbase/sdk-node/compare/v2.1.0...v2.1.1)
6+
7+
### Chores
8+
9+
* **internal:** bump cross-spawn to v7.0.6 ([#63](https://github.com/browserbase/sdk-node/issues/63)) ([43a8303](https://github.com/browserbase/sdk-node/commit/43a83039ad2c853410f4918e637597f637edaac0))
10+
* **internal:** codegen related update ([#50](https://github.com/browserbase/sdk-node/issues/50)) ([bb1dfba](https://github.com/browserbase/sdk-node/commit/bb1dfba218c17fc31ec1c5a51d7d0cc85fe1e81a))
11+
* **internal:** codegen related update ([#65](https://github.com/browserbase/sdk-node/issues/65)) ([03b26a2](https://github.com/browserbase/sdk-node/commit/03b26a2b9205acf68ad254ec8be20d65e9212ef3))
12+
* **internal:** remove unnecessary getRequestClient function ([#62](https://github.com/browserbase/sdk-node/issues/62)) ([ad17e82](https://github.com/browserbase/sdk-node/commit/ad17e821be22d01ee1521fd5d1fdb6a3a95865e2))
13+
* **internal:** version bump ([#56](https://github.com/browserbase/sdk-node/issues/56)) ([1434357](https://github.com/browserbase/sdk-node/commit/1434357ce1efc7895b717c18593461a6d3ea8dc0))
14+
* **internal:** version bump ([#60](https://github.com/browserbase/sdk-node/issues/60)) ([535d652](https://github.com/browserbase/sdk-node/commit/535d652bb074cd9a7a37ee647e670c716fca3b1b))
15+
* **types:** nicer error class types + jsdocs ([#64](https://github.com/browserbase/sdk-node/issues/64)) ([7bf7d7b](https://github.com/browserbase/sdk-node/commit/7bf7d7b7058accc456b51928495b8b21b0ace08c))
16+
317
## 2.1.0 (2024-11-29)
418

519
Full Changelog: [v2.0.2...v2.1.0](https://github.com/browserbase/sdk-node/compare/v2.0.2...v2.1.0)

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@browserbasehq/sdk",
3-
"version": "2.1.0",
3+
"version": "2.1.1",
44
"description": "The official Node.js library for the Browserbase API",
55
"author": "Browserbase <[email protected]>",
66
"types": "dist/index.d.ts",

src/core.ts

+6-12
Original file line numberDiff line numberDiff line change
@@ -523,19 +523,13 @@ export abstract class APIClient {
523523
const timeout = setTimeout(() => controller.abort(), ms);
524524

525525
return (
526-
this.getRequestClient()
527-
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
528-
.fetch.call(undefined, url, { signal: controller.signal as any, ...options })
529-
.finally(() => {
530-
clearTimeout(timeout);
531-
})
526+
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
527+
this.fetch.call(undefined, url, { signal: controller.signal as any, ...options }).finally(() => {
528+
clearTimeout(timeout);
529+
})
532530
);
533531
}
534532

535-
protected getRequestClient(): RequestClient {
536-
return { fetch: this.fetch };
537-
}
538-
539533
private shouldRetry(response: Response): boolean {
540534
// Note this is not a standard header.
541535
const shouldRetryHeader = response.headers.get('x-should-retry');
@@ -976,8 +970,8 @@ export const safeJSON = (text: string) => {
976970
}
977971
};
978972

979-
// https://stackoverflow.com/a/19709846
980-
const startsWithSchemeRegexp = new RegExp('^(?:[a-z]+:)?//', 'i');
973+
// https://url.spec.whatwg.org/#url-scheme-string
974+
const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;
981975
const isAbsoluteURL = (url: string): boolean => {
982976
return startsWithSchemeRegexp.test(url);
983977
};

src/error.ts

+24-40
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@ import { castToError, Headers } from './core';
44

55
export class BrowserbaseError extends Error {}
66

7-
export class APIError extends BrowserbaseError {
8-
readonly status: number | undefined;
9-
readonly headers: Headers | undefined;
10-
readonly error: Object | undefined;
11-
12-
constructor(
13-
status: number | undefined,
14-
error: Object | undefined,
15-
message: string | undefined,
16-
headers: Headers | undefined,
17-
) {
7+
export class APIError<
8+
TStatus extends number | undefined = number | undefined,
9+
THeaders extends Headers | undefined = Headers | undefined,
10+
TError extends Object | undefined = Object | undefined,
11+
> extends BrowserbaseError {
12+
/** HTTP status for the response that caused the error */
13+
readonly status: TStatus;
14+
/** HTTP headers for the response that caused the error */
15+
readonly headers: THeaders;
16+
/** JSON body of the response that caused the error */
17+
readonly error: TError;
18+
19+
constructor(status: TStatus, error: TError, message: string | undefined, headers: THeaders) {
1820
super(`${APIError.makeMessage(status, error, message)}`);
1921
this.status = status;
2022
this.headers = headers;
@@ -48,7 +50,7 @@ export class APIError extends BrowserbaseError {
4850
message: string | undefined,
4951
headers: Headers | undefined,
5052
): APIError {
51-
if (!status) {
53+
if (!status || !headers) {
5254
return new APIConnectionError({ message, cause: castToError(errorResponse) });
5355
}
5456

@@ -90,17 +92,13 @@ export class APIError extends BrowserbaseError {
9092
}
9193
}
9294

93-
export class APIUserAbortError extends APIError {
94-
override readonly status: undefined = undefined;
95-
95+
export class APIUserAbortError extends APIError<undefined, undefined, undefined> {
9696
constructor({ message }: { message?: string } = {}) {
9797
super(undefined, undefined, message || 'Request was aborted.', undefined);
9898
}
9999
}
100100

101-
export class APIConnectionError extends APIError {
102-
override readonly status: undefined = undefined;
103-
101+
export class APIConnectionError extends APIError<undefined, undefined, undefined> {
104102
constructor({ message, cause }: { message?: string | undefined; cause?: Error | undefined }) {
105103
super(undefined, undefined, message || 'Connection error.', undefined);
106104
// in some environments the 'cause' property is already declared
@@ -115,32 +113,18 @@ export class APIConnectionTimeoutError extends APIConnectionError {
115113
}
116114
}
117115

118-
export class BadRequestError extends APIError {
119-
override readonly status: 400 = 400;
120-
}
116+
export class BadRequestError extends APIError<400, Headers> {}
121117

122-
export class AuthenticationError extends APIError {
123-
override readonly status: 401 = 401;
124-
}
118+
export class AuthenticationError extends APIError<401, Headers> {}
125119

126-
export class PermissionDeniedError extends APIError {
127-
override readonly status: 403 = 403;
128-
}
120+
export class PermissionDeniedError extends APIError<403, Headers> {}
129121

130-
export class NotFoundError extends APIError {
131-
override readonly status: 404 = 404;
132-
}
122+
export class NotFoundError extends APIError<404, Headers> {}
133123

134-
export class ConflictError extends APIError {
135-
override readonly status: 409 = 409;
136-
}
124+
export class ConflictError extends APIError<409, Headers> {}
137125

138-
export class UnprocessableEntityError extends APIError {
139-
override readonly status: 422 = 422;
140-
}
126+
export class UnprocessableEntityError extends APIError<422, Headers> {}
141127

142-
export class RateLimitError extends APIError {
143-
override readonly status: 429 = 429;
144-
}
128+
export class RateLimitError extends APIError<429, Headers> {}
145129

146-
export class InternalServerError extends APIError {}
130+
export class InternalServerError extends APIError<number, Headers> {}

src/version.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const VERSION = '2.1.0'; // x-release-please-version
1+
export const VERSION = '2.1.1'; // x-release-please-version

yarn.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -1526,9 +1526,9 @@ [email protected]:
15261526
node-fetch "2.6.7"
15271527

15281528
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
1529-
version "7.0.3"
1530-
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
1531-
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
1529+
version "7.0.6"
1530+
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
1531+
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
15321532
dependencies:
15331533
path-key "^3.1.0"
15341534
shebang-command "^2.0.0"

0 commit comments

Comments
 (0)