Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions lib/runner/CircuitRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import * as React from "react"
import { importEvalPath } from "webworker/import-eval-path"
import { setupDefaultEntrypointIfNeeded } from "./setupDefaultEntrypointIfNeeded"
import Debug from "debug"
import { getPlatformConfig } from "../getPlatformConfig"

const debug = Debug("tsci:eval:CircuitRunner")

Expand All @@ -28,6 +29,14 @@ export class CircuitRunner implements CircuitRunnerApi {
Object.assign(this._circuitRunnerConfiguration, configuration)
}

private _getPlatformConfig(): PlatformConfig {
return {
...getPlatformConfig(),
...this._circuitRunnerConfiguration.platform,
...this._circuitRunnerConfiguration.projectConfig,
}
}

async version(): Promise<string> {
return "0.0.0"
}
Expand Down Expand Up @@ -62,7 +71,7 @@ export class CircuitRunner implements CircuitRunnerApi {
this._circuitRunnerConfiguration,
{
name: opts.name,
platform: this._circuitRunnerConfiguration.platform,
platform: this._getPlatformConfig(),
debugNamespace: this._debugNamespace,
},
)
Expand Down Expand Up @@ -94,7 +103,7 @@ export class CircuitRunner implements CircuitRunnerApi {
this._circuitRunnerConfiguration,
{
...opts,
platform: this._circuitRunnerConfiguration.platform,
platform: this._getPlatformConfig(),
debugNamespace: this._debugNamespace,
},
)
Expand All @@ -114,7 +123,7 @@ export class CircuitRunner implements CircuitRunnerApi {
this._circuitRunnerConfiguration,
{
...opts,
platform: this._circuitRunnerConfiguration.platform,
platform: this._getPlatformConfig(),
debugNamespace: this._debugNamespace,
},
)
Expand Down
5 changes: 5 additions & 0 deletions lib/shared/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ import type { PlatformConfig } from "@tscircuit/props"

export type RootCircuitEventName = CoreRootCircuitEventName | "debug:logOutput"

export interface ProjectConfig {
projectBaseUrl?: string
}

export interface CircuitRunnerConfiguration {
snippetsApiBaseUrl: string
cjsRegistryUrl: string
verbose?: boolean
platform?: PlatformConfig
projectConfig?: ProjectConfig
}

export interface WebWorkerConfiguration extends CircuitRunnerConfiguration {
Expand Down
14 changes: 12 additions & 2 deletions lib/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type {
CircuitWebWorker,
} from "./shared/types"
import type { RootCircuitEventName } from "./shared/types"
import { getPlatformConfig } from "./getPlatformConfig"

export type { CircuitWebWorker, WebWorkerConfiguration }

Expand Down Expand Up @@ -170,8 +171,17 @@ export const createCircuitWebWorker = async (
if (configuration.snippetsApiBaseUrl) {
await comlinkWorker.setSnippetsApiBaseUrl(configuration.snippetsApiBaseUrl)
}
if (configuration.platform) {
await comlinkWorker.setPlatformConfig(configuration.platform)
const finalPlatformConfig =
configuration.platform || configuration.projectConfig
? {
...getPlatformConfig(),
...configuration.platform,
...configuration.projectConfig,
}
: undefined

if (finalPlatformConfig) {
await comlinkWorker.setPlatformConfig(finalPlatformConfig)
}

let isTerminated = false
Expand Down
23 changes: 23 additions & 0 deletions tests/features/project-config.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { CircuitRunner } from "lib/runner/CircuitRunner"
import { expect, test } from "bun:test"

test("project configuration overrides platform defaults", async () => {
const runner = new CircuitRunner({
projectConfig: { projectBaseUrl: "https://example.com/assets" },
})

await runner.execute(`
circuit.add(
<board width="10mm" height="10mm">
<resistor name="R1" resistance="1k" footprint="0402" />
</board>
)
`)

await runner.renderUntilSettled()
const circuit = (globalThis as any).__tscircuit_circuit
expect(circuit.platform?.projectBaseUrl).toBe("https://example.com/assets")
expect(circuit.platform?.partsEngine).toBeDefined()

await runner.kill()
})
Loading