Helper packages

Complete export inventory for formatting, filters, theme, SEO, sitemap, paths, server, and skill subpaths.

The SDK publishes framework-neutral helper entry points. This page lists every public value and type on each helper subpath in version 1.34.0. Use your installed TypeScript declarations as the final authority after an upgrade.

Core helper exports

The root @cavuno/board entry exports the client plus cross-namespace helpers:

  • Errors: BOARD_API_ERROR_CODES, BoardApiError, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError.
  • Storage keys: ACCESS_TOKEN_KEY, BOARD_ACCESS_GRANT_KEY, REFRESH_TOKEN_KEY.
  • Pagination: paginate and type Paginator.
  • Version: SDK_VERSION.
  • Messaging derivations: isColdRule, isOwnMessage, lastOwnMessageId.
  • Apply derivations: isSafeApplicationUrl, resolveApplyAction, and type ApplyAction.
  • Client values and types: createBoardClient, BoardClient, BoardSdk, CreateBoardClientOptions, BoardRequest, FetchOptions, Logger, Awaitable, CustomStorage, and StorageMode.

Resource request and response types are exported from the root and documented on their namespace pages.

@cavuno/board/format

Board-language display derivations. Label-producing helpers take board.context().language as their leading argument.

Values:

  • formatDate, formatMonthYear, formatPublishedRelativeDate.
  • fullJobToCard, fieldLabel, cardLocationLabel, locationLabel.
  • getSalaryLexicon, formatSalaryRange.
  • companyIntro, resolveCustomFieldDisplay.
  • PUBLIC_LABEL_GROUPS, uiCopy.

Types:

  • SalaryFrames, SalaryLexicon, SalaryTimeframeValue, SeniorityKey.
  • SalaryTimeframeInput, SalaryTimeframeOverrides, CustomFieldDisplayEntry.
  • AlertsCopy, ApplyCopy, BlogCopy, BoardLabelOverrides, BreadcrumbsCopy, CopyLinkCopy, EntityCopy, FooterCopy, JobCardCopy, JobDetailCopy, JobSearchCopy, NavCopy, PaginationCopy, SalaryCopy, UiCopy.
ts
import {
cardLocationLabel,
formatSalaryRange,
uiCopy,
} from '@cavuno/board/format';
const context = await board.context();
const copy = uiCopy(context.language, context.labels);
const location = cardLocationLabel(context.language, jobCard);
const salary = formatSalaryRange(
context.language,
jobCard.salaryMin,
jobCard.salaryMax,
jobCard.salaryTimeframe,
jobCard.salaryCurrency,
);

@cavuno/board/filters

Values:

  • Vocabularies: REMOTE_OPTIONS, EMPLOYMENT_TYPES, SENIORITIES, JOB_SORTS, DEFAULT_SORT.
  • Labels: seniorityLabels, sortLabels.
  • Parsing: parseSeniority, parseListingFilters.

Type: ListingFilters.

The parsers accept public URL input and drop unsupported filter values instead of throwing.

@cavuno/board/theme

Values:

  • BOARD_COLOR_KEYS, THEME_FONT_GOOGLE_FAMILIES.
  • isSafeThemeColorValue, boardThemeToCss, themeMode, themeFontFamily, googleFontsUrl.

Types: BoardColorKey, ThemeInput.

Use boardThemeToCss rather than interpolating the raw theme. It drops values containing CSS or markup breakout characters.

@cavuno/board/seo

Values:

  • Blog: createAuthorProfileJsonLd, createBlogArticleJsonLd.
  • Breadcrumbs: buildJobBreadcrumbs, createBreadcrumbJsonLd.
  • Jobs: ALL_COUNTRY_CODES, createJobPostingJsonLd, normalizeWebsiteUrl.
  • Listings: listingHead, listingJsonLd.
  • Salaries: buildSalaryFaq, companyCategorySalaryJsonLd, companySalaryJsonLd, crossAxisSalaryJsonLd, faqJsonLd, formatRange, formatSeniority, formatUsd, itemListJsonLd, locationSalaryJsonLd, SENIORITY_ORDER, skillSalaryJsonLd, sortBySeniority, titleSalaryJsonLd.

Types: ArticleJsonLdPost, BreadcrumbItemInput, JsonLdBoard, JsonLdObject, ListingHeadOptions, FaqItem.

These helpers return plain objects or head descriptors. Your framework owns the final <meta>, <link>, and safely serialized <script type="application/ld+json"> elements.

@cavuno/board/sitemap

Values:

  • Bucket model: SITEMAP_BUCKETS, SITEMAP_CHUNK_SIZE, MIN_JOBS_PER_INDEXED_PAGE.
  • Filenames and chunks: bucketFilename, parseBucketFilename, chunk.
  • XML: xmlEscape, renderUrlset, renderSitemapIndex.
  • Board walking: listedBuckets, buildBucketUrls.

Types: SitemapBucket, SitemapUrlEntry, SitemapIndexEntry.

buildBucketUrls performs API reads. The filename, chunk, escape, and render helpers are pure.

@cavuno/board/paths

Values:

  • Jobs: jobDetailPath, jobsCategoryPath, jobsSkillPath, jobsLocationPath.
  • Companies: companyPath, companyMarketPath, companySalaryPath.
  • Salaries: salaryTitlePath, salarySkillPath, salaryLocationPath.
  • Blog: blogPostPath, blogTagPath, blogAuthorPath.
  • Shared: BOARD_PATHS, boardUrl.

Every path helper returns a leading-slash path. boardUrl adds an origin and removes trailing slashes from that origin.

@cavuno/board/server

Node-runtime-independent server plumbing that accepts and returns strings rather than framework request objects.

Values:

  • Session cookies: SESSION_COOKIE_NAME, sessionCookieName, clearSessionCookie, isExpiringSoon, parseSessionCookie, serializeSessionCookie.
  • Board-access cookies: BOARD_ACCESS_COOKIE_NAME, grantCookieName, clearGrantCookie, parseGrantCookie, serializeGrantCookie.
  • Redirect safety: currentPathFromReferer, safeRedirectPath.
  • Refresh coordination: createSessionRefresher.

Type: BoardSession.

Cookie serializers apply the package’s __Host-, Secure, httpOnly, path, and SameSite contract. createSessionRefresher requires a nostore client and coordinates one in-flight refresh; it does not install automatic retry behavior.

@cavuno/board/skills

This entry is Node-only because it reads the installed package from the filesystem.

Values: resolveFromPackageRoot, loadSkillManifest, loadSkillCorpus.

Types: LoadedSkill, SkillCorpus, SkillManifest, SkillManifestEntry.

resolveFromPackageRoot(relativePath, baseDir?) works from the installed layout. Bundled consumers that relocate the module must pass baseDir.

@cavuno/board/skills/types

Types only: SkillManifest and SkillManifestEntry. Use this subpath in non-Node consumers that need the manifest shape without importing filesystem code.

The package also exports @cavuno/board/skills/* for direct access to shipped skill artifacts named by the manifest.

Verify an import

ts
import { jobDetailPath } from '@cavuno/board/paths';
import { createJobPostingJsonLd } from '@cavuno/board/seo';
import { SDK_VERSION } from '@cavuno/board';
console.log(SDK_VERSION, jobDetailPath('acme', 'staff-engineer'));
void createJobPostingJsonLd;

Run your application typecheck after changing package versions. A missing symbol should fail at the import rather than being replaced with a locally reimplemented fallback.