/
githubmirror
/
30-seconds-of-code
Обзор
Документация
Войти
/
githubmirror
/
30-seconds-of-code
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/lib/loader.js
77 строк
2 KB
Angelos Chalaris
Remove PerformanceTracking from loader
04 апр 2025, 19:39
Не верифицирован
04 апр 2025, 19:39
d6654f9
Код
Авторство
О чём код?
import fs from 'fs'; import models from '#src/models/models.js'; import serializers from '#src/serializers/serializers.js'; import pages from '#src/adapters/page/page.js'; import Model from '#src/core/model.js'; import SearchIndex from '#src/lib/searchIndex.js'; import Page from '#src/adapters/page.js'; import AstroContent from '#src/lib/astroContent.js'; import Feed from '#src/lib/feed.js'; import Sitemap from '#src/lib/sitemap.js'; import Redirects from '#src/lib/redirects.js'; import PreparedQueries from '#src/lib/preparedQueries.js'; import TimestampDump from '#src/lib/timestampDump.js'; import DocumentIndex from '#src/lib/search/documentIndex.js'; import ContentComponents from '#src/lib/contentComponents.js'; import factories from '#spec/factories/factories.js'; import settings from '#src/config/settings.js'; export default class Loader { static loadModules() { return { settings, models, serializers, pages, Model, SearchIndex, Page, AstroContent, Feed, Sitemap, Redirects, PreparedQueries, TimestampDump, DocumentIndex, ContentComponents, }; } static importData() { if (!this.importedData) { const data = fs.readFileSync(settings.paths.contentJSON, 'utf8'); this.importedData = JSON.parse(data, (key, value) => { if (!value?.model) return value; return new models[value.model](value); }); } return this.importedData; } static buildFactories() { return Object.entries(factories).reduce( (acc, [factoryName, { model, base, traits }]) => { acc[factoryName] = { create: (...desiredTraits) => { const data = { ...base }; desiredTraits.forEach(trait => { if (typeof trait === 'string') { Object.assign(data, traits[trait]); } else { Object.assign(data, trait); } }); return new models[model](data); }, }; return acc; }, {} ); } }