@cavuno/board 1.41.0 → 1.43.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/dist/{_spec-l_596ZwW.d.mts → _spec-DQ2GR9lq.d.mts} +48 -1
- package/dist/{_spec-l_596ZwW.d.ts → _spec-DQ2GR9lq.d.ts} +48 -1
- package/dist/{board-CyHA6rRP.d.mts → board-ComPm8FD.d.mts} +1 -1
- package/dist/{board-BzK5j73O.d.ts → board-DpBlk05S.d.ts} +1 -1
- package/dist/filters.d.mts +2 -2
- package/dist/filters.d.ts +2 -2
- package/dist/format.d.mts +3 -3
- package/dist/format.d.ts +3 -3
- package/dist/go.d.mts +65 -0
- package/dist/go.d.ts +65 -0
- package/dist/go.js +130 -0
- package/dist/go.mjs +107 -0
- package/dist/index.d.mts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{jobs-CXudz1Y4.d.ts → jobs-BlnV6hmC.d.ts} +1 -1
- package/dist/{jobs-BhthvMkA.d.mts → jobs-DqujLqGk.d.mts} +1 -1
- package/dist/paths.d.mts +25 -1
- package/dist/paths.d.ts +25 -1
- package/dist/paths.js +20 -1
- package/dist/paths.mjs +20 -1
- package/dist/roles-vY0AXhoc.d.mts +82 -0
- package/dist/roles-vY0AXhoc.d.ts +82 -0
- package/dist/route-contract.d.mts +257 -0
- package/dist/route-contract.d.ts +257 -0
- package/dist/route-contract.js +1131 -0
- package/dist/route-contract.mjs +1108 -0
- package/dist/{salaries-Dr_Zugal.d.mts → salaries-CNJVapW5.d.mts} +2 -2
- package/dist/{salaries-ByBuHCLH.d.ts → salaries-DzM7rbXp.d.ts} +2 -2
- package/dist/{search-DZrq-k76.d.ts → search-B1GtdfAm.d.ts} +1 -1
- package/dist/{search-CrIlXSJP.d.mts → search-CnRMApws.d.mts} +1 -1
- package/dist/seo.d.mts +4 -4
- package/dist/seo.d.ts +4 -4
- package/dist/server.d.mts +5 -5
- package/dist/server.d.ts +5 -5
- package/dist/sitemap.d.mts +5 -5
- package/dist/sitemap.d.ts +5 -5
- package/dist/sitemap.js +8 -1
- package/dist/sitemap.mjs +8 -1
- package/dist/suggest.d.mts +2 -2
- package/dist/suggest.d.ts +2 -2
- package/dist/well-known.d.mts +113 -0
- package/dist/well-known.d.ts +113 -0
- package/dist/well-known.js +561 -0
- package/dist/well-known.mjs +538 -0
- package/package.json +31 -1
- package/skills/manifest.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-DQ2GR9lq.mjs';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-DqujLqGk.mjs';
|
|
3
3
|
|
|
4
4
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
5
5
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as Schemas } from './_spec-
|
|
2
|
-
import { L as ListEnvelope, m as RelatedSearch } from './jobs-
|
|
1
|
+
import { S as Schemas } from './_spec-DQ2GR9lq.js';
|
|
2
|
+
import { L as ListEnvelope, m as RelatedSearch } from './jobs-BlnV6hmC.js';
|
|
3
3
|
|
|
4
4
|
/** Author shape embedded on posts (no `object` discriminator). */
|
|
5
5
|
type BlogAuthorEmbed = Schemas['PublicBlogAuthorEmbed'];
|
package/dist/seo.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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-CNJVapW5.mjs';
|
|
2
|
+
import { P as PublicBoard } from './board-ComPm8FD.mjs';
|
|
3
|
+
import { P as PublicJob } from './jobs-DqujLqGk.mjs';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.mjs';
|
|
5
|
-
import './_spec-
|
|
5
|
+
import './_spec-DQ2GR9lq.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
|
package/dist/seo.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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-DzM7rbXp.js';
|
|
2
|
+
import { P as PublicBoard } from './board-DpBlk05S.js';
|
|
3
|
+
import { P as PublicJob } from './jobs-BlnV6hmC.js';
|
|
4
4
|
import { B as BoardLabelOverrides } from './ui-copy-CKfFTtLk.js';
|
|
5
|
-
import './_spec-
|
|
5
|
+
import './_spec-DQ2GR9lq.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Google for Jobs `JobPosting` structured data on the `@cavuno/board` wire
|
package/dist/server.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './salaries-
|
|
2
|
+
import './_spec-DQ2GR9lq.mjs';
|
|
3
|
+
import './search-CnRMApws.mjs';
|
|
4
|
+
import './board-ComPm8FD.mjs';
|
|
5
|
+
import './jobs-DqujLqGk.mjs';
|
|
6
|
+
import './salaries-CNJVapW5.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './salaries-
|
|
2
|
+
import './_spec-DQ2GR9lq.js';
|
|
3
|
+
import './search-B1GtdfAm.js';
|
|
4
|
+
import './board-DpBlk05S.js';
|
|
5
|
+
import './jobs-BlnV6hmC.js';
|
|
6
|
+
import './salaries-DzM7rbXp.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Session cookie codec — pure (no framework imports, no node imports) so it
|
package/dist/sitemap.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.mjs';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './salaries-
|
|
2
|
+
import './_spec-DQ2GR9lq.mjs';
|
|
3
|
+
import './search-CnRMApws.mjs';
|
|
4
|
+
import './board-ComPm8FD.mjs';
|
|
5
|
+
import './jobs-DqujLqGk.mjs';
|
|
6
|
+
import './salaries-CNJVapW5.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BoardSdk } from './index.js';
|
|
2
|
-
import './_spec-
|
|
3
|
-
import './search-
|
|
4
|
-
import './board-
|
|
5
|
-
import './jobs-
|
|
6
|
-
import './salaries-
|
|
2
|
+
import './_spec-DQ2GR9lq.js';
|
|
3
|
+
import './search-B1GtdfAm.js';
|
|
4
|
+
import './board-DpBlk05S.js';
|
|
5
|
+
import './jobs-BlnV6hmC.js';
|
|
6
|
+
import './salaries-DzM7rbXp.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Sitemap primitives — the pure XML + bucket-filename logic behind a board
|
package/dist/sitemap.js
CHANGED
|
@@ -220,7 +220,14 @@ var BOARD_PATHS = {
|
|
|
220
220
|
cookiePolicy: "/cookie-policy",
|
|
221
221
|
impressum: "/impressum",
|
|
222
222
|
talent: "/talent",
|
|
223
|
-
employers: "/employers"
|
|
223
|
+
employers: "/employers",
|
|
224
|
+
/**
|
|
225
|
+
* Alert-email surfaces (ADR-0090 D1/D4). Promoted out of raw literals in
|
|
226
|
+
* the job-alerts composer so /go indirection and email composition share
|
|
227
|
+
* one definition.
|
|
228
|
+
*/
|
|
229
|
+
alertsManage: "/alerts/manage",
|
|
230
|
+
alertsConfirm: "/alerts/confirm"
|
|
224
231
|
};
|
|
225
232
|
|
|
226
233
|
// src/sitemap/walker.ts
|
package/dist/sitemap.mjs
CHANGED
|
@@ -184,7 +184,14 @@ var BOARD_PATHS = {
|
|
|
184
184
|
cookiePolicy: "/cookie-policy",
|
|
185
185
|
impressum: "/impressum",
|
|
186
186
|
talent: "/talent",
|
|
187
|
-
employers: "/employers"
|
|
187
|
+
employers: "/employers",
|
|
188
|
+
/**
|
|
189
|
+
* Alert-email surfaces (ADR-0090 D1/D4). Promoted out of raw literals in
|
|
190
|
+
* the job-alerts composer so /go indirection and email composition share
|
|
191
|
+
* one definition.
|
|
192
|
+
*/
|
|
193
|
+
alertsManage: "/alerts/manage",
|
|
194
|
+
alertsConfirm: "/alerts/confirm"
|
|
188
195
|
};
|
|
189
196
|
|
|
190
197
|
// src/sitemap/walker.ts
|
package/dist/suggest.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-CnRMApws.mjs';
|
|
2
|
+
import './_spec-DQ2GR9lq.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 { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-
|
|
2
|
-
import './_spec-
|
|
1
|
+
import { S as SuggestionItem, a as SearchSuggestQuery, F as FetchOptions, b as SuggestResult } from './search-B1GtdfAm.js';
|
|
2
|
+
import './_spec-DQ2GR9lq.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* `@cavuno/board/suggest` — framework-agnostic headless search-suggest
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { R as RouteEntry, a as RouteRole } from './roles-vY0AXhoc.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Runtime well-known endpoint — Request → Response serving ManifestV1
|
|
5
|
+
* compiled from the app's enumerated routes (ADR-0090 D5.2; LNK-08).
|
|
6
|
+
*
|
|
7
|
+
* Pure + isomorphic: no node builtins, no framework imports. The app hands
|
|
8
|
+
* over RouteEntry[] (or a thunk) computed from its router; this module only
|
|
9
|
+
* compiles and serializes.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** Modest CDN/browser cache — structure changes only on redeploy/HMR. */
|
|
13
|
+
declare const WELL_KNOWN_CACHE_CONTROL = "public, max-age=300";
|
|
14
|
+
declare const WELL_KNOWN_CONTENT_TYPE = "application/json";
|
|
15
|
+
type WellKnownHandlerConfig = {
|
|
16
|
+
/**
|
|
17
|
+
* Enumerated routes from the app's router. May be a static array or a
|
|
18
|
+
* thunk (sync or async) so the tree can be re-read per request.
|
|
19
|
+
*/
|
|
20
|
+
routes: RouteEntry[] | (() => RouteEntry[] | Promise<RouteEntry[]>);
|
|
21
|
+
/** Optional cavunoPage marker map keyed by sourcePath. */
|
|
22
|
+
markers?: ReadonlyMap<string, RouteRole>;
|
|
23
|
+
};
|
|
24
|
+
type WellKnownHandler = (request: Request) => Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a framework-portable Request → Response handler that serves the
|
|
27
|
+
* compiled ManifestV1 as JSON. Wire format is the versioned manifest only
|
|
28
|
+
* (warnings/ambiguities stay build/doctor concerns).
|
|
29
|
+
*/
|
|
30
|
+
declare function createWellKnownHandler(config: WellKnownHandlerConfig): WellKnownHandler;
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic JSON for ManifestV1. Roles are already inserted in
|
|
33
|
+
* ALL_ROLES order by compileManifest — preserve that insertion order.
|
|
34
|
+
*/
|
|
35
|
+
declare function serializeManifest(manifest: {
|
|
36
|
+
version: 1;
|
|
37
|
+
roles: Partial<Record<RouteRole, string>>;
|
|
38
|
+
}): string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Build-plugin variant of the well-known manifest (ADR-0090 D5.2; LNK-08).
|
|
42
|
+
*
|
|
43
|
+
* Pure function — no fs imports and no write callback: callers (vite
|
|
44
|
+
* plugin, starter build hook) own the write of `contents` to `path` under
|
|
45
|
+
* `public/`, including error handling — a swallowed async write in a build
|
|
46
|
+
* step would be a silent broken artifact.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
declare const WELL_KNOWN_MANIFEST_PATH = ".well-known/cavuno.json";
|
|
50
|
+
type EmitWellKnownManifestConfig = {
|
|
51
|
+
routes: RouteEntry[];
|
|
52
|
+
markers?: ReadonlyMap<string, RouteRole>;
|
|
53
|
+
};
|
|
54
|
+
type EmitWellKnownManifestResult = {
|
|
55
|
+
path: string;
|
|
56
|
+
contents: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Compile routes into a ManifestV1 document ready to land at
|
|
60
|
+
* `public/.well-known/cavuno.json`. Returns path + contents.
|
|
61
|
+
*/
|
|
62
|
+
declare function emitWellKnownManifest(config: EmitWellKnownManifestConfig): EmitWellKnownManifestResult;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* TanStack route-tree → RouteEntry[] enumerator (LNK-08).
|
|
66
|
+
*
|
|
67
|
+
* board-sdk has NO runtime (or type) dependency on @tanstack/react-router.
|
|
68
|
+
* The public documented Route shape we walk is structural:
|
|
69
|
+
*
|
|
70
|
+
* {
|
|
71
|
+
* id?: string; // e.g. '__root__', '/jobs/$slug'
|
|
72
|
+
* path?: string; // relative segment, e.g. '$slug', 'jobs'
|
|
73
|
+
* fullPath?: string; // absolute template, e.g. '/jobs/$slug'
|
|
74
|
+
* children?: Array | Record of the same shape
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* This matches the object exported by routeTree.gen.ts after
|
|
78
|
+
* `_addFileChildren` / accepted by `createRouter({ routeTree })`.
|
|
79
|
+
* Prefer `fullPath` when present; convert `$param` → `:param`, bare `$`
|
|
80
|
+
* splat → `*`. Skip root + pathless/technical layout nodes (underscore
|
|
81
|
+
* segments) while still walking their children.
|
|
82
|
+
*
|
|
83
|
+
* Research note (2026-07-22): TanStack `Route` exposes `id`, `path`,
|
|
84
|
+
* `fullPath`, `children` on the instance (router-core Route interface).
|
|
85
|
+
* `router.flatRoutes` / `routesById` require a live Router instance —
|
|
86
|
+
* this helper deliberately walks the route *tree* so callers can pass
|
|
87
|
+
* the generated routeTree without instantiating a router.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Minimal structural type for a TanStack route-tree node.
|
|
92
|
+
* Compatible with the public Route shape; no @tanstack imports.
|
|
93
|
+
*/
|
|
94
|
+
type TanStackRouteNode = {
|
|
95
|
+
id?: string;
|
|
96
|
+
path?: string;
|
|
97
|
+
fullPath?: string;
|
|
98
|
+
children?: readonly TanStackRouteNode[] | Readonly<Record<string, TanStackRouteNode>>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Walk a TanStack route tree into RouteEntry[] for the route-contract
|
|
102
|
+
* compiler. Technical/pathless nodes are skipped; their descendants are
|
|
103
|
+
* still visited.
|
|
104
|
+
*/
|
|
105
|
+
declare function routeEntriesFromTanStackRouteTree(routeTree: TanStackRouteNode): RouteEntry[];
|
|
106
|
+
/**
|
|
107
|
+
* Convert a TanStack path template to URLPattern `:param` / `*` form.
|
|
108
|
+
* `/jobs/$categorySlug` → `/jobs/:categorySlug`
|
|
109
|
+
* `/files/$` → `/files/*`
|
|
110
|
+
*/
|
|
111
|
+
declare function tanStackPathToUrlPattern(path: string): string;
|
|
112
|
+
|
|
113
|
+
export { type EmitWellKnownManifestConfig, type EmitWellKnownManifestResult, type TanStackRouteNode, WELL_KNOWN_CACHE_CONTROL, WELL_KNOWN_CONTENT_TYPE, WELL_KNOWN_MANIFEST_PATH, type WellKnownHandler, type WellKnownHandlerConfig, createWellKnownHandler, emitWellKnownManifest, routeEntriesFromTanStackRouteTree, serializeManifest, tanStackPathToUrlPattern };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { R as RouteEntry, a as RouteRole } from './roles-vY0AXhoc.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Runtime well-known endpoint — Request → Response serving ManifestV1
|
|
5
|
+
* compiled from the app's enumerated routes (ADR-0090 D5.2; LNK-08).
|
|
6
|
+
*
|
|
7
|
+
* Pure + isomorphic: no node builtins, no framework imports. The app hands
|
|
8
|
+
* over RouteEntry[] (or a thunk) computed from its router; this module only
|
|
9
|
+
* compiles and serializes.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** Modest CDN/browser cache — structure changes only on redeploy/HMR. */
|
|
13
|
+
declare const WELL_KNOWN_CACHE_CONTROL = "public, max-age=300";
|
|
14
|
+
declare const WELL_KNOWN_CONTENT_TYPE = "application/json";
|
|
15
|
+
type WellKnownHandlerConfig = {
|
|
16
|
+
/**
|
|
17
|
+
* Enumerated routes from the app's router. May be a static array or a
|
|
18
|
+
* thunk (sync or async) so the tree can be re-read per request.
|
|
19
|
+
*/
|
|
20
|
+
routes: RouteEntry[] | (() => RouteEntry[] | Promise<RouteEntry[]>);
|
|
21
|
+
/** Optional cavunoPage marker map keyed by sourcePath. */
|
|
22
|
+
markers?: ReadonlyMap<string, RouteRole>;
|
|
23
|
+
};
|
|
24
|
+
type WellKnownHandler = (request: Request) => Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a framework-portable Request → Response handler that serves the
|
|
27
|
+
* compiled ManifestV1 as JSON. Wire format is the versioned manifest only
|
|
28
|
+
* (warnings/ambiguities stay build/doctor concerns).
|
|
29
|
+
*/
|
|
30
|
+
declare function createWellKnownHandler(config: WellKnownHandlerConfig): WellKnownHandler;
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic JSON for ManifestV1. Roles are already inserted in
|
|
33
|
+
* ALL_ROLES order by compileManifest — preserve that insertion order.
|
|
34
|
+
*/
|
|
35
|
+
declare function serializeManifest(manifest: {
|
|
36
|
+
version: 1;
|
|
37
|
+
roles: Partial<Record<RouteRole, string>>;
|
|
38
|
+
}): string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Build-plugin variant of the well-known manifest (ADR-0090 D5.2; LNK-08).
|
|
42
|
+
*
|
|
43
|
+
* Pure function — no fs imports and no write callback: callers (vite
|
|
44
|
+
* plugin, starter build hook) own the write of `contents` to `path` under
|
|
45
|
+
* `public/`, including error handling — a swallowed async write in a build
|
|
46
|
+
* step would be a silent broken artifact.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
declare const WELL_KNOWN_MANIFEST_PATH = ".well-known/cavuno.json";
|
|
50
|
+
type EmitWellKnownManifestConfig = {
|
|
51
|
+
routes: RouteEntry[];
|
|
52
|
+
markers?: ReadonlyMap<string, RouteRole>;
|
|
53
|
+
};
|
|
54
|
+
type EmitWellKnownManifestResult = {
|
|
55
|
+
path: string;
|
|
56
|
+
contents: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Compile routes into a ManifestV1 document ready to land at
|
|
60
|
+
* `public/.well-known/cavuno.json`. Returns path + contents.
|
|
61
|
+
*/
|
|
62
|
+
declare function emitWellKnownManifest(config: EmitWellKnownManifestConfig): EmitWellKnownManifestResult;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* TanStack route-tree → RouteEntry[] enumerator (LNK-08).
|
|
66
|
+
*
|
|
67
|
+
* board-sdk has NO runtime (or type) dependency on @tanstack/react-router.
|
|
68
|
+
* The public documented Route shape we walk is structural:
|
|
69
|
+
*
|
|
70
|
+
* {
|
|
71
|
+
* id?: string; // e.g. '__root__', '/jobs/$slug'
|
|
72
|
+
* path?: string; // relative segment, e.g. '$slug', 'jobs'
|
|
73
|
+
* fullPath?: string; // absolute template, e.g. '/jobs/$slug'
|
|
74
|
+
* children?: Array | Record of the same shape
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* This matches the object exported by routeTree.gen.ts after
|
|
78
|
+
* `_addFileChildren` / accepted by `createRouter({ routeTree })`.
|
|
79
|
+
* Prefer `fullPath` when present; convert `$param` → `:param`, bare `$`
|
|
80
|
+
* splat → `*`. Skip root + pathless/technical layout nodes (underscore
|
|
81
|
+
* segments) while still walking their children.
|
|
82
|
+
*
|
|
83
|
+
* Research note (2026-07-22): TanStack `Route` exposes `id`, `path`,
|
|
84
|
+
* `fullPath`, `children` on the instance (router-core Route interface).
|
|
85
|
+
* `router.flatRoutes` / `routesById` require a live Router instance —
|
|
86
|
+
* this helper deliberately walks the route *tree* so callers can pass
|
|
87
|
+
* the generated routeTree without instantiating a router.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Minimal structural type for a TanStack route-tree node.
|
|
92
|
+
* Compatible with the public Route shape; no @tanstack imports.
|
|
93
|
+
*/
|
|
94
|
+
type TanStackRouteNode = {
|
|
95
|
+
id?: string;
|
|
96
|
+
path?: string;
|
|
97
|
+
fullPath?: string;
|
|
98
|
+
children?: readonly TanStackRouteNode[] | Readonly<Record<string, TanStackRouteNode>>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Walk a TanStack route tree into RouteEntry[] for the route-contract
|
|
102
|
+
* compiler. Technical/pathless nodes are skipped; their descendants are
|
|
103
|
+
* still visited.
|
|
104
|
+
*/
|
|
105
|
+
declare function routeEntriesFromTanStackRouteTree(routeTree: TanStackRouteNode): RouteEntry[];
|
|
106
|
+
/**
|
|
107
|
+
* Convert a TanStack path template to URLPattern `:param` / `*` form.
|
|
108
|
+
* `/jobs/$categorySlug` → `/jobs/:categorySlug`
|
|
109
|
+
* `/files/$` → `/files/*`
|
|
110
|
+
*/
|
|
111
|
+
declare function tanStackPathToUrlPattern(path: string): string;
|
|
112
|
+
|
|
113
|
+
export { type EmitWellKnownManifestConfig, type EmitWellKnownManifestResult, type TanStackRouteNode, WELL_KNOWN_CACHE_CONTROL, WELL_KNOWN_CONTENT_TYPE, WELL_KNOWN_MANIFEST_PATH, type WellKnownHandler, type WellKnownHandlerConfig, createWellKnownHandler, emitWellKnownManifest, routeEntriesFromTanStackRouteTree, serializeManifest, tanStackPathToUrlPattern };
|