@cavuno/board 1.33.1 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/dist/bin.mjs +91 -21
- package/dist/{board-BTVapQiL.d.mts → board-Be8dY9Ba.d.mts} +1 -1
- package/dist/{board-0yI5ZRJw.d.ts → board-DsRbgz_D.d.ts} +1 -1
- package/dist/filters.d.mts +1 -1
- package/dist/filters.d.ts +1 -1
- package/dist/format.d.mts +2 -2
- package/dist/format.d.ts +2 -2
- package/dist/index.d.mts +32 -16
- package/dist/index.d.ts +32 -16
- package/dist/index.js +6 -3
- package/dist/index.mjs +6 -3
- package/dist/{jobs-Di4AV-02.d.mts → jobs-BFLMDNEN.d.mts} +194 -29
- package/dist/{jobs-Di4AV-02.d.ts → jobs-BFLMDNEN.d.ts} +194 -29
- package/dist/paths.d.mts +72 -0
- package/dist/paths.d.ts +72 -0
- package/dist/paths.js +99 -0
- package/dist/paths.mjs +78 -0
- package/dist/{salaries-B-zJKjkk.d.ts → salaries-negE75t8.d.ts} +4 -4
- package/dist/{salaries-D-BGZpDC.d.mts → salaries-pO_vGORE.d.mts} +4 -4
- package/dist/seo.d.mts +3 -3
- package/dist/seo.d.ts +3 -3
- package/dist/server.d.mts +3 -3
- package/dist/server.d.ts +3 -3
- package/dist/sitemap.d.mts +3 -3
- package/dist/sitemap.d.ts +3 -3
- package/dist/sitemap.js +89 -29
- package/dist/sitemap.mjs +89 -29
- package/package.json +11 -1
- package/skills/cavuno-board-auth/SKILL.md +0 -1
- package/skills/cavuno-board-client/SKILL.md +1 -4
- package/skills/cavuno-board-job-alerts/SKILL.md +4 -3
- package/skills/cavuno-board-jobs/SKILL.md +2 -2
- package/skills/cavuno-board-setup/SKILL.md +6 -8
- package/skills/cavuno-board-smoke-test/SKILL.md +7 -6
- package/skills/cavuno-board-theme/SKILL.md +33 -45
- package/skills/flavors/tanstack-start/SKILL.md +0 -1
- package/skills/manifest.json +4 -4
package/dist/paths.js
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/paths/index.ts
|
|
21
|
+
var paths_exports = {};
|
|
22
|
+
__export(paths_exports, {
|
|
23
|
+
BOARD_PATHS: () => BOARD_PATHS,
|
|
24
|
+
blogAuthorPath: () => blogAuthorPath,
|
|
25
|
+
blogPostPath: () => blogPostPath,
|
|
26
|
+
blogTagPath: () => blogTagPath,
|
|
27
|
+
boardUrl: () => boardUrl,
|
|
28
|
+
companyMarketPath: () => companyMarketPath,
|
|
29
|
+
companyPath: () => companyPath,
|
|
30
|
+
companySalaryPath: () => companySalaryPath,
|
|
31
|
+
jobDetailPath: () => jobDetailPath,
|
|
32
|
+
jobsCategoryPath: () => jobsCategoryPath,
|
|
33
|
+
jobsLocationPath: () => jobsLocationPath,
|
|
34
|
+
jobsSkillPath: () => jobsSkillPath,
|
|
35
|
+
salaryLocationPath: () => salaryLocationPath,
|
|
36
|
+
salarySkillPath: () => salarySkillPath,
|
|
37
|
+
salaryTitlePath: () => salaryTitlePath
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(paths_exports);
|
|
40
|
+
function jobDetailPath(companySlug, jobSlug) {
|
|
41
|
+
return `/companies/${companySlug}/jobs/${jobSlug}`;
|
|
42
|
+
}
|
|
43
|
+
function jobsCategoryPath(categorySlug) {
|
|
44
|
+
return `/jobs/${categorySlug}`;
|
|
45
|
+
}
|
|
46
|
+
function jobsSkillPath(skillSlug) {
|
|
47
|
+
return `/jobs/skills/${skillSlug}`;
|
|
48
|
+
}
|
|
49
|
+
function jobsLocationPath(placeSlug) {
|
|
50
|
+
return `/jobs/locations/${placeSlug}`;
|
|
51
|
+
}
|
|
52
|
+
function companyPath(companySlug) {
|
|
53
|
+
return `/companies/${companySlug}`;
|
|
54
|
+
}
|
|
55
|
+
function companyMarketPath(marketSlug) {
|
|
56
|
+
return `/companies/markets/${marketSlug}`;
|
|
57
|
+
}
|
|
58
|
+
function companySalaryPath(companySlug) {
|
|
59
|
+
return `/companies/${companySlug}/salaries`;
|
|
60
|
+
}
|
|
61
|
+
function salaryTitlePath(titleSlug) {
|
|
62
|
+
return `/salaries/titles/${titleSlug}`;
|
|
63
|
+
}
|
|
64
|
+
function salarySkillPath(skillSlug) {
|
|
65
|
+
return `/salaries/skills/${skillSlug}`;
|
|
66
|
+
}
|
|
67
|
+
function salaryLocationPath(placeSlug) {
|
|
68
|
+
return `/salaries/locations/${placeSlug}`;
|
|
69
|
+
}
|
|
70
|
+
function blogPostPath(postSlug) {
|
|
71
|
+
return `/blog/${postSlug}`;
|
|
72
|
+
}
|
|
73
|
+
function blogTagPath(tagSlug) {
|
|
74
|
+
return `/blog/tag/${tagSlug}`;
|
|
75
|
+
}
|
|
76
|
+
function blogAuthorPath(authorSlug) {
|
|
77
|
+
return `/blog/author/${authorSlug}`;
|
|
78
|
+
}
|
|
79
|
+
var BOARD_PATHS = {
|
|
80
|
+
home: "/",
|
|
81
|
+
jobs: "/jobs",
|
|
82
|
+
companies: "/companies",
|
|
83
|
+
salaries: "/salaries",
|
|
84
|
+
salaryCompanies: "/salaries/companies",
|
|
85
|
+
salaryTitles: "/salaries/titles",
|
|
86
|
+
salarySkills: "/salaries/skills",
|
|
87
|
+
salaryLocations: "/salaries/locations",
|
|
88
|
+
blog: "/blog",
|
|
89
|
+
about: "/about",
|
|
90
|
+
privacyPolicy: "/privacy-policy",
|
|
91
|
+
termsOfService: "/terms-of-service",
|
|
92
|
+
cookiePolicy: "/cookie-policy",
|
|
93
|
+
impressum: "/impressum",
|
|
94
|
+
talent: "/talent",
|
|
95
|
+
employers: "/employers"
|
|
96
|
+
};
|
|
97
|
+
function boardUrl(origin, path) {
|
|
98
|
+
return `${origin.replace(/\/+$/, "")}${path}`;
|
|
99
|
+
}
|
package/dist/paths.mjs
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
function boardUrl(origin, path) {
|
|
60
|
+
return `${origin.replace(/\/+$/, "")}${path}`;
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
BOARD_PATHS,
|
|
64
|
+
blogAuthorPath,
|
|
65
|
+
blogPostPath,
|
|
66
|
+
blogTagPath,
|
|
67
|
+
boardUrl,
|
|
68
|
+
companyMarketPath,
|
|
69
|
+
companyPath,
|
|
70
|
+
companySalaryPath,
|
|
71
|
+
jobDetailPath,
|
|
72
|
+
jobsCategoryPath,
|
|
73
|
+
jobsLocationPath,
|
|
74
|
+
jobsSkillPath,
|
|
75
|
+
salaryLocationPath,
|
|
76
|
+
salarySkillPath,
|
|
77
|
+
salaryTitlePath
|
|
78
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as Schemas, L as ListEnvelope,
|
|
1
|
+
import { b as Schemas, L as ListEnvelope, o as RelatedSearch } from './jobs-BFLMDNEN.js';
|
|
2
2
|
|
|
3
3
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
4
4
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -44,9 +44,9 @@ type CompanySalary = Schemas['CompanySalary'];
|
|
|
44
44
|
*/
|
|
45
45
|
type CompanyCategorySalary = Schemas['CompanyCategorySalary'];
|
|
46
46
|
/** The companies browse list — `PublicCompany`s + `market` `relatedSearches`. */
|
|
47
|
-
|
|
47
|
+
type CompanyListEnvelope = ListEnvelope<PublicCompany> & {
|
|
48
48
|
relatedSearches?: RelatedSearch[];
|
|
49
|
-
}
|
|
49
|
+
};
|
|
50
50
|
type CompaniesListQuery = {
|
|
51
51
|
cursor?: string;
|
|
52
52
|
/** Scope to a single market (sector) by slug. Unknown slugs 404. */
|
|
@@ -54,7 +54,7 @@ type CompaniesListQuery = {
|
|
|
54
54
|
/** 1–100. */
|
|
55
55
|
limit?: number;
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* Company catalog page offset (companies to skip); takes precedence over
|
|
58
58
|
* `cursor`. Pair with the response `count` to page in parallel.
|
|
59
59
|
*/
|
|
60
60
|
offset?: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as Schemas, L as ListEnvelope,
|
|
1
|
+
import { b as Schemas, L as ListEnvelope, o as RelatedSearch } from './jobs-BFLMDNEN.mjs';
|
|
2
2
|
|
|
3
3
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
4
4
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -44,9 +44,9 @@ type CompanySalary = Schemas['CompanySalary'];
|
|
|
44
44
|
*/
|
|
45
45
|
type CompanyCategorySalary = Schemas['CompanyCategorySalary'];
|
|
46
46
|
/** The companies browse list — `PublicCompany`s + `market` `relatedSearches`. */
|
|
47
|
-
|
|
47
|
+
type CompanyListEnvelope = ListEnvelope<PublicCompany> & {
|
|
48
48
|
relatedSearches?: RelatedSearch[];
|
|
49
|
-
}
|
|
49
|
+
};
|
|
50
50
|
type CompaniesListQuery = {
|
|
51
51
|
cursor?: string;
|
|
52
52
|
/** Scope to a single market (sector) by slug. Unknown slugs 404. */
|
|
@@ -54,7 +54,7 @@ type CompaniesListQuery = {
|
|
|
54
54
|
/** 1–100. */
|
|
55
55
|
limit?: number;
|
|
56
56
|
/**
|
|
57
|
-
*
|
|
57
|
+
* Company catalog page offset (companies to skip); takes precedence over
|
|
58
58
|
* `cursor`. Pair with the response `count` to page in parallel.
|
|
59
59
|
*/
|
|
60
60
|
offset?: number;
|
package/dist/seo.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-
|
|
2
|
-
import { P as PublicBoard } from './board-
|
|
3
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-pO_vGORE.mjs';
|
|
2
|
+
import { P as PublicBoard } from './board-Be8dY9Ba.mjs';
|
|
3
|
+
import { P as PublicJob } from './jobs-BFLMDNEN.mjs';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-
|
|
2
|
-
import { P as PublicBoard } from './board-
|
|
3
|
-
import { P as PublicJob } from './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed, C as CompanyCategorySalary, a as CompanySalary, L as LocationSalaryDetail, S as SkillSalaryDetail, T as TitleSalaryDetail } from './salaries-negE75t8.js';
|
|
2
|
+
import { P as PublicBoard } from './board-DsRbgz_D.js';
|
|
3
|
+
import { P as PublicJob } from './jobs-BFLMDNEN.js';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-rlfoH9P3.js';
|
|
5
5
|
|
|
6
6
|
/**
|
package/dist/server.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './jobs-
|
|
3
|
-
import './board-
|
|
4
|
-
import './salaries-
|
|
2
|
+
import './jobs-BFLMDNEN.mjs';
|
|
3
|
+
import './board-Be8dY9Ba.mjs';
|
|
4
|
+
import './salaries-pO_vGORE.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './jobs-
|
|
3
|
-
import './board-
|
|
4
|
-
import './salaries-
|
|
2
|
+
import './jobs-BFLMDNEN.js';
|
|
3
|
+
import './board-DsRbgz_D.js';
|
|
4
|
+
import './salaries-negE75t8.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './jobs-
|
|
3
|
-
import './board-
|
|
4
|
-
import './salaries-
|
|
2
|
+
import './jobs-BFLMDNEN.mjs';
|
|
3
|
+
import './board-Be8dY9Ba.mjs';
|
|
4
|
+
import './salaries-pO_vGORE.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './jobs-
|
|
3
|
-
import './board-
|
|
4
|
-
import './salaries-
|
|
2
|
+
import './jobs-BFLMDNEN.js';
|
|
3
|
+
import './board-DsRbgz_D.js';
|
|
4
|
+
import './salaries-negE75t8.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.js
CHANGED
|
@@ -164,6 +164,65 @@ function paginate(listFn, query, options) {
|
|
|
164
164
|
};
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
+
// src/paths/index.ts
|
|
168
|
+
function jobDetailPath(companySlug, jobSlug) {
|
|
169
|
+
return `/companies/${companySlug}/jobs/${jobSlug}`;
|
|
170
|
+
}
|
|
171
|
+
function jobsCategoryPath(categorySlug) {
|
|
172
|
+
return `/jobs/${categorySlug}`;
|
|
173
|
+
}
|
|
174
|
+
function jobsSkillPath(skillSlug) {
|
|
175
|
+
return `/jobs/skills/${skillSlug}`;
|
|
176
|
+
}
|
|
177
|
+
function jobsLocationPath(placeSlug) {
|
|
178
|
+
return `/jobs/locations/${placeSlug}`;
|
|
179
|
+
}
|
|
180
|
+
function companyPath(companySlug) {
|
|
181
|
+
return `/companies/${companySlug}`;
|
|
182
|
+
}
|
|
183
|
+
function companyMarketPath(marketSlug) {
|
|
184
|
+
return `/companies/markets/${marketSlug}`;
|
|
185
|
+
}
|
|
186
|
+
function companySalaryPath(companySlug) {
|
|
187
|
+
return `/companies/${companySlug}/salaries`;
|
|
188
|
+
}
|
|
189
|
+
function salaryTitlePath(titleSlug) {
|
|
190
|
+
return `/salaries/titles/${titleSlug}`;
|
|
191
|
+
}
|
|
192
|
+
function salarySkillPath(skillSlug) {
|
|
193
|
+
return `/salaries/skills/${skillSlug}`;
|
|
194
|
+
}
|
|
195
|
+
function salaryLocationPath(placeSlug) {
|
|
196
|
+
return `/salaries/locations/${placeSlug}`;
|
|
197
|
+
}
|
|
198
|
+
function blogPostPath(postSlug) {
|
|
199
|
+
return `/blog/${postSlug}`;
|
|
200
|
+
}
|
|
201
|
+
function blogTagPath(tagSlug) {
|
|
202
|
+
return `/blog/tag/${tagSlug}`;
|
|
203
|
+
}
|
|
204
|
+
function blogAuthorPath(authorSlug) {
|
|
205
|
+
return `/blog/author/${authorSlug}`;
|
|
206
|
+
}
|
|
207
|
+
var BOARD_PATHS = {
|
|
208
|
+
home: "/",
|
|
209
|
+
jobs: "/jobs",
|
|
210
|
+
companies: "/companies",
|
|
211
|
+
salaries: "/salaries",
|
|
212
|
+
salaryCompanies: "/salaries/companies",
|
|
213
|
+
salaryTitles: "/salaries/titles",
|
|
214
|
+
salarySkills: "/salaries/skills",
|
|
215
|
+
salaryLocations: "/salaries/locations",
|
|
216
|
+
blog: "/blog",
|
|
217
|
+
about: "/about",
|
|
218
|
+
privacyPolicy: "/privacy-policy",
|
|
219
|
+
termsOfService: "/terms-of-service",
|
|
220
|
+
cookiePolicy: "/cookie-policy",
|
|
221
|
+
impressum: "/impressum",
|
|
222
|
+
talent: "/talent",
|
|
223
|
+
employers: "/employers"
|
|
224
|
+
};
|
|
225
|
+
|
|
167
226
|
// src/sitemap/walker.ts
|
|
168
227
|
var MIN_JOBS_PER_INDEXED_PAGE = 5;
|
|
169
228
|
var MAX_PAGES = 200;
|
|
@@ -246,16 +305,16 @@ async function buildBucketUrls(board, origin, bucket) {
|
|
|
246
305
|
async function marketing(board, origin) {
|
|
247
306
|
const { features } = await board.context();
|
|
248
307
|
const urls = [
|
|
249
|
-
`${origin}
|
|
250
|
-
`${origin}
|
|
251
|
-
`${origin}
|
|
252
|
-
`${origin}
|
|
253
|
-
`${origin}
|
|
254
|
-
`${origin}
|
|
308
|
+
`${origin}${BOARD_PATHS.home}`,
|
|
309
|
+
`${origin}${BOARD_PATHS.jobs}`,
|
|
310
|
+
`${origin}${BOARD_PATHS.about}`,
|
|
311
|
+
`${origin}${BOARD_PATHS.privacyPolicy}`,
|
|
312
|
+
`${origin}${BOARD_PATHS.termsOfService}`,
|
|
313
|
+
`${origin}${BOARD_PATHS.cookiePolicy}`
|
|
255
314
|
];
|
|
256
|
-
if (features.impressum) urls.push(`${origin}
|
|
257
|
-
if (features.talentDirectory) urls.push(`${origin}
|
|
258
|
-
if (features.employers) urls.push(`${origin}
|
|
315
|
+
if (features.impressum) urls.push(`${origin}${BOARD_PATHS.impressum}`);
|
|
316
|
+
if (features.talentDirectory) urls.push(`${origin}${BOARD_PATHS.talent}`);
|
|
317
|
+
if (features.employers) urls.push(`${origin}${BOARD_PATHS.employers}`);
|
|
259
318
|
return urls;
|
|
260
319
|
}
|
|
261
320
|
async function jobsTaxonomy(board, origin, kind) {
|
|
@@ -267,20 +326,20 @@ async function jobsTaxonomy(board, origin, kind) {
|
|
|
267
326
|
);
|
|
268
327
|
for (const slug of slugs) counts.set(slug, (counts.get(slug) ?? 0) + 1);
|
|
269
328
|
}
|
|
270
|
-
const
|
|
271
|
-
return [...counts.entries()].filter(([, n]) => n >= MIN_JOBS_PER_INDEXED_PAGE).map(([slug]) => slug).sort().map((slug) => `${
|
|
329
|
+
const toPath = kind === "categories" ? jobsCategoryPath : jobsSkillPath;
|
|
330
|
+
return [...counts.entries()].filter(([, n]) => n >= MIN_JOBS_PER_INDEXED_PAGE).map(([slug]) => slug).sort().map((slug) => `${origin}${toPath(slug)}`);
|
|
272
331
|
}
|
|
273
332
|
async function jobsLocations(board, origin) {
|
|
274
333
|
const { language } = await board.context();
|
|
275
334
|
const { data } = await board.salaries.locations.list({ locale: language });
|
|
276
|
-
return data.filter((l) => l.jobCount >= MIN_JOBS_PER_INDEXED_PAGE).map((l) => l.placeSlug).sort().map((slug) => `${origin}
|
|
335
|
+
return data.filter((l) => l.jobCount >= MIN_JOBS_PER_INDEXED_PAGE).map((l) => l.placeSlug).sort().map((slug) => `${origin}${jobsLocationPath(slug)}`);
|
|
277
336
|
}
|
|
278
337
|
async function jobDetails(board, origin) {
|
|
279
338
|
const jobs = await enumerateJobs(board);
|
|
280
339
|
const seen = /* @__PURE__ */ new Set();
|
|
281
340
|
for (const job of jobs) {
|
|
282
341
|
if (!job.company?.slug || !job.slug) continue;
|
|
283
|
-
seen.add(`${origin}
|
|
342
|
+
seen.add(`${origin}${jobDetailPath(job.company.slug, job.slug)}`);
|
|
284
343
|
}
|
|
285
344
|
return [...seen].sort();
|
|
286
345
|
}
|
|
@@ -289,10 +348,11 @@ async function companies(board, origin) {
|
|
|
289
348
|
enumerateCompanies(board),
|
|
290
349
|
board.companies.markets()
|
|
291
350
|
]);
|
|
292
|
-
const urls = [`${origin}
|
|
293
|
-
for (const company of list)
|
|
351
|
+
const urls = [`${origin}${BOARD_PATHS.companies}`];
|
|
352
|
+
for (const company of list)
|
|
353
|
+
urls.push(`${origin}${companyPath(company.slug)}`);
|
|
294
354
|
for (const market of markets.data) {
|
|
295
|
-
urls.push(`${origin}
|
|
355
|
+
urls.push(`${origin}${companyMarketPath(market.slug)}`);
|
|
296
356
|
}
|
|
297
357
|
return urls;
|
|
298
358
|
}
|
|
@@ -307,27 +367,27 @@ async function salaries(board, origin) {
|
|
|
307
367
|
if (!salaryCompanies.data.length && !titles.data.length && !skills.data.length && !locations.data.length) {
|
|
308
368
|
return [];
|
|
309
369
|
}
|
|
310
|
-
const urls = [`${origin}
|
|
370
|
+
const urls = [`${origin}${BOARD_PATHS.salaries}`];
|
|
311
371
|
if (salaryCompanies.data.length) {
|
|
312
|
-
urls.push(`${origin}
|
|
372
|
+
urls.push(`${origin}${BOARD_PATHS.salaryCompanies}`);
|
|
313
373
|
for (const c of salaryCompanies.data) {
|
|
314
|
-
urls.push(`${origin}
|
|
374
|
+
urls.push(`${origin}${companySalaryPath(c.companySlug)}`);
|
|
315
375
|
}
|
|
316
376
|
}
|
|
317
377
|
if (titles.data.length) {
|
|
318
|
-
urls.push(`${origin}
|
|
378
|
+
urls.push(`${origin}${BOARD_PATHS.salaryTitles}`);
|
|
319
379
|
for (const t of titles.data)
|
|
320
|
-
urls.push(`${origin}
|
|
380
|
+
urls.push(`${origin}${salaryTitlePath(t.slug)}`);
|
|
321
381
|
}
|
|
322
382
|
if (skills.data.length) {
|
|
323
|
-
urls.push(`${origin}
|
|
383
|
+
urls.push(`${origin}${BOARD_PATHS.salarySkills}`);
|
|
324
384
|
for (const s of skills.data)
|
|
325
|
-
urls.push(`${origin}
|
|
385
|
+
urls.push(`${origin}${salarySkillPath(s.slug)}`);
|
|
326
386
|
}
|
|
327
387
|
if (locations.data.length) {
|
|
328
|
-
urls.push(`${origin}
|
|
388
|
+
urls.push(`${origin}${BOARD_PATHS.salaryLocations}`);
|
|
329
389
|
for (const l of locations.data) {
|
|
330
|
-
urls.push(`${origin}
|
|
390
|
+
urls.push(`${origin}${salaryLocationPath(l.placeSlug)}`);
|
|
331
391
|
}
|
|
332
392
|
}
|
|
333
393
|
return urls;
|
|
@@ -336,18 +396,18 @@ async function blog(board, origin) {
|
|
|
336
396
|
const posts = await drainPages(
|
|
337
397
|
paginate(board.blog.posts.list, { limit: 100 }).pages()
|
|
338
398
|
);
|
|
339
|
-
const urls = [`${origin}
|
|
399
|
+
const urls = [`${origin}${BOARD_PATHS.blog}`];
|
|
340
400
|
const tagSlugs = /* @__PURE__ */ new Set();
|
|
341
401
|
const authorSlugs = /* @__PURE__ */ new Set();
|
|
342
402
|
for (const post of posts) {
|
|
343
|
-
urls.push(`${origin}
|
|
403
|
+
urls.push(`${origin}${blogPostPath(post.slug)}`);
|
|
344
404
|
for (const tag of post.tags) tagSlugs.add(tag.slug);
|
|
345
405
|
for (const author of post.authors) authorSlugs.add(author.slug);
|
|
346
406
|
}
|
|
347
407
|
for (const slug of [...tagSlugs].sort())
|
|
348
|
-
urls.push(`${origin}
|
|
408
|
+
urls.push(`${origin}${blogTagPath(slug)}`);
|
|
349
409
|
for (const slug of [...authorSlugs].sort()) {
|
|
350
|
-
urls.push(`${origin}
|
|
410
|
+
urls.push(`${origin}${blogAuthorPath(slug)}`);
|
|
351
411
|
}
|
|
352
412
|
return urls;
|
|
353
413
|
}
|