UNPKG

stackpress

Version:

Incept is a content management framework.

55 lines (54 loc) 2.85 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = plugin; const Language_js_1 = __importDefault(require("./Language.js")); function plugin(ctx) { if (!ctx.config.get('language')) return; ctx.on('config', (_req, _res, ctx) => __awaiter(this, void 0, void 0, function* () { ctx.register('language', Language_js_1.default.configure(ctx.config.path('language.key', 'locale'), ctx.config.path('language.languages', {}))); })); ctx.on('listen', (_req, _res, ctx) => __awaiter(this, void 0, void 0, function* () { const language = ctx.plugin('language'); ctx.on('request', (req, res, ctx) => __awaiter(this, void 0, void 0, function* () { const key = ctx.config.path('language.key', 'locale'); const defaultLocale = ctx.config.path('language.locale', 'en_US'); let locale = req.data(key); if (language.locales.includes(locale)) { language.load(req, defaultLocale).update(locale, res); } const pathArray = req.url.pathname.split('/'); locale = pathArray[1]; if (language.locales.includes(locale)) { language.load(req, defaultLocale).update(locale, res); pathArray.splice(1, 1); const request = ctx.request({ resource: req.resource, body: req.body || undefined, headers: Object.fromEntries(req.headers.entries()), mimetype: req.mimetype, data: req.data(), method: req.method, query: Object.fromEntries(req.query.entries()), post: Object.fromEntries(req.post.entries()), session: req.session.data, url: new URL(req.url.origin + pathArray.join('/')) }); yield ctx.resolve(req.method, pathArray.join('/'), request, res); } })); })); } ;