summaryrefslogtreecommitdiff
path: root/src/routes.js
blob: 963cc8975dc6ec5c0cb10320e7b70e3324fae891 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const fs = require('fs')
const path = require('path')

class Routes {
    constructor() {
        this.routes = new Map()
        this.pages = new Map()
        this.allPages = new Map()

        this.#SetRoutes()
        this.#SetPages()
        this.#SetAllPages()
    }

    GetRoutes() {return this.routes}
    GetPages() {return this.pages}
    GetAllPages() {return this.allPages}

    #SetRoutes() {
        const object = {routesDir: path.resolve(`${__dirname}/../routes`)}
        this.routes = this.#ReadFiles(object)
    }
    #SetPages() {
        const object = {routesDir: path.resolve(`${__dirname}/../pages/nested`)}
        this.pages = this.#ReadFiles(object)
    }
    #SetAllPages() {
        const object = {routesDir: path.resolve(`${__dirname}/../pages`)}
        this.allPages = this.#ReadFiles(object)
    }
    #ReadFiles(object) {
        const map = new Map()
        object.files = fs.readdirSync(object.routesDir).filter(file => file.endsWith('.js'))

        object.files.forEach(file => {
            try {
                const name = file.replace('.js', '')
                const routePath = path.join(object.routesDir, file)
                const routeObject = require(routePath)
                map.set(name, routeObject)
            } catch (err) {
                console.error(err)
            }
        })

        return map
    }
}

module.exports = () => {return new Routes()}