@cavuno/board 2.0.0 → 2.0.1
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 +22 -0
- package/CONTRIBUTING.md +25 -0
- package/LICENSE +21 -0
- package/README.md +12 -7
- package/SECURITY.md +28 -0
- package/TRADEMARKS.md +16 -0
- package/dist/_spec-sW85fuvT.d.mts +2731 -0
- package/dist/_spec-sW85fuvT.d.ts +2731 -0
- package/dist/bin.mjs +16 -348
- package/dist/{board-B8tJGX4i.d.ts → board-DKXyxwNN.d.ts} +2 -2
- package/dist/{board-DmRuCA8m.d.mts → board-QFeHT4UN.d.mts} +2 -2
- package/dist/doctor.d.mts +6 -19
- package/dist/doctor.d.ts +6 -19
- package/dist/doctor.js +16 -344
- package/dist/doctor.mjs +15 -343
- package/dist/filters.d.mts +5 -5
- package/dist/filters.d.ts +5 -5
- package/dist/format.d.mts +17 -19
- package/dist/format.d.ts +17 -19
- package/dist/go.d.mts +2 -2
- package/dist/go.d.ts +2 -2
- package/dist/go.js +1 -1
- package/dist/go.mjs +1 -1
- package/dist/index.d.mts +16 -18
- package/dist/index.d.ts +16 -18
- package/dist/index.js +39 -28
- package/dist/index.mjs +39 -28
- package/dist/{jobs-BEYJY97F.d.ts → jobs-CuRzTDb1.d.mts} +15 -13
- package/dist/{jobs-DJiISpqX.d.mts → jobs-DTnCZGtb.d.ts} +15 -13
- package/dist/paths.d.mts +6 -6
- package/dist/paths.d.ts +6 -6
- package/dist/paths.js +1 -1
- package/dist/paths.mjs +1 -1
- package/dist/roles-vY0AXhoc.d.mts +3 -3
- package/dist/roles-vY0AXhoc.d.ts +3 -3
- package/dist/route-contract.d.mts +16 -16
- package/dist/route-contract.d.ts +16 -16
- package/dist/route-contract.js +1 -1
- package/dist/route-contract.mjs +1 -1
- package/dist/{salaries-D6q7h1J6.d.ts → salaries-BOpR51Ny.d.mts} +3 -3
- package/dist/{salaries-B_Xb5k2s.d.mts → salaries-QoNpzRCT.d.ts} +3 -3
- package/dist/{search-CnOIZEuc.d.ts → search-B5ROY6PK.d.ts} +2 -2
- package/dist/{search-uC_ijbdu.d.mts → search-f93nrSg3.d.mts} +2 -2
- package/dist/seo.d.mts +17 -18
- package/dist/seo.d.ts +17 -18
- package/dist/server.d.mts +14 -32
- package/dist/server.d.ts +14 -32
- package/dist/sitemap.d.mts +7 -7
- package/dist/sitemap.d.ts +7 -7
- package/dist/sitemap.js +4 -2
- package/dist/sitemap.mjs +4 -2
- package/dist/skills.d.mts +1 -1
- package/dist/skills.d.ts +1 -1
- package/dist/skills.js +1 -1
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/theme.d.mts +10 -13
- package/dist/theme.d.ts +10 -13
- package/dist/theme.js +1 -1
- package/dist/theme.mjs +1 -1
- package/dist/{ui-copy-CKfFTtLk.d.mts → ui-copy-CL-VN1xb.d.mts} +2 -3
- package/dist/{ui-copy-CKfFTtLk.d.ts → ui-copy-CL-VN1xb.d.ts} +2 -3
- package/dist/well-known.d.mts +3 -3
- package/dist/well-known.d.ts +3 -3
- package/dist/well-known.js +1 -1
- package/dist/well-known.mjs +1 -1
- package/package.json +46 -38
- package/skills/cavuno-board-client/SKILL.md +1 -2
- package/skills/cavuno-board-filters/SKILL.md +2 -2
- package/skills/cavuno-board-format/SKILL.md +1 -1
- package/skills/cavuno-board-i18n/SKILL.md +3 -3
- package/skills/cavuno-board-job-posting/SKILL.md +1 -1
- package/skills/cavuno-board-messaging/SKILL.md +2 -3
- package/skills/cavuno-board-paywall/SKILL.md +1 -1
- package/skills/cavuno-board-salaries/SKILL.md +1 -1
- package/skills/cavuno-board-seo/SKILL.md +4 -6
- package/skills/cavuno-board-server/SKILL.md +1 -1
- package/skills/cavuno-board-setup/SKILL.md +2 -1
- package/skills/cavuno-board-sitemap/SKILL.md +1 -1
- package/skills/cavuno-board-smoke-test/SKILL.md +4 -13
- package/skills/flavors/tanstack-start/SKILL.md +1 -2
- package/skills/manifest.json +1 -1
- package/dist/_spec-C7vqY_b3.d.mts +0 -5202
- package/dist/_spec-C7vqY_b3.d.ts +0 -5202
package/dist/go.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure `/go` indirection for self-deployed SDK boards
|
|
2
|
+
* Pure `/go` indirection for self-deployed SDK boards.
|
|
3
3
|
*
|
|
4
4
|
* Mirrors the hosted-app contract:
|
|
5
5
|
* - `/go/job/<id>` → 302 to jobDetailPath(companySlug, jobSlug)
|
|
@@ -25,7 +25,7 @@ interface GoRedirectResult {
|
|
|
25
25
|
*
|
|
26
26
|
* When `lookupJob` is omitted, `/go/job/<id>` degrades to the jobs index
|
|
27
27
|
* (safe, never 404). Pass a custom lookup when a data-plane endpoint lands
|
|
28
|
-
* (see TODO
|
|
28
|
+
* (see TODO).
|
|
29
29
|
*/
|
|
30
30
|
type GoJobLookup = (jobId: string) => Promise<ResolvedJobSlugs | null> | ResolvedJobSlugs | null;
|
|
31
31
|
interface CreateGoHandlerConfig {
|
package/dist/go.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Pure `/go` indirection for self-deployed SDK boards
|
|
2
|
+
* Pure `/go` indirection for self-deployed SDK boards.
|
|
3
3
|
*
|
|
4
4
|
* Mirrors the hosted-app contract:
|
|
5
5
|
* - `/go/job/<id>` → 302 to jobDetailPath(companySlug, jobSlug)
|
|
@@ -25,7 +25,7 @@ interface GoRedirectResult {
|
|
|
25
25
|
*
|
|
26
26
|
* When `lookupJob` is omitted, `/go/job/<id>` degrades to the jobs index
|
|
27
27
|
* (safe, never 404). Pass a custom lookup when a data-plane endpoint lands
|
|
28
|
-
* (see TODO
|
|
28
|
+
* (see TODO).
|
|
29
29
|
*/
|
|
30
30
|
type GoJobLookup = (jobId: string) => Promise<ResolvedJobSlugs | null> | ResolvedJobSlugs | null;
|
|
31
31
|
interface CreateGoHandlerConfig {
|
package/dist/go.js
CHANGED
|
@@ -48,7 +48,7 @@ var BOARD_PATHS = {
|
|
|
48
48
|
talent: "/talent",
|
|
49
49
|
employers: "/employers",
|
|
50
50
|
/**
|
|
51
|
-
* Alert-email surfaces
|
|
51
|
+
* Alert-email surfaces. Promoted out of raw literals in
|
|
52
52
|
* the job-alerts composer so /go indirection and email composition share
|
|
53
53
|
* one definition.
|
|
54
54
|
*/
|
package/dist/go.mjs
CHANGED
|
@@ -20,7 +20,7 @@ var BOARD_PATHS = {
|
|
|
20
20
|
talent: "/talent",
|
|
21
21
|
employers: "/employers",
|
|
22
22
|
/**
|
|
23
|
-
* Alert-email surfaces
|
|
23
|
+
* Alert-email surfaces. Promoted out of raw literals in
|
|
24
24
|
* the job-alerts composer so /go indirection and email composition share
|
|
25
25
|
* one definition.
|
|
26
26
|
*/
|
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { S as Schemas, c as components } from './_spec-
|
|
2
|
-
import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-
|
|
3
|
-
export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-
|
|
4
|
-
export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-
|
|
5
|
-
import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-
|
|
6
|
-
export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-
|
|
7
|
-
import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-
|
|
8
|
-
export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-
|
|
1
|
+
import { S as Schemas, c as components } from './_spec-sW85fuvT.mjs';
|
|
2
|
+
import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-f93nrSg3.mjs';
|
|
3
|
+
export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-f93nrSg3.mjs';
|
|
4
|
+
export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-QFeHT4UN.mjs';
|
|
5
|
+
import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-CuRzTDb1.mjs';
|
|
6
|
+
export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-CuRzTDb1.mjs';
|
|
7
|
+
import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-BOpR51Ny.mjs';
|
|
8
|
+
export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-BOpR51Ny.mjs';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
|
|
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
141
141
|
* constant because the package is platform-neutral and cannot read
|
|
142
142
|
* package.json at runtime.
|
|
143
143
|
*/
|
|
144
|
-
declare const SDK_VERSION = "2.0.
|
|
144
|
+
declare const SDK_VERSION = "2.0.1";
|
|
145
145
|
|
|
146
146
|
type SavedJob = Schemas['SavedJob'];
|
|
147
147
|
type SavedJobsListQuery = {
|
|
@@ -282,9 +282,9 @@ type EmployerJobsListQuery = {
|
|
|
282
282
|
};
|
|
283
283
|
/**
|
|
284
284
|
* One job's reporting funnel from `board.me.companies.jobStats.retrieve`.
|
|
285
|
-
* `views` / `applyClicks` degrade to `0`
|
|
286
|
-
*
|
|
287
|
-
*
|
|
285
|
+
* `views` / `applyClicks` degrade to `0` when reporting data is temporarily
|
|
286
|
+
* unavailable, so a `0` is "no activity" OR "analytics briefly unavailable".
|
|
287
|
+
* `applications` is `null` for an external-apply job.
|
|
288
288
|
*/
|
|
289
289
|
type EmployerJobStat = Schemas['EmployerJobStat'];
|
|
290
290
|
/**
|
|
@@ -345,7 +345,7 @@ type EmployerCheckout = Schemas['EmployerCheckout'];
|
|
|
345
345
|
type EmployerCheckoutBody = Schemas['EmployerCheckoutBody'];
|
|
346
346
|
|
|
347
347
|
/**
|
|
348
|
-
* Pure derivations for a message thread
|
|
348
|
+
* Pure derivations for a message thread — kept out of
|
|
349
349
|
* components so the fiddly bits (own-vs-counterparty, the cold-message rule,
|
|
350
350
|
* the seen target) are unit-testable without a DOM. A message is "own" when
|
|
351
351
|
* its author is not the counterparty (works even before the counterparty has
|
|
@@ -365,7 +365,7 @@ declare function isColdRule(messages: Message[], counterpartyId: string): boolea
|
|
|
365
365
|
declare function lastOwnMessageId(messages: Message[], counterpartyId: string): string | null;
|
|
366
366
|
|
|
367
367
|
/**
|
|
368
|
-
* The apply-decision ladder
|
|
368
|
+
* The apply-decision ladder as a pure function — a core-entry
|
|
369
369
|
* derive export like `messaging-derive`, so security/logic fixes ship via
|
|
370
370
|
* the versioned package instead of re-copied registry files. Unit-testable
|
|
371
371
|
* independent of React. Mirrors the hosted board's rule: an external
|
|
@@ -465,7 +465,7 @@ type BoardAccessGrant = Schemas['BoardAccessGrant'];
|
|
|
465
465
|
type RedirectResolution = Schemas['RedirectResolution'];
|
|
466
466
|
|
|
467
467
|
/**
|
|
468
|
-
* A board legal/about page
|
|
468
|
+
* A board legal/about page. The
|
|
469
469
|
* API serves owner-authored prose as portable HTML; the starter authors the
|
|
470
470
|
* layout + JSON-LD. Impressum additionally carries structured legal-entity
|
|
471
471
|
* facts and is gated by the board's `impressumEnabled` flag (404 when off).
|
|
@@ -598,7 +598,7 @@ type JobAlertDeletePreferenceInput = {
|
|
|
598
598
|
|
|
599
599
|
/** A board plan for the job-submission wizard. The `id` is the `selectedPlan`. */
|
|
600
600
|
type JobPostingPlan = Schemas['JobPostingPlan'];
|
|
601
|
-
/** The body of `board.jobPosting.create(...)
|
|
601
|
+
/** The body of `board.jobPosting.create(...)`. */
|
|
602
602
|
type CreateJobPostingInput = Schemas['CreateJobPostingBody'];
|
|
603
603
|
/**
|
|
604
604
|
* The status-discriminated outcome of a submission: `checkout` (a Stripe
|
|
@@ -694,7 +694,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
694
694
|
logoUrl: string | null;
|
|
695
695
|
primaryDomain: string | null;
|
|
696
696
|
showCavunoBranding: boolean;
|
|
697
|
-
sandbox: boolean;
|
|
698
697
|
features: {
|
|
699
698
|
jobAlerts: boolean;
|
|
700
699
|
candidates: boolean;
|
|
@@ -753,7 +752,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
753
752
|
url: string;
|
|
754
753
|
}[];
|
|
755
754
|
};
|
|
756
|
-
themeSnapshotHash: string | null;
|
|
757
755
|
}>;
|
|
758
756
|
/**
|
|
759
757
|
* Board SEO infra — `ads.txt`, IndexNow key, Google site-verification, and
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { S as Schemas, c as components } from './_spec-
|
|
2
|
-
import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-
|
|
3
|
-
export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-
|
|
4
|
-
export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-
|
|
5
|
-
import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-
|
|
6
|
-
export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-
|
|
7
|
-
import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-
|
|
8
|
-
export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-
|
|
1
|
+
import { S as Schemas, c as components } from './_spec-sW85fuvT.js';
|
|
2
|
+
import { F as FetchOptions, c as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, d as BoardClient, a as SearchSuggestQuery } from './search-B5ROY6PK.js';
|
|
3
|
+
export { e as ACCESS_TOKEN_KEY, f as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, g as CustomStorage, R as REFRESH_TOKEN_KEY, b as SuggestResult, S as SuggestionItem, T as TermSuggestion } from './search-B5ROY6PK.js';
|
|
4
|
+
export { C as CustomFieldDefinition, a as CustomFieldOption, b as CustomFieldType, P as PublicBoard, c as PublicBoardAnalytics, d as PublicBoardFeatures, e as PublicBoardTheme } from './board-DKXyxwNN.js';
|
|
5
|
+
import { R as RemoteOption, E as EmploymentType, S as Seniority, L as ListEnvelope, b as JobsListQuery, c as JobCardListEnvelope, d as JobsSearchBody, e as JobCardSearchEnvelope, f as JobsSimilarQuery, g as SearchEnvelope } from './jobs-DTnCZGtb.js';
|
|
6
|
+
export { h as CustomFieldValue, C as CustomFieldValues, i as EducationRequirement, j as JobCatalogPagination, k as JobCompany, J as JobSort, O as OfficeLocation, l as OffsetPagination, P as PublicJob, a as PublicJobCard, m as RelatedSearch, n as RemotePermit, o as RemoteTimezone, p as StorefrontPagination } from './jobs-DTnCZGtb.js';
|
|
7
|
+
import { b as CompaniesListQuery, c as CompanyListEnvelope, d as CompaniesSearchBody, e as CompanyJobsListQuery, f as CompanySimilarQuery, g as CompanyMarketsListQuery, h as SalaryDetailQuery, i as BlogPostsListQuery, j as BlogSimilarQuery, k as BlogSearchBody } from './salaries-QoNpzRCT.js';
|
|
8
|
+
export { B as BlogAuthorEmbed, l as BlogTagEmbed, C as CompanyCategorySalary, m as CompanyMarket, n as CompanyMarketRef, a as CompanySalary, L as LocationSalaryDetail, o as LocationSkillsIndex, p as LocationTitlesIndex, q as PublicBlogAdjacentPosts, r as PublicBlogAuthor, s as PublicBlogPost, P as PublicBlogPostSummary, t as PublicBlogTag, u as PublicCompany, v as PublicCompanyDetail, w as SalaryCompany, x as SalaryLocation, y as SalarySkill, z as SalaryTitle, A as SkillLocationSalary, D as SkillLocationsIndex, S as SkillSalaryDetail, E as TitleLocationSalary, F as TitleLocationsIndex, T as TitleSalaryDetail } from './salaries-QoNpzRCT.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
|
|
@@ -141,7 +141,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
141
141
|
* constant because the package is platform-neutral and cannot read
|
|
142
142
|
* package.json at runtime.
|
|
143
143
|
*/
|
|
144
|
-
declare const SDK_VERSION = "2.0.
|
|
144
|
+
declare const SDK_VERSION = "2.0.1";
|
|
145
145
|
|
|
146
146
|
type SavedJob = Schemas['SavedJob'];
|
|
147
147
|
type SavedJobsListQuery = {
|
|
@@ -282,9 +282,9 @@ type EmployerJobsListQuery = {
|
|
|
282
282
|
};
|
|
283
283
|
/**
|
|
284
284
|
* One job's reporting funnel from `board.me.companies.jobStats.retrieve`.
|
|
285
|
-
* `views` / `applyClicks` degrade to `0`
|
|
286
|
-
*
|
|
287
|
-
*
|
|
285
|
+
* `views` / `applyClicks` degrade to `0` when reporting data is temporarily
|
|
286
|
+
* unavailable, so a `0` is "no activity" OR "analytics briefly unavailable".
|
|
287
|
+
* `applications` is `null` for an external-apply job.
|
|
288
288
|
*/
|
|
289
289
|
type EmployerJobStat = Schemas['EmployerJobStat'];
|
|
290
290
|
/**
|
|
@@ -345,7 +345,7 @@ type EmployerCheckout = Schemas['EmployerCheckout'];
|
|
|
345
345
|
type EmployerCheckoutBody = Schemas['EmployerCheckoutBody'];
|
|
346
346
|
|
|
347
347
|
/**
|
|
348
|
-
* Pure derivations for a message thread
|
|
348
|
+
* Pure derivations for a message thread — kept out of
|
|
349
349
|
* components so the fiddly bits (own-vs-counterparty, the cold-message rule,
|
|
350
350
|
* the seen target) are unit-testable without a DOM. A message is "own" when
|
|
351
351
|
* its author is not the counterparty (works even before the counterparty has
|
|
@@ -365,7 +365,7 @@ declare function isColdRule(messages: Message[], counterpartyId: string): boolea
|
|
|
365
365
|
declare function lastOwnMessageId(messages: Message[], counterpartyId: string): string | null;
|
|
366
366
|
|
|
367
367
|
/**
|
|
368
|
-
* The apply-decision ladder
|
|
368
|
+
* The apply-decision ladder as a pure function — a core-entry
|
|
369
369
|
* derive export like `messaging-derive`, so security/logic fixes ship via
|
|
370
370
|
* the versioned package instead of re-copied registry files. Unit-testable
|
|
371
371
|
* independent of React. Mirrors the hosted board's rule: an external
|
|
@@ -465,7 +465,7 @@ type BoardAccessGrant = Schemas['BoardAccessGrant'];
|
|
|
465
465
|
type RedirectResolution = Schemas['RedirectResolution'];
|
|
466
466
|
|
|
467
467
|
/**
|
|
468
|
-
* A board legal/about page
|
|
468
|
+
* A board legal/about page. The
|
|
469
469
|
* API serves owner-authored prose as portable HTML; the starter authors the
|
|
470
470
|
* layout + JSON-LD. Impressum additionally carries structured legal-entity
|
|
471
471
|
* facts and is gated by the board's `impressumEnabled` flag (404 when off).
|
|
@@ -598,7 +598,7 @@ type JobAlertDeletePreferenceInput = {
|
|
|
598
598
|
|
|
599
599
|
/** A board plan for the job-submission wizard. The `id` is the `selectedPlan`. */
|
|
600
600
|
type JobPostingPlan = Schemas['JobPostingPlan'];
|
|
601
|
-
/** The body of `board.jobPosting.create(...)
|
|
601
|
+
/** The body of `board.jobPosting.create(...)`. */
|
|
602
602
|
type CreateJobPostingInput = Schemas['CreateJobPostingBody'];
|
|
603
603
|
/**
|
|
604
604
|
* The status-discriminated outcome of a submission: `checkout` (a Stripe
|
|
@@ -694,7 +694,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
694
694
|
logoUrl: string | null;
|
|
695
695
|
primaryDomain: string | null;
|
|
696
696
|
showCavunoBranding: boolean;
|
|
697
|
-
sandbox: boolean;
|
|
698
697
|
features: {
|
|
699
698
|
jobAlerts: boolean;
|
|
700
699
|
candidates: boolean;
|
|
@@ -753,7 +752,6 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
753
752
|
url: string;
|
|
754
753
|
}[];
|
|
755
754
|
};
|
|
756
|
-
themeSnapshotHash: string | null;
|
|
757
755
|
}>;
|
|
758
756
|
/**
|
|
759
757
|
* Board SEO infra — `ads.txt`, IndexNow key, Google site-verification, and
|
package/dist/index.js
CHANGED
|
@@ -312,12 +312,24 @@ async function clearSession(storage) {
|
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
// src/version.ts
|
|
315
|
-
var SDK_VERSION = "2.0.
|
|
315
|
+
var SDK_VERSION = "2.0.1";
|
|
316
316
|
|
|
317
317
|
// src/client.ts
|
|
318
318
|
function isRawBody(body) {
|
|
319
319
|
return typeof body === "string" || body instanceof URLSearchParams || typeof FormData !== "undefined" && body instanceof FormData || typeof Blob !== "undefined" && body instanceof Blob || body instanceof ArrayBuffer || typeof ReadableStream !== "undefined" && body instanceof ReadableStream;
|
|
320
320
|
}
|
|
321
|
+
function redactUrlForLog(value) {
|
|
322
|
+
try {
|
|
323
|
+
const url = new URL(value);
|
|
324
|
+
for (const key of new Set(url.searchParams.keys())) {
|
|
325
|
+
url.searchParams.delete(key);
|
|
326
|
+
url.searchParams.set(key, "[REDACTED]");
|
|
327
|
+
}
|
|
328
|
+
return url.toString();
|
|
329
|
+
} catch {
|
|
330
|
+
return value.replace(/([?&][^=&#]+)=([^&#]*)/g, "$1=[REDACTED]");
|
|
331
|
+
}
|
|
332
|
+
}
|
|
321
333
|
var BoardClient = class {
|
|
322
334
|
storage;
|
|
323
335
|
basePath;
|
|
@@ -369,9 +381,10 @@ var BoardClient = class {
|
|
|
369
381
|
init: { ...passthrough, method, headers, body: serializedBody }
|
|
370
382
|
};
|
|
371
383
|
if (this.options.onRequest) req = await this.options.onRequest(req);
|
|
372
|
-
|
|
384
|
+
const logUrl = redactUrlForLog(req.url);
|
|
385
|
+
this.options.logger?.debug(`${method} ${logUrl}`);
|
|
373
386
|
const res = await globalThis.fetch(req.url, req.init);
|
|
374
|
-
this.options.logger?.debug(`${res.status} ${method} ${
|
|
387
|
+
this.options.logger?.debug(`${res.status} ${method} ${logUrl}`);
|
|
375
388
|
if (this.options.onResponse)
|
|
376
389
|
await this.options.onResponse(res.clone(), req);
|
|
377
390
|
if (res.status === 204) return void 0;
|
|
@@ -397,7 +410,7 @@ var BoardClient = class {
|
|
|
397
410
|
raw: parsed
|
|
398
411
|
});
|
|
399
412
|
this.options.logger?.error(
|
|
400
|
-
`${error.status} ${error.code} ${method} ${
|
|
413
|
+
`${error.status} ${error.code} ${method} ${logUrl}`
|
|
401
414
|
);
|
|
402
415
|
throw error;
|
|
403
416
|
}
|
|
@@ -1052,7 +1065,7 @@ function jobsNamespace(client) {
|
|
|
1052
1065
|
);
|
|
1053
1066
|
},
|
|
1054
1067
|
/**
|
|
1055
|
-
* Apply to a job natively
|
|
1068
|
+
* Apply to a job natively. Optional auth: a signed-in candidate
|
|
1056
1069
|
* applies from their profile (omit name/email); a guest supplies them
|
|
1057
1070
|
* (allowed only when the board permits applications without sign-up).
|
|
1058
1071
|
* Idempotent — a repeat apply returns the existing application.
|
|
@@ -1150,8 +1163,8 @@ function meNamespace(client) {
|
|
|
1150
1163
|
return client.fetch("/me", { ...options, method: "DELETE" });
|
|
1151
1164
|
},
|
|
1152
1165
|
/**
|
|
1153
|
-
* The authenticated candidate's own account self-service
|
|
1154
|
-
* `profile.*` is the lean profile singleton +
|
|
1166
|
+
* The authenticated candidate's own account self-service.
|
|
1167
|
+
* `profile.*` is the lean profile singleton + its
|
|
1155
1168
|
* experience / education / skills / languages collections + avatar.
|
|
1156
1169
|
*/
|
|
1157
1170
|
profile: {
|
|
@@ -1299,7 +1312,7 @@ function meNamespace(client) {
|
|
|
1299
1312
|
},
|
|
1300
1313
|
/**
|
|
1301
1314
|
* Signed-in notification preferences + the anonymous email-link
|
|
1302
|
-
* unsubscribe branch
|
|
1315
|
+
* unsubscribe branch.
|
|
1303
1316
|
*/
|
|
1304
1317
|
notificationPreferences: {
|
|
1305
1318
|
/** List every notification channel + its subscribed state. */
|
|
@@ -1329,7 +1342,7 @@ function meNamespace(client) {
|
|
|
1329
1342
|
}
|
|
1330
1343
|
},
|
|
1331
1344
|
/**
|
|
1332
|
-
* The authenticated board user's employer facet
|
|
1345
|
+
* The authenticated board user's employer facet:
|
|
1333
1346
|
* claiming/creating a company, the work-email verification state machine,
|
|
1334
1347
|
* and editing the company profile. A board user becomes an employer by
|
|
1335
1348
|
* claiming a company — the same identity can also be a candidate.
|
|
@@ -1474,8 +1487,7 @@ function meNamespace(client) {
|
|
|
1474
1487
|
}
|
|
1475
1488
|
},
|
|
1476
1489
|
/**
|
|
1477
|
-
* Manage the jobs of a company I am an approved member of
|
|
1478
|
-
* ADR-0052). Every method is scoped to the company `slug`. New jobs are
|
|
1490
|
+
* Manage the jobs of a company I am an approved member of . Every method is scoped to the company `slug`. New jobs are
|
|
1479
1491
|
* created as held drafts — publishing is `publish` (within a live paid
|
|
1480
1492
|
* window) or the paid-post checkout flow.
|
|
1481
1493
|
*/
|
|
@@ -1575,7 +1587,7 @@ function meNamespace(client) {
|
|
|
1575
1587
|
);
|
|
1576
1588
|
},
|
|
1577
1589
|
/**
|
|
1578
|
-
* Pay for / publish a held draft
|
|
1590
|
+
* Pay for / publish a held draft. Select billing: a paid plan
|
|
1579
1591
|
* returns `{ status: 'checkout', checkoutUrl }` (send the buyer there;
|
|
1580
1592
|
* the webhook publishes on payment); a free / bundle / subscription plan
|
|
1581
1593
|
* publishes immediately (`status: 'published'`); an invoice plan emails a
|
|
@@ -1616,10 +1628,10 @@ function meNamespace(client) {
|
|
|
1616
1628
|
},
|
|
1617
1629
|
/**
|
|
1618
1630
|
* The read-only reporting funnel that backs the hosted employer jobs
|
|
1619
|
-
* table
|
|
1631
|
+
* table: per-job views / apply clicks / native applications,
|
|
1620
1632
|
* plus a daily views+apply-clicks time-series for a chart. Membership-
|
|
1621
|
-
* scoped; never cached. Analytics degrade to zeroes
|
|
1622
|
-
*
|
|
1633
|
+
* scoped; never cached. Analytics degrade to zeroes when reporting data
|
|
1634
|
+
* is temporarily unavailable, so a `0` means
|
|
1623
1635
|
* "no activity" OR "analytics briefly unavailable".
|
|
1624
1636
|
*/
|
|
1625
1637
|
jobStats: {
|
|
@@ -1656,7 +1668,7 @@ function meNamespace(client) {
|
|
|
1656
1668
|
}
|
|
1657
1669
|
},
|
|
1658
1670
|
/**
|
|
1659
|
-
* Company-profile page views
|
|
1671
|
+
* Company-profile page views for the employer dashboard's
|
|
1660
1672
|
* "profile views" metric — visits to the company profile page ITSELF
|
|
1661
1673
|
* (`/companies/{slug}`, tab subpaths and bots excluded), NOT job details.
|
|
1662
1674
|
* Membership-scoped; never cached; degrades to `0` / an empty series on
|
|
@@ -1695,7 +1707,7 @@ function meNamespace(client) {
|
|
|
1695
1707
|
},
|
|
1696
1708
|
/**
|
|
1697
1709
|
* The applicant pipeline (ATS) for a company I am an approved member of
|
|
1698
|
-
*
|
|
1710
|
+
* Reads return the full pipeline (job
|
|
1699
1711
|
* header + stage rail + applicants with timelines); the move/reject/note
|
|
1700
1712
|
* writes resolve void — re-read the pipeline for fresh state, mirroring
|
|
1701
1713
|
* the hosted portal's single reactive query.
|
|
@@ -1846,7 +1858,7 @@ function meNamespace(client) {
|
|
|
1846
1858
|
}
|
|
1847
1859
|
},
|
|
1848
1860
|
/**
|
|
1849
|
-
* The viewer's talent entitlement on this board
|
|
1861
|
+
* The viewer's talent entitlement on this board — "does this
|
|
1850
1862
|
* employer have talent access?" for gating a Message-vs-upsell CTA.
|
|
1851
1863
|
* Candidates and unaffiliated viewers get `hasTalentAccess: false`.
|
|
1852
1864
|
*
|
|
@@ -1865,7 +1877,7 @@ function meNamespace(client) {
|
|
|
1865
1877
|
}
|
|
1866
1878
|
},
|
|
1867
1879
|
/**
|
|
1868
|
-
* The authenticated board user's job-alert preferences
|
|
1880
|
+
* The authenticated board user's job-alert preferences —
|
|
1869
1881
|
* a collection (up to 10). Creating one is active immediately (no
|
|
1870
1882
|
* double opt-in — the authenticated action is the consent). There is no
|
|
1871
1883
|
* pause: `remove` is the only way to stop an alert.
|
|
@@ -1939,7 +1951,7 @@ function meNamespace(client) {
|
|
|
1939
1951
|
}
|
|
1940
1952
|
},
|
|
1941
1953
|
/**
|
|
1942
|
-
* The authenticated candidate's applications
|
|
1954
|
+
* The authenticated candidate's applications. Apply itself lives
|
|
1943
1955
|
* on the job (`board.jobs.apply` — it is optional-auth); these manage the
|
|
1944
1956
|
* applications the candidate has already submitted, keyed by `applicationId`.
|
|
1945
1957
|
*/
|
|
@@ -1995,7 +2007,7 @@ function meNamespace(client) {
|
|
|
1995
2007
|
}
|
|
1996
2008
|
},
|
|
1997
2009
|
/**
|
|
1998
|
-
* The candidate's resume
|
|
2010
|
+
* The candidate's resume. `upload` starts an async parse that
|
|
1999
2011
|
* auto-populates the profile — it returns `parseStatus: 'parsing'`; poll
|
|
2000
2012
|
* `retrieve()` until `parsed`/`failed`, then re-read `profile.*`.
|
|
2001
2013
|
*/
|
|
@@ -2086,7 +2098,7 @@ function meNamespace(client) {
|
|
|
2086
2098
|
}
|
|
2087
2099
|
},
|
|
2088
2100
|
/**
|
|
2089
|
-
* The authenticated board user's messaging inbox
|
|
2101
|
+
* The authenticated board user's messaging inbox.
|
|
2090
2102
|
* The v1 surface is polled REST — there is no realtime primitive; poll
|
|
2091
2103
|
* `list` / `listMessages` / `unreadCount` on an interval (3–5s is the
|
|
2092
2104
|
* reference cadence) for near-live updates.
|
|
@@ -2224,7 +2236,7 @@ function meNamespace(client) {
|
|
|
2224
2236
|
);
|
|
2225
2237
|
},
|
|
2226
2238
|
/**
|
|
2227
|
-
* The existing employer↔candidate conversation id (or null).
|
|
2239
|
+
* The existing employer↔candidate conversation id (or null).
|
|
2228
2240
|
* talent-contact helper — route to an existing thread instead of opening
|
|
2229
2241
|
* a composer.
|
|
2230
2242
|
*
|
|
@@ -2239,7 +2251,7 @@ function meNamespace(client) {
|
|
|
2239
2251
|
}
|
|
2240
2252
|
},
|
|
2241
2253
|
/**
|
|
2242
|
-
* Blocking
|
|
2254
|
+
* Blocking: list / add / remove blocks + a status check.
|
|
2243
2255
|
*/
|
|
2244
2256
|
blocks: {
|
|
2245
2257
|
/**
|
|
@@ -2277,7 +2289,7 @@ function meNamespace(client) {
|
|
|
2277
2289
|
);
|
|
2278
2290
|
},
|
|
2279
2291
|
/**
|
|
2280
|
-
* Whether I've blocked a user
|
|
2292
|
+
* Whether I've blocked a user.
|
|
2281
2293
|
*
|
|
2282
2294
|
* @example
|
|
2283
2295
|
* const { blocked } = await board.me.blocks.status(boardUserId);
|
|
@@ -2290,7 +2302,7 @@ function meNamespace(client) {
|
|
|
2290
2302
|
}
|
|
2291
2303
|
},
|
|
2292
2304
|
/**
|
|
2293
|
-
* Message-scoped actions
|
|
2305
|
+
* Message-scoped actions: edit / unsend your own messages
|
|
2294
2306
|
* (15-minute window), and report a message addressed to you.
|
|
2295
2307
|
*/
|
|
2296
2308
|
messages: {
|
|
@@ -2336,8 +2348,7 @@ function meNamespace(client) {
|
|
|
2336
2348
|
}
|
|
2337
2349
|
},
|
|
2338
2350
|
/**
|
|
2339
|
-
* The candidate job-access paywall — the authenticated money flow (
|
|
2340
|
-
* ADR-0056). Enumerate offers publicly with `board.paywall.offers()`, then
|
|
2351
|
+
* The candidate job-access paywall — the authenticated money flow . Enumerate offers publicly with `board.paywall.offers()`, then
|
|
2341
2352
|
* `checkout` here; poll `retrieveCheckout` until complete and confirm with
|
|
2342
2353
|
* `grant`. The SDK stays Stripe-agnostic — `checkout` returns a mount kit
|
|
2343
2354
|
* and the frontend brings `@stripe/stripe-js`.
|