cistack 5.5.0 → 6.1.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/.github/dependabot.yml +42 -0
- package/.github/workflows/ci.yml +2 -1
- package/.github/workflows/pipeline.yml +250 -0
- package/README.md +4 -0
- package/package.json +7 -2
- package/product-site/.github/dependabot.yml +27 -0
- package/product-site/.github/workflows/pipeline.yml +202 -0
- package/product-site/.lighthouserc.json +22 -0
- package/product-site/README.md +1 -0
- package/product-site/app/[lang]/layout.tsx +95 -0
- package/product-site/app/[lang]/page.tsx +19 -0
- package/product-site/app/favicon.ico +0 -0
- package/product-site/app/globals.css +228 -0
- package/product-site/app/manifest.ts +20 -0
- package/product-site/app/robots.ts +12 -0
- package/product-site/app/sitemap.ts +12 -0
- package/product-site/components/CanvasText.tsx +219 -0
- package/product-site/components/CopyButton.tsx +85 -0
- package/product-site/components/HomeClient.tsx +985 -0
- package/product-site/components/InstallToggle.tsx +87 -0
- package/product-site/components/MotionRevealClient.tsx +53 -0
- package/product-site/components/TerminalCard.tsx +61 -0
- package/product-site/components/TerminalCardMotion.tsx +317 -0
- package/product-site/components/ui/accordion.tsx +74 -0
- package/product-site/components/ui/badge.tsx +52 -0
- package/product-site/components/ui/button.tsx +60 -0
- package/product-site/components/ui/card.tsx +103 -0
- package/product-site/components/ui/checkbox.tsx +29 -0
- package/product-site/components/ui/separator.tsx +25 -0
- package/product-site/components/ui/table.tsx +116 -0
- package/product-site/components/ui/tabs.tsx +82 -0
- package/product-site/components.json +25 -0
- package/product-site/dictionaries/br.json +137 -0
- package/product-site/dictionaries/cn.json +137 -0
- package/product-site/dictionaries/de.json +137 -0
- package/product-site/dictionaries/en.json +137 -0
- package/product-site/dictionaries/es.json +182 -0
- package/product-site/dictionaries/fr.json +182 -0
- package/product-site/dictionaries/pt.json +137 -0
- package/product-site/eslint.config.mjs +18 -0
- package/product-site/lib/dictionaries.ts +18 -0
- package/product-site/lib/dictionary-types.ts +3 -0
- package/product-site/lib/utils.ts +6 -0
- package/product-site/middleware.ts +39 -0
- package/product-site/next.config.mjs +14 -0
- package/product-site/package-lock.json +14201 -0
- package/product-site/package.json +41 -0
- package/product-site/postcss.config.mjs +7 -0
- package/product-site/public/file.svg +1 -0
- package/product-site/public/globe.svg +1 -0
- package/product-site/public/next.svg +1 -0
- package/product-site/public/og-image.png +0 -0
- package/product-site/public/vercel.svg +1 -0
- package/product-site/public/window.svg +1 -0
- package/product-site/scripts/sync-i18n.mjs +58 -0
- package/product-site/tsconfig.json +34 -0
- package/product-site/types/negotiator.d.ts +14 -0
- package/product-site/vercel.json +5 -0
- package/src/analyzers/codebase.js +53 -0
- package/src/detectors/framework.js +6 -6
- package/src/detectors/testing.js +37 -5
- package/src/generators/workflow.js +3 -63
- package/tests/run.js +38 -63
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
{
|
|
2
|
+
"navigation": {
|
|
3
|
+
"version": "VERSION",
|
|
4
|
+
"status": "Pipelines_Sync",
|
|
5
|
+
"repository": "Répertoire",
|
|
6
|
+
"registry": "Registre",
|
|
7
|
+
"core_manifest": "MANIFESTE_NOYAU",
|
|
8
|
+
"docs": "Docs"
|
|
9
|
+
},
|
|
10
|
+
"hero": {
|
|
11
|
+
"scan_identity": "SCAN_IDENTITÉ",
|
|
12
|
+
"s1_label": "S_01 // MOTEUR_INGESTION",
|
|
13
|
+
"s1_title": "VOTRE STACK",
|
|
14
|
+
"s2_label": "S_02 // SYNTHÈSE_PIPELINE",
|
|
15
|
+
"s2_title": "VOTRE PIPELINE",
|
|
16
|
+
"s3_label": "S_03 // VALIDATION_ACTION",
|
|
17
|
+
"s3_title": "ORCHESTRÉ",
|
|
18
|
+
"description": "cistack analyse en profondeur votre répertoire pour générer instantanément des workflows GitHub Actions prêts pour la production sur plus de 30 frameworks et 12 plateformes.",
|
|
19
|
+
"npx_command": "npx cistack",
|
|
20
|
+
"active_installs": "Installations Actives",
|
|
21
|
+
"per_week": "/ semaine",
|
|
22
|
+
"realtime_synth": "SYNTHÈSE_TEMPS_RÉEL",
|
|
23
|
+
"integrations": "Intégrations",
|
|
24
|
+
"stack_aware": "Compatible Stack",
|
|
25
|
+
"success_rate": "Taux de Succès"
|
|
26
|
+
},
|
|
27
|
+
"docs": {
|
|
28
|
+
"badge": "Spécification Technique v",
|
|
29
|
+
"title_part1": "Conçu pour la cohérence.",
|
|
30
|
+
"title_part2": "Généré pour la vitesse.",
|
|
31
|
+
"description": "cistack scanne votre répertoire de projet pour produire du YAML GitHub Actions de qualité production. Il détecte votre langage, framework, outils de test et plateforme d'hébergement — puis écrit le meilleur pipeline pour votre stack.",
|
|
32
|
+
"section1_id": "01 / 04",
|
|
33
|
+
"section1_num": "01. Capacités",
|
|
34
|
+
"section1_title": "Analyse & Détection",
|
|
35
|
+
"capabilities": {
|
|
36
|
+
"analysis": {
|
|
37
|
+
"label": "Analyse approfondie du code",
|
|
38
|
+
"sub": "Lit package.json, fichiers lock, configs"
|
|
39
|
+
},
|
|
40
|
+
"detection": {
|
|
41
|
+
"label": "Détection intelligente",
|
|
42
|
+
"sub": "Identifie plus de 30 frameworks et 12 langages"
|
|
43
|
+
},
|
|
44
|
+
"cache": {
|
|
45
|
+
"label": "Support Cache natif",
|
|
46
|
+
"sub": "Accélère les pipelines pour npm, pip, go, cargo & plus"
|
|
47
|
+
},
|
|
48
|
+
"preview": {
|
|
49
|
+
"label": "Déploiements PR Preview",
|
|
50
|
+
"sub": "Environnements automatiques pour Vercel et Netlify"
|
|
51
|
+
},
|
|
52
|
+
"audit": {
|
|
53
|
+
"label": "Audit & Mise à jour de Workflow",
|
|
54
|
+
"sub": "Met à jour les versions d'actions & vérifie les meilleures pratiques"
|
|
55
|
+
},
|
|
56
|
+
"hosting": {
|
|
57
|
+
"label": "Auto-détection d'hébergement",
|
|
58
|
+
"sub": "AWS, Vercel, Firebase, Docker & plus"
|
|
59
|
+
},
|
|
60
|
+
"multi_workflow": {
|
|
61
|
+
"label": "Sortie multi-workflow",
|
|
62
|
+
"sub": "ci.yml, deploy.yml, docker.yml, security.yml"
|
|
63
|
+
},
|
|
64
|
+
"security": {
|
|
65
|
+
"label": "Sécurité intégrée",
|
|
66
|
+
"sub": "Points de contrôle CodeQL + audit de dépendances"
|
|
67
|
+
},
|
|
68
|
+
"monorepo": {
|
|
69
|
+
"label": "Compatible Monorepo",
|
|
70
|
+
"sub": "Turborepo, Nx, Lerna, pnpm workspaces"
|
|
71
|
+
},
|
|
72
|
+
"interactive": {
|
|
73
|
+
"label": "Mode interactif",
|
|
74
|
+
"sub": "Confirme les paramètres avant d'écrire les fichiers"
|
|
75
|
+
},
|
|
76
|
+
"zero_config": {
|
|
77
|
+
"label": "Zéro config",
|
|
78
|
+
"sub": "Fonctionne immédiatement sans configuration requise"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"section2_num": "02. Activation",
|
|
82
|
+
"section2_title": "Installation",
|
|
83
|
+
"command_registry": "REGISTRE_COMMANDES",
|
|
84
|
+
"commands": {
|
|
85
|
+
"audit": "Vérifie les workflows pour les actions obsolètes",
|
|
86
|
+
"upgrade": "Met à jour toutes les actions vers les dernières versions",
|
|
87
|
+
"init": "Crée un fichier de configuration de surcharge"
|
|
88
|
+
},
|
|
89
|
+
"recommended_npx": "Recommandé : Utilisez npx pour une génération unique.",
|
|
90
|
+
"parameters_manifest": "MANIFESTE_PARAMÈTRES",
|
|
91
|
+
"flags": {
|
|
92
|
+
"explain": "Affiche le raisonnement de la stack détectée",
|
|
93
|
+
"path": "Chemin du répertoire cible à scanner",
|
|
94
|
+
"output": "Redéfinit le répertoire de sortie du workflow",
|
|
95
|
+
"dry_run": "Simule la sortie sans écrire",
|
|
96
|
+
"no_prompt": "Contourne les vérifications de sécurité interactives",
|
|
97
|
+
"verbose": "Active le traçage stdout maximum",
|
|
98
|
+
"force": "Ignore les fichiers existants et écrase"
|
|
99
|
+
},
|
|
100
|
+
"detection_logic_title": "Logique de Détection",
|
|
101
|
+
"detection_logic_desc": "Déclencheurs de reconnaissance automatique basés sur les signaux du système de fichiers.",
|
|
102
|
+
"signal_source": "Source du signal :",
|
|
103
|
+
"framework_coverage": "Couverture Framework",
|
|
104
|
+
"testing_tools": "Outils de test",
|
|
105
|
+
"section3_num": "03. Artefacts",
|
|
106
|
+
"section3_title": "Workflows Générés",
|
|
107
|
+
"workflows": {
|
|
108
|
+
"ci": {
|
|
109
|
+
"label": "Intégration Continue",
|
|
110
|
+
"desc": "S'exécute sur push/PR : Lint (ESLint, type-check TS), Test (matrice versions Node), Build (production), et E2E."
|
|
111
|
+
},
|
|
112
|
+
"deploy": {
|
|
113
|
+
"label": "Déploiement Continu",
|
|
114
|
+
"desc": "Se déclenche sur main : Déploiement de plateforme avec environnements PR Preview automatiques pour Vercel et Netlify."
|
|
115
|
+
},
|
|
116
|
+
"docker": {
|
|
117
|
+
"label": "Build & Push Docker",
|
|
118
|
+
"desc": "Se déclenche sur main/tags : Build multi-plateforme via Docker Buildx, push GHCR, et cache GitHub Actions."
|
|
119
|
+
},
|
|
120
|
+
"security": {
|
|
121
|
+
"label": "Audit de Sécurité",
|
|
122
|
+
"desc": "S'exécute sur push/PR/plannings hebdomadaires : Analyse de dépendances et audit profond CodeQL pour le langage détecté."
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"security_requirement": "Exigence de Sécurité",
|
|
126
|
+
"encrypted_secrets": "Secrets Chiffrés",
|
|
127
|
+
"add_secrets_at": "Ajouter des secrets sur :",
|
|
128
|
+
"section4_num": "04. Exemples Structurels",
|
|
129
|
+
"section4_title": "Scénarios de Stacks Standards",
|
|
130
|
+
"validated_output": "Sortie Validée"
|
|
131
|
+
},
|
|
132
|
+
"footer": {
|
|
133
|
+
"project_origin": "Origine_Projet",
|
|
134
|
+
"architected_by": "Architecturé_Par",
|
|
135
|
+
"status": "Statut",
|
|
136
|
+
"operational": "Tous les systèmes sont opérationnels",
|
|
137
|
+
"license": "Licence",
|
|
138
|
+
"open_source": "Open Source",
|
|
139
|
+
"footer_desc": "Génération automatisée d'infrastructure CI/CD pour le web moderne. Construit avec précision pour les développeurs qui valorisent la visibilité et la sécurité dans leurs pipelines de déploiement.",
|
|
140
|
+
"global_install": "Installation_Globale",
|
|
141
|
+
"copyright": "CISTACK ENGINE — TOUS LES PIPELINES RÉIFIÉS."
|
|
142
|
+
},
|
|
143
|
+
"install_toggle": {
|
|
144
|
+
"recommended": "recommandé",
|
|
145
|
+
"npm_global": "npm install -g",
|
|
146
|
+
"recommended_badge": "Recommandé",
|
|
147
|
+
"global_badge": "Global",
|
|
148
|
+
"npx_desc": "Récupère toujours la dernière version. Aucune étape d'installation.",
|
|
149
|
+
"npm_desc": "Idéal pour les développeurs travaillant sur plusieurs répertoires."
|
|
150
|
+
},
|
|
151
|
+
"terminal": {
|
|
152
|
+
"label": "TERMINAL",
|
|
153
|
+
"mission": "MISSION_NOYAU // L_02",
|
|
154
|
+
"project_scanned": "✔ Projet scanné",
|
|
155
|
+
"stack_detected": "✔ Stack détectée",
|
|
156
|
+
"detected_stack": "Stack Détectée",
|
|
157
|
+
"languages": "Langages :",
|
|
158
|
+
"frameworks": "Frameworks :",
|
|
159
|
+
"hosting": "Hébergement :",
|
|
160
|
+
"testing": "Tests :",
|
|
161
|
+
"release_tool": "Outil de release :",
|
|
162
|
+
"look_correct": "? Cela semble correct ? Générer le pipeline avec ces paramètres ? Oui",
|
|
163
|
+
"generated_workflows": "✔ Généré 3 workflow(s) CI",
|
|
164
|
+
"smart_merged": "↻ Smart-merged: ci.yml",
|
|
165
|
+
"updated_on": "mis à jour le \"on\" global",
|
|
166
|
+
"updated_concurrency": "mis à jour le \"concurrency\" global",
|
|
167
|
+
"added_lint": "ajouté le job \"lint\"",
|
|
168
|
+
"updated_build": "job \"build\" → mis à jour le \"name\"",
|
|
169
|
+
"updated_needs": "job \"build\" → mis à jour le \"needs\"",
|
|
170
|
+
"added_checkout": "job \"build\" → ajouté l'étape \"Récupération du code\"",
|
|
171
|
+
"added_node": "job \"build\" → ajouté l'étape \"Configuration de Node.js\"",
|
|
172
|
+
"updated_step_build": "job \"build\" → mis à jour l'étape \"Build\"",
|
|
173
|
+
"added_upload": "job \"build\" → ajouté l'étape \"Upload de l'artefact de build\"",
|
|
174
|
+
"written_deploy": "Écrit : deploy.yml",
|
|
175
|
+
"written_security": "Écrit : security.yml",
|
|
176
|
+
"written_dependabot": "Écrit : .github/dependabot.yml",
|
|
177
|
+
"done_msg": "Terminé ! Votre pipeline GitHub Actions est prêt.",
|
|
178
|
+
"workflows_path": "Workflows → cistack/.github/workflows",
|
|
179
|
+
"dependabot_path": "Dependabot → cistack/.github/dependabot.yml",
|
|
180
|
+
"processing": "Traitement de la sortie..."
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"navigation": {
|
|
3
|
+
"version": "VERSÃO",
|
|
4
|
+
"status": "Pipelines_Sincronizados",
|
|
5
|
+
"repository": "Repositório",
|
|
6
|
+
"registry": "Registro",
|
|
7
|
+
"core_manifest": "MANIFESTO_NÚCLEO",
|
|
8
|
+
"docs": "Docs"
|
|
9
|
+
},
|
|
10
|
+
"hero": {
|
|
11
|
+
"scan_identity": "IDENTIDADE_VARREDURA",
|
|
12
|
+
"s1_label": "S_01 // MOTOR_INGESTÃO",
|
|
13
|
+
"s1_title": "SUA STACK",
|
|
14
|
+
"s2_label": "S_02 // SÍNTESE_PIPELINE",
|
|
15
|
+
"s2_title": "SEU PIPELINE",
|
|
16
|
+
"s3_label": "S_03 // VALIDAÇÃO_AÇÃO",
|
|
17
|
+
"s3_title": "ORQUESTRADO",
|
|
18
|
+
"description": "cistack realiza uma varredura profunda no seu repositório para gerar instantaneamente fluxos de trabalho do GitHub Actions prontos para produção em mais de 30 frameworks e 12 plataformas.",
|
|
19
|
+
"npx_command": "npx cistack",
|
|
20
|
+
"active_installs": "Instalações Ativas",
|
|
21
|
+
"per_week": "/ semana",
|
|
22
|
+
"realtime_synth": "SÍNTESE_TEMPO_REAL",
|
|
23
|
+
"integrations": "Integrações",
|
|
24
|
+
"stack_aware": "Compatível com Stack",
|
|
25
|
+
"success_rate": "Taxa de Sucesso"
|
|
26
|
+
},
|
|
27
|
+
"docs": {
|
|
28
|
+
"badge": "Especificação Técnica v",
|
|
29
|
+
"title_part1": "Projetado para consistência.",
|
|
30
|
+
"title_part2": "Gerado para velocidade.",
|
|
31
|
+
"description": "cistack realiza uma varredura profunda no diretório do seu projeto para produzir YAML do GitHub Actions com qualidade de produção. Detecta sua linguagem, framework, ferramentas de teste e plataforma de hospedagem — depois escreve o melhor pipeline para sua stack.",
|
|
32
|
+
"section1_id": "01 / 04",
|
|
33
|
+
"section1_num": "01. Capacidades",
|
|
34
|
+
"section1_title": "Análise e Detecção",
|
|
35
|
+
"capabilities": {
|
|
36
|
+
"analysis": { "label": "Análise profunda de código", "sub": "Lê package.json, arquivos lock, configs" },
|
|
37
|
+
"detection": { "label": "Detecção inteligente", "sub": "Identifica mais de 30 frameworks e 12 linguagens" },
|
|
38
|
+
"cache": { "label": "Suporte a Cache nativo", "sub": "Acelera pipelines para npm, pip, go, cargo e mais" },
|
|
39
|
+
"preview": { "label": "Despuegues PR Preview", "sub": "Ambientes automáticos para Vercel e Netlify" },
|
|
40
|
+
"audit": { "label": "Auditoria e Upgrade de Workflow", "sub": "Atualiza versões de ações e verifica as melhores práticas" },
|
|
41
|
+
"hosting": { "label": "Auto-detecção de hospedagem", "sub": "AWS, Vercel, Firebase, Docker e mais" },
|
|
42
|
+
"multi_workflow": { "label": "Saída multi-workflow", "sub": "ci.yml, deploy.yml, docker.yml, security.yml" },
|
|
43
|
+
"security": { "label": "Segurança integrada", "sub": "Pontos de verificação CodeQL + auditoria de dependências" },
|
|
44
|
+
"monorepo": { "label": "Compatível com Monorepo", "sub": "Turborepo, Nx, Lerna, pnpm workspaces" },
|
|
45
|
+
"interactive": { "label": "Modo interativo", "sub": "Confirma configurações antes de escrever arquivos" },
|
|
46
|
+
"zero_config": { "label": "Zero config", "sub": "Funciona imediatamente sem necessidade de configuração" }
|
|
47
|
+
},
|
|
48
|
+
"section2_num": "02. Ativação",
|
|
49
|
+
"section2_title": "Instalação",
|
|
50
|
+
"command_registry": "REGISTRO_COMANDOS",
|
|
51
|
+
"commands": {
|
|
52
|
+
"audit": "Verifica fluxos de trabalho por ações desatualizadas",
|
|
53
|
+
"upgrade": "Atualiza todas as ações para as últimas versões",
|
|
54
|
+
"init": "Cria um arquivo de configuração de sobreposição"
|
|
55
|
+
},
|
|
56
|
+
"recommended_npx": "Recomendado: Use npx para uma geração única.",
|
|
57
|
+
"parameters_manifest": "MANIFESTO_PARÂMETROS",
|
|
58
|
+
"flags": {
|
|
59
|
+
"explain": "Mostra o raciocínio da stack detectada",
|
|
60
|
+
"path": "Caminho do diretório alvo para varredura",
|
|
61
|
+
"output": "Redefine o diretório de saída do fluxo de trabalho",
|
|
62
|
+
"dry_run": "Simula a saída sem escrever",
|
|
63
|
+
"no_prompt": "Ignora verificações de segurança interativas",
|
|
64
|
+
"verbose": "Ativa o rastreamento stdout máximo",
|
|
65
|
+
"force": "Ignora arquivos existentes e sobrescreve"
|
|
66
|
+
},
|
|
67
|
+
"detection_logic_title": "Lógica de Detecção",
|
|
68
|
+
"detection_logic_desc": "Gatilhos de reconhecimento automático baseados em sinais do sistema de arquivos.",
|
|
69
|
+
"signal_source": "Fonte do sinal:",
|
|
70
|
+
"framework_coverage": "Cobertura Framework",
|
|
71
|
+
"testing_tools": "Ferramentas de teste",
|
|
72
|
+
"section3_num": "03. Artefatos",
|
|
73
|
+
"section3_title": "Workflows Gerados",
|
|
74
|
+
"workflows": {
|
|
75
|
+
"ci": { "label": "Integração Contínua", "desc": "Executado em push/PR: Lint (ESLint, TS type-check), Test (matriz de versões Node), Build (produção), e E2E." },
|
|
76
|
+
"deploy": { "label": "Despuegue Contínuo", "desc": "Acionado na main: Despuegue de plataforma com ambientes PR Preview automáticos para Vercel e Netlify." },
|
|
77
|
+
"docker": { "label": "Build & Push Docker", "desc": "Acionado na main/tags: Build multi-plataforma via Docker Buildx, push GHCR, e cache GitHub Actions." },
|
|
78
|
+
"security": { "label": "Auditoria de Segurança", "desc": "Executado em push/PR/cronogramas semanais: Análise de dependências e auditoria profunda CodeQL para a linguagem detectada." }
|
|
79
|
+
},
|
|
80
|
+
"security_requirement": "Requisito de Segurança",
|
|
81
|
+
"encrypted_secrets": "Segredos Criptografados",
|
|
82
|
+
"add_secrets_at": "Adicionar segredos em:",
|
|
83
|
+
"section4_num": "04. Exemplos Estruturais",
|
|
84
|
+
"section4_title": "Cenários de Stacks Padrão",
|
|
85
|
+
"validated_output": "Saída Validada"
|
|
86
|
+
},
|
|
87
|
+
"footer": {
|
|
88
|
+
"project_origin": "Origem_Projeto",
|
|
89
|
+
"architected_by": "Arquitetado_Por",
|
|
90
|
+
"status": "Status",
|
|
91
|
+
"operational": "Todos os sistemas operacionais",
|
|
92
|
+
"license": "Licença",
|
|
93
|
+
"open_source": "Código Aberto",
|
|
94
|
+
"footer_desc": "Geração automatizada de infraestrutura CI/CD para a web moderna. Construído com precisão para desenvolvedores que valorizam visibilidade e segurança em seus pipelines de deploy.",
|
|
95
|
+
"global_install": "Instalação_Global",
|
|
96
|
+
"copyright": "CISTACK ENGINE — TODOS OS PIPELINES REIFICADOS."
|
|
97
|
+
},
|
|
98
|
+
"install_toggle": {
|
|
99
|
+
"recommended": "recomendado",
|
|
100
|
+
"npm_global": "npm install -g",
|
|
101
|
+
"recommended_badge": "Recomendado",
|
|
102
|
+
"global_badge": "Global",
|
|
103
|
+
"npx_desc": "Sempre obtém a última versão. Sem etapa de instalação.",
|
|
104
|
+
"npm_desc": "Melhor para desenvolvedores em múltiplos repositórios."
|
|
105
|
+
},
|
|
106
|
+
"terminal": {
|
|
107
|
+
"label": "TERMINAL",
|
|
108
|
+
"mission": "MISSÃO_NÚCLEO // L_02",
|
|
109
|
+
"project_scanned": "✔ Projeto escaneado",
|
|
110
|
+
"stack_detected": "✔ Stack detectada",
|
|
111
|
+
"detected_stack": "Stack Detectada",
|
|
112
|
+
"languages": "Linguagens:",
|
|
113
|
+
"frameworks": "Frameworks:",
|
|
114
|
+
"hosting": "Hospedagem:",
|
|
115
|
+
"testing": "Testes:",
|
|
116
|
+
"release_tool": "Ferramenta release:",
|
|
117
|
+
"look_correct": "? Isso parece correto? Gerar pipeline com essas configurações? Sim",
|
|
118
|
+
"generated_workflows": "✔ Gerados 3 fluxos de trabalho CI",
|
|
119
|
+
"smart_merged": "↻ Mesclagem inteligente: ci.yml",
|
|
120
|
+
"updated_on": "atualizado \"on\" de nível superior",
|
|
121
|
+
"updated_concurrency": "atualizado \"concurrency\" de nível superior",
|
|
122
|
+
"added_lint": "adicionado job \"lint\"",
|
|
123
|
+
"updated_build": "job \"build\" → nome atualizado",
|
|
124
|
+
"updated_needs": "job \"build\" → needs atualizado",
|
|
125
|
+
"added_checkout": "job \"build\" → adicionada etapa \"Checkout code\"",
|
|
126
|
+
"added_node": "job \"build\" → adicionada etapa \"Set up Node.js\"",
|
|
127
|
+
"updated_step_build": "job \"build\" → etapa \"Build\" atualizada",
|
|
128
|
+
"added_upload": "job \"build\" → adicionada etapa \"Upload build artifact\"",
|
|
129
|
+
"written_deploy": "Escrito: deploy.yml",
|
|
130
|
+
"written_security": "Escrito: security.yml",
|
|
131
|
+
"written_dependabot": "Escrito: .github/dependabot.yml",
|
|
132
|
+
"done_msg": "Pronto! Seu pipeline de GitHub Actions está preparado.",
|
|
133
|
+
"workflows_path": "Fluxos de trabalho → cistack/.github/workflows",
|
|
134
|
+
"dependabot_path": "Dependabot → cistack/.github/dependabot.yml",
|
|
135
|
+
"processing": "Processando Saída..."
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
2
|
+
import nextVitals from "eslint-config-next/core-web-vitals";
|
|
3
|
+
import nextTs from "eslint-config-next/typescript";
|
|
4
|
+
|
|
5
|
+
const eslintConfig = defineConfig([
|
|
6
|
+
...nextVitals,
|
|
7
|
+
...nextTs,
|
|
8
|
+
// Override default ignores of eslint-config-next.
|
|
9
|
+
globalIgnores([
|
|
10
|
+
// Default ignores of eslint-config-next:
|
|
11
|
+
".next/**",
|
|
12
|
+
"out/**",
|
|
13
|
+
"build/**",
|
|
14
|
+
"next-env.d.ts",
|
|
15
|
+
]),
|
|
16
|
+
]);
|
|
17
|
+
|
|
18
|
+
export default eslintConfig;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import 'server-only'
|
|
2
|
+
|
|
3
|
+
const dictionaries = {
|
|
4
|
+
en: () => import('../dictionaries/en.json').then((module) => module.default),
|
|
5
|
+
fr: () => import('../dictionaries/fr.json').then((module) => module.default),
|
|
6
|
+
es: () => import('../dictionaries/es.json').then((module) => module.default),
|
|
7
|
+
pt: () => import('../dictionaries/pt.json').then((module) => module.default),
|
|
8
|
+
br: () => import('../dictionaries/br.json').then((module) => module.default),
|
|
9
|
+
de: () => import('../dictionaries/de.json').then((module) => module.default),
|
|
10
|
+
cn: () => import('../dictionaries/cn.json').then((module) => module.default),
|
|
11
|
+
} as const;
|
|
12
|
+
|
|
13
|
+
export type Locale = keyof typeof dictionaries;
|
|
14
|
+
|
|
15
|
+
export const hasLocale = (locale: string): locale is Locale =>
|
|
16
|
+
locale in dictionaries
|
|
17
|
+
|
|
18
|
+
export const getDictionary = async (locale: Locale) => dictionaries[locale]()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import type { NextRequest } from "next/server";
|
|
3
|
+
import { match } from "@formatjs/intl-localematcher";
|
|
4
|
+
import Negotiator from "negotiator";
|
|
5
|
+
|
|
6
|
+
const locales = ["en", "fr", "es", "pt", "br", "de", "cn"];
|
|
7
|
+
const defaultLocale = "en";
|
|
8
|
+
|
|
9
|
+
function getLocale(request: NextRequest) {
|
|
10
|
+
const negotiatorHeaders: Record<string, string> = {};
|
|
11
|
+
request.headers.forEach((value, key) => {
|
|
12
|
+
negotiatorHeaders[key] = value;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const languages = new Negotiator({ headers: negotiatorHeaders }).languages();
|
|
16
|
+
|
|
17
|
+
return match(languages, locales, defaultLocale);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function middleware(request: NextRequest) {
|
|
21
|
+
const { pathname } = request.nextUrl;
|
|
22
|
+
const pathnameHasLocale = locales.some(
|
|
23
|
+
(locale) => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
if (pathnameHasLocale) {
|
|
27
|
+
return NextResponse.next();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const locale = getLocale(request);
|
|
31
|
+
request.nextUrl.pathname = `/${locale}${pathname}`;
|
|
32
|
+
return NextResponse.redirect(request.nextUrl);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const config = {
|
|
36
|
+
matcher: [
|
|
37
|
+
"/((?!_next|api|.*\\..*).*)",
|
|
38
|
+
],
|
|
39
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
|
|
6
|
+
/** @type {import('next').NextConfig} */
|
|
7
|
+
const nextConfig = {
|
|
8
|
+
experimental: {
|
|
9
|
+
inlineCss: true,
|
|
10
|
+
optimizePackageImports: ["@base-ui/react", "lucide-react"],
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default nextConfig;
|