@cavuno/board 4.18.0 → 4.20.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/CHANGELOG.md +37 -0
- package/dist/{_spec-Dk0TIRUc.d.mts → _spec-CyNKpM_j.d.mts} +90 -4
- package/dist/{_spec-Dk0TIRUc.d.ts → _spec-CyNKpM_j.d.ts} +90 -4
- package/dist/{blog-C04NWTh_.d.mts → blog-BNIqGayD.d.mts} +1 -1
- package/dist/{blog-1THfucKR.d.ts → blog-CRvaDyzJ.d.ts} +1 -1
- package/dist/{board-CqeoQAa1.d.ts → board-CXNxSlUB.d.ts} +24 -4
- package/dist/{board-DIO9aFXx.d.mts → board-mn3GVbrC.d.mts} +24 -4
- package/dist/{breadcrumbs-mE9Zsxlq.d.mts → breadcrumbs-Bi4LHNAF.d.mts} +2 -2
- package/dist/{breadcrumbs-CCT1oC2-.d.ts → breadcrumbs-Crk6Q69T.d.ts} +2 -2
- package/dist/browser/cavuno-board.global.min.js +1 -1
- package/dist/{chunk-2WBQVVOB.mjs → chunk-NQTMFOKF.mjs} +2 -100
- package/dist/chunk-Z4ALWIGS.mjs +101 -0
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +4 -4
- package/dist/format.d.ts +4 -4
- package/dist/index.d.mts +63 -18
- package/dist/index.d.ts +63 -18
- package/dist/index.js +31 -7
- package/dist/index.mjs +41 -16
- package/dist/{jobs-CVmAWGtJ.d.mts → jobs-CALE3I8I.d.mts} +1 -1
- package/dist/{jobs-Dvv0vX8p.d.ts → jobs-CSWXqLZR.d.ts} +1 -1
- package/dist/route-contract.d.mts +2 -1
- package/dist/route-contract.d.ts +2 -1
- package/dist/{search-CcstbHOe.d.ts → search-BRCbe1Nm.d.ts} +1 -1
- package/dist/{search-BJ5myYaf.d.mts → search-B_hwS-xu.d.mts} +1 -1
- package/dist/{seo-Ds6tLMqU.d.mts → seo-CS4lrG20.d.mts} +1 -1
- package/dist/{seo-CWO6N-iE.d.ts → seo-D1u-RmLQ.d.ts} +1 -1
- package/dist/seo-files.d.mts +2 -2
- package/dist/seo-files.d.ts +2 -2
- package/dist/seo.d.mts +6 -6
- package/dist/seo.d.ts +6 -6
- package/dist/server.d.mts +6 -6
- package/dist/server.d.ts +6 -6
- package/dist/server.mjs +4 -2
- package/dist/sitemap.d.mts +15 -7
- package/dist/sitemap.d.ts +15 -7
- package/dist/sitemap.js +49 -4
- package/dist/sitemap.mjs +44 -4
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/well-known.d.mts +2 -1
- package/dist/well-known.d.ts +2 -1
- package/package.json +2 -2
- package/skills/manifest.json +1 -1
package/dist/route-contract.d.ts
CHANGED
|
@@ -92,7 +92,8 @@ declare function createBoardLinkResolver(layers: readonly ManifestLayer[]): {
|
|
|
92
92
|
};
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
|
-
* — pure history path matching for hosted rename 301s
|
|
95
|
+
* — pure history path matching for hosted rename 301s
|
|
96
|
+
*.
|
|
96
97
|
*
|
|
97
98
|
* Segment-wise matcher (no RegExp construction from templates). Templates
|
|
98
99
|
* are validated at write time but stay defensive here: any segment that
|
package/dist/seo-files.d.mts
CHANGED
package/dist/seo-files.d.ts
CHANGED
package/dist/seo.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
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-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-BNIqGayD.mjs';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-Bi4LHNAF.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-Bi4LHNAF.mjs';
|
|
4
|
+
import './_spec-CyNKpM_j.mjs';
|
|
5
|
+
import './board-mn3GVbrC.mjs';
|
|
6
|
+
import './jobs-CALE3I8I.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-
|
|
2
|
-
import { e as JsonLdObject } from './breadcrumbs-
|
|
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-
|
|
4
|
-
import './_spec-
|
|
5
|
-
import './board-
|
|
6
|
-
import './jobs-
|
|
1
|
+
import { P as PublicBlogPostSummary, B as BlogAuthorEmbed } from './blog-CRvaDyzJ.js';
|
|
2
|
+
import { e as JsonLdObject } from './breadcrumbs-Crk6Q69T.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-Crk6Q69T.js';
|
|
4
|
+
import './_spec-CyNKpM_j.js';
|
|
5
|
+
import './board-CXNxSlUB.js';
|
|
6
|
+
import './jobs-CSWXqLZR.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-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-CyNKpM_j.mjs';
|
|
3
|
+
import './search-B_hwS-xu.mjs';
|
|
4
|
+
import './board-mn3GVbrC.mjs';
|
|
5
|
+
import './jobs-CALE3I8I.mjs';
|
|
6
|
+
import './seo-CS4lrG20.mjs';
|
|
7
|
+
import './blog-BNIqGayD.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-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-CyNKpM_j.js';
|
|
3
|
+
import './search-BRCbe1Nm.js';
|
|
4
|
+
import './board-CXNxSlUB.js';
|
|
5
|
+
import './jobs-CSWXqLZR.js';
|
|
6
|
+
import './seo-D1u-RmLQ.js';
|
|
7
|
+
import './blog-CRvaDyzJ.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isNoStore,
|
|
3
|
-
isUnauthorized,
|
|
4
3
|
scopeToken
|
|
5
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Z4ALWIGS.mjs";
|
|
5
|
+
import {
|
|
6
|
+
isUnauthorized
|
|
7
|
+
} from "./chunk-NQTMFOKF.mjs";
|
|
6
8
|
|
|
7
9
|
// src/server/cookie.ts
|
|
8
10
|
var COOKIE_ATTRIBUTES = "Path=/; HttpOnly; Secure; SameSite=Lax";
|
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-CyNKpM_j.mjs';
|
|
3
|
+
import './search-B_hwS-xu.mjs';
|
|
4
|
+
import './board-mn3GVbrC.mjs';
|
|
5
|
+
import './jobs-CALE3I8I.mjs';
|
|
6
|
+
import './seo-CS4lrG20.mjs';
|
|
7
|
+
import './blog-BNIqGayD.mjs';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
|
@@ -60,7 +60,15 @@ declare function renderSitemapIndex(entries: readonly (string | SitemapIndexEntr
|
|
|
60
60
|
|
|
61
61
|
/** Matches the hosted thin-content floor: a listing page needs ≥5 jobs to index. */
|
|
62
62
|
declare const MIN_JOBS_PER_INDEXED_PAGE = 5;
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Which buckets the index lists.
|
|
65
|
+
*
|
|
66
|
+
* Mirror path: exactly the buckets the board publishes, in the canonical
|
|
67
|
+
* `SITEMAP_BUCKETS` order (the board omits empty ones).
|
|
68
|
+
*
|
|
69
|
+
* Legacy fallback (404): blog is gated by its feature; the rest emit an empty
|
|
70
|
+
* urlset when a board lacks that content (valid, just zero URLs).
|
|
71
|
+
*/
|
|
64
72
|
declare function listedBuckets(board: BoardSdk): Promise<SitemapBucket[]>;
|
|
65
73
|
declare function buildBucketUrls(board: BoardSdk, origin: string, bucket: SitemapBucket): Promise<string[]>;
|
|
66
74
|
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './seo-
|
|
7
|
-
import './blog-
|
|
2
|
+
import './_spec-CyNKpM_j.js';
|
|
3
|
+
import './search-BRCbe1Nm.js';
|
|
4
|
+
import './board-CXNxSlUB.js';
|
|
5
|
+
import './jobs-CSWXqLZR.js';
|
|
6
|
+
import './seo-D1u-RmLQ.js';
|
|
7
|
+
import './blog-CRvaDyzJ.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
|
@@ -60,7 +60,15 @@ declare function renderSitemapIndex(entries: readonly (string | SitemapIndexEntr
|
|
|
60
60
|
|
|
61
61
|
/** Matches the hosted thin-content floor: a listing page needs ≥5 jobs to index. */
|
|
62
62
|
declare const MIN_JOBS_PER_INDEXED_PAGE = 5;
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Which buckets the index lists.
|
|
65
|
+
*
|
|
66
|
+
* Mirror path: exactly the buckets the board publishes, in the canonical
|
|
67
|
+
* `SITEMAP_BUCKETS` order (the board omits empty ones).
|
|
68
|
+
*
|
|
69
|
+
* Legacy fallback (404): blog is gated by its feature; the rest emit an empty
|
|
70
|
+
* urlset when a board lacks that content (valid, just zero URLs).
|
|
71
|
+
*/
|
|
64
72
|
declare function listedBuckets(board: BoardSdk): Promise<SitemapBucket[]>;
|
|
65
73
|
declare function buildBucketUrls(board: BoardSdk, origin: string, bucket: SitemapBucket): Promise<string[]>;
|
|
66
74
|
|
package/dist/sitemap.js
CHANGED
|
@@ -134,6 +134,14 @@ function renderSitemapIndex(entries) {
|
|
|
134
134
|
return xml;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
// src/errors.ts
|
|
138
|
+
function isBoardApiError(e) {
|
|
139
|
+
return e instanceof Error && e.name === "BoardApiError" && typeof e.status === "number" && typeof e.code === "string";
|
|
140
|
+
}
|
|
141
|
+
function isNotFound(e) {
|
|
142
|
+
return isBoardApiError(e) && e.status === 404;
|
|
143
|
+
}
|
|
144
|
+
|
|
137
145
|
// src/pagination.ts
|
|
138
146
|
function paginate(listFn, query, options) {
|
|
139
147
|
async function* pages() {
|
|
@@ -295,11 +303,38 @@ function enumerateCompanies(board) {
|
|
|
295
303
|
() => drainPages(paginate(board.companies.list, { limit: PAGE }).pages())
|
|
296
304
|
);
|
|
297
305
|
}
|
|
306
|
+
var MIRROR_PAGE = 1e3;
|
|
298
307
|
async function listedBuckets(board) {
|
|
299
|
-
|
|
300
|
-
|
|
308
|
+
try {
|
|
309
|
+
const index = await board.sitemap();
|
|
310
|
+
const published = new Set(index.buckets.map((entry) => entry.bucket));
|
|
311
|
+
return SITEMAP_BUCKETS.filter((bucket) => published.has(bucket));
|
|
312
|
+
} catch (error) {
|
|
313
|
+
if (!isNotFound(error)) throw error;
|
|
314
|
+
const { features } = await board.context();
|
|
315
|
+
return SITEMAP_BUCKETS.filter((b) => b !== "blog" || features.blog);
|
|
316
|
+
}
|
|
301
317
|
}
|
|
302
318
|
async function buildBucketUrls(board, origin, bucket) {
|
|
319
|
+
try {
|
|
320
|
+
return await mirrorBucketUrls(board, origin, bucket);
|
|
321
|
+
} catch (error) {
|
|
322
|
+
if (!isNotFound(error)) throw error;
|
|
323
|
+
return legacyBucketUrls(board, origin, bucket);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
async function mirrorBucketUrls(board, origin, bucket) {
|
|
327
|
+
const pages = paginate(
|
|
328
|
+
(query, options) => board.sitemap.entries(bucket, query, options),
|
|
329
|
+
{ limit: MIRROR_PAGE }
|
|
330
|
+
).pages();
|
|
331
|
+
const urls = [];
|
|
332
|
+
for await (const page of pages) {
|
|
333
|
+
for (const entry of page.data) urls.push(`${origin}${entry.path}`);
|
|
334
|
+
}
|
|
335
|
+
return urls;
|
|
336
|
+
}
|
|
337
|
+
async function legacyBucketUrls(board, origin, bucket) {
|
|
303
338
|
switch (bucket) {
|
|
304
339
|
case "marketing":
|
|
305
340
|
return marketing(board, origin);
|
|
@@ -363,15 +398,25 @@ async function jobDetails(board, origin) {
|
|
|
363
398
|
}
|
|
364
399
|
return [...seen].sort();
|
|
365
400
|
}
|
|
401
|
+
var MARKETS_PAGE = 200;
|
|
366
402
|
async function companies(board, origin) {
|
|
367
403
|
const [list, markets] = await Promise.all([
|
|
368
404
|
enumerateCompanies(board),
|
|
369
|
-
|
|
405
|
+
// Paginate: the unsearched market list is a full cursor walk, and a single
|
|
406
|
+
// call used to stop at the first page — silently dropping every market
|
|
407
|
+
// page past it on a board with many sectors. An older API that ignores the
|
|
408
|
+
// cursor answers `hasMore: false`, so this degrades to one call there.
|
|
409
|
+
drainPages(
|
|
410
|
+
paginate(
|
|
411
|
+
(query, options) => board.companies.markets(query, options),
|
|
412
|
+
{ limit: MARKETS_PAGE }
|
|
413
|
+
).pages()
|
|
414
|
+
)
|
|
370
415
|
]);
|
|
371
416
|
const urls = [`${origin}${BOARD_PATHS.companies}`];
|
|
372
417
|
for (const company of list)
|
|
373
418
|
urls.push(`${origin}${companyPath(company.slug)}`);
|
|
374
|
-
for (const market of markets
|
|
419
|
+
for (const market of markets) {
|
|
375
420
|
urls.push(`${origin}${companyMarketPath(market.slug)}`);
|
|
376
421
|
}
|
|
377
422
|
return urls;
|
package/dist/sitemap.mjs
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paginate
|
|
3
3
|
} from "./chunk-DLSO6XXY.mjs";
|
|
4
|
+
import {
|
|
5
|
+
isNotFound
|
|
6
|
+
} from "./chunk-NQTMFOKF.mjs";
|
|
4
7
|
import {
|
|
5
8
|
BOARD_PATHS,
|
|
6
9
|
blogAuthorPath,
|
|
@@ -173,11 +176,38 @@ function enumerateCompanies(board) {
|
|
|
173
176
|
() => drainPages(paginate(board.companies.list, { limit: PAGE }).pages())
|
|
174
177
|
);
|
|
175
178
|
}
|
|
179
|
+
var MIRROR_PAGE = 1e3;
|
|
176
180
|
async function listedBuckets(board) {
|
|
177
|
-
|
|
178
|
-
|
|
181
|
+
try {
|
|
182
|
+
const index = await board.sitemap();
|
|
183
|
+
const published = new Set(index.buckets.map((entry) => entry.bucket));
|
|
184
|
+
return SITEMAP_BUCKETS.filter((bucket) => published.has(bucket));
|
|
185
|
+
} catch (error) {
|
|
186
|
+
if (!isNotFound(error)) throw error;
|
|
187
|
+
const { features } = await board.context();
|
|
188
|
+
return SITEMAP_BUCKETS.filter((b) => b !== "blog" || features.blog);
|
|
189
|
+
}
|
|
179
190
|
}
|
|
180
191
|
async function buildBucketUrls(board, origin, bucket) {
|
|
192
|
+
try {
|
|
193
|
+
return await mirrorBucketUrls(board, origin, bucket);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
if (!isNotFound(error)) throw error;
|
|
196
|
+
return legacyBucketUrls(board, origin, bucket);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function mirrorBucketUrls(board, origin, bucket) {
|
|
200
|
+
const pages = paginate(
|
|
201
|
+
(query, options) => board.sitemap.entries(bucket, query, options),
|
|
202
|
+
{ limit: MIRROR_PAGE }
|
|
203
|
+
).pages();
|
|
204
|
+
const urls = [];
|
|
205
|
+
for await (const page of pages) {
|
|
206
|
+
for (const entry of page.data) urls.push(`${origin}${entry.path}`);
|
|
207
|
+
}
|
|
208
|
+
return urls;
|
|
209
|
+
}
|
|
210
|
+
async function legacyBucketUrls(board, origin, bucket) {
|
|
181
211
|
switch (bucket) {
|
|
182
212
|
case "marketing":
|
|
183
213
|
return marketing(board, origin);
|
|
@@ -241,15 +271,25 @@ async function jobDetails(board, origin) {
|
|
|
241
271
|
}
|
|
242
272
|
return [...seen].sort();
|
|
243
273
|
}
|
|
274
|
+
var MARKETS_PAGE = 200;
|
|
244
275
|
async function companies(board, origin) {
|
|
245
276
|
const [list, markets] = await Promise.all([
|
|
246
277
|
enumerateCompanies(board),
|
|
247
|
-
|
|
278
|
+
// Paginate: the unsearched market list is a full cursor walk, and a single
|
|
279
|
+
// call used to stop at the first page — silently dropping every market
|
|
280
|
+
// page past it on a board with many sectors. An older API that ignores the
|
|
281
|
+
// cursor answers `hasMore: false`, so this degrades to one call there.
|
|
282
|
+
drainPages(
|
|
283
|
+
paginate(
|
|
284
|
+
(query, options) => board.companies.markets(query, options),
|
|
285
|
+
{ limit: MARKETS_PAGE }
|
|
286
|
+
).pages()
|
|
287
|
+
)
|
|
248
288
|
]);
|
|
249
289
|
const urls = [`${origin}${BOARD_PATHS.companies}`];
|
|
250
290
|
for (const company of list)
|
|
251
291
|
urls.push(`${origin}${companyPath(company.slug)}`);
|
|
252
|
-
for (const market of markets
|
|
292
|
+
for (const market of markets) {
|
|
253
293
|
urls.push(`${origin}${companyMarketPath(market.slug)}`);
|
|
254
294
|
}
|
|
255
295
|
return urls;
|
package/dist/suggest.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-B_hwS-xu.mjs';
|
|
2
|
+
import './_spec-CyNKpM_j.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/suggest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { h as SuggestionItem, b as SearchSuggestQuery, F as FetchOptions, g as SuggestResult } from './search-BRCbe1Nm.js';
|
|
2
|
+
import './_spec-CyNKpM_j.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
package/dist/well-known.d.mts
CHANGED
|
@@ -38,7 +38,8 @@ declare function serializeManifest(manifest: {
|
|
|
38
38
|
}): string;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* Build-plugin variant of the well-known manifest
|
|
41
|
+
* Build-plugin variant of the well-known manifest
|
|
42
|
+
*.
|
|
42
43
|
*
|
|
43
44
|
* Pure function — no fs imports and no write callback: callers (vite
|
|
44
45
|
* plugin, starter build hook) own the write of `contents` to `path` under
|
package/dist/well-known.d.ts
CHANGED
|
@@ -38,7 +38,8 @@ declare function serializeManifest(manifest: {
|
|
|
38
38
|
}): string;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
|
-
* Build-plugin variant of the well-known manifest
|
|
41
|
+
* Build-plugin variant of the well-known manifest
|
|
42
|
+
*.
|
|
42
43
|
*
|
|
43
44
|
* Pure function — no fs imports and no write callback: callers (vite
|
|
44
45
|
* plugin, starter build hook) own the write of `contents` to `path` under
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cavuno/board",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.20.0",
|
|
4
4
|
"description": "Build custom job boards and careers pages with Cavuno’s TypeScript SDK.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api-client",
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"provenance": true
|
|
222
222
|
},
|
|
223
223
|
"scripts": {
|
|
224
|
-
"build": "rm -rf dist && tsup",
|
|
224
|
+
"build": "rm -rf dist && tsup && node scripts/sanitize-dist-chunk-names.mjs",
|
|
225
225
|
"clean": "git clean -xdf .turbo dist node_modules src/generated",
|
|
226
226
|
"typecheck": "tsgo --noEmit && tsgo --noEmit -p tsconfig.node.json",
|
|
227
227
|
"test": "vitest run",
|
package/skills/manifest.json
CHANGED