antigravity-flow 1.0.2 → 1.0.3
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/src/templates/en/fragments/anchor.md.ejs +4 -0
- package/dist/src/templates/en/fragments/angular.md.ejs +5 -0
- package/dist/src/templates/en/fragments/astro.md.ejs +4 -0
- package/dist/src/templates/en/fragments/elixir.md.ejs +4 -0
- package/dist/src/templates/en/fragments/express.md.ejs +5 -0
- package/dist/src/templates/en/fragments/fastify.md.ejs +4 -0
- package/dist/src/templates/en/fragments/flask.md.ejs +4 -0
- package/dist/src/templates/en/fragments/gin.md.ejs +4 -0
- package/dist/src/templates/en/fragments/go.md.ejs +5 -0
- package/dist/src/templates/en/fragments/ink.md.ejs +4 -0
- package/dist/src/templates/en/fragments/move.md.ejs +4 -0
- package/dist/src/templates/en/fragments/node.md.ejs +5 -0
- package/dist/src/templates/en/fragments/nuxtjs.md.ejs +4 -0
- package/dist/src/templates/en/fragments/python.md.ejs +5 -0
- package/dist/src/templates/en/fragments/remix.md.ejs +4 -0
- package/dist/src/templates/en/fragments/rigor/standard.md.ejs +5 -0
- package/dist/src/templates/en/fragments/svelte.md.ejs +4 -0
- package/dist/src/templates/en/fragments/sveltekit.md.ejs +4 -0
- package/dist/src/templates/en/fragments/vue.md.ejs +5 -0
- package/dist/src/templates/fr/fragments/anchor.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/angular.md.ejs +4 -0
- package/dist/src/templates/fr/fragments/astro.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/base-rules.md.ejs +5 -0
- package/dist/src/templates/fr/fragments/django.md.ejs +12 -0
- package/dist/src/templates/fr/fragments/elixir.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/express.md.ejs +4 -0
- package/dist/src/templates/fr/fragments/fastapi.md.ejs +11 -0
- package/dist/src/templates/fr/fragments/fastify.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/flask.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/gin.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/go.md.ejs +4 -0
- package/dist/src/templates/fr/fragments/ink.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/move.md.ejs +3 -0
- package/dist/src/templates/fr/fragments/nestjs.md.ejs +5 -0
- package/dist/src/templates/fr/fragments/nextjs.md.ejs +10 -0
- package/dist/src/templates/fr/fragments/node.md.ejs +4 -0
- package/dist/src/templates/fr/fragments/nuxtjs.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/python.md.ejs +4 -0
- package/dist/src/templates/fr/fragments/react-native.md.ejs +12 -0
- package/dist/src/templates/fr/fragments/react.md.ejs +5 -0
- package/dist/src/templates/fr/fragments/remix.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/rigor/legacy.md.ejs +2 -6
- package/dist/src/templates/fr/fragments/rigor/prototype.md.ejs +2 -6
- package/dist/src/templates/fr/fragments/rigor/standard.md.ejs +5 -0
- package/dist/src/templates/fr/fragments/rigor/strict.md.ejs +1 -7
- package/dist/src/templates/fr/fragments/solidity.md.ejs +20 -0
- package/dist/src/templates/fr/fragments/spring-boot.md.ejs +13 -0
- package/dist/src/templates/fr/fragments/svelte.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/sveltekit.md.ejs +2 -0
- package/dist/src/templates/fr/fragments/vue.md.ejs +5 -0
- package/dist/tests/core/Debug.spec.js +6 -0
- package/dist/tests/core/TemplateIntegrity.spec.js +83 -0
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## Standards de Code Principaux
|
|
2
|
+
|
|
3
|
+
1. **Principes SOLID**: Adhérez à la Responsabilité Unique, Ouvert/Fermé, Substitution de Liskov, Ségrégation des Interfaces et Inversion de Dépendance.
|
|
4
|
+
2. **Clean Code**: Écrivez du code facile à lire, comprendre et maintenir. Utilisez des noms significatifs.
|
|
5
|
+
3. **DRY (Don't Repeat Yourself)**: Évitez la duplication. Extrayez la logique commune dans des fonctions ou composants réutilisables.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Règles Spécifiques Django
|
|
2
|
+
|
|
3
|
+
1. **Structure du Projet**: Organisez les apps par domaine/fonctionnalité, pas par type.
|
|
4
|
+
2. **Modèles (Models)**: Gardez les modèles légers, utilisez des managers pour les requêtes complexes.
|
|
5
|
+
3. **Vues (Views)**: Préférez les vues basées sur des classes (CBV) pour la réutilisabilité.
|
|
6
|
+
4. **Formulaires**: Utilisez les formulaires Django pour la validation, ModelForms pour le CRUD.
|
|
7
|
+
5. **Migrations**: Révisez toujours les migrations générées avant de les appliquer.
|
|
8
|
+
6. **Signaux**: Évitez les signaux pour la logique métier, utilisez des appels de service explicites.
|
|
9
|
+
7. **Templates**: Minimisez la logique dans les templates, utilisez des template tags.
|
|
10
|
+
8. **Configuration**: Utilisez django-environ ou similaire pour la configuration de l'environnement.
|
|
11
|
+
9. **Sécurité**: Activez CSRF, utilisez le middleware de sécurité de Django.
|
|
12
|
+
10. **Tests**: Utilisez pytest-django pour les tests, factory_boy pour les fixtures.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## Règles Spécifiques FastAPI
|
|
2
|
+
|
|
3
|
+
1. **Modèles Pydantic**: Utilisez Pydantic pour la validation et sérialisation requête/réponse.
|
|
4
|
+
2. **Injection de Dépendance**: Utilisez `Depends()` pour l'injection de dépendances.
|
|
5
|
+
3. **Async**: Utilisez `async def` pour les opérations liées aux E/S.
|
|
6
|
+
4. **Type Hints**: Utilisez toujours les indications de type pour les paramètres et retours.
|
|
7
|
+
5. **Routeurs**: Organisez les endpoints dans des modules APIRouter par domaine.
|
|
8
|
+
6. **Tâches de Fond**: Utilisez BackgroundTasks pour les opérations asynchrones.
|
|
9
|
+
7. **Gestion d'Erreurs**: Utilisez HTTPException pour les erreurs API avec codes statut appropriés.
|
|
10
|
+
8. **Configuration**: Utilisez pydantic-settings pour la gestion de la configuration.
|
|
11
|
+
9. **Middleware**: Utilisez des middlewares pour CORS, logging, et traçage de requêtes.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## Règles Spécifiques NestJS
|
|
2
|
+
|
|
3
|
+
1. **Injection de Dépendance**: Utilisez toujours l'ID pour les dépendances de service.
|
|
4
|
+
2. **Modules**: Organisez le code en modules par fonctionnalité (ex: `AuthModule`, `UserModule`).
|
|
5
|
+
3. **DTOs**: Utilisez des DTOs pour la validation des données avec `class-validator`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## Règles Spécifiques Next.js
|
|
2
|
+
|
|
3
|
+
1. **App Router**: Utilisez le App Router (app/) pour les nouveaux projets.
|
|
4
|
+
2. **Server Components**: Utilisez les Server Components par défaut. Ajoutez `'use client'` seulement si nécessaire.
|
|
5
|
+
3. **Récupération de Données**: Utilisez `fetch()` avec stratégies de cache, pas `getServerSideProps`.
|
|
6
|
+
4. **Routes API**: Utilisez les Route Handlers (app/api/) pour la logique côté serveur.
|
|
7
|
+
5. **Métadonnées**: Utilisez l'API Metadata pour le SEO.
|
|
8
|
+
6. **Optimisation Image**: Utilisez toujours `next/image` pour les images.
|
|
9
|
+
7. **Variables d'Environnement**: Utilisez le préfixe `NEXT_PUBLIC_` uniquement pour les variables exposées au client.
|
|
10
|
+
8. **Middleware**: Utilisez middleware.ts pour l'authentification et les redirections.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Règles Spécifiques React Native
|
|
2
|
+
|
|
3
|
+
1. **Navigation**: Utilisez React Navigation pour le routage.
|
|
4
|
+
2. **Gestion d'État**: Utilisez React Query pour l'état serveur, Zustand/Redux pour l'état client.
|
|
5
|
+
3. **Style**: Utilisez StyleSheet.create() pour la performance, envisagez NativeWind.
|
|
6
|
+
4. **Modules Natifs**: Minimisez le code natif, utilisez les modules Expo quand c'est possible.
|
|
7
|
+
5. **Performance**: Utilisez FlatList pour les longues listes, évitez les fonctions anonymes dans le render.
|
|
8
|
+
6. **Spécifique Plateforme**: Utilisez Platform.select() pour le code spécifique à la plateforme.
|
|
9
|
+
7. **Assets**: Optimisez les images pour mobile, utilisez les résolutions appropriées.
|
|
10
|
+
8. **Tests**: Utilisez React Native Testing Library, Detox pour l'E2E.
|
|
11
|
+
9. **Mises à jour OTA**: Utilisez EAS Update pour les mises à jour "Over-The-Air".
|
|
12
|
+
10. **Deep Linking**: Configurez le deep linking pour la navigation depuis des sources externes.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
## Règles Spécifiques React
|
|
2
|
+
|
|
3
|
+
1. **Composants Fonctionnels**: Utilisez des composants fonctionnels avec Hooks. Évitez les composants de classe.
|
|
4
|
+
2. **Hooks Personnalisés**: Extrayez la logique complexe dans des hooks personnalisés (ex: `useAuth`).
|
|
5
|
+
3. **Structure Composant**: Gardez les composants petits et ciblés. Un composant par fichier.
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
-
|
|
3
|
-
- **Stratégie**: Utilisez le modèle "Etranglement" (Strangler Fig) pour les réécritures majeures. Appliquez la règle du "Boy Scout" (nettoyez ce que vous touchez).
|
|
4
|
-
- **Couverture de Code**: Ne visez pas 100% sur l'ancien code. Concentrez-vous sur le *nouveau* code et le code *modifié*.
|
|
5
|
-
- **Dette Technique**: Marquez les problèmes connus avec `// TODO: [Legacy]`. Ne corrigez pas tout d'un coup.
|
|
6
|
-
- **Types**: Utilisez `any` si nécessaire, mais créez des interfaces pour les frontières du système.
|
|
1
|
+
## Mode Legacy
|
|
2
|
+
- Maintenir le code existant.
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- **Vitesse d'abord**: Focus sur la livraison de fonctionnalités et la validation d'hypothèses.
|
|
4
|
-
- **Tests**: Tests du chemin critique uniquement. TDD optionnel.
|
|
5
|
-
- **Dette Technique**: Autorisée, mais doit être marquée `// TODO: [Refactor]`.
|
|
6
|
-
- **Typage**: `any` toléré pour le prototypage rapide.
|
|
1
|
+
## Mode Prototype
|
|
2
|
+
- Vitesse > Perfection.
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
- **Test Driven Development (TDD)**: Obligatoire. Écrire le test avant le code.
|
|
4
|
-
- **Couverture**: Maintenir 100% de couverture de code.
|
|
5
|
-
- **Typage**: Pas de `any`. Configuration TypeScript stricte activée.
|
|
6
|
-
- **Revue de Code**: 2 approbations requises. Pas d'auto-merge.
|
|
7
|
-
- **Documentation**: Toutes les APIs publiques doivent avoir une JSDoc/TSDoc.
|
|
1
|
+
## Mode Strict- 100% Coverage.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Règles Spécifiques Solidity
|
|
2
|
+
|
|
3
|
+
1. **Pragma Version**: Spécifiez toujours une version ou plage Solidity spécifique.
|
|
4
|
+
2. **Visibilité**: Déclarez explicitement la visibilité des fonctions (public, external, internal, private).
|
|
5
|
+
3. **Réentrance**: Suivez le modèle CEI (Checks-Effects-Interactions) pour prévenir la réentrance.
|
|
6
|
+
4. **Optimisation Gas**: Minimisez les écritures en stockage, utilisez `memory` pour les données temporaires.
|
|
7
|
+
5. **Événements**: Émettez des événements pour tous les changements d'état (pour indexing off-chain).
|
|
8
|
+
6. **Contrôle d'Accès**: Utilisez Ownable ou AccessControl d'OpenZeppelin.
|
|
9
|
+
7. **Gestion d'Erreurs**: Utilisez des erreurs personnalisées au lieu de chaînes require pour l'efficacité gas.
|
|
10
|
+
8. **Tests**: Utilisez Foundry ou Hardhat pour des tests complets.
|
|
11
|
+
9. **Mise à niveau**: Utilisez des patterns proxy (UUPS, Transparent) si mise à niveau prévue.
|
|
12
|
+
10. **Audit**: Tous les contrats doivent être audités avant déploiement mainnet.
|
|
13
|
+
|
|
14
|
+
### Checklist Sécurité
|
|
15
|
+
- [ ] Gardes anti-réentrance implémentés
|
|
16
|
+
- [ ] Overflow/underflow entiers gérés (Solidity 0.8+)
|
|
17
|
+
- [ ] Contrôle d'accès vérifié
|
|
18
|
+
- [ ] Risques d'appels externes évalués
|
|
19
|
+
- [ ] Vecteurs d'attaque Flash loan considérés
|
|
20
|
+
- [ ] Mitigations Front-running en place
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## Règles Spécifiques Spring Boot
|
|
2
|
+
|
|
3
|
+
1. **Structure du Projet**: Organisez par fonctionnalité/domaine, pas par couche technique.
|
|
4
|
+
2. **Injection de Dépendance**: Utilisez l'injection par constructeur, évitez l'injection par champ.
|
|
5
|
+
3. **Configuration**: Utilisez application.yml avec des profils pour les environnements.
|
|
6
|
+
4. **Contrôleurs REST**: Utilisez @RestController avec méthodes HTTP et codes statut appropriés.
|
|
7
|
+
5. **Couche Service**: Gardez la logique métier dans les classes @Service.
|
|
8
|
+
6. **Repository**: Utilisez les repositories Spring Data JPA, requêtes personnalisées dans @Query.
|
|
9
|
+
7. **Validation**: Utilisez @Valid et les annotations Bean Validation.
|
|
10
|
+
8. **Gestion d'Exception**: Utilisez @ControllerAdvice pour la gestion globale des exceptions.
|
|
11
|
+
9. **Sécurité**: Utilisez Spring Security pour l'authentification et l'autorisation.
|
|
12
|
+
10. **Tests**: Utilisez @SpringBootTest pour l'intégration, @WebMvcTest pour les contrôleurs.
|
|
13
|
+
11. **Actuator**: Activez les endpoints health et metrics pour l'observabilité.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const types_1 = require("../../src/core/types");
|
|
39
|
+
describe('Template Integrity', () => {
|
|
40
|
+
const srcTemplatesDir = path.resolve(__dirname, '../../src/templates');
|
|
41
|
+
console.log('Templates Directory:', srcTemplatesDir);
|
|
42
|
+
const languages = ['en', 'fr'];
|
|
43
|
+
const checkFileExists = (lang, relativePath) => {
|
|
44
|
+
const fullPath = path.join(srcTemplatesDir, lang, relativePath);
|
|
45
|
+
if (!fs.existsSync(fullPath)) {
|
|
46
|
+
throw new Error(`Missing template file: ${lang}/${relativePath}`);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
languages.forEach((lang) => {
|
|
50
|
+
describe(`Language: ${lang}`, () => {
|
|
51
|
+
it('should have base rules fragment', () => {
|
|
52
|
+
checkFileExists(lang, 'fragments/base-rules.md.ejs');
|
|
53
|
+
});
|
|
54
|
+
it('should have all rigor mode fragments', () => {
|
|
55
|
+
Object.values(types_1.RigorMode).forEach((mode) => {
|
|
56
|
+
// RigorMode doesn't have NONE
|
|
57
|
+
checkFileExists(lang, `fragments/rigor/${mode}.md.ejs`);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it('should have all frontend framework fragments', () => {
|
|
61
|
+
Object.values(types_1.FrontendFramework).forEach((fw) => {
|
|
62
|
+
if (fw !== types_1.FrontendFramework.NONE) {
|
|
63
|
+
checkFileExists(lang, `fragments/${fw}.md.ejs`);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
it('should have all backend framework fragments', () => {
|
|
68
|
+
Object.values(types_1.BackendFramework).forEach((fw) => {
|
|
69
|
+
if (fw !== types_1.BackendFramework.NONE) {
|
|
70
|
+
checkFileExists(lang, `fragments/${fw}.md.ejs`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
it('should have all smart contract framework fragments', () => {
|
|
75
|
+
Object.values(types_1.SmartContractFramework).forEach((fw) => {
|
|
76
|
+
if (fw !== types_1.SmartContractFramework.NONE) {
|
|
77
|
+
checkFileExists(lang, `fragments/${fw}.md.ejs`);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|