@cavuno/board 4.60.0 → 4.62.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 (68) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/{_spec-DtsIUScQ.d.mts → _spec-BCwCDDX2.d.mts} +81 -0
  3. package/dist/{_spec-DtsIUScQ.d.ts → _spec-BCwCDDX2.d.ts} +81 -0
  4. package/dist/bin.mjs +12 -5
  5. package/dist/{blog-VKligt-6.d.ts → blog-BQ869KiE.d.ts} +1 -1
  6. package/dist/{blog-BKnmvibN.d.mts → blog-C0wl_hx8.d.mts} +1 -1
  7. package/dist/{board-CWx0nu39.d.mts → board-D2ImSfzo.d.mts} +2 -2
  8. package/dist/{board-QuwKsDOt.d.ts → board-D5x6dfUk.d.ts} +2 -2
  9. package/dist/{breadcrumbs-8k7a572J.d.ts → breadcrumbs-CkIH_iCI.d.ts} +2 -2
  10. package/dist/{breadcrumbs-BEnF2UAW.d.mts → breadcrumbs-DqkhouJc.d.mts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/{chunk-R3QB3WM6.mjs → chunk-4KMZZR3A.mjs} +1 -1
  13. package/dist/{chunk-M4CX64RC.mjs → chunk-GRQRZRLO.mjs} +8 -1
  14. package/dist/{chunk-LO7D3AIX.mjs → chunk-HHMY3W7T.mjs} +7 -4
  15. package/dist/{chunk-MSY7ERBY.mjs → chunk-RAE63XH5.mjs} +3 -1
  16. package/dist/doctor.js +12 -5
  17. package/dist/doctor.mjs +12 -5
  18. package/dist/filters.d.mts +2 -2
  19. package/dist/filters.d.ts +2 -2
  20. package/dist/format.d.mts +4 -4
  21. package/dist/format.d.ts +4 -4
  22. package/dist/format.js +3 -1
  23. package/dist/format.mjs +2 -2
  24. package/dist/go.js +3 -1
  25. package/dist/go.mjs +1 -1
  26. package/dist/index.d.mts +191 -14
  27. package/dist/index.d.ts +191 -14
  28. package/dist/index.js +169 -3
  29. package/dist/index.mjs +162 -3
  30. package/dist/{jobs-D-vpMQ6a.d.mts → jobs-B86GBnD5.d.mts} +1 -1
  31. package/dist/{jobs-wc4h0pSV.d.ts → jobs-Bjb0KdER.d.ts} +1 -1
  32. package/dist/paths.d.mts +2 -0
  33. package/dist/paths.d.ts +2 -0
  34. package/dist/paths.js +3 -1
  35. package/dist/paths.mjs +1 -1
  36. package/dist/{roles-B_d0igKI.d.mts → roles-D745cT5b.d.mts} +3 -1
  37. package/dist/{roles-B_d0igKI.d.ts → roles-D745cT5b.d.ts} +3 -1
  38. package/dist/route-contract.d.mts +2 -2
  39. package/dist/route-contract.d.ts +2 -2
  40. package/dist/route-contract.js +9 -4
  41. package/dist/route-contract.mjs +2 -2
  42. package/dist/{search-Cgel3YbJ.d.ts → search-CQHlSXMC.d.ts} +1 -1
  43. package/dist/{search-B4fsEVF8.d.mts → search-PLWHFWyZ.d.mts} +1 -1
  44. package/dist/{seo-BGyEzgAX.d.ts → seo-C8JYKw0_.d.ts} +1 -1
  45. package/dist/{seo-BgMmH3QS.d.mts → seo-cXaJTDHD.d.mts} +1 -1
  46. package/dist/seo-files.d.mts +2 -2
  47. package/dist/seo-files.d.ts +2 -2
  48. package/dist/seo.d.mts +6 -6
  49. package/dist/seo.d.ts +6 -6
  50. package/dist/seo.js +3 -1
  51. package/dist/seo.mjs +2 -2
  52. package/dist/server.d.mts +6 -6
  53. package/dist/server.d.ts +6 -6
  54. package/dist/server.mjs +1 -1
  55. package/dist/sitemap.d.mts +6 -6
  56. package/dist/sitemap.d.ts +6 -6
  57. package/dist/sitemap.js +3 -1
  58. package/dist/sitemap.mjs +2 -2
  59. package/dist/suggest.d.mts +2 -2
  60. package/dist/suggest.d.ts +2 -2
  61. package/dist/well-known.d.mts +1 -1
  62. package/dist/well-known.d.ts +1 -1
  63. package/dist/well-known.js +9 -4
  64. package/dist/well-known.mjs +2 -2
  65. package/package.json +1 -1
  66. package/skills/cavuno-board-job-alerts/SKILL.md +31 -0
  67. package/skills/cavuno-board-products/SKILL.md +27 -1
  68. package/skills/manifest.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,44 @@
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.62.0 — 2026-11-04
7
+
8
+ - Tip jar. `board.tipJar.get` reads the board's tip page settings,
9
+ `board.tipJar.checkout` starts a tip with an embedded Stripe Checkout, and
10
+ `board.tipJar.getCheckout` reads the tip back after Stripe returns the
11
+ tipper. New exported types: `TipJar`, `TipJarCheckout`,
12
+ `TipJarCheckoutBody` and `TipJarCheckoutStatus`.
13
+ - `BOARD_PATHS.tip` (`/tip`) and the `tip` route role. A board without a tip
14
+ jar may leave the page unpublished.
15
+ - New error codes: `tip_jar_not_found`, `tip_checkout_not_found`,
16
+ `tip_amount_below_minimum`, `tip_amount_invalid`, `tip_note_not_allowed`
17
+ and `tip_note_too_long`.
18
+ - New operator operations and events: plan purpose `tip_jar` with a `tipJar`
19
+ object on the plans operations, `listPlanTips`, and the `tip.received` and
20
+ `tip.refunded` webhooks.
21
+
22
+ ## 4.61.0 — 2026-11-04
23
+
24
+ - `board.context()` carries `verification.experience` and
25
+ `verification.education`: whether workers can get those profile items
26
+ verified on the board.
27
+ - Email-domain verification of profile items:
28
+ `board.me.profile.submitEmailDomainVerification` emails a code and a link
29
+ to an address at the item's domain, and
30
+ `board.me.profile.confirmEmailDomainVerification` (code) or
31
+ `board.auth.verifyItemEmail` (link token) confirms it. New exported types:
32
+ `ItemEmailDomainVerification`, `SubmitItemEmailDomainVerificationBody`,
33
+ `ConfirmItemEmailDomainVerificationBody` and
34
+ `ConfirmItemEmailDomainVerificationLinkBody`.
35
+ - `board.me.profile.listVerifications` and
36
+ `board.me.companies.listVerifications` no longer list items whose type the
37
+ board has switched verification off for.
38
+ - Job alert digests on your own site: `board.jobAlerts.recordClick` records a
39
+ visitor opening a job from a digest email, using the params
40
+ `parseJobAlertClickParams(url)` reads from the job link. Spread
41
+ `parseJobAlertUnsubscribeParams(url)` into `board.jobAlerts.unsubscribe` to
42
+ record which digest the subscriber unsubscribed from.
43
+
6
44
  ## 4.60.0 — 2026-11-03
7
45
 
8
46
  - Profile item verification. `board.me.profile.listVerifications` and
@@ -2808,6 +2808,13 @@ interface components {
2808
2808
  /** @description Whether posting a job on this board requires an active membership. When `true`, render the join gate in place of the anonymous post form: the platform rejects a create from a company with no contributing assignment (`membership_required`). Absent board config defaults to `false`. This flag is board policy and is safe to read anonymously; a signed-in employer's own standing rides their company billing options. */
2809
2809
  requiresMembership: boolean;
2810
2810
  };
2811
+ /** @description Whether profile item verification is switched on for the built-in experience and education items. */
2812
+ verification: {
2813
+ /** @description Whether workers can get the experience entries on their profile verified on this board. When `false`, hide verification controls for experience items. Absent board config defaults to `false`. */
2814
+ experience: boolean;
2815
+ /** @description Whether workers can get the education entries on their profile verified on this board. When `false`, hide verification controls for education items. Absent board config defaults to `false`. */
2816
+ education: boolean;
2817
+ };
2811
2818
  /** @description Sign-in options per role: the built-in methods and SSO connections switched on for that role. Render the sign-in page from this instead of hard-coding providers; any other method is refused with `board_auth_method_unavailable`. */
2812
2819
  signIn: {
2813
2820
  candidate: components["schemas"]["BoardRoleSignIn"];
@@ -3108,6 +3115,15 @@ interface components {
3108
3115
  /** @description Configured collection references resolved to current live names, logos, and public record details. Archived collections and records are omitted. */
3109
3116
  resolvedCollectionFields: components["schemas"]["ResolvedJobCollectionField"][];
3110
3117
  };
3118
+ PublicJobAlertClickReceipt: {
3119
+ /** @enum {string} */
3120
+ object: "job_alert_click";
3121
+ /**
3122
+ * @description Always `accepted`. The click is recorded after the response, and only when the alert and the job belong to this board and the visitor is not a crawler, so the response does not reveal either.
3123
+ * @enum {string}
3124
+ */
3125
+ status: "accepted";
3126
+ };
3111
3127
  PublicJobAlertConfirmation: {
3112
3128
  /** @enum {string} */
3113
3129
  object: "job_alert_confirmation";
@@ -4432,6 +4448,71 @@ interface components {
4432
4448
  /** @description Board-language name with source-name fallback. */
4433
4449
  displayName: string;
4434
4450
  };
4451
+ TipJar: {
4452
+ /** @enum {string} */
4453
+ object: "tip_jar";
4454
+ name: string;
4455
+ /** @description Plain-text description. When `descriptionHtml` is set, this is its text. */
4456
+ description: string | null;
4457
+ /** @description Formatted description as sanitized HTML (the same tags as a digital product description). `null` when the board wrote none; show `description` instead. */
4458
+ descriptionHtml: string | null;
4459
+ /** @description Lowercase ISO currency code. */
4460
+ currency: string;
4461
+ /** @description The smallest tip, in minor units: the board's minimum, or Stripe's smallest charge in the currency when none is set. */
4462
+ minimumCents: number;
4463
+ /** @description Three suggested amounts in minor units, smallest first. */
4464
+ suggestedCents: number[];
4465
+ /** @description Whether the tipper may leave a note for the board. */
4466
+ allowNote: boolean;
4467
+ /** @description The longest note, in characters (280). */
4468
+ noteMaxLength: number;
4469
+ /** @description Plain text shown after a tip; `null` when unset. */
4470
+ thankYouMessage: string | null;
4471
+ /** @description Tips so far, when the board shows the number of tips; otherwise `null`. */
4472
+ tipCount: number | null;
4473
+ /** @description The tip page path on the board (its route manifest words). */
4474
+ url: string;
4475
+ };
4476
+ TipJarCheckout: {
4477
+ /** @enum {string} */
4478
+ object: "tip_jar_checkout";
4479
+ /**
4480
+ * @description Mount the embedded Stripe Checkout with the mount kit fields. They are `null` only when the request was discarded (the honeypot was filled).
4481
+ * @enum {string}
4482
+ */
4483
+ status: "open";
4484
+ sessionId: string | null;
4485
+ /** @description The Checkout Session client secret. The session expires after 30 minutes. */
4486
+ clientSecret: string | null;
4487
+ /** @description The board’s connected Stripe account. */
4488
+ stripeAccountId: string | null;
4489
+ /** @description The Stripe publishable key for `loadStripe`. */
4490
+ publishableKey: string | null;
4491
+ };
4492
+ TipJarCheckoutBody: {
4493
+ /** @description The tip in minor units of the tip jar currency: at least `minimumCents`. */
4494
+ amountCents: number;
4495
+ /** @description Optional plain-text note for the board, at most 280 characters (longer is refused with `tip_note_too_long`). Only when `allowNote` is true; leave it out otherwise. */
4496
+ note?: string;
4497
+ /** @description The relative path Stripe returns the tipper to (`session_id` is appended). Defaults to the tip page. */
4498
+ returnPath?: string;
4499
+ /** @description Honeypot. Render it hidden and leave it empty; a filled value is answered like a success and nothing is recorded. */
4500
+ website?: string;
4501
+ };
4502
+ TipJarCheckoutStatus: {
4503
+ /** @enum {string} */
4504
+ object: "tip_jar_checkout_status";
4505
+ /**
4506
+ * @description `processing` until the payment clears (a delayed payment method, or the webhook has not landed yet; poll briefly), then `paid`.
4507
+ * @enum {string}
4508
+ */
4509
+ status: "processing" | "paid";
4510
+ amountCents: number;
4511
+ currency: string;
4512
+ /** @description Where the receipt goes, masked (`m•••@gmail.com`): the session id is in a URL that can be shared. `null` until paid, or when Stripe collected none. */
4513
+ receiptEmail: string | null;
4514
+ thankYouMessage: string | null;
4515
+ };
4435
4516
  TitleLocationSalary: {
4436
4517
  /** @enum {string} */
4437
4518
  object: "title_location_salary";
@@ -2808,6 +2808,13 @@ interface components {
2808
2808
  /** @description Whether posting a job on this board requires an active membership. When `true`, render the join gate in place of the anonymous post form: the platform rejects a create from a company with no contributing assignment (`membership_required`). Absent board config defaults to `false`. This flag is board policy and is safe to read anonymously; a signed-in employer's own standing rides their company billing options. */
2809
2809
  requiresMembership: boolean;
2810
2810
  };
2811
+ /** @description Whether profile item verification is switched on for the built-in experience and education items. */
2812
+ verification: {
2813
+ /** @description Whether workers can get the experience entries on their profile verified on this board. When `false`, hide verification controls for experience items. Absent board config defaults to `false`. */
2814
+ experience: boolean;
2815
+ /** @description Whether workers can get the education entries on their profile verified on this board. When `false`, hide verification controls for education items. Absent board config defaults to `false`. */
2816
+ education: boolean;
2817
+ };
2811
2818
  /** @description Sign-in options per role: the built-in methods and SSO connections switched on for that role. Render the sign-in page from this instead of hard-coding providers; any other method is refused with `board_auth_method_unavailable`. */
2812
2819
  signIn: {
2813
2820
  candidate: components["schemas"]["BoardRoleSignIn"];
@@ -3108,6 +3115,15 @@ interface components {
3108
3115
  /** @description Configured collection references resolved to current live names, logos, and public record details. Archived collections and records are omitted. */
3109
3116
  resolvedCollectionFields: components["schemas"]["ResolvedJobCollectionField"][];
3110
3117
  };
3118
+ PublicJobAlertClickReceipt: {
3119
+ /** @enum {string} */
3120
+ object: "job_alert_click";
3121
+ /**
3122
+ * @description Always `accepted`. The click is recorded after the response, and only when the alert and the job belong to this board and the visitor is not a crawler, so the response does not reveal either.
3123
+ * @enum {string}
3124
+ */
3125
+ status: "accepted";
3126
+ };
3111
3127
  PublicJobAlertConfirmation: {
3112
3128
  /** @enum {string} */
3113
3129
  object: "job_alert_confirmation";
@@ -4432,6 +4448,71 @@ interface components {
4432
4448
  /** @description Board-language name with source-name fallback. */
4433
4449
  displayName: string;
4434
4450
  };
4451
+ TipJar: {
4452
+ /** @enum {string} */
4453
+ object: "tip_jar";
4454
+ name: string;
4455
+ /** @description Plain-text description. When `descriptionHtml` is set, this is its text. */
4456
+ description: string | null;
4457
+ /** @description Formatted description as sanitized HTML (the same tags as a digital product description). `null` when the board wrote none; show `description` instead. */
4458
+ descriptionHtml: string | null;
4459
+ /** @description Lowercase ISO currency code. */
4460
+ currency: string;
4461
+ /** @description The smallest tip, in minor units: the board's minimum, or Stripe's smallest charge in the currency when none is set. */
4462
+ minimumCents: number;
4463
+ /** @description Three suggested amounts in minor units, smallest first. */
4464
+ suggestedCents: number[];
4465
+ /** @description Whether the tipper may leave a note for the board. */
4466
+ allowNote: boolean;
4467
+ /** @description The longest note, in characters (280). */
4468
+ noteMaxLength: number;
4469
+ /** @description Plain text shown after a tip; `null` when unset. */
4470
+ thankYouMessage: string | null;
4471
+ /** @description Tips so far, when the board shows the number of tips; otherwise `null`. */
4472
+ tipCount: number | null;
4473
+ /** @description The tip page path on the board (its route manifest words). */
4474
+ url: string;
4475
+ };
4476
+ TipJarCheckout: {
4477
+ /** @enum {string} */
4478
+ object: "tip_jar_checkout";
4479
+ /**
4480
+ * @description Mount the embedded Stripe Checkout with the mount kit fields. They are `null` only when the request was discarded (the honeypot was filled).
4481
+ * @enum {string}
4482
+ */
4483
+ status: "open";
4484
+ sessionId: string | null;
4485
+ /** @description The Checkout Session client secret. The session expires after 30 minutes. */
4486
+ clientSecret: string | null;
4487
+ /** @description The board’s connected Stripe account. */
4488
+ stripeAccountId: string | null;
4489
+ /** @description The Stripe publishable key for `loadStripe`. */
4490
+ publishableKey: string | null;
4491
+ };
4492
+ TipJarCheckoutBody: {
4493
+ /** @description The tip in minor units of the tip jar currency: at least `minimumCents`. */
4494
+ amountCents: number;
4495
+ /** @description Optional plain-text note for the board, at most 280 characters (longer is refused with `tip_note_too_long`). Only when `allowNote` is true; leave it out otherwise. */
4496
+ note?: string;
4497
+ /** @description The relative path Stripe returns the tipper to (`session_id` is appended). Defaults to the tip page. */
4498
+ returnPath?: string;
4499
+ /** @description Honeypot. Render it hidden and leave it empty; a filled value is answered like a success and nothing is recorded. */
4500
+ website?: string;
4501
+ };
4502
+ TipJarCheckoutStatus: {
4503
+ /** @enum {string} */
4504
+ object: "tip_jar_checkout_status";
4505
+ /**
4506
+ * @description `processing` until the payment clears (a delayed payment method, or the webhook has not landed yet; poll briefly), then `paid`.
4507
+ * @enum {string}
4508
+ */
4509
+ status: "processing" | "paid";
4510
+ amountCents: number;
4511
+ currency: string;
4512
+ /** @description Where the receipt goes, masked (`m•••@gmail.com`): the session id is in a URL that can be shared. `null` until paid, or when Stripe collected none. */
4513
+ receiptEmail: string | null;
4514
+ thankYouMessage: string | null;
4515
+ };
4435
4516
  TitleLocationSalary: {
4436
4517
  /** @enum {string} */
4437
4518
  object: "title_location_salary";
package/dist/bin.mjs CHANGED
@@ -126,7 +126,9 @@ var BOARD_PATHS = {
126
126
  /** The digital product catalogue. */
127
127
  products: "/products",
128
128
  /** A signed-in board user's purchased products. */
129
- mePurchases: "/me/purchases"
129
+ mePurchases: "/me/purchases",
130
+ /** The tip page: visitors tip the board through its tip jar. */
131
+ tip: "/tip"
130
132
  };
131
133
 
132
134
  // src/route-contract/roles.ts
@@ -166,7 +168,8 @@ var ROLE_PARAM_REGISTRY = {
166
168
  alertsManage: [],
167
169
  alertsConfirm: [],
168
170
  products: [],
169
- mePurchases: []
171
+ mePurchases: [],
172
+ tip: []
170
173
  };
171
174
  var ALL_ROLES = Object.keys(
172
175
  ROLE_PARAM_REGISTRY
@@ -210,7 +213,8 @@ var CANONICAL_MANIFEST = {
210
213
  alertsManage: "/alerts/manage",
211
214
  alertsConfirm: "/alerts/confirm",
212
215
  products: BOARD_PATHS.products,
213
- mePurchases: BOARD_PATHS.mePurchases
216
+ mePurchases: BOARD_PATHS.mePurchases,
217
+ tip: BOARD_PATHS.tip
214
218
  }
215
219
  };
216
220
 
@@ -251,7 +255,8 @@ var ROLE_INDEX_PATHS = {
251
255
  product: BOARD_PATHS.products,
252
256
  purchase: BOARD_PATHS.home,
253
257
  products: BOARD_PATHS.products,
254
- mePurchases: BOARD_PATHS.home
258
+ mePurchases: BOARD_PATHS.home,
259
+ tip: BOARD_PATHS.home
255
260
  };
256
261
  function splitSegments(path) {
257
262
  const withoutLeading = path.startsWith("/") ? path.slice(1) : path;
@@ -8769,7 +8774,9 @@ var MAY_BE_UNPUBLISHED = /* @__PURE__ */ new Set([
8769
8774
  "privacyPolicy",
8770
8775
  "termsOfService",
8771
8776
  "cookiePolicy",
8772
- "impressum"
8777
+ "impressum",
8778
+ // A board with no tip jar (or an archived one) has no tip page.
8779
+ "tip"
8773
8780
  ]);
8774
8781
  var GATE_SEGMENTS = /* @__PURE__ */ new Set([
8775
8782
  "password",
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-DtsIUScQ.js';
1
+ import { S as Schemas } from './_spec-BCwCDDX2.js';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-DtsIUScQ.mjs';
1
+ import { S as Schemas } from './_spec-BCwCDDX2.mjs';
2
2
 
3
3
  /** Author shape embedded on posts (no `object` discriminator). */
4
4
  type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-DtsIUScQ.mjs';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-D-vpMQ6a.mjs';
1
+ import { S as Schemas } from './_spec-BCwCDDX2.mjs';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-B86GBnD5.mjs';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { S as Schemas } from './_spec-DtsIUScQ.js';
2
- import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-wc4h0pSV.js';
1
+ import { S as Schemas } from './_spec-BCwCDDX2.js';
2
+ import { L as ListEnvelope, v as RelatedSearch, b as CustomFieldFilter, O as ObjectReferenceFilter, a as JobCapability } from './jobs-Bjb0KdER.js';
3
3
 
4
4
  type PublicCompany = Schemas['CompanyPublic'];
5
5
  /**
@@ -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-QuwKsDOt.js';
2
- import { P as PublicJob } from './jobs-wc4h0pSV.js';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-D5x6dfUk.js';
2
+ import { P as PublicJob } from './jobs-Bjb0KdER.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-CWx0nu39.mjs';
2
- import { P as PublicJob } from './jobs-D-vpMQ6a.mjs';
1
+ import { P as PublicBoard, a as CompanyCategorySalary, b as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './board-D2ImSfzo.mjs';
2
+ import { P as PublicJob } from './jobs-B86GBnD5.mjs';
3
3
 
4
4
  /**
5
5
  * Wire enum for `salaryTimeframe`. Defined here (not re-exported from any