refactor(esm): migrate server and tests from CommonJS to ESM

Convert all server/, test, and setup files from require()/module.exports
to import/export syntax. Activate ESM globally via "type": "module" in
package.json and load dotenv via --import dotenv/config in npm scripts.
This commit is contained in:
Ulas
2026-04-03 23:11:20 +02:00
parent 2f6127911e
commit b139eea623
24 changed files with 113 additions and 154 deletions
+5 -6
View File
@@ -4,15 +4,14 @@
* Abhängigkeiten: express, server/db.js, server/auth.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { str, oneOf, date as validateDate, num, rrule, collectErrors, MAX_TITLE, MONTH_RE } from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Budget');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { str, oneOf, date: validateDate, num, rrule, collectErrors, MAX_TITLE, MONTH_RE } = require('../middleware/validate');
// --------------------------------------------------------
// Wiederkehrende Einträge: fehlende Instanzen für einen Monat erzeugen
@@ -348,4 +347,4 @@ router.delete('/:id', (req, res) => {
}
});
module.exports = router;
export default router;
+9 -11
View File
@@ -5,20 +5,18 @@
* Abhängigkeiten: express, server/db.js, server/auth.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import * as googleCalendar from '../services/google-calendar.js';
import * as appleCalendar from '../services/apple-calendar.js';
import { requireAdmin } from '../auth.js';
import { str, color, datetime, rrule, collectErrors, MAX_TITLE, MAX_TEXT, DATE_RE, DATETIME_RE } from '../middleware/validate.js';
import { nextOccurrence } from '../services/recurrence.js';
const { createLogger } = require('../logger');
const log = createLogger('Calendar');
const express = require('express');
const router = express.Router();
const db = require('../db');
const googleCalendar = require('../services/google-calendar');
const appleCalendar = require('../services/apple-calendar');
const { requireAdmin } = require('../auth');
const { str, color, datetime, rrule, collectErrors, MAX_TITLE, MAX_TEXT, DATE_RE, DATETIME_RE } = require('../middleware/validate');
const { nextOccurrence } = require('../services/recurrence');
const VALID_SOURCES = ['local', 'google', 'apple'];
@@ -545,4 +543,4 @@ router.delete('/:id', (req, res) => {
}
});
module.exports = router;
export default router;
+5 -6
View File
@@ -4,15 +4,14 @@
* Abhängigkeiten: express, server/db.js, server/auth.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { str, oneOf, collectErrors, MAX_TITLE, MAX_TEXT, MAX_SHORT } from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Contacts');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { str, oneOf, collectErrors, MAX_TITLE, MAX_TEXT, MAX_SHORT } = require('../middleware/validate');
const VALID_CATEGORIES = ['Arzt', 'Schule/Kita', 'Behörde', 'Versicherung',
'Handwerker', 'Notfall', 'Sonstiges'];
@@ -201,4 +200,4 @@ router.get('/:id/vcard', (req, res) => {
}
});
module.exports = router;
export default router;
+4 -5
View File
@@ -4,14 +4,13 @@
* Abhängigkeiten: express, server/db.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
const { createLogger } = require('../logger');
const log = createLogger('Dashboard');
const express = require('express');
const router = express.Router();
const db = require('../db');
/**
* GET /api/v1/dashboard
@@ -129,4 +128,4 @@ router.get('/', (req, res) => {
}
});
module.exports = router;
export default router;
+5 -6
View File
@@ -4,15 +4,14 @@
* Abhängigkeiten: express, server/db.js, server/auth.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { str, oneOf, date, collectErrors, MAX_TITLE, MAX_TEXT, MAX_SHORT, DATE_RE } from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Meals');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { str, oneOf, date, collectErrors, MAX_TITLE, MAX_TEXT, MAX_SHORT, DATE_RE } = require('../middleware/validate');
const VALID_MEAL_TYPES = ['breakfast', 'lunch', 'dinner', 'snack'];
@@ -471,4 +470,4 @@ router.post('/week-to-shopping-list', (req, res) => {
}
});
module.exports = router;
export default router;
+5 -6
View File
@@ -4,15 +4,14 @@
* Abhängigkeiten: express, server/db.js, server/auth.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { str, color, collectErrors, MAX_TEXT, MAX_TITLE } from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Notes');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { str, color, collectErrors, MAX_TEXT, MAX_TITLE } = require('../middleware/validate');
/**
* GET /api/v1/notes
@@ -152,4 +151,4 @@ router.delete('/:id', (req, res) => {
}
});
module.exports = router;
export default router;
+5 -6
View File
@@ -7,15 +7,14 @@
* vor dynamischen (/:listId) registriert sein, damit Express korrekt matcht.
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { str, oneOf, collectErrors, MAX_TITLE, MAX_SHORT } from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Shopping');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { str, oneOf, collectErrors, MAX_TITLE, MAX_SHORT } = require('../middleware/validate');
// --------------------------------------------------------
// Konstanten
@@ -286,4 +285,4 @@ router.delete('/:listId/items/checked', (req, res) => {
}
});
module.exports = router;
export default router;
+7 -8
View File
@@ -4,16 +4,15 @@
* Abhängigkeiten: express, server/db.js
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
import * as db from '../db.js';
import { nextOccurrence } from '../services/recurrence.js';
import * as v from '../middleware/validate.js';
const { createLogger } = require('../logger');
const log = createLogger('Tasks');
const express = require('express');
const router = express.Router();
const db = require('../db');
const { nextOccurrence } = require('../services/recurrence');
const v = require('../middleware/validate');
const router = express.Router();
// --------------------------------------------------------
// Konstanten
@@ -321,4 +320,4 @@ router.get('/meta/options', (req, res) => {
}
});
module.exports = router;
export default router;
+3 -4
View File
@@ -4,12 +4,11 @@
* Abhängigkeiten: express, node-fetch, dotenv
*/
'use strict';
import { createLogger } from '../logger.js';
import express from 'express';
const { createLogger } = require('../logger');
const log = createLogger('Weather');
const express = require('express');
const router = express.Router();
// Cache: Daten für 30 Minuten halten
@@ -124,4 +123,4 @@ router.get('/icon/:code', async (req, res) => {
}
});
module.exports = router;
export default router;