0.0.69 • Published 2 years ago

server-points v0.0.69

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

server-points

// server.ts

import {startServer} from 'server-points';
import config from './server.config';

(async _=> {
    config = await prepareConfig(config);
    await startServer(config);
})()

Installation

Using npm:

$ npm install server-points

Configuration

  • pathToRootDir string*

    Корневая директория относительно которой будут находиться все файлы проекта: index.html, css, js, картинки, шаблоны, страницы ... и т.д. - задается абсолютным путем.

  • pathToApps string

    Путь к директории с файлами приложений.

  • accessAreas array*

    Массив Областей доступа.

    • area objekt* - объект типа IAccessAreas, Области доступа

      • urls array*

        • url object*

          • value string может быть в двух вариантах:
          1. Путь относительно корневой директории pathToRootDir к файлу или директории. Например: /assets/users/images/avatar/main.img
          2. Имя приложения и метода. Например: /api_name/method_name
          • app object | boolean - может быть объектом или true. Если не указано значит урл всегда путь к файлу
            • appName
            • methodName
          • maxFileSize number - максимальный размер файла в байтах для этого урла
      • accessLevel 'free' | 'close' | number Устанавливает уровень доступа урла от 0, где 0 самый высокий уровень доступа. Например, при уровне урла 2 и при минимальном уровне 4 доступ будет у 2, 1 и 0.

      • accessLevelOnly 'free' | 'close' | number Устанавливает уровень доступа урла от, 0 где 0 самый высокий уровень доступа. Например, при уровне урла 2 и при минимальном уровне 4 доступ будет только у 2.
  • getUserByToken function*

    Функция типа IGetUserByToken. Должна возвращать объект типа IUser по токену или false если токен не корректный или не передан.

  • tokenName string*

    Имя cookie ключа для токена авторизации.

  • port number

    Номер порта если не указан берется из process.env.PORT или 3033.

  • devRoutersRgExp RegExp[]

    Массив регулярных выражений для определения урлов для devServer, при совпадении будет перенаправлен на текущий сервер

    • server-point .

APPS

Методы получают аргумент типа IClient. Все файлы .js расположенные в директории pathToApps и экспортирующие объекты будут инициализированы.

Пример файла config

// server.config.ts
import path from "path";
import DB from "/db";

enum accessLevels {
    'system' = 0,
    'superAdmin' = 1,
    'admin' = 2,
    'user' = 3,
    'free' = 'free',
    'close' = 'close',
}

const Config: IUserConfig = {
    pathToRootDir: path.join(__dirname, './projects/maysite'),
    pathToApps: path.join(__dirname, './projects/apps'),
    async getUserByToken(token: string | undefined): IUser {
        const user: IUser = await DB.cash.getLevelByToken(token);
        if (typeof user.accessLevel === 'number' && user.accessLevel >= 0) return user;
        return false;
    },
    tokenName: 'may_secret_key_token_name',
    accessAreas: [
        {
            accessLevel: accessLevels.superAdmin,
            urls: [
                {
                    value: '/mayApp/secret_method',
                    app: true
                },
                {
                    value: '/assets/images/secret_images',
                },
            ]
        },
        {
            accessLevel: accessLevels.admin,
            urls: [
                {
                    value: '/mayApp',
                    app: true
                    // все методы приложения mayApp кроме secret_method будут доступны для admin и выше
                },
                {
                    value: '/assets/images',
                    // все файлы и папки в /assets/images кроме /assets/images/secret_images будут доступны для admin и выше
                },
            ]
        },
        {
            accessLevelOnly: accessLevels.admin,
            urls: []
        },
        {
            accessLevel: accessLevels.user,
            urls: [
                {
                    value: '/may_api/set_admin',
                    app: true
                },
            ]
        },
        {
            accessLevel: accessLevels.free,
            urls: [
                {
                    value: '/dir1/dir2/blabla?value=1&value2=2',
                    app: {
                        appName: 'appWork',
                        methodName: 'resolve',
                    }
                },
                {
                    value: '/dir3/dir4/anyfile.txt',
                    app: {
                        appName: 'appWork',
                        methodName: 'resolve',
                    }
                },
                // Оба урла будут обработаны приложением appWork, методом resolve  
            ]
        },
    ],
    port: 3000,
}

export = Config

License

MIT

0.0.64

2 years ago

0.0.65

2 years ago

0.0.66

2 years ago

0.0.67

2 years ago

0.0.68

2 years ago

0.0.69

2 years ago

0.0.62

2 years ago

0.0.63

2 years ago

0.0.41

2 years ago

0.0.42

2 years ago

0.0.43

2 years ago

0.0.44

2 years ago

0.0.45

2 years ago

0.0.23

2 years ago

0.0.46

2 years ago

0.0.24

2 years ago

0.0.47

2 years ago

0.0.25

2 years ago

0.0.61

2 years ago

0.0.30

2 years ago

0.0.31

2 years ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago