Skip to content

Commit

Permalink
[ts-sdk] Expose few node types (#950)
Browse files Browse the repository at this point in the history
  • Loading branch information
wkozyra95 authored Feb 5, 2025
1 parent f21d10e commit 6f814d7
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@swmansion/smelter": "workspace:^0.2.0-rc.0",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.1",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.2",
"express": "^4.21.0",
"react": "^18.3.1",
"zustand": "4.5.5"
Expand Down
2 changes: 1 addition & 1 deletion ts/create-smelter-app/templates/node-minimal/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
},
"dependencies": {
"@swmansion/smelter": "workspace:^0.2.0-rc.0",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.1",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.2",
"react": "^18.3.1"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion ts/examples/node-examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"license": "MIT",
"dependencies": {
"@swmansion/smelter": "workspace:^0.2.0-rc.0",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.1",
"@swmansion/smelter-node": "workspace:^0.2.0-rc.2",
"fs-extra": "^11.2.0",
"node-fetch": "^2.6.7",
"react": "^18.3.1",
Expand Down
6 changes: 3 additions & 3 deletions ts/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ts/smelter-node/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@swmansion/smelter-node",
"version": "0.2.0-rc.1",
"version": "0.2.0-rc.2",
"author": "Software Mansion <contact@swmansion.com>",
"license": "MIT",
"description": "Node runtime for @swmansion/smelter",
Expand Down
5 changes: 4 additions & 1 deletion ts/smelter-node/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import type { SmelterManager } from '@swmansion/smelter-core';
import Smelter from './live/compositor';
import ExistingInstanceManager from './manager/existingInstance';
import LocallySpawnedInstanceManager from './manager/locallySpawnedInstance';
import OfflineSmelter from './offline/compositor';

export default Smelter;
export { OfflineSmelter };
export { OfflineSmelter, LocallySpawnedInstanceManager, ExistingInstanceManager, SmelterManager };
4 changes: 2 additions & 2 deletions ts/smelter-node/src/live/compositor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type {
} from '@swmansion/smelter-core';
import { Smelter as CoreSmelter } from '@swmansion/smelter-core';
import { createLogger } from '../logger';
import LocallySpawnedInstance from '../manager/locallySpawnedInstance';
import LocallySpawnedInstanceManager from '../manager/locallySpawnedInstance';
import type { ReactElement } from 'react';
import type { Renderers } from '@swmansion/smelter';
import FormData from 'form-data';
Expand All @@ -16,7 +16,7 @@ export default class Smelter {

public constructor(manager?: SmelterManager) {
this.coreSmelter = new CoreSmelter(
manager ?? LocallySpawnedInstance.defaultManager(),
manager ?? LocallySpawnedInstanceManager.defaultManager(),
createLogger()
);
}
Expand Down
4 changes: 2 additions & 2 deletions ts/smelter-node/src/manager/existingInstance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type CreateInstanceOptions = {
/**
* SmelterManager that will connect to existing instance
*/
class ExistingInstance implements SmelterManager {
class ExistingInstanceManager implements SmelterManager {
private ip: string;
private port: number;
private protocol: 'http' | 'https';
Expand Down Expand Up @@ -62,4 +62,4 @@ class ExistingInstance implements SmelterManager {
}
}

export default ExistingInstance;
export default ExistingInstanceManager;
8 changes: 4 additions & 4 deletions ts/smelter-node/src/manager/locallySpawnedInstance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type ManagedInstanceOptions = {
/**
* SmelterManager that will download and spawn it's own Smelter instance locally.
*/
class LocallySpawnedInstance implements SmelterManager {
class LocallySpawnedInstanceManager implements SmelterManager {
private port: number;
private workingdir: string;
private executablePath?: string;
Expand All @@ -46,9 +46,9 @@ class LocallySpawnedInstance implements SmelterManager {
this.wsConnection = new WebSocketConnection(`ws://127.0.0.1:${this.port}/ws`);
}

public static defaultManager(): LocallySpawnedInstance {
public static defaultManager(): LocallySpawnedInstanceManager {
const port = process.env.SMELTER_API_PORT ? Number(process.env.SMELTER_API_PORT) : 8000;
return new LocallySpawnedInstance({
return new LocallySpawnedInstanceManager({
port,
executablePath: process.env.SMELTER_PATH,
});
Expand Down Expand Up @@ -157,4 +157,4 @@ function smelterTarGzUrl(withWebRenderer?: boolean): string {
return `https://github.com/software-mansion/smelter/releases/download/${VERSION}/${archiveName}`;
}

export default LocallySpawnedInstance;
export default LocallySpawnedInstanceManager;
4 changes: 2 additions & 2 deletions ts/smelter-node/src/offline/compositor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type {
} from '@swmansion/smelter-core';
import { OfflineSmelter as CoreSmelter } from '@swmansion/smelter-core';
import { createLogger } from '../logger';
import LocallySpawnedInstance from '../manager/locallySpawnedInstance';
import LocallySpawnedInstanceManager from '../manager/locallySpawnedInstance';
import type { ReactElement } from 'react';
import type { Renderers } from '@swmansion/smelter';
import fetch from 'node-fetch';
Expand All @@ -16,7 +16,7 @@ export default class OfflineSmelter {

public constructor(manager?: SmelterManager) {
this.coreSmelter = new CoreSmelter(
manager ?? LocallySpawnedInstance.defaultManager(),
manager ?? LocallySpawnedInstanceManager.defaultManager(),
createLogger()
);
}
Expand Down
18 changes: 14 additions & 4 deletions ts/smelter-web-wasm/src/compositor/compositor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import WasmInstance from '../mainContext/instance';
import type { RegisterOutputResponse } from '../mainContext/output';

export type SmelterOptions = {
framerate?: Framerate;
framerate?: Framerate | number;
streamFallbackTimeoutMs?: number;
};

Expand All @@ -38,8 +38,8 @@ export default class Smelter {
private options: SmelterOptions;
private logger: Logger = pino({ level: 'warn' });

public constructor(options: SmelterOptions) {
this.options = options;
public constructor(options?: SmelterOptions) {
this.options = options ?? {};
}

/*
Expand All @@ -49,7 +49,7 @@ export default class Smelter {
public async init(): Promise<void> {
assert(wasmBundleUrl, 'Location of WASM bundle is not defined, call setWasmBundleUrl() first.');
this.instance = new WasmInstance({
framerate: this.options.framerate ?? { num: 30, den: 1 },
framerate: resolveFramerate(this.options.framerate),
wasmBundleUrl,
logger: this.logger.child({ element: 'wasmInstance' }),
});
Expand Down Expand Up @@ -120,3 +120,13 @@ export default class Smelter {
await this.coreSmelter?.terminate();
}
}

function resolveFramerate(framerate?: number | Framerate): Framerate {
if (!framerate) {
return { num: 30, den: 1 };
} else if (typeof framerate === 'number') {
return { num: framerate, den: 1 };
} else {
return framerate;
}
}

0 comments on commit 6f814d7

Please sign in to comment.