@cavuno/board 4.35.0 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/{_spec-DBpKC6Rv.d.mts → _spec-BcXYrhOP.d.mts} +67 -3
  3. package/dist/{_spec-DBpKC6Rv.d.ts → _spec-BcXYrhOP.d.ts} +67 -3
  4. package/dist/bin.mjs +32 -22
  5. package/dist/{blog-Bk6oHqIR.d.ts → blog-BLLQ5H5M.d.ts} +1 -1
  6. package/dist/{blog-DXCzYj2q.d.mts → blog-PS7AwaF7.d.mts} +1 -1
  7. package/dist/{board-D6yRj3IN.d.mts → board-CK62f0G5.d.mts} +2 -2
  8. package/dist/{board-BpOyLLl_.d.ts → board-CTUrq9MP.d.ts} +2 -2
  9. package/dist/{breadcrumbs-B5qrRrgN.d.ts → breadcrumbs-Adrx69WV.d.ts} +2 -2
  10. package/dist/{breadcrumbs-BnYHHx40.d.mts → breadcrumbs-CwSd7BN1.d.mts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/doctor.d.mts +41 -1
  13. package/dist/doctor.d.ts +41 -1
  14. package/dist/doctor.js +59 -22
  15. package/dist/doctor.mjs +58 -22
  16. package/dist/filters.d.mts +2 -2
  17. package/dist/filters.d.ts +2 -2
  18. package/dist/format.d.mts +57 -5
  19. package/dist/format.d.ts +57 -5
  20. package/dist/format.js +61 -1
  21. package/dist/format.mjs +61 -1
  22. package/dist/index.d.mts +57 -15
  23. package/dist/index.d.ts +57 -15
  24. package/dist/index.js +37 -5
  25. package/dist/index.mjs +37 -5
  26. package/dist/{jobs-Cgh8dwXB.d.mts → jobs--rvR1CgY.d.ts} +7 -3
  27. package/dist/{jobs-DX_wDSzt.d.ts → jobs-Y9kacbM1.d.mts} +7 -3
  28. package/dist/{search-DOmwaBud.d.ts → search-B-YDO3kN.d.ts} +1 -1
  29. package/dist/{search-DsR5-O8E.d.mts → search-Dhy-RqrE.d.mts} +1 -1
  30. package/dist/{seo-DtLE8C9q.d.ts → seo-BiissB7X.d.ts} +1 -1
  31. package/dist/{seo-DbzhNmAY.d.mts → seo-C39S8YTH.d.mts} +1 -1
  32. package/dist/seo-files.d.mts +2 -2
  33. package/dist/seo-files.d.ts +2 -2
  34. package/dist/seo.d.mts +6 -6
  35. package/dist/seo.d.ts +6 -6
  36. package/dist/server.d.mts +6 -6
  37. package/dist/server.d.ts +6 -6
  38. package/dist/sitemap.d.mts +6 -6
  39. package/dist/sitemap.d.ts +6 -6
  40. package/dist/suggest.d.mts +2 -2
  41. package/dist/suggest.d.ts +2 -2
  42. package/package.json +1 -1
  43. package/skills/cavuno-board-companies/SKILL.md +5 -1
  44. package/skills/manifest.json +1 -1
package/dist/doctor.mjs CHANGED
@@ -321,9 +321,16 @@ function truncate(line, max = 120) {
321
321
  const t = line.trim();
322
322
  return t.length > max ? `${t.slice(0, max)}\u2026` : t;
323
323
  }
324
- function checkCookieCodecConformance(projectRoot) {
325
- const srcDir = join2(projectRoot, "src");
326
- if (!existsSync2(srcDir)) {
324
+ function isAppSourcePath(path) {
325
+ if (!path.startsWith("src/")) return false;
326
+ const parts = path.split("/");
327
+ const name = parts.at(-1);
328
+ return parts.slice(1, -1).every(
329
+ (part) => !part.startsWith(".") && part !== "node_modules" && !GENERATED_DIRS.has(part)
330
+ ) && !name.startsWith(".") && SOURCE_EXT2.test(name) && !GENERATED_FILE.test(name);
331
+ }
332
+ function checkCookieSourceText(files, hasSource, unreadable) {
333
+ if (!hasSource) {
327
334
  return [
328
335
  COOKIE(
329
336
  "skip",
@@ -331,33 +338,61 @@ function checkCookieCodecConformance(projectRoot) {
331
338
  )
332
339
  ];
333
340
  }
334
- const files = [];
335
- walkSourceFiles(srcDir, files);
336
341
  const findings = [];
337
- for (const file of files) {
338
- const rel = relative2(projectRoot, file).split("\\").join("/");
339
- let text;
340
- try {
341
- text = readFileSync3(file, "utf8");
342
- } catch {
343
- continue;
344
- }
342
+ for (const { path, text } of files) {
345
343
  if (hasGeneratedBanner(text)) continue;
346
344
  const lines = text.split(/\r?\n/);
347
345
  for (let i = 0; i < lines.length; i += 1) {
348
346
  if (!isOffendingSink(lines, i)) continue;
349
- findings.push(`${rel}:${i + 1} \u2014 ${truncate(lines[i])}`);
347
+ findings.push(`${path}:${i + 1} \u2014 ${truncate(lines[i])}`);
350
348
  }
351
349
  }
352
- if (findings.length === 0) {
353
- return [
354
- COOKIE(
355
- "pass",
356
- "no domain-scoped Set-Cookie or document.cookie writes in app-authored src/ (generated output skipped)"
357
- )
358
- ];
350
+ if (findings.length > 0) {
351
+ return [COOKIE("fail", `${findings.join("; ")}; ${REMEDIATION}`)];
352
+ }
353
+ if (unreadable) {
354
+ return [COOKIE("skip", "one or more source files could not be read")];
355
+ }
356
+ return [
357
+ COOKIE(
358
+ "pass",
359
+ "no domain-scoped Set-Cookie or document.cookie writes in app-authored src/ (generated output skipped)"
360
+ )
361
+ ];
362
+ }
363
+ function checkCookieCodecConformanceFiles(files) {
364
+ const hasSource = files.some((file) => file.path.startsWith("src/"));
365
+ const textFiles = [];
366
+ let unreadable = false;
367
+ for (const file of files) {
368
+ if (!isAppSourcePath(file.path)) continue;
369
+ try {
370
+ textFiles.push({
371
+ path: file.path,
372
+ text: typeof file.contents === "string" ? file.contents : new TextDecoder("utf-8", { fatal: true }).decode(file.contents)
373
+ });
374
+ } catch {
375
+ unreadable = true;
376
+ }
377
+ }
378
+ return checkCookieSourceText(textFiles, hasSource, unreadable);
379
+ }
380
+ function checkCookieCodecConformance(projectRoot) {
381
+ const srcDir = join2(projectRoot, "src");
382
+ if (!existsSync2(srcDir)) return checkCookieSourceText([], false, false);
383
+ const files = [];
384
+ walkSourceFiles(srcDir, files);
385
+ const textFiles = [];
386
+ let unreadable = false;
387
+ for (const file of files) {
388
+ const rel = relative2(projectRoot, file).split("\\").join("/");
389
+ try {
390
+ textFiles.push({ path: rel, text: readFileSync3(file, "utf8") });
391
+ } catch {
392
+ unreadable = true;
393
+ }
359
394
  }
360
- return [COOKIE("fail", `${findings.join("; ")}; ${REMEDIATION}`)];
395
+ return checkCookieSourceText(textFiles, true, unreadable);
361
396
  }
362
397
 
363
398
  // src/doctor/probe.ts
@@ -8810,5 +8845,6 @@ async function runDoctor(options) {
8810
8845
  return { results, summary: summarize(results) };
8811
8846
  }
8812
8847
  export {
8848
+ checkCookieCodecConformanceFiles,
8813
8849
  runDoctor
8814
8850
  };
@@ -1,5 +1,5 @@
1
- import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-Cgh8dwXB.mjs';
2
- import './_spec-DBpKC6Rv.mjs';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs-Y9kacbM1.mjs';
2
+ import './_spec-BcXYrhOP.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-DX_wDSzt.js';
2
- import './_spec-DBpKC6Rv.js';
1
+ import { J as JobSort, E as EmploymentType, R as RemoteOption, S as Seniority } from './jobs--rvR1CgY.js';
2
+ import './_spec-BcXYrhOP.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-BnYHHx40.mjs';
2
- import { C as CustomFieldDefinition } from './board-D6yRj3IN.mjs';
3
- import { C as CustomFieldValues } from './jobs-Cgh8dwXB.mjs';
4
- import './_spec-DBpKC6Rv.mjs';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-CwSd7BN1.mjs';
2
+ import { C as CustomFieldDefinition } from './board-CK62f0G5.mjs';
3
+ import { C as CustomFieldValues } from './jobs-Y9kacbM1.mjs';
4
+ import './_spec-BcXYrhOP.mjs';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
@@ -119,4 +119,56 @@ type CustomFieldDisplayEntry = {
119
119
  };
120
120
  declare function resolveCustomFieldDisplay(language: string, definitions: CustomFieldDefinition[] | undefined, values: CustomFieldValues | undefined): CustomFieldDisplayEntry[];
121
121
 
122
- export { COUNTRY_CODES, type CountryOption, type CustomFieldDisplayEntry, type IsoCountryCode, countryOptions, formatDate, formatMonthYear, formatPublishedRelativeDate, resolveCustomFieldDisplay };
122
+ /**
123
+ * Commute distance helpers for the candidate profile's
124
+ * `commuteRadiusKm` field. The API always speaks kilometres; a profile form
125
+ * shows miles or kilometres by the candidate's home country, prefilled with
126
+ * the market default when the candidate has not chosen a distance.
127
+ */
128
+ /** ISO 3166-1 alpha-2 countries that measure road distance in miles. */
129
+ declare const MILES_COUNTRIES: readonly ["US", "GB", "LR", "MM"];
130
+ type DistanceUnit = 'mi' | 'km';
131
+ /** Smallest commute distance the API accepts, in kilometres. */
132
+ declare const COMMUTE_RADIUS_MIN_KM = 1;
133
+ /** Largest commute distance the API accepts, in kilometres. */
134
+ declare const COMMUTE_RADIUS_MAX_KM = 250;
135
+ /** `mi` for the US, GB, LR and MM; `km` everywhere else, and when unknown. */
136
+ declare function distanceUnitForCountry(countryCode: string | null | undefined): DistanceUnit;
137
+ /**
138
+ * The commute distance used when a candidate has not set one: 25 miles
139
+ * (40 km) in miles markets, 50 km elsewhere.
140
+ */
141
+ declare function defaultCommuteRadiusKm(countryCode: string | null | undefined): number;
142
+ declare function milesToKm(miles: number): number;
143
+ declare function kmToMiles(km: number): number;
144
+ /** Convert a kilometre value to `unit` (no rounding). */
145
+ declare function kmToDistanceUnit(km: number, unit: DistanceUnit): number;
146
+ /** Convert a value in `unit` to kilometres (no rounding). */
147
+ declare function distanceUnitToKm(value: number, unit: DistanceUnit): number;
148
+ /** One job-search radius choice, shown in `unit` and sent to the API as `km`. */
149
+ interface SearchRadiusOption {
150
+ /** The distance in the display unit, e.g. `25`. */
151
+ readonly value: number;
152
+ readonly unit: DistanceUnit;
153
+ /** The same distance in kilometres, for the jobs `radius` parameter. */
154
+ readonly km: number;
155
+ }
156
+ /**
157
+ * The radius choices for widening a city or locality job search, in the
158
+ * place's display unit: 5, 10, 25, 50 and 100 miles or kilometres. Pair with
159
+ * `distanceUnitForCountry(place.countryCode)`.
160
+ */
161
+ declare function searchRadiusOptions(unit: DistanceUnit): SearchRadiusOption[];
162
+ /**
163
+ * The radius a city or locality job search starts at when the visitor has not
164
+ * picked one: the 25 mi preset in miles markets, 50 km elsewhere (the same
165
+ * market default as the commute distance). One of `searchRadiusOptions(unit)`.
166
+ */
167
+ declare function defaultSearchRadius(unit: DistanceUnit): SearchRadiusOption;
168
+ /**
169
+ * A short localized distance label, e.g. `25 mi` or `25 km`. Pass the page
170
+ * locale; defaults to the runtime's.
171
+ */
172
+ declare function formatDistance(value: number, unit: DistanceUnit, locale?: string): string;
173
+
174
+ export { COMMUTE_RADIUS_MAX_KM, COMMUTE_RADIUS_MIN_KM, COUNTRY_CODES, type CountryOption, type CustomFieldDisplayEntry, type DistanceUnit, type IsoCountryCode, MILES_COUNTRIES, type SearchRadiusOption, countryOptions, defaultCommuteRadiusKm, defaultSearchRadius, distanceUnitForCountry, distanceUnitToKm, formatDate, formatDistance, formatMonthYear, formatPublishedRelativeDate, kmToDistanceUnit, kmToMiles, milesToKm, resolveCustomFieldDisplay, searchRadiusOptions };
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-B5qrRrgN.js';
2
- import { C as CustomFieldDefinition } from './board-BpOyLLl_.js';
3
- import { C as CustomFieldValues } from './jobs-DX_wDSzt.js';
4
- import './_spec-DBpKC6Rv.js';
1
+ export { C as CurrencyDisplay, F as FormattedSalaryRange, J as JobBreadcrumb, N as NumberNotation, S as SalaryTimeframeInput, a as SalaryTimeframeValue, b as buildJobBreadcrumbs, f as formatSalaryRange, c as formatSalaryStat, d as formatSalaryStatRange, n as normalizeWebsiteUrl } from './breadcrumbs-Adrx69WV.js';
2
+ import { C as CustomFieldDefinition } from './board-CTUrq9MP.js';
3
+ import { C as CustomFieldValues } from './jobs--rvR1CgY.js';
4
+ import './_spec-BcXYrhOP.js';
5
5
 
6
6
  /**
7
7
  * Date display helpers in the board language (required leading parameter,
@@ -119,4 +119,56 @@ type CustomFieldDisplayEntry = {
119
119
  };
120
120
  declare function resolveCustomFieldDisplay(language: string, definitions: CustomFieldDefinition[] | undefined, values: CustomFieldValues | undefined): CustomFieldDisplayEntry[];
121
121
 
122
- export { COUNTRY_CODES, type CountryOption, type CustomFieldDisplayEntry, type IsoCountryCode, countryOptions, formatDate, formatMonthYear, formatPublishedRelativeDate, resolveCustomFieldDisplay };
122
+ /**
123
+ * Commute distance helpers for the candidate profile's
124
+ * `commuteRadiusKm` field. The API always speaks kilometres; a profile form
125
+ * shows miles or kilometres by the candidate's home country, prefilled with
126
+ * the market default when the candidate has not chosen a distance.
127
+ */
128
+ /** ISO 3166-1 alpha-2 countries that measure road distance in miles. */
129
+ declare const MILES_COUNTRIES: readonly ["US", "GB", "LR", "MM"];
130
+ type DistanceUnit = 'mi' | 'km';
131
+ /** Smallest commute distance the API accepts, in kilometres. */
132
+ declare const COMMUTE_RADIUS_MIN_KM = 1;
133
+ /** Largest commute distance the API accepts, in kilometres. */
134
+ declare const COMMUTE_RADIUS_MAX_KM = 250;
135
+ /** `mi` for the US, GB, LR and MM; `km` everywhere else, and when unknown. */
136
+ declare function distanceUnitForCountry(countryCode: string | null | undefined): DistanceUnit;
137
+ /**
138
+ * The commute distance used when a candidate has not set one: 25 miles
139
+ * (40 km) in miles markets, 50 km elsewhere.
140
+ */
141
+ declare function defaultCommuteRadiusKm(countryCode: string | null | undefined): number;
142
+ declare function milesToKm(miles: number): number;
143
+ declare function kmToMiles(km: number): number;
144
+ /** Convert a kilometre value to `unit` (no rounding). */
145
+ declare function kmToDistanceUnit(km: number, unit: DistanceUnit): number;
146
+ /** Convert a value in `unit` to kilometres (no rounding). */
147
+ declare function distanceUnitToKm(value: number, unit: DistanceUnit): number;
148
+ /** One job-search radius choice, shown in `unit` and sent to the API as `km`. */
149
+ interface SearchRadiusOption {
150
+ /** The distance in the display unit, e.g. `25`. */
151
+ readonly value: number;
152
+ readonly unit: DistanceUnit;
153
+ /** The same distance in kilometres, for the jobs `radius` parameter. */
154
+ readonly km: number;
155
+ }
156
+ /**
157
+ * The radius choices for widening a city or locality job search, in the
158
+ * place's display unit: 5, 10, 25, 50 and 100 miles or kilometres. Pair with
159
+ * `distanceUnitForCountry(place.countryCode)`.
160
+ */
161
+ declare function searchRadiusOptions(unit: DistanceUnit): SearchRadiusOption[];
162
+ /**
163
+ * The radius a city or locality job search starts at when the visitor has not
164
+ * picked one: the 25 mi preset in miles markets, 50 km elsewhere (the same
165
+ * market default as the commute distance). One of `searchRadiusOptions(unit)`.
166
+ */
167
+ declare function defaultSearchRadius(unit: DistanceUnit): SearchRadiusOption;
168
+ /**
169
+ * A short localized distance label, e.g. `25 mi` or `25 km`. Pass the page
170
+ * locale; defaults to the runtime's.
171
+ */
172
+ declare function formatDistance(value: number, unit: DistanceUnit, locale?: string): string;
173
+
174
+ export { COMMUTE_RADIUS_MAX_KM, COMMUTE_RADIUS_MIN_KM, COUNTRY_CODES, type CountryOption, type CustomFieldDisplayEntry, type DistanceUnit, type IsoCountryCode, MILES_COUNTRIES, type SearchRadiusOption, countryOptions, defaultCommuteRadiusKm, defaultSearchRadius, distanceUnitForCountry, distanceUnitToKm, formatDate, formatDistance, formatMonthYear, formatPublishedRelativeDate, kmToDistanceUnit, kmToMiles, milesToKm, resolveCustomFieldDisplay, searchRadiusOptions };
package/dist/format.js CHANGED
@@ -20,17 +20,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/format/index.ts
21
21
  var format_exports = {};
22
22
  __export(format_exports, {
23
+ COMMUTE_RADIUS_MAX_KM: () => COMMUTE_RADIUS_MAX_KM,
24
+ COMMUTE_RADIUS_MIN_KM: () => COMMUTE_RADIUS_MIN_KM,
23
25
  COUNTRY_CODES: () => COUNTRY_CODES,
26
+ MILES_COUNTRIES: () => MILES_COUNTRIES,
24
27
  buildJobBreadcrumbs: () => buildJobBreadcrumbs,
25
28
  countryOptions: () => countryOptions,
29
+ defaultCommuteRadiusKm: () => defaultCommuteRadiusKm,
30
+ defaultSearchRadius: () => defaultSearchRadius,
31
+ distanceUnitForCountry: () => distanceUnitForCountry,
32
+ distanceUnitToKm: () => distanceUnitToKm,
26
33
  formatDate: () => formatDate,
34
+ formatDistance: () => formatDistance,
27
35
  formatMonthYear: () => formatMonthYear,
28
36
  formatPublishedRelativeDate: () => formatPublishedRelativeDate,
29
37
  formatSalaryRange: () => formatSalaryRange,
30
38
  formatSalaryStat: () => formatSalaryStat,
31
39
  formatSalaryStatRange: () => formatSalaryStatRange,
40
+ kmToDistanceUnit: () => kmToDistanceUnit,
41
+ kmToMiles: () => kmToMiles,
42
+ milesToKm: () => milesToKm,
32
43
  normalizeWebsiteUrl: () => normalizeWebsiteUrl,
33
- resolveCustomFieldDisplay: () => resolveCustomFieldDisplay
44
+ resolveCustomFieldDisplay: () => resolveCustomFieldDisplay,
45
+ searchRadiusOptions: () => searchRadiusOptions
34
46
  });
35
47
  module.exports = __toCommonJS(format_exports);
36
48
 
@@ -799,3 +811,51 @@ function resolveCustomFieldDisplay(language, definitions, values) {
799
811
  }
800
812
  return entries;
801
813
  }
814
+
815
+ // src/format/distance.ts
816
+ var MILES_COUNTRIES = ["US", "GB", "LR", "MM"];
817
+ var COMMUTE_RADIUS_MIN_KM = 1;
818
+ var COMMUTE_RADIUS_MAX_KM = 250;
819
+ var KM_PER_MILE = 1.609344;
820
+ var MILES_COUNTRY_SET = new Set(MILES_COUNTRIES);
821
+ function isMilesCountry(countryCode) {
822
+ return typeof countryCode === "string" && MILES_COUNTRY_SET.has(countryCode.trim().toUpperCase());
823
+ }
824
+ function distanceUnitForCountry(countryCode) {
825
+ return isMilesCountry(countryCode) ? "mi" : "km";
826
+ }
827
+ function defaultCommuteRadiusKm(countryCode) {
828
+ return isMilesCountry(countryCode) ? 40 : 50;
829
+ }
830
+ function milesToKm(miles) {
831
+ return miles * KM_PER_MILE;
832
+ }
833
+ function kmToMiles(km) {
834
+ return km / KM_PER_MILE;
835
+ }
836
+ function kmToDistanceUnit(km, unit) {
837
+ return unit === "mi" ? kmToMiles(km) : km;
838
+ }
839
+ function distanceUnitToKm(value, unit) {
840
+ return unit === "mi" ? milesToKm(value) : value;
841
+ }
842
+ var SEARCH_RADIUS_PRESETS = [5, 10, 25, 50, 100];
843
+ function searchRadiusOptions(unit) {
844
+ return SEARCH_RADIUS_PRESETS.map((value) => ({
845
+ value,
846
+ unit,
847
+ km: distanceUnitToKm(value, unit)
848
+ }));
849
+ }
850
+ function defaultSearchRadius(unit) {
851
+ const value = unit === "mi" ? 25 : 50;
852
+ return { value, unit, km: distanceUnitToKm(value, unit) };
853
+ }
854
+ function formatDistance(value, unit, locale) {
855
+ return new Intl.NumberFormat(locale, {
856
+ style: "unit",
857
+ unit: unit === "mi" ? "mile" : "kilometer",
858
+ unitDisplay: "short",
859
+ maximumFractionDigits: 1
860
+ }).format(value);
861
+ }
package/dist/format.mjs CHANGED
@@ -480,16 +480,76 @@ function resolveCustomFieldDisplay(language, definitions, values) {
480
480
  }
481
481
  return entries;
482
482
  }
483
+
484
+ // src/format/distance.ts
485
+ var MILES_COUNTRIES = ["US", "GB", "LR", "MM"];
486
+ var COMMUTE_RADIUS_MIN_KM = 1;
487
+ var COMMUTE_RADIUS_MAX_KM = 250;
488
+ var KM_PER_MILE = 1.609344;
489
+ var MILES_COUNTRY_SET = new Set(MILES_COUNTRIES);
490
+ function isMilesCountry(countryCode) {
491
+ return typeof countryCode === "string" && MILES_COUNTRY_SET.has(countryCode.trim().toUpperCase());
492
+ }
493
+ function distanceUnitForCountry(countryCode) {
494
+ return isMilesCountry(countryCode) ? "mi" : "km";
495
+ }
496
+ function defaultCommuteRadiusKm(countryCode) {
497
+ return isMilesCountry(countryCode) ? 40 : 50;
498
+ }
499
+ function milesToKm(miles) {
500
+ return miles * KM_PER_MILE;
501
+ }
502
+ function kmToMiles(km) {
503
+ return km / KM_PER_MILE;
504
+ }
505
+ function kmToDistanceUnit(km, unit) {
506
+ return unit === "mi" ? kmToMiles(km) : km;
507
+ }
508
+ function distanceUnitToKm(value, unit) {
509
+ return unit === "mi" ? milesToKm(value) : value;
510
+ }
511
+ var SEARCH_RADIUS_PRESETS = [5, 10, 25, 50, 100];
512
+ function searchRadiusOptions(unit) {
513
+ return SEARCH_RADIUS_PRESETS.map((value) => ({
514
+ value,
515
+ unit,
516
+ km: distanceUnitToKm(value, unit)
517
+ }));
518
+ }
519
+ function defaultSearchRadius(unit) {
520
+ const value = unit === "mi" ? 25 : 50;
521
+ return { value, unit, km: distanceUnitToKm(value, unit) };
522
+ }
523
+ function formatDistance(value, unit, locale) {
524
+ return new Intl.NumberFormat(locale, {
525
+ style: "unit",
526
+ unit: unit === "mi" ? "mile" : "kilometer",
527
+ unitDisplay: "short",
528
+ maximumFractionDigits: 1
529
+ }).format(value);
530
+ }
483
531
  export {
532
+ COMMUTE_RADIUS_MAX_KM,
533
+ COMMUTE_RADIUS_MIN_KM,
484
534
  COUNTRY_CODES,
535
+ MILES_COUNTRIES,
485
536
  buildJobBreadcrumbs,
486
537
  countryOptions,
538
+ defaultCommuteRadiusKm,
539
+ defaultSearchRadius,
540
+ distanceUnitForCountry,
541
+ distanceUnitToKm,
487
542
  formatDate,
543
+ formatDistance,
488
544
  formatMonthYear,
489
545
  formatPublishedRelativeDate,
490
546
  formatSalaryRange,
491
547
  formatSalaryStat,
492
548
  formatSalaryStatRange,
549
+ kmToDistanceUnit,
550
+ kmToMiles,
551
+ milesToKm,
493
552
  normalizeWebsiteUrl,
494
- resolveCustomFieldDisplay
553
+ resolveCustomFieldDisplay,
554
+ searchRadiusOptions
495
555
  };
package/dist/index.d.mts CHANGED
@@ -1,13 +1,13 @@
1
- import { S as Schemas, c as components } from './_spec-DBpKC6Rv.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-DsR5-O8E.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-DsR5-O8E.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-D6yRj3IN.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-D6yRj3IN.mjs';
6
- export { B as BoardSeo } from './seo-DbzhNmAY.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-Cgh8dwXB.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-Cgh8dwXB.mjs';
9
- import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-DXCzYj2q.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-DXCzYj2q.mjs';
1
+ import { S as Schemas, c as components } from './_spec-BcXYrhOP.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-Dhy-RqrE.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-Dhy-RqrE.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-CK62f0G5.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-CK62f0G5.mjs';
6
+ export { B as BoardSeo } from './seo-C39S8YTH.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-Y9kacbM1.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-Y9kacbM1.mjs';
9
+ import { a as BlogPostsListQuery, b as BlogSimilarQuery, c as BlogSearchBody } from './blog-PS7AwaF7.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-PS7AwaF7.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.35.0";
205
+ declare const SDK_VERSION = "4.38.0";
206
206
 
207
207
  type SavedJob = Schemas['SavedJob'];
208
208
  type SavedJobsListQuery = {
@@ -532,6 +532,10 @@ type EmployerPipelineQuery = {
532
532
  job: string;
533
533
  /** Filter to a single stage (systemStage key, custom stage id, or `applied`). */
534
534
  stage?: string;
535
+ /** Applicants per page (1–2000, default 2000). */
536
+ limit?: number;
537
+ /** The `nextCursor` of the previous page, to read the next page of applicants. */
538
+ cursor?: string;
535
539
  };
536
540
  /** A reusable billing option (active subscription / pre-purchased bundle slot). */
537
541
  type EmployerBillingOption = Schemas['EmployerBillingOption'];
@@ -855,9 +859,13 @@ type EmbedJobsQuery = {
855
859
  /** Custom employment type keys, ORed with `employmentType`. Up to 10. */
856
860
  customEmploymentType?: string[];
857
861
  seniority?: Seniority[];
858
- /** Place slug for a geo radius search; unresolvable slugs are ignored. */
862
+ /** Place slug: jobs in the place and the places inside it; unresolvable slugs are ignored. */
859
863
  location?: string;
860
- /** Radius in km around `location` (10–250; default 50). */
864
+ /**
865
+ * Widen a city or locality `location` to jobs placed in a city or
866
+ * locality within this many km of it (1–250, decimals allowed). Omit for
867
+ * jobs in the place itself. Ignored for region and country places.
868
+ */
861
869
  radius?: number;
862
870
  };
863
871
 
@@ -868,6 +876,15 @@ type EmbedJobsQuery = {
868
876
  */
869
877
  type BoardAccessGrant = Schemas['BoardAccessGrant'];
870
878
 
879
+ /**
880
+ * A company member invite looked up by token before sign-in
881
+ * (`board.invites.preview()`). `email` and `account` are only set while
882
+ * `status` is `pending`.
883
+ */
884
+ type CompanyMemberInvitePreview = Schemas['CompanyMemberInvitePreview'];
885
+ /** Body for `board.invites.preview`. */
886
+ type PreviewCompanyMemberInviteBody = Schemas['PreviewCompanyMemberInviteBody'];
887
+
871
888
  /**
872
889
  * A board user's marketing-email consent, or `null` when no decision exists.
873
890
  *
@@ -1195,7 +1212,9 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1195
1212
  client: BoardClient;
1196
1213
  /**
1197
1214
  * Board context — identity, brand (`logoUrl` + favicon `icons`), language,
1198
- * features, analytics, and AdSense (`ads.enabled`, `ads.clientId`, and `ads.defaultSlotId`).
1215
+ * features, analytics, and AdSense (`ads.enabled`, `ads.clientId`, `ads.defaultSlotId`, and
1216
+ * `ads.googleConsentMessage`, which says whether EEA/UK/CH visitors get Google's consent
1217
+ * message instead of the board's cookie banner).
1199
1218
  * Per-placement slot ids are not on this resource.
1200
1219
  *
1201
1220
  * @example
@@ -1259,6 +1278,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
1259
1278
  enabled: boolean;
1260
1279
  clientId: string | null;
1261
1280
  defaultSlotId: string | null;
1281
+ googleConsentMessage: boolean;
1262
1282
  };
1263
1283
  customFields: {
1264
1284
  job: components["schemas"]["CustomFieldDefinition"][];
@@ -2043,11 +2063,14 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2043
2063
  handle: string | null;
2044
2064
  headline: string | null;
2045
2065
  location: string | null;
2066
+ locationPlace: components["schemas"]["CandidateLocationPlace"];
2046
2067
  countryCode: string | null;
2047
2068
  profileVisibility: "hidden" | "logged_in_only" | "public";
2048
2069
  jobSearchStatus: "actively_looking" | "open_to_offers" | "not_looking";
2049
2070
  jobSearchStatusVisibleTo: "everyone" | "employers_only";
2050
2071
  openToRelocate: boolean;
2072
+ commuteRadiusKm: number | null;
2073
+ commuteRadiusDefaultKm: number;
2051
2074
  }>;
2052
2075
  update(body: UpdateCandidateProfileBody, query?: Record<string, never>, options?: FetchOptions): Promise<{
2053
2076
  id: string;
@@ -2058,11 +2081,14 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2058
2081
  handle: string | null;
2059
2082
  headline: string | null;
2060
2083
  location: string | null;
2084
+ locationPlace: components["schemas"]["CandidateLocationPlace"];
2061
2085
  countryCode: string | null;
2062
2086
  profileVisibility: "hidden" | "logged_in_only" | "public";
2063
2087
  jobSearchStatus: "actively_looking" | "open_to_offers" | "not_looking";
2064
2088
  jobSearchStatusVisibleTo: "everyone" | "employers_only";
2065
2089
  openToRelocate: boolean;
2090
+ commuteRadiusKm: number | null;
2091
+ commuteRadiusDefaultKm: number;
2066
2092
  }>;
2067
2093
  retrieveCustomFields(options?: FetchOptions): Promise<{
2068
2094
  definitions: components["schemas"]["ProfileCustomFieldDefinition"][];
@@ -2835,6 +2861,8 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2835
2861
  };
2836
2862
  stages: components["schemas"]["EmployerPipelineStage"][];
2837
2863
  applicants: components["schemas"]["EmployerApplicant"][];
2864
+ hasMore: boolean;
2865
+ nextCursor: string | null;
2838
2866
  }>;
2839
2867
  move(slug: string, applicationId: string, body: MoveApplicantStageBody, options?: FetchOptions): Promise<void>;
2840
2868
  bulkMove(slug: string, body: BulkMoveApplicantsBody, options?: FetchOptions): Promise<void>;
@@ -3296,6 +3324,20 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
3296
3324
  }>;
3297
3325
  };
3298
3326
  };
3327
+ invites: {
3328
+ preview(body: PreviewCompanyMemberInviteBody, options?: FetchOptions): Promise<{
3329
+ object: "company_member_invite_preview";
3330
+ status: "pending" | "expired" | "accepted" | "revoked";
3331
+ email: string | null;
3332
+ expiresAt: string;
3333
+ account: "none" | "employer" | "candidate" | null;
3334
+ company: {
3335
+ slug: string;
3336
+ name: string;
3337
+ logoUrl: string | null;
3338
+ };
3339
+ }>;
3340
+ };
3299
3341
  password: {
3300
3342
  verify(password: string, options?: FetchOptions): Promise<BoardAccessGrant>;
3301
3343
  };
@@ -4067,4 +4109,4 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
4067
4109
  };
4068
4110
  type BoardSdk = ReturnType<typeof createBoardClient>;
4069
4111
 
4070
- export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, type ApplyIntent, type AudienceAttribution, type AvailableSignInMethods, Awaitable, BOARD_API_ERROR_CODES, type BindingStorage, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSitemapBucketSummary, type BoardSitemapIndex, type BoardUser, type BuiltInSignInMethod, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type ConvertSourcedCandidateBody, type CreateAlertBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, type LocationResolveInput, type LocationSearchQuery, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthCompletion, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicLocation, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SIGN_IN_REDIRECT_ERROR_CODES, SSO_LINK_PROOF_BINDING_TTL_MS, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type SignInRedirectErrorCode, type SignInRole, type SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type SsoAuthorizationQuery, type SsoAuthorizationUrl, type SsoLinkProofBindingStore, type SsoLinkProofBody, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isSignInMethodUnavailable, isSsoBrowserMismatch, isSsoRequired, isUnauthorized, isValidationError, lastOwnMessageId, paginate, parseOAuthCompletion, resolveApplyAction, resolveApplyDecision, ssoLinkProofBindingStore };
4112
+ export { type AcceptCompanyMemberInviteBody, type AccessCheckoutBody, type AccessCheckoutSession, type AccessCheckoutSessionState, type AccessGrant, type AccessPortalBody, type AccessPortalSession, type AddApplicantNoteBody, type AddSourcedCandidateBody, type Alert, type AlertBody, type Application, type ApplicationsListQuery, type ApplyAction, type ApplyApprovalPlan, type ApplyApprovalReceipt, type ApplyBody, type ApplyDecisionState, type ApplyIntent, type AudienceAttribution, type AvailableSignInMethods, Awaitable, BOARD_API_ERROR_CODES, type BindingStorage, type Block, type BlockStatus, type BlockUserBody, type BlockedUser, BlogPostsListQuery, BlogSearchBody, BlogSimilarQuery, type BoardAccessGrant, BoardApiError, type BoardApiErrorCode, type BoardAuthSession, BoardClient, BoardRequest, type BoardSdk, type BoardSitemapBucketSummary, type BoardSitemapIndex, type BoardUser, type BuiltInSignInMethod, type BulkMoveApplicantsBody, type BulkRejectApplicantsBody, type CandidateAvatar, type CandidateEducation, type CandidateExperience, type CandidateLanguage, type CandidateProfile, type CandidateSkill, type ClaimableCompany, CompaniesListQuery, CompaniesSearchBody, type CompanyBillingPortalBody, type CompanyBillingPortalSession, CompanyJobsListQuery, CompanyListEnvelope, CompanyMarketsListQuery, type CompanyMember, type CompanyMemberInvite, type CompanyMemberInviteAcceptance, type CompanyMemberInvitePreview, type CompanyMembership, CompanySimilarQuery, type ConfirmEmailChangeBody, type ConfirmWorkEmailBody, type ConsumeMagicLinkBody, type Conversation, type ConversationArchive, type ConversationDetail, type ConversationRef, type ConversationsListQuery, type ConvertSourcedCandidateBody, type CreateAlertBody, type CreateApplyApprovalBody, type CreateApplyIntentBody, type CreateBoardClientOptions, type CreateCompanyBody, type CreateCompanyMemberInviteBody, type CreateEducationBody, type CreateEmployerJobBody, type CreateExperienceBody, type CreateJobPostingInput, type CreatePipelineStageBody, type CreateTalentListBody, CustomFieldFilter, type EditMessageBody, type EmbedJobsQuery, type EmployerApplicant, type EmployerBillingOption, type EmployerCheckout, type EmployerCheckoutBody, type EmployerCompany, type EmployerCompanySearchQuery, type EmployerJob, type EmployerJobStat, type EmployerJobStatsPoint, type EmployerJobStatsTimeseriesQuery, type EmployerJobSummary, type EmployerJobsListQuery, type EmployerPipeline, type EmployerPipelineQuery, type EmployerPipelineStage, type EmployerProfileStats, type EmployerProfileViewsPoint, type EmployerProfileViewsTimeseriesQuery, EmploymentType, FetchOptions, type FindExistingConversationQuery, type ForgotPasswordBody, type HandleAvailability, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, JobCardListEnvelope, JobCardSearchEnvelope, JobCollectionChoiceQuery, type JobPostingBillingOptions, type JobPostingBillingVerification, type JobPostingLogoResult, type JobPostingPlan, type JobPostingResult, JobsListQuery, JobsSearchBody, JobsSimilarQuery, ListEnvelope, type LocationResolveInput, type LocationSearchQuery, Logger, type LoginBody, type LogoutBody, type MarketingConsent, type MembershipCheckoutBody, type MembershipCheckoutSession, type MembershipCheckoutSessionState, type Message, type ModerationReport, type MoveApplicantStageBody, type NotificationPreference, type OAuthAuthorizationQuery, type OAuthAuthorizationUrl, type OAuthCompletion, type OAuthExchangeBody, type OAuthProvider, ObjectReferenceFilter, type Paginator, type PaywallOffer, type PaywallOfferListEnvelope, type PlacesListQuery, type Plan, type PlanListEnvelope, type PlansListQuery, type PreviewCompanyMemberInviteBody, type ProfileChoiceList, type ProfileChoiceQuery, type ProfileFieldEntity, type ProfileFieldValues, type ProfileObjectReferenceSelectionWrite, type ProfileObjectReferences, type PublicLocation, type PublicPlace, type PublicProfileFields, type PublicTaxonomyTerm, type ReadReceipt, type RecommendedJob, type RecommendedJobsListQuery, type RecommendedTalent, type RecommendedTalentListQuery, type RedirectResolution, type RefreshBody, type RegisterBody, RemoteOption, type RemotePermitTaxonomyEntry, type ReorderPipelineStagesBody, type ReplaceProfileObjectReferencesBody, type ReplyBody, type ReportBody, type RequestEmailChangeBody, type RequestMagicLinkBody, type ResetPasswordBody, type Resume, type ResumeUploadOptions, SDK_VERSION, SIGN_IN_REDIRECT_ERROR_CODES, SSO_LINK_PROOF_BINDING_TTL_MS, SalaryDetailQuery, type SalesLedPlan, type SalesLedPlanListEnvelope, type SaveJobBody, type SavedJob, type SavedJobsListQuery, SearchEnvelope, SearchSuggestQuery, type SendWorkEmailBody, Seniority, type SignInRedirectErrorCode, type SignInRole, type SitemapEntriesEnvelope, type SitemapEntriesQuery, type SitemapEntry, type SourcedCandidate, type SsoAuthorizationQuery, type SsoAuthorizationUrl, type SsoLinkProofBindingStore, type SsoLinkProofBody, type StartAboutApplicationBody, type StartConversationBody, StorageMode, type TalentAccess, type TalentAccessCheckoutBody, type TalentAccessCheckoutSession, type TalentAccessCheckoutSessionState, type TalentAccessClaim, type TalentAccessClaimBody, type TalentAccessUpgrade, type TalentAccessUpgradeBody, type TalentCandidateAccess, type TalentDirectoryEntry, type TalentDirectoryListEnvelope, type TalentDirectoryQuery, type TalentList, type TalentListFilters, type TalentProfile, type TalentUnlock, type TalentUnlockBody, type TaxonomyGeo, type TaxonomyListQuery, type TaxonomyResolution, type ThreadMessagesQuery, type UnreadCount, type UnsubscribeBody, type UpdateApplicationFactsBody, type UpdateCandidateProfileBody, type UpdateCompanyMemberRoleBody, type UpdateEducationBody, type UpdateEmployerCompanyBody, type UpdateEmployerJobBody, type UpdateExperienceBody, type UpdateLanguagesBody, type UpdateNotificationPreferenceBody, type UpdatePasswordBody, type UpdatePipelineStageBody, type UpdateProfileFieldValuesBody, type UpdateSkillsBody, type UpdateTalentListBody, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isColdRule, isConflict, isForbidden, isFreeEmailWebsiteError, isNotFound, isOwnMessage, isRateLimited, isSafeApplicationUrl, isSignInMethodUnavailable, isSsoBrowserMismatch, isSsoRequired, isUnauthorized, isValidationError, lastOwnMessageId, paginate, parseOAuthCompletion, resolveApplyAction, resolveApplyDecision, ssoLinkProofBindingStore };