ecotransac-shared-js 1.2.41 → 1.2.44

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/CLAUDE.md ADDED
@@ -0,0 +1,48 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Contexte
6
+
7
+ `ecotransac-shared-js` est un package npm interne partagé entre le frontend et le backend d'EcoTransac. Il contient les données statiques métier (champs de formulaires, options de sélection), les fonctions de calcul, et les utilitaires de formatage utilisés dans les deux projets.
8
+
9
+ ## Commandes
10
+
11
+ ```bash
12
+ npm run build # Compile avec tsup (génère dist/)
13
+ npm run lint # Vérification TypeScript (tsc)
14
+ npm run generate # GraphQL codegen → src/types/graphql-generated.ts
15
+ ```
16
+
17
+ La publication sur npm est automatique via GitHub Actions à chaque push sur `main` (build + lint + npm publish). **Ne jamais publier manuellement.**
18
+
19
+ ## Architecture
20
+
21
+ Tout est réexporté depuis `src/index.ts` — c'est le seul point d'entrée public du package.
22
+
23
+ ### `src/functions/`
24
+
25
+ - `agency-fees.ts` — calcul des honoraires agence selon la tranche de prix (`getFeesPercentage`, `getDisplayedPrice`, `getNetPrice`, `getIsLowPrice`). Les seuils diffèrent selon `isForProfessionalUse`.
26
+ - `form-values.ts` — `getValue()` formate une valeur brute en chaîne affichable (date, booléen, téléphone, adresse, devise, select).
27
+ - `render-logic.ts` — combinateurs de conditions pour l'affichage conditionnel des champs : `only`, `not`, `or`, `and`. Ces fonctions retournent des `Condition` (prédicats sur un `State`).
28
+ - `format.ts` — fonctions de formatage bas niveau (prix, date, téléphone, adresse).
29
+
30
+ ### `src/types/`
31
+
32
+ - `field.ts` — types TypeScript centraux : `Field`, `FieldType`, `Condition`, `State`, `SelectOption`. Toute la logique de formulaire des deux projets s'appuie sur ces types.
33
+ - `graphql-generated.ts` — généré automatiquement, ne jamais modifier manuellement.
34
+
35
+ ### `src/static/`
36
+
37
+ Données statiques par entité métier (`property`, `renovation`, `mandate`, `contact`) :
38
+ - `fields.ts` — tableau de `Field[]` décrivant les champs de formulaire (nom, type, label, condition d'affichage, options)
39
+ - `select-options.ts` — options de sélection pour les listes déroulantes
40
+ - `state.ts` — état initial pour les conditions d'affichage conditionnel
41
+
42
+ Autres fichiers statiques : `countries.ts`, `legal-status.ts`, `tiers.ts`, `company-details.ts`.
43
+
44
+ ## Points non-évidents
45
+
46
+ - **Alias `@/`** → `src/` (défini dans tsconfig.json et tsup.config).
47
+ - Après toute modification, mettre à jour le frontend et le backend avec `npm run package-up` dans chacun.
48
+ - La version est auto-incrémentée par le hook pre-commit Husky.
package/dist/index.js CHANGED
@@ -1521,20 +1521,21 @@ var mandateFormFields = [
1521
1521
  tooltip: "Si vous connaissez le prix FAI que vous souhaitez obtenir, divisez ce prix par 1,05 (pour 5%) pour obtenir le prix net vendeur. Exemple : 100 000\u20AC FAI = 95 238\u20AC net vendeur (100 000 / 1,05)"
1522
1522
  }
1523
1523
  },
1524
- {
1525
- name: "feePaidBy",
1526
- fieldType: "select",
1527
- label: "Honoraires \xE0 la charge de",
1528
- condition: or(
1529
- not("isForProfessionalUse"),
1530
- and(only("isForProfessionalUse"), only("isCommercialWallsSale"))
1531
- ),
1532
- requiredFor: ["MANDATE_CREATION"],
1533
- props: {
1534
- options: MANDATE_EXCLUSIVITY,
1535
- tooltip: "Si les honoraires sont \xE0 la charge de l'acqu\xE9reur, le prix FAI correspond au prix net vendeur. Si les honoraires sont \xE0 la charge du vendeur, le prix FAI correspond au prix net vendeur + les honoraires agence."
1536
- }
1537
- },
1524
+ // {
1525
+ // name: "feePaidBy",
1526
+ // fieldType: "select",
1527
+ // label: "Honoraires à la charge de",
1528
+ // condition: or(
1529
+ // not("isForProfessionalUse"),
1530
+ // and(only("isForProfessionalUse"), only("isCommercialWallsSale")),
1531
+ // ),
1532
+ // requiredFor: ["MANDATE_CREATION"],
1533
+ // props: {
1534
+ // options: MANDATE_EXCLUSIVITY,
1535
+ // tooltip:
1536
+ // "Si les honoraires sont à la charge de l'acquéreur, le prix FAI correspond au prix net vendeur. Si les honoraires sont à la charge du vendeur, le prix FAI correspond au prix net vendeur + les honoraires agence.",
1537
+ // },
1538
+ // },
1538
1539
  {
1539
1540
  name: "agencyFeePercentage",
1540
1541
  fieldType: "integer",
@@ -1923,8 +1924,8 @@ var COMPANY_INFO = {
1923
1924
 
1924
1925
  // src/static/tiers.ts
1925
1926
  var TIER_INFOS = [
1926
- { tier: "TIER_1", min: 0, max: 7e4, rate: 0.7 },
1927
- { tier: "TIER_2", min: 70001, max: 12e4, rate: 0.8 },
1927
+ { tier: "TIER_1", min: 0, max: 8e4, rate: 0.7 },
1928
+ { tier: "TIER_2", min: 80001, max: 12e4, rate: 0.8 },
1928
1929
  { tier: "TIER_3", min: 120001, max: 15e4, rate: 0.9 },
1929
1930
  { tier: "TIER_4", min: 150001, max: Infinity, rate: 1 }
1930
1931
  ];
package/dist/index.mjs CHANGED
@@ -1426,20 +1426,21 @@ var mandateFormFields = [
1426
1426
  tooltip: "Si vous connaissez le prix FAI que vous souhaitez obtenir, divisez ce prix par 1,05 (pour 5%) pour obtenir le prix net vendeur. Exemple : 100 000\u20AC FAI = 95 238\u20AC net vendeur (100 000 / 1,05)"
1427
1427
  }
1428
1428
  },
1429
- {
1430
- name: "feePaidBy",
1431
- fieldType: "select",
1432
- label: "Honoraires \xE0 la charge de",
1433
- condition: or(
1434
- not("isForProfessionalUse"),
1435
- and(only("isForProfessionalUse"), only("isCommercialWallsSale"))
1436
- ),
1437
- requiredFor: ["MANDATE_CREATION"],
1438
- props: {
1439
- options: MANDATE_EXCLUSIVITY,
1440
- tooltip: "Si les honoraires sont \xE0 la charge de l'acqu\xE9reur, le prix FAI correspond au prix net vendeur. Si les honoraires sont \xE0 la charge du vendeur, le prix FAI correspond au prix net vendeur + les honoraires agence."
1441
- }
1442
- },
1429
+ // {
1430
+ // name: "feePaidBy",
1431
+ // fieldType: "select",
1432
+ // label: "Honoraires à la charge de",
1433
+ // condition: or(
1434
+ // not("isForProfessionalUse"),
1435
+ // and(only("isForProfessionalUse"), only("isCommercialWallsSale")),
1436
+ // ),
1437
+ // requiredFor: ["MANDATE_CREATION"],
1438
+ // props: {
1439
+ // options: MANDATE_EXCLUSIVITY,
1440
+ // tooltip:
1441
+ // "Si les honoraires sont à la charge de l'acquéreur, le prix FAI correspond au prix net vendeur. Si les honoraires sont à la charge du vendeur, le prix FAI correspond au prix net vendeur + les honoraires agence.",
1442
+ // },
1443
+ // },
1443
1444
  {
1444
1445
  name: "agencyFeePercentage",
1445
1446
  fieldType: "integer",
@@ -1828,8 +1829,8 @@ var COMPANY_INFO = {
1828
1829
 
1829
1830
  // src/static/tiers.ts
1830
1831
  var TIER_INFOS = [
1831
- { tier: "TIER_1", min: 0, max: 7e4, rate: 0.7 },
1832
- { tier: "TIER_2", min: 70001, max: 12e4, rate: 0.8 },
1832
+ { tier: "TIER_1", min: 0, max: 8e4, rate: 0.7 },
1833
+ { tier: "TIER_2", min: 80001, max: 12e4, rate: 0.8 },
1833
1834
  { tier: "TIER_3", min: 120001, max: 15e4, rate: 0.9 },
1834
1835
  { tier: "TIER_4", min: 150001, max: Infinity, rate: 1 }
1835
1836
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecotransac-shared-js",
3
- "version": "1.2.41",
3
+ "version": "1.2.44",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "modules": "dist/index.mjs",