From 21187adf63662a701459ad007d1a142ae888b120 Mon Sep 17 00:00:00 2001 From: "ROBSON.JUNIOR" Date: Sun, 26 Jan 2025 11:28:43 -0300 Subject: [PATCH] [WIP] fix: 30x (#1470) * fix: 30x links * fix: 30x links * fix: overwrite newcontent, was using only the last loop value * chore: codestyle * chore: adjusts semrush replace links module --- backend/semrush-replace-url/index.i18n.js | 22 ++++++------ backend/semrush-replace-url/index.js | 35 +++++++++++-------- .../docs/pt-br/pages/changelog/changelog.mdx | 4 +-- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/backend/semrush-replace-url/index.i18n.js b/backend/semrush-replace-url/index.i18n.js index b5540fb490..013e821968 100644 --- a/backend/semrush-replace-url/index.i18n.js +++ b/backend/semrush-replace-url/index.i18n.js @@ -12,24 +12,23 @@ const PATH = { async function processFile(filePath, redirects) { try { - let newContent = await fs.readFile(filePath, 'utf-8'); + const content = await fs.readFile(filePath, 'utf-8'); + + let newContent = content; let fileModified = false; for (const item of redirects) { const url30x = isFromRoot(item.initialUrl) ? wwwazioncom() : removeHostAndLangFromUrl(item.initialUrl); const url200 = removeHostAndLangFromUrl(item.destinationUrl); const isRoot = isFromRoot(url30x); - - const rgx = new RegExp(`'${url30x}'`, 'g'); - const contentMatch = newContent.match(rgx); - + const rgxSingleQuote = new RegExp(`'${url30x}'`, 'g'); - const rgxDoubleQuote = new RegExp(`"${url30x}"`, 'g'); - const contentMatchSingleQuote = newContent.match(rgxSingleQuote); + + const rgxDoubleQuote = new RegExp(`"${url30x}"`, 'g'); const contentMatchDoubleQuote = newContent.match(rgxDoubleQuote); - if (!contentMatchSingleQuote || !contentMatchDoubleQuote) continue; + if (!contentMatchSingleQuote && !contentMatchDoubleQuote) continue; counterFoundLinks++; fileModified = true; @@ -37,7 +36,8 @@ async function processFile(filePath, redirects) { console.log({ isRoot, file: filePath, - rgx: rgx.toString(), + rgxSingleQuote: rgxSingleQuote.toString(), + rgxDoubleQuote: rgxDoubleQuote.toString(), url30x, url200, contentMatchCount: contentMatch.length, @@ -46,14 +46,14 @@ async function processFile(filePath, redirects) { if(contentMatchSingleQuote.length) { newContent = newContent.replace( - isRoot ? /'https\:\/\/www\.azion\.com\/'/ : rgx, + isRoot ? /'https\:\/\/www\.azion\.com\/'/ : rgxSingleQuote, `'${url200}'` ); } if(contentMatchDoubleQuote.length) { newContent = newContent.replace( - isRoot ? /"https\:\/\/www\.azion\.com\/"/ : rgx, + isRoot ? /"https\:\/\/www\.azion\.com\/"/ : rgxDoubleQuote, `'${url200}'` ); } diff --git a/backend/semrush-replace-url/index.js b/backend/semrush-replace-url/index.js index 8e5954afae..cb31a756b6 100644 --- a/backend/semrush-replace-url/index.js +++ b/backend/semrush-replace-url/index.js @@ -1,4 +1,4 @@ -import matter from 'gray-matter' +// import matter from 'gray-matter' import { promises as fs } from 'fs'; import path from 'path' @@ -17,38 +17,45 @@ function findReplace(content, oldUrl, newUrl) { async function processFile(filePath, redirects) { try { - let fileModified = false; - const content = await fs.readFile(filePath, 'utf-8'); - const { data, content: markdownContent } = matter(content) - const utf8Content = Buffer.from(content).toString('utf-8') + + let newContent = content; + let fileModified = false; for (const item of redirects) { const pagePermalink = removeHostFromUrl(item.page) const url30x = isFromRoot(item.initialUrl) ? wwwazioncom() : removeHostFromUrl(item.initialUrl); const url200 = removeHostFromUrl(item.destinationUrl) const isRoot = isFromRoot(url30x) - const rgx = new RegExp(`\\(${url30x}\\)`, 'g') - const contentMatch = utf8Content.match(rgx) - - if(!contentMatch) continue + const rgxMdLink = new RegExp(`\\(${url30x}\\)`, 'g') + const contentMatchMdLink = newContent.match(rgxMdLink) + + const rgxMdLinkAnchor = new RegExp(`\\(${url30x}\\#`, 'g') + const contentMatchMdLinkAnchor = newContent.match(rgxMdLinkAnchor) + + if (!contentMatchMdLink && !contentMatchMdLinkAnchor) continue; + counterFoundLinks++ fileModified = true + + if(contentMatchMdLinkAnchor.length) + newContent = findReplace(newContent, isRoot ? /\\(https\:\/\/www\.azion\.com\/\\)/ : rgxMdLink, `(${url200})`) - const newContent = findReplace(utf8Content, isRoot ? /\\(https\:\/\/www\.azion\.com\/\\)/ : rgx, `(${url200})`) + if(contentMatchMdLinkAnchor.length) + newContent = findReplace(newContent, isRoot ? /\\(https\:\/\/www\.azion\.com\/\\)/ : rgxMdLinkAnchor, `(${url200}#`) console.log(`{ isRoot: ${isRoot}, pagePermalink: ${pagePermalink}, file: ${filePath}, - permalink: ${data.permalink}, - rgx: ${rgx}, + rgxMdLink: ${rgxMdLink}, + contentMatchMdLink: ${contentMatchMdLink}, + rgxMdLinkAnchor: ${rgxMdLinkAnchor}, + contentMatchMdLinkAnchor: ${contentMatchMdLinkAnchor}, initialUrl: ${item.initialUrl}, url30x: ${url30x}, url200: ${url200}, - contentMatch: ${contentMatch}, - contentMatchCount: ${contentMatch.length}, processedCount: ${counterFoundLinks} }`) diff --git a/src/content/docs/pt-br/pages/changelog/changelog.mdx b/src/content/docs/pt-br/pages/changelog/changelog.mdx index 06e5846996..241d761e3c 100644 --- a/src/content/docs/pt-br/pages/changelog/changelog.mdx +++ b/src/content/docs/pt-br/pages/changelog/changelog.mdx @@ -390,11 +390,11 @@ Corrigida a ocorrência de timeout ao gerenciar **Edge Functions** e **Edge Serv **Marketplace** -- **Azion Marketplace** já está disponível para uso. O Marketplace é um catálogo digital que torna mais fácil encontrar, testar e implementar softwares que rodam no edge em qualquer lugar. Com uma ampla variedade de soluções, clientes Azion podem utilizá-lo para aprimorar, compor ou personalizar suas aplicações. O Marketplace também oferece meios para que fornecedores independentes de software (ISVs), desenvolvedores de software e comunidades abertas distribuam softwares que rodam no edge para uma audiência de milhares de compradores ativos. Saiba mais sobre o Marketplace [aqui](/pt-br/documentacao/produtos/marketplace). +- **Azion Marketplace** já está disponível para uso. O Marketplace é um catálogo digital que torna mais fácil encontrar, testar e implementar softwares que rodam no edge em qualquer lugar. Com uma ampla variedade de soluções, clientes Azion podem utilizá-lo para aprimorar, compor ou personalizar suas aplicações. O Marketplace também oferece meios para que fornecedores independentes de software (ISVs), desenvolvedores de software e comunidades abertas distribuam softwares que rodam no edge para uma audiência de milhares de compradores ativos. Saiba mais sobre o Marketplace [aqui](/pt-br/documentacao/produtos/marketplace/). **Azion CLI** -- **Beta Release:** agora, é possível publicar suas aplicações Javascript, Next.js e Flareact na Azion. Além disso, clientes Azion podem gerenciar suas **Edge Functions** e **Edge Services** através de linhas de comando. Saiba mais sobre a Azion CLI [aqui](/pt-br/documentacao/produtos/cli). +- **Beta Release:** agora, é possível publicar suas aplicações Javascript, Next.js e Flareact na Azion. Além disso, clientes Azion podem gerenciar suas **Edge Functions** e **Edge Services** através de linhas de comando. Saiba mais sobre a Azion CLI [aqui](/pt-br/documentacao/produtos/azion-cli/visao-geral/). ------