@niledatabase/server 3.0.0-alpha.43 → 3.0.0-alpha.45

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 (81) hide show
  1. package/dist/express.d.mts +20 -0
  2. package/dist/express.d.ts +20 -0
  3. package/dist/express.js +119 -0
  4. package/dist/express.js.map +1 -0
  5. package/dist/express.mjs +116 -0
  6. package/dist/express.mjs.map +1 -0
  7. package/dist/index.d.mts +319 -0
  8. package/dist/index.d.ts +319 -8
  9. package/dist/index.js +2328 -5
  10. package/dist/index.js.map +1 -0
  11. package/dist/index.mjs +2323 -0
  12. package/dist/index.mjs.map +1 -0
  13. package/package.json +17 -4
  14. package/dist/Api.d.ts +0 -25
  15. package/dist/Server.d.ts +0 -26
  16. package/dist/api/handlers/DELETE.d.ts +0 -3
  17. package/dist/api/handlers/GET.d.ts +0 -3
  18. package/dist/api/handlers/POST.d.ts +0 -3
  19. package/dist/api/handlers/PUT.d.ts +0 -3
  20. package/dist/api/handlers/index.d.ts +0 -8
  21. package/dist/api/routes/auth/callback.d.ts +0 -4
  22. package/dist/api/routes/auth/csrf.d.ts +0 -4
  23. package/dist/api/routes/auth/error.d.ts +0 -4
  24. package/dist/api/routes/auth/index.d.ts +0 -9
  25. package/dist/api/routes/auth/password-reset.d.ts +0 -4
  26. package/dist/api/routes/auth/providers.d.ts +0 -4
  27. package/dist/api/routes/auth/session.d.ts +0 -4
  28. package/dist/api/routes/auth/signin.d.ts +0 -34
  29. package/dist/api/routes/auth/signout.d.ts +0 -4
  30. package/dist/api/routes/auth/verify-request.d.ts +0 -4
  31. package/dist/api/routes/me/index.d.ts +0 -4
  32. package/dist/api/routes/signup/POST.d.ts +0 -66
  33. package/dist/api/routes/signup/index.d.ts +0 -4
  34. package/dist/api/routes/tenants/GET.d.ts +0 -33
  35. package/dist/api/routes/tenants/POST.d.ts +0 -45
  36. package/dist/api/routes/tenants/[tenantId]/DELETE.d.ts +0 -34
  37. package/dist/api/routes/tenants/[tenantId]/GET.d.ts +0 -37
  38. package/dist/api/routes/tenants/[tenantId]/PUT.d.ts +0 -38
  39. package/dist/api/routes/tenants/[tenantId]/users/GET.d.ts +0 -35
  40. package/dist/api/routes/tenants/[tenantId]/users/POST.d.ts +0 -45
  41. package/dist/api/routes/tenants/[tenantId]/users/PUT.d.ts +0 -29
  42. package/dist/api/routes/tenants/[tenantId]/users/[userId]/DELETE.d.ts +0 -30
  43. package/dist/api/routes/tenants/[tenantId]/users/index.d.ts +0 -4
  44. package/dist/api/routes/tenants/index.d.ts +0 -4
  45. package/dist/api/routes/users/GET.d.ts +0 -35
  46. package/dist/api/routes/users/POST.d.ts +0 -66
  47. package/dist/api/routes/users/[userId]/PUT.d.ts +0 -41
  48. package/dist/api/routes/users/index.d.ts +0 -4
  49. package/dist/api/swagger.d.ts +0 -152
  50. package/dist/api/types.d.ts +0 -20
  51. package/dist/api/utils/auth.d.ts +0 -22
  52. package/dist/api/utils/request.d.ts +0 -4
  53. package/dist/api/utils/routes/apiRoutes.d.ts +0 -18
  54. package/dist/api/utils/routes/defaultRoutes.d.ts +0 -2
  55. package/dist/api/utils/routes/makeRestUrl.d.ts +0 -2
  56. package/dist/api/utils/routes/proxyRoutes.d.ts +0 -15
  57. package/dist/api/utils/routes/urlMatches.d.ts +0 -1
  58. package/dist/auth/index.d.ts +0 -22
  59. package/dist/db/DBManager.d.ts +0 -13
  60. package/dist/db/NileInstance.d.ts +0 -14
  61. package/dist/db/PoolProxy.d.ts +0 -3
  62. package/dist/db/index.d.ts +0 -1
  63. package/dist/server.cjs.development.js +0 -4776
  64. package/dist/server.cjs.development.js.map +0 -1
  65. package/dist/server.cjs.production.min.js +0 -2
  66. package/dist/server.cjs.production.min.js.map +0 -1
  67. package/dist/server.esm.js +0 -4773
  68. package/dist/server.esm.js.map +0 -1
  69. package/dist/tenants/index.d.ts +0 -22
  70. package/dist/tenants/types.d.ts +0 -4
  71. package/dist/types.d.ts +0 -45
  72. package/dist/users/index.d.ts +0 -27
  73. package/dist/users/types.d.ts +0 -36
  74. package/dist/utils/Config/envVars.d.ts +0 -22
  75. package/dist/utils/Config/index.d.ts +0 -48
  76. package/dist/utils/Event/index.d.ts +0 -11
  77. package/dist/utils/Logger.d.ts +0 -8
  78. package/dist/utils/Requester/index.d.ts +0 -23
  79. package/dist/utils/Requester/types.d.ts +0 -88
  80. package/dist/utils/ResponseError.d.ts +0 -4
  81. package/dist/utils/fetch.d.ts +0 -11
@@ -0,0 +1,20 @@
1
+ import { Server } from './index.mjs';
2
+ import 'pg';
3
+
4
+ declare function cleaner(val: string): string;
5
+ declare function NileExpressHandler(nile: Server): Promise<{
6
+ handler: (req: unknown, init?: RequestInit) => Promise<{
7
+ body: string;
8
+ status: number;
9
+ headers: Record<string, string>;
10
+ response: Response;
11
+ } | null>;
12
+ paths: {
13
+ get: string[];
14
+ post: string[];
15
+ put: string[];
16
+ delete: string[];
17
+ };
18
+ }>;
19
+
20
+ export { NileExpressHandler, cleaner };
@@ -0,0 +1,20 @@
1
+ import { Server } from './index.js';
2
+ import 'pg';
3
+
4
+ declare function cleaner(val: string): string;
5
+ declare function NileExpressHandler(nile: Server): Promise<{
6
+ handler: (req: unknown, init?: RequestInit) => Promise<{
7
+ body: string;
8
+ status: number;
9
+ headers: Record<string, string>;
10
+ response: Response;
11
+ } | null>;
12
+ paths: {
13
+ get: string[];
14
+ post: string[];
15
+ put: string[];
16
+ delete: string[];
17
+ };
18
+ }>;
19
+
20
+ export { NileExpressHandler, cleaner };
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ // src/utils/Logger.ts
4
+ var red = "\x1B[31m";
5
+ var yellow = "\x1B[33m";
6
+ var reset = "\x1B[0m";
7
+ var baseLogger = (config, ...params) => ({
8
+ info(message, meta) {
9
+ if (config?.debug) {
10
+ console.info(
11
+ `[niledb][DEBUG]${params.join("")} ${message}`,
12
+ meta ? `
13
+ ${JSON.stringify(meta, null, 2)}` : ""
14
+ );
15
+ }
16
+ },
17
+ debug(message, meta) {
18
+ if (config?.debug) {
19
+ console.debug(
20
+ `[niledb][DEBUG]${params.join("")} ${message}`,
21
+ meta ? `
22
+ ${JSON.stringify(meta, null, 2)}` : ""
23
+ );
24
+ }
25
+ },
26
+ warn(message, meta) {
27
+ if (config?.debug) {
28
+ console.warn(
29
+ `${yellow}[niledb][WARN]${reset}${params.join("")} ${message}`,
30
+ JSON.stringify(meta, null, 2)
31
+ );
32
+ }
33
+ },
34
+ error(message, meta) {
35
+ console.error(
36
+ `${red}[niledb][ERROR]${reset}${params.join("")} ${message}`,
37
+ meta
38
+ );
39
+ }
40
+ });
41
+ function Logger(config, ...params) {
42
+ const base = baseLogger(config, params);
43
+ const info = config?.logger?.info ?? base.info;
44
+ const debug = config?.logger?.debug ?? base.debug;
45
+ const warn = config?.logger?.warn ?? base.warn;
46
+ const error = config?.logger?.error ?? base.error;
47
+ return { info, warn, error, debug };
48
+ }
49
+
50
+ // src/lib/express.ts
51
+ function cleaner(val) {
52
+ return val.replaceAll(/\{(.*)\}/g, ":$1");
53
+ }
54
+ function expressPaths(nile) {
55
+ const paths = {
56
+ get: nile.api.paths.get.map(cleaner),
57
+ post: nile.api.paths.post.map(cleaner),
58
+ put: nile.api.paths.put.map(cleaner),
59
+ delete: nile.api.paths.delete.map(cleaner)
60
+ };
61
+ return {
62
+ paths
63
+ };
64
+ }
65
+ async function NileExpressHandler(nile) {
66
+ const { error } = Logger(nile.config, "nile-express");
67
+ async function handler(req, init) {
68
+ const headers = new Headers();
69
+ if (!req || typeof req !== "object") {
70
+ return null;
71
+ }
72
+ if (!("url" in req) || typeof req?.url !== "string") {
73
+ error("A url is necessary for the nile express handler");
74
+ return null;
75
+ }
76
+ const method = "method" in req && typeof req.method === "string" ? req.method : "GET";
77
+ if ("headers" in req && typeof req.headers === "object" && req.headers && "cookie" in req.headers && typeof req.headers.cookie === "string") {
78
+ headers.set("cookie", req.headers.cookie);
79
+ }
80
+ const _init = { method, ...init };
81
+ if ("body" in req) {
82
+ if (method === "POST" || method === "PUT") {
83
+ headers.set("content-type", "application/json");
84
+ _init.body = JSON.stringify(req.body);
85
+ }
86
+ }
87
+ _init.headers = headers;
88
+ const proxyRequest = new Request(req.url, _init);
89
+ const response = await nile.api.handlers[method](
90
+ proxyRequest
91
+ );
92
+ let body;
93
+ try {
94
+ const tryJson = await response.clone();
95
+ body = await tryJson.json();
96
+ } catch (e) {
97
+ body = await response.text();
98
+ }
99
+ const newHeaders = {};
100
+ response.headers.forEach((value, key) => {
101
+ if (!["content-length", "transfer-encoding"].includes(key.toLowerCase())) {
102
+ newHeaders[key] = value;
103
+ }
104
+ });
105
+ return {
106
+ body,
107
+ status: response.status,
108
+ headers: newHeaders,
109
+ response
110
+ };
111
+ }
112
+ const { paths } = expressPaths(nile);
113
+ return { handler, paths };
114
+ }
115
+
116
+ exports.NileExpressHandler = NileExpressHandler;
117
+ exports.cleaner = cleaner;
118
+ //# sourceMappingURL=express.js.map
119
+ //# sourceMappingURL=express.js.map
@@ -0,0 +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 { 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","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\nexport async function NileExpressHandler(nile: Server) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n req: unknown,\n init?: RequestInit\n ): Promise<{\n body: string;\n status: number;\n headers: Record<string, string>;\n response: Response;\n } | null> {\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, ...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 proxyRequest = new Request(req.url, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const response = (await (nile.api.handlers as any)[method](\n proxyRequest\n )) as Response;\n\n let body;\n\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> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n newHeaders[key] = value;\n }\n });\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
@@ -0,0 +1,116 @@
1
+ // src/utils/Logger.ts
2
+ var red = "\x1B[31m";
3
+ var yellow = "\x1B[33m";
4
+ var reset = "\x1B[0m";
5
+ var baseLogger = (config, ...params) => ({
6
+ info(message, meta) {
7
+ if (config?.debug) {
8
+ console.info(
9
+ `[niledb][DEBUG]${params.join("")} ${message}`,
10
+ meta ? `
11
+ ${JSON.stringify(meta, null, 2)}` : ""
12
+ );
13
+ }
14
+ },
15
+ debug(message, meta) {
16
+ if (config?.debug) {
17
+ console.debug(
18
+ `[niledb][DEBUG]${params.join("")} ${message}`,
19
+ meta ? `
20
+ ${JSON.stringify(meta, null, 2)}` : ""
21
+ );
22
+ }
23
+ },
24
+ warn(message, meta) {
25
+ if (config?.debug) {
26
+ console.warn(
27
+ `${yellow}[niledb][WARN]${reset}${params.join("")} ${message}`,
28
+ JSON.stringify(meta, null, 2)
29
+ );
30
+ }
31
+ },
32
+ error(message, meta) {
33
+ console.error(
34
+ `${red}[niledb][ERROR]${reset}${params.join("")} ${message}`,
35
+ meta
36
+ );
37
+ }
38
+ });
39
+ function Logger(config, ...params) {
40
+ const base = baseLogger(config, params);
41
+ const info = config?.logger?.info ?? base.info;
42
+ const debug = config?.logger?.debug ?? base.debug;
43
+ const warn = config?.logger?.warn ?? base.warn;
44
+ const error = config?.logger?.error ?? base.error;
45
+ return { info, warn, error, debug };
46
+ }
47
+
48
+ // src/lib/express.ts
49
+ function cleaner(val) {
50
+ return val.replaceAll(/\{(.*)\}/g, ":$1");
51
+ }
52
+ function expressPaths(nile) {
53
+ const paths = {
54
+ get: nile.api.paths.get.map(cleaner),
55
+ post: nile.api.paths.post.map(cleaner),
56
+ put: nile.api.paths.put.map(cleaner),
57
+ delete: nile.api.paths.delete.map(cleaner)
58
+ };
59
+ return {
60
+ paths
61
+ };
62
+ }
63
+ async function NileExpressHandler(nile) {
64
+ const { error } = Logger(nile.config, "nile-express");
65
+ async function handler(req, init) {
66
+ const headers = new Headers();
67
+ if (!req || typeof req !== "object") {
68
+ return null;
69
+ }
70
+ if (!("url" in req) || typeof req?.url !== "string") {
71
+ error("A url is necessary for the nile express handler");
72
+ return null;
73
+ }
74
+ const method = "method" in req && typeof req.method === "string" ? req.method : "GET";
75
+ if ("headers" in req && typeof req.headers === "object" && req.headers && "cookie" in req.headers && typeof req.headers.cookie === "string") {
76
+ headers.set("cookie", req.headers.cookie);
77
+ }
78
+ const _init = { method, ...init };
79
+ if ("body" in req) {
80
+ if (method === "POST" || method === "PUT") {
81
+ headers.set("content-type", "application/json");
82
+ _init.body = JSON.stringify(req.body);
83
+ }
84
+ }
85
+ _init.headers = headers;
86
+ const proxyRequest = new Request(req.url, _init);
87
+ const response = await nile.api.handlers[method](
88
+ proxyRequest
89
+ );
90
+ let body;
91
+ try {
92
+ const tryJson = await response.clone();
93
+ body = await tryJson.json();
94
+ } catch (e) {
95
+ body = await response.text();
96
+ }
97
+ const newHeaders = {};
98
+ response.headers.forEach((value, key) => {
99
+ if (!["content-length", "transfer-encoding"].includes(key.toLowerCase())) {
100
+ newHeaders[key] = value;
101
+ }
102
+ });
103
+ return {
104
+ body,
105
+ status: response.status,
106
+ headers: newHeaders,
107
+ response
108
+ };
109
+ }
110
+ const { paths } = expressPaths(nile);
111
+ return { handler, paths };
112
+ }
113
+
114
+ export { NileExpressHandler, cleaner };
115
+ //# sourceMappingURL=express.mjs.map
116
+ //# sourceMappingURL=express.mjs.map
@@ -0,0 +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 { 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","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\nexport async function NileExpressHandler(nile: Server) {\n const { error } = Logger(nile.config, 'nile-express');\n async function handler(\n req: unknown,\n init?: RequestInit\n ): Promise<{\n body: string;\n status: number;\n headers: Record<string, string>;\n response: Response;\n } | null> {\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, ...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 proxyRequest = new Request(req.url, _init);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const response = (await (nile.api.handlers as any)[method](\n proxyRequest\n )) as Response;\n\n let body;\n\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> = {};\n response.headers.forEach((value, key) => {\n if (\n !['content-length', 'transfer-encoding'].includes(key.toLowerCase())\n ) {\n newHeaders[key] = value;\n }\n });\n return {\n body,\n status: response.status,\n headers: newHeaders,\n response,\n };\n }\n const { paths } = expressPaths(nile);\n return { handler, paths };\n}\n"]}
@@ -0,0 +1,319 @@
1
+ import pg, { PoolConfig, PoolClient } from 'pg';
2
+
3
+ type Opts = {
4
+ basePath?: string;
5
+ fetch?: typeof fetch;
6
+ };
7
+ type NilePoolConfig = PoolConfig & {
8
+ afterCreate?: AfterCreate;
9
+ };
10
+ type LoggerType = {
11
+ info?: (args: unknown[]) => void;
12
+ warn?: (args: unknown[]) => void;
13
+ error?: (args: unknown[]) => void;
14
+ debug?: (args: unknown[]) => void;
15
+ };
16
+ type ServerConfig = {
17
+ databaseId?: string;
18
+ user?: string;
19
+ password?: string;
20
+ databaseName?: string;
21
+ tenantId?: string | null | undefined;
22
+ userId?: string | null | undefined;
23
+ debug?: boolean;
24
+ configureUrl?: string;
25
+ secureCookies?: boolean;
26
+ db?: NilePoolConfig;
27
+ api?: {
28
+ version?: number;
29
+ basePath?: string;
30
+ cookieKey?: string;
31
+ token?: string;
32
+ };
33
+ logger?: LoggerType;
34
+ };
35
+ type NileDb = NilePoolConfig & {
36
+ tenantId?: string;
37
+ };
38
+ type AfterCreate = (conn: PoolClient, done: (err: null | Error, conn: PoolClient) => void) => void;
39
+ type Database = {
40
+ name: string;
41
+ apiHost: string;
42
+ dbHost: string;
43
+ id: string;
44
+ message?: string;
45
+ status: 'READY' | string;
46
+ };
47
+
48
+ interface CreateBasicUserRequest {
49
+ email: string;
50
+ password: string;
51
+ preferredName?: string;
52
+ newTenant?: string;
53
+ }
54
+ declare const LoginUserResponseTokenTypeEnum: {
55
+ readonly AccessToken: "ACCESS_TOKEN";
56
+ readonly RefreshToken: "REFRESH_TOKEN";
57
+ readonly IdToken: "ID_TOKEN";
58
+ };
59
+ type LoginUserResponseTokenTypeEnum = (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];
60
+ interface LoginUserResponseToken {
61
+ jwt: string;
62
+ maxAge: number;
63
+ type: LoginUserResponseTokenTypeEnum;
64
+ }
65
+ interface LoginUserResponse {
66
+ [key: string]: any;
67
+ id: string;
68
+ token: LoginUserResponseToken;
69
+ }
70
+ interface User {
71
+ id: string;
72
+ email: string;
73
+ name: string | null;
74
+ familyName: string | null;
75
+ givenName: string | null;
76
+ picture: string | null;
77
+ created: string;
78
+ updated: string;
79
+ emailVerified: boolean | null;
80
+ tenants: {
81
+ id: string;
82
+ }[];
83
+ }
84
+
85
+ interface Tenant {
86
+ id: string;
87
+ name?: string;
88
+ }
89
+
90
+ type ConfigRoutes = {
91
+ SIGNIN?: string;
92
+ SESSION?: string;
93
+ PROVIDERS?: string;
94
+ CSRF?: string;
95
+ CALLBACK?: string;
96
+ SIGNOUT?: string;
97
+ ME?: string;
98
+ ERROR?: string;
99
+ TENANTS?: string;
100
+ TENANT_USERS?: string;
101
+ USERS?: string;
102
+ };
103
+ declare class ApiConfig {
104
+ cookieKey?: string;
105
+ basePath?: string | undefined;
106
+ private _token?;
107
+ constructor({ basePath, cookieKey, token, }: {
108
+ basePath?: string | undefined;
109
+ cookieKey: string;
110
+ token: string | undefined;
111
+ });
112
+ get token(): string | undefined;
113
+ set token(value: string | undefined);
114
+ }
115
+ declare class Config {
116
+ user: string;
117
+ password: string;
118
+ databaseId: string;
119
+ databaseName: string;
120
+ routePrefix?: string;
121
+ routes?: ConfigRoutes;
122
+ logger?: LoggerType;
123
+ secureCookies?: boolean | undefined;
124
+ debug: boolean;
125
+ db: NilePoolConfig;
126
+ api: ApiConfig;
127
+ private _tenantId?;
128
+ private _userId?;
129
+ get tenantId(): string | undefined | null;
130
+ set tenantId(value: string | undefined | null);
131
+ get userId(): string | undefined | null;
132
+ set userId(value: string | undefined | null);
133
+ constructor(config?: ServerConfig, logger?: string);
134
+ configure: (config: ServerConfig) => Promise<Config>;
135
+ }
136
+
137
+ type JWT = {
138
+ email: string;
139
+ sub: string;
140
+ id: string;
141
+ iat: number;
142
+ exp: number;
143
+ jti: string;
144
+ };
145
+ type ActiveSession = {
146
+ id: string;
147
+ email: string;
148
+ expires: Date;
149
+ user?: {
150
+ id: string;
151
+ name: string;
152
+ image: string;
153
+ email: string;
154
+ emailVerified: void | Date;
155
+ };
156
+ };
157
+
158
+ type Routes = {
159
+ SIGNIN: string;
160
+ SESSION: string;
161
+ PROVIDERS: string;
162
+ CSRF: string;
163
+ CALLBACK: string;
164
+ SIGNOUT: string;
165
+ ERROR: string;
166
+ ME: string;
167
+ USERS: string;
168
+ TENANTS: string;
169
+ TENANT: string;
170
+ TENANT_USER: string;
171
+ TENANT_USERS: string;
172
+ SIGNUP: string;
173
+ VERIFY_REQUEST: string;
174
+ PASSWORD_RESET: string;
175
+ };
176
+
177
+ interface NileBody<R, B> {
178
+ readonly body: ReadableStream<Uint8Array> | null | B;
179
+ readonly bodyUsed: boolean;
180
+ arrayBuffer(): Promise<ArrayBuffer>;
181
+ blob(): Promise<Blob>;
182
+ formData(): Promise<FormData>;
183
+ json(): Promise<R>;
184
+ text(): Promise<string>;
185
+ }
186
+ interface NRequest<T> extends NileBody<any, T> {
187
+ /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */
188
+ readonly cache: RequestCache;
189
+ /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */
190
+ readonly credentials: RequestCredentials;
191
+ /** Returns the kind of resource requested by request, e.g., "document" or "script". */
192
+ readonly destination: RequestDestination;
193
+ /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the "Host" header. */
194
+ readonly headers: Headers;
195
+ /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */
196
+ readonly integrity: string;
197
+ /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */
198
+ readonly keepalive: boolean;
199
+ /** Returns request's HTTP method, which is "GET" by default. */
200
+ readonly method: string;
201
+ /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */
202
+ readonly mode: RequestMode;
203
+ /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */
204
+ readonly redirect: RequestRedirect;
205
+ /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */
206
+ readonly referrer: string;
207
+ /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */
208
+ readonly referrerPolicy: ReferrerPolicy;
209
+ /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */
210
+ readonly signal: AbortSignal;
211
+ /** Returns the URL of request as a string. */
212
+ readonly url: string;
213
+ clone(): Request;
214
+ }
215
+ type NileRequest<T> = NRequest<T> | T;
216
+
217
+ declare class Auth extends Config {
218
+ headers?: Headers;
219
+ constructor(config: Config, headers?: Headers);
220
+ handleHeaders(init?: RequestInit): RequestInit | undefined;
221
+ get sessionUrl(): string;
222
+ session: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<Response | JWT | ActiveSession>;
223
+ }
224
+
225
+ declare class Tenants extends Config {
226
+ headers?: Headers;
227
+ constructor(config: Config, headers?: Headers);
228
+ handleHeaders(init?: RequestInit): RequestInit | undefined;
229
+ get tenantsUrl(): string;
230
+ get tenantUrl(): string;
231
+ createTenant: (req: NileRequest<{
232
+ name: string;
233
+ }> | Headers | string, init?: RequestInit) => Promise<Tenant | Response>;
234
+ getTenant: (req: NileRequest<{
235
+ id: string;
236
+ }> | Headers | string | void, init?: RequestInit) => Promise<Tenant | Response>;
237
+ get tenantListUrl(): string;
238
+ listTenants: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<Tenant[] | Response>;
239
+ deleteTenant: (req: NileRequest<void> | Headers | string, init?: RequestInit) => Promise<Response>;
240
+ updateTenant: (req: NileRequest<void> | Headers | {
241
+ name: string;
242
+ }, init?: RequestInit) => Promise<Tenant | Response>;
243
+ }
244
+
245
+ declare class Users extends Config {
246
+ headers?: Headers;
247
+ constructor(config: Config, headers?: Headers);
248
+ get usersUrl(): string;
249
+ get tenantUsersUrl(): string;
250
+ get linkUsersUrl(): string;
251
+ get tenantUserUrl(): string;
252
+ handleHeaders(init?: RequestInit): RequestInit | undefined;
253
+ createUser: (req: NileRequest<CreateBasicUserRequest>, init?: RequestInit) => Promise<User | Response>;
254
+ createTenantUser: (req: NileRequest<CreateBasicUserRequest>, init?: RequestInit) => Promise<User | Response>;
255
+ updateUser: (req: NileRequest<Partial<Omit<User, "email" | "tenants" | "created" | "updated">>>, init?: RequestInit) => Promise<User | Response>;
256
+ listUsers: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<User[] | Response>;
257
+ linkUser: (req: NileRequest<{
258
+ id: string;
259
+ tenantId?: string;
260
+ }> | Headers | string, init?: RequestInit) => Promise<User | Response>;
261
+ unlinkUser: (req: NileRequest<{
262
+ id: string;
263
+ tenantId?: string;
264
+ }> | Headers | string, init?: RequestInit) => Promise<Response>;
265
+ get meUrl(): string;
266
+ me: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<User | Response>;
267
+ updateMe: (req: NileRequest<Partial<Omit<User, "email" | "id" | "tenants" | "created" | "updated">>> | Headers, init?: RequestInit) => Promise<User | Response>;
268
+ }
269
+
270
+ declare class Api {
271
+ config: Config;
272
+ users: Users;
273
+ auth: Auth;
274
+ tenants: Tenants;
275
+ routes: Routes;
276
+ handlers: {
277
+ GET: (req: Request) => Promise<void | Response>;
278
+ POST: (req: Request) => Promise<void | Response>;
279
+ DELETE: (req: Request) => Promise<void | Response>;
280
+ PUT: (req: Request) => Promise<void | Response>;
281
+ };
282
+ paths: {
283
+ get: string[];
284
+ post: string[];
285
+ delete: string[];
286
+ put: string[];
287
+ };
288
+ constructor(config: Config);
289
+ updateConfig(config: Config): void;
290
+ set headers(headers: Headers);
291
+ login(payload: {
292
+ email: string;
293
+ password: string;
294
+ }): Promise<void>;
295
+ }
296
+
297
+ declare class Server {
298
+ config: Config;
299
+ api: Api;
300
+ private manager;
301
+ constructor(config?: ServerConfig);
302
+ setConfig(cfg: Config): void;
303
+ init(cfg?: Config): Promise<this>;
304
+ set databaseId(val: string | void);
305
+ get userId(): string | undefined | null;
306
+ set userId(userId: string | undefined | null);
307
+ get tenantId(): string | undefined | null;
308
+ set tenantId(tenantId: string | undefined | null);
309
+ get token(): string | undefined | null;
310
+ set token(token: string | undefined | null);
311
+ get db(): pg.Pool;
312
+ /**
313
+ * A convenience function that applies a config and ensures whatever was passed is set properly
314
+ */
315
+ getInstance(config: ServerConfig): Server;
316
+ }
317
+ declare function create(config?: ServerConfig): Promise<Server>;
318
+
319
+ 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 };