@oktis-works/theme-runtime 0.0.0-stage → 0.1.1
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/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +20 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +75 -0
- package/dist/loader.js.map +1 -0
- package/dist/prerender.d.ts +24 -0
- package/dist/prerender.d.ts.map +1 -0
- package/dist/prerender.js +39 -0
- package/dist/prerender.js.map +1 -0
- package/dist/renderer.d.ts +63 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +225 -0
- package/dist/renderer.js.map +1 -0
- package/dist/resolver.d.ts +31 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +122 -0
- package/dist/resolver.js.map +1 -0
- package/dist/routing.d.ts +56 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +67 -0
- package/dist/routing.js.map +1 -0
- package/dist/style-engine.d.ts +45 -0
- package/dist/style-engine.d.ts.map +1 -0
- package/dist/style-engine.js +300 -0
- package/dist/style-engine.js.map +1 -0
- package/dist/template-resolver.d.ts +36 -0
- package/dist/template-resolver.d.ts.map +1 -0
- package/dist/template-resolver.js +59 -0
- package/dist/template-resolver.js.map +1 -0
- package/package.json +56 -4
- package/README.md +0 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface TemplateContext {
|
|
2
|
+
type: string;
|
|
3
|
+
slug?: string;
|
|
4
|
+
isArchive?: boolean;
|
|
5
|
+
isHome?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Override manual de layout (content.layout): template escolhido no editor.
|
|
8
|
+
* Quando presente, é tentado ANTES de toda a cadeia automática (TASK-058).
|
|
9
|
+
*/
|
|
10
|
+
layoutOverride?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ResolvedTemplate {
|
|
13
|
+
/** Nome canônico do template na hierarquia. */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Arquivo .astro resolvido (relativo ao tema). */
|
|
16
|
+
file: string;
|
|
17
|
+
/** Próximo fallback da cadeia (para debug/diagnóstico). */
|
|
18
|
+
triedChain: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Cadeia de hierarquia WordPress-like (FEAT-094):
|
|
22
|
+
* {type}-{slug}.astro → {type}.astro → single/page.astro (ou archive.astro)
|
|
23
|
+
* → index.astro → 404
|
|
24
|
+
*
|
|
25
|
+
* Home: home.astro → index.astro → 404
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildTemplateChain(context: TemplateContext): string[];
|
|
28
|
+
export interface TemplateFileChecker {
|
|
29
|
+
exists(file: string): Promise<boolean> | boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare class TemplateHierarchyResolver {
|
|
32
|
+
private readonly fileChecker;
|
|
33
|
+
constructor(fileChecker: TemplateFileChecker);
|
|
34
|
+
resolve(context: TemplateContext): Promise<ResolvedTemplate>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=template-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-resolver.d.ts","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAEA,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,CA+BrE;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAClD;AAED,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,mBAAmB;IAEvD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmBnE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @oktis-works/theme-runtime - Template Hierarchy Resolver
|
|
2
|
+
/**
|
|
3
|
+
* Cadeia de hierarquia WordPress-like (FEAT-094):
|
|
4
|
+
* {type}-{slug}.astro → {type}.astro → single/page.astro (ou archive.astro)
|
|
5
|
+
* → index.astro → 404
|
|
6
|
+
*
|
|
7
|
+
* Home: home.astro → index.astro → 404
|
|
8
|
+
*/
|
|
9
|
+
export function buildTemplateChain(context) {
|
|
10
|
+
// Override manual vence a cadeia automática, mas mantém fallback.
|
|
11
|
+
const layoutHead = context.layoutOverride
|
|
12
|
+
? [context.layoutOverride.endsWith('.astro') ? context.layoutOverride : `${context.layoutOverride}.astro`]
|
|
13
|
+
: [];
|
|
14
|
+
if (context.isHome) {
|
|
15
|
+
return [...layoutHead, 'home.astro', 'index.astro', '404.astro'];
|
|
16
|
+
}
|
|
17
|
+
const chain = [];
|
|
18
|
+
if (context.slug) {
|
|
19
|
+
chain.push(`${context.type}-${context.slug}.astro`);
|
|
20
|
+
}
|
|
21
|
+
if (context.isArchive) {
|
|
22
|
+
if (context.slug)
|
|
23
|
+
chain.push(`taxonomy-${context.slug}.astro`);
|
|
24
|
+
chain.push('archive.astro');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
chain.push(`${context.type}.astro`);
|
|
28
|
+
const generic = context.type === 'page' ? 'page.astro' : 'single.astro';
|
|
29
|
+
if (generic !== `${context.type}.astro`)
|
|
30
|
+
chain.push(generic);
|
|
31
|
+
chain.push('index.astro');
|
|
32
|
+
}
|
|
33
|
+
chain.push('404.astro');
|
|
34
|
+
return [...layoutHead, ...chain];
|
|
35
|
+
}
|
|
36
|
+
export class TemplateHierarchyResolver {
|
|
37
|
+
fileChecker;
|
|
38
|
+
constructor(fileChecker) {
|
|
39
|
+
this.fileChecker = fileChecker;
|
|
40
|
+
}
|
|
41
|
+
async resolve(context) {
|
|
42
|
+
const chain = buildTemplateChain(context);
|
|
43
|
+
for (const candidate of chain) {
|
|
44
|
+
if (await this.fileChecker.exists(candidate)) {
|
|
45
|
+
return {
|
|
46
|
+
name: candidate.replace(/\.astro$/, ''),
|
|
47
|
+
file: candidate,
|
|
48
|
+
triedChain: chain.slice(0, chain.indexOf(candidate) + 1),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
name: '404',
|
|
54
|
+
file: '404.astro',
|
|
55
|
+
triedChain: chain,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=template-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-resolver.js","sourceRoot":"","sources":["../src/template-resolver.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAuB3D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAwB;IACzD,kEAAkE;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc;QACvC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,QAAQ,CAAC;QAC1G,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;QACxE,IAAI,OAAO,KAAK,GAAG,OAAO,CAAC,IAAI,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7D,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAExB,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC;AACnC,CAAC;AAMD,MAAM,OAAO,yBAAyB;IACP;IAA7B,YAA6B,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAEjE,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE1C,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;YAC9B,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;oBACvC,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACzD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oktis-works/theme-runtime",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@oktis-works/types": "0.1.1",
|
|
20
|
+
"@oktis-works/theme-sdk": "0.1.1"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"sass": "^1.70.0",
|
|
24
|
+
"tailwindcss": "^3.4.0",
|
|
25
|
+
"postcss": "^8.4.0",
|
|
26
|
+
"autoprefixer": "^10.4.0"
|
|
27
|
+
},
|
|
28
|
+
"peerDependenciesMeta": {
|
|
29
|
+
"sass": {
|
|
30
|
+
"optional": true
|
|
31
|
+
},
|
|
32
|
+
"tailwindcss": {
|
|
33
|
+
"optional": true
|
|
34
|
+
},
|
|
35
|
+
"postcss": {
|
|
36
|
+
"optional": true
|
|
37
|
+
},
|
|
38
|
+
"autoprefixer": {
|
|
39
|
+
"optional": true
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"typescript": "5.7.3"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist"
|
|
47
|
+
],
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public",
|
|
50
|
+
"registry": "https://registry.npmjs.org/"
|
|
51
|
+
},
|
|
52
|
+
"license": "MIT",
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "https://github.com/okcms/okcms",
|
|
56
|
+
"directory": "packages/theme-runtime"
|
|
57
|
+
}
|
|
58
|
+
}
|
package/README.md
DELETED