careermate 0.0.12 → 0.0.13

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/dist/doctor.mjs CHANGED
@@ -86991,7 +86991,7 @@ var ApplicationContextSchema = external_exports.object({
86991
86991
  });
86992
86992
 
86993
86993
  // packages/shared/src/build-info.ts
86994
- var APP_VERSION = true ? "0.0.12" : "0.0.0-dev";
86994
+ var APP_VERSION = true ? "0.0.13" : "0.0.0-dev";
86995
86995
  var BUNDLED = true;
86996
86996
 
86997
86997
  // packages/shared/src/index.ts
@@ -89181,7 +89181,7 @@ var wanted = {
89181
89181
  const url2 = `https://www.wanted.co.kr/api/v4/jobs?country=kr&locations=all&years=-1&job_sort=job.latest_order&limit=${limit}&offset=0&query=${encodeURIComponent(query)}`;
89182
89182
  const j = wantedSchema.parse(await getJson(url2, timeoutMs));
89183
89183
  return j.data.map((r) => {
89184
- const annual = r.annual_from || r.annual_to ? `${r.annual_from ?? 0}~${r.annual_to ?? "?"}\uB144` : void 0;
89184
+ const annual = r.annual_from || r.annual_to ? r.annual_to == null || r.annual_to >= 100 ? `${r.annual_from ?? 0}\uB144 \uC774\uC0C1` : `${r.annual_from ?? 0}~${r.annual_to}\uB144` : void 0;
89185
89185
  return {
89186
89186
  source: "wanted",
89187
89187
  company: r.company.name,
@@ -89201,7 +89201,7 @@ var jumpit = {
89201
89201
  async search(query, limit, timeoutMs) {
89202
89202
  const positions = [];
89203
89203
  for (let page = 1; positions.length < limit && page <= Math.ceil(limit / 16); page++) {
89204
- const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=rsp_rate&page=${page}&keyword=${encodeURIComponent(query)}`;
89204
+ const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=relation&page=${page}&keyword=${encodeURIComponent(query)}`;
89205
89205
  const got = jumpitSchema.parse(await getJson(url2, timeoutMs)).result.positions;
89206
89206
  positions.push(...got);
89207
89207
  if (got.length < 16) break;
@@ -89425,7 +89425,7 @@ async function searchJobs(query, opts = {}) {
89425
89425
  ...filtered_out !== void 0 ? { filtered_out } : {}
89426
89426
  };
89427
89427
  }
89428
- var normCompany = (s) => s.replace(/\(주\)|㈜|주식회사|\(유\)|\(재\)/g, "").toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
89428
+ var normCompany = (s) => s.replace(/\([^)]*\)|㈜|주식회사/g, "").toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
89429
89429
  var normTitle = (title, company) => {
89430
89430
  const c = normCompany(company);
89431
89431
  return title.replace(/\[([^\]]*)\]/g, (tag, inner) => {
package/dist/mcp.mjs CHANGED
@@ -103447,7 +103447,7 @@ var ApplicationContextSchema = external_exports.object({
103447
103447
  });
103448
103448
 
103449
103449
  // packages/shared/src/build-info.ts
103450
- var APP_VERSION = true ? "0.0.12" : "0.0.0-dev";
103450
+ var APP_VERSION = true ? "0.0.13" : "0.0.0-dev";
103451
103451
  var BUNDLED = true;
103452
103452
 
103453
103453
  // packages/shared/src/index.ts
@@ -105637,7 +105637,7 @@ var wanted = {
105637
105637
  const url2 = `https://www.wanted.co.kr/api/v4/jobs?country=kr&locations=all&years=-1&job_sort=job.latest_order&limit=${limit}&offset=0&query=${encodeURIComponent(query)}`;
105638
105638
  const j = wantedSchema.parse(await getJson(url2, timeoutMs));
105639
105639
  return j.data.map((r) => {
105640
- const annual = r.annual_from || r.annual_to ? `${r.annual_from ?? 0}~${r.annual_to ?? "?"}\uB144` : void 0;
105640
+ const annual = r.annual_from || r.annual_to ? r.annual_to == null || r.annual_to >= 100 ? `${r.annual_from ?? 0}\uB144 \uC774\uC0C1` : `${r.annual_from ?? 0}~${r.annual_to}\uB144` : void 0;
105641
105641
  return {
105642
105642
  source: "wanted",
105643
105643
  company: r.company.name,
@@ -105657,7 +105657,7 @@ var jumpit = {
105657
105657
  async search(query, limit, timeoutMs) {
105658
105658
  const positions = [];
105659
105659
  for (let page = 1; positions.length < limit && page <= Math.ceil(limit / 16); page++) {
105660
- const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=rsp_rate&page=${page}&keyword=${encodeURIComponent(query)}`;
105660
+ const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=relation&page=${page}&keyword=${encodeURIComponent(query)}`;
105661
105661
  const got = jumpitSchema.parse(await getJson(url2, timeoutMs)).result.positions;
105662
105662
  positions.push(...got);
105663
105663
  if (got.length < 16) break;
@@ -105881,7 +105881,7 @@ async function searchJobs(query, opts = {}) {
105881
105881
  ...filtered_out !== void 0 ? { filtered_out } : {}
105882
105882
  };
105883
105883
  }
105884
- var normCompany = (s) => s.replace(/\(주\)|㈜|주식회사|\(유\)|\(재\)/g, "").toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
105884
+ var normCompany = (s) => s.replace(/\([^)]*\)|㈜|주식회사/g, "").toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
105885
105885
  var normTitle = (title, company) => {
105886
105886
  const c = normCompany(company);
105887
105887
  return title.replace(/\[([^\]]*)\]/g, (tag, inner) => {
package/dist/web.mjs CHANGED
@@ -55283,7 +55283,7 @@ var ApplicationContextSchema = external_exports.object({
55283
55283
  });
55284
55284
 
55285
55285
  // packages/shared/src/build-info.ts
55286
- var APP_VERSION = true ? "0.0.12" : "0.0.0-dev";
55286
+ var APP_VERSION = true ? "0.0.13" : "0.0.0-dev";
55287
55287
  var BUNDLED = true;
55288
55288
 
55289
55289
  // packages/shared/src/index.ts
@@ -57491,7 +57491,7 @@ var wanted = {
57491
57491
  const url2 = `https://www.wanted.co.kr/api/v4/jobs?country=kr&locations=all&years=-1&job_sort=job.latest_order&limit=${limit}&offset=0&query=${encodeURIComponent(query)}`;
57492
57492
  const j = wantedSchema.parse(await getJson(url2, timeoutMs));
57493
57493
  return j.data.map((r) => {
57494
- const annual = r.annual_from || r.annual_to ? `${r.annual_from ?? 0}~${r.annual_to ?? "?"}\uB144` : void 0;
57494
+ const annual = r.annual_from || r.annual_to ? r.annual_to == null || r.annual_to >= 100 ? `${r.annual_from ?? 0}\uB144 \uC774\uC0C1` : `${r.annual_from ?? 0}~${r.annual_to}\uB144` : void 0;
57495
57495
  return {
57496
57496
  source: "wanted",
57497
57497
  company: r.company.name,
@@ -57511,7 +57511,7 @@ var jumpit = {
57511
57511
  async search(query, limit, timeoutMs) {
57512
57512
  const positions = [];
57513
57513
  for (let page = 1; positions.length < limit && page <= Math.ceil(limit / 16); page++) {
57514
- const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=rsp_rate&page=${page}&keyword=${encodeURIComponent(query)}`;
57514
+ const url2 = `https://jumpit-api.saramin.co.kr/api/positions?sort=relation&page=${page}&keyword=${encodeURIComponent(query)}`;
57515
57515
  const got = jumpitSchema.parse(await getJson(url2, timeoutMs)).result.positions;
57516
57516
  positions.push(...got);
57517
57517
  if (got.length < 16) break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "careermate",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
5
  "description": "CareerMate — an MCP-first, local-first career workspace. Your career database and documents stay on your machine; optional discovery and update features may use the internet without sending stored career data.",
6
6
  "license": "MIT",
@@ -170,9 +170,12 @@ const wanted: Provider = {
170
170
  `&job_sort=job.latest_order&limit=${limit}&offset=0&query=${encodeURIComponent(query)}`;
171
171
  const j = wantedSchema.parse(await getJson(url, timeoutMs));
172
172
  return j.data.map((r) => {
173
+ // Wanted uses 100 for "no upper bound".
173
174
  const annual =
174
175
  r.annual_from || r.annual_to
175
- ? `${r.annual_from ?? 0}~${r.annual_to ?? '?'}년`
176
+ ? r.annual_to == null || r.annual_to >= 100
177
+ ? `${r.annual_from ?? 0}년 이상`
178
+ : `${r.annual_from ?? 0}~${r.annual_to}년`
176
179
  : undefined;
177
180
  return {
178
181
  source: 'wanted',
@@ -196,7 +199,7 @@ const jumpit: Provider = {
196
199
  const positions: z.infer<typeof jumpitSchema>['result']['positions'] = [];
197
200
  for (let page = 1; positions.length < limit && page <= Math.ceil(limit / 16); page++) {
198
201
  const url =
199
- `https://jumpit-api.saramin.co.kr/api/positions?sort=rsp_rate&page=${page}&keyword=${encodeURIComponent(query)}`;
202
+ `https://jumpit-api.saramin.co.kr/api/positions?sort=relation&page=${page}&keyword=${encodeURIComponent(query)}`;
200
203
  const got = jumpitSchema.parse(await getJson(url, timeoutMs)).result.positions;
201
204
  positions.push(...got);
202
205
  if (got.length < 16) break;
@@ -461,8 +464,9 @@ export async function searchJobs(query: string, opts: JobSearchOptions = {}): Pr
461
464
  };
462
465
  }
463
466
 
467
+ // Any "(...)" goes: "(주)" and brand notes like "힐링페이퍼(강남언니)" vs "(주)힐링페이퍼".
464
468
  const normCompany = (s: string) =>
465
- s.replace(/\(주\)|㈜|주식회사|\(유\)|\(재\)/g, '').toLowerCase().replace(/[^\p{L}\p{N}]/gu, '');
469
+ s.replace(/\([^)]*\)|㈜|주식회사/g, '').toLowerCase().replace(/[^\p{L}\p{N}]/gu, '');
466
470
  /** Drop only a "[company]" tag (Remember prefixes titles with it); "[신입]", "[서울]" and the like stay. */
467
471
  const normTitle = (title: string, company: string) => {
468
472
  const c = normCompany(company);