This commit is contained in:
Luiz Silva 2025-06-30 12:59:56 -03:00
parent e8eda7ff32
commit 127061d04c
11 changed files with 912 additions and 914 deletions

View file

@ -1,16 +1,15 @@
{
"$schema": "node_modules/@biomejs/biome/configuration_schema.json",
"$schema": "node_modules/@biomejs/biome/configuration_schema.json",
"extends": ["node_modules/p-comuns/Documentos/biome.json"],
"files": {
"ignore": []
},
"formatter": { "formatWithErrors": true },
"linter": {
"enabled": true,
"rules": {
"complexity": {
"useLiteralKeys": "off"
}
}
}
"files": {},
"formatter": { "formatWithErrors": true },
"linter": {
"enabled": true,
"rules": {
"complexity": {
"useLiteralKeys": "off"
}
}
}
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View file

@ -12,7 +12,7 @@ const mapearPasta = ({ prefixos, pasta, arquivoDestino, variavel, }) => {
const pasta_estaticos = pasta.endsWith("/") ? pasta : `${pasta}/`;
if (!node_fs_1.default.existsSync(pasta_estaticos))
throw new Error(`Pasta ${pasta_estaticos} não existe`);
const gerar = (async () => {
const _gerar = (async () => {
// listar arquivos da pasta estáticos
const files = (0, glob_1.globSync)(`${pasta_estaticos}**/*`, { nodir: true });
const arquivo_ts = `

View file

@ -1 +1 @@
{"version":3,"file":"mapear_pasta.js","sourceRoot":"","sources":["../src/mapear_pasta.ts"],"names":[],"mappings":";AAAA,0EAA0E;;;;;;AAE1E,sDAAyB;AACzB,0DAA6B;AAC7B,+BAAgC;AAEzB,MAAM,WAAW,GAAG,CAAC,EAC3B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,QAAQ,GAMR,EAAE,EAAE;IACJ,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;IAClE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,SAAS,eAAe,aAAa,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,GAAG,eAAe,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG;;;;GAIlB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;aACtD,IAAI,CAAC,KAAK,CAAC;;;;;;;;iBAQG,QAAQ,IAAI,WAAW;;;aAG3B,CAAC,GAAG,EAAE;YAchB,MAAM,QAAQ,GAAG,EAAQ,CAAC;YAE1B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChE,IAAI,KAAK,GAAG,QAAQ,CAAC;gBACrB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC3C,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,SAAS,CACxC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CACzC,KAAK,CAAC;oBACR,CAAC;yBAAM,CAAC;wBACP,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAO,CAAC;oBAC5B,CAAC;gBACF,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,EAAE;;KAED,CAAC;QAEJ,iCAAiC;QACjC,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,iBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,mBAAmB;QAEnB,iBAAE,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,EAAE,CAAC;AACN,CAAC,CAAC;AApFW,QAAA,WAAW,eAoFtB"}
{"version":3,"file":"mapear_pasta.js","sourceRoot":"","sources":["../src/mapear_pasta.ts"],"names":[],"mappings":";AAAA,0EAA0E;;;;;;AAE1E,sDAAwB;AACxB,0DAA4B;AAC5B,+BAA+B;AAExB,MAAM,WAAW,GAAG,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,cAAc,EACd,QAAQ,GAMT,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAA;IACjE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,SAAS,eAAe,aAAa,CAAC,CAAA;IAExD,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,GAAG,eAAe,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjE,MAAM,UAAU,GAAG;;;;GAIpB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;aACtD,IAAI,CAAC,KAAK,CAAC;;;;;;;;iBAQC,QAAQ,IAAI,WAAW;;;aAG3B,CAAC,GAAG,EAAE;YAcb,MAAM,QAAQ,GAAG,EAAQ,CAAA;YAEzB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC/D,IAAI,KAAK,GAAG,QAAQ,CAAA;gBACpB,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC1C,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,iBAAiB,SAAS,CACvC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAC1C,KAAK,CAAA;oBACR,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;wBACjC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAO,CAAA;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBACrC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,CAAC,EAAE;;KAEH,CAAA;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACjD,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,iBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,mBAAmB;QAEnB,iBAAE,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC,CAAC,EAAE,CAAA;AACN,CAAC,CAAA;AApFY,QAAA,WAAW,eAoFvB"}

View file

@ -1,19 +1,19 @@
import { z } from "zod";
import { PORTA, PREFIXO } from "../PREFIXO";
import { z } from "zod"
import { PORTA, PREFIXO } from "../PREFIXO"
const validar = z
.object({
PORTA: z.string(),
PREFIXO: z.string().regex(/^\/\w+$/),
})
.safeParse({ PORTA, PREFIXO });
.object({
PORTA: z.string(),
PREFIXO: z.string().regex(/^\/\w+$/),
})
.safeParse({ PORTA, PREFIXO })
if ("error" in validar) {
throw new Error(
validar.error?.errors
.map((erro) => `${erro.path}: ${erro.message}`)
.join("\n"),
);
throw new Error(
validar.error?.errors
.map((erro) => `${erro.path}: ${erro.message}`)
.join("\n"),
)
}
export const ambiente = validar.data;
export const ambiente = validar.data

View file

@ -1,26 +1,26 @@
import path from "node:path";
import { cdn_carro_de_boi } from "p-comuns";
import { mapearPasta } from "../src/mapear_pasta";
import path from "node:path"
import { cdn_carro_de_boi } from "p-comuns"
import { mapearPasta } from "../src/mapear_pasta"
const pasta_estaticos = path.resolve(process.cwd(), "estaticos");
const pasta_src = path.resolve(process.cwd(), "src");
const version = process.env.npm_package_version;
const pasta_estaticos = path.resolve(process.cwd(), "estaticos")
const pasta_src = path.resolve(process.cwd(), "src")
const _version = process.env.npm_package_version
export const gerar = (async () => {
mapearPasta({
prefixos: {
relativo: "/estaticos",
"link-local": "http://localhost:5020/estaticos",
"link-servidor": `${cdn_carro_de_boi}/estaticos`,
node_modules: "node_modules/p-estaticos/estaticos",
},
arquivoDestino: path.resolve(pasta_src, "index.ts"),
pasta: pasta_estaticos,
});
})();
mapearPasta({
prefixos: {
relativo: "/estaticos",
"link-local": "http://localhost:5020/estaticos",
"link-servidor": `${cdn_carro_de_boi}/estaticos`,
node_modules: "node_modules/p-estaticos/estaticos",
},
arquivoDestino: path.resolve(pasta_src, "index.ts"),
pasta: pasta_estaticos,
})
})()
if (process.argv.includes("gerar")) {
gerar.then(() => {
console.log("Arquivo gerado com sucesso");
});
gerar.then(() => {
console.log("Arquivo gerado com sucesso")
})
}

View file

@ -1,164 +1,163 @@
import fs from "node:fs";
import path from "node:path";
import cors from "@fastify/cors";
import { renderToStaticMarkup } from "react-dom/server";
import { estaticos } from "../src";
import { ambiente } from "./ambiente";
import { gerar } from "./listar_arquivos";
import fs from "node:fs"
import path from "node:path"
import cors from "@fastify/cors"
import fastifyStatc from "@fastify/static"
import dayjs from "dayjs"
import Fastify from "fastify"
import type React from "react"
import { renderToStaticMarkup } from "react-dom/server"
import { estaticos } from "../src"
import { ambiente } from "./ambiente"
import { gerar } from "./listar_arquivos"
// biome-ignore lint/style/useImportType: <explanation>
import React, {} from "react";
const { PORTA, PREFIXO } = ambiente
import fastifyStatc from "@fastify/static";
import dayjs from "dayjs";
import Fastify, {} from "fastify";
const { PORTA, PREFIXO } = ambiente;
const _iframe = String(Math.random());
const _iframe = String(Math.random())
const criarHtml = (entrada: {
// biome-ignore lint/complexity/noBannedTypes: <explanation>
[key: string]: string | {};
[key: string]: string | {}
}): React.JSX.Element[] => {
const retorno = [] as React.JSX.Element[];
const retorno = [] as React.JSX.Element[]
for (const [k, v] of Object.entries(entrada)) {
if (typeof v === "string") {
retorno.push(
<p key={Math.random()}>
<a target={_iframe} href={`${v}?aleatório=${Math.random()}`}>
{v}
</a>
</p>,
);
} else {
retorno.push(
<div
key={Math.random()}
style={{
margin: 10,
padding: 5,
borderColor: "black",
borderWidth: "1px",
borderStyle: "solid",
}}
>
<details>
<summary>{k}</summary>
{criarHtml(v)}
</details>
</div>,
);
}
}
for (const [k, v] of Object.entries(entrada)) {
if (typeof v === "string") {
retorno.push(
<p key={Math.random()}>
<a
target={_iframe}
href={`${v}?aleatório=${Math.random()}`}
>
{v}
</a>
</p>,
)
} else {
retorno.push(
<div
key={Math.random()}
style={{
margin: 10,
padding: 5,
borderColor: "black",
borderWidth: "1px",
borderStyle: "solid",
}}
>
<details>
<summary>{k}</summary>
{criarHtml(v)}
</details>
</div>,
)
}
}
return retorno;
};
return retorno
}
gerar.then(() => {
const fastify = Fastify({
logger: false,
const fastify = Fastify({
logger: false,
ignoreTrailingSlash: true,
});
ignoreTrailingSlash: true,
})
fastify.addHook("onSend", async (request, reply) => {
console.log(
[
dayjs().format("YYYY-MM-DD HH:mm:ss"),
request.method,
request.url,
reply.statusCode,
request.headers.site || request.headers.referer,
].join(" "),
);
});
fastify.addHook("onSend", async (request, reply) => {
console.log(
[
dayjs().format("YYYY-MM-DD HH:mm:ss"),
request.method,
request.url,
reply.statusCode,
request.headers.site || request.headers.referer,
].join(" "),
)
})
//cors
fastify.register(cors, {
origin: "*",
});
//cors
fastify.register(cors, {
origin: "*",
})
fastify.route({
method: "GET",
url: "/",
handler: (req, res) => {
res.redirect(`${PREFIXO}/`);
},
});
fastify.route({
method: "GET",
url: "/",
handler: (_req, res) => {
res.redirect(`${PREFIXO}/`)
},
})
fastify.route({
method: "GET",
url: `${PREFIXO}/`,
handler: async (request, reply) => {
const html = (
<html lang="pt-BR">
<head>
<title>Arquivos Estáticos</title>
</head>{" "}
<body>
<h4>Arquivos Estáticos</h4>
<table width={"100%"}>
<tr>
<td width={"50%"}> {criarHtml(estaticos("relativo"))} </td>
<td width={"50%"}>
<iframe
title="Iframe"
name={_iframe}
height={600}
width={"100%"}
/>
</td>
</tr>
</table>
</body>
</html>
);
fastify.route({
method: "GET",
url: `${PREFIXO}/`,
handler: async (_request, reply) => {
const html = (
<html lang="pt-BR">
<head>
<title>Arquivos Estáticos</title>
</head>{" "}
<body>
<h4>Arquivos Estáticos</h4>
<table width={"100%"}>
<tr>
<td width={"50%"}> {criarHtml(estaticos("relativo"))} </td>
<td width={"50%"}>
<iframe
title="Iframe"
name={_iframe}
height={600}
width={"100%"}
/>
</td>
</tr>
</table>
</body>
</html>
)
const renderHtml = renderToStaticMarkup(html, {});
const renderHtml = renderToStaticMarkup(html, {})
// htlm utf-8
reply.header("content-type", "text/html; charset=utf-8");
reply.send(renderHtml);
},
});
// htlm utf-8
reply.header("content-type", "text/html; charset=utf-8")
reply.send(renderHtml)
},
})
fastify.register(fastifyStatc, {
root: path.join(process.cwd(), "estaticos"),
prefix: PREFIXO,
});
fastify.register(fastifyStatc, {
root: path.join(process.cwd(), "estaticos"),
prefix: PREFIXO,
})
// 404
fastify.setNotFoundHandler((request, reply) => {
const html404 = fs.readFileSync(
path.join(process.cwd(), estaticos("relativo").html["404.html"]),
"utf8",
);
// 404
fastify.setNotFoundHandler((request, reply) => {
const html404 = fs.readFileSync(
path.join(process.cwd(), estaticos("relativo").html["404.html"]),
"utf8",
)
reply.header("content-type", "text/html; charset=utf-8");
reply.header("content-type", "text/html; charset=utf-8")
reply
.code(404)
.send(html404.replace("{ERRO}", `Página não encontrada: ${request.url}`));
});
reply
.code(404)
.send(html404.replace("{ERRO}", `Página não encontrada: ${request.url}`))
})
const jaEstaRodando = fetch(`http://0.0.0.0:${PORTA}`)
.then(() => true)
.catch(() => false);
const jaEstaRodando = fetch(`http://0.0.0.0:${PORTA}`)
.then(() => true)
.catch(() => false)
jaEstaRodando.then((jaEstaRodando) => {
!jaEstaRodando &&
fastify.listen(
{ port: Number(PORTA), host: "0.0.0.0" },
(err, address) => {
if (err) throw err;
console.log(
`${new Date().toISOString()} Servidor ${PREFIXO} Rodando em ${address}`,
);
},
);
jaEstaRodando.then((jaEstaRodando) => {
!jaEstaRodando &&
fastify.listen(
{ port: Number(PORTA), host: "0.0.0.0" },
(err, address) => {
if (err) throw err
console.log(
`${new Date().toISOString()} Servidor ${PREFIXO} Rodando em ${address}`,
)
},
)
jaEstaRodando && console.log(`Servidor ${PREFIXO} já está rodando`);
});
});
jaEstaRodando && console.log(`Servidor ${PREFIXO} já está rodando`)
})
})

View file

@ -1,6 +1,6 @@
{
"name": "p-estaticos",
"version": "0.61.0",
"version": "0.68.0",
"description": "",
"main": "dist/index.js",
"scripts": {
@ -23,13 +23,13 @@
"@fastify/static": "^7.0.4",
"dayjs": "^1.11.11",
"fastify": "^4.27.0",
"p-comuns": "git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git#producao",
"p-comuns": "git+https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git#producao",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"zod": "3.23.8"
},
"devDependencies": {
"@biomejs/biome": "latest",
"@biomejs/biome": "^2.0.6",
"@types/node": "^20.11.30",
"@types/react": "^18.3.1",
"@types/react-dom": "^18.3.0",

86
pnpm-lock.yaml generated
View file

@ -21,8 +21,8 @@ importers:
specifier: ^4.27.0
version: 4.29.0
p-comuns:
specifier: git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git#producao
version: git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git#1350348900bece75a07fcb16f1cca9f7f07cac2d
specifier: git+https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git#producao
version: git+https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git#eb88195f6a25edc93a21b82c83224c0b6fac4023
react:
specifier: ^18.3.1
version: 18.3.1
@ -34,8 +34,8 @@ importers:
version: 3.23.8
devDependencies:
'@biomejs/biome':
specifier: latest
version: 1.9.4
specifier: ^2.0.6
version: 2.0.6
'@types/node':
specifier: ^20.11.30
version: 20.17.19
@ -63,55 +63,55 @@ importers:
packages:
'@biomejs/biome@1.9.4':
resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
'@biomejs/biome@2.0.6':
resolution: {integrity: sha512-RRP+9cdh5qwe2t0gORwXaa27oTOiQRQvrFf49x2PA1tnpsyU7FIHX4ZOFMtBC4QNtyWsN7Dqkf5EDbg4X+9iqA==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/cli-darwin-arm64@1.9.4':
resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
'@biomejs/cli-darwin-arm64@2.0.6':
resolution: {integrity: sha512-AzdiNNjNzsE6LfqWyBvcL29uWoIuZUkndu+wwlXW13EKcBHbbKjNQEZIJKYDc6IL+p7bmWGx3v9ZtcRyIoIz5A==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@1.9.4':
resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
'@biomejs/cli-darwin-x64@2.0.6':
resolution: {integrity: sha512-wJjjP4E7bO4WJmiQaLnsdXMa516dbtC6542qeRkyJg0MqMXP0fvs4gdsHhZ7p9XWTAmGIjZHFKXdsjBvKGIJJQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@1.9.4':
resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
'@biomejs/cli-linux-arm64-musl@2.0.6':
resolution: {integrity: sha512-CVPEMlin3bW49sBqLBg2x016Pws7eUXA27XYDFlEtponD0luYjg2zQaMJ2nOqlkKG9fqzzkamdYxHdMDc2gZFw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-arm64@1.9.4':
resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
'@biomejs/cli-linux-arm64@2.0.6':
resolution: {integrity: sha512-ZSVf6TYo5rNMUHIW1tww+rs/krol7U5A1Is/yzWyHVZguuB0lBnIodqyFuwCNqG9aJGyk7xIMS8HG0qGUPz0SA==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@1.9.4':
resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
'@biomejs/cli-linux-x64-musl@2.0.6':
resolution: {integrity: sha512-mKHE/e954hR/hSnAcJSjkf4xGqZc/53Kh39HVW1EgO5iFi0JutTN07TSjEMg616julRtfSNJi0KNyxvc30Y4rQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-linux-x64@1.9.4':
resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
'@biomejs/cli-linux-x64@2.0.6':
resolution: {integrity: sha512-geM1MkHTV1Kh2Cs/Xzot9BOF3WBacihw6bkEmxkz4nSga8B9/hWy5BDiOG3gHDGIBa8WxT0nzsJs2f/hPqQIQw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@1.9.4':
resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
'@biomejs/cli-win32-arm64@2.0.6':
resolution: {integrity: sha512-290V4oSFoKaprKE1zkYVsDfAdn0An5DowZ+GIABgjoq1ndhvNxkJcpxPsiYtT7slbVe3xmlT0ncdfOsN7KruzA==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@1.9.4':
resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
'@biomejs/cli-win32-x64@2.0.6':
resolution: {integrity: sha512-bfM1Bce0d69Ao7pjTjUS+AWSZ02+5UHdiAP85Th8e9yV5xzw6JrHXbL5YWlcEKQ84FIZMdDc7ncuti1wd2sdbw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
@ -429,9 +429,9 @@ packages:
resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==}
engines: {node: '>=14.0.0'}
p-comuns@git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git#1350348900bece75a07fcb16f1cca9f7f07cac2d:
resolution: {commit: 1350348900bece75a07fcb16f1cca9f7f07cac2d, repo: http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git, type: git}
version: 0.93.0
p-comuns@git+https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git#eb88195f6a25edc93a21b82c83224c0b6fac4023:
resolution: {commit: eb88195f6a25edc93a21b82c83224c0b6fac4023, repo: https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git, type: git}
version: 0.110.0
p-finally@1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
@ -647,39 +647,39 @@ packages:
snapshots:
'@biomejs/biome@1.9.4':
'@biomejs/biome@2.0.6':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.9.4
'@biomejs/cli-darwin-x64': 1.9.4
'@biomejs/cli-linux-arm64': 1.9.4
'@biomejs/cli-linux-arm64-musl': 1.9.4
'@biomejs/cli-linux-x64': 1.9.4
'@biomejs/cli-linux-x64-musl': 1.9.4
'@biomejs/cli-win32-arm64': 1.9.4
'@biomejs/cli-win32-x64': 1.9.4
'@biomejs/cli-darwin-arm64': 2.0.6
'@biomejs/cli-darwin-x64': 2.0.6
'@biomejs/cli-linux-arm64': 2.0.6
'@biomejs/cli-linux-arm64-musl': 2.0.6
'@biomejs/cli-linux-x64': 2.0.6
'@biomejs/cli-linux-x64-musl': 2.0.6
'@biomejs/cli-win32-arm64': 2.0.6
'@biomejs/cli-win32-x64': 2.0.6
'@biomejs/cli-darwin-arm64@1.9.4':
'@biomejs/cli-darwin-arm64@2.0.6':
optional: true
'@biomejs/cli-darwin-x64@1.9.4':
'@biomejs/cli-darwin-x64@2.0.6':
optional: true
'@biomejs/cli-linux-arm64-musl@1.9.4':
'@biomejs/cli-linux-arm64-musl@2.0.6':
optional: true
'@biomejs/cli-linux-arm64@1.9.4':
'@biomejs/cli-linux-arm64@2.0.6':
optional: true
'@biomejs/cli-linux-x64-musl@1.9.4':
'@biomejs/cli-linux-x64-musl@2.0.6':
optional: true
'@biomejs/cli-linux-x64@1.9.4':
'@biomejs/cli-linux-x64@2.0.6':
optional: true
'@biomejs/cli-win32-arm64@1.9.4':
'@biomejs/cli-win32-arm64@2.0.6':
optional: true
'@biomejs/cli-win32-x64@1.9.4':
'@biomejs/cli-win32-x64@2.0.6':
optional: true
'@fastify/accept-negotiator@1.1.0': {}
@ -1013,7 +1013,7 @@ snapshots:
on-exit-leak-free@2.1.2: {}
p-comuns@git+http://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one:3000/git/multi-modulos-ambientais/_comuns.git#1350348900bece75a07fcb16f1cca9f7f07cac2d:
p-comuns@git+https://leitura:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MTQ3NTA1NzYsImlzcyI6IkdpdG5lc3MiLCJwaWQiOjgsInRrbiI6eyJ0eXAiOiJwYXQiLCJpZCI6MzJ9fQ.OYdExOVQm5UI3wfeTaWjmD0o65Y1hrjFz5EvMB1a__U@git.idz.one/git/multi-modulos-ambientais/_comuns.git#eb88195f6a25edc93a21b82c83224c0b6fac4023:
dependencies:
cross-fetch: 4.1.0
zod: 3.24.1

File diff suppressed because it is too large Load diff

View file

@ -1,35 +1,35 @@
// esse arquivo não pode ser importado em index.ts para não gerar conflito
import fs from "node:fs";
import path from "node:path";
import { globSync } from "glob";
import fs from "node:fs"
import path from "node:path"
import { globSync } from "glob"
export const mapearPasta = ({
prefixos,
pasta,
arquivoDestino,
variavel,
prefixos,
pasta,
arquivoDestino,
variavel,
}: {
prefixos: { [k: string]: string };
pasta: string;
arquivoDestino: string;
variavel?: string;
prefixos: { [k: string]: string }
pasta: string
arquivoDestino: string
variavel?: string
}) => {
const pasta_estaticos = pasta.endsWith("/") ? pasta : `${pasta}/`;
if (!fs.existsSync(pasta_estaticos))
throw new Error(`Pasta ${pasta_estaticos} não existe`);
const pasta_estaticos = pasta.endsWith("/") ? pasta : `${pasta}/`
if (!fs.existsSync(pasta_estaticos))
throw new Error(`Pasta ${pasta_estaticos} não existe`)
const gerar = (async () => {
// listar arquivos da pasta estáticos
const files = globSync(`${pasta_estaticos}**/*`, { nodir: true });
const _gerar = (async () => {
// listar arquivos da pasta estáticos
const files = globSync(`${pasta_estaticos}**/*`, { nodir: true })
const arquivo_ts = `
const arquivo_ts = `
const Prefixos = {
${Object.entries(prefixos)
.map(([k, v]) => `"${k}": "${v.replace(/"/g, '\\"')}"`)
.join(",\n")}
.map(([k, v]) => `"${k}": "${v.replace(/"/g, '\\"')}"`)
.join(",\n")}
};
/**
@ -41,7 +41,7 @@ export const mapearPasta = ({
const prefixo = Prefixos[caminho];
return ${(() => {
/*
/*
${files
.map((f) => f.slice(pasta_estaticos.length))
@ -50,42 +50,42 @@ export const mapearPasta = ({
*/
type tp = {
[key: string]: string | tp;
};
type tp = {
[key: string]: string | tp
}
const arquivos = {} as tp;
const arquivos = {} as tp
for (const arquivo of files) {
const partes = arquivo.slice(pasta_estaticos.length).split("/");
let pasta = arquivos;
for (const [i, parte] of partes.entries()) {
if (i === partes.length - 1) {
pasta[parte] = `~~~\${prefixo}${encodeURI(
arquivo.slice(pasta_estaticos.length - 1),
)}~~~`;
} else {
pasta[parte] = pasta[parte] || {};
pasta = pasta[parte] as tp;
}
}
}
for (const arquivo of files) {
const partes = arquivo.slice(pasta_estaticos.length).split("/")
let pasta = arquivos
for (const [i, parte] of partes.entries()) {
if (i === partes.length - 1) {
pasta[parte] = `~~~\${prefixo}${encodeURI(
arquivo.slice(pasta_estaticos.length - 1),
)}~~~`
} else {
pasta[parte] = pasta[parte] || {}
pasta = pasta[parte] as tp
}
}
}
return JSON.stringify(arquivos, null, 2)
.replace(/"~~~/g, "`")
.replace(/~~~"/g, "`");
})()};
return JSON.stringify(arquivos, null, 2)
.replace(/"~~~/g, "`")
.replace(/~~~"/g, "`")
})()};
};
`;
`
// criar pasta de arquivo destino
const pastaDestino = path.dirname(arquivoDestino);
if (!fs.existsSync(pastaDestino)) {
fs.mkdirSync(pastaDestino, { recursive: true });
}
// criar pasta de arquivo destino
const pastaDestino = path.dirname(arquivoDestino)
if (!fs.existsSync(pastaDestino)) {
fs.mkdirSync(pastaDestino, { recursive: true })
}
// escrever arquivo
// escrever arquivo
fs.writeFileSync(arquivoDestino, arquivo_ts);
})();
};
fs.writeFileSync(arquivoDestino, arquivo_ts)
})()
}