@cavuno/board 4.41.0 → 4.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/{_spec-DRUEt9M3.d.mts → _spec-B2aizgxr.d.mts} +10 -0
- package/dist/{_spec-DRUEt9M3.d.ts → _spec-B2aizgxr.d.ts} +10 -0
- package/dist/analytics.d.mts +8 -1
- package/dist/analytics.d.ts +8 -1
- package/dist/analytics.js +27 -1
- package/dist/analytics.mjs +27 -1
- package/dist/{blog-B0oLDN4M.d.mts → blog-BkACbXY0.d.ts} +6 -1
- package/dist/{blog-DZejMyq-.d.ts → blog-CYHSnNTZ.d.mts} +6 -1
- package/dist/{board-Eusn8R9i.d.mts → board-DK4HmSty.d.mts} +2 -2
- package/dist/{board-C-Hz8MMP.d.ts → board-DWeT9Jbl.d.ts} +2 -2
- package/dist/{breadcrumbs-nX2svS5_.d.ts → breadcrumbs-CtKa2zPe.d.ts} +2 -2
- package/dist/{breadcrumbs-BTqDFpGD.d.mts → breadcrumbs-nTfIWzRh.d.mts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +22 -12
- package/dist/index.d.ts +22 -12
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{jobs-B-imggAc.d.mts → jobs-C_eO-WfM.d.mts} +1 -1
- package/dist/{jobs-jQwzYyvr.d.ts → jobs-SAkNWgAB.d.ts} +1 -1
- package/dist/{search-vXX_s6f5.d.ts → search-CVcMFOuJ.d.ts} +1 -1
- package/dist/{search-C8uy6k8-.d.mts → search-Cb3Aoa4c.d.mts} +1 -1
- package/dist/{seo-D3AF4q7d.d.mts → seo-DPVud7SH.d.mts} +1 -1
- package/dist/{seo-BdNi6Eif.d.ts → seo-DgFBQTIK.d.ts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/sitemap.d.mts +6 -6
- package/dist/sitemap.d.ts +6 -6
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/package.json +1 -1
- package/skills/cavuno-board-blog/SKILL.md +7 -3
- package/skills/manifest.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,36 @@
|
|
|
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.42.0 — 2026-10-12
|
|
7
|
+
|
|
8
|
+
- Talent search: `talent.list()` takes `radius`, in kilometres (1–250,
|
|
9
|
+
decimals allowed). With a city or locality `place`, it also returns
|
|
10
|
+
candidates whose home city or locality is within that distance. Region and
|
|
11
|
+
country places ignore it. `count` and paging include the nearby
|
|
12
|
+
candidates. Build mile choices with `searchRadiusOptions`,
|
|
13
|
+
`defaultSearchRadius` and `distanceUnitForCountry` from
|
|
14
|
+
`@cavuno/board/format`, as for job search.
|
|
15
|
+
- Job search: `count` is the full number of matches again. `hasMore` and
|
|
16
|
+
`nextCursor` stop at the deepest reachable result, and the new optional
|
|
17
|
+
`reachableCount` is sent when results are capped below `count`.
|
|
18
|
+
- Blog: `blog.posts.list()` takes `sort: 'featured'`, which lists featured posts
|
|
19
|
+
newest first, then the rest newest first, as one list. The default is
|
|
20
|
+
still `newest`.
|
|
21
|
+
- Job custom fields can be private to the board team. Private fields and
|
|
22
|
+
their values are left out of public job responses and the public job form.
|
|
23
|
+
- Coupons: a coupon `name` longer than 40 characters is rejected with a 400
|
|
24
|
+
that names the field, instead of a payment-provider error.
|
|
25
|
+
|
|
26
|
+
## 4.41.1 — 2026-10-08
|
|
27
|
+
|
|
28
|
+
- Analytics: `analytics.track()` now sends the visit's session id (the
|
|
29
|
+
`session-id` cookie the hosted script sets) with each event, so custom
|
|
30
|
+
events such as `job_apply_click` are attributed to the same channel,
|
|
31
|
+
referrer and campaign as the visit's page views. `track` still sets no
|
|
32
|
+
cookie and sends nothing until `install` has run.
|
|
33
|
+
- For `job_apply_click`, pass `{ job_id, job_slug, company_slug }` so clicks
|
|
34
|
+
are counted per job and per company.
|
|
35
|
+
|
|
6
36
|
## 4.41.0 — 2026-10-07
|
|
7
37
|
|
|
8
38
|
- Categories: `taxonomy.categories.list({ topLevel: true })` lists only
|
|
@@ -1139,6 +1139,11 @@ interface components {
|
|
|
1139
1139
|
min?: number;
|
|
1140
1140
|
/** @description Inclusive maximum for `number` fields, when set. */
|
|
1141
1141
|
max?: number;
|
|
1142
|
+
/**
|
|
1143
|
+
* @description Who sees the field. `public` (or absent): the job page, employers, search and the Board API. `private`: only the board team, in the dashboard and this Operator API. Board API (`/v1/boards/...`) responses never include private fields or their values. Omitted on an existing field keeps its current visibility.
|
|
1144
|
+
* @enum {string}
|
|
1145
|
+
*/
|
|
1146
|
+
visibility?: "public" | "private";
|
|
1142
1147
|
};
|
|
1143
1148
|
CustomFieldOption: {
|
|
1144
1149
|
/** @description Stable option key — the value stored on a job, not the label. */
|
|
@@ -1739,6 +1744,11 @@ interface components {
|
|
|
1739
1744
|
allowOverrides?: boolean;
|
|
1740
1745
|
/** @description Key of the collection's short, long or rich text field whose value is a selected entry's default description. When that field is rich text, an entry's `description` is sanitised HTML. Absent means entries have no default description. */
|
|
1741
1746
|
descriptionFieldKey?: string;
|
|
1747
|
+
/**
|
|
1748
|
+
* @description Who sees the field. `public` (or absent): the job page, employers, search and the Board API. `private`: only the board team, in the dashboard and this Operator API. Board API (`/v1/boards/...`) responses never include private fields or their values. Omitted on an existing field keeps its current visibility.
|
|
1749
|
+
* @enum {string}
|
|
1750
|
+
*/
|
|
1751
|
+
visibility?: "public" | "private";
|
|
1742
1752
|
};
|
|
1743
1753
|
JobCollectionOverride: {
|
|
1744
1754
|
/** @description The collection field key used in `collectionValues`. */
|
|
@@ -1139,6 +1139,11 @@ interface components {
|
|
|
1139
1139
|
min?: number;
|
|
1140
1140
|
/** @description Inclusive maximum for `number` fields, when set. */
|
|
1141
1141
|
max?: number;
|
|
1142
|
+
/**
|
|
1143
|
+
* @description Who sees the field. `public` (or absent): the job page, employers, search and the Board API. `private`: only the board team, in the dashboard and this Operator API. Board API (`/v1/boards/...`) responses never include private fields or their values. Omitted on an existing field keeps its current visibility.
|
|
1144
|
+
* @enum {string}
|
|
1145
|
+
*/
|
|
1146
|
+
visibility?: "public" | "private";
|
|
1142
1147
|
};
|
|
1143
1148
|
CustomFieldOption: {
|
|
1144
1149
|
/** @description Stable option key — the value stored on a job, not the label. */
|
|
@@ -1739,6 +1744,11 @@ interface components {
|
|
|
1739
1744
|
allowOverrides?: boolean;
|
|
1740
1745
|
/** @description Key of the collection's short, long or rich text field whose value is a selected entry's default description. When that field is rich text, an entry's `description` is sanitised HTML. Absent means entries have no default description. */
|
|
1741
1746
|
descriptionFieldKey?: string;
|
|
1747
|
+
/**
|
|
1748
|
+
* @description Who sees the field. `public` (or absent): the job page, employers, search and the Board API. `private`: only the board team, in the dashboard and this Operator API. Board API (`/v1/boards/...`) responses never include private fields or their values. Omitted on an existing field keeps its current visibility.
|
|
1749
|
+
* @enum {string}
|
|
1750
|
+
*/
|
|
1751
|
+
visibility?: "public" | "private";
|
|
1742
1752
|
};
|
|
1743
1753
|
JobCollectionOverride: {
|
|
1744
1754
|
/** @description The collection field key used in `collectionValues`. */
|
package/dist/analytics.d.mts
CHANGED
|
@@ -50,7 +50,14 @@ type AnalyticsInstallOptions = {
|
|
|
50
50
|
declare function install(options: AnalyticsInstallOptions): void;
|
|
51
51
|
/**
|
|
52
52
|
* Emit a custom analytics event to Cavuno collect.
|
|
53
|
-
*
|
|
53
|
+
* Sends nothing until `install` has run.
|
|
54
|
+
*
|
|
55
|
+
* When the hosted script has set its `session-id` cookie, the event carries
|
|
56
|
+
* that session id, so it is attributed to the same visit (channel, referrer,
|
|
57
|
+
* campaign) as the page views. `track` never sets a cookie itself.
|
|
58
|
+
*
|
|
59
|
+
* For `job_apply_click`, pass `{ job_id, job_slug, company_slug }` so clicks
|
|
60
|
+
* are counted per job and per company.
|
|
54
61
|
*/
|
|
55
62
|
declare function track(action: string, payload?: Record<string, unknown>): void;
|
|
56
63
|
/** A visitor's answer to the cookie banner, as recorded by `recordConsent`. */
|
package/dist/analytics.d.ts
CHANGED
|
@@ -50,7 +50,14 @@ type AnalyticsInstallOptions = {
|
|
|
50
50
|
declare function install(options: AnalyticsInstallOptions): void;
|
|
51
51
|
/**
|
|
52
52
|
* Emit a custom analytics event to Cavuno collect.
|
|
53
|
-
*
|
|
53
|
+
* Sends nothing until `install` has run.
|
|
54
|
+
*
|
|
55
|
+
* When the hosted script has set its `session-id` cookie, the event carries
|
|
56
|
+
* that session id, so it is attributed to the same visit (channel, referrer,
|
|
57
|
+
* campaign) as the page views. `track` never sets a cookie itself.
|
|
58
|
+
*
|
|
59
|
+
* For `job_apply_click`, pass `{ job_id, job_slug, company_slug }` so clicks
|
|
60
|
+
* are counted per job and per company.
|
|
54
61
|
*/
|
|
55
62
|
declare function track(action: string, payload?: Record<string, unknown>): void;
|
|
56
63
|
/** A visitor's answer to the cookie banner, as recorded by `recordConsent`. */
|
package/dist/analytics.js
CHANGED
|
@@ -132,11 +132,37 @@ function resolveDefaultCollectUrl() {
|
|
|
132
132
|
function resolveDefaultScriptUrl() {
|
|
133
133
|
return DEFAULT_SCRIPT_URL;
|
|
134
134
|
}
|
|
135
|
+
var SESSION_COOKIE_NAME = "session-id";
|
|
136
|
+
function readSessionId() {
|
|
137
|
+
let cookies;
|
|
138
|
+
try {
|
|
139
|
+
cookies = getRoot().document?.cookie;
|
|
140
|
+
} catch {
|
|
141
|
+
return void 0;
|
|
142
|
+
}
|
|
143
|
+
if (typeof cookies !== "string") {
|
|
144
|
+
return void 0;
|
|
145
|
+
}
|
|
146
|
+
for (const part of cookies.split(";")) {
|
|
147
|
+
const separator = part.indexOf("=");
|
|
148
|
+
if (separator === -1) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (part.slice(0, separator).trim() !== SESSION_COOKIE_NAME) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const value = part.slice(separator + 1).trim();
|
|
155
|
+
return value.length > 0 ? value : void 0;
|
|
156
|
+
}
|
|
157
|
+
return void 0;
|
|
158
|
+
}
|
|
135
159
|
function postCollectJson(state, action, payload) {
|
|
160
|
+
const sessionId = readSessionId();
|
|
136
161
|
const body = JSON.stringify({
|
|
137
162
|
publishableKey: state.publishableKey,
|
|
138
163
|
action,
|
|
139
|
-
payload: payload ?? {}
|
|
164
|
+
payload: payload ?? {},
|
|
165
|
+
...sessionId ? { sessionId } : {}
|
|
140
166
|
});
|
|
141
167
|
void fetch(state.collectUrl, {
|
|
142
168
|
method: "POST",
|
package/dist/analytics.mjs
CHANGED
|
@@ -95,11 +95,37 @@ function resolveDefaultCollectUrl() {
|
|
|
95
95
|
function resolveDefaultScriptUrl() {
|
|
96
96
|
return DEFAULT_SCRIPT_URL;
|
|
97
97
|
}
|
|
98
|
+
var SESSION_COOKIE_NAME = "session-id";
|
|
99
|
+
function readSessionId() {
|
|
100
|
+
let cookies;
|
|
101
|
+
try {
|
|
102
|
+
cookies = getRoot().document?.cookie;
|
|
103
|
+
} catch {
|
|
104
|
+
return void 0;
|
|
105
|
+
}
|
|
106
|
+
if (typeof cookies !== "string") {
|
|
107
|
+
return void 0;
|
|
108
|
+
}
|
|
109
|
+
for (const part of cookies.split(";")) {
|
|
110
|
+
const separator = part.indexOf("=");
|
|
111
|
+
if (separator === -1) {
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (part.slice(0, separator).trim() !== SESSION_COOKIE_NAME) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const value = part.slice(separator + 1).trim();
|
|
118
|
+
return value.length > 0 ? value : void 0;
|
|
119
|
+
}
|
|
120
|
+
return void 0;
|
|
121
|
+
}
|
|
98
122
|
function postCollectJson(state, action, payload) {
|
|
123
|
+
const sessionId = readSessionId();
|
|
99
124
|
const body = JSON.stringify({
|
|
100
125
|
publishableKey: state.publishableKey,
|
|
101
126
|
action,
|
|
102
|
-
payload: payload ?? {}
|
|
127
|
+
payload: payload ?? {},
|
|
128
|
+
...sessionId ? { sessionId } : {}
|
|
103
129
|
});
|
|
104
130
|
void fetch(state.collectUrl, {
|
|
105
131
|
method: "POST",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
1
|
+
import { S as Schemas } from './_spec-B2aizgxr.js';
|
|
2
2
|
|
|
3
3
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
4
4
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -19,6 +19,11 @@ type BlogPostsListQuery = {
|
|
|
19
19
|
authorSlug?: string;
|
|
20
20
|
/** Opt-in only: pass `'true'` to restrict to featured posts. */
|
|
21
21
|
featured?: 'true';
|
|
22
|
+
/**
|
|
23
|
+
* `'newest'` (default): most recently published first. `'featured'`:
|
|
24
|
+
* featured posts first (newest first), then the rest, as one list.
|
|
25
|
+
*/
|
|
26
|
+
sort?: 'newest' | 'featured';
|
|
22
27
|
};
|
|
23
28
|
type BlogSimilarQuery = {
|
|
24
29
|
/** 1–20; default 6. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
1
|
+
import { S as Schemas } from './_spec-B2aizgxr.mjs';
|
|
2
2
|
|
|
3
3
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
4
4
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -19,6 +19,11 @@ type BlogPostsListQuery = {
|
|
|
19
19
|
authorSlug?: string;
|
|
20
20
|
/** Opt-in only: pass `'true'` to restrict to featured posts. */
|
|
21
21
|
featured?: 'true';
|
|
22
|
+
/**
|
|
23
|
+
* `'newest'` (default): most recently published first. `'featured'`:
|
|
24
|
+
* featured posts first (newest first), then the rest, as one list.
|
|
25
|
+
*/
|
|
26
|
+
sort?: 'newest' | 'featured';
|
|
22
27
|
};
|
|
23
28
|
type BlogSimilarQuery = {
|
|
24
29
|
/** 1–20; default 6. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-B2aizgxr.mjs';
|
|
2
|
+
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-C_eO-WfM.mjs';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-B2aizgxr.js';
|
|
2
|
+
import { L as ListEnvelope, t as RelatedSearch, a as CustomFieldFilter, O as ObjectReferenceFilter } from './jobs-SAkNWgAB.js';
|
|
3
3
|
|
|
4
4
|
type PublicCompany = Schemas['CompanyPublic'];
|
|
5
5
|
/** A market (sector) a company operates in — name + its source slug. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-DWeT9Jbl.js';
|
|
2
|
+
import { P as PublicJob } from './jobs-SAkNWgAB.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-
|
|
2
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-DK4HmSty.mjs';
|
|
2
|
+
import { P as PublicJob } from './jobs-C_eO-WfM.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Wire enum for `salaryTimeframe`. Defined here (not re-exported from any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var CavunoBoard=(()=>{var w=Object.defineProperty;var yo=Object.getOwnPropertyDescriptor;var fo=Object.getOwnPropertyNames;var go=Object.prototype.hasOwnProperty;var ho=(e,t,o)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var A=(e,t)=>{for(var o in t)w(e,o,{get:t[o],enumerable:!0})},bo=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of fo(t))!go.call(e,r)&&r!==o&&w(e,r,{get:()=>t[r],enumerable:!(n=yo(t,r))||n.enumerable});return e};var So=e=>bo(w({},"__esModule",{value:!0}),e);var P=(e,t,o)=>ho(e,typeof t!="symbol"?t+"":t,o);var _n={};A(_n,{ACCESS_TOKEN_KEY:()=>T,BOARD_ACCESS_GRANT_KEY:()=>I,BOARD_API_ERROR_CODES:()=>Oe,BoardApiError:()=>v,BoardClient:()=>F,REFRESH_TOKEN_KEY:()=>L,SDK_VERSION:()=>D,SIGN_IN_REDIRECT_ERROR_CODES:()=>we,SSO_LINK_PROOF_BINDING_TTL_MS:()=>ne,createBoardClient:()=>Io,filters:()=>se,format:()=>be,isBoardApiError:()=>S,isBoardPasswordRequired:()=>Re,isColdRule:()=>ct,isConflict:()=>Ae,isForbidden:()=>Be,isFreeEmailWebsiteError:()=>Te,isNotFound:()=>_e,isOwnMessage:()=>lt,isRateLimited:()=>Ee,isSafeApplicationUrl:()=>re,isSignInMethodUnavailable:()=>oe,isSsoBrowserMismatch:()=>Ie,isSsoRequired:()=>Le,isUnauthorized:()=>Pe,isValidationError:()=>ve,lastOwnMessageId:()=>pt,paginate:()=>at,parseOAuthCompletion:()=>Je,paths:()=>ye,resolveApplyAction:()=>ut,resolveApplyDecision:()=>ie,seo:()=>Se,ssoLinkProofBindingStore:()=>$,suggest:()=>Ce});var Oe=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_unavailable","search_filter_unavailable","too_many_filter_values","pagination_invalid_cursor","pagination_offset_too_large","auth_unauthenticated","auth_forbidden","plan_upgrade_required","unknown_error","boards_not_found","board_page_not_found","board_auth_account_not_found","board_auth_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","board_development_origin_not_allowed_for_email","board_development_origin_not_registered","board_development_origin_requires_publishable_key","sso_required","board_auth_method_unavailable","board_auth_sso_connection_not_found","board_auth_sso_role_unavailable","board_auth_sso_provider_unavailable","board_auth_sso_browser_mismatch","board_auth_sso_not_provisioned","board_auth_sso_identity_linked_elsewhere","invalid_current_password","no_password","same_email","email_taken","invalid_token","board_password_required","board_password_invalid","jobs_not_found","jobs_invalid_filter","categories_not_found","skills_not_found","places_not_found","locations_invalid_id","locations_unavailable","companies_not_found","company_markets_not_found","company_salary_not_found","company_category_salary_not_found","salaries_title_not_found","salaries_skill_not_found","salaries_location_not_found","salaries_title_location_not_found","salaries_skill_location_not_found","blog_post_not_found","blog_author_not_found","blog_tag_not_found","feeds_not_found","feed_not_ready","talent_not_found","talent_directory_not_found","talent_directory_restricted","job_recommendations_not_found","recommended_talent_not_found","job_alert_not_found","job_alerts_disabled","candidate_alert_limit_reached","candidate_alert_not_found","candidate_entry_not_found","candidate_handle_taken","candidate_job_not_found","candidate_notification_preference_paused","candidate_profile_required","resume_invalid_file","resume_upload_forbidden","applications_external_apply_only","applications_country_not_allowed","applications_guest_not_allowed","applications_job_not_found","applications_not_found","applications_resume_invalid_file","applications_unprocessable","messaging_application_not_found","messaging_application_not_linked","messaging_blocked","messaging_cannot_block_self","messaging_cold_rule","messaging_conversation_not_found","messaging_disabled","messaging_edit_window_expired","messaging_message_deleted","messaging_message_not_found","messaging_not_author","messaging_not_participant","messaging_not_permitted","messaging_not_recipient","messaging_rate_limited","messaging_recipient_not_found","messaging_recipient_not_open","messaging_unsend_window_expired","employer_applicant_not_found","employer_ats_unprocessable","employer_checkout_failed","employer_company_exists","employer_free_email_website","employer_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","membership_required","employer_not_member","employer_payment_required","employer_pipeline_stage_not_found","employer_member_not_found","employer_invite_not_found","not_company_admin","not_company_member","company_deletion_disabled","last_admin","already_member","already_invited","invalid_email","invite_email_mismatch","candidate_role","job_not_published","talent_list_not_found","sourced_candidate_not_found","sourced_convert_unavailable","candidate_paywall_access_required","paywall_already_active","paywall_disabled","paywall_invalid_checkout_session","paywall_no_candidate_profile","paywall_no_recurring_subscription","paywall_offer_not_found","talent_access_unavailable","company_required","already_on_plan","talent_access_required","messaging_talent_access_required","stripe_not_connected","membership_plan_not_found","membership_seat_taken","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],v=class extends Error{constructor(o){super(o.message);P(this,"status");P(this,"code");P(this,"details");P(this,"requestId");P(this,"raw");this.name="BoardApiError",this.status=o.status,this.code=o.code,this.details=o.details,this.requestId=o.requestId,this.raw=o.raw}};function S(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function _e(e){return S(e)&&e.status===404}function Pe(e){return S(e)&&e.status===401}function Re(e){return S(e)&&e.status===401&&e.code==="board_password_required"}function Be(e){return S(e)&&e.status===403}function ve(e){return S(e)&&e.status===400&&e.code==="validation_bad_request"}function Ee(e){return S(e)&&e.status===429}function Ae(e){return S(e)&&e.status===409}function Te(e){return S(e)&&e.status===422&&e.code==="employer_free_email_website"}function Le(e){if(!S(e)||e.status!==403)return!1;let t=e.details?.connectionIds;return Array.isArray(t)&&t.every(o=>typeof o=="string")&&(e.code==="sso_required"||oe(e)&&e.details.availableMethods.methods.length===0)}function oe(e){if(!S(e)||e.status!==403||e.code!=="board_auth_method_unavailable")return!1;let t=e.details?.availableMethods;if(!t||typeof t!="object")return!1;let{methods:o,ssoConnectionIds:n}=t;return Array.isArray(o)&&o.every(r=>typeof r=="string")&&Array.isArray(n)&&n.every(r=>typeof r=="string")}function Ie(e){return S(e)&&e.status===403&&e.code==="board_auth_sso_browser_mismatch"}function Fe(e){let t=new URLSearchParams;if(!e)return t;for(let[o,n]of Object.entries(e))if(n!=null)if(Array.isArray(n))for(let r of n)r!=null&&t.append(o,String(r));else t.append(o,String(n));return t}function J(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return`${e.replace(/[^a-zA-Z0-9_-]/g,"_")}-${t.toString(36)}`}var T="cavuno_board_access_token",L="cavuno_board_refresh_token",I="cavuno_board_access_grant";function ke(){return typeof globalThis.document<"u"}function Co(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function Oo(e,t){if(!ke())throw new Error(`storage mode '${e}' is browser-only \u2014 use 'nostore' + per-call headers on the server`);let o;try{if(o=e==="local"?globalThis.localStorage:globalThis.sessionStorage,!o)throw new Error("unavailable")}catch{throw new Error(`storage mode '${e}' is unavailable in this browsing context (storage access is blocked \u2014 e.g. a sandboxed or third-party iframe). Use 'memory', or 'nostore' + per-call headers.`)}let n=t?`:${J(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var _o=Symbol.for("@cavuno/board:nostore");var Po={[_o]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function xe(e,t){let o=e??(ke()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return Co();case"nostore":return Po;case"local":case"session":return Oo(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function N(e,t){await e.setItem(T,t.accessToken),await e.setItem(L,t.refreshToken)}async function Ue(e){await e.removeItem(T),await e.removeItem(L)}var D="4.41.0";function Ro(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 Bo(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 F=class{constructor(t){P(this,"storage");P(this,"basePath");P(this,"options");this.options=t,this.storage=t.storage;let o=t.baseUrl.replace(/\/+$/,"");this.basePath=`${o}/v1/boards/${encodeURIComponent(t.board)}`}async fetch(t,o={}){let{body:n,query:r,headers:i,...s}=o,a=(o.method??"GET").toUpperCase(),l=`${this.basePath}${t}`,p=Fe(r).toString();p&&(l+=`?${p}`);let m=n!==void 0&&!Ro(n),d=n===void 0?void 0:m?JSON.stringify(n):n,y=new Headers({accept:"application/json"});m&&y.set("content-type","application/json");for(let[B,te]of Object.entries(this.options.globalHeaders??{}))y.set(B,te);let f=await this.storage.getItem(T);f!==null&&y.set("authorization",`Bearer ${f}`);let O=await this.storage.getItem(I);O!==null&&y.set("x-board-access",O),i&&new Headers(i).forEach((B,te)=>{y.set(te,B)}),(a!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${D}`);let g={url:l,init:{...s,method:a,headers:y,body:d}};this.options.onRequest&&(g=await this.options.onRequest(g));let R=Bo(g.url);this.options.logger?.debug(`${a} ${R}`);let u=await globalThis.fetch(g.url,g.init);if(this.options.logger?.debug(`${u.status} ${a} ${R}`),this.options.onResponse&&await this.options.onResponse(u.clone(),g),u.status===204)return;if(u.ok)return await u.json();let b;try{b=await u.json()}catch{b=void 0}let _=b?.error,E=_&&typeof _.code=="string"&&typeof _.message=="string"?new v({status:u.status,code:_.code,message:_.message,details:_.details,requestId:_.requestId,raw:b}):new v({status:u.status,code:"unknown_error",message:u.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${E.status} ${E.code} ${a} ${R}`),E}};var Me="https://api.cavuno.com";var we=["oauth_cancelled","oauth_failed","oauth_email_unverified","role_disabled","method_unavailable","sso_required","sso_state_invalid","sso_cancelled","sso_failed","sso_connection_unavailable","sso_not_provisioned","sso_email_required","sso_account_disabled","sso_identity_linked_elsewhere","sso_link_proof_rate_limited","sso_development_origin_not_allowed_for_email"];function vo(e){if(e instanceof URLSearchParams)return e;if(typeof e=="string"){let o=e.includes("?")?e.slice(e.indexOf("?")):e;return new URLSearchParams(o)}let t=new URLSearchParams;for(let[o,n]of Object.entries(e))n!==void 0&&t.set(o,n);return t}function Eo(e){return!e||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")||e.includes("://")||/[\u0000-\u001F\u007F]/.test(e)?"/":e}function Ao(e){return e==="candidate"||e==="employer"?e:null}function Je(e){let t=vo(e),o=c=>{let p=t.get(c);return p&&p.length>0?p:null},n=Eo(o("returnTo")),r=Ao(o("role")),i=o("error");if(i)return{kind:"error",error:i,returnTo:n};let s=o("linkProof");if(s)return{kind:"link_proof",linkProof:s,role:r,returnTo:n};let a=o("linkProofBinding");if(o("status")==="sso_link_proof_sent"&&a)return{kind:"link_proof_sent",linkProofBinding:a,role:r,returnTo:n};let l=o("token");return l?{kind:"token",token:l,method:o("method"),role:r,returnTo:n,isNewUser:o("isNew")==="1"}:{kind:"invalid",returnTo:n}}var ne=1500*1e3,To="cavuno_board_sso_link_proof_binding";function Lo(){try{return globalThis.localStorage??null}catch{return null}}function $(e,t={}){let o=`${To}:${J(e)}`,n=t.now??Date.now,r=()=>t.storage??Lo(),i=()=>{try{r()?.removeItem(o)}catch{}};return{begin(){let s=globalThis.crypto.getRandomValues(new Uint8Array(32)),a=Array.from(s,c=>c.toString(16).padStart(2,"0")).join(""),l=r();if(!l)throw new Error("SSO requires browser storage or an explicit browser proof");return l.setItem(o,JSON.stringify({binding:a,expiresAt:n()+ne})),a},save(s){},read(){let s=null;try{s=r()?.getItem(o)??null}catch{return null}if(!s)return null;try{let a=JSON.parse(s);if(typeof a.binding=="string"&&typeof a.expiresAt=="number"&&a.expiresAt>n())return a.binding}catch{}return i(),null},clear:i}}function Ne(e,t=""){let o=()=>$(t);async function n(i){return await N(e.storage,i),i}async function r(i){if(i?.refreshToken)return i.refreshToken;let s=await e.storage.getItem(L);if(s===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return s}return{async register(i,s){let a=await e.fetch("/auth/register",{...s,method:"POST",body:i});return n(a)},async login(i,s){let a=await e.fetch("/auth/login",{...s,method:"POST",body:i});return n(a)},async refresh(i,s){let a=await r(i),l=await e.fetch("/auth/refresh",{...s,method:"POST",body:{refreshToken:a}});return n(l)},async logout(i,s){let a=await r(i);await e.fetch("/auth/logout",{...s,method:"POST",body:{refreshToken:a}}),await Ue(e.storage)},verifyEmail(i,s){return e.fetch("/auth/verify-email",{...s,method:"POST",body:i})},verifyWorkEmail(i,s){return e.fetch("/auth/verify-work-email",{...s,method:"POST",body:i})},verifyEmailWithCode(i,s){return e.fetch("/auth/verify-email/otp",{...s,method:"POST",body:i})},resendVerification(i){return e.fetch("/auth/verify-email/resend",{...i,method:"POST"})},forgotPassword(i,s){return e.fetch("/auth/forgot-password",{...s,method:"POST",body:i})},resetPassword(i,s){return e.fetch("/auth/reset-password",{...s,method:"POST",body:i})},requestMagicLink(i,s){return e.fetch("/auth/magic-link",{...s,method:"POST",body:i})},async consumeMagicLink(i,s){let a=await e.fetch("/auth/magic-link/consume",{...s,method:"POST",body:i});return n(a)},getOAuthAuthorizationUrl(i,s,a){return e.fetch(`/auth/oauth/${i}`,{...a,method:"GET",query:s})},async exchangeOAuth(i,s){let a=await e.fetch("/auth/oauth/exchange",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)},async getSsoAuthorizationUrl(i,s,a){let l=s?.browserBindingHash;if(!l){let c=o().begin(),p=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(c));l=Array.from(new Uint8Array(p),m=>m.toString(16).padStart(2,"0")).join("")}return e.fetch(`/auth/sso/${encodeURIComponent(i)}`,{...a,method:"GET",query:{...s,browserBindingHash:l}})},async consumeSsoLinkProof(i,s){let a=await e.fetch("/auth/sso/link-proof",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)}}}function De(e){return{posts:{list(t,o){return e.fetch("/blog/posts",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}`,{...n,query:o})},adjacent(t,o){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/adjacent`,o)},similar(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/similar`,{...n,query:o})}},tags:{list(t,o){return e.fetch("/blog/tags",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/tags/${encodeURIComponent(t)}`,{...n,query:o})}},authors:{list(t,o){return e.fetch("/blog/authors",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/authors/${encodeURIComponent(t)}`,{...n,query:o})}},search(t,o,n){return e.fetch("/blog/search",{...n,method:"POST",body:t,query:o})}}}function $e(e){let t=Object.assign((n,r)=>e.fetch("/companies/markets",{...r,query:n}),{resolve(n,r){return e.fetch(`/companies/markets/${encodeURIComponent(n)}`,r)}}),o=Object.assign((n,r)=>e.fetch(`/companies/${encodeURIComponent(n)}/salaries`,r),{summary(n,r){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/summary`,r)},category(n,r,i,s){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...s,query:i})}});return{list(n,r){return e.fetch("/companies",{...r,query:n})},retrieve(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}`,{...i,query:r})},search(n,r,i){return e.fetch("/companies/search",{...i,method:"POST",body:n,query:r})},listJobs(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/jobs`,{...i,query:r})},similar(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/similar`,{...i,query:r})},markets:t,salaries:o}}function je(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Qe(e){return{preview(t,o){return e.fetch("/invites/preview",{...o,method:"POST",body:t})}}}function qe(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 Ge(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 He(e){return{collectionChoices(t,o,n){return e.fetch(`/job-fields/${encodeURIComponent(t)}/choices`,{...n,query:o})},list(t,o){return e.fetch("/jobs",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}`,{...n,query:o})},search(t,o,n){return e.fetch("/jobs/search",{...n,method:"POST",body:t,query:o})},similar(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/similar`,{...n,query:o})},apply(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply`,{...n,method:"POST",body:o??{}})},createApplyIntent(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-intents`,{...n,method:"POST",body:o})},prepareApplyApproval(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-approvals`,{...n,method:"POST",body:o})},uploadApplicationResume(t,o,n,r){let i=new FormData;return i.append("file",o),n?.applicationId&&i.append("applicationId",n.applicationId),e.fetch(`/jobs/${encodeURIComponent(t)}/apply/resume`,{...r,method:"POST",body:i})},myApplication(t,o){return e.fetch(`/jobs/${encodeURIComponent(t)}/application`,o)}}}function Ke(e){return{search(t,o){return e.fetch("/locations/search",{...o,query:t})},resolve(t,o){return e.fetch("/locations/resolve",{...o,method:"POST",body:t})}}}function Ve(e){return{retrieve(t,o){return e.fetch("/me",{...o,query:t})},delete(t){return e.fetch("/me",{...t,method:"DELETE"})},async updatePassword(t,o){let n=await e.fetch("/me/password",{...o,method:"POST",body:t});return await N(e.storage,n),n},requestEmailChange(t,o){return e.fetch("/me/email",{...o,method:"POST",body:t})},confirmEmailChange(t,o){return e.fetch("/me/email/confirm",{...o,method:"POST",body:t})},acceptInvite(t,o){return e.fetch("/me/invites/accept",{...o,method:"POST",body:t})},profile:{listObjectReferenceChoices(t,o,n){return e.fetch("/me/profile/object-references/choices",{...n,query:{...o,fieldKey:t}})},retrieve(t,o){return e.fetch("/me/profile",{...o,query:t})},update(t,o,n){return e.fetch("/me/profile",{...n,method:"PATCH",body:t,query:o})},retrieveCustomFields(t){return e.fetch("/me/profile/custom-fields",{...t})},updateCustomFields(t,o){return e.fetch("/me/profile/custom-fields",{...o,method:"PATCH",body:t})},retrieveObjectReferences(t){return e.fetch("/me/profile/object-references",t)},updateObjectReferences(t,o){return e.fetch("/me/profile/object-references",{...o,method:"PUT",body:t})},handleAvailable(t,o){return e.fetch("/me/profile/handle-available",{...o,query:{handle:t}})},listExperience(t){return e.fetch("/me/profile/experience",t)},createExperience(t,o){return e.fetch("/me/profile/experience",{...o,method:"POST",body:t})},updateExperience(t,o,n){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteExperience(t,o){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listEducation(t){return e.fetch("/me/profile/education",t)},createEducation(t,o){return e.fetch("/me/profile/education",{...o,method:"POST",body:t})},updateEducation(t,o,n){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteEducation(t,o){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listSkills(t){return e.fetch("/me/profile/skills",t)},updateSkills(t,o){return e.fetch("/me/profile/skills",{...o,method:"PUT",body:t})},listLanguages(t){return e.fetch("/me/profile/languages",t)},updateLanguages(t,o){return e.fetch("/me/profile/languages",{...o,method:"PUT",body:t})},uploadAvatar(t,o){let n=new FormData;return n.append("file",t),e.fetch("/me/profile/avatar",{...o,method:"POST",body:n})}},notificationPreferences:{retrieve(t){return e.fetch("/me/notification-preferences",t)},update(t,o){return e.fetch("/me/notification-preferences",{...o,method:"PUT",body:t})},unsubscribeWithToken(t,o){return e.fetch("/me/notification-preferences/unsubscribe",{...o,method:"POST",body:t})}},companies:{listObjectReferenceChoices(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references/choices`,{...r,query:{...n,fieldKey:o}})},retrieveObjectReferences(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,o)},updateObjectReferences(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,{...n,method:"PUT",body:o})},search(t,o){return e.fetch("/me/companies/search",{...o,query:t})},list(t){return e.fetch("/me/companies",t)},create(t,o){return e.fetch("/me/companies",{...o,method:"POST",body:t})},claim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"POST"})},cancelClaim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"DELETE"})},retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},retrieveCustomFields(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,o)},updateCustomFields(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,{...n,method:"PATCH",body:o})},delete(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listMembers(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members`,o)},updateMemberRole(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},removeMember(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},leave(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership`,{...o,method:"DELETE"})},startMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout`,{...n,method:"POST",body:o})},retrieveMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout/${encodeURIComponent(o)}`,n)},listInvites(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,o)},createInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,{...n,method:"POST",body:o})},revokeInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},uploadLogo(t,o,n){let r=new FormData;return r.append("file",o),e.fetch(`/me/companies/${encodeURIComponent(t)}/logo`,{...n,method:"POST",body:r})},workEmail:{verify(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/verify`,{...n,method:"POST",body:o})},confirm(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/confirm`,{...n,method:"POST",body:o})}},jobs:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,query:o})},retrieve(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,n)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},delete(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},publish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/publish`,{...n,method:"POST"})},unpublish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/unpublish`,{...n,method:"POST"})},checkout(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/checkout`,{...r,method:"POST",body:n})}},billingOptions:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-options`,o)}},billingPortal:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-portal`,{...n,method:"POST",body:o})}},jobStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats/timeseries`,{...n,query:o})}},profileStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats/timeseries`,{...n,query:o})}},recommendedTalent:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/recommended-talent`,{...n,query:o})}},talentLists:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,o)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...n,method:"DELETE"})}},sourcedCandidates:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,query:o})},add(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,method:"POST",body:o})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},convert(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}/convert`,{...r,method:"POST",body:n})}},applicants:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants`,{...n,query:o})},move(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/stage`,{...r,method:"PATCH",body:n})},bulkMove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/move`,{...n,method:"POST",body:o})},bulkReject(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/reject`,{...n,method:"POST",body:o})},addNote(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/notes`,{...r,method:"POST",body:n})}},pipelineStages:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},reorder(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/reorder`,{...n,method:"PUT",body:o})}}},talentAccess:{retrieve(t){return e.fetch("/me/talent-access",t)},retrieveCandidate(t,o){return e.fetch(`/me/talent-access/candidates/${encodeURIComponent(t)}`,o)},checkout(t,o){return e.fetch("/me/talent-access/checkout",{...o,method:"POST",body:t})},claim(t,o){return e.fetch("/me/talent-access/claim",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/talent-access/checkout/${encodeURIComponent(t)}`,o)},unlock(t,o){return e.fetch("/me/talent-access/unlocks",{...o,method:"POST",body:t})},upgrade(t,o){return e.fetch("/me/talent-access/upgrade",{...o,method:"POST",body:t})}},alerts:{list(t){return e.fetch("/me/alerts",t)},create(t,o){return e.fetch("/me/alerts",{...o,method:"POST",body:t})},retrieve(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...n,method:"PUT",body:o})},remove(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...o,method:"DELETE"})}},applications:{list(t,o){return e.fetch("/me/applications",{...o,query:t})},retrieve(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,o)},updateFacts(t,o,n){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},withdraw(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}/withdraw`,{...o,method:"POST"})}},resume:{upload(t,o,n){let r=new FormData;return r.append("resume",t),o?.keepResumeOnFile&&r.append("keepResumeOnFile","true"),o?.importMode&&r.append("importMode",o.importMode),o?.confirmReplaceAll&&r.append("confirmReplaceAll","true"),e.fetch("/me/resume",{...n,method:"POST",body:r})},retrieve(t){return e.fetch("/me/resume",t)},delete(t){return e.fetch("/me/resume",{...t,method:"DELETE"})}},recommendedJobs:{list(t,o){return e.fetch("/me/recommended-jobs",{...o,query:t})}},savedJobs:{list(t,o){return e.fetch("/me/saved-jobs",{...o,query:t})},save(t,o,n){return e.fetch("/me/saved-jobs",{...n,method:"POST",body:t,query:o})},unsave(t,o,n){return e.fetch(`/me/saved-jobs/${encodeURIComponent(t)}`,{...n,method:"DELETE",query:o})}},conversations:{list(t,o){return e.fetch("/me/conversations",{...o,query:t})},unreadCount(t){return e.fetch("/me/conversations/unread-count",t)},retrieve(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}`,o)},listMessages(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/messages`,{...n,query:o})},start(t,o){return e.fetch("/me/conversations",{...o,method:"POST",body:t})},startAboutApplication(t,o){return e.fetch("/me/conversations/about-application",{...o,method:"POST",body:t})},reply(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/reply`,{...n,method:"POST",body:o})},markRead(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/read`,{...o,method:"POST"})},archive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/archive`,{...o,method:"POST"})},unarchive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/unarchive`,{...o,method:"POST"})},findExisting(t,o){return e.fetch("/me/conversations/find-existing",{...o,query:t})}},blocks:{list(t){return e.fetch("/me/blocks",t)},create(t,o){return e.fetch("/me/blocks",{...o,method:"POST",body:t})},remove(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},status(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,o)}},messages:{edit(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},unsend(t,o){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},report(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}/report`,{...n,method:"POST",body:o})}},marketingConsent:{retrieve(t){return e.fetch("/me/marketing-consent",t)},grant(t){return e.fetch("/me/marketing-consent/grant",{...t,method:"POST"})},withdraw(t){return e.fetch("/me/marketing-consent/withdraw",{...t,method:"POST"})}},access:{checkout(t,o){return e.fetch("/me/access/checkout",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/access/checkout/${encodeURIComponent(t)}`,o)},grant(t){return e.fetch("/me/access/grant",t)},portal(t,o){return e.fetch("/me/access/portal",{...o,method:"POST",body:t})}}}}function Ye(e){return{async verify(t,o){let n=await e.fetch("/password/verify",{...o,method:"POST",body:{password:t}});return await e.storage.setItem(I,n.token),n}}}function ze(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function We(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function Ze(e){return{retrieve(t,o){return e.fetch(`/profile-fields/${encodeURIComponent(t)}`,o)},choices(t,o,n,r){return e.fetch(`/profile-fields/${encodeURIComponent(t)}/${encodeURIComponent(o)}/choices`,{...r,query:n})}}}function Xe(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function et(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 tt(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function ot(e){return Object.assign(t=>e.fetch("/sitemap",t),{entries(t,o,n){return e.fetch(`/sitemap/${encodeURIComponent(t)}`,{...n,query:o})}})}function nt(e){return{list(t,o){let n=t?{...t,customFields:t.customFields?JSON.stringify(t.customFields):void 0,objectReferences:t.objectReferences?JSON.stringify(t.objectReferences):void 0}:void 0;return e.fetch("/talent",{...o,query:n})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function it(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function rt(e,t){return{...it(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function st(e){return{categories:rt(e,"categories"),skills:rt(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...it(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function at(e,t,o){async function*n(){let r=t;for(;;){let i=await e(r,o);if(yield i,!i.hasMore||i.nextCursor===null)return;let{offset:s,...a}=r??{};r={...a,cursor:i.nextCursor}}}return{pages:n,async*[Symbol.asyncIterator](){for await(let r of n())yield*r.data},async toArray({limit:r}){let i=[];for await(let s of n())if(i.push(...s.data),i.length>=r)break;return i.slice(0,r)}}}function lt(e,t){return e.authorBoardUserId!==t}function ct(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function pt(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 re(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 ie(e){let t=e.applicationUrl&&re(e.applicationUrl)?e.applicationUrl:null;return!t&&!e.jobSlug?{kind:"none"}:e.registrationWall&&!e.viewer?{kind:"sign-in",reason:"registration-wall"}:t?{kind:"external",url:t}:e.jobSlug?e.viewer?e.viewer.emailVerified?e.applied?{kind:"applied"}:{kind:"native",jobSlug:e.jobSlug}:{kind:"verify-email"}:e.allowGuestApply?{kind:"guest",jobSlug:e.jobSlug}:{kind:"sign-in",reason:"native-apply"}:{kind:"none"}}function ut(e){let t=ie({...e,registrationWall:!1,allowGuestApply:!1});return t.kind==="sign-in"?{kind:"sign-in"}:t}function Io(e){let t=new F({baseUrl:e.baseUrl??Me,board:e.board,storage:xe(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:He(t),embed:je(t),companies:$e(t),blog:De(t),auth:Ne(t,e.board),me:Ve(t),invites:Qe(t),password:Ye(t),taxonomy:st(t),search:tt(t),locations:Ke(t),redirects:Xe(t),jobAlerts:qe(t),jobPosting:Ge(t),salaries:et(t),talent:nt(t),profileFields:Ze(t),plans:We(t),paywall:ze(t),sitemap:ot(t)}}var se={};A(se,{DEFAULT_SORT:()=>Fo,EMPLOYMENT_TYPES:()=>dt,JOB_SORTS:()=>ft,REMOTE_OPTIONS:()=>mt,SENIORITIES:()=>yt,parseCategory:()=>bt,parseCompany:()=>ht,parseListingFilters:()=>xo,parseSeniority:()=>gt});var mt=["on_site","hybrid","remote"],dt=["full_time","part_time","contract","internship","temporary"],yt=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],ft=["relevance","newest","salary_high"],Fo="relevance";var ko=new Set(yt);function gt(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)||ko.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function ht(e){return St(e,10)}function bt(e){return St(e,10)}function St(e,t){let o=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],n=[],r=new Set;for(let i of o){if(typeof i!="string")continue;let s=i.trim().toLowerCase().normalize("NFC");if(!(!s||r.has(s))&&(r.add(s),n.push(s),n.length>=t))break}return n.length>0?n:void 0}function xo(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:mt.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:dt.includes(e.employmentType)?e.employmentType:void 0,seniority:gt(e.seniority),company:ht(e.company),category:bt(e.category),sort:ft.includes(e.sort)?e.sort:void 0}}var be={};A(be,{COMMUTE_RADIUS_MAX_KM:()=>eo,COMMUTE_RADIUS_MIN_KM:()=>Xt,COUNTRY_CODES:()=>Z,MILES_COUNTRIES:()=>fe,buildJobBreadcrumbs:()=>W,countryOptions:()=>Wt,defaultCommuteRadiusKm:()=>no,defaultSearchRadius:()=>so,distanceUnitForCountry:()=>oo,distanceUnitToKm:()=>X,formatDate:()=>Rt,formatDistance:()=>ao,formatMonthYear:()=>vt,formatPublishedRelativeDate:()=>Bt,formatSalaryRange:()=>Et,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,kmToDistanceUnit:()=>ro,kmToMiles:()=>he,milesToKm:()=>ge,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>Zt,searchRadiusOptions:()=>io});function C(e){let t=e.trim();if(!t)return null;try{let o=t.replace(/_/g,"-"),[n]=Intl.getCanonicalLocales(o);if(!n)return null;let[r]=Intl.NumberFormat.supportedLocalesOf([n]);return r??null}catch{return null}}var Ct=new Map,Ot=new Map,_t=new Map,Pt=new Map;function Uo(e){let t=Ct.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),Ct.set(e,t)),t}function Mo(e){let t=Ot.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),Ot.set(e,t)),t}function wo(e){let t=_t.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),_t.set(e,t)),t}function Jo(e){let t=Pt.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),Pt.set(e,t)),t}function ae(e,t,o){try{return Uo(o).format(e,t)}catch{return null}}function Rt(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=C(e);if(!n)return null;try{return wo(n).format(o)}catch{return o.toISOString().split("T")[0]}}function Bt(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;let i=o-n.getTime(),s=Math.abs(i),a=60*1e3,l=60*a,c=24*l,p=7*c,m=30*c,d=365*c;if(s<a)try{return Mo(r).format(0,"second")}catch{return ae(0,"second",r)}let y=[{unit:"year",ms:d},{unit:"month",ms:m},{unit:"week",ms:p},{unit:"day",ms:c},{unit:"hour",ms:l},{unit:"minute",ms:a}];for(let g of y)if(s>=g.ms){let R=Math.round(s/g.ms),u=i>=0?-R:R;return ae(u,g.unit,r)}let f=Math.round(s/1e3),O=i>=0?-f:f;return ae(O,"second",r)}function vt(e,t){if(!t)return null;let n=/^\d{4}-\d{2}(-\d{2})?$/.test(t)?new Date(t.length===7?`${t}-01T00:00:00.000Z`:`${t}T00:00:00.000Z`):new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;try{return Jo(r).format(n)}catch{return null}}var j=new Map;function le(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,s=j.get(i);if(s===void 0){try{let a={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(a.compactDisplay="short",a.maximumFractionDigits=1,a.minimumFractionDigits=0),s=new Intl.NumberFormat(t,a)}catch{s=null}j.set(i,s)}return s?s.format(e):null}function ce(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 No(e,t,o,n,r="symbol",i="compact"){let s=`${o}:${n}:${r}:${i}:range`,a=j.get(s);if(a===void 0){try{let l={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(l.compactDisplay="short",l.maximumFractionDigits=1,l.minimumFractionDigits=0),a=new Intl.NumberFormat(o,l)}catch{a=null}j.set(s,a)}return a?ce(a,e,t):null}var Do=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function $o(...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 Et(e,t,o,n,r=null,i="symbol",s){let a=t==null||Number.isFinite(t),l=o==null||Number.isFinite(o);if(!a||!l||t==null&&o==null)return null;let c=r?.trim().toUpperCase()||null;if(!c)return null;let p=C(e);if(!p)return null;let m=s??$o(t,o),d=typeof n=="string"&&Do.has(n)?n:null;if(t!=null&&o!=null){let f=t<=o?t:o,O=t<=o?o:t,g=f===O?le(f,p,c,i,m):No(f,O,p,c,i,m);return g?{text:g,timeframe:d,bound:"range"}:null}if(t!=null){let f=le(t,p,c,i,m);return f?{text:f,timeframe:d,bound:"from"}:null}let y=le(o,p,c,i,m);return y?{text:y,timeframe:d,bound:"upTo"}:null}var At=new Map;function Tt(...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){let n=`${e}:${t}:${o}`,r=At.get(n);if(r!==void 0)return r;let i;try{let s={style:"currency",currency:t,notation:o};o==="compact"&&(s.compactDisplay="short",s.minimumFractionDigits=0,s.maximumFractionDigits=1),i=new Intl.NumberFormat(e,s)}catch{i=null}return At.set(n,i),i}function q(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=C(e);if(!i)return null;let s=n??Tt(t),a=Lt(i,r,s);return a?a.format(t):null}function k(e,t,o,n,r){if(!Number.isFinite(t)||!Number.isFinite(o))return null;let i=n?.trim().toUpperCase()||null;if(!i)return null;let s=C(e);if(!s)return null;let a=r??Tt(t,o),l=Lt(s,i,a);if(!l)return null;let c=Math.min(t,o),p=Math.max(t,o);return c===p?l.format(c):ce(l,c,p)}var Q=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function It(e){return[...e].sort((t,o)=>{let n=Q.indexOf(t.seniority),r=Q.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var jo={unitText:"YEAR",duration:"P1Y"};function x(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...jo}}function pe(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return x(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function G(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function Ft(e,t,o,n){if(!o)return[];let r=k(e,o.avgMin,o.avgMax,n);return[{kind:"average",label:t,range:r,avgMin:o.avgMin,avgMax:o.avgMax,currency:n,jobCount:o.jobCount},{kind:"methodology",label:t}]}function H(e){return e.length===0?null:{"@context":"https://schema.org","@type":"ItemList",numberOfItems:e.length,itemListElement:e.map((t,o)=>({"@type":"ListItem",position:o+1,name:t.name,url:t.url}))}}function kt(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 xt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...pe(e.bySeniority,e.currency,e.categoryName,t)]):null}function Ut(e){return e.overallSalary?G("Occupation",e.skillName,{},[x(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function Mt(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:H(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function wt(e,t){return e.overall?G("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[x(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...pe(e.bySeniority,e.currency,e.name,t)]):null}function Jt(e,t){return t?.occupationUrl?H(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function Nt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...pe(e.bySeniority,e.currency,e.categoryName,t)]):null}function jt(e,t){return e.company?.name??t.legalName??t.contact?.legalName??t.name??null}var Dt={high_school:"high school",associate_degree:"associate degree",bachelor_degree:"bachelor degree",professional_certificate:"professional certificate",postgraduate_degree:"postgraduate degree"},Qo={full_time:"FULL_TIME",part_time:"PART_TIME",contract:"CONTRACTOR",internship:"INTERN",temporary:"TEMPORARY",volunteer:"VOLUNTEER",other:"OTHER"},qo={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},me=["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 Qt({job:e,board:t,shareUrl:o}){let n=Wo(e),r=Zo(e),i=ue({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:Go(e,t),datePosted:$t(e.publishedAt),validThrough:$t(e.expiresAt),employmentType:e.employmentType?Qo[e.employmentType]??"OTHER":"OTHER",hiringOrganization:Ho(e,t),jobLocation:Vo(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?zo(e):null,baseSalary:Ko(e),educationRequirements:n,experienceRequirements:r,experienceInPlaceOfEducation:e.experienceInPlaceOfEducation===!0&&n&&r?!0:void 0,url:o});return!i||Array.isArray(i)||Object.keys(i).length===0?null:i}function Go(e,t){let o=jt(e,t),n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function Ho(e,t){let o=jt(e,t);if(!o)return null;let n={"@type":"Organization",name:o},r=e.company?.website??null,i=r?U(r):null;i&&(n.sameAs=i);let s=e.company?.logoUrl??t.logoUrl??null;return s&&(n.logo=s),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function Ko(e){let t=e.salaryCurrency?.trim(),o=typeof e.salaryMin=="number",n=typeof e.salaryMax=="number";if(!t||!o&&!n)return null;let r={"@type":"QuantitativeValue"};o&&(r.minValue=e.salaryMin),n&&(r.maxValue=e.salaryMax);let i=e.salaryTimeframe?qo[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 Vo(e){let t=e.officeLocations.map(o=>Yo({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 Yo({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},s=e?.trim(),a=t?.trim(),l=o?.trim(),c=n?.trim(),p=r?.trim();s&&(i.addressCountry=s.toUpperCase()),a&&(i.addressRegion=a),l&&(i.addressLocality=l),c&&(i.postalCode=c);let m=Object.keys(i).length>1;if(!m&&!p)return null;let d={"@type":"Place"};return p&&(d.name=p),m&&(d.address=i),d}function zo(e){if(e.remoteWorldwide)return me.map(n=>({"@type":"Country",name:n}));let t=[],o=new Set;for(let n of e.remoteWorkPermitCountryCodes??[]){let r=n?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}for(let n of e.remoteWorkPermitSubdivisionCodes??[]){let r=n?.split("-")[0]?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}return t.length===0?null:t.length===1?t[0]:t}function Wo(e){let t=e.educationRequirements;if(!t||t.length===0)return null;if(t.includes("no_requirements"))return"no requirements";let o=t.filter(n=>n in Dt).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Dt[n]}));return o.length>0?o:null}function Zo(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function $t(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function ue(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=>ue(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,ue(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var ye={};A(ye,{BOARD_PATHS:()=>Y,blogAuthorPath:()=>rn,blogPostPath:()=>Vt,blogTagPath:()=>Yt,boardUrl:()=>z,companyMarketPath:()=>Kt,companyPath:()=>Ht,companySalaryPath:()=>en,encodePathSegment:()=>h,goAlertsConfirmPath:()=>cn,goAlertsManagePath:()=>ln,goJobPath:()=>an,jobDetailPath:()=>de,jobsCategoryPath:()=>K,jobsLocationCategoryPath:()=>V,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>Gt,jobsSkillPath:()=>qt,salaryLocationPath:()=>nn,salarySkillPath:()=>on,salaryTitlePath:()=>tn,suggestionPath:()=>Xo,talentProfilePath:()=>sn});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function de(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function K(e){return`/jobs/${h(e)}`}function qt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function V(e,t){return`${M(e)}/${h(t)}`}function Gt(e,t){return`${M(e)}/skills/${h(t)}`}function Ht(e){return`/companies/${h(e)}`}function Kt(e){return`/companies/markets/${h(e)}`}function Xo(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?Vt(e.slug):e.type==="tag"?Yt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?Gt(o,e.canonicalSlug):qt(e.canonicalSlug):o?V(o,e.canonicalSlug):K(e.canonicalSlug):e.type==="company"?Ht(e.slug):e.type==="market"?Kt(e.slug):null}function en(e){return`/companies/${h(e)}/salaries`}function tn(e){return`/salaries/titles/${h(e)}`}function on(e){return`/salaries/skills/${h(e)}`}function nn(e){return`/salaries/locations/${h(e)}`}function Vt(e){return`/blog/${h(e)}`}function Yt(e){return`/blog/tag/${h(e)}`}function rn(e){return`/blog/author/${h(e)}`}function sn(e){return`/p/${h(e)}`}var Y={home:"/",jobs:"/jobs",companies:"/companies",salaries:"/salaries",salaryCompanies:"/salaries/companies",salaryTitles:"/salaries/titles",salarySkills:"/salaries/skills",salaryLocations:"/salaries/locations",blog:"/blog",about:"/about",privacyPolicy:"/privacy-policy",termsOfService:"/terms-of-service",cookiePolicy:"/cookie-policy",impressum:"/impressum",talent:"/talent",employers:"/employers",alertsManage:"/alerts/manage",alertsConfirm:"/alerts/confirm"};function an(e){return`/go/job/${e}`}function ln(){return"/go/alerts-manage"}function cn(){return"/go/alerts-confirm"}function z(e,t){return`${e.replace(/\/+$/,"")}${t}`}function zt(e,t={}){let o=e.map(r=>{let i=r.label?.trim();return i?{name:i,href:r.href?.trim()??null}:null}).filter(r=>!!r);return o.length<2?null:{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:o.map((r,i)=>{let s=r.href?pn(r.href,t.origin??null):null,a={"@type":"ListItem",position:i+1,name:r.name};return s&&(a.item=s),a})}}function pn(e,t){if(un(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function un(e){return/^https?:\/\//i.test(e)}function W(e){let t=[{kind:"home",path:Y.home},{kind:"jobs",path:Y.jobs}],o=null;for(let r of e.placeHierarchy)o=r.slug,t.push({kind:"place",name:r.name,path:M(r.slug)});let n=e.categories[0];return n&&t.push({kind:"category",name:n.name,path:o?V(o,n.slug):K(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 mn(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function dn(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function Wt(e){let t=C(e);if(!t)return Z.map(r=>({code:r,name:r})).sort((r,i)=>r.code<i.code?-1:r.code>i.code?1:0);let o=mn(t),n=dn(t).compare;return Z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function yn(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 fn(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 Zt(e,t,o){let n=[];for(let r of t??[]){let i=o?.[r.key];if(r.type==="boolean"){typeof i=="boolean"&&n.push({key:r.key,label:r.label,kind:"boolean",value:i});continue}if(r.type==="number"){typeof i=="number"&&Number.isFinite(i)&&n.push({key:r.key,label:r.label,kind:"number",value:i});continue}if(r.type==="multi_select"){let a=yn(r,i);a&&n.push({key:r.key,label:r.label,kind:"multi_select",values:a});continue}let s=fn(r,i);s!==null&&n.push({key:r.key,label:r.label,kind:"text",value:s})}return n}var fe=["US","GB","LR","MM"],Xt=1,eo=250;var gn=new Set(fe);function to(e){return typeof e=="string"&&gn.has(e.trim().toUpperCase())}function oo(e){return to(e)?"mi":"km"}function no(e){return to(e)?40:50}function ge(e){return e*1.609344}function he(e){return e/1.609344}function ro(e,t){return t==="mi"?he(e):e}function X(e,t){return t==="mi"?ge(e):e}var hn=[5,10,25,50,100];function io(e){return hn.map(t=>({value:t,unit:e,km:X(t,e)}))}function so(e){let t=e==="mi"?25:50;return{value:t,unit:e,km:X(t,e)}}function ao(e,t,o){return new Intl.NumberFormat(o,{style:"unit",unit:t==="mi"?"mile":"kilometer",unitDisplay:"short",maximumFractionDigits:1}).format(e)}var Se={};A(Se,{ALL_COUNTRY_CODES:()=>me,SENIORITY_ORDER:()=>Q,buildJobBreadcrumbs:()=>W,buildSalaryFaq:()=>Ft,companyCategorySalaryJsonLd:()=>Nt,companySalaryJsonLd:()=>Jt,createAuthorProfileJsonLd:()=>co,createBlogArticleJsonLd:()=>lo,createBreadcrumbJsonLd:()=>zt,createJobPostingJsonLd:()=>Qt,crossAxisSalaryJsonLd:()=>wt,faqJsonLd:()=>kt,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,itemListJsonLd:()=>H,listingHead:()=>po,listingJsonLd:()=>uo,locationSalaryJsonLd:()=>Mt,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>Ut,sortBySeniority:()=>It,titleSalaryJsonLd:()=>xt});function lo({post:e,boardName:t,permalink:o,ogImageUrl:n}){let r={"@context":"https://schema.org","@type":"Article",headline:e.title,url:o,mainEntityOfPage:{"@type":"WebPage","@id":o},publisher:{"@type":"Organization",name:t}};e.customExcerpt&&(r.description=e.customExcerpt),e.publishedAt&&(r.datePublished=e.publishedAt);let i=e.coverUrl??n;i&&(r.image=i);let s=e.authors[0];return s&&(r.author={"@type":"Person",name:s.name,...s.websiteUrl?{url:s.websiteUrl}:{}}),r}function co({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let s=o.trim(),a=[ee(e.websiteUrl),ee(e.twitterUrl),ee(e.linkedinUrl),ee(e.githubUrl)].filter(d=>!!d),l=`${t}#profile`,c=r.slice(0,5).map(d=>{let y=bn(n,`/blog/${d.slug}`);return y?{"@type":"Article",headline:d.title,url:y,datePublished:d.publishedAt,author:{"@id":l}}:null}).filter(d=>d!==null),p=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,m={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":l,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:s||void 0,image:e.avatarUrl??void 0,sameAs:a.length>0?a:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:p}};return c.length>0&&(m.hasPart=c),m}function ee(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 bn(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function po(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 uo(e){let t=[];e.breadcrumbs.length>=2&&t.push({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.breadcrumbs.map((n,r)=>({"@type":"ListItem",position:r+1,name:n.name,...n.path?{item:z(e.origin,n.path)}:{}}))});let o=(e.jobs??[]).filter(n=>n.company!=null&&!!n.company.slug);return o.length>0&&t.push({"@context":"https://schema.org","@type":"ItemList",itemListElement:o.map((n,r)=>({"@type":"ListItem",position:r+1,url:z(e.origin,de(n.company.slug,n.slug))}))}),t}var Ce={};A(Ce,{createSuggestController:()=>On});function Sn(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function Cn(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 mo(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function On(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,s={query:"",items:[],status:"idle",error:null},a=[],l=new Set,c=0,p=null,m=null,d=new Set;function y(){for(let u of d)u()}function f(u){s=u,y()}function O(){p!==null&&(globalThis.clearTimeout(p),p=null)}function g(){m&&(m.abort(),m=null)}function R(u){let b=++c;g();let _=new AbortController;m=_;let E={q:u};r!==void 0&&(E.limit=r),e.search.suggest(E,{signal:_.signal}).then(B=>{i||b!==c||(m=null,a=B.items,f({query:s.query,items:mo(a,l),status:"ready",error:null}))}).catch(B=>{i||b!==c||Sn(B)||(m=null,f({query:s.query,items:s.items,status:"error",error:B}))})}return{setQuery(u){if(i)return;let b=u.trim();if(O(),Cn(b)<o){c+=1,g(),a=[],f({query:u,items:[],status:"idle",error:null});return}c+=1,g(),f({query:u,items:s.items,status:"loading",error:null}),p=globalThis.setTimeout(()=>{p=null,!i&&R(b)},n)},setExcludedCompanySlugs(u){i||(l=new Set(u.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),f({query:s.query,items:mo(a,l),status:s.status,error:s.error}))},getState(){return s},subscribe(u){return i?()=>{}:(d.add(u),()=>{d.delete(u)})},dispose(){i||(i=!0,O(),g(),c+=1,d.clear())}}}return So(_n);})();
|
|
1
|
+
"use strict";var CavunoBoard=(()=>{var w=Object.defineProperty;var yo=Object.getOwnPropertyDescriptor;var fo=Object.getOwnPropertyNames;var go=Object.prototype.hasOwnProperty;var ho=(e,t,o)=>t in e?w(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var A=(e,t)=>{for(var o in t)w(e,o,{get:t[o],enumerable:!0})},bo=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of fo(t))!go.call(e,r)&&r!==o&&w(e,r,{get:()=>t[r],enumerable:!(n=yo(t,r))||n.enumerable});return e};var So=e=>bo(w({},"__esModule",{value:!0}),e);var P=(e,t,o)=>ho(e,typeof t!="symbol"?t+"":t,o);var _n={};A(_n,{ACCESS_TOKEN_KEY:()=>T,BOARD_ACCESS_GRANT_KEY:()=>I,BOARD_API_ERROR_CODES:()=>Oe,BoardApiError:()=>v,BoardClient:()=>F,REFRESH_TOKEN_KEY:()=>L,SDK_VERSION:()=>D,SIGN_IN_REDIRECT_ERROR_CODES:()=>we,SSO_LINK_PROOF_BINDING_TTL_MS:()=>ne,createBoardClient:()=>Io,filters:()=>se,format:()=>be,isBoardApiError:()=>S,isBoardPasswordRequired:()=>Re,isColdRule:()=>ct,isConflict:()=>Ae,isForbidden:()=>Be,isFreeEmailWebsiteError:()=>Te,isNotFound:()=>_e,isOwnMessage:()=>lt,isRateLimited:()=>Ee,isSafeApplicationUrl:()=>re,isSignInMethodUnavailable:()=>oe,isSsoBrowserMismatch:()=>Ie,isSsoRequired:()=>Le,isUnauthorized:()=>Pe,isValidationError:()=>ve,lastOwnMessageId:()=>pt,paginate:()=>at,parseOAuthCompletion:()=>Je,paths:()=>ye,resolveApplyAction:()=>ut,resolveApplyDecision:()=>ie,seo:()=>Se,ssoLinkProofBindingStore:()=>$,suggest:()=>Ce});var Oe=["internal_error","validation_bad_request","validation_payload_too_large","rate_limited","rate_limit_unavailable","search_unavailable","search_filter_unavailable","too_many_filter_values","pagination_invalid_cursor","pagination_offset_too_large","auth_unauthenticated","auth_forbidden","plan_upgrade_required","unknown_error","boards_not_found","board_page_not_found","board_auth_account_not_found","board_auth_email_taken","board_auth_invalid_credentials","board_auth_invalid_token","board_auth_registration_disabled","board_auth_token_expired","board_development_origin_not_allowed_for_email","board_development_origin_not_registered","board_development_origin_requires_publishable_key","sso_required","board_auth_method_unavailable","board_auth_sso_connection_not_found","board_auth_sso_role_unavailable","board_auth_sso_provider_unavailable","board_auth_sso_browser_mismatch","board_auth_sso_not_provisioned","board_auth_sso_identity_linked_elsewhere","invalid_current_password","no_password","same_email","email_taken","invalid_token","board_password_required","board_password_invalid","jobs_not_found","jobs_invalid_filter","categories_not_found","skills_not_found","places_not_found","locations_invalid_id","locations_unavailable","companies_not_found","company_markets_not_found","company_salary_not_found","company_category_salary_not_found","salaries_title_not_found","salaries_skill_not_found","salaries_location_not_found","salaries_title_location_not_found","salaries_skill_location_not_found","blog_post_not_found","blog_author_not_found","blog_tag_not_found","feeds_not_found","feed_not_ready","talent_not_found","talent_directory_not_found","talent_directory_restricted","job_recommendations_not_found","recommended_talent_not_found","job_alert_not_found","job_alerts_disabled","candidate_alert_limit_reached","candidate_alert_not_found","candidate_entry_not_found","candidate_handle_taken","candidate_job_not_found","candidate_notification_preference_paused","candidate_profile_required","resume_invalid_file","resume_upload_forbidden","applications_external_apply_only","applications_country_not_allowed","applications_guest_not_allowed","applications_job_not_found","applications_not_found","applications_resume_invalid_file","applications_unprocessable","messaging_application_not_found","messaging_application_not_linked","messaging_blocked","messaging_cannot_block_self","messaging_cold_rule","messaging_conversation_not_found","messaging_disabled","messaging_edit_window_expired","messaging_message_deleted","messaging_message_not_found","messaging_not_author","messaging_not_participant","messaging_not_permitted","messaging_not_recipient","messaging_rate_limited","messaging_recipient_not_found","messaging_recipient_not_open","messaging_unsend_window_expired","employer_applicant_not_found","employer_ats_unprocessable","employer_checkout_failed","employer_company_exists","employer_free_email_website","employer_company_name_taken","employer_company_not_found","employer_job_not_found","employer_job_slug_taken","employer_jobs_quota_exceeded","membership_required","employer_not_member","employer_payment_required","employer_pipeline_stage_not_found","employer_member_not_found","employer_invite_not_found","not_company_admin","not_company_member","company_deletion_disabled","last_admin","already_member","already_invited","invalid_email","invite_email_mismatch","candidate_role","job_not_published","talent_list_not_found","sourced_candidate_not_found","sourced_convert_unavailable","candidate_paywall_access_required","paywall_already_active","paywall_disabled","paywall_invalid_checkout_session","paywall_no_candidate_profile","paywall_no_recurring_subscription","paywall_offer_not_found","talent_access_unavailable","company_required","already_on_plan","talent_access_required","messaging_talent_access_required","stripe_not_connected","membership_plan_not_found","membership_seat_taken","job_posting_logo_lookup_unavailable","job_posting_logo_not_found","job_posting_rejected"],v=class extends Error{constructor(o){super(o.message);P(this,"status");P(this,"code");P(this,"details");P(this,"requestId");P(this,"raw");this.name="BoardApiError",this.status=o.status,this.code=o.code,this.details=o.details,this.requestId=o.requestId,this.raw=o.raw}};function S(e){return e instanceof Error&&e.name==="BoardApiError"&&typeof e.status=="number"&&typeof e.code=="string"}function _e(e){return S(e)&&e.status===404}function Pe(e){return S(e)&&e.status===401}function Re(e){return S(e)&&e.status===401&&e.code==="board_password_required"}function Be(e){return S(e)&&e.status===403}function ve(e){return S(e)&&e.status===400&&e.code==="validation_bad_request"}function Ee(e){return S(e)&&e.status===429}function Ae(e){return S(e)&&e.status===409}function Te(e){return S(e)&&e.status===422&&e.code==="employer_free_email_website"}function Le(e){if(!S(e)||e.status!==403)return!1;let t=e.details?.connectionIds;return Array.isArray(t)&&t.every(o=>typeof o=="string")&&(e.code==="sso_required"||oe(e)&&e.details.availableMethods.methods.length===0)}function oe(e){if(!S(e)||e.status!==403||e.code!=="board_auth_method_unavailable")return!1;let t=e.details?.availableMethods;if(!t||typeof t!="object")return!1;let{methods:o,ssoConnectionIds:n}=t;return Array.isArray(o)&&o.every(r=>typeof r=="string")&&Array.isArray(n)&&n.every(r=>typeof r=="string")}function Ie(e){return S(e)&&e.status===403&&e.code==="board_auth_sso_browser_mismatch"}function Fe(e){let t=new URLSearchParams;if(!e)return t;for(let[o,n]of Object.entries(e))if(n!=null)if(Array.isArray(n))for(let r of n)r!=null&&t.append(o,String(r));else t.append(o,String(n));return t}function J(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return`${e.replace(/[^a-zA-Z0-9_-]/g,"_")}-${t.toString(36)}`}var T="cavuno_board_access_token",L="cavuno_board_refresh_token",I="cavuno_board_access_grant";function ke(){return typeof globalThis.document<"u"}function Co(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,o)=>{e.set(t,o)},removeItem:t=>{e.delete(t)}}}function Oo(e,t){if(!ke())throw new Error(`storage mode '${e}' is browser-only \u2014 use 'nostore' + per-call headers on the server`);let o;try{if(o=e==="local"?globalThis.localStorage:globalThis.sessionStorage,!o)throw new Error("unavailable")}catch{throw new Error(`storage mode '${e}' is unavailable in this browsing context (storage access is blocked \u2014 e.g. a sandboxed or third-party iframe). Use 'memory', or 'nostore' + per-call headers.`)}let n=t?`:${J(t)}`:"";return{getItem:r=>o.getItem(`${r}${n}`),setItem:(r,i)=>{o.setItem(`${r}${n}`,i)},removeItem:r=>{o.removeItem(`${r}${n}`)}}}var _o=Symbol.for("@cavuno/board:nostore");var Po={[_o]:!0,getItem:()=>null,setItem:()=>{},removeItem:()=>{}};function xe(e,t){let o=e??(ke()?"memory":"nostore");if(typeof o=="object")return o;switch(o){case"memory":return Co();case"nostore":return Po;case"local":case"session":return Oo(o,t);default:throw new Error(`Unknown storage mode '${String(o)}'`)}}async function N(e,t){await e.setItem(T,t.accessToken),await e.setItem(L,t.refreshToken)}async function Ue(e){await e.removeItem(T),await e.removeItem(L)}var D="4.42.0";function Ro(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 Bo(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 F=class{constructor(t){P(this,"storage");P(this,"basePath");P(this,"options");this.options=t,this.storage=t.storage;let o=t.baseUrl.replace(/\/+$/,"");this.basePath=`${o}/v1/boards/${encodeURIComponent(t.board)}`}async fetch(t,o={}){let{body:n,query:r,headers:i,...s}=o,a=(o.method??"GET").toUpperCase(),l=`${this.basePath}${t}`,p=Fe(r).toString();p&&(l+=`?${p}`);let m=n!==void 0&&!Ro(n),d=n===void 0?void 0:m?JSON.stringify(n):n,y=new Headers({accept:"application/json"});m&&y.set("content-type","application/json");for(let[B,te]of Object.entries(this.options.globalHeaders??{}))y.set(B,te);let f=await this.storage.getItem(T);f!==null&&y.set("authorization",`Bearer ${f}`);let O=await this.storage.getItem(I);O!==null&&y.set("x-board-access",O),i&&new Headers(i).forEach((B,te)=>{y.set(te,B)}),(a!=="GET"||y.has("authorization")||y.has("x-board-access"))&&!y.has("x-cavuno-sdk")&&y.set("x-cavuno-sdk",`board@${D}`);let g={url:l,init:{...s,method:a,headers:y,body:d}};this.options.onRequest&&(g=await this.options.onRequest(g));let R=Bo(g.url);this.options.logger?.debug(`${a} ${R}`);let u=await globalThis.fetch(g.url,g.init);if(this.options.logger?.debug(`${u.status} ${a} ${R}`),this.options.onResponse&&await this.options.onResponse(u.clone(),g),u.status===204)return;if(u.ok)return await u.json();let b;try{b=await u.json()}catch{b=void 0}let _=b?.error,E=_&&typeof _.code=="string"&&typeof _.message=="string"?new v({status:u.status,code:_.code,message:_.message,details:_.details,requestId:_.requestId,raw:b}):new v({status:u.status,code:"unknown_error",message:u.statusText||"Request failed",raw:b});throw this.options.logger?.error(`${E.status} ${E.code} ${a} ${R}`),E}};var Me="https://api.cavuno.com";var we=["oauth_cancelled","oauth_failed","oauth_email_unverified","role_disabled","method_unavailable","sso_required","sso_state_invalid","sso_cancelled","sso_failed","sso_connection_unavailable","sso_not_provisioned","sso_email_required","sso_account_disabled","sso_identity_linked_elsewhere","sso_link_proof_rate_limited","sso_development_origin_not_allowed_for_email"];function vo(e){if(e instanceof URLSearchParams)return e;if(typeof e=="string"){let o=e.includes("?")?e.slice(e.indexOf("?")):e;return new URLSearchParams(o)}let t=new URLSearchParams;for(let[o,n]of Object.entries(e))n!==void 0&&t.set(o,n);return t}function Eo(e){return!e||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")||e.includes("://")||/[\u0000-\u001F\u007F]/.test(e)?"/":e}function Ao(e){return e==="candidate"||e==="employer"?e:null}function Je(e){let t=vo(e),o=c=>{let p=t.get(c);return p&&p.length>0?p:null},n=Eo(o("returnTo")),r=Ao(o("role")),i=o("error");if(i)return{kind:"error",error:i,returnTo:n};let s=o("linkProof");if(s)return{kind:"link_proof",linkProof:s,role:r,returnTo:n};let a=o("linkProofBinding");if(o("status")==="sso_link_proof_sent"&&a)return{kind:"link_proof_sent",linkProofBinding:a,role:r,returnTo:n};let l=o("token");return l?{kind:"token",token:l,method:o("method"),role:r,returnTo:n,isNewUser:o("isNew")==="1"}:{kind:"invalid",returnTo:n}}var ne=1500*1e3,To="cavuno_board_sso_link_proof_binding";function Lo(){try{return globalThis.localStorage??null}catch{return null}}function $(e,t={}){let o=`${To}:${J(e)}`,n=t.now??Date.now,r=()=>t.storage??Lo(),i=()=>{try{r()?.removeItem(o)}catch{}};return{begin(){let s=globalThis.crypto.getRandomValues(new Uint8Array(32)),a=Array.from(s,c=>c.toString(16).padStart(2,"0")).join(""),l=r();if(!l)throw new Error("SSO requires browser storage or an explicit browser proof");return l.setItem(o,JSON.stringify({binding:a,expiresAt:n()+ne})),a},save(s){},read(){let s=null;try{s=r()?.getItem(o)??null}catch{return null}if(!s)return null;try{let a=JSON.parse(s);if(typeof a.binding=="string"&&typeof a.expiresAt=="number"&&a.expiresAt>n())return a.binding}catch{}return i(),null},clear:i}}function Ne(e,t=""){let o=()=>$(t);async function n(i){return await N(e.storage,i),i}async function r(i){if(i?.refreshToken)return i.refreshToken;let s=await e.storage.getItem(L);if(s===null)throw new Error("No refresh token available \u2014 pass { refreshToken } or configure auth.storage");return s}return{async register(i,s){let a=await e.fetch("/auth/register",{...s,method:"POST",body:i});return n(a)},async login(i,s){let a=await e.fetch("/auth/login",{...s,method:"POST",body:i});return n(a)},async refresh(i,s){let a=await r(i),l=await e.fetch("/auth/refresh",{...s,method:"POST",body:{refreshToken:a}});return n(l)},async logout(i,s){let a=await r(i);await e.fetch("/auth/logout",{...s,method:"POST",body:{refreshToken:a}}),await Ue(e.storage)},verifyEmail(i,s){return e.fetch("/auth/verify-email",{...s,method:"POST",body:i})},verifyWorkEmail(i,s){return e.fetch("/auth/verify-work-email",{...s,method:"POST",body:i})},verifyEmailWithCode(i,s){return e.fetch("/auth/verify-email/otp",{...s,method:"POST",body:i})},resendVerification(i){return e.fetch("/auth/verify-email/resend",{...i,method:"POST"})},forgotPassword(i,s){return e.fetch("/auth/forgot-password",{...s,method:"POST",body:i})},resetPassword(i,s){return e.fetch("/auth/reset-password",{...s,method:"POST",body:i})},requestMagicLink(i,s){return e.fetch("/auth/magic-link",{...s,method:"POST",body:i})},async consumeMagicLink(i,s){let a=await e.fetch("/auth/magic-link/consume",{...s,method:"POST",body:i});return n(a)},getOAuthAuthorizationUrl(i,s,a){return e.fetch(`/auth/oauth/${i}`,{...a,method:"GET",query:s})},async exchangeOAuth(i,s){let a=await e.fetch("/auth/oauth/exchange",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)},async getSsoAuthorizationUrl(i,s,a){let l=s?.browserBindingHash;if(!l){let c=o().begin(),p=await globalThis.crypto.subtle.digest("SHA-256",new TextEncoder().encode(c));l=Array.from(new Uint8Array(p),m=>m.toString(16).padStart(2,"0")).join("")}return e.fetch(`/auth/sso/${encodeURIComponent(i)}`,{...a,method:"GET",query:{...s,browserBindingHash:l}})},async consumeSsoLinkProof(i,s){let a=await e.fetch("/auth/sso/link-proof",{...s,method:"POST",body:{...i,browserBinding:i.browserBinding??o().read()??void 0}});return n(a)}}}function De(e){return{posts:{list(t,o){return e.fetch("/blog/posts",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}`,{...n,query:o})},adjacent(t,o){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/adjacent`,o)},similar(t,o,n){return e.fetch(`/blog/posts/${encodeURIComponent(t)}/similar`,{...n,query:o})}},tags:{list(t,o){return e.fetch("/blog/tags",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/tags/${encodeURIComponent(t)}`,{...n,query:o})}},authors:{list(t,o){return e.fetch("/blog/authors",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/blog/authors/${encodeURIComponent(t)}`,{...n,query:o})}},search(t,o,n){return e.fetch("/blog/search",{...n,method:"POST",body:t,query:o})}}}function $e(e){let t=Object.assign((n,r)=>e.fetch("/companies/markets",{...r,query:n}),{resolve(n,r){return e.fetch(`/companies/markets/${encodeURIComponent(n)}`,r)}}),o=Object.assign((n,r)=>e.fetch(`/companies/${encodeURIComponent(n)}/salaries`,r),{summary(n,r){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/summary`,r)},category(n,r,i,s){return e.fetch(`/companies/${encodeURIComponent(n)}/salaries/${encodeURIComponent(r)}`,{...s,query:i})}});return{list(n,r){return e.fetch("/companies",{...r,query:n})},retrieve(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}`,{...i,query:r})},search(n,r,i){return e.fetch("/companies/search",{...i,method:"POST",body:n,query:r})},listJobs(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/jobs`,{...i,query:r})},similar(n,r,i){return e.fetch(`/companies/${encodeURIComponent(n)}/similar`,{...i,query:r})},markets:t,salaries:o}}function je(e){return{jobs(t,o){return e.fetch("/embed/jobs",{...o,query:t})}}}function Qe(e){return{preview(t,o){return e.fetch("/invites/preview",{...o,method:"POST",body:t})}}}function qe(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 Ge(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 He(e){return{collectionChoices(t,o,n){return e.fetch(`/job-fields/${encodeURIComponent(t)}/choices`,{...n,query:o})},list(t,o){return e.fetch("/jobs",{...o,query:t})},retrieve(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}`,{...n,query:o})},search(t,o,n){return e.fetch("/jobs/search",{...n,method:"POST",body:t,query:o})},similar(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/similar`,{...n,query:o})},apply(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply`,{...n,method:"POST",body:o??{}})},createApplyIntent(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-intents`,{...n,method:"POST",body:o})},prepareApplyApproval(t,o,n){return e.fetch(`/jobs/${encodeURIComponent(t)}/apply-approvals`,{...n,method:"POST",body:o})},uploadApplicationResume(t,o,n,r){let i=new FormData;return i.append("file",o),n?.applicationId&&i.append("applicationId",n.applicationId),e.fetch(`/jobs/${encodeURIComponent(t)}/apply/resume`,{...r,method:"POST",body:i})},myApplication(t,o){return e.fetch(`/jobs/${encodeURIComponent(t)}/application`,o)}}}function Ke(e){return{search(t,o){return e.fetch("/locations/search",{...o,query:t})},resolve(t,o){return e.fetch("/locations/resolve",{...o,method:"POST",body:t})}}}function Ve(e){return{retrieve(t,o){return e.fetch("/me",{...o,query:t})},delete(t){return e.fetch("/me",{...t,method:"DELETE"})},async updatePassword(t,o){let n=await e.fetch("/me/password",{...o,method:"POST",body:t});return await N(e.storage,n),n},requestEmailChange(t,o){return e.fetch("/me/email",{...o,method:"POST",body:t})},confirmEmailChange(t,o){return e.fetch("/me/email/confirm",{...o,method:"POST",body:t})},acceptInvite(t,o){return e.fetch("/me/invites/accept",{...o,method:"POST",body:t})},profile:{listObjectReferenceChoices(t,o,n){return e.fetch("/me/profile/object-references/choices",{...n,query:{...o,fieldKey:t}})},retrieve(t,o){return e.fetch("/me/profile",{...o,query:t})},update(t,o,n){return e.fetch("/me/profile",{...n,method:"PATCH",body:t,query:o})},retrieveCustomFields(t){return e.fetch("/me/profile/custom-fields",{...t})},updateCustomFields(t,o){return e.fetch("/me/profile/custom-fields",{...o,method:"PATCH",body:t})},retrieveObjectReferences(t){return e.fetch("/me/profile/object-references",t)},updateObjectReferences(t,o){return e.fetch("/me/profile/object-references",{...o,method:"PUT",body:t})},handleAvailable(t,o){return e.fetch("/me/profile/handle-available",{...o,query:{handle:t}})},listExperience(t){return e.fetch("/me/profile/experience",t)},createExperience(t,o){return e.fetch("/me/profile/experience",{...o,method:"POST",body:t})},updateExperience(t,o,n){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteExperience(t,o){return e.fetch(`/me/profile/experience/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listEducation(t){return e.fetch("/me/profile/education",t)},createEducation(t,o){return e.fetch("/me/profile/education",{...o,method:"POST",body:t})},updateEducation(t,o,n){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},deleteEducation(t,o){return e.fetch(`/me/profile/education/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listSkills(t){return e.fetch("/me/profile/skills",t)},updateSkills(t,o){return e.fetch("/me/profile/skills",{...o,method:"PUT",body:t})},listLanguages(t){return e.fetch("/me/profile/languages",t)},updateLanguages(t,o){return e.fetch("/me/profile/languages",{...o,method:"PUT",body:t})},uploadAvatar(t,o){let n=new FormData;return n.append("file",t),e.fetch("/me/profile/avatar",{...o,method:"POST",body:n})}},notificationPreferences:{retrieve(t){return e.fetch("/me/notification-preferences",t)},update(t,o){return e.fetch("/me/notification-preferences",{...o,method:"PUT",body:t})},unsubscribeWithToken(t,o){return e.fetch("/me/notification-preferences/unsubscribe",{...o,method:"POST",body:t})}},companies:{listObjectReferenceChoices(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references/choices`,{...r,query:{...n,fieldKey:o}})},retrieveObjectReferences(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,o)},updateObjectReferences(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/object-references`,{...n,method:"PUT",body:o})},search(t,o){return e.fetch("/me/companies/search",{...o,query:t})},list(t){return e.fetch("/me/companies",t)},create(t,o){return e.fetch("/me/companies",{...o,method:"POST",body:t})},claim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"POST"})},cancelClaim(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/claim`,{...o,method:"DELETE"})},retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},retrieveCustomFields(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,o)},updateCustomFields(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/custom-fields`,{...n,method:"PATCH",body:o})},delete(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},listMembers(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members`,o)},updateMemberRole(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},removeMember(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/members/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},leave(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership`,{...o,method:"DELETE"})},startMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout`,{...n,method:"POST",body:o})},retrieveMembershipCheckout(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/membership/checkout/${encodeURIComponent(o)}`,n)},listInvites(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,o)},createInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites`,{...n,method:"POST",body:o})},revokeInvite(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/invites/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},uploadLogo(t,o,n){let r=new FormData;return r.append("file",o),e.fetch(`/me/companies/${encodeURIComponent(t)}/logo`,{...n,method:"POST",body:r})},workEmail:{verify(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/verify`,{...n,method:"POST",body:o})},confirm(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/work-email/confirm`,{...n,method:"POST",body:o})}},jobs:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,query:o})},retrieve(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,n)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},delete(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},publish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/publish`,{...n,method:"POST"})},unpublish(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/unpublish`,{...n,method:"POST"})},checkout(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/jobs/${encodeURIComponent(o)}/checkout`,{...r,method:"POST",body:n})}},billingOptions:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-options`,o)}},billingPortal:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/billing-portal`,{...n,method:"POST",body:o})}},jobStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/job-stats/timeseries`,{...n,query:o})}},profileStats:{retrieve(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats`,o)},timeseries(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/profile-stats/timeseries`,{...n,query:o})}},recommendedTalent:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/recommended-talent`,{...n,query:o})}},talentLists:{list(t,o){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,o)},create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/talent-lists/${encodeURIComponent(o)}`,{...n,method:"DELETE"})}},sourcedCandidates:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,query:o})},add(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates`,{...n,method:"POST",body:o})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},convert(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/sourced-candidates/${encodeURIComponent(o)}/convert`,{...r,method:"POST",body:n})}},applicants:{list(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants`,{...n,query:o})},move(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/stage`,{...r,method:"PATCH",body:n})},bulkMove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/move`,{...n,method:"POST",body:o})},bulkReject(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/bulk/reject`,{...n,method:"POST",body:o})},addNote(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/applicants/${encodeURIComponent(o)}/notes`,{...r,method:"POST",body:n})}},pipelineStages:{create(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages`,{...n,method:"POST",body:o})},update(t,o,n,r){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...r,method:"PATCH",body:n})},remove(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/${encodeURIComponent(o)}`,{...n,method:"DELETE"})},reorder(t,o,n){return e.fetch(`/me/companies/${encodeURIComponent(t)}/pipeline-stages/reorder`,{...n,method:"PUT",body:o})}}},talentAccess:{retrieve(t){return e.fetch("/me/talent-access",t)},retrieveCandidate(t,o){return e.fetch(`/me/talent-access/candidates/${encodeURIComponent(t)}`,o)},checkout(t,o){return e.fetch("/me/talent-access/checkout",{...o,method:"POST",body:t})},claim(t,o){return e.fetch("/me/talent-access/claim",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/talent-access/checkout/${encodeURIComponent(t)}`,o)},unlock(t,o){return e.fetch("/me/talent-access/unlocks",{...o,method:"POST",body:t})},upgrade(t,o){return e.fetch("/me/talent-access/upgrade",{...o,method:"POST",body:t})}},alerts:{list(t){return e.fetch("/me/alerts",t)},create(t,o){return e.fetch("/me/alerts",{...o,method:"POST",body:t})},retrieve(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,o)},update(t,o,n){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...n,method:"PUT",body:o})},remove(t,o){return e.fetch(`/me/alerts/${encodeURIComponent(t)}`,{...o,method:"DELETE"})}},applications:{list(t,o){return e.fetch("/me/applications",{...o,query:t})},retrieve(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,o)},updateFacts(t,o,n){return e.fetch(`/me/applications/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},withdraw(t,o){return e.fetch(`/me/applications/${encodeURIComponent(t)}/withdraw`,{...o,method:"POST"})}},resume:{upload(t,o,n){let r=new FormData;return r.append("resume",t),o?.keepResumeOnFile&&r.append("keepResumeOnFile","true"),o?.importMode&&r.append("importMode",o.importMode),o?.confirmReplaceAll&&r.append("confirmReplaceAll","true"),e.fetch("/me/resume",{...n,method:"POST",body:r})},retrieve(t){return e.fetch("/me/resume",t)},delete(t){return e.fetch("/me/resume",{...t,method:"DELETE"})}},recommendedJobs:{list(t,o){return e.fetch("/me/recommended-jobs",{...o,query:t})}},savedJobs:{list(t,o){return e.fetch("/me/saved-jobs",{...o,query:t})},save(t,o,n){return e.fetch("/me/saved-jobs",{...n,method:"POST",body:t,query:o})},unsave(t,o,n){return e.fetch(`/me/saved-jobs/${encodeURIComponent(t)}`,{...n,method:"DELETE",query:o})}},conversations:{list(t,o){return e.fetch("/me/conversations",{...o,query:t})},unreadCount(t){return e.fetch("/me/conversations/unread-count",t)},retrieve(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}`,o)},listMessages(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/messages`,{...n,query:o})},start(t,o){return e.fetch("/me/conversations",{...o,method:"POST",body:t})},startAboutApplication(t,o){return e.fetch("/me/conversations/about-application",{...o,method:"POST",body:t})},reply(t,o,n){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/reply`,{...n,method:"POST",body:o})},markRead(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/read`,{...o,method:"POST"})},archive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/archive`,{...o,method:"POST"})},unarchive(t,o){return e.fetch(`/me/conversations/${encodeURIComponent(t)}/unarchive`,{...o,method:"POST"})},findExisting(t,o){return e.fetch("/me/conversations/find-existing",{...o,query:t})}},blocks:{list(t){return e.fetch("/me/blocks",t)},create(t,o){return e.fetch("/me/blocks",{...o,method:"POST",body:t})},remove(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},status(t,o){return e.fetch(`/me/blocks/${encodeURIComponent(t)}`,o)}},messages:{edit(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...n,method:"PATCH",body:o})},unsend(t,o){return e.fetch(`/me/messages/${encodeURIComponent(t)}`,{...o,method:"DELETE"})},report(t,o,n){return e.fetch(`/me/messages/${encodeURIComponent(t)}/report`,{...n,method:"POST",body:o})}},marketingConsent:{retrieve(t){return e.fetch("/me/marketing-consent",t)},grant(t){return e.fetch("/me/marketing-consent/grant",{...t,method:"POST"})},withdraw(t){return e.fetch("/me/marketing-consent/withdraw",{...t,method:"POST"})}},access:{checkout(t,o){return e.fetch("/me/access/checkout",{...o,method:"POST",body:t})},retrieveCheckout(t,o){return e.fetch(`/me/access/checkout/${encodeURIComponent(t)}`,o)},grant(t){return e.fetch("/me/access/grant",t)},portal(t,o){return e.fetch("/me/access/portal",{...o,method:"POST",body:t})}}}}function Ye(e){return{async verify(t,o){let n=await e.fetch("/password/verify",{...o,method:"POST",body:{password:t}});return await e.storage.setItem(I,n.token),n}}}function ze(e){return{offers(t){return e.fetch("/paywall/offers/enabled",t)}}}function We(e){return{list(t,o){return e.fetch("/plans",{...o,query:t})},salesLed(t){return e.fetch("/sales-led-plans",t)}}}function Ze(e){return{retrieve(t,o){return e.fetch(`/profile-fields/${encodeURIComponent(t)}`,o)},choices(t,o,n,r){return e.fetch(`/profile-fields/${encodeURIComponent(t)}/${encodeURIComponent(o)}/choices`,{...r,query:n})}}}function Xe(e){return{resolve(t,o){return e.fetch("/redirects/resolve",{...o,query:{path:t}})}}}function et(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 tt(e){return{suggest(t,o){return e.fetch("/search/suggest",{...o,query:t})}}}function ot(e){return Object.assign(t=>e.fetch("/sitemap",t),{entries(t,o,n){return e.fetch(`/sitemap/${encodeURIComponent(t)}`,{...n,query:o})}})}function nt(e){return{list(t,o){let n=t?{...t,customFields:t.customFields?JSON.stringify(t.customFields):void 0,objectReferences:t.objectReferences?JSON.stringify(t.objectReferences):void 0}:void 0;return e.fetch("/talent",{...o,query:n})},retrieve(t,o){return e.fetch(`/talent/${encodeURIComponent(t)}`,o)}}}function it(e,t){return{resolve(o,n){return e.fetch(`/${t}/${encodeURIComponent(o)}`,n)}}}function rt(e,t){return{...it(e,t),list(o,n){return e.fetch(`/${t}`,{...n,query:o})}}}function st(e){return{categories:rt(e,"categories"),skills:rt(e,"skills"),remotePermits:{list(t){return e.fetch("/remote-permits",t)}},places:{...it(e,"places"),list(t,o){return e.fetch("/places",{...o,query:t})}}}}function at(e,t,o){async function*n(){let r=t;for(;;){let i=await e(r,o);if(yield i,!i.hasMore||i.nextCursor===null)return;let{offset:s,...a}=r??{};r={...a,cursor:i.nextCursor}}}return{pages:n,async*[Symbol.asyncIterator](){for await(let r of n())yield*r.data},async toArray({limit:r}){let i=[];for await(let s of n())if(i.push(...s.data),i.length>=r)break;return i.slice(0,r)}}}function lt(e,t){return e.authorBoardUserId!==t}function ct(e,t){let o=e.some(r=>r.authorBoardUserId===t);return e.some(r=>r.authorBoardUserId!==t)&&!o}function pt(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 re(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 ie(e){let t=e.applicationUrl&&re(e.applicationUrl)?e.applicationUrl:null;return!t&&!e.jobSlug?{kind:"none"}:e.registrationWall&&!e.viewer?{kind:"sign-in",reason:"registration-wall"}:t?{kind:"external",url:t}:e.jobSlug?e.viewer?e.viewer.emailVerified?e.applied?{kind:"applied"}:{kind:"native",jobSlug:e.jobSlug}:{kind:"verify-email"}:e.allowGuestApply?{kind:"guest",jobSlug:e.jobSlug}:{kind:"sign-in",reason:"native-apply"}:{kind:"none"}}function ut(e){let t=ie({...e,registrationWall:!1,allowGuestApply:!1});return t.kind==="sign-in"?{kind:"sign-in"}:t}function Io(e){let t=new F({baseUrl:e.baseUrl??Me,board:e.board,storage:xe(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:He(t),embed:je(t),companies:$e(t),blog:De(t),auth:Ne(t,e.board),me:Ve(t),invites:Qe(t),password:Ye(t),taxonomy:st(t),search:tt(t),locations:Ke(t),redirects:Xe(t),jobAlerts:qe(t),jobPosting:Ge(t),salaries:et(t),talent:nt(t),profileFields:Ze(t),plans:We(t),paywall:ze(t),sitemap:ot(t)}}var se={};A(se,{DEFAULT_SORT:()=>Fo,EMPLOYMENT_TYPES:()=>dt,JOB_SORTS:()=>ft,REMOTE_OPTIONS:()=>mt,SENIORITIES:()=>yt,parseCategory:()=>bt,parseCompany:()=>ht,parseListingFilters:()=>xo,parseSeniority:()=>gt});var mt=["on_site","hybrid","remote"],dt=["full_time","part_time","contract","internship","temporary"],yt=["entry_level","associate","mid_level","senior","lead","principal","director","executive"],ft=["relevance","newest","salary_high"],Fo="relevance";var ko=new Set(yt);function gt(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)||ko.has(i)&&(n.add(i),o.push(i))}return o.length>0?o:void 0}function ht(e){return St(e,10)}function bt(e){return St(e,10)}function St(e,t){let o=Array.isArray(e)?e:typeof e=="string"&&e?e.split(","):[],n=[],r=new Set;for(let i of o){if(typeof i!="string")continue;let s=i.trim().toLowerCase().normalize("NFC");if(!(!s||r.has(s))&&(r.add(s),n.push(s),n.length>=t))break}return n.length>0?n:void 0}function xo(e){return{q:typeof e.q=="string"&&e.q?e.q:void 0,remoteOption:mt.includes(e.remoteOption)?e.remoteOption:void 0,employmentType:dt.includes(e.employmentType)?e.employmentType:void 0,seniority:gt(e.seniority),company:ht(e.company),category:bt(e.category),sort:ft.includes(e.sort)?e.sort:void 0}}var be={};A(be,{COMMUTE_RADIUS_MAX_KM:()=>eo,COMMUTE_RADIUS_MIN_KM:()=>Xt,COUNTRY_CODES:()=>Z,MILES_COUNTRIES:()=>fe,buildJobBreadcrumbs:()=>W,countryOptions:()=>Wt,defaultCommuteRadiusKm:()=>no,defaultSearchRadius:()=>so,distanceUnitForCountry:()=>oo,distanceUnitToKm:()=>X,formatDate:()=>Rt,formatDistance:()=>ao,formatMonthYear:()=>vt,formatPublishedRelativeDate:()=>Bt,formatSalaryRange:()=>Et,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,kmToDistanceUnit:()=>ro,kmToMiles:()=>he,milesToKm:()=>ge,normalizeWebsiteUrl:()=>U,resolveCustomFieldDisplay:()=>Zt,searchRadiusOptions:()=>io});function C(e){let t=e.trim();if(!t)return null;try{let o=t.replace(/_/g,"-"),[n]=Intl.getCanonicalLocales(o);if(!n)return null;let[r]=Intl.NumberFormat.supportedLocalesOf([n]);return r??null}catch{return null}}var Ct=new Map,Ot=new Map,_t=new Map,Pt=new Map;function Uo(e){let t=Ct.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"always",style:"short"}),Ct.set(e,t)),t}function Mo(e){let t=Ot.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:"auto",style:"short"}),Ot.set(e,t)),t}function wo(e){let t=_t.get(e);return t||(t=new Intl.DateTimeFormat(e,{dateStyle:"medium",timeZone:"UTC"}),_t.set(e,t)),t}function Jo(e){let t=Pt.get(e);return t||(t=new Intl.DateTimeFormat(e,{month:"short",year:"numeric",timeZone:"UTC"}),Pt.set(e,t)),t}function ae(e,t,o){try{return Uo(o).format(e,t)}catch{return null}}function Rt(e,t){if(!t)return null;let o=new Date(t);if(Number.isNaN(o.getTime()))return null;let n=C(e);if(!n)return null;try{return wo(n).format(o)}catch{return o.toISOString().split("T")[0]}}function Bt(e,t,o=Date.now()){if(!t)return null;let n=new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;let i=o-n.getTime(),s=Math.abs(i),a=60*1e3,l=60*a,c=24*l,p=7*c,m=30*c,d=365*c;if(s<a)try{return Mo(r).format(0,"second")}catch{return ae(0,"second",r)}let y=[{unit:"year",ms:d},{unit:"month",ms:m},{unit:"week",ms:p},{unit:"day",ms:c},{unit:"hour",ms:l},{unit:"minute",ms:a}];for(let g of y)if(s>=g.ms){let R=Math.round(s/g.ms),u=i>=0?-R:R;return ae(u,g.unit,r)}let f=Math.round(s/1e3),O=i>=0?-f:f;return ae(O,"second",r)}function vt(e,t){if(!t)return null;let n=/^\d{4}-\d{2}(-\d{2})?$/.test(t)?new Date(t.length===7?`${t}-01T00:00:00.000Z`:`${t}T00:00:00.000Z`):new Date(t);if(Number.isNaN(n.getTime()))return null;let r=C(e);if(!r)return null;try{return Jo(r).format(n)}catch{return null}}var j=new Map;function le(e,t,o,n="symbol",r="compact"){let i=`${t}:${o}:${n}:${r}`,s=j.get(i);if(s===void 0){try{let a={style:"currency",currency:o,currencyDisplay:n,notation:r};r==="compact"&&(a.compactDisplay="short",a.maximumFractionDigits=1,a.minimumFractionDigits=0),s=new Intl.NumberFormat(t,a)}catch{s=null}j.set(i,s)}return s?s.format(e):null}function ce(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 No(e,t,o,n,r="symbol",i="compact"){let s=`${o}:${n}:${r}:${i}:range`,a=j.get(s);if(a===void 0){try{let l={style:"currency",currency:n,currencyDisplay:r,notation:i};i==="compact"&&(l.compactDisplay="short",l.maximumFractionDigits=1,l.minimumFractionDigits=0),a=new Intl.NumberFormat(o,l)}catch{a=null}j.set(s,a)}return a?ce(a,e,t):null}var Do=new Set(["per_year","per_month","per_week","per_day","per_hour"]);function $o(...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 Et(e,t,o,n,r=null,i="symbol",s){let a=t==null||Number.isFinite(t),l=o==null||Number.isFinite(o);if(!a||!l||t==null&&o==null)return null;let c=r?.trim().toUpperCase()||null;if(!c)return null;let p=C(e);if(!p)return null;let m=s??$o(t,o),d=typeof n=="string"&&Do.has(n)?n:null;if(t!=null&&o!=null){let f=t<=o?t:o,O=t<=o?o:t,g=f===O?le(f,p,c,i,m):No(f,O,p,c,i,m);return g?{text:g,timeframe:d,bound:"range"}:null}if(t!=null){let f=le(t,p,c,i,m);return f?{text:f,timeframe:d,bound:"from"}:null}let y=le(o,p,c,i,m);return y?{text:y,timeframe:d,bound:"upTo"}:null}var At=new Map;function Tt(...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){let n=`${e}:${t}:${o}`,r=At.get(n);if(r!==void 0)return r;let i;try{let s={style:"currency",currency:t,notation:o};o==="compact"&&(s.compactDisplay="short",s.minimumFractionDigits=0,s.maximumFractionDigits=1),i=new Intl.NumberFormat(e,s)}catch{i=null}return At.set(n,i),i}function q(e,t,o,n){if(!Number.isFinite(t))return null;let r=o?.trim().toUpperCase()||null;if(!r)return null;let i=C(e);if(!i)return null;let s=n??Tt(t),a=Lt(i,r,s);return a?a.format(t):null}function k(e,t,o,n,r){if(!Number.isFinite(t)||!Number.isFinite(o))return null;let i=n?.trim().toUpperCase()||null;if(!i)return null;let s=C(e);if(!s)return null;let a=r??Tt(t,o),l=Lt(s,i,a);if(!l)return null;let c=Math.min(t,o),p=Math.max(t,o);return c===p?l.format(c):ce(l,c,p)}var Q=["entry_level","associate","mid_level","senior","lead","principal","director","executive"];function It(e){return[...e].sort((t,o)=>{let n=Q.indexOf(t.seniority),r=Q.indexOf(o.seniority);return(n===-1?999:n)-(r===-1?999:r)})}var jo={unitText:"YEAR",duration:"P1Y"};function x(e,t,o,n,r={}){return{"@type":"MonetaryAmountDistribution",...e!==void 0?{name:e}:{},currency:t,minValue:o,maxValue:n,...r,...jo}}function pe(e,t,o,n){return e.map(r=>{let i=n?.seniorityName?.({seniority:r.seniority,entity:o});return x(i,t,r.avgSalaryMin,r.avgSalaryMax)})}function G(e,t,o,n){return{"@context":"https://schema.org","@type":e,name:t,...o,estimatedSalary:n}}function Ft(e,t,o,n){if(!o)return[];let r=k(e,o.avgMin,o.avgMax,n);return[{kind:"average",label:t,range:r,avgMin:o.avgMin,avgMax:o.avgMax,currency:n,jobCount:o.jobCount},{kind:"methodology",label:t}]}function H(e){return e.length===0?null:{"@context":"https://schema.org","@type":"ItemList",numberOfItems:e.length,itemListElement:e.map((t,o)=>({"@type":"ListItem",position:o+1,name:t.name,url:t.url}))}}function kt(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 xt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardP25Min?{percentile25:e.boardP25Min}:{},...e.boardP75Max?{percentile75:e.boardP75Max}:{}}),...pe(e.bySeniority,e.currency,e.categoryName,t)]):null}function Ut(e){return e.overallSalary?G("Occupation",e.skillName,{},[x(e.skillName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{median:Math.round((e.overallSalary.medianMin+e.overallSalary.medianMax)/2)})]):null}function Mt(e,t){return!t?.occupationUrl||!(e.adminLevel==="city"||e.adminLevel==="locality")?null:H(e.topCategories.map(n=>({name:n.categoryName,url:t.occupationUrl(n)})))}function wt(e,t){return e.overall?G("Occupation",e.name,{occupationLocation:{"@type":"AdministrativeArea",name:e.placeName,address:{"@type":"PostalAddress",addressCountry:e.countryCode}}},[x(e.name,e.currency,e.overall.avgMin,e.overall.avgMax,{...e.overall.p25Min?{percentile25:e.overall.p25Min}:{},...e.overall.p75Max?{percentile75:e.overall.p75Max}:{}}),...pe(e.bySeniority,e.currency,e.name,t)]):null}function Jt(e,t){return t?.occupationUrl?H(e.byCategory.map(o=>({name:o.categoryName,url:t.occupationUrl(o)}))):null}function Nt(e,t){return e.overallSalary?G("Occupation",e.categoryName,{occupationalCategory:e.categoryName,hiringOrganization:{"@type":"Organization",name:e.companyName}},[x(e.categoryName,e.currency,e.overallSalary.avgMin,e.overallSalary.avgMax,{...e.boardCategoryP25Min?{percentile25:e.boardCategoryP25Min}:{},...e.boardCategoryP75Max?{percentile75:e.boardCategoryP75Max}:{}}),...pe(e.bySeniority,e.currency,e.categoryName,t)]):null}function jt(e,t){return e.company?.name??t.legalName??t.contact?.legalName??t.name??null}var Dt={high_school:"high school",associate_degree:"associate degree",bachelor_degree:"bachelor degree",professional_certificate:"professional certificate",postgraduate_degree:"postgraduate degree"},Qo={full_time:"FULL_TIME",part_time:"PART_TIME",contract:"CONTRACTOR",internship:"INTERN",temporary:"TEMPORARY",volunteer:"VOLUNTEER",other:"OTHER"},qo={per_year:"YEAR",per_month:"MONTH",per_week:"WEEK",per_day:"DAY",per_hour:"HOUR"},me=["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 Qt({job:e,board:t,shareUrl:o}){let n=Wo(e),r=Zo(e),i=ue({"@context":"https://schema.org/","@type":"JobPosting",title:e.title,description:e.description??"",identifier:Go(e,t),datePosted:$t(e.publishedAt),validThrough:$t(e.expiresAt),employmentType:e.employmentType?Qo[e.employmentType]??"OTHER":"OTHER",hiringOrganization:Ho(e,t),jobLocation:Vo(e),jobLocationType:e.remoteOption==="remote"?"TELECOMMUTE":void 0,applicantLocationRequirements:e.remoteOption==="remote"?zo(e):null,baseSalary:Ko(e),educationRequirements:n,experienceRequirements:r,experienceInPlaceOfEducation:e.experienceInPlaceOfEducation===!0&&n&&r?!0:void 0,url:o});return!i||Array.isArray(i)||Object.keys(i).length===0?null:i}function Go(e,t){let o=jt(e,t),n={"@type":"PropertyValue",value:e.id};return o&&(n.name=o),n}function Ho(e,t){let o=jt(e,t);if(!o)return null;let n={"@type":"Organization",name:o},r=e.company?.website??null,i=r?U(r):null;i&&(n.sameAs=i);let s=e.company?.logoUrl??t.logoUrl??null;return s&&(n.logo=s),n}function U(e){let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function Ko(e){let t=e.salaryCurrency?.trim(),o=typeof e.salaryMin=="number",n=typeof e.salaryMax=="number";if(!t||!o&&!n)return null;let r={"@type":"QuantitativeValue"};o&&(r.minValue=e.salaryMin),n&&(r.maxValue=e.salaryMax);let i=e.salaryTimeframe?qo[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 Vo(e){let t=e.officeLocations.map(o=>Yo({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 Yo({countryCode:e,region:t,locality:o,postalCode:n,name:r}){let i={"@type":"PostalAddress"},s=e?.trim(),a=t?.trim(),l=o?.trim(),c=n?.trim(),p=r?.trim();s&&(i.addressCountry=s.toUpperCase()),a&&(i.addressRegion=a),l&&(i.addressLocality=l),c&&(i.postalCode=c);let m=Object.keys(i).length>1;if(!m&&!p)return null;let d={"@type":"Place"};return p&&(d.name=p),m&&(d.address=i),d}function zo(e){if(e.remoteWorldwide)return me.map(n=>({"@type":"Country",name:n}));let t=[],o=new Set;for(let n of e.remoteWorkPermitCountryCodes??[]){let r=n?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}for(let n of e.remoteWorkPermitSubdivisionCodes??[]){let r=n?.split("-")[0]?.trim().toUpperCase();!r||o.has(r)||(o.add(r),t.push({"@type":"Country",name:r}))}return t.length===0?null:t.length===1?t[0]:t}function Wo(e){let t=e.educationRequirements;if(!t||t.length===0)return null;if(t.includes("no_requirements"))return"no requirements";let o=t.filter(n=>n in Dt).map(n=>({"@type":"EducationalOccupationalCredential",credentialCategory:Dt[n]}));return o.length>0?o:null}function Zo(e){let t=e.experienceMonths;return typeof t!="number"?null:t===0?"no requirements":{"@type":"OccupationalExperienceRequirements",monthsOfExperience:t}}function $t(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t.toISOString()}function ue(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=>ue(o)).filter(t);if(e&&typeof e=="object"){let o=Object.entries(e).map(([n,r])=>[n,ue(r)]).filter(([,n])=>t(n));return Object.fromEntries(o)}return e}var ye={};A(ye,{BOARD_PATHS:()=>Y,blogAuthorPath:()=>rn,blogPostPath:()=>Vt,blogTagPath:()=>Yt,boardUrl:()=>z,companyMarketPath:()=>Kt,companyPath:()=>Ht,companySalaryPath:()=>en,encodePathSegment:()=>h,goAlertsConfirmPath:()=>cn,goAlertsManagePath:()=>ln,goJobPath:()=>an,jobDetailPath:()=>de,jobsCategoryPath:()=>K,jobsLocationCategoryPath:()=>V,jobsLocationPath:()=>M,jobsLocationSkillPath:()=>Gt,jobsSkillPath:()=>qt,salaryLocationPath:()=>nn,salarySkillPath:()=>on,salaryTitlePath:()=>tn,suggestionPath:()=>Xo,talentProfilePath:()=>sn});function h(e){try{return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":")}catch{return encodeURIComponent(e).replace(/%3A/gi,":")}}function de(e,t){return`/companies/${h(e)}/jobs/${h(t)}`}function K(e){return`/jobs/${h(e)}`}function qt(e){return`/jobs/skills/${h(e)}`}function M(e){return`/jobs/locations/${h(e)}`}function V(e,t){return`${M(e)}/${h(t)}`}function Gt(e,t){return`${M(e)}/skills/${h(t)}`}function Ht(e){return`/companies/${h(e)}`}function Kt(e){return`/companies/markets/${h(e)}`}function Xo(e,t){let o=t.location?.trim()||void 0;return t.scope==="blog"?e.type==="post"?Vt(e.slug):e.type==="tag"?Yt(e.slug):null:t.scope==="jobs"?e.type==="company"||e.type==="market"||e.type==="post"||e.type==="tag"?null:e.termType==="skill"?o?Gt(o,e.canonicalSlug):qt(e.canonicalSlug):o?V(o,e.canonicalSlug):K(e.canonicalSlug):e.type==="company"?Ht(e.slug):e.type==="market"?Kt(e.slug):null}function en(e){return`/companies/${h(e)}/salaries`}function tn(e){return`/salaries/titles/${h(e)}`}function on(e){return`/salaries/skills/${h(e)}`}function nn(e){return`/salaries/locations/${h(e)}`}function Vt(e){return`/blog/${h(e)}`}function Yt(e){return`/blog/tag/${h(e)}`}function rn(e){return`/blog/author/${h(e)}`}function sn(e){return`/p/${h(e)}`}var Y={home:"/",jobs:"/jobs",companies:"/companies",salaries:"/salaries",salaryCompanies:"/salaries/companies",salaryTitles:"/salaries/titles",salarySkills:"/salaries/skills",salaryLocations:"/salaries/locations",blog:"/blog",about:"/about",privacyPolicy:"/privacy-policy",termsOfService:"/terms-of-service",cookiePolicy:"/cookie-policy",impressum:"/impressum",talent:"/talent",employers:"/employers",alertsManage:"/alerts/manage",alertsConfirm:"/alerts/confirm"};function an(e){return`/go/job/${e}`}function ln(){return"/go/alerts-manage"}function cn(){return"/go/alerts-confirm"}function z(e,t){return`${e.replace(/\/+$/,"")}${t}`}function zt(e,t={}){let o=e.map(r=>{let i=r.label?.trim();return i?{name:i,href:r.href?.trim()??null}:null}).filter(r=>!!r);return o.length<2?null:{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:o.map((r,i)=>{let s=r.href?pn(r.href,t.origin??null):null,a={"@type":"ListItem",position:i+1,name:r.name};return s&&(a.item=s),a})}}function pn(e,t){if(un(e))return e;if(!t)return null;let o=e.startsWith("/")?e:`/${e}`;return`${t}${o}`}function un(e){return/^https?:\/\//i.test(e)}function W(e){let t=[{kind:"home",path:Y.home},{kind:"jobs",path:Y.jobs}],o=null;for(let r of e.placeHierarchy)o=r.slug,t.push({kind:"place",name:r.name,path:M(r.slug)});let n=e.categories[0];return n&&t.push({kind:"category",name:n.name,path:o?V(o,n.slug):K(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 mn(e){try{return new Intl.DisplayNames([e],{type:"region"})}catch{return null}}function dn(e){try{return new Intl.Collator(e)}catch{return new Intl.Collator}}function Wt(e){let t=C(e);if(!t)return Z.map(r=>({code:r,name:r})).sort((r,i)=>r.code<i.code?-1:r.code>i.code?1:0);let o=mn(t),n=dn(t).compare;return Z.map(r=>({code:r,name:o?.of(r)??r})).sort((r,i)=>n(r.name,i.name))}function yn(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 fn(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 Zt(e,t,o){let n=[];for(let r of t??[]){let i=o?.[r.key];if(r.type==="boolean"){typeof i=="boolean"&&n.push({key:r.key,label:r.label,kind:"boolean",value:i});continue}if(r.type==="number"){typeof i=="number"&&Number.isFinite(i)&&n.push({key:r.key,label:r.label,kind:"number",value:i});continue}if(r.type==="multi_select"){let a=yn(r,i);a&&n.push({key:r.key,label:r.label,kind:"multi_select",values:a});continue}let s=fn(r,i);s!==null&&n.push({key:r.key,label:r.label,kind:"text",value:s})}return n}var fe=["US","GB","LR","MM"],Xt=1,eo=250;var gn=new Set(fe);function to(e){return typeof e=="string"&&gn.has(e.trim().toUpperCase())}function oo(e){return to(e)?"mi":"km"}function no(e){return to(e)?40:50}function ge(e){return e*1.609344}function he(e){return e/1.609344}function ro(e,t){return t==="mi"?he(e):e}function X(e,t){return t==="mi"?ge(e):e}var hn=[5,10,25,50,100];function io(e){return hn.map(t=>({value:t,unit:e,km:X(t,e)}))}function so(e){let t=e==="mi"?25:50;return{value:t,unit:e,km:X(t,e)}}function ao(e,t,o){return new Intl.NumberFormat(o,{style:"unit",unit:t==="mi"?"mile":"kilometer",unitDisplay:"short",maximumFractionDigits:1}).format(e)}var Se={};A(Se,{ALL_COUNTRY_CODES:()=>me,SENIORITY_ORDER:()=>Q,buildJobBreadcrumbs:()=>W,buildSalaryFaq:()=>Ft,companyCategorySalaryJsonLd:()=>Nt,companySalaryJsonLd:()=>Jt,createAuthorProfileJsonLd:()=>co,createBlogArticleJsonLd:()=>lo,createBreadcrumbJsonLd:()=>zt,createJobPostingJsonLd:()=>Qt,crossAxisSalaryJsonLd:()=>wt,faqJsonLd:()=>kt,formatSalaryStat:()=>q,formatSalaryStatRange:()=>k,itemListJsonLd:()=>H,listingHead:()=>po,listingJsonLd:()=>uo,locationSalaryJsonLd:()=>Mt,normalizeWebsiteUrl:()=>U,skillSalaryJsonLd:()=>Ut,sortBySeniority:()=>It,titleSalaryJsonLd:()=>xt});function lo({post:e,boardName:t,permalink:o,ogImageUrl:n}){let r={"@context":"https://schema.org","@type":"Article",headline:e.title,url:o,mainEntityOfPage:{"@type":"WebPage","@id":o},publisher:{"@type":"Organization",name:t}};e.customExcerpt&&(r.description=e.customExcerpt),e.publishedAt&&(r.datePublished=e.publishedAt);let i=e.coverUrl??n;i&&(r.image=i);let s=e.authors[0];return s&&(r.author={"@type":"Person",name:s.name,...s.websiteUrl?{url:s.websiteUrl}:{}}),r}function co({author:e,canonical:t,description:o,origin:n,posts:r,totalPosts:i}){if(!e.name)return null;let s=o.trim(),a=[ee(e.websiteUrl),ee(e.twitterUrl),ee(e.linkedinUrl),ee(e.githubUrl)].filter(d=>!!d),l=`${t}#profile`,c=r.slice(0,5).map(d=>{let y=bn(n,`/blog/${d.slug}`);return y?{"@type":"Article",headline:d.title,url:y,datePublished:d.publishedAt,author:{"@id":l}}:null}).filter(d=>d!==null),p=i>0?{"@type":"InteractionCounter",interactionType:"https://schema.org/WriteAction",userInteractionCount:i}:void 0,m={"@context":"https://schema.org","@type":"ProfilePage",url:t,mainEntity:{"@type":"Person","@id":l,name:e.name,alternateName:e.slug??void 0,identifier:e.id??void 0,description:s||void 0,image:e.avatarUrl??void 0,sameAs:a.length>0?a:void 0,url:t,mainEntityOfPage:t,agentInteractionStatistic:p}};return c.length>0&&(m.hasPart=c),m}function ee(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 bn(e,t){if(!e||!t)return null;try{return new URL(t,e).toString()}catch{return null}}function po(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 uo(e){let t=[];e.breadcrumbs.length>=2&&t.push({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.breadcrumbs.map((n,r)=>({"@type":"ListItem",position:r+1,name:n.name,...n.path?{item:z(e.origin,n.path)}:{}}))});let o=(e.jobs??[]).filter(n=>n.company!=null&&!!n.company.slug);return o.length>0&&t.push({"@context":"https://schema.org","@type":"ItemList",itemListElement:o.map((n,r)=>({"@type":"ListItem",position:r+1,url:z(e.origin,de(n.company.slug,n.slug))}))}),t}var Ce={};A(Ce,{createSuggestController:()=>On});function Sn(e){return typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError"||e instanceof Error&&e.name==="AbortError"}function Cn(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 mo(e,t){return t.size===0?e.slice():e.filter(o=>!(o.type==="company"&&t.has(o.slug.toLowerCase().normalize("NFC"))))}function On(e,t){let o=t?.minChars??2,n=t?.debounceMs??250,r=t?.limit,i=!1,s={query:"",items:[],status:"idle",error:null},a=[],l=new Set,c=0,p=null,m=null,d=new Set;function y(){for(let u of d)u()}function f(u){s=u,y()}function O(){p!==null&&(globalThis.clearTimeout(p),p=null)}function g(){m&&(m.abort(),m=null)}function R(u){let b=++c;g();let _=new AbortController;m=_;let E={q:u};r!==void 0&&(E.limit=r),e.search.suggest(E,{signal:_.signal}).then(B=>{i||b!==c||(m=null,a=B.items,f({query:s.query,items:mo(a,l),status:"ready",error:null}))}).catch(B=>{i||b!==c||Sn(B)||(m=null,f({query:s.query,items:s.items,status:"error",error:B}))})}return{setQuery(u){if(i)return;let b=u.trim();if(O(),Cn(b)<o){c+=1,g(),a=[],f({query:u,items:[],status:"idle",error:null});return}c+=1,g(),f({query:u,items:s.items,status:"loading",error:null}),p=globalThis.setTimeout(()=>{p=null,!i&&R(b)},n)},setExcludedCompanySlugs(u){i||(l=new Set(u.map(b=>b.trim().toLowerCase().normalize("NFC")).filter(Boolean)),f({query:s.query,items:mo(a,l),status:s.status,error:s.error}))},getState(){return s},subscribe(u){return i?()=>{}:(d.add(u),()=>{d.delete(u)})},dispose(){i||(i=!0,O(),g(),c+=1,d.clear())}}}return So(_n);})();
|
package/dist/filters.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-C_eO-WfM.mjs';
|
|
2
|
+
import './_spec-B2aizgxr.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
|
package/dist/filters.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-SAkNWgAB.js';
|
|
2
|
+
import './_spec-B2aizgxr.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/filters` — the canonical listing-filter vocabulary and URL
|
package/dist/format.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-
|
|
2
|
-
import { C as CustomFieldDefinition } from './board-
|
|
3
|
-
import { C as CustomFieldValues } from './jobs-
|
|
4
|
-
import './_spec-
|
|
1
|
+
export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-nTfIWzRh.mjs';
|
|
2
|
+
import { C as CustomFieldDefinition } from './board-DK4HmSty.mjs';
|
|
3
|
+
import { C as CustomFieldValues } from './jobs-C_eO-WfM.mjs';
|
|
4
|
+
import './_spec-B2aizgxr.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Date display helpers in the board language (required leading parameter,
|
package/dist/format.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-
|
|
2
|
-
import { C as CustomFieldDefinition } from './board-
|
|
3
|
-
import { C as CustomFieldValues } from './jobs-
|
|
4
|
-
import './_spec-
|
|
1
|
+
export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-CtKa2zPe.js';
|
|
2
|
+
import { C as CustomFieldDefinition } from './board-DWeT9Jbl.js';
|
|
3
|
+
import { C as CustomFieldValues } from './jobs-SAkNWgAB.js';
|
|
4
|
+
import './_spec-B2aizgxr.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Date display helpers in the board language (required leading parameter,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { S as Schemas, c as components } from './_spec-
|
|
2
|
-
import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-
|
|
3
|
-
export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-
|
|
4
|
-
import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-
|
|
5
|
-
export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-
|
|
6
|
-
export { B as BoardSeo } from './seo-
|
|
7
|
-
import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-
|
|
8
|
-
export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-
|
|
9
|
-
import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-
|
|
10
|
-
export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-
|
|
1
|
+
import { S as Schemas, c as components } from './_spec-B2aizgxr.mjs';
|
|
2
|
+
import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-Cb3Aoa4c.mjs';
|
|
3
|
+
export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-Cb3Aoa4c.mjs';
|
|
4
|
+
import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-DK4HmSty.mjs';
|
|
5
|
+
export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-DK4HmSty.mjs';
|
|
6
|
+
export { B as BoardSeo } from './seo-DPVud7SH.mjs';
|
|
7
|
+
import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-C_eO-WfM.mjs';
|
|
8
|
+
export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-C_eO-WfM.mjs';
|
|
9
|
+
import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-CYHSnNTZ.mjs';
|
|
10
|
+
export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-CYHSnNTZ.mjs';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
|
|
@@ -202,7 +202,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
202
202
|
* constant because the package is platform-neutral and cannot read
|
|
203
203
|
* package.json at runtime.
|
|
204
204
|
*/
|
|
205
|
-
declare const SDK_VERSION = "4.
|
|
205
|
+
declare const SDK_VERSION = "4.42.0";
|
|
206
206
|
|
|
207
207
|
type SavedJob = Schemas['SavedJob'];
|
|
208
208
|
type SavedJobsListQuery = {
|
|
@@ -942,8 +942,18 @@ type TalentDirectoryQuery = {
|
|
|
942
942
|
/** Comma-separated language names. */
|
|
943
943
|
languages?: string;
|
|
944
944
|
openToRelocate?: 'true' | 'false';
|
|
945
|
-
/**
|
|
945
|
+
/**
|
|
946
|
+
* Place slug: candidates whose home is the place or lies within it.
|
|
947
|
+
* Ignored until the board's talent index carries home places.
|
|
948
|
+
*/
|
|
946
949
|
place?: string;
|
|
950
|
+
/**
|
|
951
|
+
* Widen a city or locality `place` to candidates whose home city or
|
|
952
|
+
* locality is within this many km of it (1–250, decimals allowed). Omit
|
|
953
|
+
* for candidates in the place itself. Ignored for region and country
|
|
954
|
+
* places, and without `place`.
|
|
955
|
+
*/
|
|
956
|
+
radius?: number;
|
|
947
957
|
sort?: 'relevance' | 'newest';
|
|
948
958
|
seniority?: string;
|
|
949
959
|
permitCountry?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { S as Schemas, c as components } from './_spec-
|
|
2
|
-
import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-
|
|
3
|
-
export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-
|
|
4
|
-
import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-
|
|
5
|
-
export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-
|
|
6
|
-
export { B as BoardSeo } from './seo-
|
|
7
|
-
import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-
|
|
8
|
-
export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-
|
|
9
|
-
import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-
|
|
10
|
-
export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-
|
|
1
|
+
import { S as Schemas, c as components } from './_spec-B2aizgxr.js';
|
|
2
|
+
import { F as FetchOptions, S as StorageMode, B as BoardRequest, A as Awaitable, L as Logger, a as BoardClient, b as SearchSuggestQuery } from './search-CVcMFOuJ.js';
|
|
3
|
+
export { c as ACCESS_TOKEN_KEY, d as BOARD_ACCESS_GRANT_KEY, C as CompanySuggestion, e as CustomStorage, M as MarketSuggestion, R as REFRESH_TOKEN_KEY, f as SearchSuggestType, g as SuggestResult, h as SuggestionItem, T as TermSuggestion } from './search-CVcMFOuJ.js';
|
|
4
|
+
import { c as CompaniesListQuery, d as CompanyListEnvelope, e as CompaniesSearchBody, f as CompanyJobsListQuery, g as CompanySimilarQuery, h as CompanyMarketsListQuery, i as SalaryDetailQuery } from './board-DWeT9Jbl.js';
|
|
5
|
+
export { B as BoardCustomEmploymentType, j as BoardFormBuiltinField, k as BoardFormField, l as BoardFormLayout, m as BoardFormLockReason, n as BoardJobFormField, o as BoardProfileFormField, p as BoardRoleSignIn, q as BoardSignInSsoConnection, a as CompanyCategorySalary, r as CompanyMarket, s as CompanyMarketRef, b as CompanySalary, t as CompanySalarySummary, C as CustomFieldDefinition, u as CustomFieldOption, v as CustomFieldType, L as LocationSalaryDetail, w as LocationSkillsIndex, x as LocationTitlesIndex, P as PublicBoard, y as PublicBoardAds, z as PublicBoardAnalytics, A as PublicBoardFeatures, D as PublicBoardJobForm, E as PublicBoardSignIn, F as PublicCompany, G as PublicCompanyDetail, H as PublicCompanyMembership, I as SalaryCompany, J as SalaryLocation, K as SalarySkill, M as SalaryTitle, N as SkillLocationSalary, O as SkillLocationsIndex, S as SkillSalaryDetail, Q as TitleLocationSalary, R as TitleLocationsIndex, T as TitleSalaryDetail } from './board-DWeT9Jbl.js';
|
|
6
|
+
export { B as BoardSeo } from './seo-DgFBQTIK.js';
|
|
7
|
+
import { R as RemoteOption, E as EmploymentType, S as Seniority, a as CustomFieldFilter, O as ObjectReferenceFilter, L as ListEnvelope, b as JobCollectionChoiceQuery, c as JobsListQuery, d as JobCardListEnvelope, e as JobsSearchBody, f as JobCardSearchEnvelope, g as JobsSimilarQuery, h as SearchEnvelope } from './jobs-SAkNWgAB.js';
|
|
8
|
+
export { i as CustomFieldValue, C as CustomFieldValues, j as CustomFilterValue, k as EducationRequirement, l as JobCatalogPagination, m as JobCollectionChoiceList, n as JobCollectionFieldDefinition, o as JobCompany, p as JobCustomEmploymentType, J as JobSort, q as OfficeLocation, r as OffsetPagination, P as PublicJob, s as PublicJobCard, t as RelatedSearch, u as RemotePermit, v as RemoteTimezone, w as ResolvedJobCollectionField, x as StorefrontPagination } from './jobs-SAkNWgAB.js';
|
|
9
|
+
import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-BkACbXY0.js';
|
|
10
|
+
export { B as BlogAuthorEmbed, d as BlogTagEmbed, e as PublicBlogAdjacentPosts, f as PublicBlogAuthor, g as PublicBlogPost, P as PublicBlogPostSummary, h as PublicBlogTag } from './blog-BkACbXY0.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Well-known `<domain>_<snake_reason>` codes the Board API sends, grouped by
|
|
@@ -202,7 +202,7 @@ declare function paginate<Q extends Record<string, unknown>, P extends PageShape
|
|
|
202
202
|
* constant because the package is platform-neutral and cannot read
|
|
203
203
|
* package.json at runtime.
|
|
204
204
|
*/
|
|
205
|
-
declare const SDK_VERSION = "4.
|
|
205
|
+
declare const SDK_VERSION = "4.42.0";
|
|
206
206
|
|
|
207
207
|
type SavedJob = Schemas['SavedJob'];
|
|
208
208
|
type SavedJobsListQuery = {
|
|
@@ -942,8 +942,18 @@ type TalentDirectoryQuery = {
|
|
|
942
942
|
/** Comma-separated language names. */
|
|
943
943
|
languages?: string;
|
|
944
944
|
openToRelocate?: 'true' | 'false';
|
|
945
|
-
/**
|
|
945
|
+
/**
|
|
946
|
+
* Place slug: candidates whose home is the place or lies within it.
|
|
947
|
+
* Ignored until the board's talent index carries home places.
|
|
948
|
+
*/
|
|
946
949
|
place?: string;
|
|
950
|
+
/**
|
|
951
|
+
* Widen a city or locality `place` to candidates whose home city or
|
|
952
|
+
* locality is within this many km of it (1–250, decimals allowed). Omit
|
|
953
|
+
* for candidates in the place itself. Ignored for region and country
|
|
954
|
+
* places, and without `place`.
|
|
955
|
+
*/
|
|
956
|
+
radius?: number;
|
|
947
957
|
sort?: 'relevance' | 'newest';
|
|
948
958
|
seniority?: string;
|
|
949
959
|
permitCountry?: string;
|
package/dist/index.js
CHANGED
package/dist/index.mjs
CHANGED
package/dist/seo-files.d.mts
CHANGED
package/dist/seo-files.d.ts
CHANGED
package/dist/seo.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
3
|
-
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CYHSnNTZ.mjs';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-nTfIWzRh.mjs';
|
|
3
|
+
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-nTfIWzRh.mjs';
|
|
4
|
+
import './_spec-B2aizgxr.mjs';
|
|
5
|
+
import './board-DK4HmSty.mjs';
|
|
6
|
+
import './jobs-C_eO-WfM.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
3
|
-
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BkACbXY0.js';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-CtKa2zPe.js';
|
|
3
|
+
export { A as ALL_COUNTRY_CODES, B as BreadcrumbItemInput, g as FaqItem, J as JobBreadcrumb, h as JsonLdBoard, N as NumberNotation, i as SENIORITY_ORDER, j as SalaryFaqEntry, k as SalaryJsonLdOptions, l as SalaryOccupationListOptions, b as buildJobBreadcrumbs, m as buildSalaryFaq, o as companyCategorySalaryJsonLd, p as companySalaryJsonLd, q as createBreadcrumbJsonLd, r as createJobPostingJsonLd, s as crossAxisSalaryJsonLd, t as faqJsonLd, c as formatSalaryStat, d as formatSalaryStatRange, u as itemListJsonLd, v as locationSalaryJsonLd, n as normalizeWebsiteUrl, w as skillSalaryJsonLd, x as sortBySeniority, y as titleSalaryJsonLd } from './breadcrumbs-CtKa2zPe.js';
|
|
4
|
+
import './_spec-B2aizgxr.js';
|
|
5
|
+
import './board-DWeT9Jbl.js';
|
|
6
|
+
import './jobs-SAkNWgAB.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Blog structured data on the `@cavuno/board` wire types, transcribed from
|
package/dist/server.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-B2aizgxr.mjs';
|
|
3
|
+
import './search-Cb3Aoa4c.mjs';
|
|
4
|
+
import './board-DK4HmSty.mjs';
|
|
5
|
+
import './jobs-C_eO-WfM.mjs';
|
|
6
|
+
import './seo-DPVud7SH.mjs';
|
|
7
|
+
import './blog-CYHSnNTZ.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-B2aizgxr.js';
|
|
3
|
+
import './search-CVcMFOuJ.js';
|
|
4
|
+
import './board-DWeT9Jbl.js';
|
|
5
|
+
import './jobs-SAkNWgAB.js';
|
|
6
|
+
import './seo-DgFBQTIK.js';
|
|
7
|
+
import './blog-BkACbXY0.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-B2aizgxr.mjs';
|
|
3
|
+
import './search-Cb3Aoa4c.mjs';
|
|
4
|
+
import './board-DK4HmSty.mjs';
|
|
5
|
+
import './jobs-C_eO-WfM.mjs';
|
|
6
|
+
import './seo-DPVud7SH.mjs';
|
|
7
|
+
import './blog-CYHSnNTZ.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-B2aizgxr.js';
|
|
3
|
+
import './search-CVcMFOuJ.js';
|
|
4
|
+
import './board-DWeT9Jbl.js';
|
|
5
|
+
import './jobs-SAkNWgAB.js';
|
|
6
|
+
import './seo-DgFBQTIK.js';
|
|
7
|
+
import './blog-BkACbXY0.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/suggest.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-Cb3Aoa4c.mjs';
|
|
2
|
+
import './_spec-B2aizgxr.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/suggest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-CVcMFOuJ.js';
|
|
2
|
+
import './_spec-B2aizgxr.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/package.json
CHANGED
|
@@ -13,9 +13,11 @@ The host app owns authoring, feeds, sitemaps, and OG-image routes.
|
|
|
13
13
|
## Build archives
|
|
14
14
|
|
|
15
15
|
`blog.posts.list` returns `ListEnvelope<PublicBlogPostSummary>`. Its query
|
|
16
|
-
accepts `limit` (1–100), `cursor`, `tagSlug`, `authorSlug`,
|
|
17
|
-
`featured: 'true'
|
|
18
|
-
|
|
16
|
+
accepts `limit` (1–100), `cursor`, `tagSlug`, `authorSlug`,
|
|
17
|
+
`featured: 'true'`, and `sort` (`'newest'` default, or `'featured'` for
|
|
18
|
+
featured posts first, then the rest, as one list). `featured` is the string
|
|
19
|
+
literal. Blog lists use cursor pagination and expose neither `offset` nor total
|
|
20
|
+
`count`; a cursor only continues the list it came from.
|
|
19
21
|
|
|
20
22
|
```ts snippet
|
|
21
23
|
const page = await board.blog.posts.list({ tagSlug: 'news', limit: 12 });
|
|
@@ -109,6 +111,8 @@ Finish only after every applicable check passes:
|
|
|
109
111
|
`html`.
|
|
110
112
|
- A retrieved old slug redirects to `newSlug` before rendering.
|
|
111
113
|
- Featured archives send the exact string `featured: 'true'`.
|
|
114
|
+
- Archives that put featured posts on top use `sort: 'featured'`, not a
|
|
115
|
+
separate featured call merged in front of page one.
|
|
112
116
|
- Cursor paging reaches `nextCursor: null` without relying on count or offset.
|
|
113
117
|
- Newest and oldest posts handle the null side of `adjacent`.
|
|
114
118
|
|
package/skills/manifest.json
CHANGED