@cavuno/board 4.8.0 → 4.9.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 (47) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{_spec-DePC7a05.d.mts → _spec-B9Ah8dNs.d.mts} +35 -0
  3. package/dist/{_spec-DePC7a05.d.ts → _spec-B9Ah8dNs.d.ts} +35 -0
  4. package/dist/bin.mjs +174 -19
  5. package/dist/{blog-DbFr4VPW.d.mts → blog-BmqWfLZi.d.mts} +1 -1
  6. package/dist/{blog-ummlt6Uq.d.ts → blog-bh07fZ8Q.d.ts} +1 -1
  7. package/dist/{board-zWyHbyi4.d.ts → board-B4jLqmxn.d.mts} +5 -3
  8. package/dist/{board-DxTMBgIf.d.mts → board-De8nLbk7.d.ts} +5 -3
  9. package/dist/{breadcrumbs-kbmspmfk.d.ts → breadcrumbs-B1HVufC7.d.ts} +2 -2
  10. package/dist/{breadcrumbs-P4qh0zML.d.mts → breadcrumbs-BVQL2dNY.d.mts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/{chunk-IWWPHFK2.mjs → chunk-T46JASKG.mjs} +3 -0
  13. package/dist/doctor.d.mts +3 -1
  14. package/dist/doctor.d.ts +3 -1
  15. package/dist/doctor.js +169 -17
  16. package/dist/doctor.mjs +169 -17
  17. package/dist/filters.d.mts +2 -2
  18. package/dist/filters.d.ts +2 -2
  19. package/dist/format.d.mts +4 -4
  20. package/dist/format.d.ts +4 -4
  21. package/dist/index.d.mts +45 -23
  22. package/dist/index.d.ts +45 -23
  23. package/dist/index.js +10 -6
  24. package/dist/index.mjs +8 -7
  25. package/dist/{jobs-DTLDt57G.d.mts → jobs-B7q3BgIK.d.mts} +1 -1
  26. package/dist/{jobs-twt5TO9l.d.ts → jobs-Iv6Wkvvf.d.ts} +1 -1
  27. package/dist/{search-CHD6peIl.d.ts → search-CbDZwdyl.d.ts} +1 -1
  28. package/dist/{search-f2UNlTfv.d.mts → search-DC0jatQN.d.mts} +1 -1
  29. package/dist/seo-BDFUuvXM.d.ts +12 -0
  30. package/dist/seo-HCE7aCkh.d.mts +12 -0
  31. package/dist/seo-files.d.mts +36 -0
  32. package/dist/seo-files.d.ts +36 -0
  33. package/dist/seo-files.js +102 -0
  34. package/dist/seo-files.mjs +81 -0
  35. package/dist/seo.d.mts +6 -6
  36. package/dist/seo.d.ts +6 -6
  37. package/dist/server.d.mts +6 -5
  38. package/dist/server.d.ts +6 -5
  39. package/dist/server.mjs +1 -1
  40. package/dist/sitemap.d.mts +6 -5
  41. package/dist/sitemap.d.ts +6 -5
  42. package/dist/suggest.d.mts +2 -2
  43. package/dist/suggest.d.ts +2 -2
  44. package/package.json +11 -1
  45. package/skills/cavuno-board-account/SKILL.md +3 -1
  46. package/skills/cavuno-board-filters/SKILL.md +17 -3
  47. package/skills/manifest.json +1 -1
package/dist/seo.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-ummlt6Uq.js';
2
- import { e as JsonLdObject } from './breadcrumbs-kbmspmfk.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-kbmspmfk.js';
4
- import './_spec-DePC7a05.js';
5
- import './board-zWyHbyi4.js';
6
- import './jobs-twt5TO9l.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-bh07fZ8Q.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-B1HVufC7.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-B1HVufC7.js';
4
+ import './_spec-B9Ah8dNs.js';
5
+ import './board-De8nLbk7.js';
6
+ import './jobs-Iv6Wkvvf.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,9 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-DePC7a05.mjs';
3
- import './search-f2UNlTfv.mjs';
4
- import './board-DxTMBgIf.mjs';
5
- import './jobs-DTLDt57G.mjs';
6
- import './blog-DbFr4VPW.mjs';
2
+ import './_spec-B9Ah8dNs.mjs';
3
+ import './search-DC0jatQN.mjs';
4
+ import './board-B4jLqmxn.mjs';
5
+ import './jobs-B7q3BgIK.mjs';
6
+ import './seo-HCE7aCkh.mjs';
7
+ import './blog-BmqWfLZi.mjs';
7
8
 
8
9
  /**
9
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-DePC7a05.js';
3
- import './search-CHD6peIl.js';
4
- import './board-zWyHbyi4.js';
5
- import './jobs-twt5TO9l.js';
6
- import './blog-ummlt6Uq.js';
2
+ import './_spec-B9Ah8dNs.js';
3
+ import './search-CbDZwdyl.js';
4
+ import './board-De8nLbk7.js';
5
+ import './jobs-Iv6Wkvvf.js';
6
+ import './seo-BDFUuvXM.js';
7
+ import './blog-bh07fZ8Q.js';
7
8
 
8
9
  /**
9
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-IWWPHFK2.mjs";
5
+ } from "./chunk-T46JASKG.mjs";
6
6
 
7
7
  // src/server/cookie.ts
8
8
  var COOKIE_ATTRIBUTES = "Path=/; HttpOnly; Secure; SameSite=Lax";
@@ -1,9 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-DePC7a05.mjs';
3
- import './search-f2UNlTfv.mjs';
4
- import './board-DxTMBgIf.mjs';
5
- import './jobs-DTLDt57G.mjs';
6
- import './blog-DbFr4VPW.mjs';
2
+ import './_spec-B9Ah8dNs.mjs';
3
+ import './search-DC0jatQN.mjs';
4
+ import './board-B4jLqmxn.mjs';
5
+ import './jobs-B7q3BgIK.mjs';
6
+ import './seo-HCE7aCkh.mjs';
7
+ import './blog-BmqWfLZi.mjs';
7
8
 
8
9
  /**
9
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
package/dist/sitemap.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { BoardSdk } from './index.js';
2
- import './_spec-DePC7a05.js';
3
- import './search-CHD6peIl.js';
4
- import './board-zWyHbyi4.js';
5
- import './jobs-twt5TO9l.js';
6
- import './blog-ummlt6Uq.js';
2
+ import './_spec-B9Ah8dNs.js';
3
+ import './search-CbDZwdyl.js';
4
+ import './board-De8nLbk7.js';
5
+ import './jobs-Iv6Wkvvf.js';
6
+ import './seo-BDFUuvXM.js';
7
+ import './blog-bh07fZ8Q.js';
7
8
 
8
9
  /**
9
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-f2UNlTfv.mjs';
2
- import './_spec-DePC7a05.mjs';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-DC0jatQN.mjs';
2
+ import './_spec-B9Ah8dNs.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-CHD6peIl.js';
2
- import './_spec-DePC7a05.js';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-CbDZwdyl.js';
2
+ import './_spec-B9Ah8dNs.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.8.0",
3
+ "version": "4.9.0",
4
4
  "description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -154,6 +154,16 @@
154
154
  "default": "./dist/well-known.js"
155
155
  }
156
156
  },
157
+ "./seo-files": {
158
+ "import": {
159
+ "types": "./dist/seo-files.d.mts",
160
+ "default": "./dist/seo-files.mjs"
161
+ },
162
+ "require": {
163
+ "types": "./dist/seo-files.d.ts",
164
+ "default": "./dist/seo-files.js"
165
+ }
166
+ },
157
167
  "./server": {
158
168
  "import": {
159
169
  "types": "./dist/server.d.mts",
@@ -137,7 +137,9 @@ if (data.length === 0 && (skills.data.length === 0 || resume.parseStatus !== 'pa
137
137
  Authenticated settings expose `messageEmails`, `applicationEmails`, and
138
138
  `recommendedJobEmails`. The first two default subscribed when no stored
139
139
  preference exists; recommendation email is explicit opt-in and defaults
140
- unsubscribed. Updating one channel returns the full set.
140
+ unsubscribed. Each preference includes additive `waitlisted`. Updating
141
+ one channel returns the full set. A subscribe at the Email subscribers
142
+ cap waitlists instead of failing.
141
143
 
142
144
  ```ts snippet
143
145
  const preferences = await board.me.notificationPreferences.retrieve();
@@ -67,7 +67,9 @@ application's copy (message catalog or hard-coded board language).
67
67
 
68
68
  Category and skill collections contain terms backed by published jobs. Each
69
69
  term already carries a board-language `displayName`, immutable English
70
- `sourceSlug` for filtering, and board-language `canonicalSlug` for links.
70
+ `sourceSlug` for filtering, board-language `canonicalSlug` for links, and
71
+ a live `jobCount` (published jobs on the board — not a tally of the current
72
+ list page).
71
73
 
72
74
  ```ts snippet
73
75
  const categories = await board.taxonomy.categories.list({ limit: 50 });
@@ -77,11 +79,23 @@ const categoryOptions = categories.data.map((term) => ({
77
79
  label: term.displayName,
78
80
  filterValue: term.sourceSlug,
79
81
  href: `/jobs/${term.canonicalSlug}`,
82
+ jobCount: term.jobCount,
80
83
  }));
81
84
  ```
82
85
 
83
- Category and skill lists accept `q`, `limit` (1–100), and opaque `cursor`.
84
- Pass `nextCursor` unchanged to the next request.
86
+ For homepage "browse by category" tiles, ask for the busiest terms rather
87
+ than the first page of the name-sorted collection:
88
+
89
+ ```ts snippet
90
+ const top = await board.taxonomy.categories.list({
91
+ limit: 8,
92
+ sort: 'jobCount',
93
+ });
94
+ ```
95
+
96
+ Category and skill lists accept `q`, `limit` (1–100), `sort` (`name` or
97
+ `jobCount`), and opaque `cursor`. Pass `nextCursor` unchanged to the next
98
+ request. The cursor is bound to `q`, `limit`, and `sort`.
85
99
 
86
100
  ```ts snippet
87
101
  const first = await board.taxonomy.categories.list({ limit: 50 });
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.8.0",
2
+ "version": "4.9.0",
3
3
  "skills": [
4
4
  {
5
5
  "name": "cavuno-board-account",