
Research
Shai-Hulud Descends to Hades: Miasma Worm Campaign Spreads with New PyPI Wave
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.
Dos mesmos criadores de XanaScript™.
O Agateemeéle é uma template engine server-side para Node.js + Express, feita para transformar HTML em algo muito mais engraçadoKKKKK, sem perder poder.
Arquivos .agtml são compilados para JavaScript, possuem suporte a:
npm install agateemele
import express from "express";
import agtml from "agateemele";
const app = express();
app.engine("agtml", agtml.__express);
app.set("view engine", "agtml");
app.set("views", "./views");
app.get("/", (req, res) => {
res.render("home", {
nome: "flazo0",
usuario: {
admin: true
}
});
});
app.listen(3000);
views/
├── home.agtml
├── header.agtml
└── footer.agtml
<ego>{{ nome }}</ego>
Resultado:
<h1>Flazo</h1>
Tudo dentro de {{ }} aceita JavaScript:
{{ nome.toUpperCase() }}
{{ preco * quantidade }}
{{ produtos.length }}
{{ online ? "ON" : "OFF" }}
@se@se usuario.admin
<ego>ADMIN</ego>
@fim
@senao@se usuario.admin
<ego>ADMIN</ego>
@senao
<ego>USUÁRIO</ego>
@fim
@para@para produto em produtos
<resenha>
{{ produto.nome }}
</resenha>
@fim
Também aceita expressões:
@para item em produtos.filter(x => x.ativo)
@include("header")
<ego>Página</ego>
@include("footer")
Helpers são funções globais disponíveis no template.
import agtml from "agateemele";
agtml.helper("money", valor => `R$ ${valor}`);
{{ money(preco) }}
Filters transformam valores usando pipe.
agtml.filter("upper", valor => valor.toUpperCase());
agtml.filter("lower", valor => valor.toLowerCase());
{{ nome | upper }}
{{ nome | lower }}
Com argumentos:
agtml.filter("prefix", (valor, p) => p + valor);
{{ nome | prefix("Sr. ") }}
Agateemeéle suporta async nativamente.
{{ await buscarUsuario() }}
{{ await buscarPreco() }}
@include("header")
Tudo já suporta Promises automaticamente.
Templates compilados ficam em memória automaticamente.
Primeira renderização:
.agtml -> compile -> cache
Próximas:
cache -> render
Sem configuração.
Erros apontam para a linha real do .agtml.
Exemplo:
Erro em views/home.agtml:18
ReferenceError:
nome is not defined
Muito melhor para debug.
| HTML | Agateemeéle |
|---|---|
| html | agateemeéle |
| head | celebro |
| body | corpinho |
| main | fahhh |
| section | area51 |
| header | entrada_triunfal |
| footer | jae |
| nav | mapadoscria |
| HTML | Agateemeéle |
|---|---|
| h1 | ego |
| h2 | aura |
| p | resenha |
| span | betinha |
| strong | brutal |
| blockquote | fofoca |
| HTML | Agateemeéle |
|---|---|
| div | lixao |
| form | slk |
| label | olhaisso |
| HTML | Agateemeéle |
|---|---|
| input | digitae |
| select | escolheai |
| option | vai_nessa_bro |
| button | clicaai |
| HTML | Agateemeéle |
|---|---|
| img | shape |
| video | cineminha |
| audio | escutae |
| canvas | rabisco |
| HTML | Agateemeéle |
|---|---|
| style | drip |
| script | xanascript |
| meta | hehe |
| HTML | Agateemeéle |
|---|---|
| a | legoKKKK |
<agateemeéle>
<celebro>
<hehe charset="UTF-8">
<ego>{{ titulo }}</ego>
</celebro>
<corpinho>
@include("header")
@se usuario.admin
<ego>
Bem vindo,
{{ nome | upper }}
</ego>
@senao
<ego>
Olá,
{{ nome }}
</ego>
@fim
@para produto em produtos
<lixao>
<resenha>
{{ produto.nome }}
</resenha>
<resenha>
{{ money(produto.preco) }}
</resenha>
</lixao>
@fim
</corpinho>
</agateemeéle>
helper(name, fn)Registra helper global.
agtml.helper("money", fn);
filter(name, fn)Registra filter global.
agtml.filter("upper", fn);
renderFile(path, data)Renderiza manualmente.
const html =
await agtml.renderFile("./views/home.agtml", data);
__expressEngine pronta para Express.
app.engine("agtml", agtml.__express);
Agateemeéle existe porque template engine não precisa ser chata.
Código precisa funcionar.
Se puder fazer isso com:
<ego>{{ nome }}</ego>
melhor ainda.
Dos mesmos criadores de XanaScript™.
FAQs
Dos mesmos criadores de XanaScript™.
We found that agateemele demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.

Security News
RubyGems and Bundler 4.0.13 introduced an opt-in cooldown feature that delays newly published gems during dependency resolution.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.