@cavuno/board 4.31.1 → 4.32.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 (36) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{_spec-BD5My4zL.d.mts → _spec-BdqHycDm.d.mts} +14 -0
  3. package/dist/{_spec-BD5My4zL.d.ts → _spec-BdqHycDm.d.ts} +14 -0
  4. package/dist/{blog-Dh-Ru5QZ.d.mts → blog-CE0g5csE.d.mts} +1 -1
  5. package/dist/{blog-CcLmN5Tw.d.ts → blog-D85cD8W0.d.ts} +1 -1
  6. package/dist/{board-CF66EdYi.d.ts → board-CEsr8xMh.d.ts} +2 -2
  7. package/dist/{board-BRWS1m6D.d.mts → board-CdG7z-Vq.d.mts} +2 -2
  8. package/dist/{breadcrumbs-AEupw3fi.d.mts → breadcrumbs-B3n9k95M.d.mts} +2 -2
  9. package/dist/{breadcrumbs-Bu1lN6qA.d.ts → breadcrumbs-DmVbf4_6.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/filters.d.mts +2 -2
  12. package/dist/filters.d.ts +2 -2
  13. package/dist/format.d.mts +4 -4
  14. package/dist/format.d.ts +4 -4
  15. package/dist/index.d.mts +12 -11
  16. package/dist/index.d.ts +12 -11
  17. package/dist/index.js +6 -2
  18. package/dist/index.mjs +6 -2
  19. package/dist/{jobs-BPTMfkal.d.mts → jobs-COOBWXWV.d.mts} +1 -1
  20. package/dist/{jobs-BbtjrUo2.d.ts → jobs-DbZuagy-.d.ts} +1 -1
  21. package/dist/{search-CqPIHkv8.d.ts → search-BV2B73ty.d.ts} +1 -1
  22. package/dist/{search-CIjAdPR-.d.mts → search-BapnDodc.d.mts} +1 -1
  23. package/dist/{seo-C-NQ0T9w.d.ts → seo-BcC8Tv0d.d.ts} +1 -1
  24. package/dist/{seo-BypmVm97.d.mts → seo-C_yEotTb.d.mts} +1 -1
  25. package/dist/seo-files.d.mts +2 -2
  26. package/dist/seo-files.d.ts +2 -2
  27. package/dist/seo.d.mts +6 -6
  28. package/dist/seo.d.ts +6 -6
  29. package/dist/server.d.mts +6 -6
  30. package/dist/server.d.ts +6 -6
  31. package/dist/sitemap.d.mts +6 -6
  32. package/dist/sitemap.d.ts +6 -6
  33. package/dist/suggest.d.mts +2 -2
  34. package/dist/suggest.d.ts +2 -2
  35. package/package.json +1 -1
  36. package/skills/manifest.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
3
3
  This changelog records changes that affect Board API compatibility, exported
4
4
  types, runtime behavior, or supported integration patterns.
5
5
 
6
+ ## 4.32.0 — 2026-10-02
7
+
8
+ - Registration accepts an optional `returnTo`, a same-origin path carried
9
+ through the verification email link, so someone who signs up partway
10
+ through a task (for example, applying to a job) lands back where they
11
+ started after verifying. Resending the verification email accepts the same
12
+ field: `auth.resendVerification({ body: { returnTo } })`. Unsafe values are
13
+ ignored.
14
+
15
+ - Board context includes `features.contactPage`, which matches whether the
16
+ board's public contact form is live, so a frontend can decide whether to
17
+ link to the contact page without a separate request.
18
+
19
+ - Candidate offers include `entitlements` (`listings`, `matches`,
20
+ `job_alerts`), the candidate permissions each offer grants. Offers without
21
+ configured permissions grant full access.
22
+
6
23
  ## 4.31.1 — 2026-10-01
7
24
 
8
25
  - `createSessionRefresher` no longer shares an in-flight refresh between
@@ -256,6 +256,8 @@ interface components {
256
256
  marketingConsent?: boolean;
257
257
  /** @description Send the email link to this development origin instead of the board's production origin, for example `http://localhost:5173` while testing a self-hosted frontend. Only accepted with a publishable-key (`pk_...`) identifier (else 400 `board_development_origin_requires_publishable_key`), and only for a localhost development origin: email links can be requested for anyone's address, so a registered https preview returns 400 `board_development_origin_not_allowed_for_email`. It must be one of the board's development origins; otherwise the request fails with 400 `board_development_origin_not_registered`. */
258
258
  developmentOrigin?: string;
259
+ /** @description Optional same-origin path to carry through the email link. */
260
+ returnTo?: string;
259
261
  };
260
262
  BoardAuthRequestMagicLinkBody: {
261
263
  audienceAttribution?: components["schemas"]["AudienceAttribution"];
@@ -271,6 +273,10 @@ interface components {
271
273
  /** @description Send the email link to this development origin instead of the board's production origin, for example `http://localhost:5173` while testing a self-hosted frontend. Only accepted with a publishable-key (`pk_...`) identifier (else 400 `board_development_origin_requires_publishable_key`), and only for a localhost development origin: email links can be requested for anyone's address, so a registered https preview returns 400 `board_development_origin_not_allowed_for_email`. It must be one of the board's development origins; otherwise the request fails with 400 `board_development_origin_not_registered`. */
272
274
  developmentOrigin?: string;
273
275
  };
276
+ BoardAuthResendVerificationBody: {
277
+ /** @description Optional same-origin path to carry through the email link. */
278
+ returnTo?: string;
279
+ };
274
280
  BoardAuthResetPasswordBody: {
275
281
  token: string;
276
282
  /** @description Minimum 8 characters. */
@@ -2007,6 +2013,12 @@ interface components {
2007
2013
  intervalUnit: string | null;
2008
2014
  intervalCount: number | null;
2009
2015
  isDefault: boolean;
2016
+ /** @description The effective candidate permissions granted by this offer. Offers without configured candidate permissions grant full access. */
2017
+ entitlements?: {
2018
+ listings: boolean;
2019
+ matches: boolean;
2020
+ job_alerts: boolean;
2021
+ };
2010
2022
  };
2011
2023
  Plan: {
2012
2024
  /** @enum {string} */
@@ -2285,6 +2297,8 @@ interface components {
2285
2297
  nativeApplications: boolean;
2286
2298
  /** @description Whether applicant↔employer messaging is enabled on the board. `false` means the `me/conversations` route family rejects with `messaging_disabled` (403). Hide inbox/dock/Message CTAs. */
2287
2299
  messaging: boolean;
2300
+ /** @description Whether the board's public contact form is live. Matches `enabled` on `GET /v1/boards/{identifier}/contact`, so chrome can decide whether to link to the contact page from this context alone. When `false`, `POST /contact` rejects. */
2301
+ contactPage: boolean;
2288
2302
  };
2289
2303
  /**
2290
2304
  * @description How the operator charges employers for the candidate directory. `paid_messaging` leaves profiles fully visible and spends a credit on a first cold message; `paid_unlocks_and_messaging` also redacts directory cards and gates the opaque `/p/{id}` profile route behind an unlock credit. `null` means the operator has not chosen explicitly, in which case infer it from the published `talent_access` plans: any plan granting profile unlocks means `paid_unlocks_and_messaging`, otherwise `paid_messaging`. The paywall is inert regardless when the board publishes no talent plan. An anonymous viewer has no entitlement read to derive this from, so it ships here rather than only on `me/talent-access`.
@@ -256,6 +256,8 @@ interface components {
256
256
  marketingConsent?: boolean;
257
257
  /** @description Send the email link to this development origin instead of the board's production origin, for example `http://localhost:5173` while testing a self-hosted frontend. Only accepted with a publishable-key (`pk_...`) identifier (else 400 `board_development_origin_requires_publishable_key`), and only for a localhost development origin: email links can be requested for anyone's address, so a registered https preview returns 400 `board_development_origin_not_allowed_for_email`. It must be one of the board's development origins; otherwise the request fails with 400 `board_development_origin_not_registered`. */
258
258
  developmentOrigin?: string;
259
+ /** @description Optional same-origin path to carry through the email link. */
260
+ returnTo?: string;
259
261
  };
260
262
  BoardAuthRequestMagicLinkBody: {
261
263
  audienceAttribution?: components["schemas"]["AudienceAttribution"];
@@ -271,6 +273,10 @@ interface components {
271
273
  /** @description Send the email link to this development origin instead of the board's production origin, for example `http://localhost:5173` while testing a self-hosted frontend. Only accepted with a publishable-key (`pk_...`) identifier (else 400 `board_development_origin_requires_publishable_key`), and only for a localhost development origin: email links can be requested for anyone's address, so a registered https preview returns 400 `board_development_origin_not_allowed_for_email`. It must be one of the board's development origins; otherwise the request fails with 400 `board_development_origin_not_registered`. */
272
274
  developmentOrigin?: string;
273
275
  };
276
+ BoardAuthResendVerificationBody: {
277
+ /** @description Optional same-origin path to carry through the email link. */
278
+ returnTo?: string;
279
+ };
274
280
  BoardAuthResetPasswordBody: {
275
281
  token: string;
276
282
  /** @description Minimum 8 characters. */
@@ -2007,6 +2013,12 @@ interface components {
2007
2013
  intervalUnit: string | null;
2008
2014
  intervalCount: number | null;
2009
2015
  isDefault: boolean;
2016
+ /** @description The effective candidate permissions granted by this offer. Offers without configured candidate permissions grant full access. */
2017
+ entitlements?: {
2018
+ listings: boolean;
2019
+ matches: boolean;
2020
+ job_alerts: boolean;
2021
+ };
2010
2022
  };
2011
2023
  Plan: {
2012
2024
  /** @enum {string} */
@@ -2285,6 +2297,8 @@ interface components {
2285
2297
  nativeApplications: boolean;
2286
2298
  /** @description Whether applicant↔employer messaging is enabled on the board. `false` means the `me/conversations` route family rejects with `messaging_disabled` (403). Hide inbox/dock/Message CTAs. */
2287
2299
  messaging: boolean;
2300
+ /** @description Whether the board's public contact form is live. Matches `enabled` on `GET /v1/boards/{identifier}/contact`, so chrome can decide whether to link to the contact page from this context alone. When `false`, `POST /contact` rejects. */
2301
+ contactPage: boolean;
2288
2302
  };
2289
2303
  /**
2290
2304
  * @description How the operator charges employers for the candidate directory. `paid_messaging` leaves profiles fully visible and spends a credit on a first cold message; `paid_unlocks_and_messaging` also redacts directory cards and gates the opaque `/p/{id}` profile route behind an unlock credit. `null` means the operator has not chosen explicitly, in which case infer it from the published `talent_access` plans: any plan granting profile unlocks means `paid_unlocks_and_messaging`, otherwise `paid_messaging`. The paywall is inert regardless when the board publishes no talent plan. An anonymous viewer has no entitlement read to derive this from, so it ships here rather than only on `me/talent-access`.
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.mjs';
1
+ import { S as Schemas } from './_spec-BdqHycDm.mjs';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.js';
1
+ import { S as Schemas } from './_spec-BdqHycDm.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.js';
2
- import { L as ListEnvelope, s as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-BbtjrUo2.js';
1
+ import { S as Schemas } from './_spec-BdqHycDm.js';
2
+ import { L as ListEnvelope, s as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-DbZuagy-.js';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /** A market (sector) a company operates in — name + its source slug. */
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.mjs';
2
- import { L as ListEnvelope, s as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-BPTMfkal.mjs';
1
+ import { S as Schemas } from './_spec-BdqHycDm.mjs';
2
+ import { L as ListEnvelope, s as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-COOBWXWV.mjs';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /** A market (sector) a company operates in — name + its source slug. */
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-BRWS1m6D.mjs';
2
- import { P as PublicJob } from './jobs-BPTMfkal.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CdG7z-Vq.mjs';
2
+ import { P as PublicJob } from './jobs-COOBWXWV.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CF66EdYi.js';
2
- import { P as PublicJob } from './jobs-BbtjrUo2.js';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CEsr8xMh.js';
2
+ import { P as PublicJob } from './jobs-DbZuagy-.js';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -1 +1 @@
1
- "use strict";var CavunoBoard=(()=>{var w=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var eo=Object.getOwnPropertyNames;var to=Object.prototype.hasOwnProperty;var oo=(e,t,o)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var A=(e,t)=>{for(var o in t)w(e,o,{get:t[o],enumerable:!0})},no=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of eo(t))!to.call(e,r)&&r!==o&&w(e,r,{get:()=>t[r],enumerable:!(n=Xt(t,r))||n.enumerable});return e};var ro=e=>no(w({},"__esModule",{value:!0}),e);var P=(e,t,o)=>oo(e,typeof t!="symbol"?t+"":t,o);var sn={};A(sn,{ACCESS_TOKEN_KEY:()=>L,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>he,BoardApiError:()=>v,BoardClient:()=>I,REFRESH_TOKEN_KEY:()=>T,SDK_VERSION:()=>$,SIGN_IN_REDIRECT_ERROR_CODES:()=>ke,SSO_LINK_PROOF_BINDING_TTL_MS:()=>oe,createBoardClient:()=>ho,filters:()=>ie,format:()=>ye,isBoardApiError:()=>S,isBoardPasswordRequired:()=>Ce,isColdRule:()=>rt,isConflict:()=>Re,isForbidden:()=>Oe,isFreeEmailWebsiteError:()=>Be,isNotFound:()=>be,isOwnMessage:()=>nt,isRateLimited:()=>Pe,isSafeApplicationUrl:()=>ne,isSignInMethodUnavailable:()=>te,isSsoBrowserMismatch:()=>Ee,isSsoRequired:()=>ve,isUnauthorized:()=>Se,isValidationError:()=>_e,lastOwnMessageId:()=>it,paginate:()=>ot,parseOAuthCompletion:()=>xe,paths:()=>de,resolveApplyAction:()=>st,resolveApplyDecision:()=>re,seo:()=>fe,ssoLinkProofBindingStore:()=>D,suggest:()=>ge});var he=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_unavailable","search_filter_unavailable","too_many_filter_values","pagination_invalid_cursor","pagination_offset_too_large","auth_unauthenticated","auth_forbidden","plan_upgrade_required","unknown_error","boards_not_found","board_page_not_found","board_auth_account_not_found","board_auth_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","board_development_origin_not_allowed_for_email","board_development_origin_not_registered","board_development_origin_requires_publishable_key","sso_required","board_auth_method_unavailable","board_auth_sso_connection_not_found","board_auth_sso_role_unavailable","board_auth_sso_provider_unavailable","board_auth_sso_browser_mismatch","board_auth_sso_not_provisioned","board_auth_sso_identity_linked_elsewhere","invalid_current_password","no_password","same_email","email_taken","invalid_token","board_password_required","board_password_invalid","jobs_not_found","jobs_invalid_filter","categories_not_found","skills_not_found","places_not_found","locations_invalid_id","locations_unavailable","companies_not_found","company_markets_not_found","company_salary_not_found","company_category_salary_not_found","salaries_title_not_found","salaries_skill_not_found","salaries_location_not_found","salaries_title_location_not_found","salaries_skill_location_not_found","blog_post_not_found","blog_author_not_found","blog_tag_not_found","feeds_not_found","feed_not_ready","talent_not_found","talent_directory_not_found","talent_directory_restricted","job_recommendations_not_found","recommended_talent_not_found","job_alert_not_found","job_alerts_disabled","candidate_alert_limit_reached","candidate_alert_not_found","candidate_entry_not_found","candidate_handle_taken","candidate_job_not_found","candidate_notification_preference_paused","candidate_profile_required","resume_invalid_file","resume_upload_forbidden","applications_external_apply_only","applications_country_not_allowed","applications_guest_not_allowed","applications_job_not_found","applications_not_found","applications_resume_invalid_file","applications_unprocessable","messaging_application_not_found","messaging_application_not_linked","messaging_blocked","messaging_cannot_block_self","messaging_cold_rule","messaging_conversation_not_found","messaging_disabled","messaging_edit_window_expired","messaging_message_deleted","messaging_message_not_found","messaging_not_author","messaging_not_participant","messaging_not_permitted","messaging_not_recipient","messaging_rate_limited","messaging_recipient_not_found","messaging_recipient_not_open","messaging_unsend_window_expired","employer_applicant_not_found","employer_ats_unprocessable","employer_checkout_failed","employer_company_exists","employer_free_email_website","employer_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","membership_required","employer_not_member","employer_payment_required","employer_pipeline_stage_not_found","employer_member_not_found","employer_invite_not_found","not_company_admin","not_company_member","company_deletion_disabled","last_admin","already_member","already_invited","invalid_email","invite_email_mismatch","candidate_role","job_not_published","talent_list_not_found","sourced_candidate_not_found","sourced_convert_unavailable","candidate_paywall_access_required","paywall_already_active","paywall_disabled","paywall_invalid_checkout_session","paywall_no_candidate_profile","paywall_no_recurring_subscription","paywall_offer_not_found","talent_access_unavailable","company_required","already_on_plan","talent_access_required","messaging_talent_access_required","stripe_not_connected","membership_plan_not_found","membership_seat_taken","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],v=class extends Error{constructor(o){super(o.message);P(this,"status");P(this,"code");P(this,"details");P(this,"requestId");P(this,"raw");this.name="BoardApiError",this.status=o.status,this.code=o.code,this.details=o.details,this.requestId=o.requestId,this.raw=o.raw}};function S(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function be(e){return S(e)&&e.status===404}function Se(e){return S(e)&&e.status===401}function Ce(e){return S(e)&&e.status===401&&e.code==="board_password_required"}function Oe(e){return S(e)&&e.status===403}function _e(e){return S(e)&&e.status===400&&e.code==="validation_bad_request"}function Pe(e){return S(e)&&e.status===429}function Re(e){return S(e)&&e.status===409}function Be(e){return S(e)&&e.status===422&&e.code==="employer_free_email_website"}function ve(e){if(!S(e)||e.status!==403)return!1;let t=e.details?.connectionIds;return Array.isArray(t)&&t.every(o=>typeof o=="string")&&(e.code==="sso_required"||te(e)&&e.details.availableMethods.methods.length===0)}function te(e){if(!S(e)||e.status!==403||e.code!=="board_auth_method_unavailable")return!1;let t=e.details?.availableMethods;if(!t||typeof t!="object")return!1;let{methods:o,ssoConnectionIds:n}=t;return Array.isArray(o)&&o.every(r=>typeof r=="string")&&Array.isArray(n)&&n.every(r=>typeof r=="string")}function Ee(e){return S(e)&&e.status===403&&e.code==="board_auth_sso_browser_mismatch"}function Ae(e){let t=new URLSearchParams;if(!e)return t;for(let[o,n]of Object.entries(e))if(n!=null)if(Array.isArray(n))for(let r of n)r!=null&&t.append(o,String(r));else t.append(o,String(n));return t}function J(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return`${e.replace(/[^a-zA-Z0-9_-]/g,"_")}-${t.toString(36)}`}var L="cavuno_board_access_token",T="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Le(){return typeof globalThis.document<"u"}function io(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function so(e,t){if(!Le())throw new Error(`storage mode '${e}' is browser-only \u2014 use 'nostore' + per-call headers on the server`);let o;try{if(o=e==="local"?globalThis.localStorage:globalThis.sessionStorage,!o)throw new Error("unavailable")}catch{throw new Error(`storage mode '${e}' is unavailable in this browsing context (storage access is blocked \u2014 e.g. a sandboxed or third-party iframe). Use 'memory', or 'nostore' + per-call headers.`)}let n=t?`:${J(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var ao=Symbol.for("@cavuno/board:nostore");var lo={[ao]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function Te(e,t){let o=e??(Le()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return io();case"nostore":return lo;case"local":case"session":return so(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function N(e,t){await e.setItem(L,t.accessToken),await e.setItem(T,t.refreshToken)}async function Fe(e){await e.removeItem(L),await e.removeItem(T)}var $="4.31.1";function co(e){return typeof e=="string"||e instanceof URLSearchParams||typeof FormData<"u"&&e instanceof FormData||typeof Blob<"u"&&e instanceof Blob||e instanceof ArrayBuffer||typeof ReadableStream<"u"&&e instanceof ReadableStream}function po(e){try{let t=new URL(e);for(let o of new Set(t.searchParams.keys()))t.searchParams.delete(o),t.searchParams.set(o,"[REDACTED]");return t.toString()}catch{return e.replace(/([?&][^=&#]+)=([^&#]*)/g,"$1=[REDACTED]")}}var I=class{constructor(t){P(this,"storage");P(this,"basePath");P(this,"options");this.options=t,this.storage=t.storage;let o=t.baseUrl.replace(/\/+$/,"");this.basePath=`${o}/v1/boards/${encodeURIComponent(t.board)}`}async fetch(t,o={}){let{body:n,query:r,headers:i,...s}=o,a=(o.method??"GET").toUpperCase(),l=`${this.basePath}${t}`,p=Ae(r).toString();p&&(l+=`?${p}`);let m=n!==void 0&&!co(n),d=n===void 0?void 0:m?JSON.stringify(n):n,y=new Headers({accept:"application/json"});m&&y.set("content-type","application/json");for(let[B,ee]of Object.entries(this.options.globalHeaders??{}))y.set(B,ee);let f=await this.storage.getItem(L);f!==null&&y.set("authorization",`Bearer ${f}`);let O=await this.storage.getItem(F);O!==null&&y.set("x-board-access",O),i&&new Headers(i).forEach((B,ee)=>{y.set(ee,B)}),(a!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${$}`);let g={url:l,init:{...s,method:a,headers:y,body:d}};this.options.onRequest&&(g=await this.options.onRequest(g));let R=po(g.url);this.options.logger?.debug(`${a} ${R}`);let u=await globalThis.fetch(g.url,g.init);if(this.options.logger?.debug(`${u.status} ${a} ${R}`),this.options.onResponse&&await this.options.onResponse(u.clone(),g),u.status===204)return;if(u.ok)return await u.json();let b;try{b=await u.json()}catch{b=void 0}let _=b?.error,E=_&&typeof _.code=="string"&&typeof _.message=="string"?new v({status:u.status,code:_.code,message:_.message,details:_.details,requestId:_.requestId,raw:b}):new v({status:u.status,code:"unknown_error",message:u.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${E.status} ${E.code} ${a} ${R}`),E}};var Ie="https://api.cavuno.com";var ke=["oauth_cancelled","oauth_failed","oauth_email_unverified","role_disabled","method_unavailable","sso_required","sso_state_invalid","sso_cancelled","sso_failed","sso_connection_unavailable","sso_not_provisioned","sso_email_required","sso_account_disabled","sso_identity_linked_elsewhere","sso_link_proof_rate_limited","sso_development_origin_not_allowed_for_email"];function uo(e){if(e instanceof URLSearchParams)return e;if(typeof e=="string"){let o=e.includes("?")?e.slice(e.indexOf("?")):e;return new URLSearchParams(o)}let t=new URLSearchParams;for(let[o,n]of Object.entries(e))n!==void 0&&t.set(o,n);return t}function mo(e){return!e||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")||e.includes("://")||/[\u0000-\u001F\u007F]/.test(e)?"/":e}function yo(e){return e==="candidate"||e==="employer"?e:null}function xe(e){let t=uo(e),o=c=>{let p=t.get(c);return p&&p.length>0?p:null},n=mo(o("returnTo")),r=yo(o("role")),i=o("error");if(i)return{kind:"error",error:i,returnTo:n};let s=o("linkProof");if(s)return{kind:"link_proof",linkProof:s,role:r,returnTo:n};let a=o("linkProofBinding");if(o("status")==="sso_link_proof_sent"&&a)return{kind:"link_proof_sent",linkProofBinding:a,role:r,returnTo:n};let l=o("token");return l?{kind:"token",token:l,method:o("method"),role:r,returnTo:n,isNewUser:o("isNew")==="1"}:{kind:"invalid",returnTo:n}}var oe=1500*1e3,fo="cavuno_board_sso_link_proof_binding";function go(){try{return globalThis.localStorage??null}catch{return null}}function D(e,t={}){let o=`${fo}:${J(e)}`,n=t.now??Date.now,r=()=>t.storage??go(),i=()=>{try{r()?.removeItem(o)}catch{}};return{begin(){let s=globalThis.crypto.getRandomValues(new Uint8Array(32)),a=Array.from(s,c=>c.toString(16).padStart(2,"0")).join(""),l=r();if(!l)throw new Error("SSO requires browser storage or an explicit browser proof");return l.setItem(o,JSON.stringify({binding:a,expiresAt:n()+oe})),a},save(s){},read(){let s=null;try{s=r()?.getItem(o)??null}catch{return null}if(!s)return null;try{let a=JSON.parse(s);if(typeof a.binding=="string"&&typeof a.expiresAt=="number"&&a.expiresAt>n())return a.binding}catch{}return i(),null},clear:i}}function Ue(e,t=""){let o=()=>D(t);async function n(i){return await N(e.storage,i),i}async function r(i){if(i?.refreshToken)return i.refreshToken;let s=await e.storage.getItem(T);if(s===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return s}return{async register(i,s){let a=await e.fetch("/auth/register",{...s,method:"POST",body:i});return n(a)},async login(i,s){let a=await e.fetch("/auth/login",{...s,method:"POST",body:i});return n(a)},async refresh(i,s){let a=await r(i),l=await e.fetch("/auth/refresh",{...s,method:"POST",body:{refreshToken:a}});return n(l)},async logout(i,s){let a=await r(i);await e.fetch("/auth/logout",{...s,method:"POST",body:{refreshToken:a}}),await Fe(e.storage)},verifyEmail(i,s){return e.fetch("/auth/verify-email",{...s,method:"POST",body:i})},verifyWorkEmail(i,s){return e.fetch("/auth/verify-work-email",{...s,method:"POST",body:i})},verifyEmailWithCode(i,s){return e.fetch("/auth/verify-email/otp",{...s,method:"POST",body:i})},resendVerification(i){return e.fetch("/auth/verify-email/resend",{...i,method:"POST"})},forgotPassword(i,s){return e.fetch("/auth/forgot-password",{...s,method:"POST",body:i})},resetPassword(i,s){return e.fetch("/auth/reset-password",{...s,method:"POST",body:i})},requestMagicLink(i,s){return e.fetch("/auth/magic-link",{...s,method:"POST",body:i})},async consumeMagicLink(i,s){let a=await e.fetch("/auth/magic-link/consume",{...s,method:"POST",body:i});return n(a)},getOAuthAuthorizationUrl(i,s,a){return e.fetch(`/auth/oauth/${i}`,{...a,method:"GET",query:s})},async exchangeOAuth(i,s){let a=await e.fetch("/auth/oauth/exchange",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)},async getSsoAuthorizationUrl(i,s,a){let l=s?.browserBindingHash;if(!l){let c=o().begin(),p=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(c));l=Array.from(new Uint8Array(p),m=>m.toString(16).padStart(2,"0")).join("")}return e.fetch(`/auth/sso/${encodeURIComponent(i)}`,{...a,method:"GET",query:{...s,browserBindingHash:l}})},async consumeSsoLinkProof(i,s){let a=await e.fetch("/auth/sso/link-proof",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)}}}function Me(e){return{posts:{list(t,o){return e.fetch("/blog/posts",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}`,{...n,query:o})},adjacent(t,o){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/adjacent`,o)},similar(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/similar`,{...n,query:o})}},tags:{list(t,o){return e.fetch("/blog/tags",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/tags/${encodeURIComponent(t)}`,{...n,query:o})}},authors:{list(t,o){return e.fetch("/blog/authors",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/authors/${encodeURIComponent(t)}`,{...n,query:o})}},search(t,o,n){return e.fetch("/blog/search",{...n,method:"POST",body:t,query:o})}}}function we(e){let t=Object.assign((n,r)=>e.fetch("/companies/markets",{...r,query:n}),{resolve(n,r){return e.fetch(`/companies/markets/${encodeURIComponent(n)}`,r)}}),o=Object.assign((n,r)=>e.fetch(`/companies/${encodeURIComponent(n)}/salaries`,r),{summary(n,r){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/summary`,r)},category(n,r,i,s){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...s,query:i})}});return{list(n,r){return e.fetch("/companies",{...r,query:n})},retrieve(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}`,{...i,query:r})},search(n,r,i){return e.fetch("/companies/search",{...i,method:"POST",body:n,query:r})},listJobs(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/jobs`,{...i,query:r})},similar(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/similar`,{...i,query:r})},markets:t,salaries:o}}function Je(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Ne(e){return{subscribe(t,o){return e.fetch("/job-alerts",{...o,method:"POST",body:t})},confirm(t,o){return e.fetch("/job-alerts/confirm",{...o,method:"POST",body:t})},resendConfirmation(t,o){return e.fetch("/job-alerts/resend-confirmation",{...o,method:"POST",body:t})},manage(t,o){return e.fetch("/job-alerts/manage",{...o,query:t})},unsubscribe(t,o){return e.fetch("/job-alerts/unsubscribe",{...o,method:"POST",body:t})},resubscribe(t,o){return e.fetch("/job-alerts/resubscribe",{...o,method:"POST",body:t})},updatePreference(t,o){return e.fetch("/job-alerts/preferences",{...o,method:"POST",body:t})},deletePreference(t,o){return e.fetch("/job-alerts/preferences",{...o,method:"DELETE",body:t})}}}function $e(e){return{plans(t,o){return e.fetch("/job-postings/plans",{...o,query:t})},create(t,o){return e.fetch("/job-postings",{...o,method:"POST",body:t})},uploadLogo(t,o){let n=new FormData;return n.append("file",t),e.fetch("/job-postings/logo",{...o,method:"POST",body:n})},fetchLogoByDomain(t,o){return e.fetch("/job-postings/logo/fetch",{...o,query:{domain:t}})},sendBillingVerification(t,o){return e.fetch("/job-postings/send-verification",{...o,method:"POST",body:t})},getBillingOptions(t,o){return e.fetch("/job-postings/billing-options",{...o,method:"POST",body:t})}}}function De(e){return{collectionChoices(t,o,n){return e.fetch(`/job-fields/${encodeURIComponent(t)}/choices`,{...n,query:o})},list(t,o){return e.fetch("/jobs",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}`,{...n,query:o})},search(t,o,n){return e.fetch("/jobs/search",{...n,method:"POST",body:t,query:o})},similar(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/similar`,{...n,query:o})},apply(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply`,{...n,method:"POST",body:o??{}})},createApplyIntent(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-intents`,{...n,method:"POST",body:o})},prepareApplyApproval(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-approvals`,{...n,method:"POST",body:o})},uploadApplicationResume(t,o,n,r){let i=new FormData;return i.append("file",o),n?.applicationId&&i.append("applicationId",n.applicationId),e.fetch(`/jobs/${encodeURIComponent(t)}/apply/resume`,{...r,method:"POST",body:i})},myApplication(t,o){return e.fetch(`/jobs/${encodeURIComponent(t)}/application`,o)}}}function je(e){return{search(t,o){return e.fetch("/locations/search",{...o,query:t})},resolve(t,o){return e.fetch("/locations/resolve",{...o,method:"POST",body:t})}}}function Qe(e){return{retrieve(t,o){return e.fetch("/me",{...o,query:t})},delete(t){return e.fetch("/me",{...t,method:"DELETE"})},async updatePassword(t,o){let n=await e.fetch("/me/password",{...o,method:"POST",body:t});return await N(e.storage,n),n},requestEmailChange(t,o){return e.fetch("/me/email",{...o,method:"POST",body:t})},confirmEmailChange(t,o){return e.fetch("/me/email/confirm",{...o,method:"POST",body:t})},acceptInvite(t,o){return e.fetch("/me/invites/accept",{...o,method:"POST",body:t})},profile:{listObjectReferenceChoices(t,o,n){return e.fetch("/me/profile/object-references/choices",{...n,query:{...o,fieldKey:t}})},retrieve(t,o){return e.fetch("/me/profile",{...o,query:t})},update(t,o,n){return e.fetch("/me/profile",{...n,method:"PATCH",body:t,query:o})},retrieveCustomFields(t){return e.fetch("/me/profile/custom-fields",{...t})},updateCustomFields(t,o){return e.fetch("/me/profile/custom-fields",{...o,method:"PATCH",body:t})},retrieveObjectReferences(t){return e.fetch("/me/profile/object-references",t)},updateObjectReferences(t,o){return e.fetch("/me/profile/object-references",{...o,method:"PUT",body:t})},handleAvailable(t,o){return e.fetch("/me/profile/handle-available",{...o,query:{handle:t}})},listExperience(t){return e.fetch("/me/profile/experience",t)},createExperience(t,o){return e.fetch("/me/profile/experience",{...o,method:"POST",body:t})},updateExperience(t,o,n){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteExperience(t,o){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listEducation(t){return e.fetch("/me/profile/education",t)},createEducation(t,o){return e.fetch("/me/profile/education",{...o,method:"POST",body:t})},updateEducation(t,o,n){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteEducation(t,o){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listSkills(t){return e.fetch("/me/profile/skills",t)},updateSkills(t,o){return e.fetch("/me/profile/skills",{...o,method:"PUT",body:t})},listLanguages(t){return e.fetch("/me/profile/languages",t)},updateLanguages(t,o){return e.fetch("/me/profile/languages",{...o,method:"PUT",body:t})},uploadAvatar(t,o){let n=new FormData;return n.append("file",t),e.fetch("/me/profile/avatar",{...o,method:"POST",body:n})}},notificationPreferences:{retrieve(t){return e.fetch("/me/notification-preferences",t)},update(t,o){return e.fetch("/me/notification-preferences",{...o,method:"PUT",body:t})},unsubscribeWithToken(t,o){return e.fetch("/me/notification-preferences/unsubscribe",{...o,method:"POST",body:t})}},companies:{listObjectReferenceChoices(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references/choices`,{...r,query:{...n,fieldKey:o}})},retrieveObjectReferences(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,o)},updateObjectReferences(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,{...n,method:"PUT",body:o})},search(t,o){return e.fetch("/me/companies/search",{...o,query:t})},list(t){return e.fetch("/me/companies",t)},create(t,o){return e.fetch("/me/companies",{...o,method:"POST",body:t})},claim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"POST"})},cancelClaim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"DELETE"})},retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},retrieveCustomFields(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,o)},updateCustomFields(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,{...n,method:"PATCH",body:o})},delete(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listMembers(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members`,o)},updateMemberRole(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},removeMember(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},leave(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership`,{...o,method:"DELETE"})},startMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout`,{...n,method:"POST",body:o})},retrieveMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout/${encodeURIComponent(o)}`,n)},listInvites(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,o)},createInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,{...n,method:"POST",body:o})},revokeInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},uploadLogo(t,o,n){let r=new FormData;return r.append("file",o),e.fetch(`/me/companies/${encodeURIComponent(t)}/logo`,{...n,method:"POST",body:r})},workEmail:{verify(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/verify`,{...n,method:"POST",body:o})},confirm(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/confirm`,{...n,method:"POST",body:o})}},jobs:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,query:o})},retrieve(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,n)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},delete(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},publish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/publish`,{...n,method:"POST"})},unpublish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/unpublish`,{...n,method:"POST"})},checkout(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/checkout`,{...r,method:"POST",body:n})}},billingOptions:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-options`,o)}},billingPortal:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-portal`,{...n,method:"POST",body:o})}},jobStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats/timeseries`,{...n,query:o})}},profileStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats/timeseries`,{...n,query:o})}},recommendedTalent:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/recommended-talent`,{...n,query:o})}},talentLists:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,o)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...n,method:"DELETE"})}},sourcedCandidates:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,query:o})},add(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,method:"POST",body:o})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},convert(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}/convert`,{...r,method:"POST",body:n})}},applicants:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants`,{...n,query:o})},move(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/stage`,{...r,method:"PATCH",body:n})},bulkMove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/move`,{...n,method:"POST",body:o})},bulkReject(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/reject`,{...n,method:"POST",body:o})},addNote(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/notes`,{...r,method:"POST",body:n})}},pipelineStages:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},reorder(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/reorder`,{...n,method:"PUT",body:o})}}},talentAccess:{retrieve(t){return e.fetch("/me/talent-access",t)},retrieveCandidate(t,o){return e.fetch(`/me/talent-access/candidates/${encodeURIComponent(t)}`,o)},checkout(t,o){return e.fetch("/me/talent-access/checkout",{...o,method:"POST",body:t})},claim(t,o){return e.fetch("/me/talent-access/claim",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/talent-access/checkout/${encodeURIComponent(t)}`,o)},unlock(t,o){return e.fetch("/me/talent-access/unlocks",{...o,method:"POST",body:t})},upgrade(t,o){return e.fetch("/me/talent-access/upgrade",{...o,method:"POST",body:t})}},alerts:{list(t){return e.fetch("/me/alerts",t)},create(t,o){return e.fetch("/me/alerts",{...o,method:"POST",body:t})},retrieve(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...n,method:"PUT",body:o})},remove(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...o,method:"DELETE"})}},applications:{list(t,o){return e.fetch("/me/applications",{...o,query:t})},retrieve(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,o)},updateFacts(t,o,n){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},withdraw(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}/withdraw`,{...o,method:"POST"})}},resume:{upload(t,o,n){let r=new FormData;return r.append("resume",t),o?.keepResumeOnFile&&r.append("keepResumeOnFile","true"),o?.importMode&&r.append("importMode",o.importMode),o?.confirmReplaceAll&&r.append("confirmReplaceAll","true"),e.fetch("/me/resume",{...n,method:"POST",body:r})},retrieve(t){return e.fetch("/me/resume",t)},delete(t){return e.fetch("/me/resume",{...t,method:"DELETE"})}},recommendedJobs:{list(t,o){return e.fetch("/me/recommended-jobs",{...o,query:t})}},savedJobs:{list(t,o){return e.fetch("/me/saved-jobs",{...o,query:t})},save(t,o,n){return e.fetch("/me/saved-jobs",{...n,method:"POST",body:t,query:o})},unsave(t,o,n){return e.fetch(`/me/saved-jobs/${encodeURIComponent(t)}`,{...n,method:"DELETE",query:o})}},conversations:{list(t,o){return e.fetch("/me/conversations",{...o,query:t})},unreadCount(t){return e.fetch("/me/conversations/unread-count",t)},retrieve(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}`,o)},listMessages(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/messages`,{...n,query:o})},start(t,o){return e.fetch("/me/conversations",{...o,method:"POST",body:t})},startAboutApplication(t,o){return e.fetch("/me/conversations/about-application",{...o,method:"POST",body:t})},reply(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/reply`,{...n,method:"POST",body:o})},markRead(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/read`,{...o,method:"POST"})},archive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/archive`,{...o,method:"POST"})},unarchive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/unarchive`,{...o,method:"POST"})},findExisting(t,o){return e.fetch("/me/conversations/find-existing",{...o,query:t})}},blocks:{list(t){return e.fetch("/me/blocks",t)},create(t,o){return e.fetch("/me/blocks",{...o,method:"POST",body:t})},remove(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},status(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,o)}},messages:{edit(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},unsend(t,o){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},report(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}/report`,{...n,method:"POST",body:o})}},marketingConsent:{retrieve(t){return e.fetch("/me/marketing-consent",t)},grant(t){return e.fetch("/me/marketing-consent/grant",{...t,method:"POST"})},withdraw(t){return e.fetch("/me/marketing-consent/withdraw",{...t,method:"POST"})}},access:{checkout(t,o){return e.fetch("/me/access/checkout",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/access/checkout/${encodeURIComponent(t)}`,o)},grant(t){return e.fetch("/me/access/grant",t)},portal(t,o){return e.fetch("/me/access/portal",{...o,method:"POST",body:t})}}}}function qe(e){return{async verify(t,o){let n=await e.fetch("/password/verify",{...o,method:"POST",body:{password:t}});return await e.storage.setItem(F,n.token),n}}}function Ge(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function He(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function Ve(e){return{retrieve(t,o){return e.fetch(`/profile-fields/${encodeURIComponent(t)}`,o)},choices(t,o,n,r){return e.fetch(`/profile-fields/${encodeURIComponent(t)}/${encodeURIComponent(o)}/choices`,{...r,query:n})}}}function Ke(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function Ye(e){return{companies:{list(t){return e.fetch("/salaries/companies",t)}},titles:{list(t,o){return e.fetch("/salaries/titles",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}`,{...n,query:o})},locations(t,o,n){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}/locations`,{...n,query:o})},location(t,o,n,r){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}/${encodeURIComponent(o)}`,{...r,query:n})}},skills:{list(t,o){return e.fetch("/salaries/skills",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}`,{...n,query:o})},locations(t,o,n){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}/locations`,{...n,query:o})},location(t,o,n,r){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}/${encodeURIComponent(o)}`,{...r,query:n})}},locations:{list(t,o){return e.fetch("/salaries/locations",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}`,{...n,query:o})},titles(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}/titles`,{...n,query:o})},skills(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}/skills`,{...n,query:o})}}}}function ze(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function We(e){return Object.assign(t=>e.fetch("/sitemap",t),{entries(t,o,n){return e.fetch(`/sitemap/${encodeURIComponent(t)}`,{...n,query:o})}})}function Ze(e){return{list(t,o){let n=t?{...t,customFields:t.customFields?JSON.stringify(t.customFields):void 0,objectReferences:t.objectReferences?JSON.stringify(t.objectReferences):void 0}:void 0;return e.fetch("/talent",{...o,query:n})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function et(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function Xe(e,t){return{...et(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function tt(e){return{categories:Xe(e,"categories"),skills:Xe(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...et(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function ot(e,t,o){async function*n(){let r=t;for(;;){let i=await e(r,o);if(yield i,!i.hasMore||i.nextCursor===null)return;let{offset:s,...a}=r??{};r={...a,cursor:i.nextCursor}}}return{pages:n,async*[Symbol.asyncIterator](){for await(let r of n())yield*r.data},async toArray({limit:r}){let i=[];for await(let s of n())if(i.push(...s.data),i.length>=r)break;return i.slice(0,r)}}}function nt(e,t){return e.authorBoardUserId!==t}function rt(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function it(e,t){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n.authorBoardUserId!==t)return n.id}return null}function ne(e){let t=e.replace(/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,"").replace(/[\t\n\r]/g,""),o=/^([a-z][a-z0-9+.-]*):/i.exec(t)?.[1]?.toLowerCase();return o===void 0?!0:o==="http"||o==="https"||o==="mailto"}function re(e){let t=e.applicationUrl&&ne(e.applicationUrl)?e.applicationUrl:null;return!t&&!e.jobSlug?{kind:"none"}:e.registrationWall&&!e.viewer?{kind:"sign-in",reason:"registration-wall"}:t?{kind:"external",url:t}:e.jobSlug?e.viewer?e.viewer.emailVerified?e.applied?{kind:"applied"}:{kind:"native",jobSlug:e.jobSlug}:{kind:"verify-email"}:e.allowGuestApply?{kind:"guest",jobSlug:e.jobSlug}:{kind:"sign-in",reason:"native-apply"}:{kind:"none"}}function st(e){let t=re({...e,registrationWall:!1,allowGuestApply:!1});return t.kind==="sign-in"?{kind:"sign-in"}:t}function ho(e){let t=new I({baseUrl:e.baseUrl??Ie,board:e.board,storage:Te(e.auth?.storage,e.board),globalHeaders:e.globalHeaders,onRequest:e.onRequest,onResponse:e.onResponse,logger:e.logger});return{client:t,context(o){return t.fetch("",o)},seo(o){return t.fetch("/seo",o)},jobs:De(t),embed:Je(t),companies:we(t),blog:Me(t),auth:Ue(t,e.board),me:Qe(t),password:qe(t),taxonomy:tt(t),search:ze(t),locations:je(t),redirects:Ke(t),jobAlerts:Ne(t),jobPosting:$e(t),salaries:Ye(t),talent:Ze(t),profileFields:Ve(t),plans:He(t),paywall:Ge(t),sitemap:We(t)}}var ie={};A(ie,{DEFAULT_SORT:()=>bo,EMPLOYMENT_TYPES:()=>lt,JOB_SORTS:()=>pt,REMOTE_OPTIONS:()=>at,SENIORITIES:()=>ct,parseCategory:()=>dt,parseCompany:()=>mt,parseListingFilters:()=>Co,parseSeniority:()=>ut});var at=["on_site","hybrid","remote"],lt=["full_time","part_time","contract","internship","temporary"],ct=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],pt=["relevance","newest","salary_high"],bo="relevance";var So=new Set(ct);function ut(e){let t=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],o=[],n=new Set;for(let r of t){if(typeof r!="string")continue;let i=r.trim().toLowerCase().normalize("NFC");!i||n.has(i)||So.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function mt(e){return yt(e,10)}function dt(e){return yt(e,10)}function yt(e,t){let o=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],n=[],r=new Set;for(let i of o){if(typeof i!="string")continue;let s=i.trim().toLowerCase().normalize("NFC");if(!(!s||r.has(s))&&(r.add(s),n.push(s),n.length>=t))break}return n.length>0?n:void 0}function Co(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:at.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:lt.includes(e.employmentType)?e.employmentType:void 0,seniority:ut(e.seniority),company:mt(e.company),category:dt(e.category),sort:pt.includes(e.sort)?e.sort:void 0}}var ye={};A(ye,{COUNTRY_CODES:()=>Z,buildJobBreadcrumbs:()=>W,countryOptions:()=>Ht,formatDate:()=>St,formatMonthYear:()=>Ot,formatPublishedRelativeDate:()=>Ct,formatSalaryRange:()=>_t,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>Vt});function C(e){let t=e.trim();if(!t)return null;try{let o=t.replace(/_/g,"-"),[n]=Intl.getCanonicalLocales(o);if(!n)return null;let[r]=Intl.NumberFormat.supportedLocalesOf([n]);return r??null}catch{return null}}var ft=new Map,gt=new Map,ht=new Map,bt=new Map;function Oo(e){let t=ft.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),ft.set(e,t)),t}function _o(e){let t=gt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),gt.set(e,t)),t}function Po(e){let t=ht.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),ht.set(e,t)),t}function Ro(e){let t=bt.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),bt.set(e,t)),t}function se(e,t,o){try{return Oo(o).format(e,t)}catch{return null}}function St(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=C(e);if(!n)return null;try{return Po(n).format(o)}catch{return o.toISOString().split("T")[0]}}function Ct(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;let i=o-n.getTime(),s=Math.abs(i),a=60*1e3,l=60*a,c=24*l,p=7*c,m=30*c,d=365*c;if(s<a)try{return _o(r).format(0,"second")}catch{return se(0,"second",r)}let y=[{unit:"year",ms:d},{unit:"month",ms:m},{unit:"week",ms:p},{unit:"day",ms:c},{unit:"hour",ms:l},{unit:"minute",ms:a}];for(let g of y)if(s>=g.ms){let R=Math.round(s/g.ms),u=i>=0?-R:R;return se(u,g.unit,r)}let f=Math.round(s/1e3),O=i>=0?-f:f;return se(O,"second",r)}function Ot(e,t){if(!t)return null;let n=/^\d{4}-\d{2}(-\d{2})?$/.test(t)?new Date(t.length===7?`${t}-01T00:00:00.000Z`:`${t}T00:00:00.000Z`):new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;try{return Ro(r).format(n)}catch{return null}}var j=new Map;function ae(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,s=j.get(i);if(s===void 0){try{let a={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(a.compactDisplay="short",a.maximumFractionDigits=1,a.minimumFractionDigits=0),s=new Intl.NumberFormat(t,a)}catch{s=null}j.set(i,s)}return s?s.format(e):null}function le(e,t,o){if(typeof e.formatRange=="function")try{return e.formatRange(t,o)}catch{}try{return`${e.format(t)}\u2013${e.format(o)}`}catch{return null}}function Bo(e,t,o,n,r="symbol",i="compact"){let s=`${o}:${n}:${r}:${i}:range`,a=j.get(s);if(a===void 0){try{let l={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(l.compactDisplay="short",l.maximumFractionDigits=1,l.minimumFractionDigits=0),a=new Intl.NumberFormat(o,l)}catch{a=null}j.set(s,a)}return a?le(a,e,t):null}var vo=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function Eo(...e){let t=!1;for(let o of e)if(!(o==null||!Number.isFinite(o))&&(t=!0,Math.abs(o)>=1e3))return"compact";return t?"standard":"compact"}function _t(e,t,o,n,r=null,i="symbol",s){let a=t==null||Number.isFinite(t),l=o==null||Number.isFinite(o);if(!a||!l||t==null&&o==null)return null;let c=r?.trim().toUpperCase()||null;if(!c)return null;let p=C(e);if(!p)return null;let m=s??Eo(t,o),d=typeof n=="string"&&vo.has(n)?n:null;if(t!=null&&o!=null){let f=t<=o?t:o,O=t<=o?o:t,g=f===O?ae(f,p,c,i,m):Bo(f,O,p,c,i,m);return g?{text:g,timeframe:d,bound:"range"}:null}if(t!=null){let f=ae(t,p,c,i,m);return f?{text:f,timeframe:d,bound:"from"}:null}let y=ae(o,p,c,i,m);return y?{text:y,timeframe:d,bound:"upTo"}:null}var Pt=new Map;function Rt(...e){let t=!1;for(let o of e)if(!(o==null||!Number.isFinite(o))&&(t=!0,Math.abs(o)>=1e3))return"compact";return t?"standard":"compact"}function Bt(e,t,o){let n=`${e}:${t}:${o}`,r=Pt.get(n);if(r!==void 0)return r;let i;try{let s={style:"currency",currency:t,notation:o};o==="compact"&&(s.compactDisplay="short",s.minimumFractionDigits=0,s.maximumFractionDigits=1),i=new Intl.NumberFormat(e,s)}catch{i=null}return Pt.set(n,i),i}function q(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=C(e);if(!i)return null;let s=n??Rt(t),a=Bt(i,r,s);return a?a.format(t):null}function k(e,t,o,n,r){if(!Number.isFinite(t)||!Number.isFinite(o))return null;let i=n?.trim().toUpperCase()||null;if(!i)return null;let s=C(e);if(!s)return null;let a=r??Rt(t,o),l=Bt(s,i,a);if(!l)return null;let c=Math.min(t,o),p=Math.max(t,o);return c===p?l.format(c):le(l,c,p)}var Q=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function vt(e){return[...e].sort((t,o)=>{let n=Q.indexOf(t.seniority),r=Q.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var Ao={unitText:"YEAR",duration:"P1Y"};function x(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...Ao}}function ce(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return x(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function G(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function Et(e,t,o,n){if(!o)return[];let r=k(e,o.avgMin,o.avgMax,n);return[{kind:"average",label:t,range:r,avgMin:o.avgMin,avgMax:o.avgMax,currency:n,jobCount:o.jobCount},{kind:"methodology",label:t}]}function H(e){return e.length===0?null:{"@context":"https://schema.org","@type":"ItemList",numberOfItems:e.length,itemListElement:e.map((t,o)=>({"@type":"ListItem",position:o+1,name:t.name,url:t.url}))}}function At(e){return e.length===0?null:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}function Lt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...ce(e.bySeniority,e.currency,e.categoryName,t)]):null}function Tt(e){return e.overallSalary?G("Occupation",e.skillName,{},[x(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function Ft(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:H(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function It(e,t){return e.overall?G("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[x(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...ce(e.bySeniority,e.currency,e.name,t)]):null}function kt(e,t){return t?.occupationUrl?H(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function xt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...ce(e.bySeniority,e.currency,e.categoryName,t)]):null}function wt(e,t){return e.company?.name??t.legalName??t.contact?.legalName??t.name??null}var Ut={high_school:"high school",associate_degree:"associate degree",bachelor_degree:"bachelor degree",professional_certificate:"professional certificate",postgraduate_degree:"postgraduate degree"},Lo={full_time:"FULL_TIME",part_time:"PART_TIME",contract:"CONTRACTOR",internship:"INTERN",temporary:"TEMPORARY",volunteer:"VOLUNTEER",other:"OTHER"},To={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},ue=["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","BQ","KY","CF","TD","CL","CN","CX","CC","CO","KM","CK","CR","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","CD","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","CI","JM","JP","JE","JO","KZ","KE","KI","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","CG","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","VI","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"];function Jt({job:e,board:t,shareUrl:o}){let n=wo(e),r=Jo(e),i=pe({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:Fo(e,t),datePosted:Mt(e.publishedAt),validThrough:Mt(e.expiresAt),employmentType:e.employmentType?Lo[e.employmentType]??"OTHER":"OTHER",hiringOrganization:Io(e,t),jobLocation:xo(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?Mo(e):null,baseSalary:ko(e),educationRequirements:n,experienceRequirements:r,experienceInPlaceOfEducation:e.experienceInPlaceOfEducation===!0&&n&&r?!0:void 0,url:o});return!i||Array.isArray(i)||Object.keys(i).length===0?null:i}function Fo(e,t){let o=wt(e,t),n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function Io(e,t){let o=wt(e,t);if(!o)return null;let n={"@type":"Organization",name:o},r=e.company?.website??null,i=r?U(r):null;i&&(n.sameAs=i);let s=e.company?.logoUrl??t.logoUrl??null;return s&&(n.logo=s),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function ko(e){let t=e.salaryCurrency?.trim(),o=typeof e.salaryMin=="number",n=typeof e.salaryMax=="number";if(!t||!o&&!n)return null;let r={"@type":"QuantitativeValue"};o&&(r.minValue=e.salaryMin),n&&(r.maxValue=e.salaryMax);let i=e.salaryTimeframe?To[e.salaryTimeframe]:void 0;return i&&(r.unitText=i),!o&&n&&typeof e.salaryMax=="number"?(r.value=e.salaryMax,r.minValue=e.salaryMax):!n&&o&&typeof e.salaryMin=="number"&&(r.value=e.salaryMin,r.maxValue=e.salaryMin),{"@type":"MonetaryAmount",currency:t.toUpperCase(),value:r}}function xo(e){let t=e.officeLocations.map(o=>Uo({countryCode:o.countryCode,region:o.region,locality:o.city??o.locality,postalCode:o.postalCode,name:o.displayName})).filter(o=>o!==null);return t.length===0?null:t.length===1?t[0]:t}function Uo({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},s=e?.trim(),a=t?.trim(),l=o?.trim(),c=n?.trim(),p=r?.trim();s&&(i.addressCountry=s.toUpperCase()),a&&(i.addressRegion=a),l&&(i.addressLocality=l),c&&(i.postalCode=c);let m=Object.keys(i).length>1;if(!m&&!p)return null;let d={"@type":"Place"};return p&&(d.name=p),m&&(d.address=i),d}function Mo(e){if(e.remoteWorldwide)return ue.map(n=>({"@type":"Country",name:n}));let t=[],o=new Set;for(let n of e.remoteWorkPermitCountryCodes??[]){let r=n?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}for(let n of e.remoteWorkPermitSubdivisionCodes??[]){let r=n?.split("-")[0]?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}return t.length===0?null:t.length===1?t[0]:t}function wo(e){let t=e.educationRequirements;if(!t||t.length===0)return null;if(t.includes("no_requirements"))return"no requirements";let o=t.filter(n=>n in Ut).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Ut[n]}));return o.length>0?o:null}function Jo(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function Mt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function pe(e){let t=o=>o==null?!1:Array.isArray(o)?o.length>0:typeof o=="object"?Object.keys(o).length>0:!0;if(Array.isArray(e))return e.map(o=>pe(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,pe(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var de={};A(de,{BOARD_PATHS:()=>Y,blogAuthorPath:()=>qo,blogPostPath:()=>Qt,blogTagPath:()=>qt,boardUrl:()=>z,companyMarketPath:()=>jt,companyPath:()=>Dt,companySalaryPath:()=>$o,encodePathSegment:()=>h,goAlertsConfirmPath:()=>Ko,goAlertsManagePath:()=>Vo,goJobPath:()=>Ho,jobDetailPath:()=>me,jobsCategoryPath:()=>V,jobsLocationCategoryPath:()=>K,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>$t,jobsSkillPath:()=>Nt,salaryLocationPath:()=>Qo,salarySkillPath:()=>jo,salaryTitlePath:()=>Do,suggestionPath:()=>No,talentProfilePath:()=>Go});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function me(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function V(e){return`/jobs/${h(e)}`}function Nt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function K(e,t){return`${M(e)}/${h(t)}`}function $t(e,t){return`${M(e)}/skills/${h(t)}`}function Dt(e){return`/companies/${h(e)}`}function jt(e){return`/companies/markets/${h(e)}`}function No(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?Qt(e.slug):e.type==="tag"?qt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?$t(o,e.canonicalSlug):Nt(e.canonicalSlug):o?K(o,e.canonicalSlug):V(e.canonicalSlug):e.type==="company"?Dt(e.slug):e.type==="market"?jt(e.slug):null}function $o(e){return`/companies/${h(e)}/salaries`}function Do(e){return`/salaries/titles/${h(e)}`}function jo(e){return`/salaries/skills/${h(e)}`}function Qo(e){return`/salaries/locations/${h(e)}`}function Qt(e){return`/blog/${h(e)}`}function qt(e){return`/blog/tag/${h(e)}`}function qo(e){return`/blog/author/${h(e)}`}function Go(e){return`/p/${h(e)}`}var Y={home:"/",jobs:"/jobs",companies:"/companies",salaries:"/salaries",salaryCompanies:"/salaries/companies",salaryTitles:"/salaries/titles",salarySkills:"/salaries/skills",salaryLocations:"/salaries/locations",blog:"/blog",about:"/about",privacyPolicy:"/privacy-policy",termsOfService:"/terms-of-service",cookiePolicy:"/cookie-policy",impressum:"/impressum",talent:"/talent",employers:"/employers",alertsManage:"/alerts/manage",alertsConfirm:"/alerts/confirm"};function Ho(e){return`/go/job/${e}`}function Vo(){return"/go/alerts-manage"}function Ko(){return"/go/alerts-confirm"}function z(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Gt(e,t={}){let o=e.map(r=>{let i=r.label?.trim();return i?{name:i,href:r.href?.trim()??null}:null}).filter(r=>!!r);return o.length<2?null:{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:o.map((r,i)=>{let s=r.href?Yo(r.href,t.origin??null):null,a={"@type":"ListItem",position:i+1,name:r.name};return s&&(a.item=s),a})}}function Yo(e,t){if(zo(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function zo(e){return/^https?:\/\//i.test(e)}function W(e){let t=[{kind:"home",path:Y.home},{kind:"jobs",path:Y.jobs}],o=null;for(let r of e.placeHierarchy)o=r.slug,t.push({kind:"place",name:r.name,path:M(r.slug)});let n=e.categories[0];return n&&t.push({kind:"category",name:n.name,path:o?K(o,n.slug):V(n.slug)}),t.push({kind:"job",name:e.title}),t}var Z=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"];function Wo(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function Zo(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function Ht(e){let t=C(e);if(!t)return Z.map(r=>({code:r,name:r})).sort((r,i)=>r.code<i.code?-1:r.code>i.code?1:0);let o=Wo(t),n=Zo(t).compare;return Z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function Xo(e,t){if(!Array.isArray(t)||t.length===0)return null;let o=t.map(n=>e.options?.find(r=>r.key===n)?.label).filter(n=>!!n);return o.length>0?o:null}function en(e,t){switch(e.type){case"number":return null;case"multi_select":return null;case"single_select":return typeof t!="string"?null:e.options?.find(o=>o.key===t)?.label??null;default:return typeof t=="string"&&t.trim()!==""?t:null}}function Vt(e,t,o){let n=[];for(let r of t??[]){let i=o?.[r.key];if(r.type==="boolean"){typeof i=="boolean"&&n.push({key:r.key,label:r.label,kind:"boolean",value:i});continue}if(r.type==="number"){typeof i=="number"&&Number.isFinite(i)&&n.push({key:r.key,label:r.label,kind:"number",value:i});continue}if(r.type==="multi_select"){let a=Xo(r,i);a&&n.push({key:r.key,label:r.label,kind:"multi_select",values:a});continue}let s=en(r,i);s!==null&&n.push({key:r.key,label:r.label,kind:"text",value:s})}return n}var fe={};A(fe,{ALL_COUNTRY_CODES:()=>ue,SENIORITY_ORDER:()=>Q,buildJobBreadcrumbs:()=>W,buildSalaryFaq:()=>Et,companyCategorySalaryJsonLd:()=>xt,companySalaryJsonLd:()=>kt,createAuthorProfileJsonLd:()=>Yt,createBlogArticleJsonLd:()=>Kt,createBreadcrumbJsonLd:()=>Gt,createJobPostingJsonLd:()=>Jt,crossAxisSalaryJsonLd:()=>It,faqJsonLd:()=>At,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,itemListJsonLd:()=>H,listingHead:()=>zt,listingJsonLd:()=>Wt,locationSalaryJsonLd:()=>Ft,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>Tt,sortBySeniority:()=>vt,titleSalaryJsonLd:()=>Lt});function Kt({post:e,boardName:t,permalink:o,ogImageUrl:n}){let r={"@context":"https://schema.org","@type":"Article",headline:e.title,url:o,mainEntityOfPage:{"@type":"WebPage","@id":o},publisher:{"@type":"Organization",name:t}};e.customExcerpt&&(r.description=e.customExcerpt),e.publishedAt&&(r.datePublished=e.publishedAt);let i=e.coverUrl??n;i&&(r.image=i);let s=e.authors[0];return s&&(r.author={"@type":"Person",name:s.name,...s.websiteUrl?{url:s.websiteUrl}:{}}),r}function Yt({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let s=o.trim(),a=[X(e.websiteUrl),X(e.twitterUrl),X(e.linkedinUrl),X(e.githubUrl)].filter(d=>!!d),l=`${t}#profile`,c=r.slice(0,5).map(d=>{let y=tn(n,`/blog/${d.slug}`);return y?{"@type":"Article",headline:d.title,url:y,datePublished:d.publishedAt,author:{"@id":l}}:null}).filter(d=>d!==null),p=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,m={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":l,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:s||void 0,image:e.avatarUrl??void 0,sameAs:a.length>0?a:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:p}};return c.length>0&&(m.hasPart=c),m}function X(e){if(!e)return null;let t=e.trim();if(!t)return null;try{let o=t.startsWith("http://")||t.startsWith("https://")?t:`https://${t}`;return new URL(o).toString()}catch{return null}}function tn(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function zt(e){let t=e.title,o=e.description,n=`${e.origin}${e.path}`;return{meta:[{title:t},{name:"description",content:o},{property:"og:title",content:t},{property:"og:description",content:o},{property:"og:type",content:"website"},{property:"og:url",content:n}],links:[{rel:"canonical",href:n}]}}function Wt(e){let t=[];e.breadcrumbs.length>=2&&t.push({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.breadcrumbs.map((n,r)=>({"@type":"ListItem",position:r+1,name:n.name,...n.path?{item:z(e.origin,n.path)}:{}}))});let o=(e.jobs??[]).filter(n=>n.company!=null&&!!n.company.slug);return o.length>0&&t.push({"@context":"https://schema.org","@type":"ItemList",itemListElement:o.map((n,r)=>({"@type":"ListItem",position:r+1,url:z(e.origin,me(n.company.slug,n.slug))}))}),t}var ge={};A(ge,{createSuggestController:()=>rn});function on(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function nn(e){try{let t=0;for(let o of new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e))t+=1;return t}catch{return[...e].length}}function Zt(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function rn(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,s={query:"",items:[],status:"idle",error:null},a=[],l=new Set,c=0,p=null,m=null,d=new Set;function y(){for(let u of d)u()}function f(u){s=u,y()}function O(){p!==null&&(globalThis.clearTimeout(p),p=null)}function g(){m&&(m.abort(),m=null)}function R(u){let b=++c;g();let _=new AbortController;m=_;let E={q:u};r!==void 0&&(E.limit=r),e.search.suggest(E,{signal:_.signal}).then(B=>{i||b!==c||(m=null,a=B.items,f({query:s.query,items:Zt(a,l),status:"ready",error:null}))}).catch(B=>{i||b!==c||on(B)||(m=null,f({query:s.query,items:s.items,status:"error",error:B}))})}return{setQuery(u){if(i)return;let b=u.trim();if(O(),nn(b)<o){c+=1,g(),a=[],f({query:u,items:[],status:"idle",error:null});return}c+=1,g(),f({query:u,items:s.items,status:"loading",error:null}),p=globalThis.setTimeout(()=>{p=null,!i&&R(b)},n)},setExcludedCompanySlugs(u){i||(l=new Set(u.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),f({query:s.query,items:Zt(a,l),status:s.status,error:s.error}))},getState(){return s},subscribe(u){return i?()=>{}:(d.add(u),()=>{d.delete(u)})},dispose(){i||(i=!0,O(),g(),c+=1,d.clear())}}}return ro(sn);})();
1
+ "use strict";var CavunoBoard=(()=>{var w=Object.defineProperty;var Xt=Object.getOwnPropertyDescriptor;var eo=Object.getOwnPropertyNames;var to=Object.prototype.hasOwnProperty;var oo=(e,t,o)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var A=(e,t)=>{for(var o in t)w(e,o,{get:t[o],enumerable:!0})},no=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of eo(t))!to.call(e,r)&&r!==o&&w(e,r,{get:()=>t[r],enumerable:!(n=Xt(t,r))||n.enumerable});return e};var ro=e=>no(w({},"__esModule",{value:!0}),e);var P=(e,t,o)=>oo(e,typeof t!="symbol"?t+"":t,o);var sn={};A(sn,{ACCESS_TOKEN_KEY:()=>L,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>he,BoardApiError:()=>v,BoardClient:()=>I,REFRESH_TOKEN_KEY:()=>T,SDK_VERSION:()=>$,SIGN_IN_REDIRECT_ERROR_CODES:()=>ke,SSO_LINK_PROOF_BINDING_TTL_MS:()=>oe,createBoardClient:()=>ho,filters:()=>ie,format:()=>ye,isBoardApiError:()=>S,isBoardPasswordRequired:()=>Ce,isColdRule:()=>rt,isConflict:()=>Re,isForbidden:()=>Oe,isFreeEmailWebsiteError:()=>Be,isNotFound:()=>be,isOwnMessage:()=>nt,isRateLimited:()=>Pe,isSafeApplicationUrl:()=>ne,isSignInMethodUnavailable:()=>te,isSsoBrowserMismatch:()=>Ee,isSsoRequired:()=>ve,isUnauthorized:()=>Se,isValidationError:()=>_e,lastOwnMessageId:()=>it,paginate:()=>ot,parseOAuthCompletion:()=>xe,paths:()=>de,resolveApplyAction:()=>st,resolveApplyDecision:()=>re,seo:()=>fe,ssoLinkProofBindingStore:()=>D,suggest:()=>ge});var he=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_unavailable","search_filter_unavailable","too_many_filter_values","pagination_invalid_cursor","pagination_offset_too_large","auth_unauthenticated","auth_forbidden","plan_upgrade_required","unknown_error","boards_not_found","board_page_not_found","board_auth_account_not_found","board_auth_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","board_development_origin_not_allowed_for_email","board_development_origin_not_registered","board_development_origin_requires_publishable_key","sso_required","board_auth_method_unavailable","board_auth_sso_connection_not_found","board_auth_sso_role_unavailable","board_auth_sso_provider_unavailable","board_auth_sso_browser_mismatch","board_auth_sso_not_provisioned","board_auth_sso_identity_linked_elsewhere","invalid_current_password","no_password","same_email","email_taken","invalid_token","board_password_required","board_password_invalid","jobs_not_found","jobs_invalid_filter","categories_not_found","skills_not_found","places_not_found","locations_invalid_id","locations_unavailable","companies_not_found","company_markets_not_found","company_salary_not_found","company_category_salary_not_found","salaries_title_not_found","salaries_skill_not_found","salaries_location_not_found","salaries_title_location_not_found","salaries_skill_location_not_found","blog_post_not_found","blog_author_not_found","blog_tag_not_found","feeds_not_found","feed_not_ready","talent_not_found","talent_directory_not_found","talent_directory_restricted","job_recommendations_not_found","recommended_talent_not_found","job_alert_not_found","job_alerts_disabled","candidate_alert_limit_reached","candidate_alert_not_found","candidate_entry_not_found","candidate_handle_taken","candidate_job_not_found","candidate_notification_preference_paused","candidate_profile_required","resume_invalid_file","resume_upload_forbidden","applications_external_apply_only","applications_country_not_allowed","applications_guest_not_allowed","applications_job_not_found","applications_not_found","applications_resume_invalid_file","applications_unprocessable","messaging_application_not_found","messaging_application_not_linked","messaging_blocked","messaging_cannot_block_self","messaging_cold_rule","messaging_conversation_not_found","messaging_disabled","messaging_edit_window_expired","messaging_message_deleted","messaging_message_not_found","messaging_not_author","messaging_not_participant","messaging_not_permitted","messaging_not_recipient","messaging_rate_limited","messaging_recipient_not_found","messaging_recipient_not_open","messaging_unsend_window_expired","employer_applicant_not_found","employer_ats_unprocessable","employer_checkout_failed","employer_company_exists","employer_free_email_website","employer_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","membership_required","employer_not_member","employer_payment_required","employer_pipeline_stage_not_found","employer_member_not_found","employer_invite_not_found","not_company_admin","not_company_member","company_deletion_disabled","last_admin","already_member","already_invited","invalid_email","invite_email_mismatch","candidate_role","job_not_published","talent_list_not_found","sourced_candidate_not_found","sourced_convert_unavailable","candidate_paywall_access_required","paywall_already_active","paywall_disabled","paywall_invalid_checkout_session","paywall_no_candidate_profile","paywall_no_recurring_subscription","paywall_offer_not_found","talent_access_unavailable","company_required","already_on_plan","talent_access_required","messaging_talent_access_required","stripe_not_connected","membership_plan_not_found","membership_seat_taken","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],v=class extends Error{constructor(o){super(o.message);P(this,"status");P(this,"code");P(this,"details");P(this,"requestId");P(this,"raw");this.name="BoardApiError",this.status=o.status,this.code=o.code,this.details=o.details,this.requestId=o.requestId,this.raw=o.raw}};function S(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function be(e){return S(e)&&e.status===404}function Se(e){return S(e)&&e.status===401}function Ce(e){return S(e)&&e.status===401&&e.code==="board_password_required"}function Oe(e){return S(e)&&e.status===403}function _e(e){return S(e)&&e.status===400&&e.code==="validation_bad_request"}function Pe(e){return S(e)&&e.status===429}function Re(e){return S(e)&&e.status===409}function Be(e){return S(e)&&e.status===422&&e.code==="employer_free_email_website"}function ve(e){if(!S(e)||e.status!==403)return!1;let t=e.details?.connectionIds;return Array.isArray(t)&&t.every(o=>typeof o=="string")&&(e.code==="sso_required"||te(e)&&e.details.availableMethods.methods.length===0)}function te(e){if(!S(e)||e.status!==403||e.code!=="board_auth_method_unavailable")return!1;let t=e.details?.availableMethods;if(!t||typeof t!="object")return!1;let{methods:o,ssoConnectionIds:n}=t;return Array.isArray(o)&&o.every(r=>typeof r=="string")&&Array.isArray(n)&&n.every(r=>typeof r=="string")}function Ee(e){return S(e)&&e.status===403&&e.code==="board_auth_sso_browser_mismatch"}function Ae(e){let t=new URLSearchParams;if(!e)return t;for(let[o,n]of Object.entries(e))if(n!=null)if(Array.isArray(n))for(let r of n)r!=null&&t.append(o,String(r));else t.append(o,String(n));return t}function J(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return`${e.replace(/[^a-zA-Z0-9_-]/g,"_")}-${t.toString(36)}`}var L="cavuno_board_access_token",T="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Le(){return typeof globalThis.document<"u"}function io(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function so(e,t){if(!Le())throw new Error(`storage mode '${e}' is browser-only \u2014 use 'nostore' + per-call headers on the server`);let o;try{if(o=e==="local"?globalThis.localStorage:globalThis.sessionStorage,!o)throw new Error("unavailable")}catch{throw new Error(`storage mode '${e}' is unavailable in this browsing context (storage access is blocked \u2014 e.g. a sandboxed or third-party iframe). Use 'memory', or 'nostore' + per-call headers.`)}let n=t?`:${J(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var ao=Symbol.for("@cavuno/board:nostore");var lo={[ao]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function Te(e,t){let o=e??(Le()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return io();case"nostore":return lo;case"local":case"session":return so(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function N(e,t){await e.setItem(L,t.accessToken),await e.setItem(T,t.refreshToken)}async function Fe(e){await e.removeItem(L),await e.removeItem(T)}var $="4.32.0";function co(e){return typeof e=="string"||e instanceof URLSearchParams||typeof FormData<"u"&&e instanceof FormData||typeof Blob<"u"&&e instanceof Blob||e instanceof ArrayBuffer||typeof ReadableStream<"u"&&e instanceof ReadableStream}function po(e){try{let t=new URL(e);for(let o of new Set(t.searchParams.keys()))t.searchParams.delete(o),t.searchParams.set(o,"[REDACTED]");return t.toString()}catch{return e.replace(/([?&][^=&#]+)=([^&#]*)/g,"$1=[REDACTED]")}}var I=class{constructor(t){P(this,"storage");P(this,"basePath");P(this,"options");this.options=t,this.storage=t.storage;let o=t.baseUrl.replace(/\/+$/,"");this.basePath=`${o}/v1/boards/${encodeURIComponent(t.board)}`}async fetch(t,o={}){let{body:n,query:r,headers:i,...s}=o,a=(o.method??"GET").toUpperCase(),l=`${this.basePath}${t}`,p=Ae(r).toString();p&&(l+=`?${p}`);let m=n!==void 0&&!co(n),d=n===void 0?void 0:m?JSON.stringify(n):n,y=new Headers({accept:"application/json"});m&&y.set("content-type","application/json");for(let[B,ee]of Object.entries(this.options.globalHeaders??{}))y.set(B,ee);let f=await this.storage.getItem(L);f!==null&&y.set("authorization",`Bearer ${f}`);let O=await this.storage.getItem(F);O!==null&&y.set("x-board-access",O),i&&new Headers(i).forEach((B,ee)=>{y.set(ee,B)}),(a!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${$}`);let g={url:l,init:{...s,method:a,headers:y,body:d}};this.options.onRequest&&(g=await this.options.onRequest(g));let R=po(g.url);this.options.logger?.debug(`${a} ${R}`);let u=await globalThis.fetch(g.url,g.init);if(this.options.logger?.debug(`${u.status} ${a} ${R}`),this.options.onResponse&&await this.options.onResponse(u.clone(),g),u.status===204)return;if(u.ok)return await u.json();let b;try{b=await u.json()}catch{b=void 0}let _=b?.error,E=_&&typeof _.code=="string"&&typeof _.message=="string"?new v({status:u.status,code:_.code,message:_.message,details:_.details,requestId:_.requestId,raw:b}):new v({status:u.status,code:"unknown_error",message:u.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${E.status} ${E.code} ${a} ${R}`),E}};var Ie="https://api.cavuno.com";var ke=["oauth_cancelled","oauth_failed","oauth_email_unverified","role_disabled","method_unavailable","sso_required","sso_state_invalid","sso_cancelled","sso_failed","sso_connection_unavailable","sso_not_provisioned","sso_email_required","sso_account_disabled","sso_identity_linked_elsewhere","sso_link_proof_rate_limited","sso_development_origin_not_allowed_for_email"];function uo(e){if(e instanceof URLSearchParams)return e;if(typeof e=="string"){let o=e.includes("?")?e.slice(e.indexOf("?")):e;return new URLSearchParams(o)}let t=new URLSearchParams;for(let[o,n]of Object.entries(e))n!==void 0&&t.set(o,n);return t}function mo(e){return!e||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")||e.includes("://")||/[\u0000-\u001F\u007F]/.test(e)?"/":e}function yo(e){return e==="candidate"||e==="employer"?e:null}function xe(e){let t=uo(e),o=c=>{let p=t.get(c);return p&&p.length>0?p:null},n=mo(o("returnTo")),r=yo(o("role")),i=o("error");if(i)return{kind:"error",error:i,returnTo:n};let s=o("linkProof");if(s)return{kind:"link_proof",linkProof:s,role:r,returnTo:n};let a=o("linkProofBinding");if(o("status")==="sso_link_proof_sent"&&a)return{kind:"link_proof_sent",linkProofBinding:a,role:r,returnTo:n};let l=o("token");return l?{kind:"token",token:l,method:o("method"),role:r,returnTo:n,isNewUser:o("isNew")==="1"}:{kind:"invalid",returnTo:n}}var oe=1500*1e3,fo="cavuno_board_sso_link_proof_binding";function go(){try{return globalThis.localStorage??null}catch{return null}}function D(e,t={}){let o=`${fo}:${J(e)}`,n=t.now??Date.now,r=()=>t.storage??go(),i=()=>{try{r()?.removeItem(o)}catch{}};return{begin(){let s=globalThis.crypto.getRandomValues(new Uint8Array(32)),a=Array.from(s,c=>c.toString(16).padStart(2,"0")).join(""),l=r();if(!l)throw new Error("SSO requires browser storage or an explicit browser proof");return l.setItem(o,JSON.stringify({binding:a,expiresAt:n()+oe})),a},save(s){},read(){let s=null;try{s=r()?.getItem(o)??null}catch{return null}if(!s)return null;try{let a=JSON.parse(s);if(typeof a.binding=="string"&&typeof a.expiresAt=="number"&&a.expiresAt>n())return a.binding}catch{}return i(),null},clear:i}}function Ue(e,t=""){let o=()=>D(t);async function n(i){return await N(e.storage,i),i}async function r(i){if(i?.refreshToken)return i.refreshToken;let s=await e.storage.getItem(T);if(s===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return s}return{async register(i,s){let a=await e.fetch("/auth/register",{...s,method:"POST",body:i});return n(a)},async login(i,s){let a=await e.fetch("/auth/login",{...s,method:"POST",body:i});return n(a)},async refresh(i,s){let a=await r(i),l=await e.fetch("/auth/refresh",{...s,method:"POST",body:{refreshToken:a}});return n(l)},async logout(i,s){let a=await r(i);await e.fetch("/auth/logout",{...s,method:"POST",body:{refreshToken:a}}),await Fe(e.storage)},verifyEmail(i,s){return e.fetch("/auth/verify-email",{...s,method:"POST",body:i})},verifyWorkEmail(i,s){return e.fetch("/auth/verify-work-email",{...s,method:"POST",body:i})},verifyEmailWithCode(i,s){return e.fetch("/auth/verify-email/otp",{...s,method:"POST",body:i})},resendVerification(i){return e.fetch("/auth/verify-email/resend",{...i,method:"POST"})},forgotPassword(i,s){return e.fetch("/auth/forgot-password",{...s,method:"POST",body:i})},resetPassword(i,s){return e.fetch("/auth/reset-password",{...s,method:"POST",body:i})},requestMagicLink(i,s){return e.fetch("/auth/magic-link",{...s,method:"POST",body:i})},async consumeMagicLink(i,s){let a=await e.fetch("/auth/magic-link/consume",{...s,method:"POST",body:i});return n(a)},getOAuthAuthorizationUrl(i,s,a){return e.fetch(`/auth/oauth/${i}`,{...a,method:"GET",query:s})},async exchangeOAuth(i,s){let a=await e.fetch("/auth/oauth/exchange",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)},async getSsoAuthorizationUrl(i,s,a){let l=s?.browserBindingHash;if(!l){let c=o().begin(),p=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(c));l=Array.from(new Uint8Array(p),m=>m.toString(16).padStart(2,"0")).join("")}return e.fetch(`/auth/sso/${encodeURIComponent(i)}`,{...a,method:"GET",query:{...s,browserBindingHash:l}})},async consumeSsoLinkProof(i,s){let a=await e.fetch("/auth/sso/link-proof",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)}}}function Me(e){return{posts:{list(t,o){return e.fetch("/blog/posts",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}`,{...n,query:o})},adjacent(t,o){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/adjacent`,o)},similar(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/similar`,{...n,query:o})}},tags:{list(t,o){return e.fetch("/blog/tags",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/tags/${encodeURIComponent(t)}`,{...n,query:o})}},authors:{list(t,o){return e.fetch("/blog/authors",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/authors/${encodeURIComponent(t)}`,{...n,query:o})}},search(t,o,n){return e.fetch("/blog/search",{...n,method:"POST",body:t,query:o})}}}function we(e){let t=Object.assign((n,r)=>e.fetch("/companies/markets",{...r,query:n}),{resolve(n,r){return e.fetch(`/companies/markets/${encodeURIComponent(n)}`,r)}}),o=Object.assign((n,r)=>e.fetch(`/companies/${encodeURIComponent(n)}/salaries`,r),{summary(n,r){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/summary`,r)},category(n,r,i,s){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...s,query:i})}});return{list(n,r){return e.fetch("/companies",{...r,query:n})},retrieve(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}`,{...i,query:r})},search(n,r,i){return e.fetch("/companies/search",{...i,method:"POST",body:n,query:r})},listJobs(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/jobs`,{...i,query:r})},similar(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/similar`,{...i,query:r})},markets:t,salaries:o}}function Je(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Ne(e){return{subscribe(t,o){return e.fetch("/job-alerts",{...o,method:"POST",body:t})},confirm(t,o){return e.fetch("/job-alerts/confirm",{...o,method:"POST",body:t})},resendConfirmation(t,o){return e.fetch("/job-alerts/resend-confirmation",{...o,method:"POST",body:t})},manage(t,o){return e.fetch("/job-alerts/manage",{...o,query:t})},unsubscribe(t,o){return e.fetch("/job-alerts/unsubscribe",{...o,method:"POST",body:t})},resubscribe(t,o){return e.fetch("/job-alerts/resubscribe",{...o,method:"POST",body:t})},updatePreference(t,o){return e.fetch("/job-alerts/preferences",{...o,method:"POST",body:t})},deletePreference(t,o){return e.fetch("/job-alerts/preferences",{...o,method:"DELETE",body:t})}}}function $e(e){return{plans(t,o){return e.fetch("/job-postings/plans",{...o,query:t})},create(t,o){return e.fetch("/job-postings",{...o,method:"POST",body:t})},uploadLogo(t,o){let n=new FormData;return n.append("file",t),e.fetch("/job-postings/logo",{...o,method:"POST",body:n})},fetchLogoByDomain(t,o){return e.fetch("/job-postings/logo/fetch",{...o,query:{domain:t}})},sendBillingVerification(t,o){return e.fetch("/job-postings/send-verification",{...o,method:"POST",body:t})},getBillingOptions(t,o){return e.fetch("/job-postings/billing-options",{...o,method:"POST",body:t})}}}function De(e){return{collectionChoices(t,o,n){return e.fetch(`/job-fields/${encodeURIComponent(t)}/choices`,{...n,query:o})},list(t,o){return e.fetch("/jobs",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}`,{...n,query:o})},search(t,o,n){return e.fetch("/jobs/search",{...n,method:"POST",body:t,query:o})},similar(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/similar`,{...n,query:o})},apply(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply`,{...n,method:"POST",body:o??{}})},createApplyIntent(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-intents`,{...n,method:"POST",body:o})},prepareApplyApproval(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-approvals`,{...n,method:"POST",body:o})},uploadApplicationResume(t,o,n,r){let i=new FormData;return i.append("file",o),n?.applicationId&&i.append("applicationId",n.applicationId),e.fetch(`/jobs/${encodeURIComponent(t)}/apply/resume`,{...r,method:"POST",body:i})},myApplication(t,o){return e.fetch(`/jobs/${encodeURIComponent(t)}/application`,o)}}}function je(e){return{search(t,o){return e.fetch("/locations/search",{...o,query:t})},resolve(t,o){return e.fetch("/locations/resolve",{...o,method:"POST",body:t})}}}function Qe(e){return{retrieve(t,o){return e.fetch("/me",{...o,query:t})},delete(t){return e.fetch("/me",{...t,method:"DELETE"})},async updatePassword(t,o){let n=await e.fetch("/me/password",{...o,method:"POST",body:t});return await N(e.storage,n),n},requestEmailChange(t,o){return e.fetch("/me/email",{...o,method:"POST",body:t})},confirmEmailChange(t,o){return e.fetch("/me/email/confirm",{...o,method:"POST",body:t})},acceptInvite(t,o){return e.fetch("/me/invites/accept",{...o,method:"POST",body:t})},profile:{listObjectReferenceChoices(t,o,n){return e.fetch("/me/profile/object-references/choices",{...n,query:{...o,fieldKey:t}})},retrieve(t,o){return e.fetch("/me/profile",{...o,query:t})},update(t,o,n){return e.fetch("/me/profile",{...n,method:"PATCH",body:t,query:o})},retrieveCustomFields(t){return e.fetch("/me/profile/custom-fields",{...t})},updateCustomFields(t,o){return e.fetch("/me/profile/custom-fields",{...o,method:"PATCH",body:t})},retrieveObjectReferences(t){return e.fetch("/me/profile/object-references",t)},updateObjectReferences(t,o){return e.fetch("/me/profile/object-references",{...o,method:"PUT",body:t})},handleAvailable(t,o){return e.fetch("/me/profile/handle-available",{...o,query:{handle:t}})},listExperience(t){return e.fetch("/me/profile/experience",t)},createExperience(t,o){return e.fetch("/me/profile/experience",{...o,method:"POST",body:t})},updateExperience(t,o,n){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteExperience(t,o){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listEducation(t){return e.fetch("/me/profile/education",t)},createEducation(t,o){return e.fetch("/me/profile/education",{...o,method:"POST",body:t})},updateEducation(t,o,n){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteEducation(t,o){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listSkills(t){return e.fetch("/me/profile/skills",t)},updateSkills(t,o){return e.fetch("/me/profile/skills",{...o,method:"PUT",body:t})},listLanguages(t){return e.fetch("/me/profile/languages",t)},updateLanguages(t,o){return e.fetch("/me/profile/languages",{...o,method:"PUT",body:t})},uploadAvatar(t,o){let n=new FormData;return n.append("file",t),e.fetch("/me/profile/avatar",{...o,method:"POST",body:n})}},notificationPreferences:{retrieve(t){return e.fetch("/me/notification-preferences",t)},update(t,o){return e.fetch("/me/notification-preferences",{...o,method:"PUT",body:t})},unsubscribeWithToken(t,o){return e.fetch("/me/notification-preferences/unsubscribe",{...o,method:"POST",body:t})}},companies:{listObjectReferenceChoices(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references/choices`,{...r,query:{...n,fieldKey:o}})},retrieveObjectReferences(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,o)},updateObjectReferences(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,{...n,method:"PUT",body:o})},search(t,o){return e.fetch("/me/companies/search",{...o,query:t})},list(t){return e.fetch("/me/companies",t)},create(t,o){return e.fetch("/me/companies",{...o,method:"POST",body:t})},claim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"POST"})},cancelClaim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"DELETE"})},retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},retrieveCustomFields(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,o)},updateCustomFields(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,{...n,method:"PATCH",body:o})},delete(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listMembers(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members`,o)},updateMemberRole(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},removeMember(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},leave(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership`,{...o,method:"DELETE"})},startMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout`,{...n,method:"POST",body:o})},retrieveMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout/${encodeURIComponent(o)}`,n)},listInvites(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,o)},createInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,{...n,method:"POST",body:o})},revokeInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},uploadLogo(t,o,n){let r=new FormData;return r.append("file",o),e.fetch(`/me/companies/${encodeURIComponent(t)}/logo`,{...n,method:"POST",body:r})},workEmail:{verify(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/verify`,{...n,method:"POST",body:o})},confirm(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/confirm`,{...n,method:"POST",body:o})}},jobs:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,query:o})},retrieve(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,n)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},delete(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},publish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/publish`,{...n,method:"POST"})},unpublish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/unpublish`,{...n,method:"POST"})},checkout(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/checkout`,{...r,method:"POST",body:n})}},billingOptions:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-options`,o)}},billingPortal:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-portal`,{...n,method:"POST",body:o})}},jobStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats/timeseries`,{...n,query:o})}},profileStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats/timeseries`,{...n,query:o})}},recommendedTalent:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/recommended-talent`,{...n,query:o})}},talentLists:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,o)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...n,method:"DELETE"})}},sourcedCandidates:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,query:o})},add(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,method:"POST",body:o})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},convert(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}/convert`,{...r,method:"POST",body:n})}},applicants:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants`,{...n,query:o})},move(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/stage`,{...r,method:"PATCH",body:n})},bulkMove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/move`,{...n,method:"POST",body:o})},bulkReject(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/reject`,{...n,method:"POST",body:o})},addNote(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/notes`,{...r,method:"POST",body:n})}},pipelineStages:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},reorder(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/reorder`,{...n,method:"PUT",body:o})}}},talentAccess:{retrieve(t){return e.fetch("/me/talent-access",t)},retrieveCandidate(t,o){return e.fetch(`/me/talent-access/candidates/${encodeURIComponent(t)}`,o)},checkout(t,o){return e.fetch("/me/talent-access/checkout",{...o,method:"POST",body:t})},claim(t,o){return e.fetch("/me/talent-access/claim",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/talent-access/checkout/${encodeURIComponent(t)}`,o)},unlock(t,o){return e.fetch("/me/talent-access/unlocks",{...o,method:"POST",body:t})},upgrade(t,o){return e.fetch("/me/talent-access/upgrade",{...o,method:"POST",body:t})}},alerts:{list(t){return e.fetch("/me/alerts",t)},create(t,o){return e.fetch("/me/alerts",{...o,method:"POST",body:t})},retrieve(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...n,method:"PUT",body:o})},remove(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...o,method:"DELETE"})}},applications:{list(t,o){return e.fetch("/me/applications",{...o,query:t})},retrieve(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,o)},updateFacts(t,o,n){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},withdraw(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}/withdraw`,{...o,method:"POST"})}},resume:{upload(t,o,n){let r=new FormData;return r.append("resume",t),o?.keepResumeOnFile&&r.append("keepResumeOnFile","true"),o?.importMode&&r.append("importMode",o.importMode),o?.confirmReplaceAll&&r.append("confirmReplaceAll","true"),e.fetch("/me/resume",{...n,method:"POST",body:r})},retrieve(t){return e.fetch("/me/resume",t)},delete(t){return e.fetch("/me/resume",{...t,method:"DELETE"})}},recommendedJobs:{list(t,o){return e.fetch("/me/recommended-jobs",{...o,query:t})}},savedJobs:{list(t,o){return e.fetch("/me/saved-jobs",{...o,query:t})},save(t,o,n){return e.fetch("/me/saved-jobs",{...n,method:"POST",body:t,query:o})},unsave(t,o,n){return e.fetch(`/me/saved-jobs/${encodeURIComponent(t)}`,{...n,method:"DELETE",query:o})}},conversations:{list(t,o){return e.fetch("/me/conversations",{...o,query:t})},unreadCount(t){return e.fetch("/me/conversations/unread-count",t)},retrieve(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}`,o)},listMessages(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/messages`,{...n,query:o})},start(t,o){return e.fetch("/me/conversations",{...o,method:"POST",body:t})},startAboutApplication(t,o){return e.fetch("/me/conversations/about-application",{...o,method:"POST",body:t})},reply(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/reply`,{...n,method:"POST",body:o})},markRead(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/read`,{...o,method:"POST"})},archive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/archive`,{...o,method:"POST"})},unarchive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/unarchive`,{...o,method:"POST"})},findExisting(t,o){return e.fetch("/me/conversations/find-existing",{...o,query:t})}},blocks:{list(t){return e.fetch("/me/blocks",t)},create(t,o){return e.fetch("/me/blocks",{...o,method:"POST",body:t})},remove(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},status(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,o)}},messages:{edit(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},unsend(t,o){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},report(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}/report`,{...n,method:"POST",body:o})}},marketingConsent:{retrieve(t){return e.fetch("/me/marketing-consent",t)},grant(t){return e.fetch("/me/marketing-consent/grant",{...t,method:"POST"})},withdraw(t){return e.fetch("/me/marketing-consent/withdraw",{...t,method:"POST"})}},access:{checkout(t,o){return e.fetch("/me/access/checkout",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/access/checkout/${encodeURIComponent(t)}`,o)},grant(t){return e.fetch("/me/access/grant",t)},portal(t,o){return e.fetch("/me/access/portal",{...o,method:"POST",body:t})}}}}function qe(e){return{async verify(t,o){let n=await e.fetch("/password/verify",{...o,method:"POST",body:{password:t}});return await e.storage.setItem(F,n.token),n}}}function Ge(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function He(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function Ve(e){return{retrieve(t,o){return e.fetch(`/profile-fields/${encodeURIComponent(t)}`,o)},choices(t,o,n,r){return e.fetch(`/profile-fields/${encodeURIComponent(t)}/${encodeURIComponent(o)}/choices`,{...r,query:n})}}}function Ke(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function Ye(e){return{companies:{list(t){return e.fetch("/salaries/companies",t)}},titles:{list(t,o){return e.fetch("/salaries/titles",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}`,{...n,query:o})},locations(t,o,n){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}/locations`,{...n,query:o})},location(t,o,n,r){return e.fetch(`/salaries/titles/${encodeURIComponent(t)}/${encodeURIComponent(o)}`,{...r,query:n})}},skills:{list(t,o){return e.fetch("/salaries/skills",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}`,{...n,query:o})},locations(t,o,n){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}/locations`,{...n,query:o})},location(t,o,n,r){return e.fetch(`/salaries/skills/${encodeURIComponent(t)}/${encodeURIComponent(o)}`,{...r,query:n})}},locations:{list(t,o){return e.fetch("/salaries/locations",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}`,{...n,query:o})},titles(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}/titles`,{...n,query:o})},skills(t,o,n){return e.fetch(`/salaries/locations/${encodeURIComponent(t)}/skills`,{...n,query:o})}}}}function ze(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function We(e){return Object.assign(t=>e.fetch("/sitemap",t),{entries(t,o,n){return e.fetch(`/sitemap/${encodeURIComponent(t)}`,{...n,query:o})}})}function Ze(e){return{list(t,o){let n=t?{...t,customFields:t.customFields?JSON.stringify(t.customFields):void 0,objectReferences:t.objectReferences?JSON.stringify(t.objectReferences):void 0}:void 0;return e.fetch("/talent",{...o,query:n})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function et(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function Xe(e,t){return{...et(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function tt(e){return{categories:Xe(e,"categories"),skills:Xe(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...et(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function ot(e,t,o){async function*n(){let r=t;for(;;){let i=await e(r,o);if(yield i,!i.hasMore||i.nextCursor===null)return;let{offset:s,...a}=r??{};r={...a,cursor:i.nextCursor}}}return{pages:n,async*[Symbol.asyncIterator](){for await(let r of n())yield*r.data},async toArray({limit:r}){let i=[];for await(let s of n())if(i.push(...s.data),i.length>=r)break;return i.slice(0,r)}}}function nt(e,t){return e.authorBoardUserId!==t}function rt(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function it(e,t){for(let o=e.length-1;o>=0;o--){let n=e[o];if(n.authorBoardUserId!==t)return n.id}return null}function ne(e){let t=e.replace(/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,"").replace(/[\t\n\r]/g,""),o=/^([a-z][a-z0-9+.-]*):/i.exec(t)?.[1]?.toLowerCase();return o===void 0?!0:o==="http"||o==="https"||o==="mailto"}function re(e){let t=e.applicationUrl&&ne(e.applicationUrl)?e.applicationUrl:null;return!t&&!e.jobSlug?{kind:"none"}:e.registrationWall&&!e.viewer?{kind:"sign-in",reason:"registration-wall"}:t?{kind:"external",url:t}:e.jobSlug?e.viewer?e.viewer.emailVerified?e.applied?{kind:"applied"}:{kind:"native",jobSlug:e.jobSlug}:{kind:"verify-email"}:e.allowGuestApply?{kind:"guest",jobSlug:e.jobSlug}:{kind:"sign-in",reason:"native-apply"}:{kind:"none"}}function st(e){let t=re({...e,registrationWall:!1,allowGuestApply:!1});return t.kind==="sign-in"?{kind:"sign-in"}:t}function ho(e){let t=new I({baseUrl:e.baseUrl??Ie,board:e.board,storage:Te(e.auth?.storage,e.board),globalHeaders:e.globalHeaders,onRequest:e.onRequest,onResponse:e.onResponse,logger:e.logger});return{client:t,context(o){return t.fetch("",o)},seo(o){return t.fetch("/seo",o)},jobs:De(t),embed:Je(t),companies:we(t),blog:Me(t),auth:Ue(t,e.board),me:Qe(t),password:qe(t),taxonomy:tt(t),search:ze(t),locations:je(t),redirects:Ke(t),jobAlerts:Ne(t),jobPosting:$e(t),salaries:Ye(t),talent:Ze(t),profileFields:Ve(t),plans:He(t),paywall:Ge(t),sitemap:We(t)}}var ie={};A(ie,{DEFAULT_SORT:()=>bo,EMPLOYMENT_TYPES:()=>lt,JOB_SORTS:()=>pt,REMOTE_OPTIONS:()=>at,SENIORITIES:()=>ct,parseCategory:()=>dt,parseCompany:()=>mt,parseListingFilters:()=>Co,parseSeniority:()=>ut});var at=["on_site","hybrid","remote"],lt=["full_time","part_time","contract","internship","temporary"],ct=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],pt=["relevance","newest","salary_high"],bo="relevance";var So=new Set(ct);function ut(e){let t=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],o=[],n=new Set;for(let r of t){if(typeof r!="string")continue;let i=r.trim().toLowerCase().normalize("NFC");!i||n.has(i)||So.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function mt(e){return yt(e,10)}function dt(e){return yt(e,10)}function yt(e,t){let o=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],n=[],r=new Set;for(let i of o){if(typeof i!="string")continue;let s=i.trim().toLowerCase().normalize("NFC");if(!(!s||r.has(s))&&(r.add(s),n.push(s),n.length>=t))break}return n.length>0?n:void 0}function Co(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:at.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:lt.includes(e.employmentType)?e.employmentType:void 0,seniority:ut(e.seniority),company:mt(e.company),category:dt(e.category),sort:pt.includes(e.sort)?e.sort:void 0}}var ye={};A(ye,{COUNTRY_CODES:()=>Z,buildJobBreadcrumbs:()=>W,countryOptions:()=>Ht,formatDate:()=>St,formatMonthYear:()=>Ot,formatPublishedRelativeDate:()=>Ct,formatSalaryRange:()=>_t,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>Vt});function C(e){let t=e.trim();if(!t)return null;try{let o=t.replace(/_/g,"-"),[n]=Intl.getCanonicalLocales(o);if(!n)return null;let[r]=Intl.NumberFormat.supportedLocalesOf([n]);return r??null}catch{return null}}var ft=new Map,gt=new Map,ht=new Map,bt=new Map;function Oo(e){let t=ft.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),ft.set(e,t)),t}function _o(e){let t=gt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),gt.set(e,t)),t}function Po(e){let t=ht.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),ht.set(e,t)),t}function Ro(e){let t=bt.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),bt.set(e,t)),t}function se(e,t,o){try{return Oo(o).format(e,t)}catch{return null}}function St(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=C(e);if(!n)return null;try{return Po(n).format(o)}catch{return o.toISOString().split("T")[0]}}function Ct(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;let i=o-n.getTime(),s=Math.abs(i),a=60*1e3,l=60*a,c=24*l,p=7*c,m=30*c,d=365*c;if(s<a)try{return _o(r).format(0,"second")}catch{return se(0,"second",r)}let y=[{unit:"year",ms:d},{unit:"month",ms:m},{unit:"week",ms:p},{unit:"day",ms:c},{unit:"hour",ms:l},{unit:"minute",ms:a}];for(let g of y)if(s>=g.ms){let R=Math.round(s/g.ms),u=i>=0?-R:R;return se(u,g.unit,r)}let f=Math.round(s/1e3),O=i>=0?-f:f;return se(O,"second",r)}function Ot(e,t){if(!t)return null;let n=/^\d{4}-\d{2}(-\d{2})?$/.test(t)?new Date(t.length===7?`${t}-01T00:00:00.000Z`:`${t}T00:00:00.000Z`):new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;try{return Ro(r).format(n)}catch{return null}}var j=new Map;function ae(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,s=j.get(i);if(s===void 0){try{let a={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(a.compactDisplay="short",a.maximumFractionDigits=1,a.minimumFractionDigits=0),s=new Intl.NumberFormat(t,a)}catch{s=null}j.set(i,s)}return s?s.format(e):null}function le(e,t,o){if(typeof e.formatRange=="function")try{return e.formatRange(t,o)}catch{}try{return`${e.format(t)}\u2013${e.format(o)}`}catch{return null}}function Bo(e,t,o,n,r="symbol",i="compact"){let s=`${o}:${n}:${r}:${i}:range`,a=j.get(s);if(a===void 0){try{let l={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(l.compactDisplay="short",l.maximumFractionDigits=1,l.minimumFractionDigits=0),a=new Intl.NumberFormat(o,l)}catch{a=null}j.set(s,a)}return a?le(a,e,t):null}var vo=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function Eo(...e){let t=!1;for(let o of e)if(!(o==null||!Number.isFinite(o))&&(t=!0,Math.abs(o)>=1e3))return"compact";return t?"standard":"compact"}function _t(e,t,o,n,r=null,i="symbol",s){let a=t==null||Number.isFinite(t),l=o==null||Number.isFinite(o);if(!a||!l||t==null&&o==null)return null;let c=r?.trim().toUpperCase()||null;if(!c)return null;let p=C(e);if(!p)return null;let m=s??Eo(t,o),d=typeof n=="string"&&vo.has(n)?n:null;if(t!=null&&o!=null){let f=t<=o?t:o,O=t<=o?o:t,g=f===O?ae(f,p,c,i,m):Bo(f,O,p,c,i,m);return g?{text:g,timeframe:d,bound:"range"}:null}if(t!=null){let f=ae(t,p,c,i,m);return f?{text:f,timeframe:d,bound:"from"}:null}let y=ae(o,p,c,i,m);return y?{text:y,timeframe:d,bound:"upTo"}:null}var Pt=new Map;function Rt(...e){let t=!1;for(let o of e)if(!(o==null||!Number.isFinite(o))&&(t=!0,Math.abs(o)>=1e3))return"compact";return t?"standard":"compact"}function Bt(e,t,o){let n=`${e}:${t}:${o}`,r=Pt.get(n);if(r!==void 0)return r;let i;try{let s={style:"currency",currency:t,notation:o};o==="compact"&&(s.compactDisplay="short",s.minimumFractionDigits=0,s.maximumFractionDigits=1),i=new Intl.NumberFormat(e,s)}catch{i=null}return Pt.set(n,i),i}function q(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=C(e);if(!i)return null;let s=n??Rt(t),a=Bt(i,r,s);return a?a.format(t):null}function k(e,t,o,n,r){if(!Number.isFinite(t)||!Number.isFinite(o))return null;let i=n?.trim().toUpperCase()||null;if(!i)return null;let s=C(e);if(!s)return null;let a=r??Rt(t,o),l=Bt(s,i,a);if(!l)return null;let c=Math.min(t,o),p=Math.max(t,o);return c===p?l.format(c):le(l,c,p)}var Q=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function vt(e){return[...e].sort((t,o)=>{let n=Q.indexOf(t.seniority),r=Q.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var Ao={unitText:"YEAR",duration:"P1Y"};function x(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...Ao}}function ce(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return x(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function G(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function Et(e,t,o,n){if(!o)return[];let r=k(e,o.avgMin,o.avgMax,n);return[{kind:"average",label:t,range:r,avgMin:o.avgMin,avgMax:o.avgMax,currency:n,jobCount:o.jobCount},{kind:"methodology",label:t}]}function H(e){return e.length===0?null:{"@context":"https://schema.org","@type":"ItemList",numberOfItems:e.length,itemListElement:e.map((t,o)=>({"@type":"ListItem",position:o+1,name:t.name,url:t.url}))}}function At(e){return e.length===0?null:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.map(t=>({"@type":"Question",name:t.q,acceptedAnswer:{"@type":"Answer",text:t.a}}))}}function Lt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...ce(e.bySeniority,e.currency,e.categoryName,t)]):null}function Tt(e){return e.overallSalary?G("Occupation",e.skillName,{},[x(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function Ft(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:H(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function It(e,t){return e.overall?G("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[x(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...ce(e.bySeniority,e.currency,e.name,t)]):null}function kt(e,t){return t?.occupationUrl?H(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function xt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...ce(e.bySeniority,e.currency,e.categoryName,t)]):null}function wt(e,t){return e.company?.name??t.legalName??t.contact?.legalName??t.name??null}var Ut={high_school:"high school",associate_degree:"associate degree",bachelor_degree:"bachelor degree",professional_certificate:"professional certificate",postgraduate_degree:"postgraduate degree"},Lo={full_time:"FULL_TIME",part_time:"PART_TIME",contract:"CONTRACTOR",internship:"INTERN",temporary:"TEMPORARY",volunteer:"VOLUNTEER",other:"OTHER"},To={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},ue=["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","VG","BN","BG","BF","BI","KH","CM","CA","CV","BQ","KY","CF","TD","CL","CN","CX","CC","CO","KM","CK","CR","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","CD","EC","EG","SV","GQ","ER","EE","SZ","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","CI","JM","JP","JE","JO","KZ","KE","KI","XK","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MK","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","CG","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","KR","SS","ES","LK","SD","SR","SJ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","VI","UY","UZ","VU","VA","VE","VN","WF","EH","YE","ZM","ZW"];function Jt({job:e,board:t,shareUrl:o}){let n=wo(e),r=Jo(e),i=pe({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:Fo(e,t),datePosted:Mt(e.publishedAt),validThrough:Mt(e.expiresAt),employmentType:e.employmentType?Lo[e.employmentType]??"OTHER":"OTHER",hiringOrganization:Io(e,t),jobLocation:xo(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?Mo(e):null,baseSalary:ko(e),educationRequirements:n,experienceRequirements:r,experienceInPlaceOfEducation:e.experienceInPlaceOfEducation===!0&&n&&r?!0:void 0,url:o});return!i||Array.isArray(i)||Object.keys(i).length===0?null:i}function Fo(e,t){let o=wt(e,t),n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function Io(e,t){let o=wt(e,t);if(!o)return null;let n={"@type":"Organization",name:o},r=e.company?.website??null,i=r?U(r):null;i&&(n.sameAs=i);let s=e.company?.logoUrl??t.logoUrl??null;return s&&(n.logo=s),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function ko(e){let t=e.salaryCurrency?.trim(),o=typeof e.salaryMin=="number",n=typeof e.salaryMax=="number";if(!t||!o&&!n)return null;let r={"@type":"QuantitativeValue"};o&&(r.minValue=e.salaryMin),n&&(r.maxValue=e.salaryMax);let i=e.salaryTimeframe?To[e.salaryTimeframe]:void 0;return i&&(r.unitText=i),!o&&n&&typeof e.salaryMax=="number"?(r.value=e.salaryMax,r.minValue=e.salaryMax):!n&&o&&typeof e.salaryMin=="number"&&(r.value=e.salaryMin,r.maxValue=e.salaryMin),{"@type":"MonetaryAmount",currency:t.toUpperCase(),value:r}}function xo(e){let t=e.officeLocations.map(o=>Uo({countryCode:o.countryCode,region:o.region,locality:o.city??o.locality,postalCode:o.postalCode,name:o.displayName})).filter(o=>o!==null);return t.length===0?null:t.length===1?t[0]:t}function Uo({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},s=e?.trim(),a=t?.trim(),l=o?.trim(),c=n?.trim(),p=r?.trim();s&&(i.addressCountry=s.toUpperCase()),a&&(i.addressRegion=a),l&&(i.addressLocality=l),c&&(i.postalCode=c);let m=Object.keys(i).length>1;if(!m&&!p)return null;let d={"@type":"Place"};return p&&(d.name=p),m&&(d.address=i),d}function Mo(e){if(e.remoteWorldwide)return ue.map(n=>({"@type":"Country",name:n}));let t=[],o=new Set;for(let n of e.remoteWorkPermitCountryCodes??[]){let r=n?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}for(let n of e.remoteWorkPermitSubdivisionCodes??[]){let r=n?.split("-")[0]?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}return t.length===0?null:t.length===1?t[0]:t}function wo(e){let t=e.educationRequirements;if(!t||t.length===0)return null;if(t.includes("no_requirements"))return"no requirements";let o=t.filter(n=>n in Ut).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Ut[n]}));return o.length>0?o:null}function Jo(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function Mt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function pe(e){let t=o=>o==null?!1:Array.isArray(o)?o.length>0:typeof o=="object"?Object.keys(o).length>0:!0;if(Array.isArray(e))return e.map(o=>pe(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,pe(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var de={};A(de,{BOARD_PATHS:()=>Y,blogAuthorPath:()=>qo,blogPostPath:()=>Qt,blogTagPath:()=>qt,boardUrl:()=>z,companyMarketPath:()=>jt,companyPath:()=>Dt,companySalaryPath:()=>$o,encodePathSegment:()=>h,goAlertsConfirmPath:()=>Ko,goAlertsManagePath:()=>Vo,goJobPath:()=>Ho,jobDetailPath:()=>me,jobsCategoryPath:()=>V,jobsLocationCategoryPath:()=>K,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>$t,jobsSkillPath:()=>Nt,salaryLocationPath:()=>Qo,salarySkillPath:()=>jo,salaryTitlePath:()=>Do,suggestionPath:()=>No,talentProfilePath:()=>Go});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function me(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function V(e){return`/jobs/${h(e)}`}function Nt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function K(e,t){return`${M(e)}/${h(t)}`}function $t(e,t){return`${M(e)}/skills/${h(t)}`}function Dt(e){return`/companies/${h(e)}`}function jt(e){return`/companies/markets/${h(e)}`}function No(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?Qt(e.slug):e.type==="tag"?qt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?$t(o,e.canonicalSlug):Nt(e.canonicalSlug):o?K(o,e.canonicalSlug):V(e.canonicalSlug):e.type==="company"?Dt(e.slug):e.type==="market"?jt(e.slug):null}function $o(e){return`/companies/${h(e)}/salaries`}function Do(e){return`/salaries/titles/${h(e)}`}function jo(e){return`/salaries/skills/${h(e)}`}function Qo(e){return`/salaries/locations/${h(e)}`}function Qt(e){return`/blog/${h(e)}`}function qt(e){return`/blog/tag/${h(e)}`}function qo(e){return`/blog/author/${h(e)}`}function Go(e){return`/p/${h(e)}`}var Y={home:"/",jobs:"/jobs",companies:"/companies",salaries:"/salaries",salaryCompanies:"/salaries/companies",salaryTitles:"/salaries/titles",salarySkills:"/salaries/skills",salaryLocations:"/salaries/locations",blog:"/blog",about:"/about",privacyPolicy:"/privacy-policy",termsOfService:"/terms-of-service",cookiePolicy:"/cookie-policy",impressum:"/impressum",talent:"/talent",employers:"/employers",alertsManage:"/alerts/manage",alertsConfirm:"/alerts/confirm"};function Ho(e){return`/go/job/${e}`}function Vo(){return"/go/alerts-manage"}function Ko(){return"/go/alerts-confirm"}function z(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Gt(e,t={}){let o=e.map(r=>{let i=r.label?.trim();return i?{name:i,href:r.href?.trim()??null}:null}).filter(r=>!!r);return o.length<2?null:{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:o.map((r,i)=>{let s=r.href?Yo(r.href,t.origin??null):null,a={"@type":"ListItem",position:i+1,name:r.name};return s&&(a.item=s),a})}}function Yo(e,t){if(zo(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function zo(e){return/^https?:\/\//i.test(e)}function W(e){let t=[{kind:"home",path:Y.home},{kind:"jobs",path:Y.jobs}],o=null;for(let r of e.placeHierarchy)o=r.slug,t.push({kind:"place",name:r.name,path:M(r.slug)});let n=e.categories[0];return n&&t.push({kind:"category",name:n.name,path:o?K(o,n.slug):V(n.slug)}),t.push({kind:"job",name:e.title}),t}var Z=["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"];function Wo(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function Zo(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function Ht(e){let t=C(e);if(!t)return Z.map(r=>({code:r,name:r})).sort((r,i)=>r.code<i.code?-1:r.code>i.code?1:0);let o=Wo(t),n=Zo(t).compare;return Z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function Xo(e,t){if(!Array.isArray(t)||t.length===0)return null;let o=t.map(n=>e.options?.find(r=>r.key===n)?.label).filter(n=>!!n);return o.length>0?o:null}function en(e,t){switch(e.type){case"number":return null;case"multi_select":return null;case"single_select":return typeof t!="string"?null:e.options?.find(o=>o.key===t)?.label??null;default:return typeof t=="string"&&t.trim()!==""?t:null}}function Vt(e,t,o){let n=[];for(let r of t??[]){let i=o?.[r.key];if(r.type==="boolean"){typeof i=="boolean"&&n.push({key:r.key,label:r.label,kind:"boolean",value:i});continue}if(r.type==="number"){typeof i=="number"&&Number.isFinite(i)&&n.push({key:r.key,label:r.label,kind:"number",value:i});continue}if(r.type==="multi_select"){let a=Xo(r,i);a&&n.push({key:r.key,label:r.label,kind:"multi_select",values:a});continue}let s=en(r,i);s!==null&&n.push({key:r.key,label:r.label,kind:"text",value:s})}return n}var fe={};A(fe,{ALL_COUNTRY_CODES:()=>ue,SENIORITY_ORDER:()=>Q,buildJobBreadcrumbs:()=>W,buildSalaryFaq:()=>Et,companyCategorySalaryJsonLd:()=>xt,companySalaryJsonLd:()=>kt,createAuthorProfileJsonLd:()=>Yt,createBlogArticleJsonLd:()=>Kt,createBreadcrumbJsonLd:()=>Gt,createJobPostingJsonLd:()=>Jt,crossAxisSalaryJsonLd:()=>It,faqJsonLd:()=>At,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,itemListJsonLd:()=>H,listingHead:()=>zt,listingJsonLd:()=>Wt,locationSalaryJsonLd:()=>Ft,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>Tt,sortBySeniority:()=>vt,titleSalaryJsonLd:()=>Lt});function Kt({post:e,boardName:t,permalink:o,ogImageUrl:n}){let r={"@context":"https://schema.org","@type":"Article",headline:e.title,url:o,mainEntityOfPage:{"@type":"WebPage","@id":o},publisher:{"@type":"Organization",name:t}};e.customExcerpt&&(r.description=e.customExcerpt),e.publishedAt&&(r.datePublished=e.publishedAt);let i=e.coverUrl??n;i&&(r.image=i);let s=e.authors[0];return s&&(r.author={"@type":"Person",name:s.name,...s.websiteUrl?{url:s.websiteUrl}:{}}),r}function Yt({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let s=o.trim(),a=[X(e.websiteUrl),X(e.twitterUrl),X(e.linkedinUrl),X(e.githubUrl)].filter(d=>!!d),l=`${t}#profile`,c=r.slice(0,5).map(d=>{let y=tn(n,`/blog/${d.slug}`);return y?{"@type":"Article",headline:d.title,url:y,datePublished:d.publishedAt,author:{"@id":l}}:null}).filter(d=>d!==null),p=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,m={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":l,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:s||void 0,image:e.avatarUrl??void 0,sameAs:a.length>0?a:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:p}};return c.length>0&&(m.hasPart=c),m}function X(e){if(!e)return null;let t=e.trim();if(!t)return null;try{let o=t.startsWith("http://")||t.startsWith("https://")?t:`https://${t}`;return new URL(o).toString()}catch{return null}}function tn(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function zt(e){let t=e.title,o=e.description,n=`${e.origin}${e.path}`;return{meta:[{title:t},{name:"description",content:o},{property:"og:title",content:t},{property:"og:description",content:o},{property:"og:type",content:"website"},{property:"og:url",content:n}],links:[{rel:"canonical",href:n}]}}function Wt(e){let t=[];e.breadcrumbs.length>=2&&t.push({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.breadcrumbs.map((n,r)=>({"@type":"ListItem",position:r+1,name:n.name,...n.path?{item:z(e.origin,n.path)}:{}}))});let o=(e.jobs??[]).filter(n=>n.company!=null&&!!n.company.slug);return o.length>0&&t.push({"@context":"https://schema.org","@type":"ItemList",itemListElement:o.map((n,r)=>({"@type":"ListItem",position:r+1,url:z(e.origin,me(n.company.slug,n.slug))}))}),t}var ge={};A(ge,{createSuggestController:()=>rn});function on(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function nn(e){try{let t=0;for(let o of new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e))t+=1;return t}catch{return[...e].length}}function Zt(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function rn(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,s={query:"",items:[],status:"idle",error:null},a=[],l=new Set,c=0,p=null,m=null,d=new Set;function y(){for(let u of d)u()}function f(u){s=u,y()}function O(){p!==null&&(globalThis.clearTimeout(p),p=null)}function g(){m&&(m.abort(),m=null)}function R(u){let b=++c;g();let _=new AbortController;m=_;let E={q:u};r!==void 0&&(E.limit=r),e.search.suggest(E,{signal:_.signal}).then(B=>{i||b!==c||(m=null,a=B.items,f({query:s.query,items:Zt(a,l),status:"ready",error:null}))}).catch(B=>{i||b!==c||on(B)||(m=null,f({query:s.query,items:s.items,status:"error",error:B}))})}return{setQuery(u){if(i)return;let b=u.trim();if(O(),nn(b)<o){c+=1,g(),a=[],f({query:u,items:[],status:"idle",error:null});return}c+=1,g(),f({query:u,items:s.items,status:"loading",error:null}),p=globalThis.setTimeout(()=>{p=null,!i&&R(b)},n)},setExcludedCompanySlugs(u){i||(l=new Set(u.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),f({query:s.query,items:Zt(a,l),status:s.status,error:s.error}))},getState(){return s},subscribe(u){return i?()=>{}:(d.add(u),()=>{d.delete(u)})},dispose(){i||(i=!0,O(),g(),c+=1,d.clear())}}}return ro(sn);})();
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-BPTMfkal.mjs';
2
- import './_spec-BD5My4zL.mjs';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-COOBWXWV.mjs';
2
+ import './_spec-BdqHycDm.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
package/dist/filters.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-BbtjrUo2.js';
2
- import './_spec-BD5My4zL.js';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-DbZuagy-.js';
2
+ import './_spec-BdqHycDm.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
package/dist/format.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-AEupw3fi.mjs';
2
- import { C as CustomFieldDefinition } from './board-BRWS1m6D.mjs';
3
- import { C as CustomFieldValues } from './jobs-BPTMfkal.mjs';
4
- import './_spec-BD5My4zL.mjs';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-B3n9k95M.mjs';
2
+ import { C as CustomFieldDefinition } from './board-CdG7z-Vq.mjs';
3
+ import { C as CustomFieldValues } from './jobs-COOBWXWV.mjs';
4
+ import './_spec-BdqHycDm.mjs';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/format.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-Bu1lN6qA.js';
2
- import { C as CustomFieldDefinition } from './board-CF66EdYi.js';
3
- import { C as CustomFieldValues } from './jobs-BbtjrUo2.js';
4
- import './_spec-BD5My4zL.js';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-DmVbf4_6.js';
2
+ import { C as CustomFieldDefinition } from './board-CEsr8xMh.js';
3
+ import { C as CustomFieldValues } from './jobs-DbZuagy-.js';
4
+ import './_spec-BdqHycDm.js';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
package/dist/index.d.mts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-BD5My4zL.mjs';
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-CIjAdPR-.mjs';
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-CIjAdPR-.mjs';
4
- import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-BRWS1m6D.mjs';
5
- export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, o as BoardRoleSignIn, p as BoardSignInSsoConnection, a as CompanyCategorySalary, q as CompanyMarket, r as CompanyMarketRef, b as CompanySalary, s as CompanySalarySummary, C as CustomFieldDefinition, t as CustomFieldOption, u as CustomFieldType, L as LocationSalaryDetail, v as LocationSkillsIndex, w as LocationTitlesIndex, P as PublicBoard, x as PublicBoardAds, y as PublicBoardAnalytics, z as PublicBoardFeatures, A as PublicBoardJobForm, D as PublicBoardSignIn, E as PublicCompany, F as PublicCompanyDetail, G as PublicCompanyMembership, H as SalaryCompany, I as SalaryLocation, J as SalarySkill, K as SalaryTitle, M as SkillLocationSalary, N as SkillLocationsIndex, S as SkillSalaryDetail, O as TitleLocationSalary, Q as TitleLocationsIndex, T as TitleSalaryDetail } from './board-BRWS1m6D.mjs';
6
- export { B as BoardSeo } from './seo-BypmVm97.mjs';
7
- import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-BPTMfkal.mjs';
8
- 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, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-BPTMfkal.mjs';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-Dh-Ru5QZ.mjs';
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-Dh-Ru5QZ.mjs';
1
+ import { S as Schemas, c as components } from './_spec-BdqHycDm.mjs';
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-BapnDodc.mjs';
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-BapnDodc.mjs';
4
+ import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-CdG7z-Vq.mjs';
5
+ export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, o as BoardRoleSignIn, p as BoardSignInSsoConnection, a as CompanyCategorySalary, q as CompanyMarket, r as CompanyMarketRef, b as CompanySalary, s as CompanySalarySummary, C as CustomFieldDefinition, t as CustomFieldOption, u as CustomFieldType, L as LocationSalaryDetail, v as LocationSkillsIndex, w as LocationTitlesIndex, P as PublicBoard, x as PublicBoardAds, y as PublicBoardAnalytics, z as PublicBoardFeatures, A as PublicBoardJobForm, D as PublicBoardSignIn, E as PublicCompany, F as PublicCompanyDetail, G as PublicCompanyMembership, H as SalaryCompany, I as SalaryLocation, J as SalarySkill, K as SalaryTitle, M as SkillLocationSalary, N as SkillLocationsIndex, S as SkillSalaryDetail, O as TitleLocationSalary, Q as TitleLocationsIndex, T as TitleSalaryDetail } from './board-CdG7z-Vq.mjs';
6
+ export { B as BoardSeo } from './seo-C_yEotTb.mjs';
7
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-COOBWXWV.mjs';
8
+ 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, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-COOBWXWV.mjs';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-CE0g5csE.mjs';
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-CE0g5csE.mjs';
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.31.1";
205
+ declare const SDK_VERSION = "4.32.0";
206
206
 
207
207
  type SavedJob = Schemas['SavedJob'];
208
208
  type SavedJobsListQuery = {
@@ -1230,6 +1230,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1230
1230
  impressum: boolean;
1231
1231
  nativeApplications: boolean;
1232
1232
  messaging: boolean;
1233
+ contactPage: boolean;
1233
1234
  };
1234
1235
  talentAccessModel: "paid_messaging" | "paid_unlocks_and_messaging" | null;
1235
1236
  posting: {
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-BD5My4zL.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-CqPIHkv8.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-CqPIHkv8.js';
4
- import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-CF66EdYi.js';
5
- export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, o as BoardRoleSignIn, p as BoardSignInSsoConnection, a as CompanyCategorySalary, q as CompanyMarket, r as CompanyMarketRef, b as CompanySalary, s as CompanySalarySummary, C as CustomFieldDefinition, t as CustomFieldOption, u as CustomFieldType, L as LocationSalaryDetail, v as LocationSkillsIndex, w as LocationTitlesIndex, P as PublicBoard, x as PublicBoardAds, y as PublicBoardAnalytics, z as PublicBoardFeatures, A as PublicBoardJobForm, D as PublicBoardSignIn, E as PublicCompany, F as PublicCompanyDetail, G as PublicCompanyMembership, H as SalaryCompany, I as SalaryLocation, J as SalarySkill, K as SalaryTitle, M as SkillLocationSalary, N as SkillLocationsIndex, S as SkillSalaryDetail, O as TitleLocationSalary, Q as TitleLocationsIndex, T as TitleSalaryDetail } from './board-CF66EdYi.js';
6
- export { B as BoardSeo } from './seo-C-NQ0T9w.js';
7
- import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-BbtjrUo2.js';
8
- 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, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-BbtjrUo2.js';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-CcLmN5Tw.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-CcLmN5Tw.js';
1
+ import { S as Schemas, c as components } from './_spec-BdqHycDm.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-BV2B73ty.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-BV2B73ty.js';
4
+ import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-CEsr8xMh.js';
5
+ export { B as BoardFormBuiltinField, j as BoardFormField, k as BoardFormLayout, l as BoardFormLockReason, m as BoardJobFormField, n as BoardProfileFormField, o as BoardRoleSignIn, p as BoardSignInSsoConnection, a as CompanyCategorySalary, q as CompanyMarket, r as CompanyMarketRef, b as CompanySalary, s as CompanySalarySummary, C as CustomFieldDefinition, t as CustomFieldOption, u as CustomFieldType, L as LocationSalaryDetail, v as LocationSkillsIndex, w as LocationTitlesIndex, P as PublicBoard, x as PublicBoardAds, y as PublicBoardAnalytics, z as PublicBoardFeatures, A as PublicBoardJobForm, D as PublicBoardSignIn, E as PublicCompany, F as PublicCompanyDetail, G as PublicCompanyMembership, H as SalaryCompany, I as SalaryLocation, J as SalarySkill, K as SalaryTitle, M as SkillLocationSalary, N as SkillLocationsIndex, S as SkillSalaryDetail, O as TitleLocationSalary, Q as TitleLocationsIndex, T as TitleSalaryDetail } from './board-CEsr8xMh.js';
6
+ export { B as BoardSeo } from './seo-BcC8Tv0d.js';
7
+ import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-DbZuagy-.js';
8
+ 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, J as JobSort, p as OfficeLocation, q as OffsetPagination, P as PublicJob, r as PublicJobCard, s as RelatedSearch, t as RemotePermit, u as RemoteTimezone, v as ResolvedJobCollectionField, w as StorefrontPagination } from './jobs-DbZuagy-.js';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-D85cD8W0.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-D85cD8W0.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.31.1";
205
+ declare const SDK_VERSION = "4.32.0";
206
206
 
207
207
  type SavedJob = Schemas['SavedJob'];
208
208
  type SavedJobsListQuery = {
@@ -1230,6 +1230,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1230
1230
  impressum: boolean;
1231
1231
  nativeApplications: boolean;
1232
1232
  messaging: boolean;
1233
+ contactPage: boolean;
1233
1234
  };
1234
1235
  talentAccessModel: "paid_messaging" | "paid_unlocks_and_messaging" | null;
1235
1236
  posting: {
package/dist/index.js CHANGED
@@ -403,7 +403,7 @@ async function clearSession(storage) {
403
403
  }
404
404
 
405
405
  // src/version.ts
406
- var SDK_VERSION = "4.31.1";
406
+ var SDK_VERSION = "4.32.0";
407
407
 
408
408
  // src/client.ts
409
409
  function isRawBody(body) {
@@ -674,6 +674,7 @@ function authNamespace(client, board = "") {
674
674
  * email: 'a@b.com',
675
675
  * password: 'hunter22',
676
676
  * displayName: 'Ada',
677
+ * returnTo: '/jobs/123', // carried by the verification link
677
678
  * });
678
679
  */
679
680
  async register(body, options) {
@@ -788,10 +789,13 @@ function authNamespace(client, board = "") {
788
789
  },
789
790
  /**
790
791
  * Re-send the verification email (fresh code + magic link) to the signed-in
791
- * board user. Resolves void (204); no-op if already verified.
792
+ * board user. Resolves void (204); no-op if already verified. Send
793
+ * `body: { returnTo }` to keep a same-origin return path on the new link,
794
+ * as `register({ returnTo })` does.
792
795
  *
793
796
  * @example
794
797
  * await board.auth.resendVerification();
798
+ * await board.auth.resendVerification({ body: { returnTo: '/jobs/123' } });
795
799
  */
796
800
  resendVerification(options) {
797
801
  return client.fetch("/auth/verify-email/resend", {
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.31.1";
49
+ var SDK_VERSION = "4.32.0";
50
50
 
51
51
  // src/client.ts
52
52
  function isRawBody(body) {
@@ -317,6 +317,7 @@ function authNamespace(client, board = "") {
317
317
  * email: 'a@b.com',
318
318
  * password: 'hunter22',
319
319
  * displayName: 'Ada',
320
+ * returnTo: '/jobs/123', // carried by the verification link
320
321
  * });
321
322
  */
322
323
  async register(body, options) {
@@ -431,10 +432,13 @@ function authNamespace(client, board = "") {
431
432
  },
432
433
  /**
433
434
  * Re-send the verification email (fresh code + magic link) to the signed-in
434
- * board user. Resolves void (204); no-op if already verified.
435
+ * board user. Resolves void (204); no-op if already verified. Send
436
+ * `body: { returnTo }` to keep a same-origin return path on the new link,
437
+ * as `register({ returnTo })` does.
435
438
  *
436
439
  * @example
437
440
  * await board.auth.resendVerification();
441
+ * await board.auth.resendVerification({ body: { returnTo: '/jobs/123' } });
438
442
  */
439
443
  resendVerification(options) {
440
444
  return client.fetch("/auth/verify-email/resend", {
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.mjs';
1
+ import { S as Schemas } from './_spec-BdqHycDm.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-BD5My4zL.js';
1
+ import { S as Schemas } from './_spec-BdqHycDm.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-BD5My4zL.js';
1
+ import { S as Schemas } from './_spec-BdqHycDm.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.mjs';
1
+ import { S as Schemas } from './_spec-BdqHycDm.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-BD5My4zL.js';
1
+ import { S as Schemas } from './_spec-BdqHycDm.js';
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-BD5My4zL.mjs';
1
+ import { S as Schemas } from './_spec-BdqHycDm.mjs';
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-BypmVm97.mjs';
2
- import './_spec-BD5My4zL.mjs';
1
+ import { B as BoardSeo } from './seo-C_yEotTb.mjs';
2
+ import './_spec-BdqHycDm.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-C-NQ0T9w.js';
2
- import './_spec-BD5My4zL.js';
1
+ import { B as BoardSeo } from './seo-BcC8Tv0d.js';
2
+ import './_spec-BdqHycDm.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-Dh-Ru5QZ.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-AEupw3fi.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-AEupw3fi.mjs';
4
- import './_spec-BD5My4zL.mjs';
5
- import './board-BRWS1m6D.mjs';
6
- import './jobs-BPTMfkal.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CE0g5csE.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-B3n9k95M.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-B3n9k95M.mjs';
4
+ import './_spec-BdqHycDm.mjs';
5
+ import './board-CdG7z-Vq.mjs';
6
+ import './jobs-COOBWXWV.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-CcLmN5Tw.js';
2
- import { e as JsonLdObject } from './breadcrumbs-Bu1lN6qA.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-Bu1lN6qA.js';
4
- import './_spec-BD5My4zL.js';
5
- import './board-CF66EdYi.js';
6
- import './jobs-BbtjrUo2.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-D85cD8W0.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-DmVbf4_6.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-DmVbf4_6.js';
4
+ import './_spec-BdqHycDm.js';
5
+ import './board-CEsr8xMh.js';
6
+ import './jobs-DbZuagy-.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-BD5My4zL.mjs';
3
- import './search-CIjAdPR-.mjs';
4
- import './board-BRWS1m6D.mjs';
5
- import './jobs-BPTMfkal.mjs';
6
- import './seo-BypmVm97.mjs';
7
- import './blog-Dh-Ru5QZ.mjs';
2
+ import './_spec-BdqHycDm.mjs';
3
+ import './search-BapnDodc.mjs';
4
+ import './board-CdG7z-Vq.mjs';
5
+ import './jobs-COOBWXWV.mjs';
6
+ import './seo-C_yEotTb.mjs';
7
+ import './blog-CE0g5csE.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-BD5My4zL.js';
3
- import './search-CqPIHkv8.js';
4
- import './board-CF66EdYi.js';
5
- import './jobs-BbtjrUo2.js';
6
- import './seo-C-NQ0T9w.js';
7
- import './blog-CcLmN5Tw.js';
2
+ import './_spec-BdqHycDm.js';
3
+ import './search-BV2B73ty.js';
4
+ import './board-CEsr8xMh.js';
5
+ import './jobs-DbZuagy-.js';
6
+ import './seo-BcC8Tv0d.js';
7
+ import './blog-D85cD8W0.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-BD5My4zL.mjs';
3
- import './search-CIjAdPR-.mjs';
4
- import './board-BRWS1m6D.mjs';
5
- import './jobs-BPTMfkal.mjs';
6
- import './seo-BypmVm97.mjs';
7
- import './blog-Dh-Ru5QZ.mjs';
2
+ import './_spec-BdqHycDm.mjs';
3
+ import './search-BapnDodc.mjs';
4
+ import './board-CdG7z-Vq.mjs';
5
+ import './jobs-COOBWXWV.mjs';
6
+ import './seo-C_yEotTb.mjs';
7
+ import './blog-CE0g5csE.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-BD5My4zL.js';
3
- import './search-CqPIHkv8.js';
4
- import './board-CF66EdYi.js';
5
- import './jobs-BbtjrUo2.js';
6
- import './seo-C-NQ0T9w.js';
7
- import './blog-CcLmN5Tw.js';
2
+ import './_spec-BdqHycDm.js';
3
+ import './search-BV2B73ty.js';
4
+ import './board-CEsr8xMh.js';
5
+ import './jobs-DbZuagy-.js';
6
+ import './seo-BcC8Tv0d.js';
7
+ import './blog-D85cD8W0.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-CIjAdPR-.mjs';
2
- import './_spec-BD5My4zL.mjs';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-BapnDodc.mjs';
2
+ import './_spec-BdqHycDm.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-CqPIHkv8.js';
2
- import './_spec-BD5My4zL.js';
1
+ import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-BV2B73ty.js';
2
+ import './_spec-BdqHycDm.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.31.1",
3
+ "version": "4.32.0",
4
4
  "description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
5
5
  "keywords": [
6
6
  "api-client",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.31.1",
2
+ "version": "4.32.0",
3
3
  "skills": [
4
4
  {
5
5
  "name": "cavuno-board-account",