@oondemand/create-central-oon 0.5.5 → 0.5.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oondemand/create-central-oon",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/oondemand/oon-platform.git",
package/src/index.js CHANGED
@@ -333,7 +333,7 @@ async function run(opts) {
333
333
  // 1. Estrutura comum (backend + frontend mínimos, só domínio/declaração).
334
334
  copyTemplate(path.join(TEMPLATES_DIR, "_base"), targetDir, tokens);
335
335
  // 2. Overlay do template escolhido (vence sobre o _base).
336
- copyTemplate(path.join(TEMPLATES_DIR, template.id), targetDir, tokens);
336
+ copyTemplate(path.join(TEMPLATES_DIR, template.id), targetDir, tokens, { mergeCentralUi: true });
337
337
 
338
338
  // 3. Contexto local neutro para Agents derivado da versão instalada.
339
339
  syncDocs({ cwd: targetDir });
package/src/render.js CHANGED
@@ -42,12 +42,32 @@ function applyTokens(content, tokens) {
42
42
  .replace(/__PASCAL__/g, tokens.pascal);
43
43
  }
44
44
 
45
+ function mergePages(basePages = [], overlayPages = []) {
46
+ const merged = [...basePages];
47
+ for (const page of overlayPages) {
48
+ const index = page?.path
49
+ ? merged.findIndex((candidate) => candidate?.path === page.path)
50
+ : -1;
51
+ if (index >= 0) merged[index] = page;
52
+ else merged.push(page);
53
+ }
54
+ return merged;
55
+ }
56
+
57
+ function mergeCentralUiManifest(base, overlay) {
58
+ return {
59
+ ...base,
60
+ ...overlay,
61
+ pages: mergePages(base.pages, overlay.pages),
62
+ };
63
+ }
64
+
45
65
  /**
46
66
  * Copia recursivamente `srcDir` para `destDir`, substituindo tokens em
47
67
  * arquivos de texto. Arquivos já existentes no destino são sobrescritos
48
68
  * (overlay): o template escolhido vence sobre o _base.
49
69
  */
50
- function copyTemplate(srcDir, destDir, tokens) {
70
+ function copyTemplate(srcDir, destDir, tokens, options = {}) {
51
71
  if (!fs.existsSync(srcDir)) return;
52
72
  fs.mkdirSync(destDir, { recursive: true });
53
73
 
@@ -59,11 +79,18 @@ function copyTemplate(srcDir, destDir, tokens) {
59
79
  const to = path.join(destDir, destName);
60
80
 
61
81
  if (entry.isDirectory()) {
62
- copyTemplate(from, to, tokens);
82
+ copyTemplate(from, to, tokens, options);
63
83
  } else {
64
84
  const raw = fs.readFileSync(from);
65
85
  if (isText(from)) {
66
- fs.writeFileSync(to, applyTokens(raw.toString("utf8"), tokens));
86
+ const rendered = applyTokens(raw.toString("utf8"), tokens);
87
+ if (options.mergeCentralUi === true && entry.name === "central.ui.json" && fs.existsSync(to)) {
88
+ const base = JSON.parse(fs.readFileSync(to, "utf8"));
89
+ const overlay = JSON.parse(rendered);
90
+ fs.writeFileSync(to, JSON.stringify(mergeCentralUiManifest(base, overlay), null, 2) + "\n");
91
+ } else {
92
+ fs.writeFileSync(to, rendered);
93
+ }
67
94
  } else {
68
95
  fs.writeFileSync(to, raw);
69
96
  }
@@ -71,4 +98,4 @@ function copyTemplate(srcDir, destDir, tokens) {
71
98
  }
72
99
  }
73
100
 
74
- module.exports = { copyTemplate, applyTokens, isText };
101
+ module.exports = { copyTemplate, applyTokens, isText, mergeCentralUiManifest };
@@ -12,6 +12,6 @@
12
12
  "deploy": "oonCore-back deploy"
13
13
  },
14
14
  "dependencies": {
15
- "@oondemand/oon-core-back": "^0.5.5"
15
+ "@oondemand/oon-core-back": "^0.5.6"
16
16
  }
17
17
  }
@@ -1,7 +1,57 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "backend": { "metadataUrl": "/core/metadata" },
4
- "navigation": { "mode": "auto" },
3
+ "backend": {
4
+ "metadataUrl": "/core/metadata"
5
+ },
6
+ "navigation": {
7
+ "mode": "auto"
8
+ },
9
+ "pages": [
10
+ {
11
+ "path": "/",
12
+ "label": "Início",
13
+ "title": "Boas-vindas ao __NAME__",
14
+ "order": 10,
15
+ "blocks": [
16
+ {
17
+ "type": "markdown",
18
+ "content": "Seu oon-app já está pronto para receber o domínio da solução. Esta Home é declarativa e renderizada pelo OonCore."
19
+ },
20
+ {
21
+ "type": "section",
22
+ "title": "O que o OonCore já entrega",
23
+ "description": "A base técnica comum está pronta para você concentrar a implementação nas regras do negócio.",
24
+ "blocks": [
25
+ {
26
+ "type": "markdown",
27
+ "content": "• Autenticação integrada, sessão e contexto do tenant.\n• Shell responsivo, navegação, roteamento e estados de carregamento e erro.\n• RBAC, catálogo de perfis e gestão de Usuários e Acessos.\n• Metadata, CRUD, formulários, tabelas, filtros, dashboards e esteiras declarativas.\n• Contratos para documentos, integrações, auditoria, validação e observabilidade."
28
+ }
29
+ ]
30
+ },
31
+ {
32
+ "type": "section",
33
+ "title": "O que a Plataforma Oon entrega",
34
+ "description": "O ciclo operacional do app permanece governado pela plataforma.",
35
+ "blocks": [
36
+ {
37
+ "type": "markdown",
38
+ "content": "• Repositório GitHub privado e código-fonte versionado.\n• Publicação automática em Dev a partir da branch main.\n• Ambiente isolado com aplicação, banco de dados, URL pública, certificado e secrets.\n• Acompanhamento no Workspace e no Meus Apps, com promoção controlada entre ambientes.\n• Documentação técnica e funcional centralizada no Oon Docs."
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "type": "section",
44
+ "title": "Próximos passos",
45
+ "blocks": [
46
+ {
47
+ "type": "markdown",
48
+ "content": "1. Rode npm install e npm run ooncore:docs para sincronizar a documentação local.\n2. Leia .ooncore/AGENTS.md e o contexto da versão instalada.\n3. Modele o domínio em backend/src/models e declare as telas em frontend/central.ui.json.\n4. Acrescente permissões de negócio e distribua-as entre os perfis no central.app.json.\n5. Rode npm run check, publique o repositório e acompanhe o ambiente de Dev."
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
54
+ ],
5
55
  "collections": [],
6
56
  "pipelines": [],
7
57
  "documents": []
@@ -11,7 +11,7 @@
11
11
  "sync:metadata": "oonCore-front sync:metadata"
12
12
  },
13
13
  "dependencies": {
14
- "@oondemand/oon-core-front": "^0.5.5",
14
+ "@oondemand/oon-core-front": "^0.5.6",
15
15
  "@chakra-ui/react": "^3.13.0",
16
16
  "@emotion/react": "^11.14.0",
17
17
  "@tanstack/react-query": "^5.65.0",
@@ -13,6 +13,6 @@
13
13
  "dev:frontend": "npm run dev --prefix frontend"
14
14
  },
15
15
  "devDependencies": {
16
- "@oondemand/create-central-oon": "0.5.5"
16
+ "@oondemand/create-central-oon": "0.5.6"
17
17
  }
18
18
  }