@oktis-works/theme-runtime 0.8.1 → 0.10.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/routing.d.ts +16 -0
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +64 -6
- package/dist/routing.js.map +1 -1
- package/dist/template-resolver.d.ts +12 -0
- package/dist/template-resolver.d.ts.map +1 -1
- package/dist/template-resolver.js +13 -0
- package/dist/template-resolver.js.map +1 -1
- package/package.json +1 -1
package/dist/routing.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface RouteResolution {
|
|
|
13
13
|
record?: Record<string, unknown>;
|
|
14
14
|
/** True quando a rota resolveu para a página configurada como page_for_posts. */
|
|
15
15
|
isPageForPosts?: boolean;
|
|
16
|
+
/** True quando a rota é a front page estática (Reading Settings → homepage). */
|
|
17
|
+
isFrontPage?: boolean;
|
|
16
18
|
}
|
|
17
19
|
export interface ContentLookup {
|
|
18
20
|
/** Retorna o tipo de conteúdo e dados para um caminho de URL. */
|
|
@@ -62,6 +64,20 @@ export declare class RuntimeRouter {
|
|
|
62
64
|
* do admin salva `''` quando nenhum valor foi escolhido).
|
|
63
65
|
*/
|
|
64
66
|
private setting;
|
|
67
|
+
/**
|
|
68
|
+
* ID da página configurada como página de posts — canônica `postsPage`
|
|
69
|
+
* (o que o admin salva em Reading Settings) com fallback legado
|
|
70
|
+
* `page_for_posts` (chave do seed em instalações que nunca salvaram o
|
|
71
|
+
* formulário).
|
|
72
|
+
*/
|
|
73
|
+
private postsPageId;
|
|
74
|
+
/**
|
|
75
|
+
* True quando o conteúdo É a página configurada como página de posts: a
|
|
76
|
+
* listagem do blog precisa do template dedicado (`posts.astro`, WP
|
|
77
|
+
* `home.php`) e do feed de itens publicados (`isPageForPosts`) — em
|
|
78
|
+
* qualquer profundidade de URL, não só no fallback de `/`.
|
|
79
|
+
*/
|
|
80
|
+
private matchesPostsPage;
|
|
65
81
|
/**
|
|
66
82
|
* Resolve um caminho arbitrário (catch-all [...slug]) para um template.
|
|
67
83
|
* Ordem: Static Front Page → content-type archive → conteúdo por slug.
|
package/dist/routing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iFAAiF;IACjF,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iFAAiF;IACjF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gFAAgF;IAChF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAClK,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC9J,8FAA8F;IAC9F,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChD,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACpE;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,KAAK,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;YAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAAC,IAAI,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACvE,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,IAAI,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,yBAAyB;IAGtD;;;OAGG;YACW,OAAO;IAKrB;;;;;OAKG;YACW,WAAW;IAIzB;;;;;OAKG;YACW,gBAAgB;IAW9B;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAwItD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/routing.js
CHANGED
|
@@ -14,6 +14,30 @@ export class RuntimeRouter {
|
|
|
14
14
|
const value = await this.lookup.getSetting(key);
|
|
15
15
|
return value && value.length > 0 ? value : null;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* ID da página configurada como página de posts — canônica `postsPage`
|
|
19
|
+
* (o que o admin salva em Reading Settings) com fallback legado
|
|
20
|
+
* `page_for_posts` (chave do seed em instalações que nunca salvaram o
|
|
21
|
+
* formulário).
|
|
22
|
+
*/
|
|
23
|
+
async postsPageId() {
|
|
24
|
+
return (await this.setting('postsPage')) ?? (await this.setting('page_for_posts'));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* True quando o conteúdo É a página configurada como página de posts: a
|
|
28
|
+
* listagem do blog precisa do template dedicado (`posts.astro`, WP
|
|
29
|
+
* `home.php`) e do feed de itens publicados (`isPageForPosts`) — em
|
|
30
|
+
* qualquer profundidade de URL, não só no fallback de `/`.
|
|
31
|
+
*/
|
|
32
|
+
async matchesPostsPage(content) {
|
|
33
|
+
if (content.type !== 'page')
|
|
34
|
+
return false;
|
|
35
|
+
const rawId = content.record?.['id'];
|
|
36
|
+
if (typeof rawId !== 'string' && typeof rawId !== 'number')
|
|
37
|
+
return false;
|
|
38
|
+
const postsPageId = await this.postsPageId();
|
|
39
|
+
return postsPageId !== null && postsPageId === String(rawId);
|
|
40
|
+
}
|
|
17
41
|
/**
|
|
18
42
|
* Resolve um caminho arbitrário (catch-all [...slug]) para um template.
|
|
19
43
|
* Ordem: Static Front Page → content-type archive → conteúdo por slug.
|
|
@@ -39,6 +63,7 @@ export class RuntimeRouter {
|
|
|
39
63
|
const resolved = await this.resolver.resolve({
|
|
40
64
|
type: page.type,
|
|
41
65
|
slug: page.slug,
|
|
66
|
+
isFrontPage: true,
|
|
42
67
|
layoutOverride: page.layout ?? undefined
|
|
43
68
|
});
|
|
44
69
|
return {
|
|
@@ -47,18 +72,20 @@ export class RuntimeRouter {
|
|
|
47
72
|
contentType: page.type,
|
|
48
73
|
slug: page.slug,
|
|
49
74
|
data: page.data,
|
|
50
|
-
record: page.record
|
|
75
|
+
record: page.record,
|
|
76
|
+
isFrontPage: true
|
|
51
77
|
};
|
|
52
78
|
}
|
|
53
79
|
}
|
|
54
80
|
// Fallback: página de posts (postsPage do admin, depois a legada page_for_posts)
|
|
55
|
-
const pageForPostsId =
|
|
81
|
+
const pageForPostsId = await this.postsPageId();
|
|
56
82
|
if (pageForPostsId) {
|
|
57
83
|
const page = await this.lookup.findById(pageForPostsId);
|
|
58
84
|
if (page && page.type === 'page') {
|
|
59
85
|
const resolved = await this.resolver.resolve({
|
|
60
86
|
type: page.type,
|
|
61
87
|
slug: page.slug,
|
|
88
|
+
isPostsPage: true,
|
|
62
89
|
layoutOverride: page.layout ?? undefined
|
|
63
90
|
});
|
|
64
91
|
return {
|
|
@@ -90,8 +117,24 @@ export class RuntimeRouter {
|
|
|
90
117
|
// Tenta conteúdo primeiro (slug único), depois arquivo do tipo.
|
|
91
118
|
const content = await this.lookup.findByPath(firstSegment);
|
|
92
119
|
if (content) {
|
|
93
|
-
|
|
94
|
-
|
|
120
|
+
// A página de posts acessada direto (/blog): mesmo tratamento do
|
|
121
|
+
// fallback de `/` — template de listagem (posts.astro) + itens.
|
|
122
|
+
const isPostsPage = await this.matchesPostsPage(content);
|
|
123
|
+
const resolved = await this.resolver.resolve({
|
|
124
|
+
type: content.type,
|
|
125
|
+
slug: content.slug,
|
|
126
|
+
isPostsPage,
|
|
127
|
+
layoutOverride: content.layout ?? undefined
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
matched: true,
|
|
131
|
+
template: resolved.file,
|
|
132
|
+
contentType: content.type,
|
|
133
|
+
slug: content.slug,
|
|
134
|
+
data: content.data,
|
|
135
|
+
record: content.record,
|
|
136
|
+
...(isPostsPage ? { isPageForPosts: true } : {})
|
|
137
|
+
};
|
|
95
138
|
}
|
|
96
139
|
const types = await this.lookup.listTypes();
|
|
97
140
|
const matchingType = types.find((type) => type.slug === firstSegment && type.hasArchive);
|
|
@@ -106,8 +149,23 @@ export class RuntimeRouter {
|
|
|
106
149
|
const slug = segments[segments.length - 1] ?? '';
|
|
107
150
|
const content = await this.lookup.findByPath(slug);
|
|
108
151
|
if (content && content.type === typeSegment) {
|
|
109
|
-
|
|
110
|
-
|
|
152
|
+
// /page/blog também resolve a listagem quando o slug é a página de posts.
|
|
153
|
+
const isPostsPage = await this.matchesPostsPage(content);
|
|
154
|
+
const resolved = await this.resolver.resolve({
|
|
155
|
+
type: content.type,
|
|
156
|
+
slug: content.slug,
|
|
157
|
+
isPostsPage,
|
|
158
|
+
layoutOverride: content.layout ?? undefined
|
|
159
|
+
});
|
|
160
|
+
return {
|
|
161
|
+
matched: true,
|
|
162
|
+
template: resolved.file,
|
|
163
|
+
contentType: content.type,
|
|
164
|
+
slug: content.slug,
|
|
165
|
+
data: content.data,
|
|
166
|
+
record: content.record,
|
|
167
|
+
...(isPostsPage ? { isPageForPosts: true } : {})
|
|
168
|
+
};
|
|
111
169
|
}
|
|
112
170
|
}
|
|
113
171
|
return { matched: false };
|
package/dist/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA,uFAAuF;
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,18 @@ export interface TemplateContext {
|
|
|
3
3
|
slug?: string;
|
|
4
4
|
isArchive?: boolean;
|
|
5
5
|
isHome?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Static front page (Reading Settings → homepage). Tries `front-page.astro`
|
|
8
|
+
* BEFORE the regular page chain — WordPress-like `front-page.php` behavior.
|
|
9
|
+
*/
|
|
10
|
+
isFrontPage?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Posts page (Reading Settings → posts page). WordPress-like `home.php`
|
|
13
|
+
* behavior: tries the dedicated `posts.astro` listing BEFORE the regular
|
|
14
|
+
* page chain, so the blog renders the `items` feed instead of the page's
|
|
15
|
+
* static body template.
|
|
16
|
+
*/
|
|
17
|
+
isPostsPage?: boolean;
|
|
6
18
|
/**
|
|
7
19
|
* Override manual de layout (content.layout): template escolhido no editor.
|
|
8
20
|
* Quando presente, é tentado ANTES de toda a cadeia automática (TASK-058).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CA8CrE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,+DAA+D;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,iFAAiF;IACjF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,kEAAkE;IAClE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC7C;AAMD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,uBAAuB,CA4BzB;AAQD,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,mBAAmB;IAEvD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmBnE"}
|
|
@@ -33,6 +33,19 @@ export function buildTemplateChain(context) {
|
|
|
33
33
|
chain.push('index.astro');
|
|
34
34
|
}
|
|
35
35
|
chain.push('404.astro');
|
|
36
|
+
// Static front page: try the dedicated front-page template first, then the
|
|
37
|
+
// regular page chain (front-page.astro → {type}-{slug}.astro → {type}.astro
|
|
38
|
+
// → index.astro → 404.astro).
|
|
39
|
+
if (context.isFrontPage) {
|
|
40
|
+
return [...layoutHead, 'front-page.astro', ...chain];
|
|
41
|
+
}
|
|
42
|
+
// Posts page (WP home.php): the dedicated listing template wins over the
|
|
43
|
+
// page chain (posts.astro → {type}-{slug}.astro → {type}.astro →
|
|
44
|
+
// index.astro → 404.astro) — the blog listing shows `items`, never the
|
|
45
|
+
// page's static body.
|
|
46
|
+
if (context.isPostsPage) {
|
|
47
|
+
return [...layoutHead, 'posts.astro', ...chain];
|
|
48
|
+
}
|
|
36
49
|
return [...layoutHead, ...chain];
|
|
37
50
|
}
|
|
38
51
|
/** Estados de tema aceitos na cadeia de fallback do projeto. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-resolver.js","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"template-resolver.js","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"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"}
|