mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
refactor(core): Use use up-to-date timezone data (#10073)
Co-authored-by: Danny Martini <danny@n8n.io>
This commit is contained in:
committed by
GitHub
parent
3bbeae47f3
commit
5e57b0d71e
@@ -1,6 +1,8 @@
|
||||
import path from 'path';
|
||||
import { writeFileSync } from 'fs';
|
||||
import { fileURLToPath } from 'url';
|
||||
import shell from 'shelljs';
|
||||
import { rawTimeZones } from '@vvo/tzdb';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
@@ -12,41 +14,50 @@ const SPEC_THEME_FILENAME = 'swaggerTheme.css';
|
||||
const publicApiEnabled = process.env.N8N_PUBLIC_API_DISABLED !== 'true';
|
||||
|
||||
copyUserManagementEmailTemplates();
|
||||
generateTimezoneData();
|
||||
|
||||
if (publicApiEnabled) {
|
||||
copySwaggerTheme();
|
||||
bundleOpenApiSpecs();
|
||||
}
|
||||
|
||||
function copyUserManagementEmailTemplates(rootDir = ROOT_DIR) {
|
||||
function copyUserManagementEmailTemplates() {
|
||||
const templates = {
|
||||
source: path.resolve(rootDir, 'src', 'UserManagement', 'email', 'templates'),
|
||||
destination: path.resolve(rootDir, 'dist', 'UserManagement', 'email'),
|
||||
source: path.resolve(ROOT_DIR, 'src', 'UserManagement', 'email', 'templates'),
|
||||
destination: path.resolve(ROOT_DIR, 'dist', 'UserManagement', 'email'),
|
||||
};
|
||||
|
||||
shell.cp('-r', templates.source, templates.destination);
|
||||
}
|
||||
|
||||
function copySwaggerTheme(rootDir = ROOT_DIR, themeFilename = SPEC_THEME_FILENAME) {
|
||||
function copySwaggerTheme() {
|
||||
const swaggerTheme = {
|
||||
source: path.resolve(rootDir, 'src', 'PublicApi', themeFilename),
|
||||
destination: path.resolve(rootDir, 'dist', 'PublicApi'),
|
||||
source: path.resolve(ROOT_DIR, 'src', 'PublicApi', SPEC_THEME_FILENAME),
|
||||
destination: path.resolve(ROOT_DIR, 'dist', 'PublicApi'),
|
||||
};
|
||||
|
||||
shell.cp('-r', swaggerTheme.source, swaggerTheme.destination);
|
||||
}
|
||||
|
||||
function bundleOpenApiSpecs(rootDir = ROOT_DIR, specFileName = SPEC_FILENAME) {
|
||||
const publicApiDir = path.resolve(rootDir, 'src', 'PublicApi');
|
||||
function bundleOpenApiSpecs() {
|
||||
const publicApiDir = path.resolve(ROOT_DIR, 'src', 'PublicApi');
|
||||
|
||||
shell
|
||||
.find(publicApiDir)
|
||||
.reduce((acc, cur) => {
|
||||
return cur.endsWith(specFileName) ? [...acc, path.relative('./src', cur)] : acc;
|
||||
return cur.endsWith(SPEC_FILENAME) ? [...acc, path.relative('./src', cur)] : acc;
|
||||
}, [])
|
||||
.forEach((specPath) => {
|
||||
const distSpecPath = path.resolve(rootDir, 'dist', specPath);
|
||||
const distSpecPath = path.resolve(ROOT_DIR, 'dist', specPath);
|
||||
const command = `pnpm openapi bundle src/${specPath} --output ${distSpecPath}`;
|
||||
shell.exec(command, { silent: true });
|
||||
});
|
||||
}
|
||||
|
||||
function generateTimezoneData() {
|
||||
const timezones = rawTimeZones.reduce((acc, tz) => {
|
||||
acc[tz.name] = tz.name.replaceAll('_', ' ');
|
||||
return acc;
|
||||
}, {});
|
||||
writeFileSync(path.resolve(ROOT_DIR, 'dist/timezones.json'), JSON.stringify({ data: timezones }));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user