@deessejs/collections 0.0.48 → 0.0.49

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.
@@ -12,8 +12,9 @@ const PROJECT_ROOT = process.cwd();
12
12
  const CONFIG_PATH = path_1.default.join(PROJECT_ROOT, "src", "api", "index.ts");
13
13
  const COLLECTIONS_DIR = path_1.default.join(PROJECT_ROOT, "src", "collections");
14
14
  /**
15
- * Lit le tsconfig.json pour extraire les paths (alias)
16
- * et les convertir au format attendu par Jiti/Node.
15
+ * Utilise Jiti pour lire le tsconfig.json.
16
+ * Jiti gère nativement le JSONC (commentaires, trailing commas)
17
+ * que JSON.parse ne supporte pas.
17
18
  */
18
19
  function getTsConfigAliases(root) {
19
20
  const tsConfigPath = path_1.default.join(root, "tsconfig.json");
@@ -21,60 +22,62 @@ function getTsConfigAliases(root) {
21
22
  return {};
22
23
  }
23
24
  try {
24
- // Lecture brute + nettoyage des commentaires (JSON standard ne supporte pas les commentaires)
25
- const content = fs_1.default.readFileSync(tsConfigPath, "utf-8");
26
- // Regex simple pour retirer les commentaires // et /* */
27
- const jsonContent = content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
28
- const tsConfig = JSON.parse(jsonContent);
25
+ // 1. On crée une instance temporaire de Jiti juste pour lire la config
26
+ const tempJiti = (0, jiti_1.createJiti)(root, { requireCache: false });
27
+ // 2. On charge le fichier. Jiti va le parser correctement.
28
+ // Note: selon la version de jiti, pour du JSON, il retourne l'objet directement
29
+ // ou un module avec export default.
30
+ const loaded = tempJiti(tsConfigPath);
31
+ const tsConfig = loaded.default || loaded;
29
32
  const paths = tsConfig?.compilerOptions?.paths;
30
33
  if (!paths)
31
34
  return {};
32
35
  const aliases = {};
33
36
  for (const [key, values] of Object.entries(paths)) {
34
37
  const value = Array.isArray(values) ? values[0] : values;
35
- // Conversion de la syntaxe TS ("@/*": ["./src/*"]) vers syntaxe alias simple ("@": "/abs/src")
38
+ // Conversion: "@/*" -> "src/*" ===> "@" -> "/abs/path/to/src"
36
39
  const aliasKey = key.replace("/*", "");
37
40
  const aliasValue = String(value).replace("/*", "");
38
- // Jiti a besoin de chemins absolus pour les alias
39
41
  aliases[aliasKey] = path_1.default.resolve(root, aliasValue);
40
42
  }
41
43
  return aliases;
42
44
  }
43
45
  catch (error) {
44
- console.warn("[Deesse] ⚠️ Failed to parse tsconfig.json for aliases", error);
46
+ console.warn("[Deesse] ⚠️ Failed to load aliases from tsconfig.json", error);
45
47
  return {};
46
48
  }
47
49
  }
48
- // 1. Charger les alias (ex: { "@": "C:/.../src" })
50
+ // --- Initialisation ---
51
+ // 1. Récupération des alias (ex: { "@": "C:/.../src" })
49
52
  const aliases = getTsConfigAliases(PROJECT_ROOT);
50
- // 2. Initialiser Jiti avec les alias injectés
53
+ // 2. Initialisation de l'instance principale de Jiti avec les alias
51
54
  const jiti = (0, jiti_1.createJiti)(PROJECT_ROOT, {
52
55
  interopDefault: true,
53
56
  requireCache: false,
54
- alias: aliases, // <--- C'est ici que la magie opère
57
+ alias: aliases, // Injection des alias pour que "@/collections/posts" fonctionne
55
58
  });
56
59
  async function runGenerator() {
57
60
  try {
58
61
  if (!fs_1.default.existsSync(CONFIG_PATH)) {
59
62
  return;
60
63
  }
61
- // Importation de la config
64
+ // Importation de la config utilisateur
65
+ // Grâce à l'étape précédente, les imports avec "@/" fonctionnent maintenant
62
66
  const mod = await jiti.import(CONFIG_PATH);
63
67
  const dbInstance = mod.db || mod.default;
64
68
  if (!dbInstance || !dbInstance._config) {
65
69
  return;
66
70
  }
67
71
  const collections = dbInstance._config.collections;
68
- // Génération
72
+ // Génération du schéma
69
73
  (0, generate_1.generateShadowSchema)(collections);
70
- // Feedback visuel discret (optionnel)
71
- // console.log("[Deesse] Schema synced");
72
74
  }
73
75
  catch (error) {
76
+ // On log l'erreur proprement pour le debugging
74
77
  console.error("[Deesse] ❌ Worker Error:", error);
75
78
  }
76
79
  }
77
- // --- Lancement ---
80
+ // --- Exécution ---
78
81
  runGenerator();
79
82
  console.log(`[Deesse] 👀 Watching collections...`);
80
83
  const watcher = chokidar_1.default.watch([CONFIG_PATH, COLLECTIONS_DIR], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deessejs/collections",
3
- "version": "0.0.48",
3
+ "version": "0.0.49",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",