@cavuno/board 4.44.0 → 4.45.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{_spec-CLxrfYJb.d.mts → _spec-CdNZDaaR.d.mts} +16 -0
  3. package/dist/{_spec-CLxrfYJb.d.ts → _spec-CdNZDaaR.d.ts} +16 -0
  4. package/dist/bin.mjs +179 -14
  5. package/dist/{blog-mlhJ6UcD.d.ts → blog-ZvLJ6w1Q.d.ts} +1 -1
  6. package/dist/{blog-CQ40QX7l.d.mts → blog-uV51b4Cg.d.mts} +1 -1
  7. package/dist/{board-DWFDeICw.d.ts → board-3JU14eF3.d.ts} +2 -2
  8. package/dist/{board-TOzb2D8c.d.mts → board-CJw-MJpf.d.mts} +2 -2
  9. package/dist/{breadcrumbs-DauM7O7_.d.mts → breadcrumbs-BY1UMCbL.d.mts} +2 -2
  10. package/dist/{breadcrumbs-DJHyzBji.d.ts → breadcrumbs-CXvdv6Ry.d.ts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/doctor.d.mts +1 -0
  13. package/dist/doctor.d.ts +1 -0
  14. package/dist/doctor.js +179 -14
  15. package/dist/doctor.mjs +179 -14
  16. package/dist/filters.d.mts +2 -2
  17. package/dist/filters.d.ts +2 -2
  18. package/dist/format.d.mts +4 -4
  19. package/dist/format.d.ts +4 -4
  20. package/dist/index.d.mts +31 -12
  21. package/dist/index.d.ts +31 -12
  22. package/dist/index.js +25 -1
  23. package/dist/index.mjs +25 -1
  24. package/dist/{jobs-DZVMzBOQ.d.ts → jobs-C7UvN_dW.d.ts} +1 -1
  25. package/dist/{jobs-CjQM8EPT.d.mts → jobs-D9ERWWda.d.mts} +1 -1
  26. package/dist/{search-BtBE6iJO.d.mts → search-BMSNK85o.d.mts} +1 -1
  27. package/dist/{search-CF_wa20h.d.ts → search-D0TFnn1x.d.ts} +1 -1
  28. package/dist/{seo-0bfk63qi.d.mts → seo-C3WmgifR.d.mts} +1 -1
  29. package/dist/{seo-CU9LpWH7.d.ts → seo-CYmVKHsu.d.ts} +1 -1
  30. package/dist/seo-files.d.mts +25 -3
  31. package/dist/seo-files.d.ts +25 -3
  32. package/dist/seo-files.js +44 -10
  33. package/dist/seo-files.mjs +44 -10
  34. package/dist/seo.d.mts +6 -6
  35. package/dist/seo.d.ts +6 -6
  36. package/dist/server.d.mts +6 -6
  37. package/dist/server.d.ts +6 -6
  38. package/dist/sitemap.d.mts +6 -6
  39. package/dist/sitemap.d.ts +6 -6
  40. package/dist/suggest.d.mts +2 -2
  41. package/dist/suggest.d.ts +2 -2
  42. package/package.json +1 -1
  43. package/skills/cavuno-board-filters/SKILL.md +13 -0
  44. package/skills/cavuno-board-i18n/SKILL.md +10 -0
  45. package/skills/manifest.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-CLxrfYJb.js';
2
- import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CF_wa20h.js';
3
- export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-CF_wa20h.js';
4
- import { L as ListEnvelope, R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-DZVMzBOQ.js';
5
- export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-DZVMzBOQ.js';
6
- import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-DWFDeICw.js';
7
- export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-DWFDeICw.js';
8
- export { B as BoardSeo } from './seo-CU9LpWH7.js';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-mlhJ6UcD.js';
10
- export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-mlhJ6UcD.js';
1
+ import { S as Schemas, c as components } from './_spec-CdNZDaaR.js';
2
+ import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-D0TFnn1x.js';
3
+ export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-D0TFnn1x.js';
4
+ import { L as ListEnvelope, R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-C7UvN_dW.js';
5
+ export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-C7UvN_dW.js';
6
+ import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-3JU14eF3.js';
7
+ export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-3JU14eF3.js';
8
+ export { B as BoardSeo } from './seo-CYmVKHsu.js';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-ZvLJ6w1Q.js';
10
+ export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-ZvLJ6w1Q.js';
11
11
 
12
12
  /**
13
13
  * Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
@@ -202,7 +202,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
202
202
  * constant because the package is platform-neutral and cannot read
203
203
  * package.json at runtime.
204
204
  */
205
- declare const SDK_VERSION = "4.44.0";
205
+ declare const SDK_VERSION = "4.45.0";
206
206
 
207
207
  type SavedJob = Schemas['SavedJob'];
208
208
  type SavedJobsListQuery = {
@@ -1019,6 +1019,22 @@ type TalentDirectoryQuery = {
1019
1019
  objectReferences?: ObjectReferenceFilter[];
1020
1020
  };
1021
1021
  type TalentDirectoryListEnvelope = ListEnvelope<TalentDirectoryEntry>;
1022
+ /**
1023
+ * A place the board's directory candidates live in, with how many of them
1024
+ * the viewer can see there: a candidate counts in their home place and every
1025
+ * place above it. Its `slug` is the directory's `place` filter value.
1026
+ */
1027
+ type TalentPlace = Schemas['PublicTalentPlace'];
1028
+ type TalentPlacesQuery = {
1029
+ /**
1030
+ * Location search, as on `taxonomy.places.list`: ≥2 chars → places whose
1031
+ * name contains it or whose slug starts with it, ranked; under 2 → empty.
1032
+ */
1033
+ q?: string;
1034
+ /** 1–500, default 100, busiest first. With `q`: default 10, at most 50. */
1035
+ limit?: number;
1036
+ };
1037
+ type TalentPlacesListEnvelope = ListEnvelope<TalentPlace>;
1022
1038
 
1023
1039
  /**
1024
1040
  * A board plan (employer or job-seeker pricing). `purpose` says what the plan
@@ -4168,6 +4184,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4168
4184
  };
4169
4185
  objectReferences: components["schemas"]["ResolvedProfileObjectReference"][];
4170
4186
  }>;
4187
+ places: {
4188
+ list(query?: TalentPlacesQuery, options?: FetchOptions): Promise<TalentPlacesListEnvelope>;
4189
+ };
4171
4190
  };
4172
4191
  profileFields: {
4173
4192
  retrieve(entity: ProfileFieldEntity, options?: FetchOptions): Promise<{
@@ -4200,4 +4219,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4200
4219
  };
4201
4220
  type BoardSdk = ReturnType<typeof createBoardClient>;
4202
4221
 
4203
- export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type AddTalentListMemberBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, type ApplyIntent, type AudienceAttribution, type AvailableSignInMethods, Awaitable, BOARD_API_ERROR_CODES, type BindingStorage, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSitemapBucketSummary, type BoardSitemapIndex, type BoardUser, type BuiltInSignInMethod, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type CategoryListQuery, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMemberInvitePreview, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type ConvertSourcedCandidateBody, type CreateAlertBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, 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, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, 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, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, type LocationResolveInput, type LocationSearchQuery, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthCompletion, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PreviewCompanyMemberInviteBody, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicLocation, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SIGN_IN_REDIRECT_ERROR_CODES, SSO_LINK_PROOF_BINDING_TTL_MS, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type SignInRedirectErrorCode, type SignInRole, type SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type SsoAuthorizationQuery, type SsoAuthorizationUrl, type SsoLinkProofBindingStore, type SsoLinkProofBody, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, type TalentListMember, type TalentListMembersListEnvelope, type TalentListMembersQuery, type TalentListMembership, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isSignInMethodUnavailable, isSsoBrowserMismatch, isSsoRequired, isUnauthorized, isValidationError, lastOwnMessageId, paginate, parseOAuthCompletion, resolveApplyAction, resolveApplyDecision, ssoLinkProofBindingStore };
4222
+ export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type AddTalentListMemberBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, type ApplyIntent, type AudienceAttribution, type AvailableSignInMethods, Awaitable, BOARD_API_ERROR_CODES, type BindingStorage, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSitemapBucketSummary, type BoardSitemapIndex, type BoardUser, type BuiltInSignInMethod, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type CategoryListQuery, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMemberInvitePreview, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type ConvertSourcedCandidateBody, type CreateAlertBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, 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, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, 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, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, type LocationResolveInput, type LocationSearchQuery, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthCompletion, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PreviewCompanyMemberInviteBody, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicLocation, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SIGN_IN_REDIRECT_ERROR_CODES, SSO_LINK_PROOF_BINDING_TTL_MS, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type SignInRedirectErrorCode, type SignInRole, type SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type SsoAuthorizationQuery, type SsoAuthorizationUrl, type SsoLinkProofBindingStore, type SsoLinkProofBody, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, type TalentListMember, type TalentListMembersListEnvelope, type TalentListMembersQuery, type TalentListMembership, type TalentPlace, type TalentPlacesListEnvelope, type TalentPlacesQuery, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isSignInMethodUnavailable, isSsoBrowserMismatch, isSsoRequired, isUnauthorized, isValidationError, lastOwnMessageId, paginate, parseOAuthCompletion, resolveApplyAction, resolveApplyDecision, ssoLinkProofBindingStore };
package/dist/index.js CHANGED
@@ -405,7 +405,7 @@ async function clearSession(storage) {
405
405
  }
406
406
 
407
407
  // src/version.ts
408
- var SDK_VERSION = "4.44.0";
408
+ var SDK_VERSION = "4.45.0";
409
409
 
410
410
  // src/client.ts
411
411
  function isRawBody(body) {
@@ -3885,6 +3885,30 @@ function talentNamespace(client) {
3885
3885
  `/talent/${encodeURIComponent(handle)}`,
3886
3886
  options
3887
3887
  );
3888
+ },
3889
+ places: {
3890
+ /**
3891
+ * List the places the board's directory candidates live in, busiest
3892
+ * first, each with how many candidates the caller can see there (a
3893
+ * country counts every candidate in its cities). Anonymous callers get
3894
+ * counts of `public` profiles; a signed-in board user also counts
3895
+ * `logged_in_only` ones. Pass a place's `slug` as `talent.list`'s
3896
+ * `place` filter. With `q`, returns location search matches instead,
3897
+ * ranked as `taxonomy.places.list` ranks them.
3898
+ *
3899
+ * Same access errors as `talent.list`. Returns an empty list until the
3900
+ * board's place counts are built.
3901
+ *
3902
+ * @example
3903
+ * const { data: places } = await board.talent.places.list({ limit: 50 });
3904
+ * const { data: matches } = await board.talent.places.list({ q: 'lon' });
3905
+ */
3906
+ list(query, options) {
3907
+ return client.fetch("/talent/places", {
3908
+ ...options,
3909
+ query
3910
+ });
3911
+ }
3888
3912
  }
3889
3913
  };
3890
3914
  }
package/dist/index.mjs CHANGED
@@ -46,7 +46,7 @@ function toSearchParams(query) {
46
46
  }
47
47
 
48
48
  // src/version.ts
49
- var SDK_VERSION = "4.44.0";
49
+ var SDK_VERSION = "4.45.0";
50
50
 
51
51
  // src/client.ts
52
52
  function isRawBody(body) {
@@ -3526,6 +3526,30 @@ function talentNamespace(client) {
3526
3526
  `/talent/${encodeURIComponent(handle)}`,
3527
3527
  options
3528
3528
  );
3529
+ },
3530
+ places: {
3531
+ /**
3532
+ * List the places the board's directory candidates live in, busiest
3533
+ * first, each with how many candidates the caller can see there (a
3534
+ * country counts every candidate in its cities). Anonymous callers get
3535
+ * counts of `public` profiles; a signed-in board user also counts
3536
+ * `logged_in_only` ones. Pass a place's `slug` as `talent.list`'s
3537
+ * `place` filter. With `q`, returns location search matches instead,
3538
+ * ranked as `taxonomy.places.list` ranks them.
3539
+ *
3540
+ * Same access errors as `talent.list`. Returns an empty list until the
3541
+ * board's place counts are built.
3542
+ *
3543
+ * @example
3544
+ * const { data: places } = await board.talent.places.list({ limit: 50 });
3545
+ * const { data: matches } = await board.talent.places.list({ q: 'lon' });
3546
+ */
3547
+ list(query, options) {
3548
+ return client.fetch("/talent/places", {
3549
+ ...options,
3550
+ query
3551
+ });
3552
+ }
3529
3553
  }
3530
3554
  };
3531
3555
  }
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.js';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.mjs';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.mjs';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.js';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.mjs';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.mjs';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CLxrfYJb.js';
1
+ import { S as Schemas } from './_spec-CdNZDaaR.js';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-0bfk63qi.mjs';
2
- import './_spec-CLxrfYJb.mjs';
1
+ import { B as BoardSeo } from './seo-C3WmgifR.mjs';
2
+ import './_spec-CdNZDaaR.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -18,13 +18,35 @@ declare const INDEXNOW_CACHE_CONTROL = "public, max-age=86400, must-revalidate";
18
18
  type SeoFileResponseInit = {
19
19
  method?: string;
20
20
  };
21
+ /**
22
+ * The board's own listing roots, for boards that rename or localize their
23
+ * URL words (for example `/vacatures` in place of `/jobs`). Each root scopes
24
+ * one group of pagination `Disallow` rules. A missing, root (`/`) or unsafe
25
+ * value keeps the default English root for that group.
26
+ */
27
+ type RobotsListingPaths = {
28
+ jobs?: string | null;
29
+ companies?: string | null;
30
+ talent?: string | null;
31
+ };
21
32
  /** Lines of the hosted robots body (no sitemap line). Exported so tests and hosted can share the literal. */
22
33
  declare function robotsBody(input: {
23
34
  canonicalBase: string;
24
35
  sandbox?: boolean;
36
+ listingPaths?: RobotsListingPaths | null;
37
+ /**
38
+ * Listing roots of the board's secondary languages, served under a
39
+ * language prefix with that language's own URL words (for example
40
+ * `/de/stellen`). Each safe root adds one group of pagination rules after
41
+ * the base ones, in order. A missing, root or unsafe value adds nothing,
42
+ * and a root already listed is not repeated.
43
+ */
44
+ localeListingPaths?: readonly RobotsListingPaths[] | null;
25
45
  }): string;
26
46
  declare function robotsResponse(seo: Pick<BoardSeo, 'canonicalBase'> & {
27
47
  sandbox?: boolean;
48
+ listingPaths?: RobotsListingPaths | null;
49
+ localeListingPaths?: readonly RobotsListingPaths[] | null;
28
50
  }, init?: SeoFileResponseInit): Response;
29
51
  declare function adsTxtResponse(seo: Pick<BoardSeo, 'adsTxt'>, init?: SeoFileResponseInit): Response;
30
52
  declare function indexNowResponse(seo: Pick<BoardSeo, 'indexNowKey'>, init?: SeoFileResponseInit): Response;
@@ -33,4 +55,4 @@ declare function googleSiteVerificationMeta(token: string | null | undefined): {
33
55
  content: string;
34
56
  } | null;
35
57
 
36
- export { ADS_TXT_CACHE_CONTROL, INDEXNOW_CACHE_CONTROL, ROBOTS_CACHE_CONTROL, SEO_FILE_CONTENT_TYPE, type SeoFileResponseInit, adsTxtResponse, googleSiteVerificationMeta, indexNowResponse, robotsBody, robotsResponse };
58
+ export { ADS_TXT_CACHE_CONTROL, INDEXNOW_CACHE_CONTROL, ROBOTS_CACHE_CONTROL, type RobotsListingPaths, SEO_FILE_CONTENT_TYPE, type SeoFileResponseInit, adsTxtResponse, googleSiteVerificationMeta, indexNowResponse, robotsBody, robotsResponse };
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-CU9LpWH7.js';
2
- import './_spec-CLxrfYJb.js';
1
+ import { B as BoardSeo } from './seo-CYmVKHsu.js';
2
+ import './_spec-CdNZDaaR.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -18,13 +18,35 @@ declare const INDEXNOW_CACHE_CONTROL = "public, max-age=86400, must-revalidate";
18
18
  type SeoFileResponseInit = {
19
19
  method?: string;
20
20
  };
21
+ /**
22
+ * The board's own listing roots, for boards that rename or localize their
23
+ * URL words (for example `/vacatures` in place of `/jobs`). Each root scopes
24
+ * one group of pagination `Disallow` rules. A missing, root (`/`) or unsafe
25
+ * value keeps the default English root for that group.
26
+ */
27
+ type RobotsListingPaths = {
28
+ jobs?: string | null;
29
+ companies?: string | null;
30
+ talent?: string | null;
31
+ };
21
32
  /** Lines of the hosted robots body (no sitemap line). Exported so tests and hosted can share the literal. */
22
33
  declare function robotsBody(input: {
23
34
  canonicalBase: string;
24
35
  sandbox?: boolean;
36
+ listingPaths?: RobotsListingPaths | null;
37
+ /**
38
+ * Listing roots of the board's secondary languages, served under a
39
+ * language prefix with that language's own URL words (for example
40
+ * `/de/stellen`). Each safe root adds one group of pagination rules after
41
+ * the base ones, in order. A missing, root or unsafe value adds nothing,
42
+ * and a root already listed is not repeated.
43
+ */
44
+ localeListingPaths?: readonly RobotsListingPaths[] | null;
25
45
  }): string;
26
46
  declare function robotsResponse(seo: Pick<BoardSeo, 'canonicalBase'> & {
27
47
  sandbox?: boolean;
48
+ listingPaths?: RobotsListingPaths | null;
49
+ localeListingPaths?: readonly RobotsListingPaths[] | null;
28
50
  }, init?: SeoFileResponseInit): Response;
29
51
  declare function adsTxtResponse(seo: Pick<BoardSeo, 'adsTxt'>, init?: SeoFileResponseInit): Response;
30
52
  declare function indexNowResponse(seo: Pick<BoardSeo, 'indexNowKey'>, init?: SeoFileResponseInit): Response;
@@ -33,4 +55,4 @@ declare function googleSiteVerificationMeta(token: string | null | undefined): {
33
55
  content: string;
34
56
  } | null;
35
57
 
36
- export { ADS_TXT_CACHE_CONTROL, INDEXNOW_CACHE_CONTROL, ROBOTS_CACHE_CONTROL, SEO_FILE_CONTENT_TYPE, type SeoFileResponseInit, adsTxtResponse, googleSiteVerificationMeta, indexNowResponse, robotsBody, robotsResponse };
58
+ export { ADS_TXT_CACHE_CONTROL, INDEXNOW_CACHE_CONTROL, ROBOTS_CACHE_CONTROL, type RobotsListingPaths, SEO_FILE_CONTENT_TYPE, type SeoFileResponseInit, adsTxtResponse, googleSiteVerificationMeta, indexNowResponse, robotsBody, robotsResponse };
package/dist/seo-files.js CHANGED
@@ -35,25 +35,54 @@ var SEO_FILE_CONTENT_TYPE = "text/plain; charset=utf-8";
35
35
  var ROBOTS_CACHE_CONTROL = "public, max-age=600, s-maxage=14400, stale-while-revalidate=86400";
36
36
  var ADS_TXT_CACHE_CONTROL = "public, max-age=3600, must-revalidate";
37
37
  var INDEXNOW_CACHE_CONTROL = "public, max-age=86400, must-revalidate";
38
+ var DEFAULT_LISTING_PATHS = {
39
+ jobs: "/jobs",
40
+ companies: "/companies",
41
+ talent: "/talent"
42
+ };
43
+ var SAFE_LISTING_ROOT = /^(?:\/[^\s/*$?#]+)+$/;
44
+ function safeListingRoot(value) {
45
+ if (typeof value !== "string") return null;
46
+ const root = value.replace(/\/+$/, "");
47
+ return SAFE_LISTING_ROOT.test(root) ? root : null;
48
+ }
49
+ function listingRoot(value, fallback) {
50
+ return safeListingRoot(value) ?? fallback;
51
+ }
52
+ var LISTING_GROUPS = ["jobs", "companies", "talent"];
53
+ function paginationRules(root) {
54
+ return [
55
+ `Disallow: ${root}?page=`,
56
+ `Disallow: ${root}*&page=`,
57
+ `Disallow: ${root}/*?page=`
58
+ ];
59
+ }
38
60
  function robotsBody(input) {
39
61
  if (input.sandbox) {
40
62
  return ["User-Agent: *", "Disallow: /", ""].join("\n");
41
63
  }
42
64
  const canonicalBase = input.canonicalBase.replace(/\/+$/, "");
65
+ const paths = input.listingPaths ?? {};
66
+ const baseRoots = LISTING_GROUPS.map(
67
+ (group) => listingRoot(paths[group], DEFAULT_LISTING_PATHS[group])
68
+ );
69
+ const seen = new Set(baseRoots);
70
+ const localeRoots = [];
71
+ for (const locale of input.localeListingPaths ?? []) {
72
+ for (const group of LISTING_GROUPS) {
73
+ const root = safeListingRoot(locale[group]);
74
+ if (root === null || seen.has(root)) continue;
75
+ seen.add(root);
76
+ localeRoots.push(root);
77
+ }
78
+ }
43
79
  return [
44
80
  "User-Agent: *",
45
81
  "Allow: /",
46
82
  "Disallow: /go/",
47
83
  "Disallow: /t/",
48
- "Disallow: /jobs?page=",
49
- "Disallow: /jobs*&page=",
50
- "Disallow: /jobs/*?page=",
51
- "Disallow: /companies?page=",
52
- "Disallow: /companies*&page=",
53
- "Disallow: /companies/*?page=",
54
- "Disallow: /talent?page=",
55
- "Disallow: /talent*&page=",
56
- "Disallow: /talent/*?page=",
84
+ ...baseRoots.flatMap(paginationRules),
85
+ ...localeRoots.flatMap(paginationRules),
57
86
  "",
58
87
  `Sitemap: ${canonicalBase}/sitemap.xml`,
59
88
  ""
@@ -61,7 +90,12 @@ function robotsBody(input) {
61
90
  }
62
91
  function robotsResponse(seo, init) {
63
92
  return textFileResponse(
64
- robotsBody({ canonicalBase: seo.canonicalBase, sandbox: seo.sandbox }),
93
+ robotsBody({
94
+ canonicalBase: seo.canonicalBase,
95
+ sandbox: seo.sandbox,
96
+ listingPaths: seo.listingPaths,
97
+ localeListingPaths: seo.localeListingPaths
98
+ }),
65
99
  ROBOTS_CACHE_CONTROL,
66
100
  init
67
101
  );
@@ -3,25 +3,54 @@ var SEO_FILE_CONTENT_TYPE = "text/plain; charset=utf-8";
3
3
  var ROBOTS_CACHE_CONTROL = "public, max-age=600, s-maxage=14400, stale-while-revalidate=86400";
4
4
  var ADS_TXT_CACHE_CONTROL = "public, max-age=3600, must-revalidate";
5
5
  var INDEXNOW_CACHE_CONTROL = "public, max-age=86400, must-revalidate";
6
+ var DEFAULT_LISTING_PATHS = {
7
+ jobs: "/jobs",
8
+ companies: "/companies",
9
+ talent: "/talent"
10
+ };
11
+ var SAFE_LISTING_ROOT = /^(?:\/[^\s/*$?#]+)+$/;
12
+ function safeListingRoot(value) {
13
+ if (typeof value !== "string") return null;
14
+ const root = value.replace(/\/+$/, "");
15
+ return SAFE_LISTING_ROOT.test(root) ? root : null;
16
+ }
17
+ function listingRoot(value, fallback) {
18
+ return safeListingRoot(value) ?? fallback;
19
+ }
20
+ var LISTING_GROUPS = ["jobs", "companies", "talent"];
21
+ function paginationRules(root) {
22
+ return [
23
+ `Disallow: ${root}?page=`,
24
+ `Disallow: ${root}*&page=`,
25
+ `Disallow: ${root}/*?page=`
26
+ ];
27
+ }
6
28
  function robotsBody(input) {
7
29
  if (input.sandbox) {
8
30
  return ["User-Agent: *", "Disallow: /", ""].join("\n");
9
31
  }
10
32
  const canonicalBase = input.canonicalBase.replace(/\/+$/, "");
33
+ const paths = input.listingPaths ?? {};
34
+ const baseRoots = LISTING_GROUPS.map(
35
+ (group) => listingRoot(paths[group], DEFAULT_LISTING_PATHS[group])
36
+ );
37
+ const seen = new Set(baseRoots);
38
+ const localeRoots = [];
39
+ for (const locale of input.localeListingPaths ?? []) {
40
+ for (const group of LISTING_GROUPS) {
41
+ const root = safeListingRoot(locale[group]);
42
+ if (root === null || seen.has(root)) continue;
43
+ seen.add(root);
44
+ localeRoots.push(root);
45
+ }
46
+ }
11
47
  return [
12
48
  "User-Agent: *",
13
49
  "Allow: /",
14
50
  "Disallow: /go/",
15
51
  "Disallow: /t/",
16
- "Disallow: /jobs?page=",
17
- "Disallow: /jobs*&page=",
18
- "Disallow: /jobs/*?page=",
19
- "Disallow: /companies?page=",
20
- "Disallow: /companies*&page=",
21
- "Disallow: /companies/*?page=",
22
- "Disallow: /talent?page=",
23
- "Disallow: /talent*&page=",
24
- "Disallow: /talent/*?page=",
52
+ ...baseRoots.flatMap(paginationRules),
53
+ ...localeRoots.flatMap(paginationRules),
25
54
  "",
26
55
  `Sitemap: ${canonicalBase}/sitemap.xml`,
27
56
  ""
@@ -29,7 +58,12 @@ function robotsBody(input) {
29
58
  }
30
59
  function robotsResponse(seo, init) {
31
60
  return textFileResponse(
32
- robotsBody({ canonicalBase: seo.canonicalBase, sandbox: seo.sandbox }),
61
+ robotsBody({
62
+ canonicalBase: seo.canonicalBase,
63
+ sandbox: seo.sandbox,
64
+ listingPaths: seo.listingPaths,
65
+ localeListingPaths: seo.localeListingPaths
66
+ }),
33
67
  ROBOTS_CACHE_CONTROL,
34
68
  init
35
69
  );
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CQ40QX7l.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-DauM7O7_.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-DauM7O7_.mjs';
4
- import './_spec-CLxrfYJb.mjs';
5
- import './board-TOzb2D8c.mjs';
6
- import './jobs-CjQM8EPT.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-uV51b4Cg.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-BY1UMCbL.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-BY1UMCbL.mjs';
4
+ import './_spec-CdNZDaaR.mjs';
5
+ import './board-CJw-MJpf.mjs';
6
+ import './jobs-D9ERWWda.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-mlhJ6UcD.js';
2
- import { e as JsonLdObject } from './breadcrumbs-DJHyzBji.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-DJHyzBji.js';
4
- import './_spec-CLxrfYJb.js';
5
- import './board-DWFDeICw.js';
6
- import './jobs-DZVMzBOQ.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-ZvLJ6w1Q.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-CXvdv6Ry.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-CXvdv6Ry.js';
4
+ import './_spec-CdNZDaaR.js';
5
+ import './board-3JU14eF3.js';
6
+ import './jobs-C7UvN_dW.js';
7
7
 
8
8
  /**
9
9
  * Blog structured data on the `@cavuno/board` wire types, transcribed from
package/dist/server.d.mts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-CLxrfYJb.mjs';
3
- import './search-BtBE6iJO.mjs';
4
- import './jobs-CjQM8EPT.mjs';
5
- import './board-TOzb2D8c.mjs';
6
- import './seo-0bfk63qi.mjs';
7
- import './blog-CQ40QX7l.mjs';
2
+ import './_spec-CdNZDaaR.mjs';
3
+ import './search-BMSNK85o.mjs';
4
+ import './jobs-D9ERWWda.mjs';
5
+ import './board-CJw-MJpf.mjs';
6
+ import './seo-C3WmgifR.mjs';
7
+ import './blog-uV51b4Cg.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-CLxrfYJb.js';
3
- import './search-CF_wa20h.js';
4
- import './jobs-DZVMzBOQ.js';
5
- import './board-DWFDeICw.js';
6
- import './seo-CU9LpWH7.js';
7
- import './blog-mlhJ6UcD.js';
2
+ import './_spec-CdNZDaaR.js';
3
+ import './search-D0TFnn1x.js';
4
+ import './jobs-C7UvN_dW.js';
5
+ import './board-3JU14eF3.js';
6
+ import './seo-CYmVKHsu.js';
7
+ import './blog-ZvLJ6w1Q.js';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
@@ -1,10 +1,10 @@
1
1
  import { BoardSdk } from './index.mjs';
2
- import './_spec-CLxrfYJb.mjs';
3
- import './search-BtBE6iJO.mjs';
4
- import './jobs-CjQM8EPT.mjs';
5
- import './board-TOzb2D8c.mjs';
6
- import './seo-0bfk63qi.mjs';
7
- import './blog-CQ40QX7l.mjs';
2
+ import './_spec-CdNZDaaR.mjs';
3
+ import './search-BMSNK85o.mjs';
4
+ import './jobs-D9ERWWda.mjs';
5
+ import './board-CJw-MJpf.mjs';
6
+ import './seo-C3WmgifR.mjs';
7
+ import './blog-uV51b4Cg.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-CLxrfYJb.js';
3
- import './search-CF_wa20h.js';
4
- import './jobs-DZVMzBOQ.js';
5
- import './board-DWFDeICw.js';
6
- import './seo-CU9LpWH7.js';
7
- import './blog-mlhJ6UcD.js';
2
+ import './_spec-CdNZDaaR.js';
3
+ import './search-D0TFnn1x.js';
4
+ import './jobs-C7UvN_dW.js';
5
+ import './board-3JU14eF3.js';
6
+ import './seo-CYmVKHsu.js';
7
+ import './blog-ZvLJ6w1Q.js';
8
8
 
9
9
  /**
10
10
  * Sitemap primitives — the pure XML + bucket-filename logic behind a board
@@ -1,5 +1,5 @@
1
- import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-BtBE6iJO.mjs';
2
- import './_spec-CLxrfYJb.mjs';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-BMSNK85o.mjs';
2
+ import './_spec-CdNZDaaR.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-CF_wa20h.js';
2
- import './_spec-CLxrfYJb.js';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-D0TFnn1x.js';
2
+ import './_spec-CdNZDaaR.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/suggest` — framework-agnostic headless search-suggest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cavuno/board",
3
- "version": "4.44.0",
3
+ "version": "4.45.0",
4
4
  "description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -150,6 +150,19 @@ const { items } = await board.search.suggest({
150
150
  The host router owns URL serialization and saved-filter persistence.
151
151
  Locations come from `board.taxonomy.places` rather than a static filter export.
152
152
 
153
+ A talent directory's location filter lists the places where the board's
154
+ candidates live instead, from `board.talent.places.list()`, with the count the
155
+ viewer can see. Pass `q` to search it for a location box (same matching as
156
+ `board.taxonomy.places.list`'s `q`). Pass the chosen `slug` as the directory's
157
+ `place`:
158
+
159
+ ```ts snippet
160
+ const { data: talentPlaces } = await board.talent.places.list({ limit: 50 });
161
+ const nearby = await board.talent.list({ place: talentPlaces[0]?.slug ?? undefined });
162
+
163
+ void nearby.data;
164
+ ```
165
+
153
166
  ## Filter jobs by a job custom field
154
167
 
155
168
  The operator's job custom fields arrive as definitions on