@cavuno/board 3.1.0 → 4.0.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 (77) hide show
  1. package/CHANGELOG.md +421 -0
  2. package/README.md +6 -2
  3. package/dist/{_spec-nkWAraS0.d.mts → _spec-GVe6WAfT.d.mts} +68 -59
  4. package/dist/{_spec-nkWAraS0.d.ts → _spec-GVe6WAfT.d.ts} +68 -59
  5. package/dist/bin.mjs +7 -2
  6. package/dist/blog-BsmKizpd.d.ts +29 -0
  7. package/dist/blog-Cf64mI8A.d.mts +29 -0
  8. package/dist/{salaries-BahBpxWT.d.ts → board-DUhgiacm.d.ts} +17 -29
  9. package/dist/{salaries-ChSqDBAM.d.mts → board-GGWJ4coe.d.mts} +17 -29
  10. package/dist/breadcrumbs-DFKr0HzU.d.mts +372 -0
  11. package/dist/breadcrumbs-DiccJhk4.d.ts +372 -0
  12. package/dist/chunk-2ETP5UH4.mjs +271 -0
  13. package/dist/chunk-BGKNXG4H.mjs +146 -0
  14. package/dist/chunk-DLSO6XXY.mjs +33 -0
  15. package/dist/chunk-T2KC6XGV.mjs +1060 -0
  16. package/dist/chunk-YEAQ3JEI.mjs +853 -0
  17. package/dist/doctor.js +1 -1
  18. package/dist/doctor.mjs +1 -1
  19. package/dist/filters.d.mts +25 -20
  20. package/dist/filters.d.ts +25 -20
  21. package/dist/filters.js +3 -692
  22. package/dist/filters.mjs +3 -690
  23. package/dist/format.d.mts +57 -230
  24. package/dist/format.d.ts +57 -230
  25. package/dist/format.js +355 -927
  26. package/dist/format.mjs +213 -931
  27. package/dist/go.js +11 -1
  28. package/dist/go.mjs +4 -29
  29. package/dist/index.d.mts +23 -75
  30. package/dist/index.d.ts +23 -75
  31. package/dist/index.js +11 -36
  32. package/dist/index.mjs +32 -313
  33. package/dist/{jobs-lVvKCBCU.d.mts → jobs-BuLpV8iy.d.mts} +4 -4
  34. package/dist/{jobs-BiEvL9d7.d.ts → jobs-QrbXOYB9.d.ts} +4 -4
  35. package/dist/paths.d.mts +89 -1
  36. package/dist/paths.d.ts +89 -1
  37. package/dist/paths.js +62 -14
  38. package/dist/paths.mjs +29 -78
  39. package/dist/route-contract.js +23 -13
  40. package/dist/route-contract.mjs +30 -1079
  41. package/dist/{search-CCyFWPi3.d.mts → search-Cr4noJJZ.d.mts} +14 -3
  42. package/dist/{search-CyRvVMUp.d.ts → search-DdsniXQv.d.ts} +14 -3
  43. package/dist/seo.d.mts +33 -189
  44. package/dist/seo.d.ts +33 -189
  45. package/dist/seo.js +197 -718
  46. package/dist/seo.mjs +44 -1417
  47. package/dist/server.d.mts +5 -5
  48. package/dist/server.d.ts +5 -5
  49. package/dist/server.mjs +5 -31
  50. package/dist/sitemap.d.mts +5 -5
  51. package/dist/sitemap.d.ts +5 -5
  52. package/dist/sitemap.js +25 -14
  53. package/dist/sitemap.mjs +22 -97
  54. package/dist/skills.js +1 -1
  55. package/dist/skills.mjs +1 -1
  56. package/dist/suggest.d.mts +2 -2
  57. package/dist/suggest.d.ts +2 -2
  58. package/dist/suggest.js +17 -3
  59. package/dist/suggest.mjs +17 -3
  60. package/dist/well-known.js +23 -13
  61. package/dist/well-known.mjs +4 -421
  62. package/package.json +5 -4
  63. package/skills/cavuno-board-applications/SKILL.md +4 -1
  64. package/skills/cavuno-board-filters/SKILL.md +11 -12
  65. package/skills/cavuno-board-format/SKILL.md +68 -56
  66. package/skills/cavuno-board-i18n/SKILL.md +102 -21
  67. package/skills/cavuno-board-search-suggestions/SKILL.md +8 -3
  68. package/skills/cavuno-board-seo/BLOG.md +4 -1
  69. package/skills/cavuno-board-seo/JOB_AND_BREADCRUMBS.md +5 -2
  70. package/skills/cavuno-board-seo/LISTING.md +35 -12
  71. package/skills/cavuno-board-seo/SALARY.md +83 -18
  72. package/skills/cavuno-board-seo/SKILL.md +3 -2
  73. package/skills/manifest.json +3 -3
  74. package/dist/board-NE98PlwN.d.ts +0 -16
  75. package/dist/board-muu8BI8P.d.mts +0 -16
  76. package/dist/ui-copy-CCkz6CVF.d.mts +0 -230
  77. package/dist/ui-copy-CCkz6CVF.d.ts +0 -230
package/dist/paths.js CHANGED
@@ -28,56 +28,104 @@ __export(paths_exports, {
28
28
  companyMarketPath: () => companyMarketPath,
29
29
  companyPath: () => companyPath,
30
30
  companySalaryPath: () => companySalaryPath,
31
+ encodePathSegment: () => encodePathSegment,
31
32
  goAlertsConfirmPath: () => goAlertsConfirmPath,
32
33
  goAlertsManagePath: () => goAlertsManagePath,
33
34
  goJobPath: () => goJobPath,
34
35
  jobDetailPath: () => jobDetailPath,
35
36
  jobsCategoryPath: () => jobsCategoryPath,
37
+ jobsLocationCategoryPath: () => jobsLocationCategoryPath,
36
38
  jobsLocationPath: () => jobsLocationPath,
39
+ jobsLocationSkillPath: () => jobsLocationSkillPath,
37
40
  jobsSkillPath: () => jobsSkillPath,
38
41
  salaryLocationPath: () => salaryLocationPath,
39
42
  salarySkillPath: () => salarySkillPath,
40
- salaryTitlePath: () => salaryTitlePath
43
+ salaryTitlePath: () => salaryTitlePath,
44
+ suggestionPath: () => suggestionPath
41
45
  });
42
46
  module.exports = __toCommonJS(paths_exports);
47
+ function encodePathSegment(segment) {
48
+ try {
49
+ return encodeURIComponent(decodeURIComponent(segment)).replace(
50
+ /%3A/gi,
51
+ ":"
52
+ );
53
+ } catch {
54
+ return encodeURIComponent(segment).replace(/%3A/gi, ":");
55
+ }
56
+ }
43
57
  function jobDetailPath(companySlug, jobSlug) {
44
- return `/companies/${companySlug}/jobs/${jobSlug}`;
58
+ return `/companies/${encodePathSegment(companySlug)}/jobs/${encodePathSegment(jobSlug)}`;
45
59
  }
46
60
  function jobsCategoryPath(categorySlug) {
47
- return `/jobs/${categorySlug}`;
61
+ return `/jobs/${encodePathSegment(categorySlug)}`;
48
62
  }
49
63
  function jobsSkillPath(skillSlug) {
50
- return `/jobs/skills/${skillSlug}`;
64
+ return `/jobs/skills/${encodePathSegment(skillSlug)}`;
51
65
  }
52
66
  function jobsLocationPath(placeSlug) {
53
- return `/jobs/locations/${placeSlug}`;
67
+ return `/jobs/locations/${encodePathSegment(placeSlug)}`;
68
+ }
69
+ function jobsLocationCategoryPath(placeSlug, categorySlug) {
70
+ return `${jobsLocationPath(placeSlug)}/${encodePathSegment(categorySlug)}`;
71
+ }
72
+ function jobsLocationSkillPath(placeSlug, skillSlug) {
73
+ return `${jobsLocationPath(placeSlug)}/skills/${encodePathSegment(skillSlug)}`;
54
74
  }
55
75
  function companyPath(companySlug) {
56
- return `/companies/${companySlug}`;
76
+ return `/companies/${encodePathSegment(companySlug)}`;
57
77
  }
58
78
  function companyMarketPath(marketSlug) {
59
- return `/companies/markets/${marketSlug}`;
79
+ return `/companies/markets/${encodePathSegment(marketSlug)}`;
80
+ }
81
+ function suggestionPath(suggestion, options) {
82
+ const location = options.location?.trim() || void 0;
83
+ if (options.scope === "blog") {
84
+ if (suggestion.type === "post") {
85
+ return blogPostPath(suggestion.slug);
86
+ }
87
+ if (suggestion.type === "tag") {
88
+ return blogTagPath(suggestion.slug);
89
+ }
90
+ return null;
91
+ }
92
+ if (options.scope === "jobs") {
93
+ if (suggestion.type === "company" || suggestion.type === "market" || suggestion.type === "post" || suggestion.type === "tag") {
94
+ return null;
95
+ }
96
+ if (suggestion.termType === "skill") {
97
+ return location ? jobsLocationSkillPath(location, suggestion.canonicalSlug) : jobsSkillPath(suggestion.canonicalSlug);
98
+ }
99
+ return location ? jobsLocationCategoryPath(location, suggestion.canonicalSlug) : jobsCategoryPath(suggestion.canonicalSlug);
100
+ }
101
+ if (suggestion.type === "company") {
102
+ return companyPath(suggestion.slug);
103
+ }
104
+ if (suggestion.type === "market") {
105
+ return companyMarketPath(suggestion.slug);
106
+ }
107
+ return null;
60
108
  }
61
109
  function companySalaryPath(companySlug) {
62
- return `/companies/${companySlug}/salaries`;
110
+ return `/companies/${encodePathSegment(companySlug)}/salaries`;
63
111
  }
64
112
  function salaryTitlePath(titleSlug) {
65
- return `/salaries/titles/${titleSlug}`;
113
+ return `/salaries/titles/${encodePathSegment(titleSlug)}`;
66
114
  }
67
115
  function salarySkillPath(skillSlug) {
68
- return `/salaries/skills/${skillSlug}`;
116
+ return `/salaries/skills/${encodePathSegment(skillSlug)}`;
69
117
  }
70
118
  function salaryLocationPath(placeSlug) {
71
- return `/salaries/locations/${placeSlug}`;
119
+ return `/salaries/locations/${encodePathSegment(placeSlug)}`;
72
120
  }
73
121
  function blogPostPath(postSlug) {
74
- return `/blog/${postSlug}`;
122
+ return `/blog/${encodePathSegment(postSlug)}`;
75
123
  }
76
124
  function blogTagPath(tagSlug) {
77
- return `/blog/tag/${tagSlug}`;
125
+ return `/blog/tag/${encodePathSegment(tagSlug)}`;
78
126
  }
79
127
  function blogAuthorPath(authorSlug) {
80
- return `/blog/author/${authorSlug}`;
128
+ return `/blog/author/${encodePathSegment(authorSlug)}`;
81
129
  }
82
130
  var BOARD_PATHS = {
83
131
  home: "/",
package/dist/paths.mjs CHANGED
@@ -1,80 +1,27 @@
1
- // src/paths/index.ts
2
- function jobDetailPath(companySlug, jobSlug) {
3
- return `/companies/${companySlug}/jobs/${jobSlug}`;
4
- }
5
- function jobsCategoryPath(categorySlug) {
6
- return `/jobs/${categorySlug}`;
7
- }
8
- function jobsSkillPath(skillSlug) {
9
- return `/jobs/skills/${skillSlug}`;
10
- }
11
- function jobsLocationPath(placeSlug) {
12
- return `/jobs/locations/${placeSlug}`;
13
- }
14
- function companyPath(companySlug) {
15
- return `/companies/${companySlug}`;
16
- }
17
- function companyMarketPath(marketSlug) {
18
- return `/companies/markets/${marketSlug}`;
19
- }
20
- function companySalaryPath(companySlug) {
21
- return `/companies/${companySlug}/salaries`;
22
- }
23
- function salaryTitlePath(titleSlug) {
24
- return `/salaries/titles/${titleSlug}`;
25
- }
26
- function salarySkillPath(skillSlug) {
27
- return `/salaries/skills/${skillSlug}`;
28
- }
29
- function salaryLocationPath(placeSlug) {
30
- return `/salaries/locations/${placeSlug}`;
31
- }
32
- function blogPostPath(postSlug) {
33
- return `/blog/${postSlug}`;
34
- }
35
- function blogTagPath(tagSlug) {
36
- return `/blog/tag/${tagSlug}`;
37
- }
38
- function blogAuthorPath(authorSlug) {
39
- return `/blog/author/${authorSlug}`;
40
- }
41
- var BOARD_PATHS = {
42
- home: "/",
43
- jobs: "/jobs",
44
- companies: "/companies",
45
- salaries: "/salaries",
46
- salaryCompanies: "/salaries/companies",
47
- salaryTitles: "/salaries/titles",
48
- salarySkills: "/salaries/skills",
49
- salaryLocations: "/salaries/locations",
50
- blog: "/blog",
51
- about: "/about",
52
- privacyPolicy: "/privacy-policy",
53
- termsOfService: "/terms-of-service",
54
- cookiePolicy: "/cookie-policy",
55
- impressum: "/impressum",
56
- talent: "/talent",
57
- employers: "/employers",
58
- /**
59
- * Alert-email surfaces. Promoted out of raw literals in
60
- * the job-alerts composer so /go indirection and email composition share
61
- * one definition.
62
- */
63
- alertsManage: "/alerts/manage",
64
- alertsConfirm: "/alerts/confirm"
65
- };
66
- function goJobPath(jobId) {
67
- return `/go/job/${jobId}`;
68
- }
69
- function goAlertsManagePath() {
70
- return "/go/alerts-manage";
71
- }
72
- function goAlertsConfirmPath() {
73
- return "/go/alerts-confirm";
74
- }
75
- function boardUrl(origin, path) {
76
- return `${origin.replace(/\/+$/, "")}${path}`;
77
- }
1
+ import {
2
+ BOARD_PATHS,
3
+ blogAuthorPath,
4
+ blogPostPath,
5
+ blogTagPath,
6
+ boardUrl,
7
+ companyMarketPath,
8
+ companyPath,
9
+ companySalaryPath,
10
+ encodePathSegment,
11
+ goAlertsConfirmPath,
12
+ goAlertsManagePath,
13
+ goJobPath,
14
+ jobDetailPath,
15
+ jobsCategoryPath,
16
+ jobsLocationCategoryPath,
17
+ jobsLocationPath,
18
+ jobsLocationSkillPath,
19
+ jobsSkillPath,
20
+ salaryLocationPath,
21
+ salarySkillPath,
22
+ salaryTitlePath,
23
+ suggestionPath
24
+ } from "./chunk-BGKNXG4H.mjs";
78
25
  export {
79
26
  BOARD_PATHS,
80
27
  blogAuthorPath,
@@ -84,14 +31,18 @@ export {
84
31
  companyMarketPath,
85
32
  companyPath,
86
33
  companySalaryPath,
34
+ encodePathSegment,
87
35
  goAlertsConfirmPath,
88
36
  goAlertsManagePath,
89
37
  goJobPath,
90
38
  jobDetailPath,
91
39
  jobsCategoryPath,
40
+ jobsLocationCategoryPath,
92
41
  jobsLocationPath,
42
+ jobsLocationSkillPath,
93
43
  jobsSkillPath,
94
44
  salaryLocationPath,
95
45
  salarySkillPath,
96
- salaryTitlePath
46
+ salaryTitlePath,
47
+ suggestionPath
97
48
  };
@@ -51,44 +51,54 @@ __export(route_contract_exports, {
51
51
  module.exports = __toCommonJS(route_contract_exports);
52
52
 
53
53
  // src/paths/index.ts
54
+ function encodePathSegment(segment) {
55
+ try {
56
+ return encodeURIComponent(decodeURIComponent(segment)).replace(
57
+ /%3A/gi,
58
+ ":"
59
+ );
60
+ } catch {
61
+ return encodeURIComponent(segment).replace(/%3A/gi, ":");
62
+ }
63
+ }
54
64
  function jobDetailPath(companySlug, jobSlug) {
55
- return `/companies/${companySlug}/jobs/${jobSlug}`;
65
+ return `/companies/${encodePathSegment(companySlug)}/jobs/${encodePathSegment(jobSlug)}`;
56
66
  }
57
67
  function jobsCategoryPath(categorySlug) {
58
- return `/jobs/${categorySlug}`;
68
+ return `/jobs/${encodePathSegment(categorySlug)}`;
59
69
  }
60
70
  function jobsSkillPath(skillSlug) {
61
- return `/jobs/skills/${skillSlug}`;
71
+ return `/jobs/skills/${encodePathSegment(skillSlug)}`;
62
72
  }
63
73
  function jobsLocationPath(placeSlug) {
64
- return `/jobs/locations/${placeSlug}`;
74
+ return `/jobs/locations/${encodePathSegment(placeSlug)}`;
65
75
  }
66
76
  function companyPath(companySlug) {
67
- return `/companies/${companySlug}`;
77
+ return `/companies/${encodePathSegment(companySlug)}`;
68
78
  }
69
79
  function companyMarketPath(marketSlug) {
70
- return `/companies/markets/${marketSlug}`;
80
+ return `/companies/markets/${encodePathSegment(marketSlug)}`;
71
81
  }
72
82
  function companySalaryPath(companySlug) {
73
- return `/companies/${companySlug}/salaries`;
83
+ return `/companies/${encodePathSegment(companySlug)}/salaries`;
74
84
  }
75
85
  function salaryTitlePath(titleSlug) {
76
- return `/salaries/titles/${titleSlug}`;
86
+ return `/salaries/titles/${encodePathSegment(titleSlug)}`;
77
87
  }
78
88
  function salarySkillPath(skillSlug) {
79
- return `/salaries/skills/${skillSlug}`;
89
+ return `/salaries/skills/${encodePathSegment(skillSlug)}`;
80
90
  }
81
91
  function salaryLocationPath(placeSlug) {
82
- return `/salaries/locations/${placeSlug}`;
92
+ return `/salaries/locations/${encodePathSegment(placeSlug)}`;
83
93
  }
84
94
  function blogPostPath(postSlug) {
85
- return `/blog/${postSlug}`;
95
+ return `/blog/${encodePathSegment(postSlug)}`;
86
96
  }
87
97
  function blogTagPath(tagSlug) {
88
- return `/blog/tag/${tagSlug}`;
98
+ return `/blog/tag/${encodePathSegment(tagSlug)}`;
89
99
  }
90
100
  function blogAuthorPath(authorSlug) {
91
- return `/blog/author/${authorSlug}`;
101
+ return `/blog/author/${encodePathSegment(authorSlug)}`;
92
102
  }
93
103
  var BOARD_PATHS = {
94
104
  home: "/",