@restura/core 0.1.0-alpha.8 → 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +133 -13
- package/dist/index.d.ts +133 -13
- package/dist/index.js +711 -546
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +700 -543
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -5
- package/dist/acorn-SW5GI5G7.mjs +0 -3016
- package/dist/acorn-SW5GI5G7.mjs.map +0 -1
- package/dist/angular-FYEH6QOL.mjs +0 -1547
- package/dist/angular-FYEH6QOL.mjs.map +0 -1
- package/dist/babel-V6GZHMYX.mjs +0 -6911
- package/dist/babel-V6GZHMYX.mjs.map +0 -1
- package/dist/chunk-TL4KRYOF.mjs +0 -58
- package/dist/chunk-TL4KRYOF.mjs.map +0 -1
- package/dist/estree-67ZCSSSI.mjs +0 -4396
- package/dist/estree-67ZCSSSI.mjs.map +0 -1
- package/dist/flow-SJW7PRXX.mjs +0 -26365
- package/dist/flow-SJW7PRXX.mjs.map +0 -1
- package/dist/glimmer-PF2X22V2.mjs +0 -2995
- package/dist/glimmer-PF2X22V2.mjs.map +0 -1
- package/dist/graphql-NOJ5HX7K.mjs +0 -1253
- package/dist/graphql-NOJ5HX7K.mjs.map +0 -1
- package/dist/html-ROPIWVPQ.mjs +0 -2780
- package/dist/html-ROPIWVPQ.mjs.map +0 -1
- package/dist/index.cjs +0 -34
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -3
- package/dist/markdown-PFYT4MSP.mjs +0 -3423
- package/dist/markdown-PFYT4MSP.mjs.map +0 -1
- package/dist/meriyah-5NLZXLMA.mjs +0 -2356
- package/dist/meriyah-5NLZXLMA.mjs.map +0 -1
- package/dist/postcss-ITO6IEN5.mjs +0 -5027
- package/dist/postcss-ITO6IEN5.mjs.map +0 -1
- package/dist/typescript-6IE7K56Q.mjs +0 -13392
- package/dist/typescript-6IE7K56Q.mjs.map +0 -1
- package/dist/yaml-DB2OVPLH.mjs +0 -4230
- package/dist/yaml-DB2OVPLH.mjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -2,23 +2,57 @@ import winston from 'winston';
|
|
|
2
2
|
import * as express from 'express';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { PoolConfig, Pool } from 'pg';
|
|
5
|
+
import { IncomingHttpHeaders } from 'http2';
|
|
5
6
|
|
|
6
7
|
declare const logger: winston.Logger;
|
|
7
8
|
|
|
9
|
+
interface RsErrorInternalData {
|
|
10
|
+
err: ErrorCode;
|
|
11
|
+
msg: string;
|
|
12
|
+
stack: string;
|
|
13
|
+
status: number;
|
|
14
|
+
message?: string;
|
|
15
|
+
}
|
|
16
|
+
declare enum HtmlStatusCodes {
|
|
17
|
+
BAD_REQUEST = 400,
|
|
18
|
+
UNAUTHORIZED = 401,
|
|
19
|
+
FORBIDDEN = 403,
|
|
20
|
+
NOT_FOUND = 404,
|
|
21
|
+
METHOD_NOT_ALLOWED = 405,
|
|
22
|
+
CONFLICT = 409,
|
|
23
|
+
VERSION_OUT_OF_DATE = 418,// Technically this is the I'm a teapot code that was a joke.
|
|
24
|
+
SERVER_ERROR = 500,
|
|
25
|
+
SERVICE_UNAVAILABLE = 503,
|
|
26
|
+
NETWORK_CONNECT_TIMEOUT = 599
|
|
27
|
+
}
|
|
28
|
+
type ErrorCode = 'UNKNOWN_ERROR' | 'NOT_FOUND' | 'EMAIL_TAKEN' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'UPDATE_FORBIDDEN' | 'CREATE_FORBIDDEN' | 'DELETE_FORBIDDEN' | 'DELETE_FAILURE' | 'BAD_REQUEST' | 'INVALID_TOKEN' | 'INCORRECT_EMAIL_OR_PASSWORD' | 'DUPLICATE_TOKEN' | 'DUPLICATE_USERNAME' | 'DUPLICATE_EMAIL' | 'DUPLICATE' | 'EMAIL_NOT_VERIFIED' | 'UPDATE_WITHOUT_ID' | 'CONNECTION_ERROR' | 'INVALID_PAYMENT' | 'DECLINED_PAYMENT' | 'INTEGRATION_ERROR' | 'CANNOT_RESERVE' | 'REFUND_FAILURE' | 'INVALID_INVOICE' | 'INVALID_COUPON' | 'SERVICE_UNAVAILABLE' | 'METHOD_UNALLOWED' | 'LOGIN_EXPIRED' | 'THIRD_PARTY_ERROR' | 'ACCESS_DENIED' | 'DATABASE_ERROR' | 'SCHEMA_ERROR';
|
|
29
|
+
declare class RsError {
|
|
30
|
+
err: ErrorCode;
|
|
31
|
+
msg: string;
|
|
32
|
+
status?: number;
|
|
33
|
+
stack: string;
|
|
34
|
+
constructor(errCode: ErrorCode, message?: string);
|
|
35
|
+
static htmlStatus(code: ErrorCode): number;
|
|
36
|
+
static isRsError(error: any): error is RsError;
|
|
37
|
+
}
|
|
38
|
+
|
|
8
39
|
declare const resturaConfigSchema: z.ZodObject<{
|
|
9
40
|
authToken: z.ZodString;
|
|
10
41
|
sendErrorStackTrace: z.ZodDefault<z.ZodBoolean>;
|
|
11
42
|
schemaFilePath: z.ZodDefault<z.ZodString>;
|
|
43
|
+
customApiFolderPath: z.ZodDefault<z.ZodString>;
|
|
12
44
|
generatedTypesPath: z.ZodDefault<z.ZodString>;
|
|
13
45
|
}, "strip", z.ZodTypeAny, {
|
|
14
46
|
authToken: string;
|
|
15
47
|
sendErrorStackTrace: boolean;
|
|
16
48
|
schemaFilePath: string;
|
|
49
|
+
customApiFolderPath: string;
|
|
17
50
|
generatedTypesPath: string;
|
|
18
51
|
}, {
|
|
19
52
|
authToken: string;
|
|
20
53
|
sendErrorStackTrace?: boolean | undefined;
|
|
21
54
|
schemaFilePath?: string | undefined;
|
|
55
|
+
customApiFolderPath?: string | undefined;
|
|
22
56
|
generatedTypesPath?: string | undefined;
|
|
23
57
|
}>;
|
|
24
58
|
type ResturaConfigSchema = z.infer<typeof resturaConfigSchema>;
|
|
@@ -1245,29 +1279,107 @@ declare const resturaZodSchema: z.ZodObject<{
|
|
|
1245
1279
|
}>;
|
|
1246
1280
|
type ResturaSchema = z.infer<typeof resturaZodSchema>;
|
|
1247
1281
|
|
|
1248
|
-
interface
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
ipAddress: string;
|
|
1252
|
-
[key: string]: string | number | undefined | null | boolean;
|
|
1282
|
+
interface SchemaChangeValue {
|
|
1283
|
+
name: string;
|
|
1284
|
+
changeType: 'NEW' | 'MODIFIED' | 'DELETED';
|
|
1253
1285
|
}
|
|
1254
|
-
interface
|
|
1255
|
-
|
|
1286
|
+
interface SchemaPreview {
|
|
1287
|
+
commands: string;
|
|
1288
|
+
endPoints: SchemaChangeValue[];
|
|
1289
|
+
globalParams: SchemaChangeValue[];
|
|
1290
|
+
roles: SchemaChangeValue[];
|
|
1291
|
+
customTypes: boolean;
|
|
1292
|
+
}
|
|
1293
|
+
interface LoginDetails {
|
|
1294
|
+
token: string;
|
|
1295
|
+
refreshToken: string;
|
|
1296
|
+
expiresOn: string;
|
|
1297
|
+
user: {
|
|
1298
|
+
firstName: string;
|
|
1299
|
+
lastName: string;
|
|
1300
|
+
email: string;
|
|
1301
|
+
};
|
|
1302
|
+
}
|
|
1303
|
+
type ValidatorString = 'boolean' | 'string' | 'number' | 'object' | 'any';
|
|
1304
|
+
interface ResponseType {
|
|
1305
|
+
isOptional?: boolean;
|
|
1306
|
+
isArray?: boolean;
|
|
1307
|
+
validator: ValidatorString | ResponseTypeMap | string[];
|
|
1308
|
+
}
|
|
1309
|
+
interface ResponseTypeMap {
|
|
1310
|
+
[property: string]: ResponseType;
|
|
1311
|
+
}
|
|
1312
|
+
type StandardOrderTypes = 'ASC' | 'DESC' | 'RAND' | 'NONE';
|
|
1313
|
+
type ConjunctionTypes = 'AND' | 'OR';
|
|
1314
|
+
type MatchTypes = 'exact' | 'fuzzy' | 'like' | 'greaterThan' | 'greaterThanEqual' | 'lessThan' | 'lessThanEqual';
|
|
1315
|
+
interface RsResponseData<T> {
|
|
1256
1316
|
data: T;
|
|
1257
1317
|
}
|
|
1318
|
+
interface RsErrorData {
|
|
1319
|
+
err: string;
|
|
1320
|
+
msg: string;
|
|
1321
|
+
stack?: string;
|
|
1322
|
+
}
|
|
1323
|
+
interface RsPagedResponseData<T> extends RsResponseData<T> {
|
|
1324
|
+
total: number;
|
|
1325
|
+
}
|
|
1326
|
+
interface PageQuery {
|
|
1327
|
+
page: number;
|
|
1328
|
+
perPage: number;
|
|
1329
|
+
sortBy: string;
|
|
1330
|
+
sortOrder: StandardOrderTypes;
|
|
1331
|
+
filter?: string;
|
|
1332
|
+
[key: string]: string | number | boolean | object | null | undefined;
|
|
1333
|
+
}
|
|
1334
|
+
interface AuthenticationUserDetails {
|
|
1335
|
+
role: string;
|
|
1336
|
+
userId?: number;
|
|
1337
|
+
[key: string]: string | number | boolean | object | null | undefined;
|
|
1338
|
+
}
|
|
1339
|
+
type ValidAuthenticationCallback = (userDetails: AuthenticationUserDetails) => void;
|
|
1340
|
+
type AuthenticateHandler = (req: RsRequest<unknown>, res: RsResponse<unknown>, onValid: ValidAuthenticationCallback) => Promise<void>;
|
|
1258
1341
|
|
|
1259
|
-
interface
|
|
1342
|
+
interface RsHeaders extends IncomingHttpHeaders {
|
|
1343
|
+
'x-auth-token'?: string;
|
|
1344
|
+
}
|
|
1345
|
+
type ApiMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
1346
|
+
type RequesterDetails<T extends object = {}> = {
|
|
1260
1347
|
role: string;
|
|
1261
|
-
|
|
1348
|
+
host: string;
|
|
1349
|
+
ipAddress: string;
|
|
1350
|
+
userId?: number;
|
|
1351
|
+
isSystemUser?: boolean;
|
|
1352
|
+
} & T;
|
|
1353
|
+
interface RsRequest<T = unknown, U extends object = Record<string, never>> extends express.Request {
|
|
1354
|
+
requesterDetails: RequesterDetails<U>;
|
|
1355
|
+
data: T;
|
|
1356
|
+
}
|
|
1357
|
+
type DynamicObject<T = unknown> = {
|
|
1358
|
+
[key: string]: T;
|
|
1359
|
+
};
|
|
1360
|
+
interface RsResponse<T = unknown> extends express.Response {
|
|
1361
|
+
sendData: (data: T, statusCode?: number) => void;
|
|
1362
|
+
sendNoWrap: (data: T, statusCode?: number) => void;
|
|
1363
|
+
sendError: (err: ErrorCode, msg: string, htmlStatusCode?: HtmlStatusCodes, stack?: string) => void;
|
|
1364
|
+
sendPaginated: (pagedData: RsPagedResponseData<T>, statusCode?: number) => void;
|
|
1365
|
+
_contentLength?: number;
|
|
1366
|
+
}
|
|
1367
|
+
type RsRouteHandler<T = unknown, U = unknown> = (req: RsRequest<T>, res: RsResponse<U>, next?: express.NextFunction) => Promise<void>;
|
|
1368
|
+
interface AsyncExpressApplication {
|
|
1369
|
+
get: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1370
|
+
post: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1371
|
+
put: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1372
|
+
patch: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1373
|
+
delete: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1262
1374
|
}
|
|
1263
|
-
type AuthenticateHandler = (req: RsRequest<unknown>, onValid: (userDetails: RoleWithOptionalUserDetails) => void, onReject: (errorMessage: string) => void) => Promise<void>;
|
|
1264
1375
|
|
|
1265
1376
|
declare class PsqlPool {
|
|
1266
1377
|
poolConfig: PoolConfig;
|
|
1267
1378
|
pool: Pool;
|
|
1268
1379
|
constructor(poolConfig: PoolConfig);
|
|
1269
|
-
queryOne(query: string, options:
|
|
1270
|
-
runQuery(query: string, options: any[]): Promise<any[]>;
|
|
1380
|
+
queryOne(query: string, options: any[], requesterDetails: RequesterDetails): Promise<any>;
|
|
1381
|
+
runQuery(query: string, options: any[], requesterDetails: RequesterDetails): Promise<any[]>;
|
|
1382
|
+
private logSqlStatement;
|
|
1271
1383
|
}
|
|
1272
1384
|
|
|
1273
1385
|
declare class ResturaEngine {
|
|
@@ -1352,6 +1464,7 @@ declare class ResturaEngine {
|
|
|
1352
1464
|
private getSchemaAndTypes;
|
|
1353
1465
|
private executeRouteLogic;
|
|
1354
1466
|
private isCustomRoute;
|
|
1467
|
+
private runCustomRouteLogic;
|
|
1355
1468
|
private generateHashForSchema;
|
|
1356
1469
|
private storeFileSystemSchema;
|
|
1357
1470
|
private resetPublicEndpoints;
|
|
@@ -1360,4 +1473,11 @@ declare class ResturaEngine {
|
|
|
1360
1473
|
}
|
|
1361
1474
|
declare const restura: ResturaEngine;
|
|
1362
1475
|
|
|
1363
|
-
|
|
1476
|
+
declare function escapeColumnName(columnName: string | undefined): string;
|
|
1477
|
+
declare function questionMarksToOrderedParams(query: string): string;
|
|
1478
|
+
declare function insertObjectQuery(table: string, obj: DynamicObject): string;
|
|
1479
|
+
declare function updateObjectQuery(table: string, obj: DynamicObject, whereStatement: string): string;
|
|
1480
|
+
declare function isValueNumber(value: unknown): value is number;
|
|
1481
|
+
declare function SQL(strings: any, ...values: any): any;
|
|
1482
|
+
|
|
1483
|
+
export { type ApiMethod, type AsyncExpressApplication, type AuthenticateHandler, type AuthenticationUserDetails, type ConjunctionTypes, type DynamicObject, type ErrorCode, HtmlStatusCodes, type LoginDetails, type MatchTypes, type PageQuery, PsqlPool, type RequesterDetails, type ResponseType, type ResponseTypeMap, RsError, type RsErrorData, type RsErrorInternalData, type RsHeaders, type RsPagedResponseData, type RsRequest, type RsResponse, type RsResponseData, type RsRouteHandler, SQL, type SchemaChangeValue, type SchemaPreview, type StandardOrderTypes, type ValidAuthenticationCallback, type ValidatorString, escapeColumnName, insertObjectQuery, isValueNumber, logger, questionMarksToOrderedParams, restura, updateObjectQuery };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,23 +2,57 @@ import winston from 'winston';
|
|
|
2
2
|
import * as express from 'express';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { PoolConfig, Pool } from 'pg';
|
|
5
|
+
import { IncomingHttpHeaders } from 'http2';
|
|
5
6
|
|
|
6
7
|
declare const logger: winston.Logger;
|
|
7
8
|
|
|
9
|
+
interface RsErrorInternalData {
|
|
10
|
+
err: ErrorCode;
|
|
11
|
+
msg: string;
|
|
12
|
+
stack: string;
|
|
13
|
+
status: number;
|
|
14
|
+
message?: string;
|
|
15
|
+
}
|
|
16
|
+
declare enum HtmlStatusCodes {
|
|
17
|
+
BAD_REQUEST = 400,
|
|
18
|
+
UNAUTHORIZED = 401,
|
|
19
|
+
FORBIDDEN = 403,
|
|
20
|
+
NOT_FOUND = 404,
|
|
21
|
+
METHOD_NOT_ALLOWED = 405,
|
|
22
|
+
CONFLICT = 409,
|
|
23
|
+
VERSION_OUT_OF_DATE = 418,// Technically this is the I'm a teapot code that was a joke.
|
|
24
|
+
SERVER_ERROR = 500,
|
|
25
|
+
SERVICE_UNAVAILABLE = 503,
|
|
26
|
+
NETWORK_CONNECT_TIMEOUT = 599
|
|
27
|
+
}
|
|
28
|
+
type ErrorCode = 'UNKNOWN_ERROR' | 'NOT_FOUND' | 'EMAIL_TAKEN' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'UPDATE_FORBIDDEN' | 'CREATE_FORBIDDEN' | 'DELETE_FORBIDDEN' | 'DELETE_FAILURE' | 'BAD_REQUEST' | 'INVALID_TOKEN' | 'INCORRECT_EMAIL_OR_PASSWORD' | 'DUPLICATE_TOKEN' | 'DUPLICATE_USERNAME' | 'DUPLICATE_EMAIL' | 'DUPLICATE' | 'EMAIL_NOT_VERIFIED' | 'UPDATE_WITHOUT_ID' | 'CONNECTION_ERROR' | 'INVALID_PAYMENT' | 'DECLINED_PAYMENT' | 'INTEGRATION_ERROR' | 'CANNOT_RESERVE' | 'REFUND_FAILURE' | 'INVALID_INVOICE' | 'INVALID_COUPON' | 'SERVICE_UNAVAILABLE' | 'METHOD_UNALLOWED' | 'LOGIN_EXPIRED' | 'THIRD_PARTY_ERROR' | 'ACCESS_DENIED' | 'DATABASE_ERROR' | 'SCHEMA_ERROR';
|
|
29
|
+
declare class RsError {
|
|
30
|
+
err: ErrorCode;
|
|
31
|
+
msg: string;
|
|
32
|
+
status?: number;
|
|
33
|
+
stack: string;
|
|
34
|
+
constructor(errCode: ErrorCode, message?: string);
|
|
35
|
+
static htmlStatus(code: ErrorCode): number;
|
|
36
|
+
static isRsError(error: any): error is RsError;
|
|
37
|
+
}
|
|
38
|
+
|
|
8
39
|
declare const resturaConfigSchema: z.ZodObject<{
|
|
9
40
|
authToken: z.ZodString;
|
|
10
41
|
sendErrorStackTrace: z.ZodDefault<z.ZodBoolean>;
|
|
11
42
|
schemaFilePath: z.ZodDefault<z.ZodString>;
|
|
43
|
+
customApiFolderPath: z.ZodDefault<z.ZodString>;
|
|
12
44
|
generatedTypesPath: z.ZodDefault<z.ZodString>;
|
|
13
45
|
}, "strip", z.ZodTypeAny, {
|
|
14
46
|
authToken: string;
|
|
15
47
|
sendErrorStackTrace: boolean;
|
|
16
48
|
schemaFilePath: string;
|
|
49
|
+
customApiFolderPath: string;
|
|
17
50
|
generatedTypesPath: string;
|
|
18
51
|
}, {
|
|
19
52
|
authToken: string;
|
|
20
53
|
sendErrorStackTrace?: boolean | undefined;
|
|
21
54
|
schemaFilePath?: string | undefined;
|
|
55
|
+
customApiFolderPath?: string | undefined;
|
|
22
56
|
generatedTypesPath?: string | undefined;
|
|
23
57
|
}>;
|
|
24
58
|
type ResturaConfigSchema = z.infer<typeof resturaConfigSchema>;
|
|
@@ -1245,29 +1279,107 @@ declare const resturaZodSchema: z.ZodObject<{
|
|
|
1245
1279
|
}>;
|
|
1246
1280
|
type ResturaSchema = z.infer<typeof resturaZodSchema>;
|
|
1247
1281
|
|
|
1248
|
-
interface
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
ipAddress: string;
|
|
1252
|
-
[key: string]: string | number | undefined | null | boolean;
|
|
1282
|
+
interface SchemaChangeValue {
|
|
1283
|
+
name: string;
|
|
1284
|
+
changeType: 'NEW' | 'MODIFIED' | 'DELETED';
|
|
1253
1285
|
}
|
|
1254
|
-
interface
|
|
1255
|
-
|
|
1286
|
+
interface SchemaPreview {
|
|
1287
|
+
commands: string;
|
|
1288
|
+
endPoints: SchemaChangeValue[];
|
|
1289
|
+
globalParams: SchemaChangeValue[];
|
|
1290
|
+
roles: SchemaChangeValue[];
|
|
1291
|
+
customTypes: boolean;
|
|
1292
|
+
}
|
|
1293
|
+
interface LoginDetails {
|
|
1294
|
+
token: string;
|
|
1295
|
+
refreshToken: string;
|
|
1296
|
+
expiresOn: string;
|
|
1297
|
+
user: {
|
|
1298
|
+
firstName: string;
|
|
1299
|
+
lastName: string;
|
|
1300
|
+
email: string;
|
|
1301
|
+
};
|
|
1302
|
+
}
|
|
1303
|
+
type ValidatorString = 'boolean' | 'string' | 'number' | 'object' | 'any';
|
|
1304
|
+
interface ResponseType {
|
|
1305
|
+
isOptional?: boolean;
|
|
1306
|
+
isArray?: boolean;
|
|
1307
|
+
validator: ValidatorString | ResponseTypeMap | string[];
|
|
1308
|
+
}
|
|
1309
|
+
interface ResponseTypeMap {
|
|
1310
|
+
[property: string]: ResponseType;
|
|
1311
|
+
}
|
|
1312
|
+
type StandardOrderTypes = 'ASC' | 'DESC' | 'RAND' | 'NONE';
|
|
1313
|
+
type ConjunctionTypes = 'AND' | 'OR';
|
|
1314
|
+
type MatchTypes = 'exact' | 'fuzzy' | 'like' | 'greaterThan' | 'greaterThanEqual' | 'lessThan' | 'lessThanEqual';
|
|
1315
|
+
interface RsResponseData<T> {
|
|
1256
1316
|
data: T;
|
|
1257
1317
|
}
|
|
1318
|
+
interface RsErrorData {
|
|
1319
|
+
err: string;
|
|
1320
|
+
msg: string;
|
|
1321
|
+
stack?: string;
|
|
1322
|
+
}
|
|
1323
|
+
interface RsPagedResponseData<T> extends RsResponseData<T> {
|
|
1324
|
+
total: number;
|
|
1325
|
+
}
|
|
1326
|
+
interface PageQuery {
|
|
1327
|
+
page: number;
|
|
1328
|
+
perPage: number;
|
|
1329
|
+
sortBy: string;
|
|
1330
|
+
sortOrder: StandardOrderTypes;
|
|
1331
|
+
filter?: string;
|
|
1332
|
+
[key: string]: string | number | boolean | object | null | undefined;
|
|
1333
|
+
}
|
|
1334
|
+
interface AuthenticationUserDetails {
|
|
1335
|
+
role: string;
|
|
1336
|
+
userId?: number;
|
|
1337
|
+
[key: string]: string | number | boolean | object | null | undefined;
|
|
1338
|
+
}
|
|
1339
|
+
type ValidAuthenticationCallback = (userDetails: AuthenticationUserDetails) => void;
|
|
1340
|
+
type AuthenticateHandler = (req: RsRequest<unknown>, res: RsResponse<unknown>, onValid: ValidAuthenticationCallback) => Promise<void>;
|
|
1258
1341
|
|
|
1259
|
-
interface
|
|
1342
|
+
interface RsHeaders extends IncomingHttpHeaders {
|
|
1343
|
+
'x-auth-token'?: string;
|
|
1344
|
+
}
|
|
1345
|
+
type ApiMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS';
|
|
1346
|
+
type RequesterDetails<T extends object = {}> = {
|
|
1260
1347
|
role: string;
|
|
1261
|
-
|
|
1348
|
+
host: string;
|
|
1349
|
+
ipAddress: string;
|
|
1350
|
+
userId?: number;
|
|
1351
|
+
isSystemUser?: boolean;
|
|
1352
|
+
} & T;
|
|
1353
|
+
interface RsRequest<T = unknown, U extends object = Record<string, never>> extends express.Request {
|
|
1354
|
+
requesterDetails: RequesterDetails<U>;
|
|
1355
|
+
data: T;
|
|
1356
|
+
}
|
|
1357
|
+
type DynamicObject<T = unknown> = {
|
|
1358
|
+
[key: string]: T;
|
|
1359
|
+
};
|
|
1360
|
+
interface RsResponse<T = unknown> extends express.Response {
|
|
1361
|
+
sendData: (data: T, statusCode?: number) => void;
|
|
1362
|
+
sendNoWrap: (data: T, statusCode?: number) => void;
|
|
1363
|
+
sendError: (err: ErrorCode, msg: string, htmlStatusCode?: HtmlStatusCodes, stack?: string) => void;
|
|
1364
|
+
sendPaginated: (pagedData: RsPagedResponseData<T>, statusCode?: number) => void;
|
|
1365
|
+
_contentLength?: number;
|
|
1366
|
+
}
|
|
1367
|
+
type RsRouteHandler<T = unknown, U = unknown> = (req: RsRequest<T>, res: RsResponse<U>, next?: express.NextFunction) => Promise<void>;
|
|
1368
|
+
interface AsyncExpressApplication {
|
|
1369
|
+
get: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1370
|
+
post: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1371
|
+
put: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1372
|
+
patch: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1373
|
+
delete: (url: string, handler: RsRouteHandler, nextFunction?: RsRouteHandler) => Promise<void> | void;
|
|
1262
1374
|
}
|
|
1263
|
-
type AuthenticateHandler = (req: RsRequest<unknown>, onValid: (userDetails: RoleWithOptionalUserDetails) => void, onReject: (errorMessage: string) => void) => Promise<void>;
|
|
1264
1375
|
|
|
1265
1376
|
declare class PsqlPool {
|
|
1266
1377
|
poolConfig: PoolConfig;
|
|
1267
1378
|
pool: Pool;
|
|
1268
1379
|
constructor(poolConfig: PoolConfig);
|
|
1269
|
-
queryOne(query: string, options:
|
|
1270
|
-
runQuery(query: string, options: any[]): Promise<any[]>;
|
|
1380
|
+
queryOne(query: string, options: any[], requesterDetails: RequesterDetails): Promise<any>;
|
|
1381
|
+
runQuery(query: string, options: any[], requesterDetails: RequesterDetails): Promise<any[]>;
|
|
1382
|
+
private logSqlStatement;
|
|
1271
1383
|
}
|
|
1272
1384
|
|
|
1273
1385
|
declare class ResturaEngine {
|
|
@@ -1352,6 +1464,7 @@ declare class ResturaEngine {
|
|
|
1352
1464
|
private getSchemaAndTypes;
|
|
1353
1465
|
private executeRouteLogic;
|
|
1354
1466
|
private isCustomRoute;
|
|
1467
|
+
private runCustomRouteLogic;
|
|
1355
1468
|
private generateHashForSchema;
|
|
1356
1469
|
private storeFileSystemSchema;
|
|
1357
1470
|
private resetPublicEndpoints;
|
|
@@ -1360,4 +1473,11 @@ declare class ResturaEngine {
|
|
|
1360
1473
|
}
|
|
1361
1474
|
declare const restura: ResturaEngine;
|
|
1362
1475
|
|
|
1363
|
-
|
|
1476
|
+
declare function escapeColumnName(columnName: string | undefined): string;
|
|
1477
|
+
declare function questionMarksToOrderedParams(query: string): string;
|
|
1478
|
+
declare function insertObjectQuery(table: string, obj: DynamicObject): string;
|
|
1479
|
+
declare function updateObjectQuery(table: string, obj: DynamicObject, whereStatement: string): string;
|
|
1480
|
+
declare function isValueNumber(value: unknown): value is number;
|
|
1481
|
+
declare function SQL(strings: any, ...values: any): any;
|
|
1482
|
+
|
|
1483
|
+
export { type ApiMethod, type AsyncExpressApplication, type AuthenticateHandler, type AuthenticationUserDetails, type ConjunctionTypes, type DynamicObject, type ErrorCode, HtmlStatusCodes, type LoginDetails, type MatchTypes, type PageQuery, PsqlPool, type RequesterDetails, type ResponseType, type ResponseTypeMap, RsError, type RsErrorData, type RsErrorInternalData, type RsHeaders, type RsPagedResponseData, type RsRequest, type RsResponse, type RsResponseData, type RsRouteHandler, SQL, type SchemaChangeValue, type SchemaPreview, type StandardOrderTypes, type ValidAuthenticationCallback, type ValidatorString, escapeColumnName, insertObjectQuery, isValueNumber, logger, questionMarksToOrderedParams, restura, updateObjectQuery };
|