@deessejs/collections 0.0.47 → 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.
@@ -8,47 +8,78 @@ const path_1 = __importDefault(require("path"));
8
8
  const chokidar_1 = __importDefault(require("chokidar"));
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const generate_1 = require("../drizzle/generate");
11
- // Chemins relatifs au projet de l'utilisateur (process.cwd())
12
11
  const PROJECT_ROOT = process.cwd();
13
12
  const CONFIG_PATH = path_1.default.join(PROJECT_ROOT, "src", "api", "index.ts");
14
13
  const COLLECTIONS_DIR = path_1.default.join(PROJECT_ROOT, "src", "collections");
15
- // Initialiser Jiti pour charger du TS à la volée
14
+ /**
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.
18
+ */
19
+ function getTsConfigAliases(root) {
20
+ const tsConfigPath = path_1.default.join(root, "tsconfig.json");
21
+ if (!fs_1.default.existsSync(tsConfigPath)) {
22
+ return {};
23
+ }
24
+ try {
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;
32
+ const paths = tsConfig?.compilerOptions?.paths;
33
+ if (!paths)
34
+ return {};
35
+ const aliases = {};
36
+ for (const [key, values] of Object.entries(paths)) {
37
+ const value = Array.isArray(values) ? values[0] : values;
38
+ // Conversion: "@/*" -> "src/*" ===> "@" -> "/abs/path/to/src"
39
+ const aliasKey = key.replace("/*", "");
40
+ const aliasValue = String(value).replace("/*", "");
41
+ aliases[aliasKey] = path_1.default.resolve(root, aliasValue);
42
+ }
43
+ return aliases;
44
+ }
45
+ catch (error) {
46
+ console.warn("[Deesse] ⚠️ Failed to load aliases from tsconfig.json", error);
47
+ return {};
48
+ }
49
+ }
50
+ // --- Initialisation ---
51
+ // 1. Récupération des alias (ex: { "@": "C:/.../src" })
52
+ const aliases = getTsConfigAliases(PROJECT_ROOT);
53
+ // 2. Initialisation de l'instance principale de Jiti avec les alias
16
54
  const jiti = (0, jiti_1.createJiti)(PROJECT_ROOT, {
17
55
  interopDefault: true,
18
- requireCache: false, // Désactiver le cache pour le hot-reload
56
+ requireCache: false,
57
+ alias: aliases, // Injection des alias pour que "@/collections/posts" fonctionne
19
58
  });
20
59
  async function runGenerator() {
21
60
  try {
22
- // Vérifier si le fichier existe avant
23
61
  if (!fs_1.default.existsSync(CONFIG_PATH)) {
24
- console.warn(`[Deesse] Config file not found at ${CONFIG_PATH}`);
25
62
  return;
26
63
  }
27
- // 1. Importer la config utilisateur via Jiti
28
- // Jiti compile le TS en JS à la volée, indépendamment de Next.js
64
+ // Importation de la config utilisateur
65
+ // Grâce à l'étape précédente, les imports avec "@/" fonctionnent maintenant
29
66
  const mod = await jiti.import(CONFIG_PATH);
30
- // 2. Récupérer l'instance db exportée
31
67
  const dbInstance = mod.db || mod.default;
32
- // Note : Vous devrez modifier votre `defineConfig` pour qu'il attache la config brute à l'objet retourné
33
- // Exemple dans src/api/index.ts : (db as any)._config = config;
34
68
  if (!dbInstance || !dbInstance._config) {
35
- // Si c'est le premier run, on ne spam pas l'erreur, l'utilisateur est peut-être en train d'écrire
36
69
  return;
37
70
  }
38
71
  const collections = dbInstance._config.collections;
39
- // 3. Générer le fichier de schéma
40
- console.log("[Deesse] ⚡ Updating Drizzle schema...");
72
+ // Génération du schéma
41
73
  (0, generate_1.generateShadowSchema)(collections);
42
74
  }
43
75
  catch (error) {
44
- console.error("[Deesse] Error in schema generation worker:", error);
76
+ // On log l'erreur proprement pour le debugging
77
+ console.error("[Deesse] ❌ Worker Error:", error);
45
78
  }
46
79
  }
47
- // --- Démarrage ---
48
- // 1. Génération initiale
80
+ // --- Exécution ---
49
81
  runGenerator();
50
- // 2. Mode Watch
51
- console.log(`[Deesse] 👀 Watching changes in: src/collections`);
82
+ console.log(`[Deesse] 👀 Watching collections...`);
52
83
  const watcher = chokidar_1.default.watch([CONFIG_PATH, COLLECTIONS_DIR], {
53
84
  ignoreInitial: true,
54
85
  ignored: /(^|[\/\\])\../,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deessejs/collections",
3
- "version": "0.0.47",
3
+ "version": "0.0.49",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",