@cavuno/board 4.25.0 → 4.27.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 (50) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/dist/{_spec-CEaM1PL9.d.mts → _spec-B_pBNVUd.d.mts} +497 -47
  3. package/dist/{_spec-CEaM1PL9.d.ts → _spec-B_pBNVUd.d.ts} +497 -47
  4. package/dist/bin.mjs +7989 -10
  5. package/dist/{blog-Ba5ErHVO.d.ts → blog-DzGRUsj5.d.ts} +1 -1
  6. package/dist/{blog-lnpzj7Ay.d.mts → blog-fhXRik6k.d.mts} +1 -1
  7. package/dist/{board-BowjJTqF.d.mts → board-DEiEHcpe.d.mts} +25 -4
  8. package/dist/{board-Bm0VOdJ3.d.ts → board-fVAXZ8T5.d.ts} +25 -4
  9. package/dist/{breadcrumbs-CiBoJ3Aq.d.ts → breadcrumbs-DNaaP3xa.d.ts} +2 -2
  10. package/dist/{breadcrumbs-tkJIGz6x.d.mts → breadcrumbs-qE3CD--N.d.mts} +2 -2
  11. package/dist/browser/cavuno-board.global.min.js +1 -1
  12. package/dist/{chunk-DP2ZZZEO.mjs → chunk-DUTQOLOF.mjs} +1 -0
  13. package/dist/doctor.js +7989 -10
  14. package/dist/doctor.mjs +7989 -10
  15. package/dist/filters.d.mts +19 -3
  16. package/dist/filters.d.ts +19 -3
  17. package/dist/filters.js +10 -1
  18. package/dist/filters.mjs +10 -1
  19. package/dist/format.d.mts +4 -4
  20. package/dist/format.d.ts +4 -4
  21. package/dist/index.d.mts +182 -13
  22. package/dist/index.d.ts +182 -13
  23. package/dist/index.js +183 -23
  24. package/dist/index.mjs +183 -24
  25. package/dist/{jobs-FSqG6zA8.d.ts → jobs-BRysn2m0.d.ts} +25 -3
  26. package/dist/{jobs-BbX7BRpH.d.mts → jobs-R-h3A3kl.d.mts} +25 -3
  27. package/dist/{search-BL6adxbK.d.ts → search-BK_zHHNQ.d.ts} +1 -1
  28. package/dist/{search-G3-XEo3f.d.mts → search-BlB690ma.d.mts} +1 -1
  29. package/dist/{seo-DcLmhDtr.d.mts → seo-0mbZ7M_E.d.mts} +1 -1
  30. package/dist/{seo-DU0YYnOj.d.ts → seo-C7gMl6Y7.d.ts} +1 -1
  31. package/dist/seo-files.d.mts +2 -2
  32. package/dist/seo-files.d.ts +2 -2
  33. package/dist/seo.d.mts +6 -6
  34. package/dist/seo.d.ts +6 -6
  35. package/dist/server.d.mts +6 -6
  36. package/dist/server.d.ts +6 -6
  37. package/dist/server.mjs +1 -1
  38. package/dist/sitemap.d.mts +6 -6
  39. package/dist/sitemap.d.ts +6 -6
  40. package/dist/sitemap.mjs +1 -1
  41. package/dist/suggest.d.mts +2 -2
  42. package/dist/suggest.d.ts +2 -2
  43. package/package.json +2 -1
  44. package/skills/cavuno-board-account/SKILL.md +95 -1
  45. package/skills/cavuno-board-collections/SKILL.md +148 -0
  46. package/skills/cavuno-board-companies/SKILL.md +43 -1
  47. package/skills/cavuno-board-filters/SKILL.md +71 -1
  48. package/skills/cavuno-board-paywall/SKILL.md +5 -2
  49. package/skills/cavuno-board-post-a-job/SKILL.md +64 -0
  50. package/skills/manifest.json +11 -4
package/dist/index.mjs CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  isRateLimited,
22
22
  isUnauthorized,
23
23
  isValidationError
24
- } from "./chunk-DP2ZZZEO.mjs";
24
+ } from "./chunk-DUTQOLOF.mjs";
25
25
 
26
26
  // src/query.ts
27
27
  function toSearchParams(query) {
@@ -42,7 +42,7 @@ function toSearchParams(query) {
42
42
  }
43
43
 
44
44
  // src/version.ts
45
- var SDK_VERSION = "4.25.0";
45
+ var SDK_VERSION = "4.27.0";
46
46
 
47
47
  // src/client.ts
48
48
  function isRawBody(body) {
@@ -762,6 +762,13 @@ function jobPostingNamespace(client) {
762
762
  // src/namespaces/jobs.ts
763
763
  function jobsNamespace(client) {
764
764
  return {
765
+ /** List active entries available to a job collection field. Follow nextCursor for more. */
766
+ collectionChoices(fieldKey, query, options) {
767
+ return client.fetch(
768
+ `/job-fields/${encodeURIComponent(fieldKey)}/choices`,
769
+ { ...options, query }
770
+ );
771
+ },
765
772
  /**
766
773
  * List published jobs.
767
774
  *
@@ -795,7 +802,7 @@ function jobsNamespace(client) {
795
802
  * @example
796
803
  * const { data } = await board.jobs.search({
797
804
  * query: 'chef',
798
- * filters: { seniority: ['senior'] },
805
+ * filters: { seniority: ['senior'], categories: ['engineering'] },
799
806
  * });
800
807
  */
801
808
  search(body, query, options) {
@@ -1006,6 +1013,13 @@ function meNamespace(client) {
1006
1013
  * experience / education / skills / languages collections + avatar.
1007
1014
  */
1008
1015
  profile: {
1016
+ /** List selectable records for an owner-editable catalog field, including private fields. */
1017
+ listObjectReferenceChoices(fieldKey, query, options) {
1018
+ return client.fetch(
1019
+ "/me/profile/object-references/choices",
1020
+ { ...options, query: { ...query, fieldKey } }
1021
+ );
1022
+ },
1009
1023
  /**
1010
1024
  * Retrieve my lean candidate profile.
1011
1025
  *
@@ -1033,6 +1047,34 @@ function meNamespace(client) {
1033
1047
  query
1034
1048
  });
1035
1049
  },
1050
+ /** Retrieve my profile custom-field definitions and current values. */
1051
+ retrieveCustomFields(options) {
1052
+ return client.fetch("/me/profile/custom-fields", {
1053
+ ...options
1054
+ });
1055
+ },
1056
+ /** Additively update my editable candidate profile custom fields. */
1057
+ updateCustomFields(body, options) {
1058
+ return client.fetch("/me/profile/custom-fields", {
1059
+ ...options,
1060
+ method: "PATCH",
1061
+ body
1062
+ });
1063
+ },
1064
+ /** Retrieve editable catalog references on my candidate profile. */
1065
+ retrieveObjectReferences(options) {
1066
+ return client.fetch(
1067
+ "/me/profile/object-references",
1068
+ options
1069
+ );
1070
+ },
1071
+ /** Replace editable catalog references on my candidate profile. */
1072
+ updateObjectReferences(body, options) {
1073
+ return client.fetch(
1074
+ "/me/profile/object-references",
1075
+ { ...options, method: "PUT", body }
1076
+ );
1077
+ },
1036
1078
  /**
1037
1079
  * Check whether a handle is available for me on this board (my own
1038
1080
  * current handle counts as available). Advisory — `update` re-checks.
@@ -1186,6 +1228,27 @@ function meNamespace(client) {
1186
1228
  * claiming a company — the same identity can also be a candidate.
1187
1229
  */
1188
1230
  companies: {
1231
+ /** List selectable records for an approved company's owner-editable catalog field. */
1232
+ listObjectReferenceChoices(slug, fieldKey, query, options) {
1233
+ return client.fetch(
1234
+ `/me/companies/${encodeURIComponent(slug)}/object-references/choices`,
1235
+ { ...options, query: { ...query, fieldKey } }
1236
+ );
1237
+ },
1238
+ /** Retrieve editable catalog references for one of my companies. */
1239
+ retrieveObjectReferences(slug, options) {
1240
+ return client.fetch(
1241
+ `/me/companies/${encodeURIComponent(slug)}/object-references`,
1242
+ options
1243
+ );
1244
+ },
1245
+ /** Replace editable catalog references for one of my companies. */
1246
+ updateObjectReferences(slug, body, options) {
1247
+ return client.fetch(
1248
+ `/me/companies/${encodeURIComponent(slug)}/object-references`,
1249
+ { ...options, method: "PUT", body }
1250
+ );
1251
+ },
1189
1252
  /**
1190
1253
  * Search companies on this board to claim.
1191
1254
  *
@@ -1276,6 +1339,20 @@ function meNamespace(client) {
1276
1339
  { ...options, method: "PATCH", body }
1277
1340
  );
1278
1341
  },
1342
+ /** Retrieve profile custom fields for a company I belong to. */
1343
+ retrieveCustomFields(slug, options) {
1344
+ return client.fetch(
1345
+ `/me/companies/${encodeURIComponent(slug)}/custom-fields`,
1346
+ options
1347
+ );
1348
+ },
1349
+ /** Additively update editable custom fields for a company I belong to. */
1350
+ updateCustomFields(slug, body, options) {
1351
+ return client.fetch(
1352
+ `/me/companies/${encodeURIComponent(slug)}/custom-fields`,
1353
+ { ...options, method: "PATCH", body }
1354
+ );
1355
+ },
1279
1356
  /**
1280
1357
  * Delete a company I admin (soft-delete cascade + Forager
1281
1358
  * exclusion). Resolves void on success (204).
@@ -1312,7 +1389,9 @@ function meNamespace(client) {
1312
1389
  */
1313
1390
  updateMemberRole(slug, memberId, body, options) {
1314
1391
  return client.fetch(
1315
- `/me/companies/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`,
1392
+ `/me/companies/${encodeURIComponent(
1393
+ slug
1394
+ )}/members/${encodeURIComponent(memberId)}`,
1316
1395
  { ...options, method: "PATCH", body }
1317
1396
  );
1318
1397
  },
@@ -1325,7 +1404,9 @@ function meNamespace(client) {
1325
1404
  */
1326
1405
  removeMember(slug, memberId, options) {
1327
1406
  return client.fetch(
1328
- `/me/companies/${encodeURIComponent(slug)}/members/${encodeURIComponent(memberId)}`,
1407
+ `/me/companies/${encodeURIComponent(
1408
+ slug
1409
+ )}/members/${encodeURIComponent(memberId)}`,
1329
1410
  { ...options, method: "DELETE" }
1330
1411
  );
1331
1412
  },
@@ -1377,7 +1458,9 @@ function meNamespace(client) {
1377
1458
  */
1378
1459
  retrieveMembershipCheckout(slug, sessionId, options) {
1379
1460
  return client.fetch(
1380
- `/me/companies/${encodeURIComponent(slug)}/membership/checkout/${encodeURIComponent(sessionId)}`,
1461
+ `/me/companies/${encodeURIComponent(
1462
+ slug
1463
+ )}/membership/checkout/${encodeURIComponent(sessionId)}`,
1381
1464
  options
1382
1465
  );
1383
1466
  },
@@ -1417,7 +1500,9 @@ function meNamespace(client) {
1417
1500
  */
1418
1501
  revokeInvite(slug, inviteId, options) {
1419
1502
  return client.fetch(
1420
- `/me/companies/${encodeURIComponent(slug)}/invites/${encodeURIComponent(inviteId)}`,
1503
+ `/me/companies/${encodeURIComponent(
1504
+ slug
1505
+ )}/invites/${encodeURIComponent(inviteId)}`,
1421
1506
  { ...options, method: "DELETE" }
1422
1507
  );
1423
1508
  },
@@ -1499,18 +1584,27 @@ function meNamespace(client) {
1499
1584
  */
1500
1585
  retrieve(slug, id, options) {
1501
1586
  return client.fetch(
1502
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1587
+ `/me/companies/${encodeURIComponent(
1588
+ slug
1589
+ )}/jobs/${encodeURIComponent(id)}`,
1503
1590
  options
1504
1591
  );
1505
1592
  },
1506
1593
  /**
1507
1594
  * Create a job as a held draft. Returns the created job.
1595
+ * `remoteOption` is required. A `salaryMin` or `salaryMax` needs both
1596
+ * `salaryCurrency` and `salaryTimeframe`.
1508
1597
  *
1509
1598
  * @example
1510
1599
  * await board.me.companies.jobs.create('acme', {
1511
1600
  * title: 'Staff Engineer',
1512
1601
  * description: '…',
1513
1602
  * applicationUrl: 'https://acme.com/apply',
1603
+ * remoteOption: 'remote',
1604
+ * remotePermits: [{ type: 'worldwide', value: 'worldwide' }],
1605
+ * salaryMin: 150000,
1606
+ * salaryCurrency: 'USD',
1607
+ * salaryTimeframe: 'per_year',
1514
1608
  * });
1515
1609
  */
1516
1610
  create(slug, body, options) {
@@ -1530,7 +1624,9 @@ function meNamespace(client) {
1530
1624
  */
1531
1625
  update(slug, id, body, options) {
1532
1626
  return client.fetch(
1533
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1627
+ `/me/companies/${encodeURIComponent(
1628
+ slug
1629
+ )}/jobs/${encodeURIComponent(id)}`,
1534
1630
  { ...options, method: "PATCH", body }
1535
1631
  );
1536
1632
  },
@@ -1542,7 +1638,9 @@ function meNamespace(client) {
1542
1638
  */
1543
1639
  delete(slug, id, options) {
1544
1640
  return client.fetch(
1545
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}`,
1641
+ `/me/companies/${encodeURIComponent(
1642
+ slug
1643
+ )}/jobs/${encodeURIComponent(id)}`,
1546
1644
  { ...options, method: "DELETE" }
1547
1645
  );
1548
1646
  },
@@ -1556,7 +1654,9 @@ function meNamespace(client) {
1556
1654
  */
1557
1655
  publish(slug, id, options) {
1558
1656
  return client.fetch(
1559
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/publish`,
1657
+ `/me/companies/${encodeURIComponent(
1658
+ slug
1659
+ )}/jobs/${encodeURIComponent(id)}/publish`,
1560
1660
  { ...options, method: "POST" }
1561
1661
  );
1562
1662
  },
@@ -1569,7 +1669,9 @@ function meNamespace(client) {
1569
1669
  */
1570
1670
  unpublish(slug, id, options) {
1571
1671
  return client.fetch(
1572
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/unpublish`,
1672
+ `/me/companies/${encodeURIComponent(
1673
+ slug
1674
+ )}/jobs/${encodeURIComponent(id)}/unpublish`,
1573
1675
  { ...options, method: "POST" }
1574
1676
  );
1575
1677
  },
@@ -1588,7 +1690,9 @@ function meNamespace(client) {
1588
1690
  */
1589
1691
  checkout(slug, id, body, options) {
1590
1692
  return client.fetch(
1591
- `/me/companies/${encodeURIComponent(slug)}/jobs/${encodeURIComponent(id)}/checkout`,
1693
+ `/me/companies/${encodeURIComponent(
1694
+ slug
1695
+ )}/jobs/${encodeURIComponent(id)}/checkout`,
1592
1696
  { ...options, method: "POST", body }
1593
1697
  );
1594
1698
  }
@@ -1710,7 +1814,9 @@ function meNamespace(client) {
1710
1814
  */
1711
1815
  timeseries(slug, query, options) {
1712
1816
  return client.fetch(
1713
- `/me/companies/${encodeURIComponent(slug)}/profile-stats/timeseries`,
1817
+ `/me/companies/${encodeURIComponent(
1818
+ slug
1819
+ )}/profile-stats/timeseries`,
1714
1820
  { ...options, query }
1715
1821
  );
1716
1822
  }
@@ -1786,14 +1892,18 @@ function meNamespace(client) {
1786
1892
  */
1787
1893
  update(slug, listId, body, options) {
1788
1894
  return client.fetch(
1789
- `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1895
+ `/me/companies/${encodeURIComponent(
1896
+ slug
1897
+ )}/talent-lists/${encodeURIComponent(listId)}`,
1790
1898
  { ...options, method: "PATCH", body }
1791
1899
  );
1792
1900
  },
1793
1901
  /** Delete a talent list. Sourced membership is unaffected. */
1794
1902
  remove(slug, listId, options) {
1795
1903
  return client.fetch(
1796
- `/me/companies/${encodeURIComponent(slug)}/talent-lists/${encodeURIComponent(listId)}`,
1904
+ `/me/companies/${encodeURIComponent(
1905
+ slug
1906
+ )}/talent-lists/${encodeURIComponent(listId)}`,
1797
1907
  { ...options, method: "DELETE" }
1798
1908
  );
1799
1909
  }
@@ -1841,7 +1951,9 @@ function meNamespace(client) {
1841
1951
  /** Remove a sourced membership. Does not touch pipeline applications. */
1842
1952
  remove(slug, sourcedId, options) {
1843
1953
  return client.fetch(
1844
- `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
1954
+ `/me/companies/${encodeURIComponent(
1955
+ slug
1956
+ )}/sourced-candidates/${encodeURIComponent(sourcedId)}`,
1845
1957
  { ...options, method: "DELETE" }
1846
1958
  );
1847
1959
  },
@@ -1861,7 +1973,9 @@ function meNamespace(client) {
1861
1973
  */
1862
1974
  convert(slug, sourcedId, body, options) {
1863
1975
  return client.fetch(
1864
- `/me/companies/${encodeURIComponent(slug)}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
1976
+ `/me/companies/${encodeURIComponent(
1977
+ slug
1978
+ )}/sourced-candidates/${encodeURIComponent(sourcedId)}/convert`,
1865
1979
  { ...options, method: "POST", body }
1866
1980
  );
1867
1981
  }
@@ -1901,7 +2015,9 @@ function meNamespace(client) {
1901
2015
  */
1902
2016
  move(slug, applicationId, body, options) {
1903
2017
  return client.fetch(
1904
- `/me/companies/${encodeURIComponent(slug)}/applicants/${encodeURIComponent(applicationId)}/stage`,
2018
+ `/me/companies/${encodeURIComponent(
2019
+ slug
2020
+ )}/applicants/${encodeURIComponent(applicationId)}/stage`,
1905
2021
  { ...options, method: "PATCH", body }
1906
2022
  );
1907
2023
  },
@@ -1946,7 +2062,9 @@ function meNamespace(client) {
1946
2062
  */
1947
2063
  addNote(slug, applicationId, body, options) {
1948
2064
  return client.fetch(
1949
- `/me/companies/${encodeURIComponent(slug)}/applicants/${encodeURIComponent(applicationId)}/notes`,
2065
+ `/me/companies/${encodeURIComponent(
2066
+ slug
2067
+ )}/applicants/${encodeURIComponent(applicationId)}/notes`,
1950
2068
  { ...options, method: "POST", body }
1951
2069
  );
1952
2070
  }
@@ -1983,7 +2101,9 @@ function meNamespace(client) {
1983
2101
  */
1984
2102
  update(slug, stageId, body, options) {
1985
2103
  return client.fetch(
1986
- `/me/companies/${encodeURIComponent(slug)}/pipeline-stages/${encodeURIComponent(stageId)}`,
2104
+ `/me/companies/${encodeURIComponent(
2105
+ slug
2106
+ )}/pipeline-stages/${encodeURIComponent(stageId)}`,
1987
2107
  { ...options, method: "PATCH", body }
1988
2108
  );
1989
2109
  },
@@ -1996,7 +2116,9 @@ function meNamespace(client) {
1996
2116
  */
1997
2117
  remove(slug, stageId, options) {
1998
2118
  return client.fetch(
1999
- `/me/companies/${encodeURIComponent(slug)}/pipeline-stages/${encodeURIComponent(stageId)}`,
2119
+ `/me/companies/${encodeURIComponent(
2120
+ slug
2121
+ )}/pipeline-stages/${encodeURIComponent(stageId)}`,
2000
2122
  { ...options, method: "DELETE" }
2001
2123
  );
2002
2124
  },
@@ -2074,6 +2196,14 @@ function meNamespace(client) {
2074
2196
  { ...options, method: "POST", body }
2075
2197
  );
2076
2198
  },
2199
+ /** Claim a public free `talent_access` plan without Stripe checkout. */
2200
+ claim(body, options) {
2201
+ return client.fetch("/me/talent-access/claim", {
2202
+ ...options,
2203
+ method: "POST",
2204
+ body
2205
+ });
2206
+ },
2077
2207
  /**
2078
2208
  * Poll a talent-access checkout session: `open` (re-mountable via
2079
2209
  * `clientSecret`), `complete`, or `expired`. The session must be
@@ -2658,8 +2788,11 @@ function meNamespace(client) {
2658
2788
  * profile.
2659
2789
  *
2660
2790
  * @example
2791
+ * const { data: offers } = await board.paywall.offers();
2792
+ * const selectedOffer = offers[0]; // Or the offer selected in your UI.
2793
+ * if (!selectedOffer) throw new Error('No access offers available');
2661
2794
  * const kit = await board.me.access.checkout({
2662
- * offerKey: 'monthly',
2795
+ * offerKey: selectedOffer.offerKey,
2663
2796
  * returnPath: '/account/access',
2664
2797
  * colorMode: 'light',
2665
2798
  * });
@@ -2801,6 +2934,26 @@ function plansNamespace(client) {
2801
2934
  };
2802
2935
  }
2803
2936
 
2937
+ // src/namespaces/profile-fields.ts
2938
+ function profileFieldsNamespace(client) {
2939
+ return {
2940
+ /** Discover public scalar and catalog field definitions for a profile type. */
2941
+ retrieve(entity, options) {
2942
+ return client.fetch(
2943
+ `/profile-fields/${encodeURIComponent(entity)}`,
2944
+ options
2945
+ );
2946
+ },
2947
+ /** Discover active choices for a public catalog field; follow nextCursor for more. */
2948
+ choices(entity, fieldKey, query, options) {
2949
+ return client.fetch(
2950
+ `/profile-fields/${encodeURIComponent(entity)}/${encodeURIComponent(fieldKey)}/choices`,
2951
+ { ...options, query }
2952
+ );
2953
+ }
2954
+ };
2955
+ }
2956
+
2804
2957
  // src/namespaces/redirects.ts
2805
2958
  function redirectsNamespace(client) {
2806
2959
  return {
@@ -2978,9 +3131,14 @@ function talentNamespace(client) {
2978
3131
  * const { data } = await board.talent.list({ skill: 'react', limit: 20 });
2979
3132
  */
2980
3133
  list(query, options) {
3134
+ const serializedQuery = query ? {
3135
+ ...query,
3136
+ customFields: query.customFields ? JSON.stringify(query.customFields) : void 0,
3137
+ objectReferences: query.objectReferences ? JSON.stringify(query.objectReferences) : void 0
3138
+ } : void 0;
2981
3139
  return client.fetch("/talent", {
2982
3140
  ...options,
2983
- query
3141
+ query: serializedQuery
2984
3142
  });
2985
3143
  },
2986
3144
  /**
@@ -3165,6 +3323,7 @@ function createBoardClient(options) {
3165
3323
  jobPosting: jobPostingNamespace(client),
3166
3324
  salaries: salariesNamespace(client),
3167
3325
  talent: talentNamespace(client),
3326
+ profileFields: profileFieldsNamespace(client),
3168
3327
  plans: plansNamespace(client),
3169
3328
  paywall: paywallNamespace(client),
3170
3329
  sitemap: sitemapNamespace(client)
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.js';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.js';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -32,6 +32,14 @@ type SearchEnvelope<T> = OffsetPagination & {
32
32
  data: T[];
33
33
  };
34
34
 
35
+ type JobCollectionChoiceList = Schemas['JobCollectionChoiceList'];
36
+ type JobCollectionFieldDefinition = Schemas['JobCollectionFieldDefinition'];
37
+ type ResolvedJobCollectionField = Schemas['ResolvedJobCollectionField'];
38
+ type JobCollectionChoiceQuery = {
39
+ search?: string;
40
+ cursor?: string;
41
+ limit?: number;
42
+ };
35
43
  type PublicJob = Schemas['PublicJob'];
36
44
  type PublicJobCard = Schemas['PublicJobCard'];
37
45
  /**
@@ -102,6 +110,20 @@ type JobsSimilarQuery = {
102
110
  /** How many similar jobs to return (1–20; default 5). */
103
111
  limit?: number;
104
112
  };
105
- type JobsSearchBody = Schemas['PublicSearchJobsBody'];
113
+ type CustomFilterValue = string | number | boolean;
114
+ type CustomFieldFilter = {
115
+ key: string;
116
+ values: CustomFilterValue[];
117
+ };
118
+ type ObjectReferenceFilter = {
119
+ key: string;
120
+ recordIds: string[];
121
+ };
122
+ type GeneratedJobsSearchBody = Schemas['PublicSearchJobsBody'];
123
+ type JobsSearchBody = Omit<GeneratedJobsSearchBody, 'filters'> & {
124
+ filters?: NonNullable<GeneratedJobsSearchBody['filters']> & {
125
+ customFields?: CustomFieldFilter[];
126
+ };
127
+ };
106
128
 
107
- export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, OfficeLocation as O, PublicJob as P, RemoteOption as R, Seniority as S, JobsListQuery as a, JobCardListEnvelope as b, JobsSearchBody as c, JobCardSearchEnvelope as d, JobsSimilarQuery as e, SearchEnvelope as f, CustomFieldValue as g, EducationRequirement as h, JobCatalogPagination as i, JobCompany as j, OffsetPagination as k, PublicJobCard as l, RelatedSearch as m, RemotePermit as n, RemoteTimezone as o, StorefrontPagination as p };
129
+ export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.mjs';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.mjs';
2
2
 
3
3
  /**
4
4
  * Optional pagination metadata returned by Board API list operations.
@@ -32,6 +32,14 @@ type SearchEnvelope<T> = OffsetPagination & {
32
32
  data: T[];
33
33
  };
34
34
 
35
+ type JobCollectionChoiceList = Schemas['JobCollectionChoiceList'];
36
+ type JobCollectionFieldDefinition = Schemas['JobCollectionFieldDefinition'];
37
+ type ResolvedJobCollectionField = Schemas['ResolvedJobCollectionField'];
38
+ type JobCollectionChoiceQuery = {
39
+ search?: string;
40
+ cursor?: string;
41
+ limit?: number;
42
+ };
35
43
  type PublicJob = Schemas['PublicJob'];
36
44
  type PublicJobCard = Schemas['PublicJobCard'];
37
45
  /**
@@ -102,6 +110,20 @@ type JobsSimilarQuery = {
102
110
  /** How many similar jobs to return (1–20; default 5). */
103
111
  limit?: number;
104
112
  };
105
- type JobsSearchBody = Schemas['PublicSearchJobsBody'];
113
+ type CustomFilterValue = string | number | boolean;
114
+ type CustomFieldFilter = {
115
+ key: string;
116
+ values: CustomFilterValue[];
117
+ };
118
+ type ObjectReferenceFilter = {
119
+ key: string;
120
+ recordIds: string[];
121
+ };
122
+ type GeneratedJobsSearchBody = Schemas['PublicSearchJobsBody'];
123
+ type JobsSearchBody = Omit<GeneratedJobsSearchBody, 'filters'> & {
124
+ filters?: NonNullable<GeneratedJobsSearchBody['filters']> & {
125
+ customFields?: CustomFieldFilter[];
126
+ };
127
+ };
106
128
 
107
- export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, OfficeLocation as O, PublicJob as P, RemoteOption as R, Seniority as S, JobsListQuery as a, JobCardListEnvelope as b, JobsSearchBody as c, JobCardSearchEnvelope as d, JobsSimilarQuery as e, SearchEnvelope as f, CustomFieldValue as g, EducationRequirement as h, JobCatalogPagination as i, JobCompany as j, OffsetPagination as k, PublicJobCard as l, RelatedSearch as m, RemotePermit as n, RemoteTimezone as o, StorefrontPagination as p };
129
+ export type { CustomFieldValues as C, EmploymentType as E, JobSort as J, ListEnvelope as L, ObjectReferenceFilter as O, PublicJob as P, RemoteOption as R, Seniority as S, CustomFieldFilter as a, JobCollectionChoiceQuery as b, JobsListQuery as c, JobCardListEnvelope as d, JobsSearchBody as e, JobCardSearchEnvelope as f, JobsSimilarQuery as g, SearchEnvelope as h, CustomFieldValue as i, CustomFilterValue as j, EducationRequirement as k, JobCatalogPagination as l, JobCollectionChoiceList as m, JobCollectionFieldDefinition as n, JobCompany as o, OfficeLocation as p, OffsetPagination as q, PublicJobCard as r, RelatedSearch as s, RemotePermit as t, RemoteTimezone as u, ResolvedJobCollectionField as v, StorefrontPagination as w };
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.js';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.js';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.mjs';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.mjs';
2
2
 
3
3
  type Awaitable<T> = T | Promise<T>;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.mjs';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.mjs';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,4 +1,4 @@
1
- import { S as Schemas } from './_spec-CEaM1PL9.js';
1
+ import { S as Schemas } from './_spec-B_pBNVUd.js';
2
2
 
3
3
  /**
4
4
  * The public SEO-infra payload (`board.seo()`) — platform infrastructure a
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-DcLmhDtr.mjs';
2
- import './_spec-CEaM1PL9.mjs';
1
+ import { B as BoardSeo } from './seo-0mbZ7M_E.mjs';
2
+ import './_spec-B_pBNVUd.mjs';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
@@ -1,5 +1,5 @@
1
- import { B as BoardSeo } from './seo-DU0YYnOj.js';
2
- import './_spec-CEaM1PL9.js';
1
+ import { B as BoardSeo } from './seo-C7gMl6Y7.js';
2
+ import './_spec-B_pBNVUd.js';
3
3
 
4
4
  /**
5
5
  * `@cavuno/board/seo-files` — platform-owned crawler/identity file bodies
package/dist/seo.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-lnpzj7Ay.mjs';
2
- import { e as JsonLdObject } from './breadcrumbs-tkJIGz6x.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-tkJIGz6x.mjs';
4
- import './_spec-CEaM1PL9.mjs';
5
- import './board-BowjJTqF.mjs';
6
- import './jobs-BbX7BRpH.mjs';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-fhXRik6k.mjs';
2
+ import { e as JsonLdObject } from './breadcrumbs-qE3CD--N.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-qE3CD--N.mjs';
4
+ import './_spec-B_pBNVUd.mjs';
5
+ import './board-DEiEHcpe.mjs';
6
+ import './jobs-R-h3A3kl.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-Ba5ErHVO.js';
2
- import { e as JsonLdObject } from './breadcrumbs-CiBoJ3Aq.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-CiBoJ3Aq.js';
4
- import './_spec-CEaM1PL9.js';
5
- import './board-Bm0VOdJ3.js';
6
- import './jobs-FSqG6zA8.js';
1
+ import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-DzGRUsj5.js';
2
+ import { e as JsonLdObject } from './breadcrumbs-DNaaP3xa.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-DNaaP3xa.js';
4
+ import './_spec-B_pBNVUd.js';
5
+ import './board-fVAXZ8T5.js';
6
+ import './jobs-BRysn2m0.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-CEaM1PL9.mjs';
3
- import './search-G3-XEo3f.mjs';
4
- import './board-BowjJTqF.mjs';
5
- import './jobs-BbX7BRpH.mjs';
6
- import './seo-DcLmhDtr.mjs';
7
- import './blog-lnpzj7Ay.mjs';
2
+ import './_spec-B_pBNVUd.mjs';
3
+ import './search-BlB690ma.mjs';
4
+ import './board-DEiEHcpe.mjs';
5
+ import './jobs-R-h3A3kl.mjs';
6
+ import './seo-0mbZ7M_E.mjs';
7
+ import './blog-fhXRik6k.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-CEaM1PL9.js';
3
- import './search-BL6adxbK.js';
4
- import './board-Bm0VOdJ3.js';
5
- import './jobs-FSqG6zA8.js';
6
- import './seo-DU0YYnOj.js';
7
- import './blog-Ba5ErHVO.js';
2
+ import './_spec-B_pBNVUd.js';
3
+ import './search-BK_zHHNQ.js';
4
+ import './board-fVAXZ8T5.js';
5
+ import './jobs-BRysn2m0.js';
6
+ import './seo-C7gMl6Y7.js';
7
+ import './blog-DzGRUsj5.js';
8
8
 
9
9
  /**
10
10
  * Session cookie codec — pure (no framework imports, no node imports) so it
package/dist/server.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-Z4ALWIGS.mjs";
5
5
  import {
6
6
  isUnauthorized
7
- } from "./chunk-DP2ZZZEO.mjs";
7
+ } from "./chunk-DUTQOLOF.mjs";
8
8
 
9
9
  // src/server/cookie.ts
10
10
  var COOKIE_ATTRIBUTES = "Path=/; HttpOnly; Secure; SameSite=Lax";