@niledatabase/server 4.0.1 → 4.0.2-alpha.11
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/express.d.mts +9 -1
- package/dist/express.d.ts +9 -1
- package/dist/express.js +22 -12
- package/dist/express.js.map +1 -1
- package/dist/express.mjs +22 -13
- package/dist/express.mjs.map +1 -1
- package/dist/index.d.mts +21 -7
- package/dist/index.d.ts +21 -7
- package/dist/index.js +174 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +174 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/express.d.mts
CHANGED
|
@@ -2,6 +2,14 @@ import { Server } from './index.mjs';
|
|
|
2
2
|
import 'pg';
|
|
3
3
|
|
|
4
4
|
declare function cleaner(val: string): string;
|
|
5
|
+
declare function expressPaths(nile: Server): {
|
|
6
|
+
paths: {
|
|
7
|
+
get: string[];
|
|
8
|
+
post: string[];
|
|
9
|
+
put: string[];
|
|
10
|
+
delete: string[];
|
|
11
|
+
};
|
|
12
|
+
};
|
|
5
13
|
type HandlerConfig = {
|
|
6
14
|
muteResponse?: boolean;
|
|
7
15
|
init?: RequestInit;
|
|
@@ -21,4 +29,4 @@ declare function NileExpressHandler(nile: Server, config?: HandlerConfig): Promi
|
|
|
21
29
|
};
|
|
22
30
|
}>;
|
|
23
31
|
|
|
24
|
-
export { NileExpressHandler, cleaner };
|
|
32
|
+
export { NileExpressHandler, cleaner, expressPaths };
|
package/dist/express.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ import { Server } from './index.js';
|
|
|
2
2
|
import 'pg';
|
|
3
3
|
|
|
4
4
|
declare function cleaner(val: string): string;
|
|
5
|
+
declare function expressPaths(nile: Server): {
|
|
6
|
+
paths: {
|
|
7
|
+
get: string[];
|
|
8
|
+
post: string[];
|
|
9
|
+
put: string[];
|
|
10
|
+
delete: string[];
|
|
11
|
+
};
|
|
12
|
+
};
|
|
5
13
|
type HandlerConfig = {
|
|
6
14
|
muteResponse?: boolean;
|
|
7
15
|
init?: RequestInit;
|
|
@@ -21,4 +29,4 @@ declare function NileExpressHandler(nile: Server, config?: HandlerConfig): Promi
|
|
|
21
29
|
};
|
|
22
30
|
}>;
|
|
23
31
|
|
|
24
|
-
export { NileExpressHandler, cleaner };
|
|
32
|
+
export { NileExpressHandler, cleaner, expressPaths };
|
package/dist/express.js
CHANGED
|
@@ -2,39 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
// src/utils/Logger.ts
|
|
4
4
|
var red = "\x1B[31m";
|
|
5
|
-
var yellow = "\x1B[
|
|
5
|
+
var yellow = "\x1B[38;2;255;255;0m";
|
|
6
|
+
var purple = "\x1B[38;2;200;160;255m";
|
|
7
|
+
var orange = "\x1B[38;2;255;165;0m";
|
|
6
8
|
var reset = "\x1B[0m";
|
|
7
9
|
var baseLogger = (config, ...params) => ({
|
|
8
10
|
info(message, meta) {
|
|
9
11
|
if (config?.debug) {
|
|
10
12
|
console.info(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
${
|
|
13
|
+
`${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(
|
|
14
|
+
""
|
|
15
|
+
)}${reset} ${message}`,
|
|
16
|
+
meta ? `${JSON.stringify(meta)}` : ""
|
|
14
17
|
);
|
|
15
18
|
}
|
|
16
19
|
},
|
|
17
20
|
debug(message, meta) {
|
|
18
21
|
if (config?.debug) {
|
|
19
22
|
console.debug(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
${
|
|
23
|
+
`${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(
|
|
24
|
+
""
|
|
25
|
+
)}${reset} ${message}`,
|
|
26
|
+
meta ? `${JSON.stringify(meta)}` : ""
|
|
23
27
|
);
|
|
24
28
|
}
|
|
25
29
|
},
|
|
26
30
|
warn(message, meta) {
|
|
27
31
|
if (config?.debug) {
|
|
28
32
|
console.warn(
|
|
29
|
-
`${
|
|
30
|
-
|
|
33
|
+
`${orange}[niledb]${reset}${yellow}[WARN]${reset}${params.join(
|
|
34
|
+
""
|
|
35
|
+
)}${reset} ${message}`,
|
|
36
|
+
meta ? JSON.stringify(meta) : ""
|
|
31
37
|
);
|
|
32
38
|
}
|
|
33
39
|
},
|
|
34
40
|
error(message, meta) {
|
|
35
41
|
console.error(
|
|
36
|
-
`${
|
|
37
|
-
|
|
42
|
+
`${orange}[niledb]${reset}${red}[ERROR]${reset}${params.join(
|
|
43
|
+
""
|
|
44
|
+
)}${red} ${message}`,
|
|
45
|
+
meta ? meta : "",
|
|
46
|
+
`${reset}`
|
|
38
47
|
);
|
|
39
48
|
}
|
|
40
49
|
});
|
|
@@ -49,7 +58,7 @@ function Logger(config, ...params) {
|
|
|
49
58
|
|
|
50
59
|
// src/lib/express.ts
|
|
51
60
|
function cleaner(val) {
|
|
52
|
-
return val.replaceAll(/\{(
|
|
61
|
+
return val.replaceAll(/\{([^}]+)\}/g, ":$1");
|
|
53
62
|
}
|
|
54
63
|
function expressPaths(nile) {
|
|
55
64
|
const paths = {
|
|
@@ -153,5 +162,6 @@ async function NileExpressHandler(nile, config) {
|
|
|
153
162
|
|
|
154
163
|
exports.NileExpressHandler = NileExpressHandler;
|
|
155
164
|
exports.cleaner = cleaner;
|
|
165
|
+
exports.expressPaths = expressPaths;
|
|
156
166
|
//# sourceMappingURL=express.js.map
|
|
157
167
|
//# sourceMappingURL=express.js.map
|
package/dist/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/Logger.ts","../src/lib/express.ts"],"names":[],"mappings":"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","file":"express.js","sourcesContent":["/* eslint-disable no-console */\nimport { Routes } from '../api/types';\nimport urlMatches from '../api/utils/routes/urlMatches';\nimport { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[33m';\nconst reset = '\\x1b[0m';\n\nconst baseLogger = (config: void | ServerConfig, ...params: unknown[]) => ({\n info(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.info(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n debug(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.debug(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n warn(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.warn(\n `${yellow}[niledb][WARN]${reset}${params.join('')} ${message}`,\n JSON.stringify(meta, null, 2)\n );\n }\n },\n error(message: string | unknown, meta?: Record<string, unknown>) {\n console.error(\n `${red}[niledb][ERROR]${reset}${params.join('')} ${message}`,\n meta\n );\n },\n});\n\nexport default function Logger(\n config?: Config | ServerConfig,\n ...params: unknown[]\n) {\n const base = baseLogger(config, params);\n const info = config?.logger?.info ?? base.info;\n const debug = config?.logger?.debug ?? base.debug;\n const warn = config?.logger?.warn ?? base.warn;\n const error = config?.logger?.error ?? base.error;\n return { info, warn, error, debug };\n}\n\nexport function matchesLog(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.LOG);\n}\n","import { Server } from '../Server';\nimport Logger from '../utils/Logger';\n\nexport function cleaner(val: string) {\n return val.replaceAll(/\\{(.*)\\}/g, ':$1');\n}\n\nfunction expressPaths(nile: Server) {\n const paths = {\n get: nile.api.paths.get.map(cleaner),\n post: nile.api.paths.post.map(cleaner),\n put: nile.api.paths.put.map(cleaner),\n delete: nile.api.paths.delete.map(cleaner),\n };\n return {\n paths,\n };\n}\n\ntype HandlerConfig = { muteResponse?: boolean; init?: RequestInit };\nexport async function NileExpressHandler(nile: Server, config?: HandlerConfig) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n res?: any\n ): Promise<\n | {\n body: string;\n status: number;\n headers: Record<string, string | string[]>;\n response: Response;\n }\n | null\n | undefined\n > {\n const headers = new Headers();\n if (!req || typeof req !== 'object') {\n return null;\n }\n if (!('url' in req) || typeof req?.url !== 'string') {\n error('A url is necessary for the nile express handler');\n return null;\n }\n const method =\n 'method' in req && typeof req.method === 'string' ? req.method : 'GET';\n if (\n 'headers' in req &&\n typeof req.headers === 'object' &&\n req.headers &&\n 'cookie' in req.headers &&\n typeof req.headers.cookie === 'string'\n ) {\n headers.set('cookie', req.headers.cookie);\n }\n const _init: RequestInit = { method, ...config?.init };\n\n if ('body' in req) {\n if (method === 'POST' || method === 'PUT') {\n headers.set('content-type', 'application/json');\n _init.body = JSON.stringify(req.body);\n }\n }\n\n _init.headers = headers;\n\n const reqUrl = req.protocol + '://' + req.get('host') + req.originalUrl;\n // be sure its a valid url\n try {\n new URL(reqUrl);\n } catch (e) {\n error('Invalid URL', {\n url: reqUrl,\n error: e,\n });\n return null;\n }\n const proxyRequest = new Request(reqUrl, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let response;\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response = await (nile.api.handlers as any)[method](proxyRequest);\n } catch (e) {\n error(e);\n }\n\n let body;\n\n if (response instanceof Response) {\n try {\n const tryJson = await response.clone();\n body = await tryJson.json();\n } catch (e) {\n body = await response.text();\n }\n const newHeaders: Record<string, string | string[]> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n if (newHeaders[key]) {\n const prev = newHeaders[key];\n if (Array.isArray(prev)) {\n newHeaders[key] = [...prev, value];\n } else {\n newHeaders[key] = [prev, value];\n }\n } else {\n newHeaders[key] = value;\n }\n }\n });\n\n if (config?.muteResponse !== true) {\n if (res) {\n res.status(response.status).set(newHeaders);\n if (typeof body === 'string') {\n res.send(body);\n } else {\n res.json(body ?? {});\n }\n }\n return;\n }\n\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n } else {\n error('Bad response', { response });\n return;\n }\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/Logger.ts","../src/lib/express.ts"],"names":[],"mappings":"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","file":"express.js","sourcesContent":["/* eslint-disable no-console */\nimport { Routes } from '../api/types';\nimport urlMatches from '../api/utils/routes/urlMatches';\nimport { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[38;2;255;255;0m';\nconst purple = '\\x1b[38;2;200;160;255m';\nconst orange = '\\x1b[38;2;255;165;0m';\nconst reset = '\\x1b[0m';\n\nconst baseLogger = (config: void | ServerConfig, ...params: unknown[]) => ({\n info(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.info(\n `${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? `${JSON.stringify(meta)}` : ''\n );\n }\n },\n debug(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.debug(\n `${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? `${JSON.stringify(meta)}` : ''\n );\n }\n },\n warn(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.warn(\n `${orange}[niledb]${reset}${yellow}[WARN]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? JSON.stringify(meta) : ''\n );\n }\n },\n error(message: string | unknown, meta?: Record<string, unknown>) {\n console.error(\n `${orange}[niledb]${reset}${red}[ERROR]${reset}${params.join(\n ''\n )}${red} ${message}`,\n meta ? meta : '',\n `${reset}`\n );\n },\n});\n\nexport default function Logger(\n config?: Config | ServerConfig,\n ...params: unknown[]\n) {\n const base = baseLogger(config, params);\n const info = config?.logger?.info ?? base.info;\n const debug = config?.logger?.debug ?? base.debug;\n const warn = config?.logger?.warn ?? base.warn;\n const error = config?.logger?.error ?? base.error;\n return { info, warn, error, debug };\n}\n\nexport function matchesLog(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.LOG);\n}\n","import { Server } from '../Server';\nimport Logger from '../utils/Logger';\n\nexport function cleaner(val: string) {\n return val.replaceAll(/\\{([^}]+)\\}/g, ':$1');\n}\n\nexport function expressPaths(nile: Server) {\n const paths = {\n get: nile.api.paths.get.map(cleaner),\n post: nile.api.paths.post.map(cleaner),\n put: nile.api.paths.put.map(cleaner),\n delete: nile.api.paths.delete.map(cleaner),\n };\n return {\n paths,\n };\n}\n\ntype HandlerConfig = { muteResponse?: boolean; init?: RequestInit };\nexport async function NileExpressHandler(nile: Server, config?: HandlerConfig) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n res?: any\n ): Promise<\n | {\n body: string;\n status: number;\n headers: Record<string, string | string[]>;\n response: Response;\n }\n | null\n | undefined\n > {\n const headers = new Headers();\n if (!req || typeof req !== 'object') {\n return null;\n }\n if (!('url' in req) || typeof req?.url !== 'string') {\n error('A url is necessary for the nile express handler');\n return null;\n }\n const method =\n 'method' in req && typeof req.method === 'string' ? req.method : 'GET';\n if (\n 'headers' in req &&\n typeof req.headers === 'object' &&\n req.headers &&\n 'cookie' in req.headers &&\n typeof req.headers.cookie === 'string'\n ) {\n headers.set('cookie', req.headers.cookie);\n }\n const _init: RequestInit = { method, ...config?.init };\n\n if ('body' in req) {\n if (method === 'POST' || method === 'PUT') {\n headers.set('content-type', 'application/json');\n _init.body = JSON.stringify(req.body);\n }\n }\n\n _init.headers = headers;\n\n const reqUrl = req.protocol + '://' + req.get('host') + req.originalUrl;\n // be sure its a valid url\n try {\n new URL(reqUrl);\n } catch (e) {\n error('Invalid URL', {\n url: reqUrl,\n error: e,\n });\n return null;\n }\n const proxyRequest = new Request(reqUrl, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let response;\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response = await (nile.api.handlers as any)[method](proxyRequest);\n } catch (e) {\n error(e);\n }\n\n let body;\n\n if (response instanceof Response) {\n try {\n const tryJson = await response.clone();\n body = await tryJson.json();\n } catch (e) {\n body = await response.text();\n }\n const newHeaders: Record<string, string | string[]> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n if (newHeaders[key]) {\n const prev = newHeaders[key];\n if (Array.isArray(prev)) {\n newHeaders[key] = [...prev, value];\n } else {\n newHeaders[key] = [prev, value];\n }\n } else {\n newHeaders[key] = value;\n }\n }\n });\n\n if (config?.muteResponse !== true) {\n if (res) {\n res.status(response.status).set(newHeaders);\n if (typeof body === 'string') {\n res.send(body);\n } else {\n res.json(body ?? {});\n }\n }\n return;\n }\n\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n } else {\n error('Bad response', { response });\n return;\n }\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
|
package/dist/express.mjs
CHANGED
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
// src/utils/Logger.ts
|
|
2
2
|
var red = "\x1B[31m";
|
|
3
|
-
var yellow = "\x1B[
|
|
3
|
+
var yellow = "\x1B[38;2;255;255;0m";
|
|
4
|
+
var purple = "\x1B[38;2;200;160;255m";
|
|
5
|
+
var orange = "\x1B[38;2;255;165;0m";
|
|
4
6
|
var reset = "\x1B[0m";
|
|
5
7
|
var baseLogger = (config, ...params) => ({
|
|
6
8
|
info(message, meta) {
|
|
7
9
|
if (config?.debug) {
|
|
8
10
|
console.info(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
${
|
|
11
|
+
`${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(
|
|
12
|
+
""
|
|
13
|
+
)}${reset} ${message}`,
|
|
14
|
+
meta ? `${JSON.stringify(meta)}` : ""
|
|
12
15
|
);
|
|
13
16
|
}
|
|
14
17
|
},
|
|
15
18
|
debug(message, meta) {
|
|
16
19
|
if (config?.debug) {
|
|
17
20
|
console.debug(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
${
|
|
21
|
+
`${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(
|
|
22
|
+
""
|
|
23
|
+
)}${reset} ${message}`,
|
|
24
|
+
meta ? `${JSON.stringify(meta)}` : ""
|
|
21
25
|
);
|
|
22
26
|
}
|
|
23
27
|
},
|
|
24
28
|
warn(message, meta) {
|
|
25
29
|
if (config?.debug) {
|
|
26
30
|
console.warn(
|
|
27
|
-
`${
|
|
28
|
-
|
|
31
|
+
`${orange}[niledb]${reset}${yellow}[WARN]${reset}${params.join(
|
|
32
|
+
""
|
|
33
|
+
)}${reset} ${message}`,
|
|
34
|
+
meta ? JSON.stringify(meta) : ""
|
|
29
35
|
);
|
|
30
36
|
}
|
|
31
37
|
},
|
|
32
38
|
error(message, meta) {
|
|
33
39
|
console.error(
|
|
34
|
-
`${
|
|
35
|
-
|
|
40
|
+
`${orange}[niledb]${reset}${red}[ERROR]${reset}${params.join(
|
|
41
|
+
""
|
|
42
|
+
)}${red} ${message}`,
|
|
43
|
+
meta ? meta : "",
|
|
44
|
+
`${reset}`
|
|
36
45
|
);
|
|
37
46
|
}
|
|
38
47
|
});
|
|
@@ -47,7 +56,7 @@ function Logger(config, ...params) {
|
|
|
47
56
|
|
|
48
57
|
// src/lib/express.ts
|
|
49
58
|
function cleaner(val) {
|
|
50
|
-
return val.replaceAll(/\{(
|
|
59
|
+
return val.replaceAll(/\{([^}]+)\}/g, ":$1");
|
|
51
60
|
}
|
|
52
61
|
function expressPaths(nile) {
|
|
53
62
|
const paths = {
|
|
@@ -149,6 +158,6 @@ async function NileExpressHandler(nile, config) {
|
|
|
149
158
|
return { handler, paths };
|
|
150
159
|
}
|
|
151
160
|
|
|
152
|
-
export { NileExpressHandler, cleaner };
|
|
161
|
+
export { NileExpressHandler, cleaner, expressPaths };
|
|
153
162
|
//# sourceMappingURL=express.mjs.map
|
|
154
163
|
//# sourceMappingURL=express.mjs.map
|
package/dist/express.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/Logger.ts","../src/lib/express.ts"],"names":[],"mappings":"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","file":"express.mjs","sourcesContent":["/* eslint-disable no-console */\nimport { Routes } from '../api/types';\nimport urlMatches from '../api/utils/routes/urlMatches';\nimport { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[33m';\nconst reset = '\\x1b[0m';\n\nconst baseLogger = (config: void | ServerConfig, ...params: unknown[]) => ({\n info(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.info(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n debug(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.debug(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n warn(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.warn(\n `${yellow}[niledb][WARN]${reset}${params.join('')} ${message}`,\n JSON.stringify(meta, null, 2)\n );\n }\n },\n error(message: string | unknown, meta?: Record<string, unknown>) {\n console.error(\n `${red}[niledb][ERROR]${reset}${params.join('')} ${message}`,\n meta\n );\n },\n});\n\nexport default function Logger(\n config?: Config | ServerConfig,\n ...params: unknown[]\n) {\n const base = baseLogger(config, params);\n const info = config?.logger?.info ?? base.info;\n const debug = config?.logger?.debug ?? base.debug;\n const warn = config?.logger?.warn ?? base.warn;\n const error = config?.logger?.error ?? base.error;\n return { info, warn, error, debug };\n}\n\nexport function matchesLog(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.LOG);\n}\n","import { Server } from '../Server';\nimport Logger from '../utils/Logger';\n\nexport function cleaner(val: string) {\n return val.replaceAll(/\\{(.*)\\}/g, ':$1');\n}\n\nfunction expressPaths(nile: Server) {\n const paths = {\n get: nile.api.paths.get.map(cleaner),\n post: nile.api.paths.post.map(cleaner),\n put: nile.api.paths.put.map(cleaner),\n delete: nile.api.paths.delete.map(cleaner),\n };\n return {\n paths,\n };\n}\n\ntype HandlerConfig = { muteResponse?: boolean; init?: RequestInit };\nexport async function NileExpressHandler(nile: Server, config?: HandlerConfig) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n res?: any\n ): Promise<\n | {\n body: string;\n status: number;\n headers: Record<string, string | string[]>;\n response: Response;\n }\n | null\n | undefined\n > {\n const headers = new Headers();\n if (!req || typeof req !== 'object') {\n return null;\n }\n if (!('url' in req) || typeof req?.url !== 'string') {\n error('A url is necessary for the nile express handler');\n return null;\n }\n const method =\n 'method' in req && typeof req.method === 'string' ? req.method : 'GET';\n if (\n 'headers' in req &&\n typeof req.headers === 'object' &&\n req.headers &&\n 'cookie' in req.headers &&\n typeof req.headers.cookie === 'string'\n ) {\n headers.set('cookie', req.headers.cookie);\n }\n const _init: RequestInit = { method, ...config?.init };\n\n if ('body' in req) {\n if (method === 'POST' || method === 'PUT') {\n headers.set('content-type', 'application/json');\n _init.body = JSON.stringify(req.body);\n }\n }\n\n _init.headers = headers;\n\n const reqUrl = req.protocol + '://' + req.get('host') + req.originalUrl;\n // be sure its a valid url\n try {\n new URL(reqUrl);\n } catch (e) {\n error('Invalid URL', {\n url: reqUrl,\n error: e,\n });\n return null;\n }\n const proxyRequest = new Request(reqUrl, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let response;\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response = await (nile.api.handlers as any)[method](proxyRequest);\n } catch (e) {\n error(e);\n }\n\n let body;\n\n if (response instanceof Response) {\n try {\n const tryJson = await response.clone();\n body = await tryJson.json();\n } catch (e) {\n body = await response.text();\n }\n const newHeaders: Record<string, string | string[]> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n if (newHeaders[key]) {\n const prev = newHeaders[key];\n if (Array.isArray(prev)) {\n newHeaders[key] = [...prev, value];\n } else {\n newHeaders[key] = [prev, value];\n }\n } else {\n newHeaders[key] = value;\n }\n }\n });\n\n if (config?.muteResponse !== true) {\n if (res) {\n res.status(response.status).set(newHeaders);\n if (typeof body === 'string') {\n res.send(body);\n } else {\n res.json(body ?? {});\n }\n }\n return;\n }\n\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n } else {\n error('Bad response', { response });\n return;\n }\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/Logger.ts","../src/lib/express.ts"],"names":[],"mappings":"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","file":"express.mjs","sourcesContent":["/* eslint-disable no-console */\nimport { Routes } from '../api/types';\nimport urlMatches from '../api/utils/routes/urlMatches';\nimport { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[38;2;255;255;0m';\nconst purple = '\\x1b[38;2;200;160;255m';\nconst orange = '\\x1b[38;2;255;165;0m';\nconst reset = '\\x1b[0m';\n\nconst baseLogger = (config: void | ServerConfig, ...params: unknown[]) => ({\n info(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.info(\n `${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? `${JSON.stringify(meta)}` : ''\n );\n }\n },\n debug(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.debug(\n `${orange}[niledb]${reset}${purple}[DEBUG]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? `${JSON.stringify(meta)}` : ''\n );\n }\n },\n warn(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.warn(\n `${orange}[niledb]${reset}${yellow}[WARN]${reset}${params.join(\n ''\n )}${reset} ${message}`,\n meta ? JSON.stringify(meta) : ''\n );\n }\n },\n error(message: string | unknown, meta?: Record<string, unknown>) {\n console.error(\n `${orange}[niledb]${reset}${red}[ERROR]${reset}${params.join(\n ''\n )}${red} ${message}`,\n meta ? meta : '',\n `${reset}`\n );\n },\n});\n\nexport default function Logger(\n config?: Config | ServerConfig,\n ...params: unknown[]\n) {\n const base = baseLogger(config, params);\n const info = config?.logger?.info ?? base.info;\n const debug = config?.logger?.debug ?? base.debug;\n const warn = config?.logger?.warn ?? base.warn;\n const error = config?.logger?.error ?? base.error;\n return { info, warn, error, debug };\n}\n\nexport function matchesLog(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.LOG);\n}\n","import { Server } from '../Server';\nimport Logger from '../utils/Logger';\n\nexport function cleaner(val: string) {\n return val.replaceAll(/\\{([^}]+)\\}/g, ':$1');\n}\n\nexport function expressPaths(nile: Server) {\n const paths = {\n get: nile.api.paths.get.map(cleaner),\n post: nile.api.paths.post.map(cleaner),\n put: nile.api.paths.put.map(cleaner),\n delete: nile.api.paths.delete.map(cleaner),\n };\n return {\n paths,\n };\n}\n\ntype HandlerConfig = { muteResponse?: boolean; init?: RequestInit };\nexport async function NileExpressHandler(nile: Server, config?: HandlerConfig) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n res?: any\n ): Promise<\n | {\n body: string;\n status: number;\n headers: Record<string, string | string[]>;\n response: Response;\n }\n | null\n | undefined\n > {\n const headers = new Headers();\n if (!req || typeof req !== 'object') {\n return null;\n }\n if (!('url' in req) || typeof req?.url !== 'string') {\n error('A url is necessary for the nile express handler');\n return null;\n }\n const method =\n 'method' in req && typeof req.method === 'string' ? req.method : 'GET';\n if (\n 'headers' in req &&\n typeof req.headers === 'object' &&\n req.headers &&\n 'cookie' in req.headers &&\n typeof req.headers.cookie === 'string'\n ) {\n headers.set('cookie', req.headers.cookie);\n }\n const _init: RequestInit = { method, ...config?.init };\n\n if ('body' in req) {\n if (method === 'POST' || method === 'PUT') {\n headers.set('content-type', 'application/json');\n _init.body = JSON.stringify(req.body);\n }\n }\n\n _init.headers = headers;\n\n const reqUrl = req.protocol + '://' + req.get('host') + req.originalUrl;\n // be sure its a valid url\n try {\n new URL(reqUrl);\n } catch (e) {\n error('Invalid URL', {\n url: reqUrl,\n error: e,\n });\n return null;\n }\n const proxyRequest = new Request(reqUrl, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let response;\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response = await (nile.api.handlers as any)[method](proxyRequest);\n } catch (e) {\n error(e);\n }\n\n let body;\n\n if (response instanceof Response) {\n try {\n const tryJson = await response.clone();\n body = await tryJson.json();\n } catch (e) {\n body = await response.text();\n }\n const newHeaders: Record<string, string | string[]> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n if (newHeaders[key]) {\n const prev = newHeaders[key];\n if (Array.isArray(prev)) {\n newHeaders[key] = [...prev, value];\n } else {\n newHeaders[key] = [prev, value];\n }\n } else {\n newHeaders[key] = value;\n }\n }\n });\n\n if (config?.muteResponse !== true) {\n if (res) {\n res.status(response.status).set(newHeaders);\n if (typeof body === 'string') {\n res.send(body);\n } else {\n res.json(body ?? {});\n }\n }\n return;\n }\n\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n } else {\n error('Bad response', { response });\n return;\n }\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -31,6 +31,7 @@ type ApiParams = {
|
|
|
31
31
|
origin?: null | undefined | string;
|
|
32
32
|
};
|
|
33
33
|
declare class ApiConfig {
|
|
34
|
+
#private;
|
|
34
35
|
cookieKey?: string;
|
|
35
36
|
basePath?: string | undefined;
|
|
36
37
|
routes?: Partial<Routes>;
|
|
@@ -42,7 +43,6 @@ declare class ApiConfig {
|
|
|
42
43
|
* If this is set, any `callbackUrl` from the client will be ignored.
|
|
43
44
|
*/
|
|
44
45
|
callbackUrl?: string;
|
|
45
|
-
private _token?;
|
|
46
46
|
constructor(config?: ServerConfig, logger?: string);
|
|
47
47
|
get token(): string | undefined;
|
|
48
48
|
set token(value: string | undefined);
|
|
@@ -108,8 +108,20 @@ type Database = {
|
|
|
108
108
|
interface CreateBasicUserRequest {
|
|
109
109
|
email: string;
|
|
110
110
|
password: string;
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
name?: string;
|
|
112
|
+
familyName?: string;
|
|
113
|
+
givenName?: string;
|
|
114
|
+
picture?: string;
|
|
115
|
+
newTenantName?: string;
|
|
116
|
+
tenantId?: string;
|
|
117
|
+
}
|
|
118
|
+
interface CreateTenantUserRequest {
|
|
119
|
+
email: string;
|
|
120
|
+
password: string;
|
|
121
|
+
name?: string;
|
|
122
|
+
familyName?: string;
|
|
123
|
+
givenName?: string;
|
|
124
|
+
picture?: string;
|
|
113
125
|
}
|
|
114
126
|
declare const LoginUserResponseTokenTypeEnum: {
|
|
115
127
|
readonly AccessToken: "ACCESS_TOKEN";
|
|
@@ -261,13 +273,13 @@ declare class Tenants extends Config {
|
|
|
261
273
|
declare class Users extends Config {
|
|
262
274
|
headers?: Headers;
|
|
263
275
|
constructor(config: Config, headers?: Headers);
|
|
264
|
-
|
|
276
|
+
usersUrl(user: CreateBasicUserRequest): string;
|
|
265
277
|
get tenantUsersUrl(): string;
|
|
266
278
|
get linkUsersUrl(): string;
|
|
267
279
|
get tenantUserUrl(): string;
|
|
268
280
|
handleHeaders(init?: RequestInit): RequestInit | undefined;
|
|
269
|
-
createUser: <T = User | Response>(
|
|
270
|
-
createTenantUser: <T = User | Response>(req: NileRequest<
|
|
281
|
+
createUser: <T = User | Response>(user: CreateBasicUserRequest, init?: RequestInit) => Promise<T>;
|
|
282
|
+
createTenantUser: <T = User | Response>(req: NileRequest<CreateTenantUserRequest>, init?: RequestInit) => Promise<T>;
|
|
271
283
|
updateUser: <T = User[] | Response>(req: NileRequest<Partial<Omit<User, "email" | "tenants" | "created" | "updated">>>, init?: RequestInit) => Promise<T>;
|
|
272
284
|
listUsers: <T = User[] | Response>(req: NileRequest<void> | Headers, init?: RequestInit) => Promise<T>;
|
|
273
285
|
linkUser: <T = User | Response>(req: NileRequest<{
|
|
@@ -308,6 +320,7 @@ declare class Api {
|
|
|
308
320
|
resetHeaders: (headers?: Headers) => void;
|
|
309
321
|
set headers(headers: Headers | Record<string, string>);
|
|
310
322
|
get headers(): Headers | undefined;
|
|
323
|
+
getCookie(req?: Request | Headers): string | null | undefined;
|
|
311
324
|
login: (payload: {
|
|
312
325
|
email: string;
|
|
313
326
|
password: string;
|
|
@@ -315,6 +328,7 @@ declare class Api {
|
|
|
315
328
|
returnResponse?: boolean;
|
|
316
329
|
}) => Promise<Response | undefined>;
|
|
317
330
|
session: (req?: Request | Headers | null | undefined) => Promise<Response | JWT | ActiveSession | null | undefined>;
|
|
331
|
+
setContext: (req: Request | Headers) => void;
|
|
318
332
|
}
|
|
319
333
|
|
|
320
334
|
declare class Server {
|
|
@@ -340,4 +354,4 @@ declare class Server {
|
|
|
340
354
|
}
|
|
341
355
|
declare function create(config?: ServerConfig): Promise<Server>;
|
|
342
356
|
|
|
343
|
-
export { type ActiveSession, type AfterCreate, type CreateBasicUserRequest, type Database, type JWT, type LoggerType, type LoginUserResponse, type LoginUserResponseToken, LoginUserResponseTokenTypeEnum, create as Nile, type NileDb, type NilePoolConfig, type Opts, Server, type ServerConfig, type Tenant, type User };
|
|
357
|
+
export { type ActiveSession, type AfterCreate, type CreateBasicUserRequest, type CreateTenantUserRequest, type Database, type JWT, type LoggerType, type LoginUserResponse, type LoginUserResponseToken, LoginUserResponseTokenTypeEnum, create as Nile, type NileDb, type NilePoolConfig, type Opts, Server, type ServerConfig, type Tenant, type User };
|
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ type ApiParams = {
|
|
|
31
31
|
origin?: null | undefined | string;
|
|
32
32
|
};
|
|
33
33
|
declare class ApiConfig {
|
|
34
|
+
#private;
|
|
34
35
|
cookieKey?: string;
|
|
35
36
|
basePath?: string | undefined;
|
|
36
37
|
routes?: Partial<Routes>;
|
|
@@ -42,7 +43,6 @@ declare class ApiConfig {
|
|
|
42
43
|
* If this is set, any `callbackUrl` from the client will be ignored.
|
|
43
44
|
*/
|
|
44
45
|
callbackUrl?: string;
|
|
45
|
-
private _token?;
|
|
46
46
|
constructor(config?: ServerConfig, logger?: string);
|
|
47
47
|
get token(): string | undefined;
|
|
48
48
|
set token(value: string | undefined);
|
|
@@ -108,8 +108,20 @@ type Database = {
|
|
|
108
108
|
interface CreateBasicUserRequest {
|
|
109
109
|
email: string;
|
|
110
110
|
password: string;
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
name?: string;
|
|
112
|
+
familyName?: string;
|
|
113
|
+
givenName?: string;
|
|
114
|
+
picture?: string;
|
|
115
|
+
newTenantName?: string;
|
|
116
|
+
tenantId?: string;
|
|
117
|
+
}
|
|
118
|
+
interface CreateTenantUserRequest {
|
|
119
|
+
email: string;
|
|
120
|
+
password: string;
|
|
121
|
+
name?: string;
|
|
122
|
+
familyName?: string;
|
|
123
|
+
givenName?: string;
|
|
124
|
+
picture?: string;
|
|
113
125
|
}
|
|
114
126
|
declare const LoginUserResponseTokenTypeEnum: {
|
|
115
127
|
readonly AccessToken: "ACCESS_TOKEN";
|
|
@@ -261,13 +273,13 @@ declare class Tenants extends Config {
|
|
|
261
273
|
declare class Users extends Config {
|
|
262
274
|
headers?: Headers;
|
|
263
275
|
constructor(config: Config, headers?: Headers);
|
|
264
|
-
|
|
276
|
+
usersUrl(user: CreateBasicUserRequest): string;
|
|
265
277
|
get tenantUsersUrl(): string;
|
|
266
278
|
get linkUsersUrl(): string;
|
|
267
279
|
get tenantUserUrl(): string;
|
|
268
280
|
handleHeaders(init?: RequestInit): RequestInit | undefined;
|
|
269
|
-
createUser: <T = User | Response>(
|
|
270
|
-
createTenantUser: <T = User | Response>(req: NileRequest<
|
|
281
|
+
createUser: <T = User | Response>(user: CreateBasicUserRequest, init?: RequestInit) => Promise<T>;
|
|
282
|
+
createTenantUser: <T = User | Response>(req: NileRequest<CreateTenantUserRequest>, init?: RequestInit) => Promise<T>;
|
|
271
283
|
updateUser: <T = User[] | Response>(req: NileRequest<Partial<Omit<User, "email" | "tenants" | "created" | "updated">>>, init?: RequestInit) => Promise<T>;
|
|
272
284
|
listUsers: <T = User[] | Response>(req: NileRequest<void> | Headers, init?: RequestInit) => Promise<T>;
|
|
273
285
|
linkUser: <T = User | Response>(req: NileRequest<{
|
|
@@ -308,6 +320,7 @@ declare class Api {
|
|
|
308
320
|
resetHeaders: (headers?: Headers) => void;
|
|
309
321
|
set headers(headers: Headers | Record<string, string>);
|
|
310
322
|
get headers(): Headers | undefined;
|
|
323
|
+
getCookie(req?: Request | Headers): string | null | undefined;
|
|
311
324
|
login: (payload: {
|
|
312
325
|
email: string;
|
|
313
326
|
password: string;
|
|
@@ -315,6 +328,7 @@ declare class Api {
|
|
|
315
328
|
returnResponse?: boolean;
|
|
316
329
|
}) => Promise<Response | undefined>;
|
|
317
330
|
session: (req?: Request | Headers | null | undefined) => Promise<Response | JWT | ActiveSession | null | undefined>;
|
|
331
|
+
setContext: (req: Request | Headers) => void;
|
|
318
332
|
}
|
|
319
333
|
|
|
320
334
|
declare class Server {
|
|
@@ -340,4 +354,4 @@ declare class Server {
|
|
|
340
354
|
}
|
|
341
355
|
declare function create(config?: ServerConfig): Promise<Server>;
|
|
342
356
|
|
|
343
|
-
export { type ActiveSession, type AfterCreate, type CreateBasicUserRequest, type Database, type JWT, type LoggerType, type LoginUserResponse, type LoginUserResponseToken, LoginUserResponseTokenTypeEnum, create as Nile, type NileDb, type NilePoolConfig, type Opts, Server, type ServerConfig, type Tenant, type User };
|
|
357
|
+
export { type ActiveSession, type AfterCreate, type CreateBasicUserRequest, type CreateTenantUserRequest, type Database, type JWT, type LoggerType, type LoginUserResponse, type LoginUserResponseToken, LoginUserResponseTokenTypeEnum, create as Nile, type NileDb, type NilePoolConfig, type Opts, Server, type ServerConfig, type Tenant, type User };
|