@intelex-ia/sdk 0.4.0 → 0.6.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/react.d.ts CHANGED
@@ -108,8 +108,14 @@ export interface AutoriaDoArtigo {
108
108
  *
109
109
  * ⚠️ `author` SÓ vale quando é `Organization`. Texto produzido com apoio de IA
110
110
  * e assinado por uma PESSOA é o que os Termos do Google proíbem desde
111
- * 30/07/2026 — então, quando o schema traz uma Person em `author`, ela é
112
- * ignorada aqui. O profissional aparece como REVISOR, via `contributor`.
111
+ * 30/07/2026. Mas a Person NÃO é descartada: ela é o profissional cadastrado,
112
+ * e entra como REVISORA — com cargo e registro. Descartá-la era jogar fora o
113
+ * cadastro do cliente e assinar "equipe" ao lado de um corpo que dizia
114
+ * "Revisado por Dra. Ana Souza, CRC-SP 123456" (medido no siteIA, 21/10/2026).
115
+ *
116
+ * 🚨 O schema vem em `article.intelligence.schemaJson`, e NÃO na raiz. Lendo só
117
+ * a raiz, esta função nunca achava cadastro nenhum e caía na equipe em TODO
118
+ * site — o defeito era silencioso porque a queda é um texto válido.
113
119
  *
114
120
  * NUNCA devolve vazio: sem autoria no schema, assina a equipe da empresa
115
121
  * (`empresa`, ou o `publisher.name` do próprio schema). Artigo no ar sem dizer
@@ -118,6 +124,9 @@ export interface AutoriaDoArtigo {
118
124
  */
119
125
  export declare function autoriaDoArtigo(article: {
120
126
  schemaJson?: unknown | null;
127
+ intelligence?: {
128
+ schemaJson?: unknown | null;
129
+ } | null;
121
130
  }, opts?: {
122
131
  empresa?: string;
123
132
  }): AutoriaDoArtigo;
@@ -152,28 +161,6 @@ export declare function AuthorBar({ article, empresa, className, }: AuthorBarPro
152
161
  * revisor — e aparece tanto com profissional cadastrado quanto sem.
153
162
  */
154
163
  export declare function AuthorSignature({ article, empresa, className, bioEquipe, bioRevisor, }: AuthorBarProps): ReactElement;
155
- /**
156
- * O corpo do artigo SEM a assinatura que o motor embute.
157
- *
158
- * O `contentHtml` traz um `<div class="authority-signature">` com nome,
159
- * cargo e registro de um PROFISSIONAL. Quando o site também renderiza
160
- * `<AuthorSignature>`, o artigo sai com DUAS assinaturas que se contradizem —
161
- * medido no siteIA em 21/10/2026: o corpo assinava "Dra. Ana Souza, CRC-SP
162
- * 123456" e o rodapé, "Equipe Editorial".
163
- *
164
- * Pior que a duplicata: a do corpo assina com uma PESSOA, que é justamente a
165
- * atribuição que `autoriaDoArtigo` recusa (Termos do Google, 30/07/2026). A
166
- * regra não alcançava ali porque aquele bloco é HTML cru, não schema.
167
- *
168
- * Por que remover AQUI e não no servidor: tirar do `contentHtml` mudaria o
169
- * corpo para TODO consumidor, inclusive sites que não renderizam assinatura
170
- * própria e ficariam sem nenhuma. Removendo no render, quem usa
171
- * `<AuthorSignature>` fica consistente e quem não usa continua como estava.
172
- *
173
- * @example
174
- * <div dangerouslySetInnerHTML={{ __html: corpoDoArtigo(article) }} />
175
- * <AuthorSignature article={article} empresa="Acme" />
176
- */
177
164
  export declare function corpoDoArtigo(article: {
178
165
  contentHtml?: string | null;
179
166
  }): string;
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
package/dist/react.js CHANGED
@@ -96,8 +96,14 @@ const texto = (v) => typeof v === "string" && v.trim() ? v.trim() : null;
96
96
  *
97
97
  * ⚠️ `author` SÓ vale quando é `Organization`. Texto produzido com apoio de IA
98
98
  * e assinado por uma PESSOA é o que os Termos do Google proíbem desde
99
- * 30/07/2026 — então, quando o schema traz uma Person em `author`, ela é
100
- * ignorada aqui. O profissional aparece como REVISOR, via `contributor`.
99
+ * 30/07/2026. Mas a Person NÃO é descartada: ela é o profissional cadastrado,
100
+ * e entra como REVISORA — com cargo e registro. Descartá-la era jogar fora o
101
+ * cadastro do cliente e assinar "equipe" ao lado de um corpo que dizia
102
+ * "Revisado por Dra. Ana Souza, CRC-SP 123456" (medido no siteIA, 21/10/2026).
103
+ *
104
+ * 🚨 O schema vem em `article.intelligence.schemaJson`, e NÃO na raiz. Lendo só
105
+ * a raiz, esta função nunca achava cadastro nenhum e caía na equipe em TODO
106
+ * site — o defeito era silencioso porque a queda é um texto válido.
101
107
  *
102
108
  * NUNCA devolve vazio: sem autoria no schema, assina a equipe da empresa
103
109
  * (`empresa`, ou o `publisher.name` do próprio schema). Artigo no ar sem dizer
@@ -105,7 +111,7 @@ const texto = (v) => typeof v === "string" && v.trim() ? v.trim() : null;
105
111
  * que esta função existe para impedir.
106
112
  */
107
113
  export function autoriaDoArtigo(article, opts) {
108
- const schema = article.schemaJson;
114
+ const schema = article.intelligence?.schemaJson ?? article.schemaJson;
109
115
  const nos = [];
110
116
  if (ehNo(schema)) {
111
117
  const grafo = schema["@graph"];
@@ -126,28 +132,53 @@ export function autoriaDoArtigo(article, opts) {
126
132
  }
127
133
  }
128
134
  }
135
+ let autorOrg = "";
136
+ let revisor = null;
137
+ let revisadoEm = null;
129
138
  for (const no of nos) {
139
+ if (!revisadoEm)
140
+ revisadoEm = texto(no.dateModified) || null;
141
+ // Organization em `author` é o único autor aceito.
130
142
  const a = no.author;
131
- if (!ehNo(a) || a["@type"] !== "Organization")
132
- continue;
133
- const autor = texto(a.name);
134
- if (!autor)
135
- continue;
136
- const c = no.contributor;
137
- const revisor = ehNo(c) && texto(c.name)
138
- ? [texto(c.name), texto(c.jobTitle), texto(c.identifier)]
139
- .filter(Boolean)
140
- .join(", ")
141
- : null;
142
- return { autor, revisor, revisadoEm: texto(no.dateModified), temCadastro: true };
143
+ if (!autorOrg && ehNo(a) && a["@type"] === "Organization")
144
+ autorOrg = texto(a.name) ?? "";
145
+ // Pessoa é REVISORA, venha de `contributor` ou de `author`. O motor grava
146
+ // o profissional cadastrado em `author`; recusar a atribuição de AUTORIA
147
+ // não é motivo para perder o nome de quem revisou.
148
+ for (const cand of [no.contributor, a]) {
149
+ if (revisor || !ehNo(cand))
150
+ continue;
151
+ const tipo = cand["@type"];
152
+ if (tipo && tipo !== "Person")
153
+ continue;
154
+ const nome = texto(cand.name);
155
+ if (!nome)
156
+ continue;
157
+ revisor = [nome, texto(cand.jobTitle), credencialDe(cand)].filter(Boolean).join(", ");
158
+ }
143
159
  }
144
160
  return {
145
- autor: empresa ? `Equipe Editorial ${empresa}` : "Equipe Editorial",
146
- revisor: null,
147
- revisadoEm: null,
148
- temCadastro: false,
161
+ autor: autorOrg || (empresa ? `Equipe Editorial ${empresa}` : "Equipe Editorial"),
162
+ revisor,
163
+ revisadoEm,
164
+ temCadastro: Boolean(autorOrg || revisor),
149
165
  };
150
166
  }
167
+ /**
168
+ * Registro profissional do nó: `identifier` direto, ou o `name` de
169
+ * `hasCredential` — que é como o motor grava o CRC/OAB
170
+ * (`hasCredential: { "@type": "EducationalOccupationalCredential", name: "CRC-SP 123456" }`).
171
+ */
172
+ function credencialDe(no) {
173
+ const direto = texto(no.identifier);
174
+ if (direto)
175
+ return direto;
176
+ const cred = no.hasCredential;
177
+ const primeiro = Array.isArray(cred) ? cred[0] : cred;
178
+ if (ehNo(primeiro))
179
+ return texto(primeiro.name) ?? "";
180
+ return texto(primeiro) ?? "";
181
+ }
151
182
  /** Texto da linha de revisão, igual nos dois blocos. */
152
183
  function linhaDeRevisao(a, empresa) {
153
184
  const quem = a.revisor
@@ -219,10 +250,72 @@ export function AuthorSignature({ article, empresa, className = "ia-assinatura",
219
250
  * <div dangerouslySetInnerHTML={{ __html: corpoDoArtigo(article) }} />
220
251
  * <AuthorSignature article={article} empresa="Acme" />
221
252
  */
253
+ /**
254
+ * O FAQ do artigo vira acordeão.
255
+ *
256
+ * O motor emite a seção como `<h2>Perguntas Frequentes</h2>` seguida de pares
257
+ * `<h3>pergunta</h3><p>resposta</p>` — tudo ABERTO. Num artigo com 6 a 8
258
+ * perguntas isso vira uma parede de texto no fim da página, e no celular o
259
+ * leitor rola muito para achar a sua dúvida. Pedido do cliente em 21/10/2026,
260
+ * comparando com o blog da Parceria, onde a resposta abre no clique.
261
+ *
262
+ * `<details>` é HTML nativo: funciona sem JavaScript, é acessível por teclado
263
+ * e o conteúdo CONTINUA no DOM, então não se perde indexação. O schema
264
+ * `FAQPage` do artigo é outro objeto e não é tocado aqui.
265
+ *
266
+ * A primeira pergunta nasce aberta, para a seção não parecer vazia e para
267
+ * mostrar ao leitor que aquilo abre.
268
+ *
269
+ * Converte só a seção do FAQ, delimitada pelo `<h2>` dela até o próximo `<h2>`
270
+ * (ou o fim): `<h3>` fora dali é subtítulo normal do texto e não vira acordeão.
271
+ */
272
+ const FAQ_H2 = /<h2\b[^>]*>\s*(?:perguntas\s+frequentes|d[úu]vidas\s+frequentes|faq)\b[^<]*<\/h2>/i;
273
+ function faqEmAcordeao(html) {
274
+ const m = FAQ_H2.exec(html);
275
+ if (!m)
276
+ return html;
277
+ const inicio = m.index + m[0].length;
278
+ const resto = html.slice(inicio);
279
+ const corte = resto.search(/<h2\b/i);
280
+ const secao = corte === -1 ? resto : resto.slice(0, corte);
281
+ const depois = corte === -1 ? "" : resto.slice(corte);
282
+ if (!/<h3\b/i.test(secao))
283
+ return html;
284
+ const itens = [];
285
+ const par = /<h3\b[^>]*>([\s\S]*?)<\/h3>([\s\S]*?)(?=<h3\b|$)/gi;
286
+ let t;
287
+ while ((t = par.exec(secao)) !== null) {
288
+ const pergunta = (t[1] ?? "").trim();
289
+ const resposta = (t[2] ?? "").trim();
290
+ if (!pergunta || !resposta)
291
+ continue;
292
+ const aberta = itens.length === 0 ? " open" : "";
293
+ itens.push(`<details class="ia-faq"${aberta}><summary>${pergunta}</summary>${resposta}</details>`);
294
+ }
295
+ // Nenhum par bem formado: devolve como veio, que é melhor que um FAQ pela metade.
296
+ if (!itens.length)
297
+ return html;
298
+ return html.slice(0, inicio) + itens.join("") + depois;
299
+ }
222
300
  export function corpoDoArtigo(article) {
223
- const html = article.contentHtml ?? "";
224
- if (!html)
301
+ const bruto = article.contentHtml ?? "";
302
+ if (!bruto)
303
+ return "";
304
+ // 🚨 O motor tem DUAS formas de assinar no corpo, e a segunda escapava.
305
+ //
306
+ // Além do `<div class="authority-signature">`, ele emite
307
+ // `<p class='itx-eeat-signature'>` — parágrafo simples, aspas SIMPLES, sem
308
+ // div nenhuma. Medido no siteIA em 21/10/2026, com o artigo no ar: o corpo
309
+ // dizia "Revisado por Dra. Ana Souza, CRC-SP 123456…" e o rodapé, "Revisado
310
+ // pela equipe siteIA". Duas assinaturas, com dados diferentes.
311
+ //
312
+ // `<p>` não aninha, então o fechamento é o primeiro `</p>`.
313
+ const semAssinatura = bruto
314
+ .replace(/<p[^>]*class=["'][^"']*itx-eeat-signature[^"']*["'][^>]*>[\s\S]*?<\/p>/gi, "")
315
+ .trim();
316
+ if (!semAssinatura)
225
317
  return "";
318
+ const html = faqEmAcordeao(semAssinatura);
226
319
  // `<div class="authority-signature" …>` até o `</div>` que o fecha, contando
227
320
  // os aninhados — o bloco tem divs dentro (avatar, textos).
228
321
  const abre = /<div[^>]*class="[^"]*authority-signature[^"]*"[^>]*>/i;
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,64 +1,64 @@
1
- {
2
- "name": "@intelex-ia/sdk",
3
- "version": "0.4.0",
4
- "description": "SDK pra consumir a Content API da IntelexIA em sites headless (Next.js, Astro, etc.). Multiplataforma Fase 2b.",
5
- "license": "MIT",
6
- "author": "intelex-ia",
7
- "homepage": "https://github.com/intelex-ia/combo_automatico/tree/main/packages/sdk",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/intelex-ia/combo_automatico.git",
11
- "directory": "packages/sdk"
12
- },
13
- "bugs": {
14
- "url": "https://github.com/intelex-ia/combo_automatico/issues"
15
- },
16
- "keywords": [
17
- "intelexia",
18
- "content-api",
19
- "headless",
20
- "cms",
21
- "next",
22
- "nextjs",
23
- "react",
24
- "sdk"
25
- ],
26
- "type": "module",
27
- "main": "./dist/index.js",
28
- "module": "./dist/index.js",
29
- "types": "./dist/index.d.ts",
30
- "exports": {
31
- ".": {
32
- "types": "./dist/index.d.ts",
33
- "default": "./dist/index.js"
34
- },
35
- "./react": {
36
- "types": "./dist/react.d.ts",
37
- "default": "./dist/react.js"
38
- }
39
- },
40
- "files": [
41
- "dist",
42
- "README.md"
43
- ],
44
- "scripts": {
45
- "build": "tsc",
46
- "typecheck": "tsc --noEmit"
47
- },
48
- "peerDependencies": {
49
- "react": ">=18"
50
- },
51
- "peerDependenciesMeta": {
52
- "react": {
53
- "optional": true
54
- }
55
- },
56
- "devDependencies": {
57
- "@types/react": "^18.3.12",
58
- "typescript": "^5.6.3"
59
- },
60
- "publishConfig": {
61
- "access": "public",
62
- "provenance": true
63
- }
1
+ {
2
+ "name": "@intelex-ia/sdk",
3
+ "version": "0.6.0",
4
+ "description": "SDK pra consumir a Content API da IntelexIA em sites headless (Next.js, Astro, etc.). Multiplataforma Fase 2b.",
5
+ "license": "MIT",
6
+ "author": "intelex-ia",
7
+ "homepage": "https://github.com/intelex-ia/combo_automatico/tree/main/packages/sdk",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/intelex-ia/combo_automatico.git",
11
+ "directory": "packages/sdk"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/intelex-ia/combo_automatico/issues"
15
+ },
16
+ "keywords": [
17
+ "intelexia",
18
+ "content-api",
19
+ "headless",
20
+ "cms",
21
+ "next",
22
+ "nextjs",
23
+ "react",
24
+ "sdk"
25
+ ],
26
+ "type": "module",
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/index.d.ts",
33
+ "default": "./dist/index.js"
34
+ },
35
+ "./react": {
36
+ "types": "./dist/react.d.ts",
37
+ "default": "./dist/react.js"
38
+ }
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "README.md"
43
+ ],
44
+ "scripts": {
45
+ "build": "tsc",
46
+ "typecheck": "tsc --noEmit"
47
+ },
48
+ "peerDependencies": {
49
+ "react": ">=18"
50
+ },
51
+ "peerDependenciesMeta": {
52
+ "react": {
53
+ "optional": true
54
+ }
55
+ },
56
+ "devDependencies": {
57
+ "@types/react": "^18.3.12",
58
+ "typescript": "^5.6.3"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public",
62
+ "provenance": true
63
+ }
64
64
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=autoria.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoria.test.d.ts","sourceRoot":"","sources":["../src/autoria.test.ts"],"names":[],"mappings":""}
@@ -1,113 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { autoriaDoArtigo, corpoDoArtigo, SELO_IA } from "./react.js";
3
- /**
4
- * A autoria do artigo tem duas regras duras, e as duas vêm de fora da
5
- * engenharia:
6
- *
7
- * 1. `author` só vale quando é `Organization`. Texto produzido com apoio de IA
8
- * e assinado por uma PESSOA é o que os Termos do Google proíbem desde
9
- * 30/07/2026. O profissional aparece como REVISOR.
10
- *
11
- * 2. A autoria NUNCA some. Sem cadastro, assina a equipe da empresa — e o selo
12
- * de apoio de IA sai do mesmo jeito. Artigo no ar sem dizer quem assina foi
13
- * exatamente o defeito medido no siteIA em 21/10/2026.
14
- */
15
- describe("autoriaDoArtigo", () => {
16
- const comOrganization = {
17
- schemaJson: {
18
- "@graph": [
19
- {
20
- "@type": "BlogPosting",
21
- author: { "@type": "Organization", name: "Equipe Editorial Parceria" },
22
- contributor: {
23
- "@type": "Person",
24
- name: "Mauro Roger Pinto",
25
- jobTitle: "Contador responsável técnico",
26
- identifier: "CRC-SC 020357/O-4",
27
- },
28
- dateModified: "2026-10-21",
29
- publisher: { "@type": "Organization", name: "Parceria Assessoria Contábil" },
30
- },
31
- ],
32
- },
33
- };
34
- it("usa a Organization como autor e o contributor como revisor", () => {
35
- const a = autoriaDoArtigo(comOrganization);
36
- expect(a.autor).toBe("Equipe Editorial Parceria");
37
- expect(a.revisor).toBe("Mauro Roger Pinto, Contador responsável técnico, CRC-SC 020357/O-4");
38
- expect(a.revisadoEm).toBe("2026-10-21");
39
- expect(a.temCadastro).toBe(true);
40
- });
41
- it("IGNORA author do tipo Person — e cai para a equipe da empresa", () => {
42
- const a = autoriaDoArtigo({
43
- schemaJson: {
44
- "@type": "BlogPosting",
45
- author: { "@type": "Person", name: "Fulano de Tal" },
46
- publisher: { "@type": "Organization", name: "Contabilidade Acme" },
47
- },
48
- });
49
- expect(a.autor).not.toContain("Fulano");
50
- expect(a.autor).toBe("Equipe Editorial Contabilidade Acme");
51
- expect(a.temCadastro).toBe(false);
52
- });
53
- it("sem autoria no schema, assina a equipe tirada do publisher", () => {
54
- const a = autoriaDoArtigo({
55
- schemaJson: { "@type": "BlogPosting", publisher: { "@type": "Organization", name: "Acme" } },
56
- });
57
- expect(a.autor).toBe("Equipe Editorial Acme");
58
- expect(a.revisor).toBeNull();
59
- expect(a.temCadastro).toBe(false);
60
- });
61
- it("a prop `empresa` vence o publisher do schema", () => {
62
- const a = autoriaDoArtigo({ schemaJson: { publisher: { "@type": "Organization", name: "Nome Velho" } } }, { empresa: "Nome Novo" });
63
- expect(a.autor).toBe("Equipe Editorial Nome Novo");
64
- });
65
- it("sem schema nenhum ainda assina — nunca devolve vazio", () => {
66
- for (const vazio of [null, undefined, "", 0, [], "texto solto"]) {
67
- const a = autoriaDoArtigo({ schemaJson: vazio });
68
- expect(a.autor.length).toBeGreaterThan(0);
69
- expect(a.temCadastro).toBe(false);
70
- }
71
- });
72
- it("revisor sem cargo nem registro não gera pontuação solta", () => {
73
- const a = autoriaDoArtigo({
74
- schemaJson: {
75
- author: { "@type": "Organization", name: "Equipe" },
76
- contributor: { "@type": "Person", name: "Ana Souza" },
77
- },
78
- });
79
- expect(a.revisor).toBe("Ana Souza");
80
- });
81
- it("o selo é o texto único do grupo", () => {
82
- expect(SELO_IA).toBe("Apoio de IA · Revisão humana");
83
- });
84
- });
85
- /**
86
- * ASSINATURA DUPLICADA — medida no siteIA em 21/10/2026. O corpo assinava
87
- * "Dra. Ana Souza, CRC-SP 123456" (bloco `authority-signature` do motor) e o
88
- * rodapé, "Equipe Editorial". Além de contraditório, o do corpo assina com uma
89
- * PESSOA — a atribuição que `autoriaDoArtigo` recusa.
90
- */
91
- describe("corpoDoArtigo", () => {
92
- it("remove o bloco do motor, com os divs aninhados", () => {
93
- const html = '<p>Texto.</p><div class="authority-signature" style="x"><div><b>Dra. Ana Souza</b></div><div>CRC-SP 123456</div></div><p>Fim.</p>';
94
- const r = corpoDoArtigo({ contentHtml: html });
95
- expect(r).not.toContain("authority-signature");
96
- expect(r).not.toContain("Ana Souza");
97
- expect(r).toContain("<p>Texto.</p>");
98
- expect(r).toContain("<p>Fim.</p>");
99
- });
100
- it("corpo sem o bloco volta intacto", () => {
101
- const html = "<h2>Um</h2><p>Dois</p>";
102
- expect(corpoDoArtigo({ contentHtml: html })).toBe(html);
103
- });
104
- it("corpo vazio ou nulo não quebra", () => {
105
- expect(corpoDoArtigo({ contentHtml: null })).toBe("");
106
- expect(corpoDoArtigo({})).toBe("");
107
- });
108
- it("div sem fechamento corta do bloco em diante, sem deixar lixo", () => {
109
- const r = corpoDoArtigo({ contentHtml: '<p>A</p><div class="authority-signature"><div>B' });
110
- expect(r).toBe("<p>A</p>");
111
- });
112
- });
113
- //# sourceMappingURL=autoria.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autoria.test.js","sourceRoot":"","sources":["../src/autoria.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=merge.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.test.d.ts","sourceRoot":"","sources":["../src/merge.test.ts"],"names":[],"mappings":""}
@@ -1,224 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { mergePosts, MergeConflictError } from "./merge.js";
3
- const localFixture = [
4
- {
5
- slug: "post-antigo-2024",
6
- title: "Post antigo de 2024",
7
- excerpt: "Resumo do antigo",
8
- date: "2024-01-15",
9
- category: "Geral",
10
- },
11
- {
12
- slug: "post-antigo-2025",
13
- title: "Post antigo de 2025",
14
- excerpt: "Resumo de 2025",
15
- date: "2025-06-10",
16
- category: "Geral",
17
- },
18
- ];
19
- const remoteFixture = [
20
- {
21
- id: "uuid-1",
22
- slug: "novo-post-ia",
23
- title: "Novo post gerado por IA",
24
- featuredImageUrl: "https://cdn.ex.com/1.jpg",
25
- words: 1200,
26
- publishedAt: "2026-05-20T10:00:00Z",
27
- metaDescription: "Resumo SEO do post novo",
28
- },
29
- {
30
- id: "uuid-2",
31
- slug: "outro-novo-ia",
32
- title: "Outro post novo",
33
- featuredImageUrl: null,
34
- words: 800,
35
- publishedAt: "2026-04-15T10:00:00Z",
36
- metaDescription: "Outro resumo",
37
- },
38
- ];
39
- const mapLocal = (p) => ({
40
- slug: p.slug,
41
- title: p.title,
42
- excerpt: p.excerpt,
43
- publishedAt: p.date,
44
- category: p.category,
45
- featuredImageUrl: null,
46
- });
47
- // ── Tests ─────────────────────────────────────────────────────────────────
48
- describe("mergePosts", () => {
49
- it("merge feliz — sem conflito, ordenado date-desc (default)", () => {
50
- const result = mergePosts({
51
- local: localFixture,
52
- remote: remoteFixture,
53
- mapLocal,
54
- });
55
- expect(result).toHaveLength(4);
56
- // Mais recente primeiro
57
- expect(result.map((p) => p.slug)).toEqual([
58
- "novo-post-ia", // 2026-05-20 (remoto)
59
- "outro-novo-ia", // 2026-04-15 (remoto)
60
- "post-antigo-2025", // 2025-06-10 (local)
61
- "post-antigo-2024", // 2024-01-15 (local)
62
- ]);
63
- // Source flag preservado
64
- expect(result[0]?.source).toBe("remote");
65
- expect(result[3]?.source).toBe("local");
66
- });
67
- it("ordena date-asc quando solicitado", () => {
68
- const result = mergePosts({
69
- local: localFixture,
70
- remote: remoteFixture,
71
- mapLocal,
72
- sortBy: "date-asc",
73
- });
74
- expect(result.map((p) => p.slug)).toEqual([
75
- "post-antigo-2024",
76
- "post-antigo-2025",
77
- "outro-novo-ia",
78
- "novo-post-ia",
79
- ]);
80
- });
81
- it("sortBy 'none' mantém ordem (locais primeiro, depois remotos)", () => {
82
- const result = mergePosts({
83
- local: localFixture,
84
- remote: remoteFixture,
85
- mapLocal,
86
- sortBy: "none",
87
- });
88
- expect(result.map((p) => p.slug)).toEqual([
89
- "post-antigo-2024",
90
- "post-antigo-2025",
91
- "novo-post-ia",
92
- "outro-novo-ia",
93
- ]);
94
- });
95
- it("dedupe 'remote-wins' (default) — remoto substitui local com mesmo slug", () => {
96
- const localCom = [...localFixture, { ...localFixture[0], slug: "novo-post-ia", title: "Versão local antiga" }];
97
- const result = mergePosts({
98
- local: localCom,
99
- remote: remoteFixture,
100
- mapLocal,
101
- });
102
- expect(result).toHaveLength(4);
103
- const post = result.find((p) => p.slug === "novo-post-ia");
104
- expect(post.title).toBe("Novo post gerado por IA");
105
- expect(post.source).toBe("remote");
106
- });
107
- it("dedupe 'local-wins' — mantém o local, ignora o remoto", () => {
108
- const localCom = [
109
- ...localFixture,
110
- { ...localFixture[0], slug: "novo-post-ia", title: "Versão local sagrada" },
111
- ];
112
- const result = mergePosts({
113
- local: localCom,
114
- remote: remoteFixture,
115
- mapLocal,
116
- dedupe: "local-wins",
117
- });
118
- expect(result).toHaveLength(4);
119
- const post = result.find((p) => p.slug === "novo-post-ia");
120
- expect(post.title).toBe("Versão local sagrada");
121
- expect(post.source).toBe("local");
122
- });
123
- it("dedupe 'throw' — lança MergeConflictError com slug do conflito", () => {
124
- const localCom = [
125
- ...localFixture,
126
- { ...localFixture[0], slug: "novo-post-ia", title: "Conflito" },
127
- ];
128
- expect(() => mergePosts({
129
- local: localCom,
130
- remote: remoteFixture,
131
- mapLocal,
132
- dedupe: "throw",
133
- })).toThrowError(MergeConflictError);
134
- });
135
- it("mapLocal retornando null filtra o post (cliente quer esconder rascunhos)", () => {
136
- const result = mergePosts({
137
- local: localFixture,
138
- remote: remoteFixture,
139
- mapLocal: (p) => (p.slug === "post-antigo-2024" ? null : mapLocal(p)),
140
- });
141
- expect(result.find((p) => p.slug === "post-antigo-2024")).toBeUndefined();
142
- expect(result).toHaveLength(3);
143
- });
144
- it("filtra remotos sem slug/title/publishedAt (defesa contra API inconsistente)", () => {
145
- const remoteCom = [
146
- ...remoteFixture,
147
- // sem slug
148
- { id: "x", slug: null, title: "x", featuredImageUrl: null, words: 0, publishedAt: "2026-01-01" },
149
- // sem title
150
- { id: "y", slug: "y", title: null, featuredImageUrl: null, words: 0, publishedAt: "2026-01-01" },
151
- // sem publishedAt
152
- { id: "z", slug: "z", title: "z", featuredImageUrl: null, words: 0, publishedAt: null },
153
- ];
154
- const result = mergePosts({ local: [], remote: remoteCom, mapLocal });
155
- expect(result).toHaveLength(2); // só os 2 válidos do fixture
156
- });
157
- it("lista vazia em ambos os lados retorna []", () => {
158
- const result = mergePosts({ local: [], remote: [], mapLocal });
159
- expect(result).toEqual([]);
160
- });
161
- it("só locais (cliente sem painel ainda) retorna locais ordenados", () => {
162
- const result = mergePosts({ local: localFixture, remote: [], mapLocal });
163
- expect(result).toHaveLength(2);
164
- expect(result[0].source).toBe("local");
165
- });
166
- it("só remotos (cliente sem posts antigos) retorna remotos ordenados", () => {
167
- const result = mergePosts({ local: [], remote: remoteFixture, mapLocal });
168
- expect(result).toHaveLength(2);
169
- expect(result[0].source).toBe("remote");
170
- });
171
- it("ArticleListItem em modo 'plain' (sem metaDescription) vira excerpt null", () => {
172
- const remotePlain = [
173
- {
174
- id: "uuid-3",
175
- slug: "post-cancelled",
176
- title: "Post de site cancelado",
177
- featuredImageUrl: null,
178
- words: 500,
179
- publishedAt: "2026-05-01T10:00:00Z",
180
- // sem metaTitle/metaDescription (plain mode)
181
- },
182
- ];
183
- const result = mergePosts({ local: [], remote: remotePlain, mapLocal });
184
- expect(result).toHaveLength(1);
185
- expect(result[0].excerpt).toBeNull();
186
- });
187
- it("data inválida vai pro final do feed sem quebrar", () => {
188
- const remoteInvalido = [
189
- {
190
- id: "good",
191
- slug: "good",
192
- title: "Good",
193
- featuredImageUrl: null,
194
- words: 100,
195
- publishedAt: "2026-05-20T10:00:00Z",
196
- },
197
- {
198
- id: "bad",
199
- slug: "bad",
200
- title: "Bad",
201
- featuredImageUrl: null,
202
- words: 100,
203
- publishedAt: "not-a-date",
204
- },
205
- ];
206
- const result = mergePosts({ local: [], remote: remoteInvalido, mapLocal });
207
- expect(result).toHaveLength(2);
208
- expect(result[0].slug).toBe("good"); // válido primeiro
209
- expect(result[1].slug).toBe("bad"); // inválido vai pro final
210
- });
211
- });
212
- describe("UnifiedPost type", () => {
213
- it("source flag permite filtrar por origem na UI", () => {
214
- const result = mergePosts({
215
- local: localFixture,
216
- remote: remoteFixture,
217
- mapLocal,
218
- });
219
- const onlyRemote = result.filter((p) => p.source === "remote");
220
- expect(onlyRemote).toHaveLength(2);
221
- onlyRemote.forEach((p) => expect(p.source).toBe("remote"));
222
- });
223
- });
224
- //# sourceMappingURL=merge.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.test.js","sourceRoot":"","sources":["../src/merge.test.ts"],"names":[],"mappings":"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"}