@cavuno/board 4.60.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 +38 -0
- package/dist/{_spec-DtsIUScQ.d.mts → _spec-BCwCDDX2.d.mts} +81 -0
- package/dist/{_spec-DtsIUScQ.d.ts → _spec-BCwCDDX2.d.ts} +81 -0
- package/dist/bin.mjs +12 -5
- package/dist/{blog-VKligt-6.d.ts → blog-BQ869KiE.d.ts} +1 -1
- package/dist/{blog-BKnmvibN.d.mts → blog-C0wl_hx8.d.mts} +1 -1
- package/dist/{board-CWx0nu39.d.mts → board-D2ImSfzo.d.mts} +2 -2
- package/dist/{board-QuwKsDOt.d.ts → board-D5x6dfUk.d.ts} +2 -2
- package/dist/{breadcrumbs-8k7a572J.d.ts → breadcrumbs-CkIH_iCI.d.ts} +2 -2
- package/dist/{breadcrumbs-BEnF2UAW.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 +191 -14
- package/dist/index.d.ts +191 -14
- package/dist/index.js +169 -3
- package/dist/index.mjs +162 -3
- package/dist/{jobs-D-vpMQ6a.d.mts → jobs-B86GBnD5.d.mts} +1 -1
- package/dist/{jobs-wc4h0pSV.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-Cgel3YbJ.d.ts → search-CQHlSXMC.d.ts} +1 -1
- package/dist/{search-B4fsEVF8.d.mts → search-PLWHFWyZ.d.mts} +1 -1
- package/dist/{seo-BGyEzgAX.d.ts → seo-C8JYKw0_.d.ts} +1 -1
- package/dist/{seo-BgMmH3QS.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-job-alerts/SKILL.md +31 -0
- package/skills/cavuno-board-products/SKILL.md +27 -1
- package/skills/manifest.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
isSsoRequired,
|
|
26
26
|
isUnauthorized,
|
|
27
27
|
isValidationError
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-GRQRZRLO.mjs";
|
|
29
29
|
|
|
30
30
|
// src/query.ts
|
|
31
31
|
function toSearchParams(query) {
|
|
@@ -46,7 +46,7 @@ function toSearchParams(query) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
// src/version.ts
|
|
49
|
-
var SDK_VERSION = "4.
|
|
49
|
+
var SDK_VERSION = "4.62.0";
|
|
50
50
|
|
|
51
51
|
// src/client.ts
|
|
52
52
|
function isRawBody(body) {
|
|
@@ -414,6 +414,22 @@ function authNamespace(client, board = "") {
|
|
|
414
414
|
body
|
|
415
415
|
});
|
|
416
416
|
},
|
|
417
|
+
/**
|
|
418
|
+
* Confirm a profile item's email-domain check with the token from the
|
|
419
|
+
* emailed link. No session required: the single-use token is the
|
|
420
|
+
* authorization. Returns the item, now verified. Any rejected token is a
|
|
421
|
+
* 401 `BoardApiError`; start the check again to recover.
|
|
422
|
+
*
|
|
423
|
+
* @example
|
|
424
|
+
* const item = await board.auth.verifyItemEmail({ token });
|
|
425
|
+
*/
|
|
426
|
+
verifyItemEmail(body, options) {
|
|
427
|
+
return client.fetch("/auth/verify-item-email", {
|
|
428
|
+
...options,
|
|
429
|
+
method: "POST",
|
|
430
|
+
body
|
|
431
|
+
});
|
|
432
|
+
},
|
|
417
433
|
/**
|
|
418
434
|
* Verify the signed-in board user's email with the 6-digit code from the
|
|
419
435
|
* verification email (requires the bearer). Resolves void (204); an
|
|
@@ -945,7 +961,11 @@ function jobAlertsNamespace(client) {
|
|
|
945
961
|
query
|
|
946
962
|
});
|
|
947
963
|
},
|
|
948
|
-
/**
|
|
964
|
+
/**
|
|
965
|
+
* Deactivate a subscription via the HMAC manage token. Spread
|
|
966
|
+
* `parseJobAlertUnsubscribeParams(url)` into the input to record which
|
|
967
|
+
* digest the subscriber unsubscribed from.
|
|
968
|
+
*/
|
|
949
969
|
unsubscribe(input, options) {
|
|
950
970
|
return client.fetch("/job-alerts/unsubscribe", {
|
|
951
971
|
...options,
|
|
@@ -953,6 +973,19 @@ function jobAlertsNamespace(client) {
|
|
|
953
973
|
body: input
|
|
954
974
|
});
|
|
955
975
|
},
|
|
976
|
+
/**
|
|
977
|
+
* Record a visitor opening a job from a digest email. Call it once on a
|
|
978
|
+
* job page load whose URL carries the digest params
|
|
979
|
+
* (`parseJobAlertClickParams(url)` returns them). Resolves with a uniform
|
|
980
|
+
* `accepted` receipt; the click is recorded after the response.
|
|
981
|
+
*/
|
|
982
|
+
recordClick(input, options) {
|
|
983
|
+
return client.fetch("/job-alerts/clicks", {
|
|
984
|
+
...options,
|
|
985
|
+
method: "POST",
|
|
986
|
+
body: input
|
|
987
|
+
});
|
|
988
|
+
},
|
|
956
989
|
/** Re-activate a previously unsubscribed subscription via the manage token. */
|
|
957
990
|
resubscribe(input, options) {
|
|
958
991
|
return client.fetch("/job-alerts/resubscribe", {
|
|
@@ -1440,6 +1473,42 @@ function meNamespace(client) {
|
|
|
1440
1473
|
body
|
|
1441
1474
|
});
|
|
1442
1475
|
},
|
|
1476
|
+
/**
|
|
1477
|
+
* Start an email-domain check of one item on my profile: a 6-digit code
|
|
1478
|
+
* and a link go to an address at the item's domain (for example a work
|
|
1479
|
+
* email at a current employer's website domain). Confirm with
|
|
1480
|
+
* `confirmEmailDomainVerification` or `board.auth.verifyItemEmail`.
|
|
1481
|
+
* `sent` is false when an email for the item went out under a minute
|
|
1482
|
+
* ago and nothing new was sent.
|
|
1483
|
+
*
|
|
1484
|
+
* @example
|
|
1485
|
+
* const check = await board.me.profile.submitEmailDomainVerification({
|
|
1486
|
+
* itemKey: 'experience:abc123',
|
|
1487
|
+
* email: 'me@acme.com',
|
|
1488
|
+
* });
|
|
1489
|
+
*/
|
|
1490
|
+
submitEmailDomainVerification(body, options) {
|
|
1491
|
+
return client.fetch(
|
|
1492
|
+
"/me/profile/verifications/email-domain",
|
|
1493
|
+
{ ...options, method: "POST", body }
|
|
1494
|
+
);
|
|
1495
|
+
},
|
|
1496
|
+
/**
|
|
1497
|
+
* Confirm an email-domain check with the 6-digit code from the email.
|
|
1498
|
+
* Returns the item, now verified; the emailed link stops working.
|
|
1499
|
+
*
|
|
1500
|
+
* @example
|
|
1501
|
+
* await board.me.profile.confirmEmailDomainVerification({
|
|
1502
|
+
* itemKey: 'experience:abc123',
|
|
1503
|
+
* code: '123456',
|
|
1504
|
+
* });
|
|
1505
|
+
*/
|
|
1506
|
+
confirmEmailDomainVerification(body, options) {
|
|
1507
|
+
return client.fetch(
|
|
1508
|
+
"/me/profile/verifications/email-domain/confirm",
|
|
1509
|
+
{ ...options, method: "POST", body }
|
|
1510
|
+
);
|
|
1511
|
+
},
|
|
1443
1512
|
/**
|
|
1444
1513
|
* Check whether a handle is available for me on this board (my own
|
|
1445
1514
|
* current handle counts as available). Advisory — `update` re-checks.
|
|
@@ -4031,6 +4100,55 @@ function taxonomyNamespace(client) {
|
|
|
4031
4100
|
};
|
|
4032
4101
|
}
|
|
4033
4102
|
|
|
4103
|
+
// src/namespaces/tip-jar.ts
|
|
4104
|
+
function tipJarNamespace(client) {
|
|
4105
|
+
return {
|
|
4106
|
+
/**
|
|
4107
|
+
* The board's tip page. A `tip_jar_not_found` error (404) means the
|
|
4108
|
+
* board has no tip jar or it is archived: hide the page and its links.
|
|
4109
|
+
*
|
|
4110
|
+
* @example
|
|
4111
|
+
* const jar = await board.tipJar.get();
|
|
4112
|
+
* jar.suggestedCents; // [300, 500, 1000]
|
|
4113
|
+
*/
|
|
4114
|
+
get(options) {
|
|
4115
|
+
return client.fetch("/tip-jar", options);
|
|
4116
|
+
},
|
|
4117
|
+
/**
|
|
4118
|
+
* Start a tip: returns an embedded Stripe Checkout mount kit (it expires
|
|
4119
|
+
* after 30 minutes). Signed in, the visitor's email is filled in on
|
|
4120
|
+
* Stripe's form. `amountCents` is at least `minimumCents`; send a `note`
|
|
4121
|
+
* only when `allowNote` is true.
|
|
4122
|
+
*
|
|
4123
|
+
* @example
|
|
4124
|
+
* const kit = await board.tipJar.checkout({ amountCents: 500 });
|
|
4125
|
+
* // mount Stripe's embedded checkout with kit.clientSecret
|
|
4126
|
+
*/
|
|
4127
|
+
checkout(body, options) {
|
|
4128
|
+
return client.fetch("/tip-jar/checkout", {
|
|
4129
|
+
...options,
|
|
4130
|
+
method: "POST",
|
|
4131
|
+
body
|
|
4132
|
+
});
|
|
4133
|
+
},
|
|
4134
|
+
/**
|
|
4135
|
+
* After Stripe returns the tipper (`session_id` on the return URL):
|
|
4136
|
+
* `processing` while a delayed payment clears, then `paid`, with the
|
|
4137
|
+
* amount, the masked receipt email and the thank-you message.
|
|
4138
|
+
*
|
|
4139
|
+
* @example
|
|
4140
|
+
* const s = await board.tipJar.getCheckout(sessionId);
|
|
4141
|
+
* if (s.status === 'paid') showThanks(s.thankYouMessage);
|
|
4142
|
+
*/
|
|
4143
|
+
getCheckout(sessionId, options) {
|
|
4144
|
+
return client.fetch(
|
|
4145
|
+
`/tip-jar/checkout/${encodeURIComponent(sessionId)}`,
|
|
4146
|
+
options
|
|
4147
|
+
);
|
|
4148
|
+
}
|
|
4149
|
+
};
|
|
4150
|
+
}
|
|
4151
|
+
|
|
4034
4152
|
// src/messaging-derive.ts
|
|
4035
4153
|
function isOwnMessage(message, counterpartyId) {
|
|
4036
4154
|
return message.authorBoardUserId !== counterpartyId;
|
|
@@ -4081,6 +4199,44 @@ function resolveApplyAction(state) {
|
|
|
4081
4199
|
return action.kind === "sign-in" ? { kind: "sign-in" } : action;
|
|
4082
4200
|
}
|
|
4083
4201
|
|
|
4202
|
+
// src/job-alert-links.ts
|
|
4203
|
+
var ID = /^[0-9A-Za-z]{16,64}$/;
|
|
4204
|
+
var EMAIL_ID = /^[0-9a-f]{16}$/;
|
|
4205
|
+
var MATCHER_VERSION = /^[a-z0-9-]{1,64}$/;
|
|
4206
|
+
var POSITION = /^[1-9][0-9]{0,2}$/;
|
|
4207
|
+
var MAX_POSITION = 100;
|
|
4208
|
+
function searchParamsOf(url) {
|
|
4209
|
+
if (url instanceof URLSearchParams) return url;
|
|
4210
|
+
if (url instanceof URL) return url.searchParams;
|
|
4211
|
+
if (url.startsWith("?") || !url.includes("/") && url.includes("=")) {
|
|
4212
|
+
return new URLSearchParams(url);
|
|
4213
|
+
}
|
|
4214
|
+
try {
|
|
4215
|
+
return new URL(url, "https://board.invalid").searchParams;
|
|
4216
|
+
} catch {
|
|
4217
|
+
return new URLSearchParams();
|
|
4218
|
+
}
|
|
4219
|
+
}
|
|
4220
|
+
function parseJobAlertClickParams(url) {
|
|
4221
|
+
const params = searchParamsOf(url);
|
|
4222
|
+
const alertId = params.get("ja_alert") ?? "";
|
|
4223
|
+
const emailId = params.get("ja_email") ?? "";
|
|
4224
|
+
const positionRaw = params.get("ja_pos") ?? "";
|
|
4225
|
+
const matcherVersion = params.get("ja_mv") ?? "";
|
|
4226
|
+
const position = POSITION.test(positionRaw) ? Number(positionRaw) : NaN;
|
|
4227
|
+
if (!ID.test(alertId) || !EMAIL_ID.test(emailId) || !MATCHER_VERSION.test(matcherVersion) || !(position >= 1 && position <= MAX_POSITION)) {
|
|
4228
|
+
return null;
|
|
4229
|
+
}
|
|
4230
|
+
return { alertId, emailId, position, matcherVersion };
|
|
4231
|
+
}
|
|
4232
|
+
function parseJobAlertUnsubscribeParams(url) {
|
|
4233
|
+
const params = searchParamsOf(url);
|
|
4234
|
+
const alertId = params.get("ja_alert") ?? "";
|
|
4235
|
+
const emailId = params.get("ja_email") ?? "";
|
|
4236
|
+
if (!ID.test(alertId) || !EMAIL_ID.test(emailId)) return null;
|
|
4237
|
+
return { alertId, emailId };
|
|
4238
|
+
}
|
|
4239
|
+
|
|
4084
4240
|
// src/index.ts
|
|
4085
4241
|
function createBoardClient(options) {
|
|
4086
4242
|
const client = new BoardClient({
|
|
@@ -4144,6 +4300,7 @@ function createBoardClient(options) {
|
|
|
4144
4300
|
paywall: paywallNamespace(client),
|
|
4145
4301
|
products: productsNamespace(client),
|
|
4146
4302
|
purchases: purchasesNamespace(client),
|
|
4303
|
+
tipJar: tipJarNamespace(client),
|
|
4147
4304
|
sitemap: sitemapNamespace(client)
|
|
4148
4305
|
};
|
|
4149
4306
|
}
|
|
@@ -4176,6 +4333,8 @@ export {
|
|
|
4176
4333
|
isValidationError,
|
|
4177
4334
|
lastOwnMessageId,
|
|
4178
4335
|
paginate,
|
|
4336
|
+
parseJobAlertClickParams,
|
|
4337
|
+
parseJobAlertUnsubscribeParams,
|
|
4179
4338
|
parseOAuthCompletion,
|
|
4180
4339
|
resolveApplyAction,
|
|
4181
4340
|
resolveApplyDecision,
|
package/dist/paths.d.mts
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.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