Skip to content
Merged
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
36 changes: 24 additions & 12 deletions generated/COMPONENT_TYPES.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,39 +34,39 @@ export interface CadModelStl extends CadModelBase {
stlUrl: string
}
export const cadModelStl = cadModelBase.extend({
stlUrl: z.string(),
stlUrl: url,
})
export interface CadModelObj extends CadModelBase {
objUrl: string
mtlUrl?: string
}
export const cadModelObj = cadModelBase.extend({
objUrl: z.string(),
mtlUrl: z.string().optional(),
objUrl: url,
mtlUrl: url.optional(),
})
export interface CadModelGltf extends CadModelBase {
gltfUrl: string
}
export const cadModelGltf = cadModelBase.extend({
gltfUrl: z.string(),
gltfUrl: url,
})
export interface CadModelGlb extends CadModelBase {
glbUrl: string
}
export const cadModelGlb = cadModelBase.extend({
glbUrl: z.string(),
glbUrl: url,
})
export interface CadModelStep extends CadModelBase {
stepUrl: string
}
export const cadModelStep = cadModelBase.extend({
stepUrl: z.string(),
stepUrl: url,
})
export interface CadModelWrl extends CadModelBase {
wrlUrl: string
}
export const cadModelWrl = cadModelBase.extend({
wrlUrl: z.string(),
wrlUrl: url,
})
export interface CadModelJscad extends CadModelBase {
jscad: Record<string, any>
Expand All @@ -76,7 +76,7 @@ export const cadModelJscad = cadModelBase.extend({
})
export const cadModelProp = z.union([
z.null(),
z.string(),
url,
z.custom<ReactElement>((v) => {
return v && typeof v === "object" && "type" in v && "props" in v
}),
Expand Down Expand Up @@ -547,7 +547,7 @@ export interface CommonComponentProps<PinLabel extends string = string>
key: z.any().optional(),
name: z.string(),
displayName: z.string().optional(),
datasheetUrl: z.string().optional(),
datasheetUrl: url.optional(),
cadModel: cadModelProp.optional(),
kicadFootprintMetadata: kicadFootprintMetadata.optional(),
kicadSymbolMetadata: kicadSymbolMetadata.optional(),
Expand Down Expand Up @@ -748,6 +748,18 @@ export const schematicPinStyle = z.record(
}),
```

### url

```typescript
export const url = z.preprocess((value) => {
if (value && typeof value === "object" && "default" in value) {
return (value as { default?: unknown }).default
}

return value
}, z.string()) as z.ZodType<string, z.ZodTypeDef, string>
```

## Available Component Types

### analogsimulation
Expand Down Expand Up @@ -918,8 +930,8 @@ export interface CadModelProps extends CadModelBase {
pcbZ?: Distance
}
const cadModelBaseWithUrl = cadModelBase.extend({
modelUrl: z.string(),
stepUrl: z.string().optional(),
modelUrl: url,
stepUrl: url.optional(),
})
```

Expand Down Expand Up @@ -1870,7 +1882,7 @@ export interface AutorouterConfig {
| /** @deprecated Use "auto_cloud" */ "auto-cloud"
}
export const autorouterConfig = z.object({
serverUrl: z.string().optional(),
serverUrl: url.optional(),
inputFormat: z.enum(["simplified", "circuit-json"]).optional(),
serverMode: z.enum(["job", "solve-endpoint"]).optional(),
serverCacheEnabled: z.boolean().optional(),
Expand Down
17 changes: 9 additions & 8 deletions lib/common/cadModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { z } from "zod"
import { expectTypesMatch } from "lib/typecheck"
import { distance, type Distance } from "./distance"
import { point3 } from "./point3"
import { url } from "./url"
import type { ReactElement } from "react"

export const rotationPoint3 = z.object({
Expand Down Expand Up @@ -38,44 +39,44 @@ export interface CadModelStl extends CadModelBase {
stlUrl: string
}
export const cadModelStl = cadModelBase.extend({
stlUrl: z.string(),
stlUrl: url,
})

export interface CadModelObj extends CadModelBase {
objUrl: string
mtlUrl?: string
}
export const cadModelObj = cadModelBase.extend({
objUrl: z.string(),
mtlUrl: z.string().optional(),
objUrl: url,
mtlUrl: url.optional(),
})

export interface CadModelGltf extends CadModelBase {
gltfUrl: string
}
export const cadModelGltf = cadModelBase.extend({
gltfUrl: z.string(),
gltfUrl: url,
})

export interface CadModelGlb extends CadModelBase {
glbUrl: string
}
export const cadModelGlb = cadModelBase.extend({
glbUrl: z.string(),
glbUrl: url,
})

export interface CadModelStep extends CadModelBase {
stepUrl: string
}
export const cadModelStep = cadModelBase.extend({
stepUrl: z.string(),
stepUrl: url,
})

export interface CadModelWrl extends CadModelBase {
wrlUrl: string
}
export const cadModelWrl = cadModelBase.extend({
wrlUrl: z.string(),
wrlUrl: url,
})

export interface CadModelJscad extends CadModelBase {
Expand All @@ -99,7 +100,7 @@ export type CadModelProp =

export const cadModelProp = z.union([
z.null(),
z.string(),
url,
z.custom<ReactElement>((v) => {
return v && typeof v === "object" && "type" in v && "props" in v
}),
Expand Down
3 changes: 2 additions & 1 deletion lib/common/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
import { pcbStyle, type PcbStyle } from "./pcbStyle"
import { schStyle, type SchStyle } from "./schStyle"
import { type SymbolProp, symbolProp } from "./symbolProp"
import { url } from "./url"

export type PcbPositionMode =
| "relative_to_group_anchor"
Expand Down Expand Up @@ -281,7 +282,7 @@ export const commonComponentProps = commonLayoutProps
key: z.any().optional(),
name: z.string(),
displayName: z.string().optional(),
datasheetUrl: z.string().optional(),
datasheetUrl: url.optional(),
cadModel: cadModelProp.optional(),
kicadFootprintMetadata: kicadFootprintMetadata.optional(),
kicadSymbolMetadata: kicadSymbolMetadata.optional(),
Expand Down
9 changes: 9 additions & 0 deletions lib/common/url.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { z } from "zod"

export const url = z.preprocess((value) => {
if (value && typeof value === "object" && "default" in value) {
return (value as { default?: unknown }).default
}

return value
}, z.string()) as z.ZodType<string, z.ZodTypeDef, string>
7 changes: 4 additions & 3 deletions lib/components/cadmodel.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { distance, pcbCoordinate, type Distance } from "lib/common/distance"
import { expectTypesMatch } from "lib/typecheck"
import { cadModelBase, type CadModelBase } from "../common/cadModel"
import { url } from "lib/common/url"
import { z } from "zod"

export interface CadModelProps extends CadModelBase {
Expand Down Expand Up @@ -30,13 +31,13 @@ const pcbPosition = z.object({
})

const cadModelBaseWithUrl = cadModelBase.extend({
modelUrl: z.string(),
stepUrl: z.string().optional(),
modelUrl: url,
stepUrl: url.optional(),
})

const cadModelObject = cadModelBaseWithUrl.merge(pcbPosition)
expectTypesMatch<CadModelProps, z.input<typeof cadModelObject>>(true)

export const cadmodelProps = z.union([z.null(), z.string(), cadModelObject])
export const cadmodelProps = z.union([z.null(), url, cadModelObject])

export type CadModelPropsInput = z.input<typeof cadmodelProps>
3 changes: 2 additions & 1 deletion lib/components/group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
schematicPinStyle,
type SchematicPinStyle,
} from "lib/common/schematicPinStyle"
import { url } from "lib/common/url"
import type { Connections } from "lib/utility-types/connections-and-selectors"

export const layoutConfig = z.object({
Expand Down Expand Up @@ -349,7 +350,7 @@ const pcbAnchorAlignmentAutocomplete = z.custom<
>((value) => typeof value === "string")

export const autorouterConfig = z.object({
serverUrl: z.string().optional(),
serverUrl: url.optional(),
inputFormat: z.enum(["simplified", "circuit-json"]).optional(),
serverMode: z.enum(["job", "solve-endpoint"]).optional(),
serverCacheEnabled: z.boolean().optional(),
Expand Down
9 changes: 5 additions & 4 deletions lib/platformConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { expectTypesMatch } from "./typecheck"
import { z } from "zod"
import { type CadModelProp, cadModelProp } from "./common/cadModel"
import { type PcbStyle, pcbStyle } from "./common/pcbStyle"
import { url } from "./common/url"

export interface FootprintLibraryResult {
footprintCircuitJson: any[]
Expand Down Expand Up @@ -170,12 +171,12 @@ export const platformConfig = z.object({
partsEngine: partsEngine.optional(),
autorouter: autorouterProp.optional(),
autorouterMap: z.record(z.string(), autorouterDefinition).optional(),
registryApiUrl: z.string().optional(),
cloudAutorouterUrl: z.string().optional(),
registryApiUrl: url.optional(),
cloudAutorouterUrl: url.optional(),
projectName: z.string().optional(),
projectBaseUrl: z.string().optional(),
projectBaseUrl: url.optional(),
version: z.string().optional(),
url: z.string().optional(),
url: url.optional(),
printBoardInformationToSilkscreen: z.boolean().optional(),
includeBoardFiles: z
.array(z.string())
Expand Down