@cavuno/board 4.51.0 → 4.53.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 +70 -0
- package/dist/{_spec-Pr6ZvyW_.d.mts → _spec-B4TxcV4W.d.mts} +83 -0
- package/dist/{_spec-Pr6ZvyW_.d.ts → _spec-B4TxcV4W.d.ts} +83 -0
- package/dist/{blog-D-MQEaMU.d.mts → blog-BYuzCPFi.d.mts} +1 -1
- package/dist/{blog-BBBiKhsA.d.ts → blog-C1nsaLmM.d.ts} +1 -1
- package/dist/{board-C6PEXL7n.d.mts → board-BtipyMwh.d.ts} +8 -2
- package/dist/{board-CaZu8nEl.d.ts → board-j0KFqNBp.d.mts} +8 -2
- package/dist/{breadcrumbs-WcxTd2Ka.d.mts → breadcrumbs-BCEsjVMn.d.mts} +4 -3
- package/dist/{breadcrumbs-DIIA4MaX.d.ts → breadcrumbs-BKpfMLqi.d.ts} +4 -3
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-JTFUOGWE.mjs → chunk-P4DNSVGM.mjs} +1 -1
- 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/format.mjs +1 -1
- package/dist/index.d.mts +56 -12
- package/dist/index.d.ts +56 -12
- package/dist/index.js +52 -9
- package/dist/index.mjs +52 -9
- package/dist/{jobs-CeB5FVGG.d.mts → jobs-BMJHIKTi.d.ts} +18 -4
- package/dist/{jobs-DN0ePjTg.d.ts → jobs-DKo4rx45.d.mts} +18 -4
- package/dist/{search-Kgs7ubkH.d.mts → search-DJQkMA5T.d.mts} +1 -1
- package/dist/{search-CDl4MJV4.d.ts → search-DVSEJ5aj.d.ts} +1 -1
- package/dist/{seo-BhHH3OMM.d.ts → seo-CIOAZCuc.d.ts} +1 -1
- package/dist/{seo-CPX54V1D.d.mts → seo-D2oDCBT0.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/seo.js +1 -1
- package/dist/seo.mjs +1 -1
- 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/package.json +1 -1
- package/skills/cavuno-board-companies/SKILL.md +13 -0
- package/skills/cavuno-board-jobs/SKILL.md +15 -0
- package/skills/cavuno-board-paywall/SKILL.md +8 -2
- package/skills/cavuno-board-talent-access/SKILL.md +6 -2
- package/skills/manifest.json +1 -1
|
@@ -62,12 +62,16 @@ The kit contains `sessionId`, `clientSecret`, `stripeAccountId`, `publishableKey
|
|
|
62
62
|
|
|
63
63
|
## Confirm access from the grant
|
|
64
64
|
|
|
65
|
-
`retrieveCheckout` reports `open`, `complete`, or `expired`. Open sessions are remountable with their `clientSecret`; expired sessions require a new checkout.
|
|
65
|
+
`retrieveCheckout` reports `open`, `complete`, or `expired`. Open sessions are remountable with their `clientSecret`; expired sessions require a new checkout. A `complete` session also carries `paymentStatus`. With `paid`, poll `grant()` within a bounded window because webhook delivery is asynchronous. With `processing`, the buyer paid by bank debit or transfer and the money has not cleared: access is granted only once it does, usually within a few business days. Do not poll; tell the buyer their payment is processing, and read the checkout again on their next visit to see whether it cleared or failed. With `failed`, the bank payment did not go through: nothing was granted, and the buyer can start a new checkout.
|
|
66
66
|
|
|
67
67
|
```ts snippet
|
|
68
68
|
const checkout = await board.me.access.retrieveCheckout(kit.sessionId);
|
|
69
69
|
|
|
70
|
-
if (checkout.status === 'complete') {
|
|
70
|
+
if (checkout.status === 'complete' && checkout.paymentStatus === 'processing') {
|
|
71
|
+
renderPaymentProcessing();
|
|
72
|
+
} else if (checkout.status === 'complete' && checkout.paymentStatus === 'failed') {
|
|
73
|
+
renderPaymentFailed(); // offer a new checkout
|
|
74
|
+
} else if (checkout.status === 'complete') {
|
|
71
75
|
let grant = await board.me.access.grant();
|
|
72
76
|
for (let poll = 0; !grant.hasAccess && poll < 10; poll++) {
|
|
73
77
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
@@ -101,6 +105,8 @@ A lifetime grant produces `paywall_no_recurring_subscription` for `portal`.
|
|
|
101
105
|
- Anonymous offers render without authorization; disabled paywall renders no tiers.
|
|
102
106
|
- Unentitled jobs show `gatedCount`; the active-grant request exposes the full list.
|
|
103
107
|
- Test checkout reaches `complete`, then bounded grant polling reaches `hasAccess: true` after webhook delivery.
|
|
108
|
+
- A `complete` checkout with `paymentStatus: 'processing'` shows a payment-processing state instead of polling.
|
|
109
|
+
- A `complete` checkout with `paymentStatus: 'failed'` says the payment did not go through and offers a new checkout.
|
|
104
110
|
- UI access decisions read `grant().hasAccess`.
|
|
105
111
|
- Recurring grants open the portal; lifetime grants show a deliberate non-portal state.
|
|
106
112
|
|
|
@@ -64,12 +64,16 @@ The kit contains `sessionId`, `clientSecret`, `stripeAccountId`, `publishableKey
|
|
|
64
64
|
|
|
65
65
|
## Confirm from remaining credits
|
|
66
66
|
|
|
67
|
-
`retrieveCheckout` reports `open`, `complete`, or `expired`. Open sessions are remountable with their `clientSecret`; expired sessions require a new checkout.
|
|
67
|
+
`retrieveCheckout` reports `open`, `complete`, or `expired`. Open sessions are remountable with their `clientSecret`; expired sessions require a new checkout. A `complete` session also carries `paymentStatus`. With `paid`, poll `retrieve()` because webhook delivery is asynchronous. With `processing`, a bank debit or transfer has not cleared: access is granted only once it does, so tell the buyer instead of polling, and read the checkout again on their next visit to see whether it cleared or failed. With `failed`, the bank payment did not go through: nothing was granted, and the buyer can start a new checkout.
|
|
68
68
|
|
|
69
69
|
```ts snippet
|
|
70
70
|
const checkout = await board.me.talentAccess.retrieveCheckout(kit.sessionId);
|
|
71
71
|
|
|
72
|
-
if (checkout.status === 'complete') {
|
|
72
|
+
if (checkout.status === 'complete' && checkout.paymentStatus === 'processing') {
|
|
73
|
+
renderPaymentProcessing();
|
|
74
|
+
} else if (checkout.status === 'complete' && checkout.paymentStatus === 'failed') {
|
|
75
|
+
renderPaymentFailed(); // offer a new checkout
|
|
76
|
+
} else if (checkout.status === 'complete') {
|
|
73
77
|
let access = await board.me.talentAccess.retrieve();
|
|
74
78
|
for (let poll = 0; !access.hasTalentAccess && poll < 10; poll++) {
|
|
75
79
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
package/skills/manifest.json
CHANGED