@cavuno/board 4.65.0 → 4.66.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 +31 -0
- package/dist/{_spec-CIufstif.d.mts → _spec-DBI6azWs.d.mts} +39 -1
- package/dist/{_spec-CIufstif.d.ts → _spec-DBI6azWs.d.ts} +39 -1
- package/dist/{blog-DuNJLfIh.d.ts → blog--VKuBIdw.d.ts} +1 -1
- package/dist/{blog-teDJ9KaO.d.mts → blog-Bx-rjH4V.d.mts} +1 -1
- package/dist/{board-DZNCHGgl.d.mts → board-BsUhxdjL.d.mts} +2 -2
- package/dist/{board-iCHYuNhr.d.ts → board-USJ9ZZab.d.ts} +2 -2
- package/dist/{breadcrumbs-Bt3oNIAx.d.mts → breadcrumbs-BVN_gIJq.d.mts} +2 -2
- package/dist/{breadcrumbs-DYGo0yB9.d.ts → breadcrumbs-maV86vZP.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-H3YIWHXR.mjs → chunk-R62XFNS7.mjs} +1 -0
- 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 +42 -15
- package/dist/index.d.ts +42 -15
- package/dist/index.js +19 -1
- package/dist/index.mjs +19 -2
- package/dist/{jobs-DM_QMccX.d.ts → jobs-Dyj1HZ8W.d.ts} +1 -1
- package/dist/{jobs-CbXbDBij.d.mts → jobs-qoVMh_Zd.d.mts} +1 -1
- package/dist/{search-PrqcJMft.d.mts → search-CrXCM8Hq.d.mts} +1 -1
- package/dist/{search-B7x4qt9A.d.ts → search-DPHLf8pI.d.ts} +1 -1
- package/dist/{seo-C1Br7ygq.d.ts → seo-BDwe8PwT.d.ts} +1 -1
- package/dist/{seo-ohehUCzN.d.mts → seo-DRVgmTCQ.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/server.mjs +1 -1
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/sitemap.mjs +1 -1
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/cavuno-board-filters/SKILL.md +12 -4
- package/skills/cavuno-board-post-a-job/SKILL.md +54 -5
- package/skills/manifest.json +1 -1
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-DBI6azWs.mjs';
|
|
3
|
+
import './search-CrXCM8Hq.mjs';
|
|
4
|
+
import './jobs-qoVMh_Zd.mjs';
|
|
5
|
+
import './board-BsUhxdjL.mjs';
|
|
6
|
+
import './seo-DRVgmTCQ.mjs';
|
|
7
|
+
import './blog-Bx-rjH4V.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-
|
|
3
|
-
import './search-
|
|
4
|
-
import './jobs-
|
|
5
|
-
import './board-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog
|
|
2
|
+
import './_spec-DBI6azWs.js';
|
|
3
|
+
import './search-DPHLf8pI.js';
|
|
4
|
+
import './jobs-Dyj1HZ8W.js';
|
|
5
|
+
import './board-USJ9ZZab.js';
|
|
6
|
+
import './seo-BDwe8PwT.js';
|
|
7
|
+
import './blog--VKuBIdw.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.mjs
CHANGED
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-CrXCM8Hq.mjs';
|
|
2
|
+
import './_spec-DBI6azWs.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-DPHLf8pI.js';
|
|
2
|
+
import './_spec-DBI6azWs.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/package.json
CHANGED
|
@@ -112,18 +112,26 @@ const categoryOptions = categories.data.map((term) => ({
|
|
|
112
112
|
}));
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
Categories also carry `totalJobCount`: published jobs on the category or
|
|
116
|
+
any subcategory, each job once. A parent category page lists its
|
|
117
|
+
subcategories' jobs, so show `totalJobCount` next to category links. A parent
|
|
118
|
+
whose jobs all sit in subcategories has `jobCount` 0 and is still listed.
|
|
119
|
+
|
|
120
|
+
For homepage "browse by category" tiles, ask for the busiest top-level
|
|
121
|
+
categories rather than the first page of the name-sorted collection:
|
|
117
122
|
|
|
118
123
|
```ts snippet
|
|
119
124
|
const top = await board.taxonomy.categories.list({
|
|
125
|
+
topLevel: true,
|
|
120
126
|
limit: 8,
|
|
121
|
-
sort: '
|
|
127
|
+
sort: 'totalJobCount',
|
|
122
128
|
});
|
|
123
129
|
```
|
|
124
130
|
|
|
125
131
|
Category and skill lists accept `q`, `limit` (1–100), `sort` (`name` or
|
|
126
|
-
`jobCount`), and opaque `cursor`.
|
|
132
|
+
`jobCount`; categories also `totalJobCount`), and opaque `cursor`. With
|
|
133
|
+
`sort: 'jobCount'` and no `q` or `topLevel`, a parent with no jobs of its own
|
|
134
|
+
is left out; `totalJobCount` includes it. Pass `nextCursor` unchanged to the next
|
|
127
135
|
request. The cursor is bound to `q`, `limit`, and `sort`.
|
|
128
136
|
|
|
129
137
|
```ts snippet
|
|
@@ -5,7 +5,7 @@ description: Post a job publicly with @cavuno/board. Use for plan selection, log
|
|
|
5
5
|
|
|
6
6
|
# Status-first job posting
|
|
7
7
|
|
|
8
|
-
The public posting funnel is anonymous and rate-limited. Its invariant is status-first handling: `board.jobPosting.create` returns one of
|
|
8
|
+
The public posting funnel is anonymous and rate-limited. Its invariant is status-first handling: `board.jobPosting.create` returns one of its success states, and the host follows that state. Rejected submissions throw `BoardApiError` instead.
|
|
9
9
|
|
|
10
10
|
Employer dashboard job management belongs to `board.me.companies.jobs.*`. Candidate access payments belong to `cavuno-board-paywall`.
|
|
11
11
|
|
|
@@ -160,11 +160,59 @@ switch (result.status) {
|
|
|
160
160
|
|
|
161
161
|
The mapping is:
|
|
162
162
|
|
|
163
|
-
- paid Stripe plan → `checkout`;
|
|
163
|
+
- paid Stripe plan → `checkout`, or `embedded_checkout` when you send `checkoutUiMode: 'embedded_page'`;
|
|
164
164
|
- free or credited posting → `published`, or `pending_approval` on moderated boards;
|
|
165
165
|
- invoice plan → `invoice_sent`.
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
`checkoutUrl` is a URL for a host-owned full-page redirect. Payment publication happens by webhook; the SDK exposes no Stripe integration or publish-confirm method.
|
|
168
|
+
|
|
169
|
+
## Embedded checkout
|
|
170
|
+
|
|
171
|
+
To keep the poster on your page, send `checkoutUiMode: 'embedded_page'`. A paid plan then returns `embedded_checkout` with everything Stripe.js needs. Load Stripe.js from `js.stripe.com` yourself; the SDK never bundles it.
|
|
172
|
+
|
|
173
|
+
```ts no-check
|
|
174
|
+
const result = await board.jobPosting.create({
|
|
175
|
+
submission,
|
|
176
|
+
checkoutUiMode: 'embedded_page',
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
if (result.status === 'embedded_checkout') {
|
|
180
|
+
const stripe = await loadStripe(result.publishableKey, {
|
|
181
|
+
stripeAccount: result.stripeAccountId,
|
|
182
|
+
});
|
|
183
|
+
const checkout = await stripe.initEmbeddedCheckout({
|
|
184
|
+
clientSecret: result.clientSecret,
|
|
185
|
+
onComplete: () => showPaid(result.sessionId),
|
|
186
|
+
});
|
|
187
|
+
checkout.mount('#checkout');
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Cards finish in place and fire `onComplete`. Payment methods that need a redirect still return to the board's `/post/success`, so that page must exist in both modes.
|
|
192
|
+
|
|
193
|
+
## Checkout outcome
|
|
194
|
+
|
|
195
|
+
After either checkout, read what happened with the session id: `sessionId` from `embedded_checkout`, or `session_id` on the `/post/success` return URL. `awaiting_payment` lasts until the payment webhook lands, so poll briefly. `processing` means a bank payment is still clearing and can take days; `payment_failed` means it failed. `jobStatus` and `jobUrl` say whether the job is live.
|
|
196
|
+
|
|
197
|
+
```ts snippet
|
|
198
|
+
const outcome = await board.jobPosting.getCheckout(sessionId);
|
|
199
|
+
|
|
200
|
+
switch (outcome.status) {
|
|
201
|
+
case 'paid':
|
|
202
|
+
if (outcome.jobUrl) linkToJob(outcome.jobUrl);
|
|
203
|
+
break;
|
|
204
|
+
case 'processing':
|
|
205
|
+
showPaymentProcessing(outcome.jobTitle);
|
|
206
|
+
break;
|
|
207
|
+
case 'awaiting_payment':
|
|
208
|
+
retrySoon();
|
|
209
|
+
break;
|
|
210
|
+
case 'payment_failed':
|
|
211
|
+
case 'canceled':
|
|
212
|
+
offerToPostAgain();
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
```
|
|
168
216
|
|
|
169
217
|
## Verified existing credit
|
|
170
218
|
|
|
@@ -200,8 +248,9 @@ Bare-email billing lookup is intentionally absent because it would expose whethe
|
|
|
200
248
|
## Completion gate
|
|
201
249
|
|
|
202
250
|
- The form renders `forms.job` in order: hidden entries are absent, required and locked entries block submit while empty, and an unknown built-in key is skipped.
|
|
203
|
-
- Every `create` call handles
|
|
204
|
-
- Paid checkout redirects through `checkoutUrl`; the job appears only after webhook completion.
|
|
251
|
+
- Every `create` call handles every status it can return (`embedded_checkout` only with `checkoutUiMode: 'embedded_page'`).
|
|
252
|
+
- Paid checkout redirects through `checkoutUrl` or mounts `clientSecret`; the job appears only after webhook completion.
|
|
253
|
+
- The return page reads `getCheckout(sessionId)` and tells `paid` from `processing`.
|
|
205
254
|
- Free unmoderated submission returns a resolving `jobSlug`.
|
|
206
255
|
- Missing domain logos leave submission usable without `logoUrl`.
|
|
207
256
|
- Existing credit is selectable only after token verification.
|
package/skills/manifest.json
CHANGED