@cavuno/board 4.58.0 → 4.59.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.
- package/CHANGELOG.md +12 -0
- package/dist/{_spec-DIzdOWz7.d.mts → _spec-bmTwonT1.d.mts} +7 -5
- package/dist/{_spec-DIzdOWz7.d.ts → _spec-bmTwonT1.d.ts} +7 -5
- package/dist/analytics.js +38 -1
- package/dist/analytics.mjs +38 -1
- package/dist/bin.mjs +27 -14
- package/dist/{blog-DgbGOmzW.d.mts → blog-2rj7bfEp.d.mts} +1 -1
- package/dist/{blog-CyvB9C6W.d.ts → blog-BEKRpXYK.d.ts} +1 -1
- package/dist/{board-leXc6_BM.d.ts → board-Bdc--f9u.d.ts} +2 -2
- package/dist/{board-D3ByAGAb.d.mts → board-BrJfw_S7.d.mts} +2 -2
- package/dist/{breadcrumbs-aCKRBNWX.d.ts → breadcrumbs-NG9_miP6.d.ts} +2 -2
- package/dist/{breadcrumbs-zYG4xzpC.d.mts → breadcrumbs-WferORs2.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-GUXSUQCP.mjs → chunk-LO7D3AIX.mjs} +8 -10
- package/dist/doctor.js +27 -14
- package/dist/doctor.mjs +27 -14
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +12 -4
- package/dist/format.d.ts +12 -4
- package/dist/format.js +6 -1
- package/dist/format.mjs +6 -1
- package/dist/index.d.mts +13 -11
- package/dist/index.d.ts +13 -11
- package/dist/index.js +47 -10
- package/dist/index.mjs +47 -10
- package/dist/{jobs-DodvFXH2.d.ts → jobs-Cfmfxt86.d.ts} +1 -1
- package/dist/{jobs-nA2K33Nu.d.mts → jobs-DmrG_cGZ.d.mts} +1 -1
- package/dist/route-contract.d.mts +3 -4
- package/dist/route-contract.d.ts +3 -4
- package/dist/route-contract.js +8 -10
- package/dist/route-contract.mjs +1 -1
- package/dist/{search-8kX6OW03.d.mts → search-CcCXc47H.d.mts} +1 -1
- package/dist/{search-C1XNGSm6.d.ts → search-DwJi7GFS.d.ts} +1 -1
- package/dist/{seo-DFAwxGej.d.ts → seo-D4DJWYCY.d.ts} +1 -1
- package/dist/{seo-Bn5gQY8t.d.mts → seo-DSRRhklF.d.mts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/well-known.mjs +1 -1
- package/package.json +1 -1
- package/skills/cavuno-board-auth/SKILL.md +7 -0
- package/skills/cavuno-board-format/SKILL.md +5 -1
- package/skills/manifest.json +1 -1
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-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-DwJi7GFS.js';
|
|
2
|
+
import './_spec-bmTwonT1.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/well-known.mjs
CHANGED
package/package.json
CHANGED
|
@@ -90,3 +90,10 @@ The signed-in OTP verification, resend, magic-link, and OAuth branches use their
|
|
|
90
90
|
## Cavuno SDK reference
|
|
91
91
|
|
|
92
92
|
For setup and API details beyond this workflow, use the [Cavuno Board SDK documentation](https://cavuno.com/docs/sdk).
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### OAuth browser proof
|
|
96
|
+
|
|
97
|
+
SSO sign-ins require proof from the browser that started authorization. Google and LinkedIn sign-ins accept and check the same proof whenever it is supplied, and it will become required for them in a later release. The browser SDK establishes and retains a random secret before `getOAuthAuthorizationUrl` or `getSsoAuthorizationUrl`, sends only its SHA-256 hash to authorization, and supplies the secret when `exchangeOAuth` runs. Keep browser storage available through the provider round trip. Never take a binding secret from a completion URL or copy another browser's completion token.
|
|
98
|
+
|
|
99
|
+
Server callers (a Worker or other server runtime without browser storage) should generate a random secret, retain it securely in the visitor's session (for example an HttpOnly cookie), pass its lowercase SHA-256 hex as `browserBindingHash` to `getOAuthAuthorizationUrl`, and pass the original secret as `browserBinding` to `exchangeOAuth`. Without a `browserBindingHash`, the SDK sends a Google or LinkedIn request unbound from a server runtime; that is accepted today so existing deployments keep working, and will be refused once proof becomes required. A sign-in started with proof must finish with the matching secret: failed proof leaves the one-time token unconsumed. Automatic OAuth proof is cleared if authorization fails or once exchange succeeds; a rejected exchange keeps the proof available for retry.
|
|
@@ -59,7 +59,9 @@ formatSalaryStatRange(language, 90000, 120000, detail.currency);
|
|
|
59
59
|
formatSalaryStatRange(language, 90000, 120000, detail.currency, 'standard');
|
|
60
60
|
|
|
61
61
|
// Custom fields — language first. number → kind: 'number' (raw);
|
|
62
|
-
// multi_select → kind: 'multi_select' with values: string[] (labels)
|
|
62
|
+
// multi_select → kind: 'multi_select' with values: string[] (labels);
|
|
63
|
+
// rich_text → kind: 'rich_text' with API-sanitized HTML: render it as HTML.
|
|
64
|
+
// kind: 'text' stays plain text, so keep escaping it.
|
|
63
65
|
// Do not String(n). Do not join multi-select in the SDK — app owns list
|
|
64
66
|
// style (conjunction / short / chips):
|
|
65
67
|
// new Intl.ListFormat(language, { style: 'long', type: 'conjunction' })
|
|
@@ -121,6 +123,8 @@ const jobBadges = resolveCustomFieldDisplay(
|
|
|
121
123
|
switch (entry.kind) {
|
|
122
124
|
case 'text': // a single_select resolves to its option label
|
|
123
125
|
return [entry.value];
|
|
126
|
+
case 'rich_text': // sanitized HTML: render in a detail section, not a badge
|
|
127
|
+
return [];
|
|
124
128
|
case 'multi_select':
|
|
125
129
|
return entry.values;
|
|
126
130
|
case 'boolean':
|
package/skills/manifest.json
CHANGED