@plumix/core 0.2.0 → 0.4.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 (167) hide show
  1. package/dist/auth/bootstrap.d.ts.map +1 -1
  2. package/dist/auth/bootstrap.js +39 -22
  3. package/dist/auth/bootstrap.js.map +1 -1
  4. package/dist/cache/tags.d.ts.map +1 -1
  5. package/dist/cache/tags.js +9 -0
  6. package/dist/cache/tags.js.map +1 -1
  7. package/dist/db/errors.d.ts +8 -0
  8. package/dist/db/errors.d.ts.map +1 -1
  9. package/dist/db/errors.js +22 -0
  10. package/dist/db/errors.js.map +1 -1
  11. package/dist/db/index.d.ts +1 -1
  12. package/dist/db/index.d.ts.map +1 -1
  13. package/dist/db/index.js +1 -1
  14. package/dist/db/index.js.map +1 -1
  15. package/dist/db/schema/users.d.ts +57 -0
  16. package/dist/db/schema/users.d.ts.map +1 -1
  17. package/dist/db/schema/users.js +10 -2
  18. package/dist/db/schema/users.js.map +1 -1
  19. package/dist/debug-bar/panels/template.d.ts +5 -8
  20. package/dist/debug-bar/panels/template.d.ts.map +1 -1
  21. package/dist/debug-bar/panels/template.js +22 -8
  22. package/dist/debug-bar/panels/template.js.map +1 -1
  23. package/dist/debug-bar/primitives.d.ts +1 -1
  24. package/dist/debug-bar/primitives.d.ts.map +1 -1
  25. package/dist/debug-bar/primitives.js +1 -1
  26. package/dist/debug-bar/primitives.js.map +1 -1
  27. package/dist/debug-bar/styles.d.ts.map +1 -1
  28. package/dist/debug-bar/styles.js +9 -14
  29. package/dist/debug-bar/styles.js.map +1 -1
  30. package/dist/debug-bar/template-node-label.d.ts.map +1 -1
  31. package/dist/debug-bar/template-node-label.js +8 -2
  32. package/dist/debug-bar/template-node-label.js.map +1 -1
  33. package/dist/index.d.ts +7 -6
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +4 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/plugin/manifest.d.ts +34 -0
  38. package/dist/plugin/manifest.d.ts.map +1 -1
  39. package/dist/plugin/manifest.js +1 -0
  40. package/dist/plugin/manifest.js.map +1 -1
  41. package/dist/plugin/setup-context.d.ts +10 -1
  42. package/dist/plugin/setup-context.d.ts.map +1 -1
  43. package/dist/plugin/setup-context.js +12 -0
  44. package/dist/plugin/setup-context.js.map +1 -1
  45. package/dist/route/compile.d.ts +21 -0
  46. package/dist/route/compile.d.ts.map +1 -1
  47. package/dist/route/compile.js +63 -1
  48. package/dist/route/compile.js.map +1 -1
  49. package/dist/route/current.d.ts +5 -3
  50. package/dist/route/current.d.ts.map +1 -1
  51. package/dist/route/date-range.d.ts +12 -0
  52. package/dist/route/date-range.d.ts.map +1 -0
  53. package/dist/route/date-range.js +39 -0
  54. package/dist/route/date-range.js.map +1 -0
  55. package/dist/route/intent.d.ts +7 -3
  56. package/dist/route/intent.d.ts.map +1 -1
  57. package/dist/route/match.d.ts +1 -0
  58. package/dist/route/match.d.ts.map +1 -1
  59. package/dist/route/match.js +1 -1
  60. package/dist/route/match.js.map +1 -1
  61. package/dist/route/render/build-resolved-entries.d.ts.map +1 -1
  62. package/dist/route/render/build-resolved-entries.js +6 -1
  63. package/dist/route/render/build-resolved-entries.js.map +1 -1
  64. package/dist/route/render/render-template.d.ts +6 -4
  65. package/dist/route/render/render-template.d.ts.map +1 -1
  66. package/dist/route/render/render-template.js +36 -48
  67. package/dist/route/render/render-template.js.map +1 -1
  68. package/dist/route/render/resolved-entry.d.ts +46 -5
  69. package/dist/route/render/resolved-entry.d.ts.map +1 -1
  70. package/dist/route/render/template-builders.d.ts +124 -0
  71. package/dist/route/render/template-builders.d.ts.map +1 -0
  72. package/dist/route/render/template-builders.js +172 -0
  73. package/dist/route/render/template-builders.js.map +1 -0
  74. package/dist/route/render/template-hierarchy.d.ts +69 -38
  75. package/dist/route/render/template-hierarchy.d.ts.map +1 -1
  76. package/dist/route/render/template-hierarchy.js +150 -74
  77. package/dist/route/render/template-hierarchy.js.map +1 -1
  78. package/dist/route/resolve.d.ts +5 -3
  79. package/dist/route/resolve.d.ts.map +1 -1
  80. package/dist/route/resolve.js +177 -35
  81. package/dist/route/resolve.js.map +1 -1
  82. package/dist/rpc/procedures/entry/create.d.ts +2 -2
  83. package/dist/rpc/procedures/entry/delete-permanent.d.ts +2 -2
  84. package/dist/rpc/procedures/entry/duplicate.d.ts +2 -2
  85. package/dist/rpc/procedures/entry/get.d.ts +2 -2
  86. package/dist/rpc/procedures/entry/index.d.ts +22 -22
  87. package/dist/rpc/procedures/entry/list.d.ts +2 -2
  88. package/dist/rpc/procedures/entry/publish.d.ts +2 -2
  89. package/dist/rpc/procedures/entry/restore.d.ts +2 -2
  90. package/dist/rpc/procedures/entry/revisions.d.ts +8 -8
  91. package/dist/rpc/procedures/entry/trash.d.ts +2 -2
  92. package/dist/rpc/procedures/entry/update.d.ts +2 -2
  93. package/dist/rpc/procedures/term/create.d.ts +2 -2
  94. package/dist/rpc/procedures/term/delete.d.ts +2 -2
  95. package/dist/rpc/procedures/term/get.d.ts +2 -2
  96. package/dist/rpc/procedures/term/index.d.ts +10 -10
  97. package/dist/rpc/procedures/term/list.d.ts +2 -2
  98. package/dist/rpc/procedures/term/update.d.ts +2 -2
  99. package/dist/rpc/procedures/user/delete.d.ts +2 -0
  100. package/dist/rpc/procedures/user/delete.d.ts.map +1 -1
  101. package/dist/rpc/procedures/user/disable.d.ts +2 -0
  102. package/dist/rpc/procedures/user/disable.d.ts.map +1 -1
  103. package/dist/rpc/procedures/user/enable.d.ts +2 -0
  104. package/dist/rpc/procedures/user/enable.d.ts.map +1 -1
  105. package/dist/rpc/procedures/user/get.d.ts +2 -0
  106. package/dist/rpc/procedures/user/get.d.ts.map +1 -1
  107. package/dist/rpc/procedures/user/index.d.ts +12 -0
  108. package/dist/rpc/procedures/user/index.d.ts.map +1 -1
  109. package/dist/rpc/procedures/user/invite.d.ts.map +1 -1
  110. package/dist/rpc/procedures/user/invite.js +28 -15
  111. package/dist/rpc/procedures/user/invite.js.map +1 -1
  112. package/dist/rpc/procedures/user/list.d.ts +2 -0
  113. package/dist/rpc/procedures/user/list.d.ts.map +1 -1
  114. package/dist/rpc/procedures/user/list.js +1 -0
  115. package/dist/rpc/procedures/user/list.js.map +1 -1
  116. package/dist/rpc/procedures/user/update.d.ts +2 -0
  117. package/dist/rpc/procedures/user/update.d.ts.map +1 -1
  118. package/dist/rpc/router.d.ts +44 -32
  119. package/dist/rpc/router.d.ts.map +1 -1
  120. package/dist/runtime/app.d.ts +0 -8
  121. package/dist/runtime/app.d.ts.map +1 -1
  122. package/dist/runtime/app.js +0 -38
  123. package/dist/runtime/app.js.map +1 -1
  124. package/dist/runtime/dispatcher.d.ts.map +1 -1
  125. package/dist/runtime/dispatcher.js +74 -13
  126. package/dist/runtime/dispatcher.js.map +1 -1
  127. package/dist/seo/feed.d.ts +19 -4
  128. package/dist/seo/feed.d.ts.map +1 -1
  129. package/dist/seo/feed.js +49 -12
  130. package/dist/seo/feed.js.map +1 -1
  131. package/dist/seo/head-defaults.d.ts.map +1 -1
  132. package/dist/seo/head-defaults.js +6 -3
  133. package/dist/seo/head-defaults.js.map +1 -1
  134. package/dist/template-deps.js +1 -1
  135. package/dist/template-registry.d.ts +87 -0
  136. package/dist/template-registry.d.ts.map +1 -0
  137. package/dist/template-registry.js +1 -0
  138. package/dist/template-registry.js.map +1 -0
  139. package/dist/template.d.ts +2 -2
  140. package/dist/test/default-theme.d.ts.map +1 -1
  141. package/dist/test/default-theme.js +10 -6
  142. package/dist/test/default-theme.js.map +1 -1
  143. package/dist/test/factories.d.ts +39 -21
  144. package/dist/test/factories.d.ts.map +1 -1
  145. package/dist/test/factories.js +1 -0
  146. package/dist/test/factories.js.map +1 -1
  147. package/dist/theme-errors.d.ts +0 -3
  148. package/dist/theme-errors.d.ts.map +1 -1
  149. package/dist/theme-errors.js +7 -18
  150. package/dist/theme-errors.js.map +1 -1
  151. package/dist/theme.d.ts +67 -23
  152. package/dist/theme.d.ts.map +1 -1
  153. package/dist/theme.js +30 -10
  154. package/dist/theme.js.map +1 -1
  155. package/dist/users/slug.d.ts +12 -0
  156. package/dist/users/slug.d.ts.map +1 -0
  157. package/dist/users/slug.js +32 -0
  158. package/dist/users/slug.js.map +1 -0
  159. package/dist/welcome-theme.d.ts +2 -2
  160. package/dist/welcome-theme.d.ts.map +1 -1
  161. package/dist/welcome-theme.js +7 -6
  162. package/dist/welcome-theme.js.map +1 -1
  163. package/package.json +7 -7
  164. package/dist/route/render/archive-props.d.ts +0 -39
  165. package/dist/route/render/archive-props.d.ts.map +0 -1
  166. package/dist/route/render/archive-props.js +0 -32
  167. package/dist/route/render/archive-props.js.map +0 -1
@@ -1,88 +1,164 @@
1
1
  /**
2
- * The WordPress template hierarchy, ported to a typed React world.
2
+ * Template resolution for the array-based `templates`. `resolveTemplate` walks a
3
+ * theme's rules — targeted matchers (`forEntryType`/`forTermTaxonomy`) in
4
+ * declaration order, then the generic tier for the node's kind, then the
5
+ * universal `fallback`. `resolveErrorTemplate` looks up the 404/500 tiers.
3
6
  *
4
- * `getPossibleTemplates(node)` is a pure function returning the ordered
5
- * candidate template names a theme can register for a given resolved
6
- * request. The render pipeline walks this list greedy-first-match
7
- * against the registered template map.
8
- *
9
- * Mirrors WordPress's hierarchy verbatim including the `category-…` /
10
- * `tag-…` aliases for the built-in taxonomies (a hard-coded WP rule that
11
- * predates the generic `taxonomy-{tax}-…` chain) and the fall-through to
12
- * `archive` / `index`. Faust.js exposes the same shape from
13
- * `getTemplate.ts`; the two implementations should produce identical
14
- * candidate lists for the same input.
15
- *
16
- * `resolveTemplateCandidates(node, hooks)` is the async orchestrator the
17
- * renderer calls: it runs the pure walker, then applies the
18
- * `template:hierarchy` filter chain so plugins can mutate the list.
7
+ * The `ResolvedNode` shapes carry the identity the resolver matches on (kind +
8
+ * type + slug/id).
9
+ */
10
+ // Maps each resolved-node kind to the generic tier that renders it. `fallback`
11
+ // (universal) and the `notFound`/`serverError` handlers are not node-matched —
12
+ // the former is the terminal, the latter fire on a condition, not a node.
13
+ const GENERIC_TIER_FOR_NODE = {
14
+ content: "entry",
15
+ "content-type-archive": "archive",
16
+ term: "taxonomy",
17
+ author: "author",
18
+ date: "date",
19
+ // Plugin archives have no dedicated generic tier — they template via a
20
+ // `forArchiveType(name)` targeted rule, else the universal `fallback`.
21
+ custom: "fallback",
22
+ "front-page": "frontPage",
23
+ search: "search",
24
+ };
25
+ /**
26
+ * The identity part of a match: node kind + type name, then the optional
27
+ * `slug`/`id` narrowing — an unset selector matches any.
19
28
  */
20
- export function getPossibleTemplates(node) {
21
- const candidates = [];
29
+ function matchesIdentity(match, node) {
30
+ if (match.nodeKind !== node.kind)
31
+ return false;
22
32
  switch (node.kind) {
23
- case "term":
24
- appendTermNodeCandidates(node, candidates);
25
- break;
26
- case "content":
27
- appendContentNodeCandidates(node, candidates);
28
- break;
29
33
  case "content-type-archive":
30
- candidates.push(`archive-${node.entryType}`, "archive");
31
- break;
32
- case "front-page":
33
- candidates.push("front-page", "home");
34
- break;
35
- case "posts-page":
36
- candidates.push("home");
37
- break;
38
- case "search":
39
- candidates.push("search");
40
- break;
34
+ return match.type === node.entryType;
35
+ case "content":
36
+ return (match.type === node.entryType &&
37
+ (match.slug === undefined || match.slug === node.slug) &&
38
+ (match.id === undefined || match.id === node.databaseId));
39
+ case "term":
40
+ return (match.type === node.taxonomy &&
41
+ (match.slug === undefined || match.slug === node.slug) &&
42
+ (match.id === undefined || match.id === node.databaseId));
43
+ case "author":
44
+ // Author matchers carry a fixed `type` of "author"; identity narrows by
45
+ // slug/id like a term.
46
+ return (match.type === "author" &&
47
+ (match.slug === undefined || match.slug === node.slug) &&
48
+ (match.id === undefined || match.id === node.databaseId));
49
+ case "date":
50
+ // Date matchers carry a fixed `type` of "date" and match one exact
51
+ // granularity: an unset component (`forDate(2026)` has no month/day)
52
+ // requires the node's component to be null, so a year matcher matches the
53
+ // year archive only, not that year's month/day archives.
54
+ return (match.type === "date" &&
55
+ match.year === node.year &&
56
+ (match.month ?? null) === node.month &&
57
+ (match.day ?? null) === node.day);
58
+ case "custom":
59
+ // A `forArchiveType(name)` matcher carries the archive-type name as `type`.
60
+ return match.type === node.name;
61
+ default:
62
+ return false;
41
63
  }
42
- candidates.push("index");
43
- return candidates;
44
64
  }
45
65
  /**
46
- * The async orchestrator the renderer calls: runs the pure walker, then
47
- * applies the `template:hierarchy` filter chain. Kept separate from the
48
- * pure walker so unit tests don't need a HookRegistry to exercise the
49
- * branching logic.
66
+ * Does a targeted matcher apply? Identity first, then the optional data
67
+ * predicate (`whereMeta`/`where`/`named`) which needs the resolved data, so a
68
+ * predicate rule never matches when `data` is absent.
50
69
  */
51
- export async function resolveTemplateCandidates(node, hooks) {
52
- const initial = getPossibleTemplates(node);
53
- return hooks.applyFilter("template:hierarchy", initial, { node });
70
+ function matchesNode(match, node, data) {
71
+ if (!matchesIdentity(match, node))
72
+ return false;
73
+ if (match.predicate === undefined)
74
+ return true;
75
+ return data !== undefined && match.predicate(data);
54
76
  }
55
- function appendTermNodeCandidates(node, out) {
56
- // Built-in taxonomies retain their WP-historical aliases. New taxonomies
57
- // (registered via `registerTermTaxonomy('region', …)`) flow through the
58
- // generic `taxonomy-{tax}-…` chain below.
59
- if (node.taxonomy === "category" || node.taxonomy === "tag") {
60
- out.push(`${node.taxonomy}-${node.slug}`);
61
- out.push(`${node.taxonomy}-${node.databaseId}`);
62
- out.push(node.taxonomy);
63
- }
64
- else {
65
- out.push(`taxonomy-${node.taxonomy}-${node.slug}`);
66
- out.push(`taxonomy-${node.taxonomy}-${node.databaseId}`);
67
- out.push(`taxonomy-${node.taxonomy}`);
68
- out.push("taxonomy");
77
+ /**
78
+ * Resolve a node to its template rule from a theme's `templates` array:
79
+ * (1) targeted rules (`forEntryType`/`forTermTaxonomy`, incl. `whereMeta`/`where`/
80
+ * `named` predicates) in declaration order, first match wins; (2) the generic
81
+ * tier for the node's kind; (3) the universal `fallback`. Returns `undefined`
82
+ * when nothing matches — the caller then renders the `notFound` (404) template.
83
+ * `data` is required for predicate rules to match.
84
+ */
85
+ export function resolveTemplate(rules, node, data) {
86
+ for (const rule of rules) {
87
+ if (rule.match !== undefined && matchesNode(rule.match, node, data)) {
88
+ return rule;
89
+ }
69
90
  }
70
- out.push("archive");
91
+ const tier = GENERIC_TIER_FOR_NODE[node.kind];
92
+ return (rules.find((r) => r.tier === tier) ??
93
+ rules.find((r) => r.tier === "fallback"));
71
94
  }
72
- function appendContentNodeCandidates(node, out) {
73
- // `page` short-circuits the `single` chain — page-{slug}, page-{id}, page,
74
- // then singular. Every other entry type (post + custom CPTs) walks the
75
- // full single-* chain.
76
- if (node.entryType === "page") {
77
- out.push(`page-${node.slug}`);
78
- out.push(`page-${node.databaseId}`);
79
- out.push("page");
80
- }
81
- else {
82
- out.push(`single-${node.entryType}-${node.slug}`);
83
- out.push(`single-${node.entryType}`);
84
- out.push("single");
85
- }
86
- out.push("singular");
95
+ /**
96
+ * Look up an error-tier template (`notFound` 404, `serverError` → 500).
97
+ * Separate from `resolveTemplate` because error pages are triggered by a
98
+ * condition (no match, or a render throw), not by a resolved node.
99
+ */
100
+ export function resolveErrorTemplate(rules, tier) {
101
+ return rules.find((r) => r.tier === tier);
102
+ }
103
+ /**
104
+ * A short human label for a rule — its tier, or (for a targeted rule) the type
105
+ * plus any `:slug` / `#id` narrowing. Used by the debug bar and as the
106
+ * normalize-error slot name.
107
+ */
108
+ export function ruleLabel(rule) {
109
+ if (rule.tier !== undefined)
110
+ return rule.tier;
111
+ const m = rule.match;
112
+ if (m === undefined)
113
+ return "?";
114
+ let sel = "";
115
+ if (m.slug !== undefined)
116
+ sel = `:${m.slug}`;
117
+ else if (m.id !== undefined)
118
+ sel = `#${m.id}`;
119
+ const prefix = m.nodeKind === "content-type-archive" ? "archive:" : "";
120
+ return `${prefix}${m.type}${sel}`;
121
+ }
122
+ /**
123
+ * Replay `resolveTemplate` and classify every rule for the debug bar: which one
124
+ * won, which targeted rules were evaluated-but-skipped (with their predicate
125
+ * result), and which were never reached because an earlier zone already won.
126
+ * Dev-only — `resolveTemplate` stays allocation-free on the render hot path.
127
+ */
128
+ export function explainTemplateResolution(rules, node, data) {
129
+ const winner = resolveTemplate(rules, node, data);
130
+ // The targeted walk stops at the first matching targeted rule. If the winner
131
+ // is targeted, only rules up to it were evaluated; otherwise every targeted
132
+ // rule was tried and skipped.
133
+ const winnerIsTargeted = winner?.match !== undefined;
134
+ const winnerIndex = winner ? rules.indexOf(winner) : -1;
135
+ const steps = rules.map((rule, index) => {
136
+ const label = ruleLabel(rule);
137
+ let status;
138
+ if (rule === winner) {
139
+ status = "matched";
140
+ }
141
+ else if (rule.match !== undefined) {
142
+ const evaluated = !winnerIsTargeted || index < winnerIndex;
143
+ status = evaluated ? "skipped" : "never-evaluated";
144
+ }
145
+ else {
146
+ status = "never-evaluated";
147
+ }
148
+ const match = rule.match;
149
+ if (match?.predicate !== undefined && status !== "never-evaluated") {
150
+ // A predicate only runs after identity matches and when data is present.
151
+ if (data !== undefined && matchesIdentity(match, node)) {
152
+ return {
153
+ label,
154
+ status,
155
+ predicate: { fired: true, result: match.predicate(data) },
156
+ };
157
+ }
158
+ return { label, status, predicate: { fired: false, result: false } };
159
+ }
160
+ return { label, status };
161
+ });
162
+ return { steps, winner: winner ? ruleLabel(winner) : null };
87
163
  }
88
164
  //# sourceMappingURL=template-hierarchy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-hierarchy.js","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-hierarchy.js","sourceRoot":"","sources":["../../../src/route/render/template-hierarchy.ts"],"names":[],"mappings":"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"}
@@ -3,15 +3,17 @@ import type { RegisteredTemplateDep } from "../template-deps.js";
3
3
  import type { DocumentManifest, ThemeDescriptor } from "../theme.js";
4
4
  import type { RouteMatch } from "./match.js";
5
5
  import type { AssetManifest } from "./render/asset-manifest.js";
6
- import type { ArchiveData, FrontPageData, SearchData, SingleData, TaxonomyData } from "./render/resolved-entry.js";
6
+ import type { ArchiveData, AuthorArchiveData, DateArchiveData, EntryData, FrontPageData, SearchData, TaxonomyData } from "./render/resolved-entry.js";
7
7
  declare module "../hooks/types.js" {
8
8
  interface FilterRegistry {
9
- "resolve:single:data": (data: SingleData) => SingleData | Promise<SingleData>;
9
+ "resolve:single:data": (data: EntryData) => EntryData | Promise<EntryData>;
10
10
  "resolve:archive:data": (data: ArchiveData) => ArchiveData | Promise<ArchiveData>;
11
11
  "resolve:term:data": (data: TaxonomyData) => TaxonomyData | Promise<TaxonomyData>;
12
+ "resolve:author:data": (data: AuthorArchiveData) => AuthorArchiveData | Promise<AuthorArchiveData>;
13
+ "resolve:date:data": (data: DateArchiveData) => DateArchiveData | Promise<DateArchiveData>;
12
14
  "resolve:front-page:data": (data: FrontPageData) => FrontPageData | Promise<FrontPageData>;
13
15
  "resolve:search:data": (data: SearchData) => SearchData | Promise<SearchData>;
14
16
  }
15
17
  }
16
- export declare function resolvePublicRoute(ctx: AppContext, match: RouteMatch, theme: ThemeDescriptor, document: DocumentManifest, templateDocuments: ReadonlyMap<string, DocumentManifest>, templateDeps: ReadonlyMap<string, RegisteredTemplateDep>, assetManifest: AssetManifest): Promise<Response>;
18
+ export declare function resolvePublicRoute(ctx: AppContext, match: RouteMatch, theme: ThemeDescriptor, document: DocumentManifest, templateDeps: ReadonlyMap<string, RegisteredTemplateDep>, assetManifest: AssetManifest): Promise<Response>;
17
19
  //# sourceMappingURL=resolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/route/resolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AAoBpC,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,cAAc;QACtB,qBAAqB,EAAE,CACrB,IAAI,EAAE,UAAU,KACb,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,sBAAsB,EAAE,CACtB,IAAI,EAAE,WAAW,KACd,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,mBAAmB,EAAE,CACnB,IAAI,EAAE,YAAY,KACf,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,yBAAyB,EAAE,CACzB,IAAI,EAAE,aAAa,KAChB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5C,qBAAqB,EAAE,CACrB,IAAI,EAAE,UAAU,KACb,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;KACvC;CACF;AAID,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACxD,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,EACxD,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAwDnB"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/route/resolve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,4BAA4B,CAAC;AA+BpC,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,cAAc;QACtB,qBAAqB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,sBAAsB,EAAE,CACtB,IAAI,EAAE,WAAW,KACd,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,mBAAmB,EAAE,CACnB,IAAI,EAAE,YAAY,KACf,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1C,qBAAqB,EAAE,CACrB,IAAI,EAAE,iBAAiB,KACpB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACpD,mBAAmB,EAAE,CACnB,IAAI,EAAE,eAAe,KAClB,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAChD,yBAAyB,EAAE,CACzB,IAAI,EAAE,aAAa,KAChB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5C,qBAAqB,EAAE,CACrB,IAAI,EAAE,UAAU,KACb,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;KACvC;CACF;AAyBD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC,EACxD,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,QAAQ,CAAC,CA+EnB"}