@cavuno/board 1.39.0 → 1.41.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/dist/{_spec-DxC1ze93.d.mts → _spec-l_596ZwW.d.mts} +373 -0
- package/dist/{_spec-DxC1ze93.d.ts → _spec-l_596ZwW.d.ts} +373 -0
- package/dist/bin.mjs +242 -18
- package/dist/{board-RfZEAJse.d.ts → board-BzK5j73O.d.ts} +1 -1
- package/dist/{board-CqYibYUA.d.mts → board-CyHA6rRP.d.mts} +1 -1
- package/dist/doctor.js +238 -14
- package/dist/doctor.mjs +238 -14
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +3 -3
- package/dist/format.d.ts +3 -3
- package/dist/index.d.mts +89 -10
- package/dist/index.d.ts +89 -10
- package/dist/index.js +91 -1
- package/dist/index.mjs +91 -1
- package/dist/{jobs-DPPA1Nev.d.mts → jobs-BhthvMkA.d.mts} +1 -1
- package/dist/{jobs-CLLIvtMc.d.ts → jobs-CXudz1Y4.d.ts} +1 -1
- package/dist/{salaries-DK4RnJnw.d.ts → salaries-ByBuHCLH.d.ts} +2 -2
- package/dist/{salaries-Rb5h_eVZ.d.mts → salaries-Dr_Zugal.d.mts} +2 -2
- package/dist/{search-CqBa1Qc4.d.mts → search-CrIlXSJP.d.mts} +1 -1
- package/dist/{search-DBoMM-gE.d.ts → search-DZrq-k76.d.ts} +1 -1
- package/dist/seo.d.mts +4 -4
- package/dist/seo.d.ts +4 -4
- package/dist/server.d.mts +56 -6
- package/dist/server.d.ts +56 -6
- package/dist/server.js +41 -0
- package/dist/server.mjs +41 -0
- package/dist/sitemap.d.mts +5 -5
- package/dist/sitemap.d.ts +5 -5
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/theme.d.mts +49 -1
- package/dist/theme.d.ts +49 -1
- package/dist/theme.js +60 -26
- package/dist/theme.mjs +60 -26
- package/package.json +1 -1
- package/skills/manifest.json +1 -1
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-l_596ZwW.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-DZrq-k76.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-DZrq-k76.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-BzK5j73O.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-CXudz1Y4.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-CXudz1Y4.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-ByBuHCLH.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-ByBuHCLH.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 = "1.
|
|
144
|
+
declare const SDK_VERSION = "1.41.0";
|
|
145
145
|
|
|
146
146
|
type SavedJob = Schemas['SavedJob'];
|
|
147
147
|
type SavedJobsListQuery = {
|
|
@@ -257,6 +257,12 @@ type CreateCompanyBody = Schemas['CreateCompanyBody'];
|
|
|
257
257
|
type UpdateEmployerCompanyBody = Schemas['UpdateEmployerCompanyBody'];
|
|
258
258
|
type SendWorkEmailBody = Schemas['SendWorkEmailBody'];
|
|
259
259
|
type ConfirmWorkEmailBody = Schemas['ConfirmWorkEmailBody'];
|
|
260
|
+
/**
|
|
261
|
+
* The viewer's per-employer talent entitlement from
|
|
262
|
+
* `board.me.talentAccess.retrieve` — the talent-CTA signal (sourced from the
|
|
263
|
+
* same subscription/credit-pack truth the talent paywall enforces).
|
|
264
|
+
*/
|
|
265
|
+
type TalentAccess = Schemas['TalentAccess'];
|
|
260
266
|
/** Query for `board.me.companies.search`. */
|
|
261
267
|
type EmployerCompanySearchQuery = {
|
|
262
268
|
q: string;
|
|
@@ -274,6 +280,25 @@ type EmployerJobsListQuery = {
|
|
|
274
280
|
/** 1–200 (default 200). */
|
|
275
281
|
limit?: number;
|
|
276
282
|
};
|
|
283
|
+
/**
|
|
284
|
+
* One job's reporting funnel from `board.me.companies.jobStats.retrieve`.
|
|
285
|
+
* `views` / `applyClicks` degrade to `0` on a Tinybird outage (the endpoint
|
|
286
|
+
* never fails on analytics), so a `0` is "no activity" OR "analytics briefly
|
|
287
|
+
* unavailable". `applications` is `null` for an external-apply job.
|
|
288
|
+
*/
|
|
289
|
+
type EmployerJobStat = Schemas['EmployerJobStat'];
|
|
290
|
+
/**
|
|
291
|
+
* One daily bucket from `board.me.companies.jobStats.timeseries`, aggregated
|
|
292
|
+
* across the company's jobs. Zero-filled over the window, ascending by date.
|
|
293
|
+
*/
|
|
294
|
+
type EmployerJobStatsPoint = Schemas['EmployerJobStatsPoint'];
|
|
295
|
+
/** Query for `board.me.companies.jobStats.timeseries`. */
|
|
296
|
+
type EmployerJobStatsTimeseriesQuery = {
|
|
297
|
+
/** Inclusive window start (ISO 8601). Defaults to 30 days before `until`. */
|
|
298
|
+
since?: string;
|
|
299
|
+
/** Exclusive window end (ISO 8601). Defaults to now. */
|
|
300
|
+
until?: string;
|
|
301
|
+
};
|
|
277
302
|
/** A job's full applicant pipeline (job header + stage rail + applicants). */
|
|
278
303
|
type EmployerPipeline = Schemas['EmployerPipeline'];
|
|
279
304
|
/** One applicant on a job's pipeline, with its activity timeline. */
|
|
@@ -657,6 +682,8 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
657
682
|
publicJobSubmission: boolean;
|
|
658
683
|
candidatePaywall: boolean;
|
|
659
684
|
impressum: boolean;
|
|
685
|
+
nativeApplications: boolean;
|
|
686
|
+
messaging: boolean;
|
|
660
687
|
};
|
|
661
688
|
talentDirectoryVisibility: "off" | "public" | "employers_only";
|
|
662
689
|
analytics: {
|
|
@@ -1506,6 +1533,19 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
1506
1533
|
};
|
|
1507
1534
|
}>;
|
|
1508
1535
|
cancelClaim(slug: string, options?: FetchOptions): Promise<void>;
|
|
1536
|
+
retrieve(slug: string, options?: FetchOptions): Promise<{
|
|
1537
|
+
id: string;
|
|
1538
|
+
object: "employer_company";
|
|
1539
|
+
name: string;
|
|
1540
|
+
slug: string;
|
|
1541
|
+
website: string | null;
|
|
1542
|
+
description: string | null;
|
|
1543
|
+
summary: string | null;
|
|
1544
|
+
xUrl: string | null;
|
|
1545
|
+
linkedinUrl: string | null;
|
|
1546
|
+
facebookUrl: string | null;
|
|
1547
|
+
logoUrl: string | null;
|
|
1548
|
+
}>;
|
|
1509
1549
|
update(slug: string, body: UpdateEmployerCompanyBody, options?: FetchOptions): Promise<{
|
|
1510
1550
|
id: string;
|
|
1511
1551
|
object: "employer_company";
|
|
@@ -1519,6 +1559,19 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
1519
1559
|
facebookUrl: string | null;
|
|
1520
1560
|
logoUrl: string | null;
|
|
1521
1561
|
}>;
|
|
1562
|
+
uploadLogo(slug: string, file: Blob, options?: FetchOptions): Promise<{
|
|
1563
|
+
id: string;
|
|
1564
|
+
object: "employer_company";
|
|
1565
|
+
name: string;
|
|
1566
|
+
slug: string;
|
|
1567
|
+
website: string | null;
|
|
1568
|
+
description: string | null;
|
|
1569
|
+
summary: string | null;
|
|
1570
|
+
xUrl: string | null;
|
|
1571
|
+
linkedinUrl: string | null;
|
|
1572
|
+
facebookUrl: string | null;
|
|
1573
|
+
logoUrl: string | null;
|
|
1574
|
+
}>;
|
|
1522
1575
|
workEmail: {
|
|
1523
1576
|
verify(slug: string, body: SendWorkEmailBody, options?: FetchOptions): Promise<{
|
|
1524
1577
|
id: string;
|
|
@@ -1822,6 +1875,21 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
1822
1875
|
renewsAt: string | null;
|
|
1823
1876
|
}>>;
|
|
1824
1877
|
};
|
|
1878
|
+
jobStats: {
|
|
1879
|
+
retrieve(slug: string, options?: FetchOptions): Promise<ListEnvelope<{
|
|
1880
|
+
object: "employer_job_stat";
|
|
1881
|
+
jobId: string;
|
|
1882
|
+
views: number;
|
|
1883
|
+
applyClicks: number;
|
|
1884
|
+
applications: number | null;
|
|
1885
|
+
}>>;
|
|
1886
|
+
timeseries(slug: string, query?: EmployerJobStatsTimeseriesQuery, options?: FetchOptions): Promise<ListEnvelope<{
|
|
1887
|
+
object: "employer_job_stats_point";
|
|
1888
|
+
date: string;
|
|
1889
|
+
views: number;
|
|
1890
|
+
applyClicks: number;
|
|
1891
|
+
}>>;
|
|
1892
|
+
};
|
|
1825
1893
|
applicants: {
|
|
1826
1894
|
list(slug: string, query: EmployerPipelineQuery, options?: FetchOptions): Promise<{
|
|
1827
1895
|
object: "employer_pipeline";
|
|
@@ -1846,6 +1914,15 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
1846
1914
|
reorder(slug: string, body: ReorderPipelineStagesBody, options?: FetchOptions): Promise<void>;
|
|
1847
1915
|
};
|
|
1848
1916
|
};
|
|
1917
|
+
talentAccess: {
|
|
1918
|
+
retrieve(options?: FetchOptions): Promise<{
|
|
1919
|
+
object: "talent_access";
|
|
1920
|
+
isEmployer: boolean;
|
|
1921
|
+
paywallActive: boolean;
|
|
1922
|
+
hasTalentAccess: boolean;
|
|
1923
|
+
hasUnlimitedUnlocks: boolean;
|
|
1924
|
+
}>;
|
|
1925
|
+
};
|
|
1849
1926
|
alerts: {
|
|
1850
1927
|
list(options?: FetchOptions): Promise<ListEnvelope<{
|
|
1851
1928
|
id: string;
|
|
@@ -2883,6 +2960,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
2883
2960
|
title: string;
|
|
2884
2961
|
companyName: string;
|
|
2885
2962
|
companyUrl: string | null;
|
|
2963
|
+
companyLogoUrl: string | null;
|
|
2886
2964
|
location: string | null;
|
|
2887
2965
|
employmentType: string | null;
|
|
2888
2966
|
locationType: string | null;
|
|
@@ -2895,6 +2973,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
2895
2973
|
education: {
|
|
2896
2974
|
institutionName: string;
|
|
2897
2975
|
institutionUrl: string | null;
|
|
2976
|
+
institutionLogoUrl: string | null;
|
|
2898
2977
|
degree: string | null;
|
|
2899
2978
|
fieldOfStudy: string | null;
|
|
2900
2979
|
grade: string | null;
|
|
@@ -2923,4 +3002,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
|
|
|
2923
3002
|
};
|
|
2924
3003
|
type BoardSdk = ReturnType<typeof createBoardClient>;
|
|
2925
3004
|
|
|
2926
|
-
export { type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyBody, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMembership, CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, type LegalEntity, type LegalPageType, ListEnvelope, Logger, type LoginBody, type LogoutBody, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicLegalPage, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type SuggestionsListQuery, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
|
|
3005
|
+
export { type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyBody, Awaitable, BOARD_API_ERROR_CODES, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMembership, CompanySimilarQuery, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type CreateBoardClientOptions, type CreateCompanyBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, type LegalEntity, type LegalPageType, ListEnvelope, Logger, type LoginBody, type LogoutBody, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthExchangeBody, type OAuthProvider, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PublicLegalPage, type PublicPlace, type PublicTaxonomyTerm, type ReadReceipt, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplyBody, type ReportBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type SuggestionsListQuery, type TalentAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentProfile, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePipelineStageBody, type UpdateSkillsBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isUnauthorized, isValidationError, lastOwnMessageId, paginate, resolveApplyAction };
|
package/dist/index.js
CHANGED
|
@@ -312,7 +312,7 @@ async function clearSession(storage) {
|
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
// src/version.ts
|
|
315
|
-
var SDK_VERSION = "1.
|
|
315
|
+
var SDK_VERSION = "1.41.0";
|
|
316
316
|
|
|
317
317
|
// src/client.ts
|
|
318
318
|
function isRawBody(body) {
|
|
@@ -1398,6 +1398,20 @@ function meNamespace(client) {
|
|
|
1398
1398
|
{ ...options, method: "DELETE" }
|
|
1399
1399
|
);
|
|
1400
1400
|
},
|
|
1401
|
+
/**
|
|
1402
|
+
* Retrieve my full editable company profile (summary, socials, logo,
|
|
1403
|
+
* description) — the read half of `update`, for pre-populating an edit
|
|
1404
|
+
* form. Requires an approved membership.
|
|
1405
|
+
*
|
|
1406
|
+
* @example
|
|
1407
|
+
* const company = await board.me.companies.retrieve('acme');
|
|
1408
|
+
*/
|
|
1409
|
+
retrieve(slug, options) {
|
|
1410
|
+
return client.fetch(
|
|
1411
|
+
`/me/companies/${encodeURIComponent(slug)}`,
|
|
1412
|
+
options
|
|
1413
|
+
);
|
|
1414
|
+
},
|
|
1401
1415
|
/**
|
|
1402
1416
|
* Edit my company profile (merge-patch — omitted fields stay
|
|
1403
1417
|
* unchanged). Requires an approved membership. Returns the company.
|
|
@@ -1411,6 +1425,22 @@ function meNamespace(client) {
|
|
|
1411
1425
|
{ ...options, method: "PATCH", body }
|
|
1412
1426
|
);
|
|
1413
1427
|
},
|
|
1428
|
+
/**
|
|
1429
|
+
* Upload + attach my company logo (JPEG/PNG/WebP/GIF, ≤2 MB) via a single
|
|
1430
|
+
* multipart POST. Requires an approved membership. Returns the updated
|
|
1431
|
+
* company with its new `logoUrl`.
|
|
1432
|
+
*
|
|
1433
|
+
* @example
|
|
1434
|
+
* const company = await board.me.companies.uploadLogo('acme', file);
|
|
1435
|
+
*/
|
|
1436
|
+
uploadLogo(slug, file, options) {
|
|
1437
|
+
const form = new FormData();
|
|
1438
|
+
form.append("file", file);
|
|
1439
|
+
return client.fetch(
|
|
1440
|
+
`/me/companies/${encodeURIComponent(slug)}/logo`,
|
|
1441
|
+
{ ...options, method: "POST", body: form }
|
|
1442
|
+
);
|
|
1443
|
+
},
|
|
1414
1444
|
/** The work-email verification state machine for a pending claim. */
|
|
1415
1445
|
workEmail: {
|
|
1416
1446
|
/**
|
|
@@ -1584,6 +1614,47 @@ function meNamespace(client) {
|
|
|
1584
1614
|
);
|
|
1585
1615
|
}
|
|
1586
1616
|
},
|
|
1617
|
+
/**
|
|
1618
|
+
* The read-only reporting funnel that backs the hosted employer jobs
|
|
1619
|
+
* table (doc 35): per-job views / apply clicks / native applications,
|
|
1620
|
+
* plus a daily views+apply-clicks time-series for a chart. Membership-
|
|
1621
|
+
* scoped; never cached. Analytics degrade to zeroes on a Tinybird
|
|
1622
|
+
* outage — the reads never fail on an analytics problem, so a `0` means
|
|
1623
|
+
* "no activity" OR "analytics briefly unavailable".
|
|
1624
|
+
*/
|
|
1625
|
+
jobStats: {
|
|
1626
|
+
/**
|
|
1627
|
+
* Per-job stats across ALL of a company's jobs, one row per job.
|
|
1628
|
+
*
|
|
1629
|
+
* @example
|
|
1630
|
+
* const { data } = await board.me.companies.jobStats.retrieve('acme');
|
|
1631
|
+
* for (const s of data) {
|
|
1632
|
+
* console.log(s.jobId, s.views, s.applyClicks, s.applications);
|
|
1633
|
+
* }
|
|
1634
|
+
*/
|
|
1635
|
+
retrieve(slug, options) {
|
|
1636
|
+
return client.fetch(
|
|
1637
|
+
`/me/companies/${encodeURIComponent(slug)}/job-stats`,
|
|
1638
|
+
options
|
|
1639
|
+
);
|
|
1640
|
+
},
|
|
1641
|
+
/**
|
|
1642
|
+
* Daily buckets of views + apply clicks aggregated across the
|
|
1643
|
+
* company's jobs, to power a chart. Zero-filled over `[since, until]`
|
|
1644
|
+
* (default: last 30 days), ascending by date.
|
|
1645
|
+
*
|
|
1646
|
+
* @example
|
|
1647
|
+
* const { data } = await board.me.companies.jobStats.timeseries('acme', {
|
|
1648
|
+
* since: '2026-06-01T00:00:00Z',
|
|
1649
|
+
* });
|
|
1650
|
+
*/
|
|
1651
|
+
timeseries(slug, query, options) {
|
|
1652
|
+
return client.fetch(
|
|
1653
|
+
`/me/companies/${encodeURIComponent(slug)}/job-stats/timeseries`,
|
|
1654
|
+
{ ...options, query }
|
|
1655
|
+
);
|
|
1656
|
+
}
|
|
1657
|
+
},
|
|
1587
1658
|
/**
|
|
1588
1659
|
* The applicant pipeline (ATS) for a company I am an approved member of
|
|
1589
1660
|
* (doc 35 / ADR-0052 / ADR-0004). Reads return the full pipeline (job
|
|
@@ -1736,6 +1807,25 @@ function meNamespace(client) {
|
|
|
1736
1807
|
}
|
|
1737
1808
|
}
|
|
1738
1809
|
},
|
|
1810
|
+
/**
|
|
1811
|
+
* The viewer's talent entitlement on this board (CAV-243) — "does this
|
|
1812
|
+
* employer have talent access?" for gating a Message-vs-upsell CTA.
|
|
1813
|
+
* Candidates and unaffiliated viewers get `hasTalentAccess: false`.
|
|
1814
|
+
*
|
|
1815
|
+
* @example
|
|
1816
|
+
* const { hasTalentAccess } = await board.me.talentAccess.retrieve();
|
|
1817
|
+
*/
|
|
1818
|
+
talentAccess: {
|
|
1819
|
+
/**
|
|
1820
|
+
* Retrieve the viewer's talent entitlement. Never cache — per-user.
|
|
1821
|
+
*
|
|
1822
|
+
* @example
|
|
1823
|
+
* const access = await board.me.talentAccess.retrieve();
|
|
1824
|
+
*/
|
|
1825
|
+
retrieve(options) {
|
|
1826
|
+
return client.fetch("/me/talent-access", options);
|
|
1827
|
+
}
|
|
1828
|
+
},
|
|
1739
1829
|
/**
|
|
1740
1830
|
* The authenticated board user's job-alert preferences (ADR-0053) —
|
|
1741
1831
|
* a collection (up to 10). Creating one is active immediately (no
|
package/dist/index.mjs
CHANGED
|
@@ -265,7 +265,7 @@ async function clearSession(storage) {
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
// src/version.ts
|
|
268
|
-
var SDK_VERSION = "1.
|
|
268
|
+
var SDK_VERSION = "1.41.0";
|
|
269
269
|
|
|
270
270
|
// src/client.ts
|
|
271
271
|
function isRawBody(body) {
|
|
@@ -1351,6 +1351,20 @@ function meNamespace(client) {
|
|
|
1351
1351
|
{ ...options, method: "DELETE" }
|
|
1352
1352
|
);
|
|
1353
1353
|
},
|
|
1354
|
+
/**
|
|
1355
|
+
* Retrieve my full editable company profile (summary, socials, logo,
|
|
1356
|
+
* description) — the read half of `update`, for pre-populating an edit
|
|
1357
|
+
* form. Requires an approved membership.
|
|
1358
|
+
*
|
|
1359
|
+
* @example
|
|
1360
|
+
* const company = await board.me.companies.retrieve('acme');
|
|
1361
|
+
*/
|
|
1362
|
+
retrieve(slug, options) {
|
|
1363
|
+
return client.fetch(
|
|
1364
|
+
`/me/companies/${encodeURIComponent(slug)}`,
|
|
1365
|
+
options
|
|
1366
|
+
);
|
|
1367
|
+
},
|
|
1354
1368
|
/**
|
|
1355
1369
|
* Edit my company profile (merge-patch — omitted fields stay
|
|
1356
1370
|
* unchanged). Requires an approved membership. Returns the company.
|
|
@@ -1364,6 +1378,22 @@ function meNamespace(client) {
|
|
|
1364
1378
|
{ ...options, method: "PATCH", body }
|
|
1365
1379
|
);
|
|
1366
1380
|
},
|
|
1381
|
+
/**
|
|
1382
|
+
* Upload + attach my company logo (JPEG/PNG/WebP/GIF, ≤2 MB) via a single
|
|
1383
|
+
* multipart POST. Requires an approved membership. Returns the updated
|
|
1384
|
+
* company with its new `logoUrl`.
|
|
1385
|
+
*
|
|
1386
|
+
* @example
|
|
1387
|
+
* const company = await board.me.companies.uploadLogo('acme', file);
|
|
1388
|
+
*/
|
|
1389
|
+
uploadLogo(slug, file, options) {
|
|
1390
|
+
const form = new FormData();
|
|
1391
|
+
form.append("file", file);
|
|
1392
|
+
return client.fetch(
|
|
1393
|
+
`/me/companies/${encodeURIComponent(slug)}/logo`,
|
|
1394
|
+
{ ...options, method: "POST", body: form }
|
|
1395
|
+
);
|
|
1396
|
+
},
|
|
1367
1397
|
/** The work-email verification state machine for a pending claim. */
|
|
1368
1398
|
workEmail: {
|
|
1369
1399
|
/**
|
|
@@ -1537,6 +1567,47 @@ function meNamespace(client) {
|
|
|
1537
1567
|
);
|
|
1538
1568
|
}
|
|
1539
1569
|
},
|
|
1570
|
+
/**
|
|
1571
|
+
* The read-only reporting funnel that backs the hosted employer jobs
|
|
1572
|
+
* table (doc 35): per-job views / apply clicks / native applications,
|
|
1573
|
+
* plus a daily views+apply-clicks time-series for a chart. Membership-
|
|
1574
|
+
* scoped; never cached. Analytics degrade to zeroes on a Tinybird
|
|
1575
|
+
* outage — the reads never fail on an analytics problem, so a `0` means
|
|
1576
|
+
* "no activity" OR "analytics briefly unavailable".
|
|
1577
|
+
*/
|
|
1578
|
+
jobStats: {
|
|
1579
|
+
/**
|
|
1580
|
+
* Per-job stats across ALL of a company's jobs, one row per job.
|
|
1581
|
+
*
|
|
1582
|
+
* @example
|
|
1583
|
+
* const { data } = await board.me.companies.jobStats.retrieve('acme');
|
|
1584
|
+
* for (const s of data) {
|
|
1585
|
+
* console.log(s.jobId, s.views, s.applyClicks, s.applications);
|
|
1586
|
+
* }
|
|
1587
|
+
*/
|
|
1588
|
+
retrieve(slug, options) {
|
|
1589
|
+
return client.fetch(
|
|
1590
|
+
`/me/companies/${encodeURIComponent(slug)}/job-stats`,
|
|
1591
|
+
options
|
|
1592
|
+
);
|
|
1593
|
+
},
|
|
1594
|
+
/**
|
|
1595
|
+
* Daily buckets of views + apply clicks aggregated across the
|
|
1596
|
+
* company's jobs, to power a chart. Zero-filled over `[since, until]`
|
|
1597
|
+
* (default: last 30 days), ascending by date.
|
|
1598
|
+
*
|
|
1599
|
+
* @example
|
|
1600
|
+
* const { data } = await board.me.companies.jobStats.timeseries('acme', {
|
|
1601
|
+
* since: '2026-06-01T00:00:00Z',
|
|
1602
|
+
* });
|
|
1603
|
+
*/
|
|
1604
|
+
timeseries(slug, query, options) {
|
|
1605
|
+
return client.fetch(
|
|
1606
|
+
`/me/companies/${encodeURIComponent(slug)}/job-stats/timeseries`,
|
|
1607
|
+
{ ...options, query }
|
|
1608
|
+
);
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1540
1611
|
/**
|
|
1541
1612
|
* The applicant pipeline (ATS) for a company I am an approved member of
|
|
1542
1613
|
* (doc 35 / ADR-0052 / ADR-0004). Reads return the full pipeline (job
|
|
@@ -1689,6 +1760,25 @@ function meNamespace(client) {
|
|
|
1689
1760
|
}
|
|
1690
1761
|
}
|
|
1691
1762
|
},
|
|
1763
|
+
/**
|
|
1764
|
+
* The viewer's talent entitlement on this board (CAV-243) — "does this
|
|
1765
|
+
* employer have talent access?" for gating a Message-vs-upsell CTA.
|
|
1766
|
+
* Candidates and unaffiliated viewers get `hasTalentAccess: false`.
|
|
1767
|
+
*
|
|
1768
|
+
* @example
|
|
1769
|
+
* const { hasTalentAccess } = await board.me.talentAccess.retrieve();
|
|
1770
|
+
*/
|
|
1771
|
+
talentAccess: {
|
|
1772
|
+
/**
|
|
1773
|
+
* Retrieve the viewer's talent entitlement. Never cache — per-user.
|
|
1774
|
+
*
|
|
1775
|
+
* @example
|
|
1776
|
+
* const access = await board.me.talentAccess.retrieve();
|
|
1777
|
+
*/
|
|
1778
|
+
retrieve(options) {
|
|
1779
|
+
return client.fetch("/me/talent-access", options);
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1692
1782
|
/**
|
|
1693
1783
|
* The authenticated board user's job-alert preferences (ADR-0053) —
|
|
1694
1784
|
* a collection (up to 10). Creating one is active immediately (no
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-l_596ZwW.js';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-CXudz1Y4.js';
|
|
3
3
|
|
|
4
4
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
5
5
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-l_596ZwW.mjs';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-BhthvMkA.mjs';
|
|
3
3
|
|
|
4
4
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
5
5
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
package/dist/seo.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-
|
|
2
|
-
import { P as PublicBoard } from './board-
|
|
3
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-Dr_Zugal.mjs';
|
|
2
|
+
import { P as PublicBoard } from './board-CyHA6rRP.mjs';
|
|
3
|
+
import { P as PublicJob } from './jobs-BhthvMkA.mjs';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.mjs';
|
|
5
|
-
import './_spec-
|
|
5
|
+
import './_spec-l_596ZwW.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-
|
|
2
|
-
import { P as PublicBoard } from './board-
|
|
3
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-ByBuHCLH.js';
|
|
2
|
+
import { P as PublicBoard } from './board-BzK5j73O.js';
|
|
3
|
+
import { P as PublicJob } from './jobs-CXudz1Y4.js';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.js';
|
|
5
|
-
import './_spec-
|
|
5
|
+
import './_spec-l_596ZwW.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
|
package/dist/server.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './salaries-
|
|
2
|
+
import './_spec-l_596ZwW.mjs';
|
|
3
|
+
import './search-CrIlXSJP.mjs';
|
|
4
|
+
import './board-CyHA6rRP.mjs';
|
|
5
|
+
import './jobs-BhthvMkA.mjs';
|
|
6
|
+
import './salaries-Dr_Zugal.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
|
@@ -77,6 +77,56 @@ declare function safeRedirectPath(path: string | undefined | null, defaultPath?:
|
|
|
77
77
|
*/
|
|
78
78
|
declare function currentPathFromReferer(referer: string | null): string;
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* MIG-10 (added scope) — keep `<slug>.cavuno.app` live after a custom-domain
|
|
82
|
+
* cutover by 308-redirecting to the board's canonical custom domain.
|
|
83
|
+
*
|
|
84
|
+
* ## Where this lives (DEVIATION LOUDLY)
|
|
85
|
+
* **Serving-side, not the dispatch edge.** Production hostname→worker
|
|
86
|
+
* routing is the WFP dispatch Worker's KV map (`hostname → workerName`
|
|
87
|
+
* only — see `docs/recipes/ops/wfp-dispatch-custom-domain.md` and
|
|
88
|
+
* `createWfpReleaseDeploy` / `deterministicWorkerName`). That edge has
|
|
89
|
+
* **no board domain data** (no Convex, no primaryDomain). Inventing a
|
|
90
|
+
* second edge datastore for canonical hosts is forbidden by the ticket.
|
|
91
|
+
*
|
|
92
|
+
* Data source: the board's public context already carries
|
|
93
|
+
* `primaryDomain: string | null` (`GET /v1/boards/:id` via
|
|
94
|
+
* `serializeBoardContext`). The starter loads context for every request
|
|
95
|
+
* (theme, features, analytics) — reuse that field. When `primaryDomain`
|
|
96
|
+
* is set, a request whose Host is a `*.cavuno.app` serving host 308s to
|
|
97
|
+
* `https://<primaryDomain><path+query>` in **one hop**. Domainless boards
|
|
98
|
+
* (`primaryDomain === null`) keep **serving** from cavuno.app (no redirect).
|
|
99
|
+
*
|
|
100
|
+
* Wire this helper into the starter's root middleware / entry (the
|
|
101
|
+
* migration starter's host check) with `Response.redirect(url, 308)`.
|
|
102
|
+
* Pure so unit tests pin behaviour without a Worker runtime.
|
|
103
|
+
*
|
|
104
|
+
* Pattern: Vercel `*.vercel.app` / GitHub `github.io` permanent fallback
|
|
105
|
+
* origin — SEO-neutral 308 to the canonical production host.
|
|
106
|
+
*/
|
|
107
|
+
/**
|
|
108
|
+
* True when the request host is a cavuno.app board-serving host
|
|
109
|
+
* (slug or board-hash subdomain), not the apex and not a preview host
|
|
110
|
+
* we deliberately leave alone.
|
|
111
|
+
*/
|
|
112
|
+
declare function isCavunoAppServingHost(hostname: string): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* When a custom-domain board is hit on its cavuno.app fallback origin,
|
|
115
|
+
* return the one-hop 308 Location to the canonical custom domain.
|
|
116
|
+
* Domainless boards (no primaryDomain) return null — serve in place.
|
|
117
|
+
*/
|
|
118
|
+
declare function getCavunoAppCanonicalRedirectUrl(params: {
|
|
119
|
+
currentHost: string | null;
|
|
120
|
+
/**
|
|
121
|
+
* From `board.context().primaryDomain` — the board's active primary
|
|
122
|
+
* custom domain hostname, or null when domainless.
|
|
123
|
+
*/
|
|
124
|
+
primaryDomain: string | null | undefined;
|
|
125
|
+
/** Full request URL or path+query; path+query is preserved on the hop. */
|
|
126
|
+
requestUrl?: string | null;
|
|
127
|
+
defaultPath?: string;
|
|
128
|
+
}): string | null;
|
|
129
|
+
|
|
80
130
|
/**
|
|
81
131
|
* Single-flight session refresh — dedupes concurrent refreshes for the same
|
|
82
132
|
* session WITHIN one process/isolate (the rotation race, ADR-0057 wart #4,
|
|
@@ -111,4 +161,4 @@ declare function currentPathFromReferer(referer: string | null): string;
|
|
|
111
161
|
*/
|
|
112
162
|
declare function createSessionRefresher(board: Pick<BoardSdk, 'auth' | 'client'>): (session: BoardSession) => Promise<BoardSession | null>;
|
|
113
163
|
|
|
114
|
-
export { BOARD_ACCESS_COOKIE_NAME, type BoardSession, SESSION_COOKIE_NAME, clearGrantCookie, clearSessionCookie, createSessionRefresher, currentPathFromReferer, grantCookieName, isExpiringSoon, parseGrantCookie, parseSessionCookie, safeRedirectPath, serializeGrantCookie, serializeSessionCookie, sessionCookieName };
|
|
164
|
+
export { BOARD_ACCESS_COOKIE_NAME, type BoardSession, SESSION_COOKIE_NAME, clearGrantCookie, clearSessionCookie, createSessionRefresher, currentPathFromReferer, getCavunoAppCanonicalRedirectUrl, grantCookieName, isCavunoAppServingHost, isExpiringSoon, parseGrantCookie, parseSessionCookie, safeRedirectPath, serializeGrantCookie, serializeSessionCookie, sessionCookieName };
|