@cavuno/board 4.61.0 → 4.62.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 +16 -0
- package/dist/{_spec-B6YOcfhm.d.mts → _spec-BCwCDDX2.d.mts} +65 -0
- package/dist/{_spec-B6YOcfhm.d.ts → _spec-BCwCDDX2.d.ts} +65 -0
- package/dist/bin.mjs +12 -5
- package/dist/{blog-Iz3vKyol.d.ts → blog-BQ869KiE.d.ts} +1 -1
- package/dist/{blog-BazgjIMl.d.mts → blog-C0wl_hx8.d.mts} +1 -1
- package/dist/{board-BwOeOQ6v.d.mts → board-D2ImSfzo.d.mts} +2 -2
- package/dist/{board-Bd7H1jwl.d.ts → board-D5x6dfUk.d.ts} +2 -2
- package/dist/{breadcrumbs-pccdTbvQ.d.ts → breadcrumbs-CkIH_iCI.d.ts} +2 -2
- package/dist/{breadcrumbs-DxlE86G-.d.mts → breadcrumbs-DqkhouJc.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-R3QB3WM6.mjs → chunk-4KMZZR3A.mjs} +1 -1
- package/dist/{chunk-M4CX64RC.mjs → chunk-GRQRZRLO.mjs} +8 -1
- package/dist/{chunk-LO7D3AIX.mjs → chunk-HHMY3W7T.mjs} +7 -4
- package/dist/{chunk-MSY7ERBY.mjs → chunk-RAE63XH5.mjs} +3 -1
- package/dist/doctor.js +12 -5
- package/dist/doctor.mjs +12 -5
- 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.js +3 -1
- package/dist/format.mjs +2 -2
- package/dist/go.js +3 -1
- package/dist/go.mjs +1 -1
- package/dist/index.d.mts +65 -13
- package/dist/index.d.ts +65 -13
- package/dist/index.js +59 -2
- package/dist/index.mjs +52 -2
- package/dist/{jobs-DrDmqiBb.d.mts → jobs-B86GBnD5.d.mts} +1 -1
- package/dist/{jobs-BwxCoTRJ.d.ts → jobs-Bjb0KdER.d.ts} +1 -1
- package/dist/paths.d.mts +2 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.js +3 -1
- package/dist/paths.mjs +1 -1
- package/dist/{roles-B_d0igKI.d.mts → roles-D745cT5b.d.mts} +3 -1
- package/dist/{roles-B_d0igKI.d.ts → roles-D745cT5b.d.ts} +3 -1
- package/dist/route-contract.d.mts +2 -2
- package/dist/route-contract.d.ts +2 -2
- package/dist/route-contract.js +9 -4
- package/dist/route-contract.mjs +2 -2
- package/dist/{search-D4Uo2bRh.d.ts → search-CQHlSXMC.d.ts} +1 -1
- package/dist/{search-CbGEG89W.d.mts → search-PLWHFWyZ.d.mts} +1 -1
- package/dist/{seo-CnqvU41p.d.ts → seo-C8JYKw0_.d.ts} +1 -1
- package/dist/{seo-DiJBveAA.d.mts → seo-cXaJTDHD.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 +3 -1
- package/dist/seo.mjs +2 -2
- 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.js +3 -1
- package/dist/sitemap.mjs +2 -2
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/well-known.d.mts +1 -1
- package/dist/well-known.d.ts +1 -1
- package/dist/well-known.js +9 -4
- package/dist/well-known.mjs +2 -2
- package/package.json +1 -1
- package/skills/cavuno-board-products/SKILL.md +27 -1
- package/skills/manifest.json +2 -2
package/dist/paths.d.ts
CHANGED
|
@@ -186,6 +186,8 @@ declare const BOARD_PATHS: {
|
|
|
186
186
|
readonly products: "/products";
|
|
187
187
|
/** A signed-in board user's purchased products. */
|
|
188
188
|
readonly mePurchases: "/me/purchases";
|
|
189
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
190
|
+
readonly tip: "/tip";
|
|
189
191
|
};
|
|
190
192
|
/**
|
|
191
193
|
* Email `/go` indirection paths. Pure builders so
|
package/dist/paths.js
CHANGED
|
@@ -171,7 +171,9 @@ var BOARD_PATHS = {
|
|
|
171
171
|
/** The digital product catalogue. */
|
|
172
172
|
products: "/products",
|
|
173
173
|
/** A signed-in board user's purchased products. */
|
|
174
|
-
mePurchases: "/me/purchases"
|
|
174
|
+
mePurchases: "/me/purchases",
|
|
175
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
176
|
+
tip: "/tip"
|
|
175
177
|
};
|
|
176
178
|
function goJobPath(jobId) {
|
|
177
179
|
return `/go/job/${jobId}`;
|
package/dist/paths.mjs
CHANGED
|
@@ -67,7 +67,9 @@ type RouteRole = 'jobDetail' | 'jobsCategory' | 'jobsSkill' | 'jobsLocation' | '
|
|
|
67
67
|
/** A digital product's page. */
|
|
68
68
|
| 'product'
|
|
69
69
|
/** A purchase's download page (emails link here). */
|
|
70
|
-
| 'purchase' | 'home' | 'jobs' | 'companies' | 'salaries' | 'salaryCompanies' | 'salaryTitles' | 'salarySkills' | 'salaryLocations' | 'blog' | 'about' | 'privacyPolicy' | 'termsOfService' | 'cookiePolicy' | 'impressum' | 'talent' | 'employers' | 'alertsManage' | 'alertsConfirm' | 'products' | 'mePurchases'
|
|
70
|
+
| 'purchase' | 'home' | 'jobs' | 'companies' | 'salaries' | 'salaryCompanies' | 'salaryTitles' | 'salarySkills' | 'salaryLocations' | 'blog' | 'about' | 'privacyPolicy' | 'termsOfService' | 'cookiePolicy' | 'impressum' | 'talent' | 'employers' | 'alertsManage' | 'alertsConfirm' | 'products' | 'mePurchases'
|
|
71
|
+
/** The tip page (the board's tip jar); optional, never required. */
|
|
72
|
+
| 'tip';
|
|
71
73
|
/**
|
|
72
74
|
* Exact param-name set per role, derived from each helper's signature.
|
|
73
75
|
* Empty arrays = static / zero-param roles (never inferred by signature).
|
|
@@ -67,7 +67,9 @@ type RouteRole = 'jobDetail' | 'jobsCategory' | 'jobsSkill' | 'jobsLocation' | '
|
|
|
67
67
|
/** A digital product's page. */
|
|
68
68
|
| 'product'
|
|
69
69
|
/** A purchase's download page (emails link here). */
|
|
70
|
-
| 'purchase' | 'home' | 'jobs' | 'companies' | 'salaries' | 'salaryCompanies' | 'salaryTitles' | 'salarySkills' | 'salaryLocations' | 'blog' | 'about' | 'privacyPolicy' | 'termsOfService' | 'cookiePolicy' | 'impressum' | 'talent' | 'employers' | 'alertsManage' | 'alertsConfirm' | 'products' | 'mePurchases'
|
|
70
|
+
| 'purchase' | 'home' | 'jobs' | 'companies' | 'salaries' | 'salaryCompanies' | 'salaryTitles' | 'salarySkills' | 'salaryLocations' | 'blog' | 'about' | 'privacyPolicy' | 'termsOfService' | 'cookiePolicy' | 'impressum' | 'talent' | 'employers' | 'alertsManage' | 'alertsConfirm' | 'products' | 'mePurchases'
|
|
71
|
+
/** The tip page (the board's tip jar); optional, never required. */
|
|
72
|
+
| 'tip';
|
|
71
73
|
/**
|
|
72
74
|
* Exact param-name set per role, derived from each helper's signature.
|
|
73
75
|
* Empty arrays = static / zero-param roles (never inferred by signature).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-
|
|
2
|
-
export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-
|
|
1
|
+
import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-D745cT5b.mjs';
|
|
2
|
+
export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-D745cT5b.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Classify routes into role assignments. Markers (keyed by `sourcePath`)
|
package/dist/route-contract.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-
|
|
2
|
-
export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-
|
|
1
|
+
import { R as RouteEntry, a as RouteRole, C as ClassifyResult, b as CompileResult, V as ValidateManifestError, c as ValidateManifestResult, M as ManifestV1 } from './roles-D745cT5b.js';
|
|
2
|
+
export { A as ALL_ROLES, d as Ambiguity, e as CANONICAL_MANIFEST, f as REQUIRED_ROLES, g as ROLE_PARAM_REGISTRY, i as isRouteRole } from './roles-D745cT5b.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Classify routes into role assignments. Markers (keyed by `sourcePath`)
|
package/dist/route-contract.js
CHANGED
|
@@ -137,7 +137,9 @@ var BOARD_PATHS = {
|
|
|
137
137
|
/** The digital product catalogue. */
|
|
138
138
|
products: "/products",
|
|
139
139
|
/** A signed-in board user's purchased products. */
|
|
140
|
-
mePurchases: "/me/purchases"
|
|
140
|
+
mePurchases: "/me/purchases",
|
|
141
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
142
|
+
tip: "/tip"
|
|
141
143
|
};
|
|
142
144
|
|
|
143
145
|
// src/route-contract/roles.ts
|
|
@@ -177,7 +179,8 @@ var ROLE_PARAM_REGISTRY = {
|
|
|
177
179
|
alertsManage: [],
|
|
178
180
|
alertsConfirm: [],
|
|
179
181
|
products: [],
|
|
180
|
-
mePurchases: []
|
|
182
|
+
mePurchases: [],
|
|
183
|
+
tip: []
|
|
181
184
|
};
|
|
182
185
|
var REQUIRED_ROLES = [
|
|
183
186
|
"jobDetail",
|
|
@@ -229,7 +232,8 @@ var CANONICAL_MANIFEST = {
|
|
|
229
232
|
alertsManage: "/alerts/manage",
|
|
230
233
|
alertsConfirm: "/alerts/confirm",
|
|
231
234
|
products: BOARD_PATHS.products,
|
|
232
|
-
mePurchases: BOARD_PATHS.mePurchases
|
|
235
|
+
mePurchases: BOARD_PATHS.mePurchases,
|
|
236
|
+
tip: BOARD_PATHS.tip
|
|
233
237
|
}
|
|
234
238
|
};
|
|
235
239
|
|
|
@@ -1155,7 +1159,8 @@ var ROLE_INDEX_PATHS = {
|
|
|
1155
1159
|
product: BOARD_PATHS.products,
|
|
1156
1160
|
purchase: BOARD_PATHS.home,
|
|
1157
1161
|
products: BOARD_PATHS.products,
|
|
1158
|
-
mePurchases: BOARD_PATHS.home
|
|
1162
|
+
mePurchases: BOARD_PATHS.home,
|
|
1163
|
+
tip: BOARD_PATHS.home
|
|
1159
1164
|
};
|
|
1160
1165
|
function splitSegments(path) {
|
|
1161
1166
|
const withoutLeading = path.startsWith("/") ? path.slice(1) : path;
|
package/dist/route-contract.mjs
CHANGED
package/dist/seo-files.d.mts
CHANGED
package/dist/seo-files.d.ts
CHANGED
package/dist/seo.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
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-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-C0wl_hx8.mjs';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-DqkhouJc.mjs';
|
|
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-DqkhouJc.mjs';
|
|
4
|
+
import './_spec-BCwCDDX2.mjs';
|
|
5
|
+
import './board-D2ImSfzo.mjs';
|
|
6
|
+
import './jobs-B86GBnD5.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
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-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BQ869KiE.js';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-CkIH_iCI.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-CkIH_iCI.js';
|
|
4
|
+
import './_spec-BCwCDDX2.js';
|
|
5
|
+
import './board-D5x6dfUk.js';
|
|
6
|
+
import './jobs-Bjb0KdER.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/seo.js
CHANGED
|
@@ -211,7 +211,9 @@ var BOARD_PATHS = {
|
|
|
211
211
|
/** The digital product catalogue. */
|
|
212
212
|
products: "/products",
|
|
213
213
|
/** A signed-in board user's purchased products. */
|
|
214
|
-
mePurchases: "/me/purchases"
|
|
214
|
+
mePurchases: "/me/purchases",
|
|
215
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
216
|
+
tip: "/tip"
|
|
215
217
|
};
|
|
216
218
|
function boardUrl(origin, path) {
|
|
217
219
|
return `${origin.replace(/\/+$/, "")}${path}`;
|
package/dist/seo.mjs
CHANGED
|
@@ -17,11 +17,11 @@ import {
|
|
|
17
17
|
skillSalaryJsonLd,
|
|
18
18
|
sortBySeniority,
|
|
19
19
|
titleSalaryJsonLd
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-4KMZZR3A.mjs";
|
|
21
21
|
import {
|
|
22
22
|
boardUrl,
|
|
23
23
|
jobDetailPath
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-RAE63XH5.mjs";
|
|
25
25
|
|
|
26
26
|
// src/seo/blog.ts
|
|
27
27
|
function createBlogArticleJsonLd({
|
package/dist/server.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-BCwCDDX2.mjs';
|
|
3
|
+
import './search-PLWHFWyZ.mjs';
|
|
4
|
+
import './jobs-B86GBnD5.mjs';
|
|
5
|
+
import './board-D2ImSfzo.mjs';
|
|
6
|
+
import './seo-cXaJTDHD.mjs';
|
|
7
|
+
import './blog-C0wl_hx8.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.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-BCwCDDX2.js';
|
|
3
|
+
import './search-CQHlSXMC.js';
|
|
4
|
+
import './jobs-Bjb0KdER.js';
|
|
5
|
+
import './board-D5x6dfUk.js';
|
|
6
|
+
import './seo-C8JYKw0_.js';
|
|
7
|
+
import './blog-BQ869KiE.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.mjs
CHANGED
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-BCwCDDX2.mjs';
|
|
3
|
+
import './search-PLWHFWyZ.mjs';
|
|
4
|
+
import './jobs-B86GBnD5.mjs';
|
|
5
|
+
import './board-D2ImSfzo.mjs';
|
|
6
|
+
import './seo-cXaJTDHD.mjs';
|
|
7
|
+
import './blog-C0wl_hx8.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-BCwCDDX2.js';
|
|
3
|
+
import './search-CQHlSXMC.js';
|
|
4
|
+
import './jobs-Bjb0KdER.js';
|
|
5
|
+
import './board-D5x6dfUk.js';
|
|
6
|
+
import './seo-C8JYKw0_.js';
|
|
7
|
+
import './blog-BQ869KiE.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.js
CHANGED
|
@@ -252,7 +252,9 @@ var BOARD_PATHS = {
|
|
|
252
252
|
/** The digital product catalogue. */
|
|
253
253
|
products: "/products",
|
|
254
254
|
/** A signed-in board user's purchased products. */
|
|
255
|
-
mePurchases: "/me/purchases"
|
|
255
|
+
mePurchases: "/me/purchases",
|
|
256
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
257
|
+
tip: "/tip"
|
|
256
258
|
};
|
|
257
259
|
|
|
258
260
|
// src/sitemap/walker.ts
|
package/dist/sitemap.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DLSO6XXY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
isNotFound
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GRQRZRLO.mjs";
|
|
7
7
|
import {
|
|
8
8
|
BOARD_PATHS,
|
|
9
9
|
blogAuthorPath,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
salaryLocationPath,
|
|
20
20
|
salarySkillPath,
|
|
21
21
|
salaryTitlePath
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-RAE63XH5.mjs";
|
|
23
23
|
|
|
24
24
|
// src/sitemap/xml.ts
|
|
25
25
|
var SITEMAP_BUCKETS = [
|
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-PLWHFWyZ.mjs';
|
|
2
|
+
import './_spec-BCwCDDX2.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-CQHlSXMC.js';
|
|
2
|
+
import './_spec-BCwCDDX2.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/well-known.d.mts
CHANGED
package/dist/well-known.d.ts
CHANGED
package/dist/well-known.js
CHANGED
|
@@ -118,7 +118,9 @@ var BOARD_PATHS = {
|
|
|
118
118
|
/** The digital product catalogue. */
|
|
119
119
|
products: "/products",
|
|
120
120
|
/** A signed-in board user's purchased products. */
|
|
121
|
-
mePurchases: "/me/purchases"
|
|
121
|
+
mePurchases: "/me/purchases",
|
|
122
|
+
/** The tip page: visitors tip the board through its tip jar. */
|
|
123
|
+
tip: "/tip"
|
|
122
124
|
};
|
|
123
125
|
|
|
124
126
|
// src/route-contract/roles.ts
|
|
@@ -158,7 +160,8 @@ var ROLE_PARAM_REGISTRY = {
|
|
|
158
160
|
alertsManage: [],
|
|
159
161
|
alertsConfirm: [],
|
|
160
162
|
products: [],
|
|
161
|
-
mePurchases: []
|
|
163
|
+
mePurchases: [],
|
|
164
|
+
tip: []
|
|
162
165
|
};
|
|
163
166
|
var REQUIRED_ROLES = [
|
|
164
167
|
"jobDetail",
|
|
@@ -207,7 +210,8 @@ var CANONICAL_MANIFEST = {
|
|
|
207
210
|
alertsManage: "/alerts/manage",
|
|
208
211
|
alertsConfirm: "/alerts/confirm",
|
|
209
212
|
products: BOARD_PATHS.products,
|
|
210
|
-
mePurchases: BOARD_PATHS.mePurchases
|
|
213
|
+
mePurchases: BOARD_PATHS.mePurchases,
|
|
214
|
+
tip: BOARD_PATHS.tip
|
|
211
215
|
}
|
|
212
216
|
};
|
|
213
217
|
|
|
@@ -500,7 +504,8 @@ var ROLE_INDEX_PATHS = {
|
|
|
500
504
|
product: BOARD_PATHS.products,
|
|
501
505
|
purchase: BOARD_PATHS.home,
|
|
502
506
|
products: BOARD_PATHS.products,
|
|
503
|
-
mePurchases: BOARD_PATHS.home
|
|
507
|
+
mePurchases: BOARD_PATHS.home,
|
|
508
|
+
tip: BOARD_PATHS.home
|
|
504
509
|
};
|
|
505
510
|
|
|
506
511
|
// src/well-known/handler.ts
|
package/dist/well-known.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cavuno-board-products
|
|
3
|
-
description: Digital product storefront with @cavuno/board. Use for product lists and pages, reviews, free claims, embedded paid checkout, the purchase download page with its email confirmation, downloads, buyer reviews, resending the link,
|
|
3
|
+
description: Digital product storefront with @cavuno/board. Use for product lists and pages, reviews, free claims, embedded paid checkout, the purchase download page with its email confirmation, downloads, buyer reviews, resending the link, the signed-in buyer's purchases, or the tip jar's tip page and tip checkout.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Digital product storefront
|
|
@@ -122,6 +122,31 @@ const { data: mine } = await board.purchases.mine({ cache: 'no-store' });
|
|
|
122
122
|
|
|
123
123
|
`review` replaces the buyer's earlier review; `product_reviews_disabled` (404) when ratings are off, `purchase_refunded` (409), `purchase_review_invalid` (400). `mine` needs a board user session and lists purchases made while signed in plus those made with the user's verified email, each with `downloadUrl`.
|
|
124
124
|
|
|
125
|
+
## Tip jar
|
|
126
|
+
|
|
127
|
+
A board can have one tip jar: visitors tip any amount at or above a minimum on the tip page, `BOARD_PATHS.tip` (`/tip`), the `tip` route role. `board.tipJar` reads it and takes tips; the types are `TipJar`, `TipJarCheckoutBody`, `TipJarCheckout` and `TipJarCheckoutStatus`.
|
|
128
|
+
|
|
129
|
+
```ts snippet
|
|
130
|
+
const jar = await board.tipJar.get(); // tip_jar_not_found (404): hide the tip page and its links
|
|
131
|
+
// jar.suggestedCents: three amounts, smallest first; jar.minimumCents; jar.allowNote
|
|
132
|
+
// jar.tipCount is null unless the board shows the number of tips
|
|
133
|
+
|
|
134
|
+
const kit = await board.tipJar.checkout({
|
|
135
|
+
amountCents: 500, // at least jar.minimumCents
|
|
136
|
+
note: 'Thanks for the weekly roundup!', // only when jar.allowNote; 280 characters max
|
|
137
|
+
returnPath: '/tip',
|
|
138
|
+
website: '', // honeypot: render hidden, send empty
|
|
139
|
+
});
|
|
140
|
+
// Mount like a paid product: loadStripe(kit.publishableKey, { stripeAccount: kit.stripeAccountId })
|
|
141
|
+
// then initEmbeddedCheckout({ clientSecret: kit.clientSecret }). Expires after 30 minutes.
|
|
142
|
+
|
|
143
|
+
const status = await board.tipJar.getCheckout(sessionId, { cache: 'no-store' });
|
|
144
|
+
if (status.status === 'paid') showThanks(status.thankYouMessage, status.receiptEmail);
|
|
145
|
+
// 'processing' until the payment clears: poll briefly
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Stripe collects the tipper's email (prefilled for a signed-in board user), so the form asks only for the amount and the note. Render the note as a plain `textarea`. `receiptEmail` is masked (`m•••@gmail.com`) because the session id is in a shareable URL. Link to the tip page with `jar.url`, which follows the board's route manifest. Errors: `tip_amount_below_minimum` (400, `details.minimumCents`), `tip_amount_invalid`, `tip_note_not_allowed`, `tip_note_too_long` (400), `tip_jar_not_found` (404), `stripe_not_connected` (409), `rate_limited` (429), `rate_limit_unavailable` (503); `getCheckout` with an unknown session is `tip_checkout_not_found` (404). The API never returns other tippers' emails or notes.
|
|
149
|
+
|
|
125
150
|
## Completion gate
|
|
126
151
|
|
|
127
152
|
- The list shows listed products only; a link-only product page renders with `noindex`.
|
|
@@ -129,6 +154,7 @@ const { data: mine } = await board.purchases.mine({ cache: 'no-store' });
|
|
|
129
154
|
- A forwarded download link asks for the email, and the confirmation survives a reload through your own cookie.
|
|
130
155
|
- Downloads start from a button; `purchase_download_limit_reached` disables the button instead of retrying.
|
|
131
156
|
- Download pages, checkout status and `mine()` are `no-store`; purchase paths never reach analytics or the sitemap.
|
|
157
|
+
- The tip page hides when `board.tipJar.get()` is `tip_jar_not_found`; a test tip returns with `session_id` and `getCheckout` reaches `paid`.
|
|
132
158
|
|
|
133
159
|
## Cavuno SDK reference
|
|
134
160
|
|
package/skills/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.62.0",
|
|
3
3
|
"skills": [
|
|
4
4
|
{
|
|
5
5
|
"name": "cavuno-board-account",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
},
|
|
116
116
|
{
|
|
117
117
|
"name": "cavuno-board-products",
|
|
118
|
-
"description": "Digital product storefront with @cavuno/board. Use for product lists and pages, reviews, free claims, embedded paid checkout, the purchase download page with its email confirmation, downloads, buyer reviews, resending the link,
|
|
118
|
+
"description": "Digital product storefront with @cavuno/board. Use for product lists and pages, reviews, free claims, embedded paid checkout, the purchase download page with its email confirmation, downloads, buyer reviews, resending the link, the signed-in buyer's purchases, or the tip jar's tip page and tip checkout.",
|
|
119
119
|
"path": "skills/cavuno-board-products/SKILL.md",
|
|
120
120
|
"framework": null,
|
|
121
121
|
"category": "core"
|