@cavuno/board 4.0.0 → 4.2.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 +51 -0
- package/dist/{_spec-GVe6WAfT.d.mts → _spec-BnoxU-iR.d.mts} +58 -12
- package/dist/{_spec-GVe6WAfT.d.ts → _spec-BnoxU-iR.d.ts} +58 -12
- package/dist/{blog-BsmKizpd.d.ts → blog-D-PYhejB.d.ts} +1 -1
- package/dist/{blog-Cf64mI8A.d.mts → blog-DoAOCg-d.d.mts} +1 -1
- package/dist/{board-DUhgiacm.d.ts → board-4vXzYDL3.d.ts} +2 -2
- package/dist/{board-GGWJ4coe.d.mts → board-CvBkK7my.d.mts} +2 -2
- package/dist/{breadcrumbs-DiccJhk4.d.ts → breadcrumbs-Blf_rsux.d.ts} +2 -2
- package/dist/{breadcrumbs-DFKr0HzU.d.mts → breadcrumbs-Cz1sFqtV.d.mts} +2 -2
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +74 -16
- package/dist/index.d.ts +74 -16
- package/dist/index.js +41 -6
- package/dist/index.mjs +41 -6
- package/dist/{jobs-QrbXOYB9.d.ts → jobs-B8DNWEir.d.ts} +1 -1
- package/dist/{jobs-BuLpV8iy.d.mts → jobs-aTp9uC3a.d.mts} +1 -1
- package/dist/{search-Cr4noJJZ.d.mts → search-Cs7d8y1k.d.mts} +1 -1
- package/dist/{search-DdsniXQv.d.ts → search-Cskh-neW.d.ts} +1 -1
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +5 -5
- package/dist/server.d.ts +5 -5
- package/dist/sitemap.d.mts +5 -5
- package/dist/sitemap.d.ts +5 -5
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/cavuno-board-api-client/SKILL.md +42 -0
- package/skills/cavuno-board-seo/SKILL.md +12 -0
- package/skills/manifest.json +1 -1
package/dist/server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './blog-
|
|
2
|
+
import './_spec-BnoxU-iR.js';
|
|
3
|
+
import './search-Cskh-neW.js';
|
|
4
|
+
import './board-4vXzYDL3.js';
|
|
5
|
+
import './jobs-B8DNWEir.js';
|
|
6
|
+
import './blog-D-PYhejB.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './blog-
|
|
2
|
+
import './_spec-BnoxU-iR.mjs';
|
|
3
|
+
import './search-Cs7d8y1k.mjs';
|
|
4
|
+
import './board-CvBkK7my.mjs';
|
|
5
|
+
import './jobs-aTp9uC3a.mjs';
|
|
6
|
+
import './blog-DoAOCg-d.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './blog-
|
|
2
|
+
import './_spec-BnoxU-iR.js';
|
|
3
|
+
import './search-Cskh-neW.js';
|
|
4
|
+
import './board-4vXzYDL3.js';
|
|
5
|
+
import './jobs-B8DNWEir.js';
|
|
6
|
+
import './blog-D-PYhejB.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/suggest.d.mts
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-Cs7d8y1k.mjs';
|
|
2
|
+
import './_spec-BnoxU-iR.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-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-Cskh-neW.js';
|
|
2
|
+
import './_spec-BnoxU-iR.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/package.json
CHANGED
|
@@ -60,6 +60,48 @@ A module-scoped client is safe for concurrent SSR requests when it uses the serv
|
|
|
60
60
|
|
|
61
61
|
**Complete when:** a shared server client contains no per-user state and each authenticated request supplies its own headers.
|
|
62
62
|
|
|
63
|
+
## Record marketing consent for the signed-in person
|
|
64
|
+
|
|
65
|
+
Marketing consent is a property of the board user, never a guest capture. The
|
|
66
|
+
frontend owns the checkbox wording and the privacy-policy link — render your
|
|
67
|
+
own copy beside the control; the API records the decision, not the prose.
|
|
68
|
+
Leave any checkbox unticked by default and call nothing while it stays
|
|
69
|
+
unticked: absence of a record means no consent, never a default.
|
|
70
|
+
|
|
71
|
+
At sign-up, pass the tick through the register body so consent is recorded in
|
|
72
|
+
the same transaction that creates the user:
|
|
73
|
+
|
|
74
|
+
```ts snippet
|
|
75
|
+
await board.auth.register({
|
|
76
|
+
role: 'candidate',
|
|
77
|
+
method: 'emailpass',
|
|
78
|
+
email: form.email,
|
|
79
|
+
password: form.password,
|
|
80
|
+
displayName: form.displayName,
|
|
81
|
+
marketingConsent: form.marketingChecked,
|
|
82
|
+
});
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Later, read or change only the signed-in person's own consent through the
|
|
86
|
+
authenticated `me` namespace. There is intentionally no email parameter, so a
|
|
87
|
+
frontend cannot target another person. Withdrawal is always an explicit POST —
|
|
88
|
+
never a state-changing GET, which mail scanners would follow.
|
|
89
|
+
|
|
90
|
+
```ts snippet
|
|
91
|
+
const current = await board.me.marketingConsent.retrieve();
|
|
92
|
+
if (current?.status !== 'granted') {
|
|
93
|
+
await board.me.marketingConsent.grant();
|
|
94
|
+
}
|
|
95
|
+
await board.me.marketingConsent.withdraw();
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Call `grant()` only from a surface that displayed your disclosure wording.
|
|
99
|
+
Both calls are idempotent: repeating one changes nothing and emits no event.
|
|
100
|
+
|
|
101
|
+
**Complete when:** the checkbox defaults to unticked, unticked submits
|
|
102
|
+
nothing, grant is only reachable beside rendered disclosure copy, and
|
|
103
|
+
withdrawal is never implemented as a state-changing GET.
|
|
104
|
+
|
|
63
105
|
## Use the escape hatch for an untyped endpoint
|
|
64
106
|
|
|
65
107
|
`board.client.fetch<T>(path, options)` keeps the full request pipeline while providing a response type locally.
|
|
@@ -19,6 +19,18 @@ Read the matching reference completely before implementing that page:
|
|
|
19
19
|
|
|
20
20
|
For a page that combines branches, read every matching reference.
|
|
21
21
|
|
|
22
|
+
## Favicons and board logo
|
|
23
|
+
|
|
24
|
+
Brand identity — not SEO builders. Read them from `board.context()`:
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
const { logoUrl, icons } = await board.context();
|
|
28
|
+
// logoUrl — board logo
|
|
29
|
+
// icons.ico / .svg / .appleTouch / .icon192 / .icon512 / .iconMaskable512
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`board.seo()` is infra tokens only (ads, IndexNow, verification, canonical base, optional `manifest.name`).
|
|
33
|
+
|
|
22
34
|
Sitemaps and robots.txt use `cavuno-board-sitemap`. The host app owns OG-image
|
|
23
35
|
generation and its route map. `listingHead` receives app-owned title and
|
|
24
36
|
meta description copy; the SDK never composes those sentences or joins
|
package/skills/manifest.json
CHANGED