d25d482dc2
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
import { createSearchParamsCache, parseAsString } from 'nuqs/server'
|
|
|
|
/**
|
|
* Sentinel value for an inactive filter — matches every posting. Namespaced with
|
|
* underscores so it can never collide with a real Ashby department or location
|
|
* value (e.g. a team literally named "all").
|
|
*/
|
|
export const ALL_FILTER_VALUE = '__all__'
|
|
|
|
/**
|
|
* Co-located, typed URL query params for the careers job board's Team and
|
|
* Location filters. Shareable, deep-linkable view-state over an already-rendered
|
|
* list, so it lives in the URL (nuqs) — never in a store. The values are dynamic
|
|
* (departments/locations come from the live board), so plain string parsers with
|
|
* an `all` sentinel default rather than a fixed literal set.
|
|
*/
|
|
export const careersParsers = {
|
|
team: parseAsString.withDefault(ALL_FILTER_VALUE),
|
|
location: parseAsString.withDefault(ALL_FILTER_VALUE),
|
|
} as const
|
|
|
|
/** Clean URLs, no back-stack churn — the filters are a passive view switch. */
|
|
export const careersUrlKeys = {
|
|
history: 'replace',
|
|
shallow: true,
|
|
clearOnDefault: true,
|
|
} as const
|
|
|
|
/**
|
|
* Server-side reader for the same parser map. The page parses the request's
|
|
* query with this so the statically-rendered fallback is filtered to match a
|
|
* deep-linked `?team=`/`?location=` URL — the roles never flash unfiltered before
|
|
* the client board hydrates.
|
|
*/
|
|
export const careersSearchParamsCache = createSearchParamsCache(careersParsers)
|