@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.
Files changed (38) hide show
  1. package/dist/index.d.mts +133 -13
  2. package/dist/index.d.ts +133 -13
  3. package/dist/index.js +711 -546
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +700 -543
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +8 -5
  8. package/dist/acorn-SW5GI5G7.mjs +0 -3016
  9. package/dist/acorn-SW5GI5G7.mjs.map +0 -1
  10. package/dist/angular-FYEH6QOL.mjs +0 -1547
  11. package/dist/angular-FYEH6QOL.mjs.map +0 -1
  12. package/dist/babel-V6GZHMYX.mjs +0 -6911
  13. package/dist/babel-V6GZHMYX.mjs.map +0 -1
  14. package/dist/chunk-TL4KRYOF.mjs +0 -58
  15. package/dist/chunk-TL4KRYOF.mjs.map +0 -1
  16. package/dist/estree-67ZCSSSI.mjs +0 -4396
  17. package/dist/estree-67ZCSSSI.mjs.map +0 -1
  18. package/dist/flow-SJW7PRXX.mjs +0 -26365
  19. package/dist/flow-SJW7PRXX.mjs.map +0 -1
  20. package/dist/glimmer-PF2X22V2.mjs +0 -2995
  21. package/dist/glimmer-PF2X22V2.mjs.map +0 -1
  22. package/dist/graphql-NOJ5HX7K.mjs +0 -1253
  23. package/dist/graphql-NOJ5HX7K.mjs.map +0 -1
  24. package/dist/html-ROPIWVPQ.mjs +0 -2780
  25. package/dist/html-ROPIWVPQ.mjs.map +0 -1
  26. package/dist/index.cjs +0 -34
  27. package/dist/index.cjs.map +0 -1
  28. package/dist/index.d.cts +0 -3
  29. package/dist/markdown-PFYT4MSP.mjs +0 -3423
  30. package/dist/markdown-PFYT4MSP.mjs.map +0 -1
  31. package/dist/meriyah-5NLZXLMA.mjs +0 -2356
  32. package/dist/meriyah-5NLZXLMA.mjs.map +0 -1
  33. package/dist/postcss-ITO6IEN5.mjs +0 -5027
  34. package/dist/postcss-ITO6IEN5.mjs.map +0 -1
  35. package/dist/typescript-6IE7K56Q.mjs +0 -13392
  36. package/dist/typescript-6IE7K56Q.mjs.map +0 -1
  37. package/dist/yaml-DB2OVPLH.mjs +0 -4230
  38. 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 RequesterDetails {
1249
- role?: string;
1250
- host: string;
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 RsRequest<T = unknown> extends express.Request {
1255
- requesterDetails: RequesterDetails;
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 RoleWithOptionalUserDetails {
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
- [key: string]: string | number | boolean | object | null;
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: Array<any>): Promise<any>;
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
- export { PsqlPool, logger, restura };
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 RequesterDetails {
1249
- role?: string;
1250
- host: string;
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 RsRequest<T = unknown> extends express.Request {
1255
- requesterDetails: RequesterDetails;
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 RoleWithOptionalUserDetails {
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
- [key: string]: string | number | boolean | object | null;
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: Array<any>): Promise<any>;
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
- export { PsqlPool, logger, restura };
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 };