@cavuno/board 4.11.0 → 4.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/{_spec-Ck02NvUF.d.mts → _spec-ChuT3QX8.d.mts} +23 -1
- package/dist/{_spec-Ck02NvUF.d.ts → _spec-ChuT3QX8.d.ts} +23 -1
- package/dist/{blog-CZUXieNu.d.mts → blog-BB_l6xes.d.mts} +1 -1
- package/dist/{blog-ClwNmr_N.d.ts → blog-VbcrwKk9.d.ts} +1 -1
- package/dist/{board-wHyyyAhT.d.mts → board-BJCKz-Is.d.mts} +2 -2
- package/dist/{board-6XZx1x5M.d.ts → board-CWQjFHWJ.d.ts} +2 -2
- package/dist/{breadcrumbs-CPaEpS6h.d.ts → breadcrumbs-6TB8Lw-C.d.ts} +2 -2
- package/dist/{breadcrumbs-DJjtyjlf.d.mts → breadcrumbs-BoIXFh0q.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +85 -19
- package/dist/index.d.ts +85 -19
- package/dist/index.js +20 -6
- package/dist/index.mjs +20 -6
- package/dist/{jobs-iG5udM2R.d.mts → jobs-CV41Msa7.d.mts} +1 -1
- package/dist/{jobs-3BAwXBxR.d.ts → jobs-CsoxD0mU.d.ts} +1 -1
- package/dist/{search-kfabRi5l.d.ts → search-ACYoyhh3.d.ts} +1 -1
- package/dist/{search-5DzB-OrD.d.mts → search-DEVb6pdX.d.mts} +1 -1
- package/dist/{seo-DndU15zg.d.ts → seo-BrC9ue1U.d.ts} +1 -1
- package/dist/{seo-C_Mt1i-Y.d.mts → seo-DvS9_GxS.d.mts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,34 @@
|
|
|
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.12.0 — 2026-08-28
|
|
7
|
+
|
|
8
|
+
- **`resolveApplyDecision`**: the apply-decision ladder now takes the board's
|
|
9
|
+
`features.registrationWall`. On a walled board an anonymous visitor gets
|
|
10
|
+
`{ kind: 'sign-in' }` on every path, including the external employer
|
|
11
|
+
`applicationUrl` — previously that link was returned to any viewer. Sign-in,
|
|
12
|
+
not email verification, is the bar: a signed-in-but-unverified candidate
|
|
13
|
+
still gets the external link.
|
|
14
|
+
- **New `guest` apply action**: with the wall off, `POST /jobs/:jobSlug/apply`
|
|
15
|
+
accepts an unauthenticated caller supplying `name`/`email`, so the ladder can
|
|
16
|
+
return `{ kind: 'guest', jobSlug }` instead of forcing sign-in and losing the
|
|
17
|
+
application. Opt in with `allowGuestApply: true`; a client with no guest form
|
|
18
|
+
keeps receiving `{ kind: 'sign-in' }`.
|
|
19
|
+
- **`sign-in` gains an optional `reason`** (`'registration-wall' | 'native-apply'`)
|
|
20
|
+
so a client can tell a wall prompt from a native-ladder one.
|
|
21
|
+
- **`resolveApplyAction` is deprecated** in favour of `resolveApplyDecision`. It
|
|
22
|
+
still behaves exactly as before (the wall and guest inputs are pinned off),
|
|
23
|
+
so pinned callers are unaffected.
|
|
24
|
+
- **`board.context().jobForm` gains the job-form constraints** the platform
|
|
25
|
+
enforces when a job is created: `salary.required` / `minBound` / `maxBound` /
|
|
26
|
+
`allowedCurrencies`, `seniority.required` / `allowedOptions`,
|
|
27
|
+
`location.allowedCountries`, and `workArrangement` / `employmentType`
|
|
28
|
+
`allowedOptions`. Posting forms can now offer only what the board accepts
|
|
29
|
+
instead of surfacing a 400 after submit. Closed enums arrive fully resolved
|
|
30
|
+
(an unrestricted board gets the complete platform list); the open sets
|
|
31
|
+
(`allowedCurrencies`, `allowedCountries`) use `null` for "no restriction" and
|
|
32
|
+
are never empty. Salary bounds are present only when `salary.required`.
|
|
33
|
+
|
|
6
34
|
## 4.11.0 — 2026-08-28
|
|
7
35
|
|
|
8
36
|
- **`BoardAuthSession.isNewUser`**: optional boolean on OAuth exchange and
|
|
@@ -1848,24 +1848,46 @@ interface components {
|
|
|
1848
1848
|
/** @description This model's custom-field definitions in display order. Empty when the board defines none for the model. */
|
|
1849
1849
|
job: components["schemas"]["CustomFieldDefinition"][];
|
|
1850
1850
|
};
|
|
1851
|
-
/** @description Built-in job-form field
|
|
1851
|
+
/** @description Built-in job-form field configuration from Settings → Job form (custom fields live on `customFields.job`). The platform ENFORCES these constraints when a job is created — a violation is a 400 — so a posting form that ignores them offers options the server will reject and the employer only finds out on submit. */
|
|
1852
1852
|
jobForm: {
|
|
1853
1853
|
salary: {
|
|
1854
1854
|
/** @description Whether salary is captured on posting forms and shown on public job cards. Absent board config defaults to `true`. */
|
|
1855
1855
|
visible: boolean;
|
|
1856
|
+
/** @description Whether a posting must carry a salary. Absent board config defaults to `false`. */
|
|
1857
|
+
required: boolean;
|
|
1858
|
+
/** @description Salary floor a submitted value must be >= . `null` when unset, and always `null` unless `required` is `true` — a floor is toothless on an optional field, matching hosted. */
|
|
1859
|
+
minBound: number | null;
|
|
1860
|
+
/** @description Salary ceiling a submitted value must be <= . `null` when unset, and always `null` unless `required` is `true`. */
|
|
1861
|
+
maxBound: number | null;
|
|
1862
|
+
/** @description ISO 4217 subset the board accepts. `null` means no restriction — render the full currency list. Never an empty array. */
|
|
1863
|
+
allowedCurrencies: string[] | null;
|
|
1856
1864
|
};
|
|
1857
1865
|
seniority: {
|
|
1858
1866
|
/** @description Whether seniority is captured on posting forms. Absent board config defaults to `true`. */
|
|
1859
1867
|
visible: boolean;
|
|
1868
|
+
/** @description Whether a posting must carry a seniority level. Absent board config defaults to `false`. */
|
|
1869
|
+
required: boolean;
|
|
1870
|
+
/** @description Seniority levels the board accepts, in platform order. Always fully resolved — an operator who set no subset gets the complete platform list, so a picker can render straight from this. */
|
|
1871
|
+
allowedOptions: string[];
|
|
1860
1872
|
};
|
|
1861
1873
|
location: {
|
|
1862
1874
|
/** @description Whether office location is captured on posting forms. Absent board config defaults to `true`. */
|
|
1863
1875
|
visible: boolean;
|
|
1876
|
+
/** @description ISO country codes office locations are locked to. `null` means any country. Never an empty array. */
|
|
1877
|
+
allowedCountries: string[] | null;
|
|
1864
1878
|
};
|
|
1865
1879
|
sponsorship: {
|
|
1866
1880
|
/** @description Whether visa sponsorship is captured on posting forms. Absent board config defaults to `true`. */
|
|
1867
1881
|
visible: boolean;
|
|
1868
1882
|
};
|
|
1883
|
+
workArrangement: {
|
|
1884
|
+
/** @description Work arrangements the board accepts, fully resolved like `seniority.allowedOptions`. A single entry means the form must collapse the field and pin every submission to that value. */
|
|
1885
|
+
allowedOptions: string[];
|
|
1886
|
+
};
|
|
1887
|
+
employmentType: {
|
|
1888
|
+
/** @description Employment types the board accepts, fully resolved like `seniority.allowedOptions`. A single entry means the form must collapse the field. */
|
|
1889
|
+
allowedOptions: string[];
|
|
1890
|
+
};
|
|
1869
1891
|
};
|
|
1870
1892
|
/** @description Operator-authored contact and social identity (settings › Contact & company details). Extracted from the former `footer` group in 4.0.0: contact is identity data, not layout. Brand/social URLs are sanitized to absolute http(s). */
|
|
1871
1893
|
contact: {
|
|
@@ -1848,24 +1848,46 @@ interface components {
|
|
|
1848
1848
|
/** @description This model's custom-field definitions in display order. Empty when the board defines none for the model. */
|
|
1849
1849
|
job: components["schemas"]["CustomFieldDefinition"][];
|
|
1850
1850
|
};
|
|
1851
|
-
/** @description Built-in job-form field
|
|
1851
|
+
/** @description Built-in job-form field configuration from Settings → Job form (custom fields live on `customFields.job`). The platform ENFORCES these constraints when a job is created — a violation is a 400 — so a posting form that ignores them offers options the server will reject and the employer only finds out on submit. */
|
|
1852
1852
|
jobForm: {
|
|
1853
1853
|
salary: {
|
|
1854
1854
|
/** @description Whether salary is captured on posting forms and shown on public job cards. Absent board config defaults to `true`. */
|
|
1855
1855
|
visible: boolean;
|
|
1856
|
+
/** @description Whether a posting must carry a salary. Absent board config defaults to `false`. */
|
|
1857
|
+
required: boolean;
|
|
1858
|
+
/** @description Salary floor a submitted value must be >= . `null` when unset, and always `null` unless `required` is `true` — a floor is toothless on an optional field, matching hosted. */
|
|
1859
|
+
minBound: number | null;
|
|
1860
|
+
/** @description Salary ceiling a submitted value must be <= . `null` when unset, and always `null` unless `required` is `true`. */
|
|
1861
|
+
maxBound: number | null;
|
|
1862
|
+
/** @description ISO 4217 subset the board accepts. `null` means no restriction — render the full currency list. Never an empty array. */
|
|
1863
|
+
allowedCurrencies: string[] | null;
|
|
1856
1864
|
};
|
|
1857
1865
|
seniority: {
|
|
1858
1866
|
/** @description Whether seniority is captured on posting forms. Absent board config defaults to `true`. */
|
|
1859
1867
|
visible: boolean;
|
|
1868
|
+
/** @description Whether a posting must carry a seniority level. Absent board config defaults to `false`. */
|
|
1869
|
+
required: boolean;
|
|
1870
|
+
/** @description Seniority levels the board accepts, in platform order. Always fully resolved — an operator who set no subset gets the complete platform list, so a picker can render straight from this. */
|
|
1871
|
+
allowedOptions: string[];
|
|
1860
1872
|
};
|
|
1861
1873
|
location: {
|
|
1862
1874
|
/** @description Whether office location is captured on posting forms. Absent board config defaults to `true`. */
|
|
1863
1875
|
visible: boolean;
|
|
1876
|
+
/** @description ISO country codes office locations are locked to. `null` means any country. Never an empty array. */
|
|
1877
|
+
allowedCountries: string[] | null;
|
|
1864
1878
|
};
|
|
1865
1879
|
sponsorship: {
|
|
1866
1880
|
/** @description Whether visa sponsorship is captured on posting forms. Absent board config defaults to `true`. */
|
|
1867
1881
|
visible: boolean;
|
|
1868
1882
|
};
|
|
1883
|
+
workArrangement: {
|
|
1884
|
+
/** @description Work arrangements the board accepts, fully resolved like `seniority.allowedOptions`. A single entry means the form must collapse the field and pin every submission to that value. */
|
|
1885
|
+
allowedOptions: string[];
|
|
1886
|
+
};
|
|
1887
|
+
employmentType: {
|
|
1888
|
+
/** @description Employment types the board accepts, fully resolved like `seniority.allowedOptions`. A single entry means the form must collapse the field. */
|
|
1889
|
+
allowedOptions: string[];
|
|
1890
|
+
};
|
|
1869
1891
|
};
|
|
1870
1892
|
/** @description Operator-authored contact and social identity (settings › Contact & company details). Extracted from the former `footer` group in 4.0.0: contact is identity data, not layout. Brand/social URLs are sanitized to absolute http(s). */
|
|
1871
1893
|
contact: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-ChuT3QX8.mjs';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-CV41Msa7.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 { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-ChuT3QX8.js';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-CsoxD0mU.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 { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-CWQjFHWJ.js';
|
|
2
|
+
import { P as PublicJob } from './jobs-CsoxD0mU.js';
|
|
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-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-BJCKz-Is.mjs';
|
|
2
|
+
import { P as PublicJob } from './jobs-CV41Msa7.mjs';
|
|
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 J=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var $t=Object.prototype.hasOwnProperty;var Dt=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var _=(e,t)=>{for(var o in t)J(e,o,{get:t[o],enumerable:!0})},jt=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Nt(t))!$t.call(e,r)&&r!==o&&J(e,r,{get:()=>t[r],enumerable:!(n=wt(t,r))||n.enumerable});return e};var Qt=e=>jt(J({},"__esModule",{value:!0}),e);var P=(e,t,o)=>Dt(e,typeof t!="symbol"?t+"":t,o);var wo={};_(wo,{ACCESS_TOKEN_KEY:()=>T,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>me,BoardApiError:()=>R,BoardClient:()=>I,REFRESH_TOKEN_KEY:()=>L,SDK_VERSION:()=>N,createBoardClient:()=>zt,filters:()=>ee,format:()=>pe,isBoardApiError:()=>E,isBoardPasswordRequired:()=>ge,isColdRule:()=>He,isConflict:()=>Se,isForbidden:()=>fe,isNotFound:()=>de,isOwnMessage:()=>Ge,isRateLimited:()=>be,isSafeApplicationUrl:()=>X,isUnauthorized:()=>ye,isValidationError:()=>he,lastOwnMessageId:()=>Ve,paginate:()=>qe,paths:()=>le,resolveApplyAction:()=>Ke,seo:()=>ce,suggest:()=>ue});var me=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_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_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","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","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","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","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_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","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","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","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],R=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 E(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function de(e){return E(e)&&e.status===404}function ye(e){return E(e)&&e.status===401}function ge(e){return E(e)&&e.status===401&&e.code==="board_password_required"}function fe(e){return E(e)&&e.status===403}function he(e){return E(e)&&e.status===400&&e.code==="validation_bad_request"}function be(e){return E(e)&&e.status===429}function Se(e){return E(e)&&e.status===409}function Ce(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 Oe(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 T="cavuno_board_access_token",L="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Pe(){return typeof globalThis.document<"u"}function qt(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function Gt(e,t){if(!Pe())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?`:${Oe(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var Ht=Symbol.for("@cavuno/board:nostore");var Vt={[Ht]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function Ee(e,t){let o=e??(Pe()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return qt();case"nostore":return Vt;case"local":case"session":return Gt(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function w(e,t){await e.setItem(T,t.accessToken),await e.setItem(L,t.refreshToken)}async function ve(e){await e.removeItem(T),await e.removeItem(L)}var N="4.11.0";function Kt(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 Yt(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,...a}=o,s=(o.method??"GET").toUpperCase(),p=`${this.basePath}${t}`,u=Ce(r).toString();u&&(p+=`?${u}`);let d=n!==void 0&&!Kt(n),m=n===void 0?void 0:d?JSON.stringify(n):n,y=new Headers({accept:"application/json"});d&&y.set("content-type","application/json");for(let[B,Z]of Object.entries(this.options.globalHeaders??{}))y.set(B,Z);let g=await this.storage.getItem(T);g!==null&&y.set("authorization",`Bearer ${g}`);let C=await this.storage.getItem(F);C!==null&&y.set("x-board-access",C),i&&new Headers(i).forEach((B,Z)=>{y.set(Z,B)}),(s!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${N}`);let f={url:p,init:{...a,method:s,headers:y,body:m}};this.options.onRequest&&(f=await this.options.onRequest(f));let v=Yt(f.url);this.options.logger?.debug(`${s} ${v}`);let c=await globalThis.fetch(f.url,f.init);if(this.options.logger?.debug(`${c.status} ${s} ${v}`),this.options.onResponse&&await this.options.onResponse(c.clone(),f),c.status===204)return;if(c.ok)return await c.json();let b;try{b=await c.json()}catch{b=void 0}let O=b?.error,A=O&&typeof O.code=="string"&&typeof O.message=="string"?new R({status:c.status,code:O.code,message:O.message,details:O.details,requestId:O.requestId,raw:b}):new R({status:c.status,code:"unknown_error",message:c.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${A.status} ${A.code} ${s} ${v}`),A}};var Be="https://api.cavuno.com";function Re(e){async function t(n){return await w(e.storage,n),n}async function o(n){if(n?.refreshToken)return n.refreshToken;let r=await e.storage.getItem(L);if(r===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return r}return{async register(n,r){let i=await e.fetch("/auth/register",{...r,method:"POST",body:n});return t(i)},async login(n,r){let i=await e.fetch("/auth/login",{...r,method:"POST",body:n});return t(i)},async refresh(n,r){let i=await o(n),a=await e.fetch("/auth/refresh",{...r,method:"POST",body:{refreshToken:i}});return t(a)},async logout(n,r){let i=await o(n);await e.fetch("/auth/logout",{...r,method:"POST",body:{refreshToken:i}}),await ve(e.storage)},verifyEmail(n,r){return e.fetch("/auth/verify-email",{...r,method:"POST",body:n})},verifyEmailWithCode(n,r){return e.fetch("/auth/verify-email/otp",{...r,method:"POST",body:n})},resendVerification(n){return e.fetch("/auth/verify-email/resend",{...n,method:"POST"})},forgotPassword(n,r){return e.fetch("/auth/forgot-password",{...r,method:"POST",body:n})},resetPassword(n,r){return e.fetch("/auth/reset-password",{...r,method:"POST",body:n})},requestMagicLink(n,r){return e.fetch("/auth/magic-link",{...r,method:"POST",body:n})},async consumeMagicLink(n,r){let i=await e.fetch("/auth/magic-link/consume",{...r,method:"POST",body:n});return t(i)},getOAuthAuthorizationUrl(n,r,i){return e.fetch(`/auth/oauth/${n}`,{...i,method:"GET",query:r})},async exchangeOAuth(n,r){let i=await e.fetch("/auth/oauth/exchange",{...r,method:"POST",body:n});return t(i)}}}function Ae(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 _e(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,a){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...a,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 Te(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Le(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 Fe(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 Ie(e){return{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 xe(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 w(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:{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})},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:{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})},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"})},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})}},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})},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 ke(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 Ue(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function Me(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function Je(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function we(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 Ne(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function $e(e){return{list(t,o){return e.fetch("/talent",{...o,query:t})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function je(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function De(e,t){return{...je(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function Qe(e){return{categories:De(e,"categories"),skills:De(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...je(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function qe(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:a,...s}=r??{};r={...s,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 a of n())if(i.push(...a.data),i.length>=r)break;return i.slice(0,r)}}}function Ge(e,t){return e.authorBoardUserId!==t}function He(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function Ve(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 X(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 Ke(e){return e.applicationUrl&&X(e.applicationUrl)?{kind:"external",url:e.applicationUrl}:e.jobSlug?e.viewer?e.viewer.emailVerified?e.applied?{kind:"applied"}:{kind:"native",jobSlug:e.jobSlug}:{kind:"verify-email"}:{kind:"sign-in"}:{kind:"none"}}function zt(e){let t=new I({baseUrl:e.baseUrl??Be,board:e.board,storage:Ee(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:Ie(t),embed:Te(t),companies:_e(t),blog:Ae(t),auth:Re(t),me:xe(t),password:ke(t),taxonomy:Qe(t),search:Ne(t),redirects:Je(t),jobAlerts:Le(t),jobPosting:Fe(t),salaries:we(t),talent:$e(t),plans:Me(t),paywall:Ue(t)}}var ee={};_(ee,{DEFAULT_SORT:()=>Wt,EMPLOYMENT_TYPES:()=>ze,JOB_SORTS:()=>Ze,REMOTE_OPTIONS:()=>Ye,SENIORITIES:()=>We,parseCompany:()=>et,parseListingFilters:()=>Xt,parseSeniority:()=>Xe});var Ye=["on_site","hybrid","remote"],ze=["full_time","part_time","contract","internship","temporary"],We=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],Ze=["relevance","newest","salary_high"],Wt="relevance";var Zt=new Set(We);function Xe(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)||Zt.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function et(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");if(!(!i||n.has(i))&&(n.add(i),o.push(i),o.length>=10))break}return o.length>0?o:void 0}function Xt(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:Ye.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:ze.includes(e.employmentType)?e.employmentType:void 0,seniority:Xe(e.seniority),company:et(e.company),sort:Ze.includes(e.sort)?e.sort:void 0}}var pe={};_(pe,{COUNTRY_CODES:()=>z,buildJobBreadcrumbs:()=>Y,countryOptions:()=>Ft,formatDate:()=>it,formatMonthYear:()=>st,formatPublishedRelativeDate:()=>at,formatSalaryRange:()=>lt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>x,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>It});function S(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 tt=new Map,ot=new Map,nt=new Map,rt=new Map;function eo(e){let t=tt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),tt.set(e,t)),t}function to(e){let t=ot.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),ot.set(e,t)),t}function oo(e){let t=nt.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),nt.set(e,t)),t}function no(e){let t=rt.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),rt.set(e,t)),t}function te(e,t,o){try{return eo(o).format(e,t)}catch{return null}}function it(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=S(e);if(!n)return null;try{return oo(n).format(o)}catch{return o.toISOString().split("T")[0]}}function at(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=S(e);if(!r)return null;let i=o-n.getTime(),a=Math.abs(i),s=60*1e3,p=60*s,l=24*p,u=7*l,d=30*l,m=365*l;if(a<s)try{return to(r).format(0,"second")}catch{return te(0,"second",r)}let y=[{unit:"year",ms:m},{unit:"month",ms:d},{unit:"week",ms:u},{unit:"day",ms:l},{unit:"hour",ms:p},{unit:"minute",ms:s}];for(let f of y)if(a>=f.ms){let v=Math.round(a/f.ms),c=i>=0?-v:v;return te(c,f.unit,r)}let g=Math.round(a/1e3),C=i>=0?-g:g;return te(C,"second",r)}function st(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=S(e);if(!r)return null;try{return no(r).format(n)}catch{return null}}var $=new Map;function oe(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,a=$.get(i);if(a===void 0){try{let s={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(s.compactDisplay="short",s.maximumFractionDigits=1,s.minimumFractionDigits=0),a=new Intl.NumberFormat(t,s)}catch{a=null}$.set(i,a)}return a?a.format(e):null}function ne(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 ro(e,t,o,n,r="symbol",i="compact"){let a=`${o}:${n}:${r}:${i}:range`,s=$.get(a);if(s===void 0){try{let p={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(p.compactDisplay="short",p.maximumFractionDigits=1,p.minimumFractionDigits=0),s=new Intl.NumberFormat(o,p)}catch{s=null}$.set(a,s)}return s?ne(s,e,t):null}var io=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function ao(...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 lt(e,t,o,n,r=null,i="symbol",a){let s=t==null||Number.isFinite(t),p=o==null||Number.isFinite(o);if(!s||!p||t==null&&o==null)return null;let l=r?.trim().toUpperCase()||null;if(!l)return null;let u=S(e);if(!u)return null;let d=a??ao(t,o),m=typeof n=="string"&&io.has(n)?n:null;if(t!=null&&o!=null){let g=t<=o?t:o,C=t<=o?o:t,f=g===C?oe(g,u,l,i,d):ro(g,C,u,l,i,d);return f?{text:f,timeframe:m,bound:"range"}:null}if(t!=null){let g=oe(t,u,l,i,d);return g?{text:g,timeframe:m,bound:"from"}:null}let y=oe(o,u,l,i,d);return y?{text:y,timeframe:m,bound:"upTo"}:null}var pt=new Map;function ct(...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 ut(e,t,o){let n=`${e}:${t}:${o}`,r=pt.get(n);if(r!==void 0)return r;let i;try{let a={style:"currency",currency:t,notation:o};o==="compact"&&(a.compactDisplay="short",a.minimumFractionDigits=0,a.maximumFractionDigits=1),i=new Intl.NumberFormat(e,a)}catch{i=null}return pt.set(n,i),i}function j(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=S(e);if(!i)return null;let a=n??ct(t),s=ut(i,r,a);return s?s.format(t):null}function x(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 a=S(e);if(!a)return null;let s=r??ct(t,o),p=ut(a,i,s);if(!p)return null;let l=Math.min(t,o),u=Math.max(t,o);return l===u?p.format(l):ne(p,l,u)}var D=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function mt(e){return[...e].sort((t,o)=>{let n=D.indexOf(t.seniority),r=D.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var so={unitText:"YEAR",duration:"P1Y"};function k(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...so}}function re(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return k(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function Q(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function dt(e,t,o,n){if(!o)return[];let r=x(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 q(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 yt(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 gt(e,t){return e.overallSalary?Q("Occupation",e.categoryName,{},[k(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...re(e.bySeniority,e.currency,e.categoryName,t)]):null}function ft(e){return e.overallSalary?Q("Occupation",e.skillName,{},[k(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function ht(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:q(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function bt(e,t){return e.overall?Q("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[k(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...re(e.bySeniority,e.currency,e.name,t)]):null}function St(e,t){return t?.occupationUrl?q(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function Ct(e,t){return e.overallSalary?Q("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[k(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...re(e.bySeniority,e.currency,e.categoryName,t)]):null}var Ot={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"},po={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},ae=["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 Et({job:e,board:t,shareUrl:o}){let n=ho(e),r=bo(e),i=ie({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:co(e,t),datePosted:Pt(e.publishedAt),validThrough:Pt(e.expiresAt),employmentType:e.employmentType?lo[e.employmentType]??"OTHER":"OTHER",hiringOrganization:uo(e,t),jobLocation:yo(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?fo(e):null,baseSalary:mo(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 co(e,t){let o=e.company?.name??t.name??null,n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function uo(e,t){let o=e.company?.name??t.name??null;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 a=e.company?.logoUrl??t.logoUrl??null;return a&&(n.logo=a),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function mo(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?po[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 yo(e){let t=e.officeLocations.map(o=>go({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 go({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},a=e?.trim(),s=t?.trim(),p=o?.trim(),l=n?.trim(),u=r?.trim();a&&(i.addressCountry=a.toUpperCase()),s&&(i.addressRegion=s),p&&(i.addressLocality=p),l&&(i.postalCode=l);let d=Object.keys(i).length>1;if(!d&&!u)return null;let m={"@type":"Place"};return u&&(m.name=u),d&&(m.address=i),m}function fo(e){if(e.remoteWorldwide)return ae.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 ho(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 Ot).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Ot[n]}));return o.length>0?o:null}function bo(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function Pt(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function ie(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=>ie(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,ie(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var le={};_(le,{BOARD_PATHS:()=>V,blogAuthorPath:()=>vo,blogPostPath:()=>_t,blogTagPath:()=>Tt,boardUrl:()=>K,companyMarketPath:()=>At,companyPath:()=>Rt,companySalaryPath:()=>Co,encodePathSegment:()=>h,goAlertsConfirmPath:()=>Ao,goAlertsManagePath:()=>Ro,goJobPath:()=>Bo,jobDetailPath:()=>se,jobsCategoryPath:()=>G,jobsLocationCategoryPath:()=>H,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>Bt,jobsSkillPath:()=>vt,salaryLocationPath:()=>Eo,salarySkillPath:()=>Po,salaryTitlePath:()=>Oo,suggestionPath:()=>So});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function se(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function G(e){return`/jobs/${h(e)}`}function vt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function H(e,t){return`${M(e)}/${h(t)}`}function Bt(e,t){return`${M(e)}/skills/${h(t)}`}function Rt(e){return`/companies/${h(e)}`}function At(e){return`/companies/markets/${h(e)}`}function So(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?_t(e.slug):e.type==="tag"?Tt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?Bt(o,e.canonicalSlug):vt(e.canonicalSlug):o?H(o,e.canonicalSlug):G(e.canonicalSlug):e.type==="company"?Rt(e.slug):e.type==="market"?At(e.slug):null}function Co(e){return`/companies/${h(e)}/salaries`}function Oo(e){return`/salaries/titles/${h(e)}`}function Po(e){return`/salaries/skills/${h(e)}`}function Eo(e){return`/salaries/locations/${h(e)}`}function _t(e){return`/blog/${h(e)}`}function Tt(e){return`/blog/tag/${h(e)}`}function vo(e){return`/blog/author/${h(e)}`}var V={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 Bo(e){return`/go/job/${e}`}function Ro(){return"/go/alerts-manage"}function Ao(){return"/go/alerts-confirm"}function K(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Lt(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 a=r.href?_o(r.href,t.origin??null):null,s={"@type":"ListItem",position:i+1,name:r.name};return a&&(s.item=a),s})}}function _o(e,t){if(To(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function To(e){return/^https?:\/\//i.test(e)}function Y(e){let t=[{kind:"home",path:V.home},{kind:"jobs",path:V.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?H(o,n.slug):G(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 Lo(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function Fo(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function Ft(e){let t=S(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=Lo(t),n=Fo(t).compare;return z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function Io(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 xo(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 It(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 s=Io(r,i);s&&n.push({key:r.key,label:r.label,kind:"multi_select",values:s});continue}let a=xo(r,i);a!==null&&n.push({key:r.key,label:r.label,kind:"text",value:a})}return n}var ce={};_(ce,{ALL_COUNTRY_CODES:()=>ae,SENIORITY_ORDER:()=>D,buildJobBreadcrumbs:()=>Y,buildSalaryFaq:()=>dt,companyCategorySalaryJsonLd:()=>Ct,companySalaryJsonLd:()=>St,createAuthorProfileJsonLd:()=>kt,createBlogArticleJsonLd:()=>xt,createBreadcrumbJsonLd:()=>Lt,createJobPostingJsonLd:()=>Et,crossAxisSalaryJsonLd:()=>bt,faqJsonLd:()=>yt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>x,itemListJsonLd:()=>q,listingHead:()=>Ut,listingJsonLd:()=>Mt,locationSalaryJsonLd:()=>ht,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>ft,sortBySeniority:()=>mt,titleSalaryJsonLd:()=>gt});function xt({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 a=e.authors[0];return a&&(r.author={"@type":"Person",name:a.name,...a.websiteUrl?{url:a.websiteUrl}:{}}),r}function kt({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let a=o.trim(),s=[W(e.websiteUrl),W(e.twitterUrl),W(e.linkedinUrl),W(e.githubUrl)].filter(m=>!!m),p=`${t}#profile`,l=r.slice(0,5).map(m=>{let y=ko(n,`/blog/${m.slug}`);return y?{"@type":"Article",headline:m.title,url:y,datePublished:m.publishedAt,author:{"@id":p}}:null}).filter(m=>m!==null),u=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,d={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":p,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:a||void 0,image:e.avatarUrl??void 0,sameAs:s.length>0?s:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:u}};return l.length>0&&(d.hasPart=l),d}function W(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 ko(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function Ut(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 Mt(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:K(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:K(e.origin,se(n.company.slug,n.slug))}))}),t}var ue={};_(ue,{createSuggestController:()=>Jo});function Uo(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function Mo(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 Jt(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function Jo(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,a={query:"",items:[],status:"idle",error:null},s=[],p=new Set,l=0,u=null,d=null,m=new Set;function y(){for(let c of m)c()}function g(c){a=c,y()}function C(){u!==null&&(globalThis.clearTimeout(u),u=null)}function f(){d&&(d.abort(),d=null)}function v(c){let b=++l;f();let O=new AbortController;d=O;let A={q:c};r!==void 0&&(A.limit=r),e.search.suggest(A,{signal:O.signal}).then(B=>{i||b!==l||(d=null,s=B.items,g({query:a.query,items:Jt(s,p),status:"ready",error:null}))}).catch(B=>{i||b!==l||Uo(B)||(d=null,g({query:a.query,items:a.items,status:"error",error:B}))})}return{setQuery(c){if(i)return;let b=c.trim();if(C(),Mo(b)<o){l+=1,f(),s=[],g({query:c,items:[],status:"idle",error:null});return}l+=1,f(),g({query:c,items:a.items,status:"loading",error:null}),u=globalThis.setTimeout(()=>{u=null,!i&&v(b)},n)},setExcludedCompanySlugs(c){i||(p=new Set(c.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),g({query:a.query,items:Jt(s,p),status:a.status,error:a.error}))},getState(){return a},subscribe(c){return i?()=>{}:(m.add(c),()=>{m.delete(c)})},dispose(){i||(i=!0,C(),f(),l+=1,m.clear())}}}return Qt(wo);})();
|
|
1
|
+
"use strict";var CavunoBoard=(()=>{var J=Object.defineProperty;var Nt=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var $t=Object.prototype.hasOwnProperty;var jt=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var _=(e,t)=>{for(var o in t)J(e,o,{get:t[o],enumerable:!0})},Qt=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Dt(t))!$t.call(e,r)&&r!==o&&J(e,r,{get:()=>t[r],enumerable:!(n=Nt(t,r))||n.enumerable});return e};var qt=e=>Qt(J({},"__esModule",{value:!0}),e);var P=(e,t,o)=>jt(e,typeof t!="symbol"?t+"":t,o);var No={};_(No,{ACCESS_TOKEN_KEY:()=>T,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>de,BoardApiError:()=>B,BoardClient:()=>x,REFRESH_TOKEN_KEY:()=>L,SDK_VERSION:()=>N,createBoardClient:()=>Wt,filters:()=>te,format:()=>ce,isBoardApiError:()=>E,isBoardPasswordRequired:()=>fe,isColdRule:()=>Ve,isConflict:()=>Ce,isForbidden:()=>he,isNotFound:()=>ye,isOwnMessage:()=>He,isRateLimited:()=>Se,isSafeApplicationUrl:()=>X,isUnauthorized:()=>ge,isValidationError:()=>be,lastOwnMessageId:()=>Ke,paginate:()=>Ge,paths:()=>pe,resolveApplyAction:()=>Ye,resolveApplyDecision:()=>ee,seo:()=>ue,suggest:()=>me});var de=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_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_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","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","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","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","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_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","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","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","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],B=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 E(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function ye(e){return E(e)&&e.status===404}function ge(e){return E(e)&&e.status===401}function fe(e){return E(e)&&e.status===401&&e.code==="board_password_required"}function he(e){return E(e)&&e.status===403}function be(e){return E(e)&&e.status===400&&e.code==="validation_bad_request"}function Se(e){return E(e)&&e.status===429}function Ce(e){return E(e)&&e.status===409}function Oe(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 Pe(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 T="cavuno_board_access_token",L="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Ee(){return typeof globalThis.document<"u"}function Gt(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function Ht(e,t){if(!Ee())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?`:${Pe(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var Vt=Symbol.for("@cavuno/board:nostore");var Kt={[Vt]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function Ae(e,t){let o=e??(Ee()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return Gt();case"nostore":return Kt;case"local":case"session":return Ht(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function w(e,t){await e.setItem(T,t.accessToken),await e.setItem(L,t.refreshToken)}async function ve(e){await e.removeItem(T),await e.removeItem(L)}var N="4.12.0";function Yt(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 zt(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 x=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,...a}=o,s=(o.method??"GET").toUpperCase(),p=`${this.basePath}${t}`,u=Oe(r).toString();u&&(p+=`?${u}`);let d=n!==void 0&&!Yt(n),m=n===void 0?void 0:d?JSON.stringify(n):n,y=new Headers({accept:"application/json"});d&&y.set("content-type","application/json");for(let[v,Z]of Object.entries(this.options.globalHeaders??{}))y.set(v,Z);let g=await this.storage.getItem(T);g!==null&&y.set("authorization",`Bearer ${g}`);let C=await this.storage.getItem(F);C!==null&&y.set("x-board-access",C),i&&new Headers(i).forEach((v,Z)=>{y.set(Z,v)}),(s!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${N}`);let f={url:p,init:{...a,method:s,headers:y,body:m}};this.options.onRequest&&(f=await this.options.onRequest(f));let A=zt(f.url);this.options.logger?.debug(`${s} ${A}`);let c=await globalThis.fetch(f.url,f.init);if(this.options.logger?.debug(`${c.status} ${s} ${A}`),this.options.onResponse&&await this.options.onResponse(c.clone(),f),c.status===204)return;if(c.ok)return await c.json();let b;try{b=await c.json()}catch{b=void 0}let O=b?.error,R=O&&typeof O.code=="string"&&typeof O.message=="string"?new B({status:c.status,code:O.code,message:O.message,details:O.details,requestId:O.requestId,raw:b}):new B({status:c.status,code:"unknown_error",message:c.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${R.status} ${R.code} ${s} ${A}`),R}};var Be="https://api.cavuno.com";function Re(e){async function t(n){return await w(e.storage,n),n}async function o(n){if(n?.refreshToken)return n.refreshToken;let r=await e.storage.getItem(L);if(r===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return r}return{async register(n,r){let i=await e.fetch("/auth/register",{...r,method:"POST",body:n});return t(i)},async login(n,r){let i=await e.fetch("/auth/login",{...r,method:"POST",body:n});return t(i)},async refresh(n,r){let i=await o(n),a=await e.fetch("/auth/refresh",{...r,method:"POST",body:{refreshToken:i}});return t(a)},async logout(n,r){let i=await o(n);await e.fetch("/auth/logout",{...r,method:"POST",body:{refreshToken:i}}),await ve(e.storage)},verifyEmail(n,r){return e.fetch("/auth/verify-email",{...r,method:"POST",body:n})},verifyEmailWithCode(n,r){return e.fetch("/auth/verify-email/otp",{...r,method:"POST",body:n})},resendVerification(n){return e.fetch("/auth/verify-email/resend",{...n,method:"POST"})},forgotPassword(n,r){return e.fetch("/auth/forgot-password",{...r,method:"POST",body:n})},resetPassword(n,r){return e.fetch("/auth/reset-password",{...r,method:"POST",body:n})},requestMagicLink(n,r){return e.fetch("/auth/magic-link",{...r,method:"POST",body:n})},async consumeMagicLink(n,r){let i=await e.fetch("/auth/magic-link/consume",{...r,method:"POST",body:n});return t(i)},getOAuthAuthorizationUrl(n,r,i){return e.fetch(`/auth/oauth/${n}`,{...i,method:"GET",query:r})},async exchangeOAuth(n,r){let i=await e.fetch("/auth/oauth/exchange",{...r,method:"POST",body:n});return t(i)}}}function _e(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 Te(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,a){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...a,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 Le(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Fe(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 xe(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 Ie(e){return{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 ke(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 w(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:{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})},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:{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})},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"})},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})}},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})},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 Ue(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 Me(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function Je(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function we(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function Ne(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 De(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function $e(e){return{list(t,o){return e.fetch("/talent",{...o,query:t})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function Qe(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function je(e,t){return{...Qe(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function qe(e){return{categories:je(e,"categories"),skills:je(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...Qe(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function Ge(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:a,...s}=r??{};r={...s,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 a of n())if(i.push(...a.data),i.length>=r)break;return i.slice(0,r)}}}function He(e,t){return e.authorBoardUserId!==t}function Ve(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function Ke(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 X(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 ee(e){let t=e.applicationUrl&&X(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 Ye(e){let t=ee({...e,registrationWall:!1,allowGuestApply:!1});return t.kind==="sign-in"?{kind:"sign-in"}:t}function Wt(e){let t=new x({baseUrl:e.baseUrl??Be,board:e.board,storage:Ae(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:Ie(t),embed:Le(t),companies:Te(t),blog:_e(t),auth:Re(t),me:ke(t),password:Ue(t),taxonomy:qe(t),search:De(t),redirects:we(t),jobAlerts:Fe(t),jobPosting:xe(t),salaries:Ne(t),talent:$e(t),plans:Je(t),paywall:Me(t)}}var te={};_(te,{DEFAULT_SORT:()=>Zt,EMPLOYMENT_TYPES:()=>We,JOB_SORTS:()=>Xe,REMOTE_OPTIONS:()=>ze,SENIORITIES:()=>Ze,parseCompany:()=>tt,parseListingFilters:()=>eo,parseSeniority:()=>et});var ze=["on_site","hybrid","remote"],We=["full_time","part_time","contract","internship","temporary"],Ze=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],Xe=["relevance","newest","salary_high"],Zt="relevance";var Xt=new Set(Ze);function et(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)||Xt.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function tt(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");if(!(!i||n.has(i))&&(n.add(i),o.push(i),o.length>=10))break}return o.length>0?o:void 0}function eo(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:ze.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:We.includes(e.employmentType)?e.employmentType:void 0,seniority:et(e.seniority),company:tt(e.company),sort:Xe.includes(e.sort)?e.sort:void 0}}var ce={};_(ce,{COUNTRY_CODES:()=>z,buildJobBreadcrumbs:()=>Y,countryOptions:()=>xt,formatDate:()=>at,formatMonthYear:()=>lt,formatPublishedRelativeDate:()=>st,formatSalaryRange:()=>pt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>It});function S(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 ot=new Map,nt=new Map,rt=new Map,it=new Map;function to(e){let t=ot.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),ot.set(e,t)),t}function oo(e){let t=nt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),nt.set(e,t)),t}function no(e){let t=rt.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),rt.set(e,t)),t}function ro(e){let t=it.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),it.set(e,t)),t}function oe(e,t,o){try{return to(o).format(e,t)}catch{return null}}function at(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=S(e);if(!n)return null;try{return no(n).format(o)}catch{return o.toISOString().split("T")[0]}}function st(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=S(e);if(!r)return null;let i=o-n.getTime(),a=Math.abs(i),s=60*1e3,p=60*s,l=24*p,u=7*l,d=30*l,m=365*l;if(a<s)try{return oo(r).format(0,"second")}catch{return oe(0,"second",r)}let y=[{unit:"year",ms:m},{unit:"month",ms:d},{unit:"week",ms:u},{unit:"day",ms:l},{unit:"hour",ms:p},{unit:"minute",ms:s}];for(let f of y)if(a>=f.ms){let A=Math.round(a/f.ms),c=i>=0?-A:A;return oe(c,f.unit,r)}let g=Math.round(a/1e3),C=i>=0?-g:g;return oe(C,"second",r)}function lt(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=S(e);if(!r)return null;try{return ro(r).format(n)}catch{return null}}var D=new Map;function ne(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,a=D.get(i);if(a===void 0){try{let s={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(s.compactDisplay="short",s.maximumFractionDigits=1,s.minimumFractionDigits=0),a=new Intl.NumberFormat(t,s)}catch{a=null}D.set(i,a)}return a?a.format(e):null}function re(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 io(e,t,o,n,r="symbol",i="compact"){let a=`${o}:${n}:${r}:${i}:range`,s=D.get(a);if(s===void 0){try{let p={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(p.compactDisplay="short",p.maximumFractionDigits=1,p.minimumFractionDigits=0),s=new Intl.NumberFormat(o,p)}catch{s=null}D.set(a,s)}return s?re(s,e,t):null}var ao=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function so(...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 pt(e,t,o,n,r=null,i="symbol",a){let s=t==null||Number.isFinite(t),p=o==null||Number.isFinite(o);if(!s||!p||t==null&&o==null)return null;let l=r?.trim().toUpperCase()||null;if(!l)return null;let u=S(e);if(!u)return null;let d=a??so(t,o),m=typeof n=="string"&&ao.has(n)?n:null;if(t!=null&&o!=null){let g=t<=o?t:o,C=t<=o?o:t,f=g===C?ne(g,u,l,i,d):io(g,C,u,l,i,d);return f?{text:f,timeframe:m,bound:"range"}:null}if(t!=null){let g=ne(t,u,l,i,d);return g?{text:g,timeframe:m,bound:"from"}:null}let y=ne(o,u,l,i,d);return y?{text:y,timeframe:m,bound:"upTo"}:null}var ct=new Map;function ut(...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 mt(e,t,o){let n=`${e}:${t}:${o}`,r=ct.get(n);if(r!==void 0)return r;let i;try{let a={style:"currency",currency:t,notation:o};o==="compact"&&(a.compactDisplay="short",a.minimumFractionDigits=0,a.maximumFractionDigits=1),i=new Intl.NumberFormat(e,a)}catch{i=null}return ct.set(n,i),i}function j(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=S(e);if(!i)return null;let a=n??ut(t),s=mt(i,r,a);return s?s.format(t):null}function I(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 a=S(e);if(!a)return null;let s=r??ut(t,o),p=mt(a,i,s);if(!p)return null;let l=Math.min(t,o),u=Math.max(t,o);return l===u?p.format(l):re(p,l,u)}var $=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function dt(e){return[...e].sort((t,o)=>{let n=$.indexOf(t.seniority),r=$.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var lo={unitText:"YEAR",duration:"P1Y"};function k(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...lo}}function ie(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return k(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function Q(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function yt(e,t,o,n){if(!o)return[];let r=I(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 q(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 gt(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 ft(e,t){return e.overallSalary?Q("Occupation",e.categoryName,{},[k(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...ie(e.bySeniority,e.currency,e.categoryName,t)]):null}function ht(e){return e.overallSalary?Q("Occupation",e.skillName,{},[k(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function bt(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:q(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function St(e,t){return e.overall?Q("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[k(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...ie(e.bySeniority,e.currency,e.name,t)]):null}function Ct(e,t){return t?.occupationUrl?q(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function Ot(e,t){return e.overallSalary?Q("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[k(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...ie(e.bySeniority,e.currency,e.categoryName,t)]):null}var Pt={high_school:"high school",associate_degree:"associate degree",bachelor_degree:"bachelor degree",professional_certificate:"professional certificate",postgraduate_degree:"postgraduate degree"},po={full_time:"FULL_TIME",part_time:"PART_TIME",contract:"CONTRACTOR",internship:"INTERN",temporary:"TEMPORARY",volunteer:"VOLUNTEER",other:"OTHER"},co={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},se=["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 At({job:e,board:t,shareUrl:o}){let n=bo(e),r=So(e),i=ae({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:uo(e,t),datePosted:Et(e.publishedAt),validThrough:Et(e.expiresAt),employmentType:e.employmentType?po[e.employmentType]??"OTHER":"OTHER",hiringOrganization:mo(e,t),jobLocation:go(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?ho(e):null,baseSalary:yo(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 uo(e,t){let o=e.company?.name??t.name??null,n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function mo(e,t){let o=e.company?.name??t.name??null;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 a=e.company?.logoUrl??t.logoUrl??null;return a&&(n.logo=a),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function yo(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?co[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 go(e){let t=e.officeLocations.map(o=>fo({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 fo({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},a=e?.trim(),s=t?.trim(),p=o?.trim(),l=n?.trim(),u=r?.trim();a&&(i.addressCountry=a.toUpperCase()),s&&(i.addressRegion=s),p&&(i.addressLocality=p),l&&(i.postalCode=l);let d=Object.keys(i).length>1;if(!d&&!u)return null;let m={"@type":"Place"};return u&&(m.name=u),d&&(m.address=i),m}function ho(e){if(e.remoteWorldwide)return se.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 bo(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 Pt).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Pt[n]}));return o.length>0?o:null}function So(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function Et(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function ae(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=>ae(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,ae(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var pe={};_(pe,{BOARD_PATHS:()=>V,blogAuthorPath:()=>vo,blogPostPath:()=>Tt,blogTagPath:()=>Lt,boardUrl:()=>K,companyMarketPath:()=>_t,companyPath:()=>Rt,companySalaryPath:()=>Oo,encodePathSegment:()=>h,goAlertsConfirmPath:()=>_o,goAlertsManagePath:()=>Ro,goJobPath:()=>Bo,jobDetailPath:()=>le,jobsCategoryPath:()=>G,jobsLocationCategoryPath:()=>H,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>Bt,jobsSkillPath:()=>vt,salaryLocationPath:()=>Ao,salarySkillPath:()=>Eo,salaryTitlePath:()=>Po,suggestionPath:()=>Co});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function le(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function G(e){return`/jobs/${h(e)}`}function vt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function H(e,t){return`${M(e)}/${h(t)}`}function Bt(e,t){return`${M(e)}/skills/${h(t)}`}function Rt(e){return`/companies/${h(e)}`}function _t(e){return`/companies/markets/${h(e)}`}function Co(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?Tt(e.slug):e.type==="tag"?Lt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?Bt(o,e.canonicalSlug):vt(e.canonicalSlug):o?H(o,e.canonicalSlug):G(e.canonicalSlug):e.type==="company"?Rt(e.slug):e.type==="market"?_t(e.slug):null}function Oo(e){return`/companies/${h(e)}/salaries`}function Po(e){return`/salaries/titles/${h(e)}`}function Eo(e){return`/salaries/skills/${h(e)}`}function Ao(e){return`/salaries/locations/${h(e)}`}function Tt(e){return`/blog/${h(e)}`}function Lt(e){return`/blog/tag/${h(e)}`}function vo(e){return`/blog/author/${h(e)}`}var V={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 Bo(e){return`/go/job/${e}`}function Ro(){return"/go/alerts-manage"}function _o(){return"/go/alerts-confirm"}function K(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Ft(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 a=r.href?To(r.href,t.origin??null):null,s={"@type":"ListItem",position:i+1,name:r.name};return a&&(s.item=a),s})}}function To(e,t){if(Lo(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function Lo(e){return/^https?:\/\//i.test(e)}function Y(e){let t=[{kind:"home",path:V.home},{kind:"jobs",path:V.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?H(o,n.slug):G(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 Fo(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function xo(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function xt(e){let t=S(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=Fo(t),n=xo(t).compare;return z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function Io(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 ko(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 It(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 s=Io(r,i);s&&n.push({key:r.key,label:r.label,kind:"multi_select",values:s});continue}let a=ko(r,i);a!==null&&n.push({key:r.key,label:r.label,kind:"text",value:a})}return n}var ue={};_(ue,{ALL_COUNTRY_CODES:()=>se,SENIORITY_ORDER:()=>$,buildJobBreadcrumbs:()=>Y,buildSalaryFaq:()=>yt,companyCategorySalaryJsonLd:()=>Ot,companySalaryJsonLd:()=>Ct,createAuthorProfileJsonLd:()=>Ut,createBlogArticleJsonLd:()=>kt,createBreadcrumbJsonLd:()=>Ft,createJobPostingJsonLd:()=>At,crossAxisSalaryJsonLd:()=>St,faqJsonLd:()=>gt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,itemListJsonLd:()=>q,listingHead:()=>Mt,listingJsonLd:()=>Jt,locationSalaryJsonLd:()=>bt,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>ht,sortBySeniority:()=>dt,titleSalaryJsonLd:()=>ft});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 a=e.authors[0];return a&&(r.author={"@type":"Person",name:a.name,...a.websiteUrl?{url:a.websiteUrl}:{}}),r}function Ut({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let a=o.trim(),s=[W(e.websiteUrl),W(e.twitterUrl),W(e.linkedinUrl),W(e.githubUrl)].filter(m=>!!m),p=`${t}#profile`,l=r.slice(0,5).map(m=>{let y=Uo(n,`/blog/${m.slug}`);return y?{"@type":"Article",headline:m.title,url:y,datePublished:m.publishedAt,author:{"@id":p}}:null}).filter(m=>m!==null),u=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,d={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":p,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:a||void 0,image:e.avatarUrl??void 0,sameAs:s.length>0?s:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:u}};return l.length>0&&(d.hasPart=l),d}function W(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 Uo(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function Mt(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 Jt(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:K(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:K(e.origin,le(n.company.slug,n.slug))}))}),t}var me={};_(me,{createSuggestController:()=>wo});function Mo(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function Jo(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 wt(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function wo(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,a={query:"",items:[],status:"idle",error:null},s=[],p=new Set,l=0,u=null,d=null,m=new Set;function y(){for(let c of m)c()}function g(c){a=c,y()}function C(){u!==null&&(globalThis.clearTimeout(u),u=null)}function f(){d&&(d.abort(),d=null)}function A(c){let b=++l;f();let O=new AbortController;d=O;let R={q:c};r!==void 0&&(R.limit=r),e.search.suggest(R,{signal:O.signal}).then(v=>{i||b!==l||(d=null,s=v.items,g({query:a.query,items:wt(s,p),status:"ready",error:null}))}).catch(v=>{i||b!==l||Mo(v)||(d=null,g({query:a.query,items:a.items,status:"error",error:v}))})}return{setQuery(c){if(i)return;let b=c.trim();if(C(),Jo(b)<o){l+=1,f(),s=[],g({query:c,items:[],status:"idle",error:null});return}l+=1,f(),g({query:c,items:a.items,status:"loading",error:null}),u=globalThis.setTimeout(()=>{u=null,!i&&A(b)},n)},setExcludedCompanySlugs(c){i||(p=new Set(c.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),g({query:a.query,items:wt(s,p),status:a.status,error:a.error}))},getState(){return a},subscribe(c){return i?()=>{}:(m.add(c),()=>{m.delete(c)})},dispose(){i||(i=!0,C(),f(),l+=1,m.clear())}}}return qt(No);})();
|
package/dist/filters.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-CV41Msa7.mjs';
|
|
2
|
+
import './_spec-ChuT3QX8.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-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-CsoxD0mU.js';
|
|
2
|
+
import './_spec-ChuT3QX8.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-
|
|
2
|
-
import { C as CustomFieldDefinition } from './board-
|
|
3
|
-
import { C as CustomFieldValues } from './jobs-
|
|
4
|
-
import './_spec-
|
|
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-BoIXFh0q.mjs';
|
|
2
|
+
import { C as CustomFieldDefinition } from './board-BJCKz-Is.mjs';
|
|
3
|
+
import { C as CustomFieldValues } from './jobs-CV41Msa7.mjs';
|
|
4
|
+
import './_spec-ChuT3QX8.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-
|
|
2
|
-
import { C as CustomFieldDefinition } from './board-
|
|
3
|
-
import { C as CustomFieldValues } from './jobs-
|
|
4
|
-
import './_spec-
|
|
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-6TB8Lw-C.js';
|
|
2
|
+
import { C as CustomFieldDefinition } from './board-CWQjFHWJ.js';
|
|
3
|
+
import { C as CustomFieldValues } from './jobs-CsoxD0mU.js';
|
|
4
|
+
import './_spec-ChuT3QX8.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Date display helpers in the board language (required leading parameter,
|