Skip to content

Commit 8efeda0

Browse files
release: 10.0.0 (#524)
* chore: rebuild project due to codegen change (#523) * docs: remove suggestion to use `npm` call out (#525) * chore: remove redundant word in comment (#526) * feat(internal): make git install file structure match npm (#527) * chore(internal): remove unnecessary getRequestClient function (#528) * chore(internal): bump cross-spawn to v7.0.6 (#529) Note: it is a dev transitive dependency. * chore(types): nicer error class types + jsdocs (#530) * chore(internal): update isAbsoluteURL (#531) * feat: generate more types that are used as request bodies (#532) * feat(api): api update (#533) * trigger CI * chore(internal): fix some typos (#534) * codegen metadata * fix(client): normalize method (#535) * feat: Add video.asset.non_standard_input_detected webhook (#317) (#536) * docs: minor formatting changes (#537) * chore(internal): codegen related update (#538) * chore(internal): codegen related update (#539) * chore(internal): codegen related update (#541) * feat(client): send `X-Stainless-Timeout` header (#542) * feat: Add passthrough field on static renditions (#320) (#543) * feat: Additional Standard Dimensions (#319) (#544) * fix(client): fix export map for index exports (#545) * chore!: deprecate `mp4_support` option (#321) (#547) * chore(internal): fix devcontainers setup (#548) * codegen metadata * release: 10.0.0 --------- Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: Samuel El-Borai <[email protected]>
1 parent 3b6a553 commit 8efeda0

37 files changed

+495
-285
lines changed

.devcontainer/Dockerfile

-23
This file was deleted.

.devcontainer/devcontainer.json

+12-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
22
// README at: https://github.com/devcontainers/templates/tree/main/src/debian
33
{
4-
"name": "Debian",
5-
"build": {
6-
"dockerfile": "Dockerfile"
4+
"name": "Development",
5+
"image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
6+
"features": {
7+
"ghcr.io/devcontainers/features/node:1": {}
8+
},
9+
"postCreateCommand": "yarn install",
10+
"customizations": {
11+
"vscode": {
12+
"extensions": [
13+
"esbenp.prettier-vscode"
14+
]
15+
}
716
}
8-
9-
// Features to add to the dev container. More info: https://containers.dev/features.
10-
// "features": {},
11-
12-
// Use 'forwardPorts' to make a list of ports inside the container available locally.
13-
// "forwardPorts": [],
14-
15-
// Configure tool-specific properties.
16-
// "customizations": {},
17-
18-
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
19-
// "remoteUser": "root"
2017
}

.release-please-manifest.json

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

.stats.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
configured_endpoints: 88
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mux%2Fmux-59cc6a0736ea7363f64111dcca8774fe5e7f353c547071c7064574456c178486.yml
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mux%2Fmux-2eec862e75143314aec7ca531a90eecc404ce10a5038c2140810caaeb22cae43.yml

CHANGELOG.md

+46
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,51 @@
11
# Changelog
22

3+
## 10.0.0 (2025-02-21)
4+
5+
Full Changelog: [v9.0.1...v10.0.0](https://github.com/muxinc/mux-node-sdk/compare/v9.0.1...v10.0.0)
6+
7+
### ⚠ BREAKING CHANGES
8+
9+
* deprecate `mp4_support` option ([#321](https://github.com/muxinc/mux-node-sdk/issues/321)) (#547)
10+
11+
### Features
12+
13+
* Add passthrough field on static renditions ([#320](https://github.com/muxinc/mux-node-sdk/issues/320)) ([#543](https://github.com/muxinc/mux-node-sdk/issues/543)) ([33ceef2](https://github.com/muxinc/mux-node-sdk/commit/33ceef2da37106ef2b2abef8a950544df279a42f))
14+
* Add video.asset.non_standard_input_detected webhook ([#317](https://github.com/muxinc/mux-node-sdk/issues/317)) ([#536](https://github.com/muxinc/mux-node-sdk/issues/536)) ([d39b407](https://github.com/muxinc/mux-node-sdk/commit/d39b407da4e2cf57e600a0181175de8e0ecd7aeb))
15+
* Additional Standard Dimensions ([#319](https://github.com/muxinc/mux-node-sdk/issues/319)) ([#544](https://github.com/muxinc/mux-node-sdk/issues/544)) ([22dbea3](https://github.com/muxinc/mux-node-sdk/commit/22dbea3eea8efcd8c9bd8e650f5af4f94ce44e3e))
16+
* **api:** api update ([#533](https://github.com/muxinc/mux-node-sdk/issues/533)) ([febeae5](https://github.com/muxinc/mux-node-sdk/commit/febeae5171526e60460024b6c46a142533eeb235))
17+
* **client:** send `X-Stainless-Timeout` header ([#542](https://github.com/muxinc/mux-node-sdk/issues/542)) ([bddd452](https://github.com/muxinc/mux-node-sdk/commit/bddd45248b23fb9b363ccdb75d442e9b6ff4aa1c))
18+
* generate more types that are used as request bodies ([#532](https://github.com/muxinc/mux-node-sdk/issues/532)) ([17dc3e2](https://github.com/muxinc/mux-node-sdk/commit/17dc3e216554bf18b3e015577f192c024c63bc38))
19+
* **internal:** make git install file structure match npm ([#527](https://github.com/muxinc/mux-node-sdk/issues/527)) ([10ae8eb](https://github.com/muxinc/mux-node-sdk/commit/10ae8ebf80dd4f2962739694229c700c55b682b3))
20+
21+
22+
### Bug Fixes
23+
24+
* **client:** fix export map for index exports ([#545](https://github.com/muxinc/mux-node-sdk/issues/545)) ([228c810](https://github.com/muxinc/mux-node-sdk/commit/228c8101ed21732bca78383561cec082a0076e92))
25+
* **client:** normalize method ([#535](https://github.com/muxinc/mux-node-sdk/issues/535)) ([7993276](https://github.com/muxinc/mux-node-sdk/commit/799327684ce912491a776a272e0f13ad0ac23944))
26+
27+
28+
### Chores
29+
30+
* deprecate `mp4_support` option ([#321](https://github.com/muxinc/mux-node-sdk/issues/321)) ([#547](https://github.com/muxinc/mux-node-sdk/issues/547)) ([1562daa](https://github.com/muxinc/mux-node-sdk/commit/1562daa64a421c7a31bf1330bc41c634b26b7319))
31+
* **internal:** bump cross-spawn to v7.0.6 ([#529](https://github.com/muxinc/mux-node-sdk/issues/529)) ([625f90b](https://github.com/muxinc/mux-node-sdk/commit/625f90b108126c7940dc668d5ee4e0bd6095b39a))
32+
* **internal:** codegen related update ([#538](https://github.com/muxinc/mux-node-sdk/issues/538)) ([7291076](https://github.com/muxinc/mux-node-sdk/commit/729107671e066d0966048f56ab97a42187632eb4))
33+
* **internal:** codegen related update ([#539](https://github.com/muxinc/mux-node-sdk/issues/539)) ([1ca421c](https://github.com/muxinc/mux-node-sdk/commit/1ca421c2aa6f3ec359d0d60f37535510a88c478f))
34+
* **internal:** codegen related update ([#541](https://github.com/muxinc/mux-node-sdk/issues/541)) ([81fe307](https://github.com/muxinc/mux-node-sdk/commit/81fe3077369f56adac67b69471a0512b65ed94d7))
35+
* **internal:** fix devcontainers setup ([#548](https://github.com/muxinc/mux-node-sdk/issues/548)) ([b916855](https://github.com/muxinc/mux-node-sdk/commit/b9168551c77fd14be61545fd8e680828e0892957))
36+
* **internal:** fix some typos ([#534](https://github.com/muxinc/mux-node-sdk/issues/534)) ([5ea0e8e](https://github.com/muxinc/mux-node-sdk/commit/5ea0e8e9c26fe491f63c44be522748c1e267bf5e))
37+
* **internal:** remove unnecessary getRequestClient function ([#528](https://github.com/muxinc/mux-node-sdk/issues/528)) ([a8a00ef](https://github.com/muxinc/mux-node-sdk/commit/a8a00eff2bb0586d5780c93199d120b5673f0d49))
38+
* **internal:** update isAbsoluteURL ([#531](https://github.com/muxinc/mux-node-sdk/issues/531)) ([e1b231d](https://github.com/muxinc/mux-node-sdk/commit/e1b231dabdd236cb773de2e9e13c26ca8866356b))
39+
* rebuild project due to codegen change ([#523](https://github.com/muxinc/mux-node-sdk/issues/523)) ([9cc566c](https://github.com/muxinc/mux-node-sdk/commit/9cc566cdeba6d3e1f6ed6bcd4643ecbafedda110))
40+
* remove redundant word in comment ([#526](https://github.com/muxinc/mux-node-sdk/issues/526)) ([f5dd390](https://github.com/muxinc/mux-node-sdk/commit/f5dd3901391cb3d210a42cbfe4874e203013107a))
41+
* **types:** nicer error class types + jsdocs ([#530](https://github.com/muxinc/mux-node-sdk/issues/530)) ([2b6cf7e](https://github.com/muxinc/mux-node-sdk/commit/2b6cf7e1da6895a7a1f5ab348f8b28f82dcc856d))
42+
43+
44+
### Documentation
45+
46+
* minor formatting changes ([#537](https://github.com/muxinc/mux-node-sdk/issues/537)) ([69e736a](https://github.com/muxinc/mux-node-sdk/commit/69e736a7f8b7f24a23624f3ba9e0cefb35bd1415))
47+
* remove suggestion to use `npm` call out ([#525](https://github.com/muxinc/mux-node-sdk/issues/525)) ([a1250bc](https://github.com/muxinc/mux-node-sdk/commit/a1250bcb104d1e0a93cec2bcc19d96d56f323fe9))
48+
349
## 9.0.1 (2024-11-15)
450

551
Full Changelog: [v9.0.0...v9.0.1](https://github.com/muxinc/mux-node-sdk/compare/v9.0.0...v9.0.1)

CONTRIBUTING.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Setting up the environment
22

3-
This repository uses [`yarn@v1`](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable).
3+
This repository uses [`yarn@v1`](https://classic.yarnpkg.com/lang/en/docs/install).
44
Other package managers may work but are not officially supported for development.
55

66
To set up the repository, run:
@@ -29,10 +29,10 @@ All files in the `examples/` directory are not modified by the generator and can
2929
3030
```
3131

32-
```
33-
chmod +x examples/<your-example>.ts
32+
```sh
33+
$ chmod +x examples/<your-example>.ts
3434
# run the example against your api
35-
yarn tsn -T examples/<your-example>.ts
35+
$ yarn tsn -T examples/<your-example>.ts
3636
```
3737

3838
## Using the repository from source

LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright 2024 Mux
189+
Copyright 2025 Mux
190190

191191
Licensed under the Apache License, Version 2.0 (the "License");
192192
you may not use this file except in compliance with the License.

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ await client.video.assets.retrieve('t02rm...', {
518518
This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:
519519

520520
1. Changes that only affect static types, without breaking runtime behavior.
521-
2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals)_.
521+
2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_
522522
3. Changes that we do not expect to impact the vast majority of users in practice.
523523

524524
We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
@@ -533,7 +533,7 @@ The following runtimes are supported:
533533

534534
- Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)
535535
- Node.js 18 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.
536-
- Deno v1.28.0 or higher, using `import Mux from "npm:@mux/mux-node"`.
536+
- Deno v1.28.0 or higher.
537537
- Bun 1.0 or later.
538538
- Cloudflare Workers.
539539
- Vercel Edge Runtime.

api.md

+1
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ Types:
337337
- <code><a href="./src/resources/webhooks.ts">VideoAssetTrackErroredWebhookEvent</a></code>
338338
- <code><a href="./src/resources/webhooks.ts">VideoAssetTrackDeletedWebhookEvent</a></code>
339339
- <code><a href="./src/resources/webhooks.ts">VideoAssetWarningWebhookEvent</a></code>
340+
- <code><a href="./src/resources/webhooks.ts">VideoAssetNonStandardInputDetectedWebhookEvent</a></code>
340341
- <code><a href="./src/resources/webhooks.ts">VideoUploadAssetCreatedWebhookEvent</a></code>
341342
- <code><a href="./src/resources/webhooks.ts">VideoUploadCancelledWebhookEvent</a></code>
342343
- <code><a href="./src/resources/webhooks.ts">VideoUploadCreatedWebhookEvent</a></code>

package.json

+30-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mux/mux-node",
3-
"version": "9.0.1",
3+
"version": "10.0.0",
44
"description": "The official TypeScript library for the Mux API",
55
"author": "Mux <[email protected]>",
66
"types": "dist/index.d.ts",
@@ -18,7 +18,7 @@
1818
"build": "./scripts/build",
1919
"prepublishOnly": "echo 'to publish, run yarn build && (cd dist; yarn publish)' && exit 1",
2020
"format": "prettier --write --cache --cache-strategy metadata . !dist",
21-
"prepare": "if ./scripts/utils/check-is-in-git-install.sh; then ./scripts/build; fi",
21+
"prepare": "if ./scripts/utils/check-is-in-git-install.sh; then ./scripts/build && ./scripts/utils/git-swap.sh; fi",
2222
"tsn": "ts-node -r tsconfig-paths/register",
2323
"lint": "./scripts/lint",
2424
"fix": "./scripts/format"
@@ -108,17 +108,38 @@
108108
"default": "./dist/index.mjs"
109109
},
110110
"./*.mjs": {
111-
"types": "./dist/*.d.ts",
112-
"default": "./dist/*.mjs"
111+
"types": [
112+
"./dist/*.d.ts",
113+
"./dist/*/index.d.ts"
114+
],
115+
"default": [
116+
"./dist/*.mjs",
117+
"./dist/*/index.mjs"
118+
]
113119
},
114120
"./*.js": {
115-
"types": "./dist/*.d.ts",
116-
"default": "./dist/*.js"
121+
"types": [
122+
"./dist/*.d.ts",
123+
"./dist/*/index.d.ts"
124+
],
125+
"default": [
126+
"./dist/*.js",
127+
"./dist/*/index.js"
128+
]
117129
},
118130
"./*": {
119-
"types": "./dist/*.d.ts",
120-
"require": "./dist/*.js",
121-
"default": "./dist/*.mjs"
131+
"types": [
132+
"./dist/*.d.ts",
133+
"./dist/*/index.d.ts"
134+
],
135+
"require": [
136+
"./dist/*.js",
137+
"./dist/*/index.js"
138+
],
139+
"default": [
140+
"./dist/*.mjs",
141+
"./dist/*/index.mjs"
142+
]
122143
}
123144
}
124145
}

scripts/build

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ npm exec tsc-multi
3232
# copy over handwritten .js/.mjs/.d.ts files
3333
cp src/_shims/*.{d.ts,js,mjs,md} dist/_shims
3434
cp src/_shims/auto/*.{d.ts,js,mjs} dist/_shims/auto
35-
# we need to add exports = module.exports = Mux Node to index.js;
35+
# we need to add exports = module.exports = Mux to index.js;
3636
# No way to get that from index.ts because it would cause compile errors
3737
# when building .mjs
3838
node scripts/utils/fix-index-exports.cjs

scripts/utils/check-is-in-git-install.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22
# Check if you happen to call prepare for a repository that's already in node_modules.
33
[ "$(basename "$(dirname "$PWD")")" = 'node_modules' ] ||
44
# The name of the containing directory that 'npm` uses, which looks like

scripts/utils/git-swap.sh

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
set -exuo pipefail
3+
# the package is published to NPM from ./dist
4+
# we want the final file structure for git installs to match the npm installs, so we
5+
6+
# delete everything except ./dist and ./node_modules
7+
find . -maxdepth 1 -mindepth 1 ! -name 'dist' ! -name 'node_modules' -exec rm -rf '{}' +
8+
9+
# move everything from ./dist to .
10+
mv dist/* .
11+
12+
# delete the now-empty ./dist
13+
rmdir dist

src/core.ts

+32-20
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export abstract class APIClient {
163163
maxRetries = 2,
164164
timeout = 60000, // 1 minute
165165
httpAgent,
166-
fetch: overridenFetch,
166+
fetch: overriddenFetch,
167167
}: {
168168
baseURL: string;
169169
maxRetries?: number | undefined;
@@ -176,7 +176,7 @@ export abstract class APIClient {
176176
this.timeout = validatePositiveInteger('timeout', timeout);
177177
this.httpAgent = httpAgent;
178178

179-
this.fetch = overridenFetch ?? fetch;
179+
this.fetch = overriddenFetch ?? fetch;
180180
}
181181

182182
protected authHeaders(opts: FinalRequestOptions): Headers {
@@ -268,6 +268,7 @@ export abstract class APIClient {
268268
options: FinalRequestOptions<Req>,
269269
{ retryCount = 0 }: { retryCount?: number } = {},
270270
): { req: RequestInit; url: string; timeout: number } {
271+
options = { ...options };
271272
const { method, path, query, headers: headers = {} } = options;
272273

273274
const body =
@@ -278,9 +279,9 @@ export abstract class APIClient {
278279

279280
const url = this.buildURL(path!, query);
280281
if ('timeout' in options) validatePositiveInteger('timeout', options.timeout);
281-
const timeout = options.timeout ?? this.timeout;
282+
options.timeout = options.timeout ?? this.timeout;
282283
const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);
283-
const minAgentTimeout = timeout + 1000;
284+
const minAgentTimeout = options.timeout + 1000;
284285
if (
285286
typeof (httpAgent as any)?.options?.timeout === 'number' &&
286287
minAgentTimeout > ((httpAgent as any).options.timeout ?? 0)
@@ -309,7 +310,7 @@ export abstract class APIClient {
309310
signal: options.signal ?? null,
310311
};
311312

312-
return { req, url, timeout };
313+
return { req, url, timeout: options.timeout };
313314
}
314315

315316
private buildHeaders({
@@ -337,15 +338,22 @@ export abstract class APIClient {
337338
delete reqHeaders['content-type'];
338339
}
339340

340-
// Don't set the retry count header if it was already set or removed through default headers or by the
341-
// caller. We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to
342-
// account for the removal case.
341+
// Don't set theses headers if they were already set or removed through default headers or by the caller.
342+
// We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to account
343+
// for the removal case.
343344
if (
344345
getHeader(defaultHeaders, 'x-stainless-retry-count') === undefined &&
345346
getHeader(headers, 'x-stainless-retry-count') === undefined
346347
) {
347348
reqHeaders['x-stainless-retry-count'] = String(retryCount);
348349
}
350+
if (
351+
getHeader(defaultHeaders, 'x-stainless-timeout') === undefined &&
352+
getHeader(headers, 'x-stainless-timeout') === undefined &&
353+
options.timeout
354+
) {
355+
reqHeaders['x-stainless-timeout'] = String(options.timeout);
356+
}
349357

350358
this.validateHeaders(reqHeaders, headers);
351359

@@ -508,20 +516,24 @@ export abstract class APIClient {
508516

509517
const timeout = setTimeout(() => controller.abort(), ms);
510518

519+
const fetchOptions = {
520+
signal: controller.signal as any,
521+
...options,
522+
};
523+
if (fetchOptions.method) {
524+
// Custom methods like 'patch' need to be uppercased
525+
// See https://github.com/nodejs/undici/issues/2294
526+
fetchOptions.method = fetchOptions.method.toUpperCase();
527+
}
528+
511529
return (
512-
this.getRequestClient()
513-
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
514-
.fetch.call(undefined, url, { signal: controller.signal as any, ...options })
515-
.finally(() => {
516-
clearTimeout(timeout);
517-
})
530+
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
531+
this.fetch.call(undefined, url, fetchOptions).finally(() => {
532+
clearTimeout(timeout);
533+
})
518534
);
519535
}
520536

521-
protected getRequestClient(): RequestClient {
522-
return { fetch: this.fetch };
523-
}
524-
525537
private shouldRetry(response: Response): boolean {
526538
// Note this is not a standard header.
527539
const shouldRetryHeader = response.headers.get('x-should-retry');
@@ -957,8 +969,8 @@ export const safeJSON = (text: string) => {
957969
}
958970
};
959971

960-
// https://stackoverflow.com/a/19709846
961-
const startsWithSchemeRegexp = new RegExp('^(?:[a-z]+:)?//', 'i');
972+
// https://url.spec.whatwg.org/#url-scheme-string
973+
const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;
962974
const isAbsoluteURL = (url: string): boolean => {
963975
return startsWithSchemeRegexp.test(url);
964976
};

0 commit comments

Comments
 (0)