@oktis-works/theme-runtime 0.6.4 → 0.8.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 +13 -1
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +51 -1
- package/dist/routing.js.map +1 -1
- package/package.json +1 -1
package/dist/routing.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface RouteResolution {
|
|
|
11
11
|
data?: Record<string, unknown>;
|
|
12
12
|
/** Row completa do conteúdo (colunas + body) para a API contextual do SDK. */
|
|
13
13
|
record?: Record<string, unknown>;
|
|
14
|
+
/** True quando a rota resolveu para a página configurada como page_for_posts. */
|
|
15
|
+
isPageForPosts?: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface ContentLookup {
|
|
16
18
|
/** Retorna o tipo de conteúdo e dados para um caminho de URL. */
|
|
@@ -21,6 +23,16 @@ export interface ContentLookup {
|
|
|
21
23
|
layout?: string | null;
|
|
22
24
|
record?: Record<string, unknown>;
|
|
23
25
|
} | null>;
|
|
26
|
+
/** Retorna conteúdo por ID (usado para Static Front Page). */
|
|
27
|
+
findById(id: string): Promise<{
|
|
28
|
+
type: string;
|
|
29
|
+
slug: string;
|
|
30
|
+
data: Record<string, unknown>;
|
|
31
|
+
layout?: string | null;
|
|
32
|
+
record?: Record<string, unknown>;
|
|
33
|
+
} | null>;
|
|
34
|
+
/** Retorna valor de uma setting pública por chave (ex: static_front_page, page_for_posts). */
|
|
35
|
+
getSetting(key: string): Promise<string | null>;
|
|
24
36
|
listTypes(): Promise<Array<{
|
|
25
37
|
slug: string;
|
|
26
38
|
hasArchive: boolean;
|
|
@@ -47,7 +59,7 @@ export declare class RuntimeRouter {
|
|
|
47
59
|
constructor(lookup: ContentLookup, resolver: TemplateHierarchyResolver);
|
|
48
60
|
/**
|
|
49
61
|
* Resolve um caminho arbitrário (catch-all [...slug]) para um template.
|
|
50
|
-
* Ordem:
|
|
62
|
+
* Ordem: Static Front Page → content-type archive → conteúdo por slug.
|
|
51
63
|
*/
|
|
52
64
|
resolve(path: string): Promise<RouteResolution>;
|
|
53
65
|
}
|
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;
|
|
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;CAC1B;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;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CA4FtD;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
|
@@ -8,12 +8,62 @@ export class RuntimeRouter {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Resolve um caminho arbitrário (catch-all [...slug]) para um template.
|
|
11
|
-
* Ordem:
|
|
11
|
+
* Ordem: Static Front Page → content-type archive → conteúdo por slug.
|
|
12
12
|
*/
|
|
13
13
|
async resolve(path) {
|
|
14
14
|
const normalized = path.replace(/^\/+|\/+$/g, '');
|
|
15
15
|
const segments = normalized.split('/').filter(Boolean);
|
|
16
16
|
if (segments.length === 0) {
|
|
17
|
+
// Static Front Page: verifica se há página configurada como home
|
|
18
|
+
const staticFrontPageId = await this.lookup.getSetting('static_front_page');
|
|
19
|
+
if (staticFrontPageId) {
|
|
20
|
+
const page = await this.lookup.findById(staticFrontPageId);
|
|
21
|
+
if (page && page.type === 'page') {
|
|
22
|
+
const resolved = await this.resolver.resolve({
|
|
23
|
+
type: page.type,
|
|
24
|
+
slug: page.slug,
|
|
25
|
+
layoutOverride: page.layout ?? undefined
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
matched: true,
|
|
29
|
+
template: resolved.file,
|
|
30
|
+
contentType: page.type,
|
|
31
|
+
slug: page.slug,
|
|
32
|
+
data: page.data,
|
|
33
|
+
record: page.record
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Fallback: page_for_posts (página que lista posts)
|
|
38
|
+
const pageForPostsId = await this.lookup.getSetting('page_for_posts');
|
|
39
|
+
if (pageForPostsId) {
|
|
40
|
+
const page = await this.lookup.findById(pageForPostsId);
|
|
41
|
+
if (page && page.type === 'page') {
|
|
42
|
+
const resolved = await this.resolver.resolve({
|
|
43
|
+
type: page.type,
|
|
44
|
+
slug: page.slug,
|
|
45
|
+
layoutOverride: page.layout ?? undefined
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
matched: true,
|
|
49
|
+
template: resolved.file,
|
|
50
|
+
contentType: page.type,
|
|
51
|
+
slug: page.slug,
|
|
52
|
+
data: page.data,
|
|
53
|
+
record: page.record,
|
|
54
|
+
// Sinaliza que é a página de posts para o template receber items
|
|
55
|
+
isPageForPosts: true
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Fallback final: archive de posts (estilo "latest posts")
|
|
60
|
+
const types = await this.lookup.listTypes();
|
|
61
|
+
const postType = types.find((t) => t.slug === 'post' && t.hasArchive);
|
|
62
|
+
if (postType) {
|
|
63
|
+
const resolved = await this.resolver.resolve({ type: postType.slug, isArchive: true });
|
|
64
|
+
return { matched: true, template: resolved.file, contentType: postType.slug };
|
|
65
|
+
}
|
|
66
|
+
// Último recurso: home.astro se existir no tema
|
|
17
67
|
const resolved = await this.resolver.resolve({ type: 'page', isHome: true });
|
|
18
68
|
return { matched: true, template: resolved.file };
|
|
19
69
|
}
|
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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"}
|