@deessejs/collections 0.0.47 → 0.0.48
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/worker/index.js +46 -18
- package/package.json +1 -1
package/dist/worker/index.js
CHANGED
|
@@ -8,47 +8,75 @@ 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
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Lit le tsconfig.json pour extraire les paths (alias)
|
|
16
|
+
* et les convertir au format attendu par Jiti/Node.
|
|
17
|
+
*/
|
|
18
|
+
function getTsConfigAliases(root) {
|
|
19
|
+
const tsConfigPath = path_1.default.join(root, "tsconfig.json");
|
|
20
|
+
if (!fs_1.default.existsSync(tsConfigPath)) {
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
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);
|
|
29
|
+
const paths = tsConfig?.compilerOptions?.paths;
|
|
30
|
+
if (!paths)
|
|
31
|
+
return {};
|
|
32
|
+
const aliases = {};
|
|
33
|
+
for (const [key, values] of Object.entries(paths)) {
|
|
34
|
+
const value = Array.isArray(values) ? values[0] : values;
|
|
35
|
+
// Conversion de la syntaxe TS ("@/*": ["./src/*"]) vers syntaxe alias simple ("@": "/abs/src")
|
|
36
|
+
const aliasKey = key.replace("/*", "");
|
|
37
|
+
const aliasValue = String(value).replace("/*", "");
|
|
38
|
+
// Jiti a besoin de chemins absolus pour les alias
|
|
39
|
+
aliases[aliasKey] = path_1.default.resolve(root, aliasValue);
|
|
40
|
+
}
|
|
41
|
+
return aliases;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.warn("[Deesse] ⚠️ Failed to parse tsconfig.json for aliases", error);
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// 1. Charger les alias (ex: { "@": "C:/.../src" })
|
|
49
|
+
const aliases = getTsConfigAliases(PROJECT_ROOT);
|
|
50
|
+
// 2. Initialiser Jiti avec les alias injectés
|
|
16
51
|
const jiti = (0, jiti_1.createJiti)(PROJECT_ROOT, {
|
|
17
52
|
interopDefault: true,
|
|
18
|
-
requireCache: false,
|
|
53
|
+
requireCache: false,
|
|
54
|
+
alias: aliases, // <--- C'est ici que la magie opère
|
|
19
55
|
});
|
|
20
56
|
async function runGenerator() {
|
|
21
57
|
try {
|
|
22
|
-
// Vérifier si le fichier existe avant
|
|
23
58
|
if (!fs_1.default.existsSync(CONFIG_PATH)) {
|
|
24
|
-
console.warn(`[Deesse] Config file not found at ${CONFIG_PATH}`);
|
|
25
59
|
return;
|
|
26
60
|
}
|
|
27
|
-
//
|
|
28
|
-
// Jiti compile le TS en JS à la volée, indépendamment de Next.js
|
|
61
|
+
// Importation de la config
|
|
29
62
|
const mod = await jiti.import(CONFIG_PATH);
|
|
30
|
-
// 2. Récupérer l'instance db exportée
|
|
31
63
|
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
64
|
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
65
|
return;
|
|
37
66
|
}
|
|
38
67
|
const collections = dbInstance._config.collections;
|
|
39
|
-
//
|
|
40
|
-
console.log("[Deesse] ⚡ Updating Drizzle schema...");
|
|
68
|
+
// Génération
|
|
41
69
|
(0, generate_1.generateShadowSchema)(collections);
|
|
70
|
+
// Feedback visuel discret (optionnel)
|
|
71
|
+
// console.log("[Deesse] Schema synced");
|
|
42
72
|
}
|
|
43
73
|
catch (error) {
|
|
44
|
-
console.error("[Deesse] ❌ Error
|
|
74
|
+
console.error("[Deesse] ❌ Worker Error:", error);
|
|
45
75
|
}
|
|
46
76
|
}
|
|
47
|
-
// ---
|
|
48
|
-
// 1. Génération initiale
|
|
77
|
+
// --- Lancement ---
|
|
49
78
|
runGenerator();
|
|
50
|
-
|
|
51
|
-
console.log(`[Deesse] 👀 Watching changes in: src/collections`);
|
|
79
|
+
console.log(`[Deesse] 👀 Watching collections...`);
|
|
52
80
|
const watcher = chokidar_1.default.watch([CONFIG_PATH, COLLECTIONS_DIR], {
|
|
53
81
|
ignoreInitial: true,
|
|
54
82
|
ignored: /(^|[\/\\])\../,
|