@cavuno/board 4.7.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/{_spec-B2ZrXuea.d.mts → _spec-DePC7a05.d.mts} +43 -3
  3. package/dist/{_spec-B2ZrXuea.d.ts → _spec-DePC7a05.d.ts} +43 -3
  4. package/dist/{blog-B125P3dS.d.mts → blog-DbFr4VPW.d.mts} +1 -1
  5. package/dist/{blog-BmEG_fhe.d.ts → blog-ummlt6Uq.d.ts} +1 -1
  6. package/dist/{board-QTX75RxT.d.mts → board-DxTMBgIf.d.mts} +2 -2
  7. package/dist/{board-6woxZtzD.d.ts → board-zWyHbyi4.d.ts} +2 -2
  8. package/dist/{breadcrumbs-CP42mzYb.d.mts → breadcrumbs-P4qh0zML.d.mts} +2 -2
  9. package/dist/{breadcrumbs-BVeDYPCw.d.ts → breadcrumbs-kbmspmfk.d.ts} +2 -2
  10. package/dist/browser/cavuno-board.global.min.js +1 -1
  11. package/dist/{chunk-ZCEAOJ6Y.mjs → chunk-IWWPHFK2.mjs} +1 -0
  12. package/dist/filters.d.mts +2 -2
  13. package/dist/filters.d.ts +2 -2
  14. package/dist/format.d.mts +4 -4
  15. package/dist/format.d.ts +4 -4
  16. package/dist/index.d.mts +49 -14
  17. package/dist/index.d.ts +49 -14
  18. package/dist/index.js +42 -1
  19. package/dist/index.mjs +42 -2
  20. package/dist/{jobs-DrdhICLO.d.mts → jobs-DTLDt57G.d.mts} +1 -1
  21. package/dist/{jobs-BH1CgV8J.d.ts → jobs-twt5TO9l.d.ts} +1 -1
  22. package/dist/{search-CCsijbzU.d.ts → search-CHD6peIl.d.ts} +1 -1
  23. package/dist/{search-B9T6rAhd.d.mts → search-f2UNlTfv.d.mts} +1 -1
  24. package/dist/seo.d.mts +6 -6
  25. package/dist/seo.d.ts +6 -6
  26. package/dist/server.d.mts +5 -5
  27. package/dist/server.d.ts +5 -5
  28. package/dist/server.mjs +1 -1
  29. package/dist/sitemap.d.mts +5 -5
  30. package/dist/sitemap.d.ts +5 -5
  31. package/dist/suggest.d.mts +2 -2
  32. package/dist/suggest.d.ts +2 -2
  33. package/package.json +1 -1
  34. package/skills/cavuno-board-account/SKILL.md +4 -1
  35. package/skills/manifest.json +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
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.8.0 — 2026-08-23
7
+
8
+ - **Country-gated Apply flows**: compatible starters can use
9
+ `board.jobs.createApplyIntent` for opaque external-apply redirects and
10
+ `board.jobs.prepareApplyApproval` before native Apply. The browser completes
11
+ country approval directly against the Cavuno Apply gateway, then returns the
12
+ opaque receipt through the existing `board.jobs.apply` call. New job payloads
13
+ expose `applyAction`, and native Apply accepts `approvalReceipt` plus the
14
+ matching server-owned `approvalSessionKey`. These additions keep destination
15
+ URLs and client-supplied country or IP values out of the trusted decision.
16
+
6
17
  ## 4.7.0 — 2026-08-23
7
18
 
8
19
  - **`board.me.companies.recommendedTalent.list`**: candidates who fit one of
@@ -127,11 +127,40 @@ interface components {
127
127
  companyName: string | null;
128
128
  } | null;
129
129
  };
130
+ ApplyApprovalPlan: {
131
+ /** @enum {string} */
132
+ object: "apply_approval_plan";
133
+ /** @enum {string} */
134
+ kind: "not_required";
135
+ } | {
136
+ /** @enum {string} */
137
+ object: "apply_approval_plan";
138
+ /** @enum {string} */
139
+ kind: "approval_required";
140
+ /** Format: uri */
141
+ approvalUrl: string;
142
+ /** Format: date-time */
143
+ expiresAt: string;
144
+ };
130
145
  ApplyBody: {
131
146
  name?: string;
132
147
  /** Format: email */
133
148
  email?: string;
134
149
  coverNote?: string;
150
+ /** @description Opaque native country-approval receipt returned by the browser-direct Apply gateway. */
151
+ approvalReceipt?: string;
152
+ /** @description Server-owned board session key that prepared the country approval. */
153
+ approvalSessionKey?: string;
154
+ };
155
+ ApplyIntent: {
156
+ /** @description Opaque one-time Apply intent token. */
157
+ id: string;
158
+ /** @enum {string} */
159
+ object: "apply_intent";
160
+ /** Format: uri */
161
+ gatewayUrl: string;
162
+ /** Format: date-time */
163
+ expiresAt: string;
135
164
  };
136
165
  Block: {
137
166
  /** @enum {string} */
@@ -329,6 +358,7 @@ interface components {
329
358
  handle: string | null;
330
359
  headline: string | null;
331
360
  location: string | null;
361
+ countryCode: string | null;
332
362
  /** @enum {string} */
333
363
  profileVisibility: "hidden" | "logged_in_only" | "public";
334
364
  /** @enum {string} */
@@ -634,6 +664,12 @@ interface components {
634
664
  object: "conversation_ref";
635
665
  conversationId: string | null;
636
666
  };
667
+ CreateApplyApprovalBody: {
668
+ sessionKey: string;
669
+ };
670
+ CreateApplyIntentBody: {
671
+ sessionKey: string;
672
+ };
637
673
  CreateCompanyBody: {
638
674
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
639
675
  website?: string;
@@ -1578,7 +1614,7 @@ interface components {
1578
1614
  /** @enum {string} */
1579
1615
  object: "notification_preference";
1580
1616
  /** @enum {string} */
1581
- channel: "messageEmails" | "applicationEmails";
1617
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
1582
1618
  subscribed: boolean;
1583
1619
  updatedAt: number | null;
1584
1620
  };
@@ -1880,6 +1916,9 @@ interface components {
1880
1916
  description: string | null;
1881
1917
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
1882
1918
  applicationUrl: string | null;
1919
+ isSponsored: boolean;
1920
+ /** @enum {string} */
1921
+ applyAction: "native" | "external_direct" | "gateway_external" | "gateway_native";
1883
1922
  /** @description Hierarchical permit selection authored by the board owner. The three `remoteWorkPermit*` and `remoteWorldwide` fields are read-only derived projections. */
1884
1923
  remotePermits: {
1885
1924
  type: string;
@@ -2761,7 +2800,7 @@ interface components {
2761
2800
  UnsubscribeBody: {
2762
2801
  boardUserId: string;
2763
2802
  /** @enum {string} */
2764
- channel: "messageEmails" | "applicationEmails";
2803
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2765
2804
  token: string;
2766
2805
  };
2767
2806
  UpdateApplicationFactsBody: {
@@ -2778,6 +2817,7 @@ interface components {
2778
2817
  handle?: string;
2779
2818
  headline?: string;
2780
2819
  location?: string;
2820
+ countryCode?: string | null;
2781
2821
  /** @enum {string} */
2782
2822
  profileVisibility?: "hidden" | "logged_in_only" | "public";
2783
2823
  /** @enum {string} */
@@ -2832,7 +2872,7 @@ interface components {
2832
2872
  };
2833
2873
  UpdateNotificationPreferenceBody: {
2834
2874
  /** @enum {string} */
2835
- channel: "messageEmails" | "applicationEmails";
2875
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2836
2876
  subscribed: boolean;
2837
2877
  };
2838
2878
  UpdatePasswordBody: {
@@ -127,11 +127,40 @@ interface components {
127
127
  companyName: string | null;
128
128
  } | null;
129
129
  };
130
+ ApplyApprovalPlan: {
131
+ /** @enum {string} */
132
+ object: "apply_approval_plan";
133
+ /** @enum {string} */
134
+ kind: "not_required";
135
+ } | {
136
+ /** @enum {string} */
137
+ object: "apply_approval_plan";
138
+ /** @enum {string} */
139
+ kind: "approval_required";
140
+ /** Format: uri */
141
+ approvalUrl: string;
142
+ /** Format: date-time */
143
+ expiresAt: string;
144
+ };
130
145
  ApplyBody: {
131
146
  name?: string;
132
147
  /** Format: email */
133
148
  email?: string;
134
149
  coverNote?: string;
150
+ /** @description Opaque native country-approval receipt returned by the browser-direct Apply gateway. */
151
+ approvalReceipt?: string;
152
+ /** @description Server-owned board session key that prepared the country approval. */
153
+ approvalSessionKey?: string;
154
+ };
155
+ ApplyIntent: {
156
+ /** @description Opaque one-time Apply intent token. */
157
+ id: string;
158
+ /** @enum {string} */
159
+ object: "apply_intent";
160
+ /** Format: uri */
161
+ gatewayUrl: string;
162
+ /** Format: date-time */
163
+ expiresAt: string;
135
164
  };
136
165
  Block: {
137
166
  /** @enum {string} */
@@ -329,6 +358,7 @@ interface components {
329
358
  handle: string | null;
330
359
  headline: string | null;
331
360
  location: string | null;
361
+ countryCode: string | null;
332
362
  /** @enum {string} */
333
363
  profileVisibility: "hidden" | "logged_in_only" | "public";
334
364
  /** @enum {string} */
@@ -634,6 +664,12 @@ interface components {
634
664
  object: "conversation_ref";
635
665
  conversationId: string | null;
636
666
  };
667
+ CreateApplyApprovalBody: {
668
+ sessionKey: string;
669
+ };
670
+ CreateApplyIntentBody: {
671
+ sessionKey: string;
672
+ };
637
673
  CreateCompanyBody: {
638
674
  /** @description Public company website URL. Normalized to a canonical apex domain when stored. */
639
675
  website?: string;
@@ -1578,7 +1614,7 @@ interface components {
1578
1614
  /** @enum {string} */
1579
1615
  object: "notification_preference";
1580
1616
  /** @enum {string} */
1581
- channel: "messageEmails" | "applicationEmails";
1617
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
1582
1618
  subscribed: boolean;
1583
1619
  updatedAt: number | null;
1584
1620
  };
@@ -1880,6 +1916,9 @@ interface components {
1880
1916
  description: string | null;
1881
1917
  /** @description Where candidates apply, or `null` if not specified. An HTTPS URL or `mailto:` URI. */
1882
1918
  applicationUrl: string | null;
1919
+ isSponsored: boolean;
1920
+ /** @enum {string} */
1921
+ applyAction: "native" | "external_direct" | "gateway_external" | "gateway_native";
1883
1922
  /** @description Hierarchical permit selection authored by the board owner. The three `remoteWorkPermit*` and `remoteWorldwide` fields are read-only derived projections. */
1884
1923
  remotePermits: {
1885
1924
  type: string;
@@ -2761,7 +2800,7 @@ interface components {
2761
2800
  UnsubscribeBody: {
2762
2801
  boardUserId: string;
2763
2802
  /** @enum {string} */
2764
- channel: "messageEmails" | "applicationEmails";
2803
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2765
2804
  token: string;
2766
2805
  };
2767
2806
  UpdateApplicationFactsBody: {
@@ -2778,6 +2817,7 @@ interface components {
2778
2817
  handle?: string;
2779
2818
  headline?: string;
2780
2819
  location?: string;
2820
+ countryCode?: string | null;
2781
2821
  /** @enum {string} */
2782
2822
  profileVisibility?: "hidden" | "logged_in_only" | "public";
2783
2823
  /** @enum {string} */
@@ -2832,7 +2872,7 @@ interface components {
2832
2872
  };
2833
2873
  UpdateNotificationPreferenceBody: {
2834
2874
  /** @enum {string} */
2835
- channel: "messageEmails" | "applicationEmails";
2875
+ channel: "messageEmails" | "applicationEmails" | "recommendedJobEmails";
2836
2876
  subscribed: boolean;
2837
2877
  };
2838
2878
  UpdatePasswordBody: {
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B2ZrXuea.mjs';
1
+ import { S as Schemas } from './_spec-DePC7a05.mjs';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-B2ZrXuea.js';
1
+ import { S as Schemas } from './_spec-DePC7a05.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-B2ZrXuea.mjs';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-DrdhICLO.mjs';
1
+ import { S as Schemas } from './_spec-DePC7a05.mjs';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-DTLDt57G.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-B2ZrXuea.js';
2
- import { L as ListEnvelope, m as RelatedSearch } from './jobs-BH1CgV8J.js';
1
+ import { S as Schemas } from './_spec-DePC7a05.js';
2
+ import { L as ListEnvelope, m as RelatedSearch } from './jobs-twt5TO9l.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-QTX75RxT.mjs';
2
- import { P as PublicJob } from './jobs-DrdhICLO.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-DxTMBgIf.mjs';
2
+ import { P as PublicJob } from './jobs-DTLDt57G.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -1,5 +1,5 @@
1
- import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-6woxZtzD.js';
2
- import { P as PublicJob } from './jobs-BH1CgV8J.js';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-zWyHbyi4.js';
2
+ import { P as PublicJob } from './jobs-twt5TO9l.js';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
@@ -1 +1 @@
1
- "use strict";var CavunoBoard=(()=>{var J=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var Dt=Object.prototype.hasOwnProperty;var $t=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var L=(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))!Dt.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 E=(e,t,o)=>$t(e,typeof t!="symbol"?t+"":t,o);var wo={};L(wo,{ACCESS_TOKEN_KEY:()=>_,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>me,BoardApiError:()=>B,BoardClient:()=>x,REFRESH_TOKEN_KEY:()=>T,SDK_VERSION:()=>N,createBoardClient:()=>zt,filters:()=>ee,format:()=>pe,isBoardApiError:()=>P,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_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","resume_invalid_file","resume_upload_forbidden","applications_external_apply_only","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","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],B=class extends Error{constructor(o){super(o.message);E(this,"status");E(this,"code");E(this,"details");E(this,"requestId");E(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 P(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function de(e){return P(e)&&e.status===404}function ye(e){return P(e)&&e.status===401}function ge(e){return P(e)&&e.status===401&&e.code==="board_password_required"}function fe(e){return P(e)&&e.status===403}function he(e){return P(e)&&e.status===400&&e.code==="validation_bad_request"}function be(e){return P(e)&&e.status===429}function Se(e){return P(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 _="cavuno_board_access_token",T="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Ee(){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(!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?`:${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 Pe(e,t){let o=e??(Ee()?"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.accessToken),await e.setItem(T,t.refreshToken)}async function Re(e){await e.removeItem(_),await e.removeItem(T)}var N="4.7.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 x=class{constructor(t){E(this,"storage");E(this,"basePath");E(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[v,Z]of Object.entries(this.options.globalHeaders??{}))y.set(v,Z);let g=await this.storage.getItem(_);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 R=Yt(f.url);this.options.logger?.debug(`${s} ${R}`);let c=await globalThis.fetch(f.url,f.init);if(this.options.logger?.debug(`${c.status} ${s} ${R}`),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 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(`${A.status} ${A.code} ${s} ${R}`),A}};var ve="https://api.cavuno.com";function Be(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(T);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 Re(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 Le(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 _e(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Te(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 xe(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??{}})},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 Ie(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)}},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)}},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 De(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 $e(e,t){return{...je(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function Qe(e){return{categories:$e(e,"categories"),skills:$e(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 x({baseUrl:e.baseUrl??ve,board:e.board,storage:Pe(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:xe(t),embed:_e(t),companies:Le(t),blog:Ae(t),auth:Be(t),me:Ie(t),password:ke(t),taxonomy:Qe(t),search:Ne(t),redirects:Je(t),jobAlerts:Te(t),jobPosting:Fe(t),salaries:we(t),talent:De(t),plans:Me(t),paywall:Ue(t)}}var ee={};L(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={};L(pe,{COUNTRY_CODES:()=>z,buildJobBreadcrumbs:()=>Y,countryOptions:()=>Ft,formatDate:()=>it,formatMonthYear:()=>st,formatPublishedRelativeDate:()=>at,formatSalaryRange:()=>lt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>xt});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 R=Math.round(a/f.ms),c=i>=0?-R:R;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 D=new Map;function oe(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 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=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?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 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??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 $=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function mt(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 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=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 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 Pt({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:Et(e.publishedAt),validThrough:Et(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 Et(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={};L(le,{BOARD_PATHS:()=>V,blogAuthorPath:()=>Ro,blogPostPath:()=>Lt,blogTagPath:()=>_t,boardUrl:()=>K,companyMarketPath:()=>At,companyPath:()=>Bt,companySalaryPath:()=>Co,encodePathSegment:()=>h,goAlertsConfirmPath:()=>Ao,goAlertsManagePath:()=>Bo,goJobPath:()=>vo,jobDetailPath:()=>se,jobsCategoryPath:()=>G,jobsLocationCategoryPath:()=>H,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>vt,jobsSkillPath:()=>Rt,salaryLocationPath:()=>Po,salarySkillPath:()=>Eo,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 Rt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function H(e,t){return`${M(e)}/${h(t)}`}function vt(e,t){return`${M(e)}/skills/${h(t)}`}function Bt(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"?Lt(e.slug):e.type==="tag"?_t(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?vt(o,e.canonicalSlug):Rt(e.canonicalSlug):o?H(o,e.canonicalSlug):G(e.canonicalSlug):e.type==="company"?Bt(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 Eo(e){return`/salaries/skills/${h(e)}`}function Po(e){return`/salaries/locations/${h(e)}`}function Lt(e){return`/blog/${h(e)}`}function _t(e){return`/blog/tag/${h(e)}`}function Ro(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 vo(e){return`/go/job/${e}`}function Bo(){return"/go/alerts-manage"}function Ao(){return"/go/alerts-confirm"}function K(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Tt(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?Lo(r.href,t.origin??null):null,s={"@type":"ListItem",position:i+1,name:r.name};return a&&(s.item=a),s})}}function Lo(e,t){if(_o(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function _o(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 To(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=To(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 xo(e,t){if(!Array.isArray(t)||t.length===0)return null;let o=t.map(n=>e.options?.find(r=>r.key===n)?.label).filter(n=>!!n);return o.length>0?o:null}function Io(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 xt(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=xo(r,i);s&&n.push({key:r.key,label:r.label,kind:"multi_select",values:s});continue}let a=Io(r,i);a!==null&&n.push({key:r.key,label:r.label,kind:"text",value:a})}return n}var ce={};L(ce,{ALL_COUNTRY_CODES:()=>ae,SENIORITY_ORDER:()=>$,buildJobBreadcrumbs:()=>Y,buildSalaryFaq:()=>dt,companyCategorySalaryJsonLd:()=>Ct,companySalaryJsonLd:()=>St,createAuthorProfileJsonLd:()=>kt,createBlogArticleJsonLd:()=>It,createBreadcrumbJsonLd:()=>Tt,createJobPostingJsonLd:()=>Pt,crossAxisSalaryJsonLd:()=>bt,faqJsonLd:()=>yt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,itemListJsonLd:()=>q,listingHead:()=>Ut,listingJsonLd:()=>Mt,locationSalaryJsonLd:()=>ht,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>ft,sortBySeniority:()=>mt,titleSalaryJsonLd:()=>gt});function It({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={};L(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 R(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(v=>{i||b!==l||(d=null,s=v.items,g({query:a.query,items:Jt(s,p),status:"ready",error:null}))}).catch(v=>{i||b!==l||Uo(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(),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&&R(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 wt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var Dt=Object.prototype.hasOwnProperty;var $t=(e,t,o)=>t in e?J(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var L=(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))!Dt.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 E=(e,t,o)=>$t(e,typeof t!="symbol"?t+"":t,o);var wo={};L(wo,{ACCESS_TOKEN_KEY:()=>_,BOARD_ACCESS_GRANT_KEY:()=>F,BOARD_API_ERROR_CODES:()=>me,BoardApiError:()=>B,BoardClient:()=>x,REFRESH_TOKEN_KEY:()=>T,SDK_VERSION:()=>N,createBoardClient:()=>zt,filters:()=>ee,format:()=>pe,isBoardApiError:()=>P,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_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","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","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],B=class extends Error{constructor(o){super(o.message);E(this,"status");E(this,"code");E(this,"details");E(this,"requestId");E(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 P(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function de(e){return P(e)&&e.status===404}function ye(e){return P(e)&&e.status===401}function ge(e){return P(e)&&e.status===401&&e.code==="board_password_required"}function fe(e){return P(e)&&e.status===403}function he(e){return P(e)&&e.status===400&&e.code==="validation_bad_request"}function be(e){return P(e)&&e.status===429}function Se(e){return P(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 _="cavuno_board_access_token",T="cavuno_board_refresh_token",F="cavuno_board_access_grant";function Ee(){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(!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?`:${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 Pe(e,t){let o=e??(Ee()?"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.accessToken),await e.setItem(T,t.refreshToken)}async function ve(e){await e.removeItem(_),await e.removeItem(T)}var N="4.8.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 x=class{constructor(t){E(this,"storage");E(this,"basePath");E(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[R,Z]of Object.entries(this.options.globalHeaders??{}))y.set(R,Z);let g=await this.storage.getItem(_);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((R,Z)=>{y.set(Z,R)}),(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 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(`${A.status} ${A.code} ${s} ${v}`),A}};var Re="https://api.cavuno.com";function Be(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(T);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 Le(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 _e(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Te(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 xe(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 Ie(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)}},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)}},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 De(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 $e(e,t){return{...je(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function Qe(e){return{categories:$e(e,"categories"),skills:$e(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 x({baseUrl:e.baseUrl??Re,board:e.board,storage:Pe(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:xe(t),embed:_e(t),companies:Le(t),blog:Ae(t),auth:Be(t),me:Ie(t),password:ke(t),taxonomy:Qe(t),search:Ne(t),redirects:Je(t),jobAlerts:Te(t),jobPosting:Fe(t),salaries:we(t),talent:De(t),plans:Me(t),paywall:Ue(t)}}var ee={};L(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={};L(pe,{COUNTRY_CODES:()=>z,buildJobBreadcrumbs:()=>Y,countryOptions:()=>Ft,formatDate:()=>it,formatMonthYear:()=>st,formatPublishedRelativeDate:()=>at,formatSalaryRange:()=>lt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>xt});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 D=new Map;function oe(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 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=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?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 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??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 $=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function mt(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 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=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 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 Pt({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:Et(e.publishedAt),validThrough:Et(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 Et(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={};L(le,{BOARD_PATHS:()=>V,blogAuthorPath:()=>vo,blogPostPath:()=>Lt,blogTagPath:()=>_t,boardUrl:()=>K,companyMarketPath:()=>At,companyPath:()=>Bt,companySalaryPath:()=>Co,encodePathSegment:()=>h,goAlertsConfirmPath:()=>Ao,goAlertsManagePath:()=>Bo,goJobPath:()=>Ro,jobDetailPath:()=>se,jobsCategoryPath:()=>G,jobsLocationCategoryPath:()=>H,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>Rt,jobsSkillPath:()=>vt,salaryLocationPath:()=>Po,salarySkillPath:()=>Eo,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 Rt(e,t){return`${M(e)}/skills/${h(t)}`}function Bt(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"?Lt(e.slug):e.type==="tag"?_t(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?Rt(o,e.canonicalSlug):vt(e.canonicalSlug):o?H(o,e.canonicalSlug):G(e.canonicalSlug):e.type==="company"?Bt(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 Eo(e){return`/salaries/skills/${h(e)}`}function Po(e){return`/salaries/locations/${h(e)}`}function Lt(e){return`/blog/${h(e)}`}function _t(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 Ro(e){return`/go/job/${e}`}function Bo(){return"/go/alerts-manage"}function Ao(){return"/go/alerts-confirm"}function K(e,t){return`${e.replace(/\/+$/,"")}${t}`}function Tt(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?Lo(r.href,t.origin??null):null,s={"@type":"ListItem",position:i+1,name:r.name};return a&&(s.item=a),s})}}function Lo(e,t){if(_o(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function _o(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 To(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=To(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 xo(e,t){if(!Array.isArray(t)||t.length===0)return null;let o=t.map(n=>e.options?.find(r=>r.key===n)?.label).filter(n=>!!n);return o.length>0?o:null}function Io(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 xt(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=xo(r,i);s&&n.push({key:r.key,label:r.label,kind:"multi_select",values:s});continue}let a=Io(r,i);a!==null&&n.push({key:r.key,label:r.label,kind:"text",value:a})}return n}var ce={};L(ce,{ALL_COUNTRY_CODES:()=>ae,SENIORITY_ORDER:()=>$,buildJobBreadcrumbs:()=>Y,buildSalaryFaq:()=>dt,companyCategorySalaryJsonLd:()=>Ct,companySalaryJsonLd:()=>St,createAuthorProfileJsonLd:()=>kt,createBlogArticleJsonLd:()=>It,createBreadcrumbJsonLd:()=>Tt,createJobPostingJsonLd:()=>Pt,crossAxisSalaryJsonLd:()=>bt,faqJsonLd:()=>yt,formatSalaryStat:()=>j,formatSalaryStatRange:()=>I,itemListJsonLd:()=>q,listingHead:()=>Ut,listingJsonLd:()=>Mt,locationSalaryJsonLd:()=>ht,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>ft,sortBySeniority:()=>mt,titleSalaryJsonLd:()=>gt});function It({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={};L(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(R=>{i||b!==l||(d=null,s=R.items,g({query:a.query,items:Jt(s,p),status:"ready",error:null}))}).catch(R=>{i||b!==l||Uo(R)||(d=null,g({query:a.query,items:a.items,status:"error",error:R}))})}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);})();
@@ -70,6 +70,7 @@ var BOARD_API_ERROR_CODES = [
70
70
  "resume_upload_forbidden",
71
71
  // Applications
72
72
  "applications_external_apply_only",
73
+ "applications_country_not_allowed",
73
74
  "applications_guest_not_allowed",
74
75
  "applications_job_not_found",
75
76
  "applications_not_found",
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-DrdhICLO.mjs';
2
- import './_spec-B2ZrXuea.mjs';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-DTLDt57G.mjs';
2
+ import './_spec-DePC7a05.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL