@cavuno/board 4.13.0 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/{_spec-mFq9K67X.d.mts → _spec-CzS_E61o.d.mts} +50 -0
  3. package/dist/{_spec-mFq9K67X.d.ts → _spec-CzS_E61o.d.ts} +50 -0
  4. package/dist/{blog-BJF7uypj.d.ts → blog-CtRz0ZlI.d.ts} +1 -1
  5. package/dist/{blog-ClPGMp-z.d.mts → blog-D4R04cZP.d.mts} +1 -1
  6. package/dist/{board-CkYDc1Lz.d.mts → board-CXE7dnk9.d.mts} +2 -2
  7. package/dist/{board-Po58Sn65.d.ts → board-MqLMXY48.d.ts} +2 -2
  8. package/dist/{breadcrumbs-BZzQwS8O.d.ts → breadcrumbs-DdEy2bpQ.d.ts} +2 -2
  9. package/dist/{breadcrumbs-BSP53mOY.d.mts → breadcrumbs-bbEYB2CD.d.mts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-XEJWXRLK.mjs → chunk-W73BOGOQ.mjs} +4 -0
  12. package/dist/filters.d.mts +2 -2
  13. package/dist/filters.d.ts +2 -2
  14. package/dist/format.d.mts +4 -4
  15. package/dist/format.d.ts +4 -4
  16. package/dist/index.d.mts +112 -13
  17. package/dist/index.d.ts +112 -13
  18. package/dist/index.js +145 -1
  19. package/dist/index.mjs +142 -2
  20. package/dist/{jobs-BWpm-Jf0.d.mts → jobs-CsrNGyvS.d.mts} +1 -1
  21. package/dist/{jobs-hZ3Kezhg.d.ts → jobs-DDJDUH3q.d.ts} +1 -1
  22. package/dist/{search-DSLK6Cch.d.ts → search-B3nCRBqd.d.ts} +1 -1
  23. package/dist/{search-DRIGekdi.d.mts → search-Bnx30Fe2.d.mts} +1 -1
  24. package/dist/{seo-CMNJMZcT.d.ts → seo-BUDWv2pv.d.ts} +1 -1
  25. package/dist/{seo-D9wvr1nK.d.mts → seo-aSJ3zVx9.d.mts} +1 -1
  26. package/dist/seo-files.d.mts +2 -2
  27. package/dist/seo-files.d.ts +2 -2
  28. package/dist/seo.d.mts +6 -6
  29. package/dist/seo.d.ts +6 -6
  30. package/dist/server.d.mts +6 -6
  31. package/dist/server.d.ts +6 -6
  32. package/dist/server.mjs +1 -1
  33. package/dist/sitemap.d.mts +6 -6
  34. package/dist/sitemap.d.ts +6 -6
  35. package/dist/suggest.d.mts +2 -2
  36. package/dist/suggest.d.ts +2 -2
  37. package/package.json +1 -1
  38. package/skills/manifest.json +1 -1
package/dist/index.js CHANGED
@@ -173,6 +173,10 @@ var BOARD_API_ERROR_CODES = [
173
173
  // Employer recommended talent — a draft job carries no vectors,
174
174
  // so it cannot be matched at all. Distinct from `jobs_not_published`.
175
175
  "job_not_published",
176
+ // Employer talent lists + sourced convert
177
+ "talent_list_not_found",
178
+ "sourced_candidate_not_found",
179
+ "sourced_convert_unavailable",
176
180
  // Candidate job-access paywall
177
181
  "paywall_already_active",
178
182
  "paywall_disabled",
@@ -343,7 +347,7 @@ async function clearSession(storage) {
343
347
  }
344
348
 
345
349
  // src/version.ts
346
- var SDK_VERSION = "4.13.0";
350
+ var SDK_VERSION = "4.14.0";
347
351
 
348
352
  // src/client.ts
349
353
  function isRawBody(body) {
@@ -557,6 +561,23 @@ function authNamespace(client) {
557
561
  body
558
562
  });
559
563
  },
564
+ /**
565
+ * Confirm an employer work-email verification token (from the link in the
566
+ * work-email verification email) and promote the pending company claim —
567
+ * approved on domain match, otherwise `awaiting_admin`. No session needed:
568
+ * the single-use token IS the authorization, and it alone identifies the
569
+ * membership. Returns the membership in its new state.
570
+ *
571
+ * @example
572
+ * const membership = await board.auth.verifyWorkEmail({ token });
573
+ */
574
+ verifyWorkEmail(body, options) {
575
+ return client.fetch("/auth/verify-work-email", {
576
+ ...options,
577
+ method: "POST",
578
+ body
579
+ });
580
+ },
560
581
  /**
561
582
  * Verify the signed-in board user's email with the 6-digit code from the
562
583
  * verification email (requires the bearer). Resolves void (204); an
@@ -1701,6 +1722,10 @@ function meNamespace(client) {
1701
1722
  * required, the token IS the authorization. Returns the membership in
1702
1723
  * its new state.
1703
1724
  *
1725
+ * @deprecated Use `board.auth.verifyWorkEmail({ token })`. `slug` is
1726
+ * ignored by the server — the token alone identifies the membership,
1727
+ * and a caller following an email link has no slug to supply.
1728
+ *
1704
1729
  * @example
1705
1730
  * await board.me.companies.workEmail.confirm('acme', { token });
1706
1731
  */
@@ -1985,6 +2010,125 @@ function meNamespace(client) {
1985
2010
  );
1986
2011
  }
1987
2012
  },
2013
+ /**
2014
+ * Company-owned saved predicates over the talent directory.
2015
+ * Approved members share the same lists. Optional `job` binds a list
2016
+ * to one company job; pass `job: null` on update to unbind.
2017
+ */
2018
+ talentLists: {
2019
+ /**
2020
+ * List talent lists for a company I am an approved member of.
2021
+ *
2022
+ * @example
2023
+ * const { data } = await board.me.companies.talentLists.list('acme');
2024
+ */
2025
+ list(slug, options) {
2026
+ return client.fetch(
2027
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists`,
2028
+ options
2029
+ );
2030
+ },
2031
+ /**
2032
+ * Create a talent list. `filters` reuse the frozen `/talent` query.
2033
+ *
2034
+ * @example
2035
+ * const list = await board.me.companies.talentLists.create('acme', {
2036
+ * name: 'Berlin React',
2037
+ * filters: { skill: 'react', sort: 'newest' },
2038
+ * job: jobId,
2039
+ * });
2040
+ */
2041
+ create(slug, body, options) {
2042
+ return client.fetch(
2043
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists`,
2044
+ { ...options, method: "POST", body }
2045
+ );
2046
+ },
2047
+ /**
2048
+ * Merge-patch a talent list. Pass `job: null` to unbind it from a job.
2049
+ */
2050
+ update(slug, listId, body, options) {
2051
+ return client.fetch(
2052
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
2053
+ { ...options, method: "PATCH", body }
2054
+ );
2055
+ },
2056
+ /** Delete a talent list. Sourced membership is unaffected. */
2057
+ remove(slug, listId, options) {
2058
+ return client.fetch(
2059
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
2060
+ { ...options, method: "DELETE" }
2061
+ );
2062
+ }
2063
+ },
2064
+ /**
2065
+ * Per-job sourced membership — the unstaged kanban rail.
2066
+ * Saving a candidate always writes here. Convert-on-drop creates a
2067
+ * pipeline application with source `sourced` (hidden from the
2068
+ * candidate until they apply themselves).
2069
+ */
2070
+ sourcedCandidates: {
2071
+ /**
2072
+ * List sourced candidates still on the rail for a job. Anyone who
2073
+ * already has a pipeline application for that job is omitted.
2074
+ *
2075
+ * @example
2076
+ * const { data } = await board.me.companies.sourcedCandidates.list(
2077
+ * 'acme',
2078
+ * { job: jobId },
2079
+ * );
2080
+ */
2081
+ list(slug, query, options) {
2082
+ return client.fetch(
2083
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates`,
2084
+ { ...options, query }
2085
+ );
2086
+ },
2087
+ /**
2088
+ * Save a candidate onto a job's sourced rail. Idempotent: a second
2089
+ * add for the same pair returns `created: false`.
2090
+ *
2091
+ * @example
2092
+ * const saved = await board.me.companies.sourcedCandidates.add(
2093
+ * 'acme',
2094
+ * { job: jobId, candidateBoardUserId: candidateId },
2095
+ * );
2096
+ */
2097
+ add(slug, body, options) {
2098
+ return client.fetch(`/me/companies/${encodeURIComponent(slug)}/sourced-candidates`, {
2099
+ ...options,
2100
+ method: "POST",
2101
+ body
2102
+ });
2103
+ },
2104
+ /** Remove a sourced membership. Does not touch pipeline applications. */
2105
+ remove(slug, sourcedId, options) {
2106
+ return client.fetch(
2107
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
2108
+ { ...options, method: "DELETE" }
2109
+ );
2110
+ },
2111
+ /**
2112
+ * Convert a sourced candidate into the job pipeline. Writes
2113
+ * `source: 'sourced'` so the candidate does not see the application
2114
+ * until they apply themselves. `stage: 'applied'` aliases to
2115
+ * `review`. A board without a native pipeline raises
2116
+ * `sourced_convert_unavailable` (409).
2117
+ *
2118
+ * @example
2119
+ * const result = await board.me.companies.sourcedCandidates.convert(
2120
+ * 'acme',
2121
+ * sourcedId,
2122
+ * { stage: 'review' },
2123
+ * );
2124
+ */
2125
+ convert(slug, sourcedId, body, options) {
2126
+ return client.fetch(
2127
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
2128
+ { ...options, method: "POST", body }
2129
+ );
2130
+ }
2131
+ },
1988
2132
  /**
1989
2133
  * The applicant pipeline (ATS) for a company I am an approved member of
1990
2134
  * Reads return the full pipeline (job
package/dist/index.mjs CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  isValidationError,
16
16
  resolveStorage,
17
17
  writeSession
18
- } from "./chunk-XEJWXRLK.mjs";
18
+ } from "./chunk-W73BOGOQ.mjs";
19
19
  import {
20
20
  paginate
21
21
  } from "./chunk-DLSO6XXY.mjs";
@@ -39,7 +39,7 @@ function toSearchParams(query) {
39
39
  }
40
40
 
41
41
  // src/version.ts
42
- var SDK_VERSION = "4.13.0";
42
+ var SDK_VERSION = "4.14.0";
43
43
 
44
44
  // src/client.ts
45
45
  function isRawBody(body) {
@@ -253,6 +253,23 @@ function authNamespace(client) {
253
253
  body
254
254
  });
255
255
  },
256
+ /**
257
+ * Confirm an employer work-email verification token (from the link in the
258
+ * work-email verification email) and promote the pending company claim —
259
+ * approved on domain match, otherwise `awaiting_admin`. No session needed:
260
+ * the single-use token IS the authorization, and it alone identifies the
261
+ * membership. Returns the membership in its new state.
262
+ *
263
+ * @example
264
+ * const membership = await board.auth.verifyWorkEmail({ token });
265
+ */
266
+ verifyWorkEmail(body, options) {
267
+ return client.fetch("/auth/verify-work-email", {
268
+ ...options,
269
+ method: "POST",
270
+ body
271
+ });
272
+ },
256
273
  /**
257
274
  * Verify the signed-in board user's email with the 6-digit code from the
258
275
  * verification email (requires the bearer). Resolves void (204); an
@@ -1397,6 +1414,10 @@ function meNamespace(client) {
1397
1414
  * required, the token IS the authorization. Returns the membership in
1398
1415
  * its new state.
1399
1416
  *
1417
+ * @deprecated Use `board.auth.verifyWorkEmail({ token })`. `slug` is
1418
+ * ignored by the server — the token alone identifies the membership,
1419
+ * and a caller following an email link has no slug to supply.
1420
+ *
1400
1421
  * @example
1401
1422
  * await board.me.companies.workEmail.confirm('acme', { token });
1402
1423
  */
@@ -1681,6 +1702,125 @@ function meNamespace(client) {
1681
1702
  );
1682
1703
  }
1683
1704
  },
1705
+ /**
1706
+ * Company-owned saved predicates over the talent directory.
1707
+ * Approved members share the same lists. Optional `job` binds a list
1708
+ * to one company job; pass `job: null` on update to unbind.
1709
+ */
1710
+ talentLists: {
1711
+ /**
1712
+ * List talent lists for a company I am an approved member of.
1713
+ *
1714
+ * @example
1715
+ * const { data } = await board.me.companies.talentLists.list('acme');
1716
+ */
1717
+ list(slug, options) {
1718
+ return client.fetch(
1719
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists`,
1720
+ options
1721
+ );
1722
+ },
1723
+ /**
1724
+ * Create a talent list. `filters` reuse the frozen `/talent` query.
1725
+ *
1726
+ * @example
1727
+ * const list = await board.me.companies.talentLists.create('acme', {
1728
+ * name: 'Berlin React',
1729
+ * filters: { skill: 'react', sort: 'newest' },
1730
+ * job: jobId,
1731
+ * });
1732
+ */
1733
+ create(slug, body, options) {
1734
+ return client.fetch(
1735
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists`,
1736
+ { ...options, method: "POST", body }
1737
+ );
1738
+ },
1739
+ /**
1740
+ * Merge-patch a talent list. Pass `job: null` to unbind it from a job.
1741
+ */
1742
+ update(slug, listId, body, options) {
1743
+ return client.fetch(
1744
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1745
+ { ...options, method: "PATCH", body }
1746
+ );
1747
+ },
1748
+ /** Delete a talent list. Sourced membership is unaffected. */
1749
+ remove(slug, listId, options) {
1750
+ return client.fetch(
1751
+ `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1752
+ { ...options, method: "DELETE" }
1753
+ );
1754
+ }
1755
+ },
1756
+ /**
1757
+ * Per-job sourced membership — the unstaged kanban rail.
1758
+ * Saving a candidate always writes here. Convert-on-drop creates a
1759
+ * pipeline application with source `sourced` (hidden from the
1760
+ * candidate until they apply themselves).
1761
+ */
1762
+ sourcedCandidates: {
1763
+ /**
1764
+ * List sourced candidates still on the rail for a job. Anyone who
1765
+ * already has a pipeline application for that job is omitted.
1766
+ *
1767
+ * @example
1768
+ * const { data } = await board.me.companies.sourcedCandidates.list(
1769
+ * 'acme',
1770
+ * { job: jobId },
1771
+ * );
1772
+ */
1773
+ list(slug, query, options) {
1774
+ return client.fetch(
1775
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates`,
1776
+ { ...options, query }
1777
+ );
1778
+ },
1779
+ /**
1780
+ * Save a candidate onto a job's sourced rail. Idempotent: a second
1781
+ * add for the same pair returns `created: false`.
1782
+ *
1783
+ * @example
1784
+ * const saved = await board.me.companies.sourcedCandidates.add(
1785
+ * 'acme',
1786
+ * { job: jobId, candidateBoardUserId: candidateId },
1787
+ * );
1788
+ */
1789
+ add(slug, body, options) {
1790
+ return client.fetch(`/me/companies/${encodeURIComponent(slug)}/sourced-candidates`, {
1791
+ ...options,
1792
+ method: "POST",
1793
+ body
1794
+ });
1795
+ },
1796
+ /** Remove a sourced membership. Does not touch pipeline applications. */
1797
+ remove(slug, sourcedId, options) {
1798
+ return client.fetch(
1799
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
1800
+ { ...options, method: "DELETE" }
1801
+ );
1802
+ },
1803
+ /**
1804
+ * Convert a sourced candidate into the job pipeline. Writes
1805
+ * `source: 'sourced'` so the candidate does not see the application
1806
+ * until they apply themselves. `stage: 'applied'` aliases to
1807
+ * `review`. A board without a native pipeline raises
1808
+ * `sourced_convert_unavailable` (409).
1809
+ *
1810
+ * @example
1811
+ * const result = await board.me.companies.sourcedCandidates.convert(
1812
+ * 'acme',
1813
+ * sourcedId,
1814
+ * { stage: 'review' },
1815
+ * );
1816
+ */
1817
+ convert(slug, sourcedId, body, options) {
1818
+ return client.fetch(
1819
+ `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
1820
+ { ...options, method: "POST", body }
1821
+ );
1822
+ }
1823
+ },
1684
1824
  /**
1685
1825
  * The applicant pipeline (ATS) for a company I am an approved member of
1686
1826
  * Reads return the full pipeline (job
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.mjs';
1
+ import { S as Schemas } from './_spec-CzS_E61o.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.js';
1
+ import { S as Schemas } from './_spec-CzS_E61o.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.js';
1
+ import { S as Schemas } from './_spec-CzS_E61o.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.mjs';
1
+ import { S as Schemas } from './_spec-CzS_E61o.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.js';
1
+ import { S as Schemas } from './_spec-CzS_E61o.js';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-mFq9K67X.mjs';
1
+ import { S as Schemas } from './_spec-CzS_E61o.mjs';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-D9wvr1nK.mjs';
2
- import './_spec-mFq9K67X.mjs';
1
+ import { B as BoardSeo } from './seo-aSJ3zVx9.mjs';
2
+ import './_spec-CzS_E61o.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-CMNJMZcT.js';
2
- import './_spec-mFq9K67X.js';
1
+ import { B as BoardSeo } from './seo-BUDWv2pv.js';
2
+ import './_spec-CzS_E61o.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-ClPGMp-z.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-BSP53mOY.mjs';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-BSP53mOY.mjs';
4
- import './_spec-mFq9K67X.mjs';
5
- import './board-CkYDc1Lz.mjs';
6
- import './jobs-BWpm-Jf0.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-D4R04cZP.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-bbEYB2CD.mjs';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-bbEYB2CD.mjs';
4
+ import './_spec-CzS_E61o.mjs';
5
+ import './board-CXE7dnk9.mjs';
6
+ import './jobs-CsrNGyvS.mjs';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/seo.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BJF7uypj.js';
2
- import { e as JsonLdObject } from './breadcrumbs-BZzQwS8O.js';
3
- export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-BZzQwS8O.js';
4
- import './_spec-mFq9K67X.js';
5
- import './board-Po58Sn65.js';
6
- import './jobs-hZ3Kezhg.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CtRz0ZlI.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-DdEy2bpQ.js';
3
+ export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-DdEy2bpQ.js';
4
+ import './_spec-CzS_E61o.js';
5
+ import './board-MqLMXY48.js';
6
+ import './jobs-DDJDUH3q.js';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/server.d.mts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-mFq9K67X.mjs';
3
- import './search-DRIGekdi.mjs';
4
- import './board-CkYDc1Lz.mjs';
5
- import './jobs-BWpm-Jf0.mjs';
6
- import './seo-D9wvr1nK.mjs';
7
- import './blog-ClPGMp-z.mjs';
2
+ import './_spec-CzS_E61o.mjs';
3
+ import './search-Bnx30Fe2.mjs';
4
+ import './board-CXE7dnk9.mjs';
5
+ import './jobs-CsrNGyvS.mjs';
6
+ import './seo-aSJ3zVx9.mjs';
7
+ import './blog-D4R04cZP.mjs';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-mFq9K67X.js';
3
- import './search-DSLK6Cch.js';
4
- import './board-Po58Sn65.js';
5
- import './jobs-hZ3Kezhg.js';
6
- import './seo-CMNJMZcT.js';
7
- import './blog-BJF7uypj.js';
2
+ import './_spec-CzS_E61o.js';
3
+ import './search-B3nCRBqd.js';
4
+ import './board-MqLMXY48.js';
5
+ import './jobs-DDJDUH3q.js';
6
+ import './seo-BUDWv2pv.js';
7
+ import './blog-CtRz0ZlI.js';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.mjs CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  isNoStore,
3
3
  isUnauthorized,
4
4
  scopeToken
5
- } from "./chunk-XEJWXRLK.mjs";
5
+ } from "./chunk-W73BOGOQ.mjs";
6
6
 
7
7
  // src/server/cookie.ts
8
8
  var COOKIE_ATTRIBUTES = "Path=/; HttpOnly; Secure; SameSite=Lax";
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-mFq9K67X.mjs';
3
- import './search-DRIGekdi.mjs';
4
- import './board-CkYDc1Lz.mjs';
5
- import './jobs-BWpm-Jf0.mjs';
6
- import './seo-D9wvr1nK.mjs';
7
- import './blog-ClPGMp-z.mjs';
2
+ import './_spec-CzS_E61o.mjs';
3
+ import './search-Bnx30Fe2.mjs';
4
+ import './board-CXE7dnk9.mjs';
5
+ import './jobs-CsrNGyvS.mjs';
6
+ import './seo-aSJ3zVx9.mjs';
7
+ import './blog-D4R04cZP.mjs';
8
8
 
9
9
  /**
10
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
package/dist/sitemap.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-mFq9K67X.js';
3
- import './search-DSLK6Cch.js';
4
- import './board-Po58Sn65.js';
5
- import './jobs-hZ3Kezhg.js';
6
- import './seo-CMNJMZcT.js';
7
- import './blog-BJF7uypj.js';
2
+ import './_spec-CzS_E61o.js';
3
+ import './search-B3nCRBqd.js';
4
+ import './board-MqLMXY48.js';
5
+ import './jobs-DDJDUH3q.js';
6
+ import './seo-BUDWv2pv.js';
7
+ import './blog-CtRz0ZlI.js';
8
8
 
9
9
  /**
10
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
@@ -1,5 +1,5 @@
1
- import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-DRIGekdi.mjs';
2
- import './_spec-mFq9K67X.mjs';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-Bnx30Fe2.mjs';
2
+ import './_spec-CzS_E61o.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
package/dist/suggest.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-DSLK6Cch.js';
2
- import './_spec-mFq9K67X.js';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-B3nCRBqd.js';
2
+ import './_spec-CzS_E61o.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cavuno/board",
3
- "version": "4.13.0",
3
+ "version": "4.14.0",
4
4
  "description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.13.0",
2
+ "version": "4.14.0",
3
3
  "skills": [
4
4
  {
5
5
  "name": "cavuno-board-account",