server-points v0.0.69
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
может быть в двух вариантах:
- Путь относительно корневой директории pathToRootDir к файлу или директории. Например: /assets/users/images/avatar/main.img
- Имя приложения и метода. Например: /api_name/method_name
- app
object | boolean
- может быть объектом или true. Если не указано значит урл всегда путь к файлу- appName
- methodName
- maxFileSize
number
- максимальный размер файла в байтах для этого урла
- value
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
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
12 months ago
8 months ago
12 months ago
8 months ago
11 months ago
8 months ago
9 months ago
9 months ago
11 months ago
10 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago