@niledatabase/server 3.0.0-alpha.44 → 3.0.0-alpha.46
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 +10 -8
- package/dist/index.d.ts +10 -8
- package/dist/index.js +71 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +71 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -70,13 +70,13 @@ interface LoginUserResponse {
|
|
|
70
70
|
interface User {
|
|
71
71
|
id: string;
|
|
72
72
|
email: string;
|
|
73
|
-
name
|
|
74
|
-
familyName
|
|
75
|
-
givenName
|
|
76
|
-
picture
|
|
73
|
+
name?: string | null;
|
|
74
|
+
familyName?: string | null;
|
|
75
|
+
givenName?: string | null;
|
|
76
|
+
picture?: string | null;
|
|
77
77
|
created: string;
|
|
78
|
-
updated
|
|
79
|
-
emailVerified
|
|
78
|
+
updated?: string;
|
|
79
|
+
emailVerified?: string | null;
|
|
80
80
|
tenants: {
|
|
81
81
|
id: string;
|
|
82
82
|
}[];
|
|
@@ -145,7 +145,7 @@ type JWT = {
|
|
|
145
145
|
type ActiveSession = {
|
|
146
146
|
id: string;
|
|
147
147
|
email: string;
|
|
148
|
-
expires:
|
|
148
|
+
expires: string;
|
|
149
149
|
user?: {
|
|
150
150
|
id: string;
|
|
151
151
|
name: string;
|
|
@@ -219,7 +219,7 @@ declare class Auth extends Config {
|
|
|
219
219
|
constructor(config: Config, headers?: Headers);
|
|
220
220
|
handleHeaders(init?: RequestInit): RequestInit | undefined;
|
|
221
221
|
get sessionUrl(): string;
|
|
222
|
-
|
|
222
|
+
getSession: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<JWT | ActiveSession | Response | undefined>;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
declare class Tenants extends Config {
|
|
@@ -273,6 +273,7 @@ declare class Api {
|
|
|
273
273
|
auth: Auth;
|
|
274
274
|
tenants: Tenants;
|
|
275
275
|
routes: Routes;
|
|
276
|
+
_headers: undefined | Headers;
|
|
276
277
|
handlers: {
|
|
277
278
|
GET: (req: Request) => Promise<void | Response>;
|
|
278
279
|
POST: (req: Request) => Promise<void | Response>;
|
|
@@ -292,6 +293,7 @@ declare class Api {
|
|
|
292
293
|
email: string;
|
|
293
294
|
password: string;
|
|
294
295
|
}): Promise<void>;
|
|
296
|
+
session(req?: Request | Headers | null | undefined): Promise<Response | JWT | ActiveSession | null | undefined>;
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
declare class Server {
|
package/dist/index.d.ts
CHANGED
|
@@ -70,13 +70,13 @@ interface LoginUserResponse {
|
|
|
70
70
|
interface User {
|
|
71
71
|
id: string;
|
|
72
72
|
email: string;
|
|
73
|
-
name
|
|
74
|
-
familyName
|
|
75
|
-
givenName
|
|
76
|
-
picture
|
|
73
|
+
name?: string | null;
|
|
74
|
+
familyName?: string | null;
|
|
75
|
+
givenName?: string | null;
|
|
76
|
+
picture?: string | null;
|
|
77
77
|
created: string;
|
|
78
|
-
updated
|
|
79
|
-
emailVerified
|
|
78
|
+
updated?: string;
|
|
79
|
+
emailVerified?: string | null;
|
|
80
80
|
tenants: {
|
|
81
81
|
id: string;
|
|
82
82
|
}[];
|
|
@@ -145,7 +145,7 @@ type JWT = {
|
|
|
145
145
|
type ActiveSession = {
|
|
146
146
|
id: string;
|
|
147
147
|
email: string;
|
|
148
|
-
expires:
|
|
148
|
+
expires: string;
|
|
149
149
|
user?: {
|
|
150
150
|
id: string;
|
|
151
151
|
name: string;
|
|
@@ -219,7 +219,7 @@ declare class Auth extends Config {
|
|
|
219
219
|
constructor(config: Config, headers?: Headers);
|
|
220
220
|
handleHeaders(init?: RequestInit): RequestInit | undefined;
|
|
221
221
|
get sessionUrl(): string;
|
|
222
|
-
|
|
222
|
+
getSession: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<JWT | ActiveSession | Response | undefined>;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
declare class Tenants extends Config {
|
|
@@ -273,6 +273,7 @@ declare class Api {
|
|
|
273
273
|
auth: Auth;
|
|
274
274
|
tenants: Tenants;
|
|
275
275
|
routes: Routes;
|
|
276
|
+
_headers: undefined | Headers;
|
|
276
277
|
handlers: {
|
|
277
278
|
GET: (req: Request) => Promise<void | Response>;
|
|
278
279
|
POST: (req: Request) => Promise<void | Response>;
|
|
@@ -292,6 +293,7 @@ declare class Api {
|
|
|
292
293
|
email: string;
|
|
293
294
|
password: string;
|
|
294
295
|
}): Promise<void>;
|
|
296
|
+
session(req?: Request | Headers | null | undefined): Promise<Response | JWT | ActiveSession | null | undefined>;
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
declare class Server {
|
package/dist/index.js
CHANGED
|
@@ -132,6 +132,11 @@ var getDatabaseId = (cfg) => {
|
|
|
132
132
|
logger && info(`${logger}[config] ${config?.databaseId}`);
|
|
133
133
|
return String(config?.databaseId);
|
|
134
134
|
}
|
|
135
|
+
const dbFromEnv = stringCheck(process.env.NILEDB_ID);
|
|
136
|
+
if (dbFromEnv) {
|
|
137
|
+
logger && info(`${logger}[NILEDB_ID] ${dbFromEnv}`);
|
|
138
|
+
return dbFromEnv;
|
|
139
|
+
}
|
|
135
140
|
const dbId = stringCheck(process.env.NILEDB_API_URL);
|
|
136
141
|
if (dbId) {
|
|
137
142
|
try {
|
|
@@ -140,8 +145,7 @@ var getDatabaseId = (cfg) => {
|
|
|
140
145
|
} catch (e) {
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
|
-
|
|
144
|
-
return process.env.NILEDB_ID;
|
|
148
|
+
return null;
|
|
145
149
|
};
|
|
146
150
|
var getUsername = (cfg) => {
|
|
147
151
|
const { config, logger } = cfg;
|
|
@@ -150,15 +154,22 @@ var getUsername = (cfg) => {
|
|
|
150
154
|
logger && info(`${logger}[config] ${config.user}`);
|
|
151
155
|
return String(config?.user);
|
|
152
156
|
}
|
|
157
|
+
const user = stringCheck(process.env.NILEDB_USER);
|
|
158
|
+
if (user) {
|
|
159
|
+
logger && info(`${logger}[NILEDB_USER] ${user}`);
|
|
160
|
+
return user;
|
|
161
|
+
}
|
|
153
162
|
const pg2 = stringCheck(process.env.NILEDB_POSTGRES_URL);
|
|
154
163
|
if (pg2) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
164
|
+
try {
|
|
165
|
+
const url = new URL(pg2);
|
|
166
|
+
if (url.username) {
|
|
167
|
+
return url.username;
|
|
168
|
+
}
|
|
169
|
+
} catch (e) {
|
|
158
170
|
}
|
|
159
171
|
}
|
|
160
|
-
|
|
161
|
-
return process.env.NILEDB_USER;
|
|
172
|
+
return void 0;
|
|
162
173
|
};
|
|
163
174
|
var getPassword = (cfg) => {
|
|
164
175
|
const { config, logger } = cfg;
|
|
@@ -168,15 +179,22 @@ var getPassword = (cfg) => {
|
|
|
168
179
|
log && info(`${logger}[config] ${config?.password}`);
|
|
169
180
|
return String(config?.password);
|
|
170
181
|
}
|
|
182
|
+
const pass = stringCheck(process.env.NILEDB_PASSWORD);
|
|
183
|
+
if (pass) {
|
|
184
|
+
logger && info(`${logger}[NILEDB_PASSWORD] ${pass}`);
|
|
185
|
+
return pass;
|
|
186
|
+
}
|
|
171
187
|
const pg2 = stringCheck(process.env.NILEDB_POSTGRES_URL);
|
|
172
188
|
if (pg2) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
189
|
+
try {
|
|
190
|
+
const url = new URL(pg2);
|
|
191
|
+
if (url.password) {
|
|
192
|
+
return url.password;
|
|
193
|
+
}
|
|
194
|
+
} catch (e) {
|
|
176
195
|
}
|
|
177
196
|
}
|
|
178
|
-
|
|
179
|
-
return process.env.NILEDB_PASSWORD;
|
|
197
|
+
return void 0;
|
|
180
198
|
};
|
|
181
199
|
var getInfoBearer = (cfg) => {
|
|
182
200
|
return `${getUsername(cfg)}:${getPassword(cfg)}`;
|
|
@@ -190,8 +208,8 @@ var getToken = (cfg) => {
|
|
|
190
208
|
}
|
|
191
209
|
const token = stringCheck(process.env.NILEDB_TOKEN);
|
|
192
210
|
if (token) {
|
|
193
|
-
logger && info(`${logger}[NILEDB_TOKEN] ${
|
|
194
|
-
return
|
|
211
|
+
logger && info(`${logger}[NILEDB_TOKEN] ${token}`);
|
|
212
|
+
return token;
|
|
195
213
|
}
|
|
196
214
|
return void 0;
|
|
197
215
|
};
|
|
@@ -204,8 +222,8 @@ var getDatabaseName = (cfg) => {
|
|
|
204
222
|
}
|
|
205
223
|
const name = stringCheck(process.env.NILEDB_NAME);
|
|
206
224
|
if (name) {
|
|
207
|
-
logger && info(`${logger}[NILEDB_NAME] ${
|
|
208
|
-
return
|
|
225
|
+
logger && info(`${logger}[NILEDB_NAME] ${name}`);
|
|
226
|
+
return name;
|
|
209
227
|
}
|
|
210
228
|
if (process.env.NILEDB_POSTGRES_URL) {
|
|
211
229
|
try {
|
|
@@ -277,6 +295,10 @@ function getDbHost(cfg) {
|
|
|
277
295
|
logger && info(`${logger}[config] ${config?.db?.host}`);
|
|
278
296
|
return String(config?.db?.host);
|
|
279
297
|
}
|
|
298
|
+
if (stringCheck(process.env.NILEDB_HOST)) {
|
|
299
|
+
logger && info(`${logger}[NILEDB_HOST] ${process.env.NILEDB_HOST}`);
|
|
300
|
+
return process.env.NILEDB_HOST;
|
|
301
|
+
}
|
|
280
302
|
const pg2 = stringCheck(process.env.NILEDB_POSTGRES_URL);
|
|
281
303
|
if (pg2) {
|
|
282
304
|
try {
|
|
@@ -286,10 +308,6 @@ function getDbHost(cfg) {
|
|
|
286
308
|
} catch (e) {
|
|
287
309
|
}
|
|
288
310
|
}
|
|
289
|
-
if (stringCheck(process.env.NILEDB_HOST)) {
|
|
290
|
-
logger && info(`${logger}[NILEDB_HOST] ${process.env.NILEDB_HOST}`);
|
|
291
|
-
return process.env.NILEDB_HOST;
|
|
292
|
-
}
|
|
293
311
|
logger && info(`${logger}[default] db.thenile.dev`);
|
|
294
312
|
return "db.thenile.dev";
|
|
295
313
|
}
|
|
@@ -516,10 +534,17 @@ async function request(url, _init, config) {
|
|
|
516
534
|
updatedHeaders.set("niledb-origin", requestUrl.origin);
|
|
517
535
|
const params = { ...init, headers: updatedHeaders };
|
|
518
536
|
if (params.method === "POST" || params.method === "PUT") {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
537
|
+
try {
|
|
538
|
+
updatedHeaders.set("content-type", "application/json");
|
|
539
|
+
const initBody = await new Response(_init.request.clone().body).json();
|
|
540
|
+
const requestBody = await new Response(request2.clone().body).json();
|
|
541
|
+
params.body = JSON.stringify(initBody ?? requestBody);
|
|
542
|
+
} catch (e) {
|
|
543
|
+
updatedHeaders.set("content-type", "application/x-www-form-urlencoded");
|
|
544
|
+
const initBody = await new Response(_init.request.clone().body).text();
|
|
545
|
+
const requestBody = await new Response(request2.clone().body).text();
|
|
546
|
+
params.body = initBody ?? requestBody;
|
|
547
|
+
}
|
|
523
548
|
}
|
|
524
549
|
try {
|
|
525
550
|
const res = await fetch(url, { ...params }).catch((e) => {
|
|
@@ -567,7 +592,11 @@ async function auth(req, config) {
|
|
|
567
592
|
}
|
|
568
593
|
info("session active");
|
|
569
594
|
try {
|
|
570
|
-
|
|
595
|
+
const session = await new Response(res.body).json();
|
|
596
|
+
if (Object.keys(session).length === 0) {
|
|
597
|
+
return void 0;
|
|
598
|
+
}
|
|
599
|
+
return session;
|
|
571
600
|
} catch (e) {
|
|
572
601
|
error(e);
|
|
573
602
|
return void 0;
|
|
@@ -1322,9 +1351,6 @@ async function route5(req, config) {
|
|
|
1322
1351
|
headers: req.headers
|
|
1323
1352
|
};
|
|
1324
1353
|
if (req.method === "POST") {
|
|
1325
|
-
if (typeof req.clone === "function") {
|
|
1326
|
-
init.body = req.clone().body;
|
|
1327
|
-
}
|
|
1328
1354
|
const [provider] = new URL(req.url).pathname.split("/").reverse();
|
|
1329
1355
|
url = `${proxyRoutes(config)[key5]}/${provider}`;
|
|
1330
1356
|
}
|
|
@@ -1386,17 +1412,15 @@ function matches8(configRoutes, request2) {
|
|
|
1386
1412
|
// src/api/routes/auth/callback.ts
|
|
1387
1413
|
var key6 = "CALLBACK";
|
|
1388
1414
|
async function route9(req, config) {
|
|
1389
|
-
const {
|
|
1415
|
+
const { error } = Logger(
|
|
1390
1416
|
{ ...config, debug: config.debug },
|
|
1391
1417
|
`[ROUTES][${key6}]`
|
|
1392
1418
|
);
|
|
1393
1419
|
const [provider] = new URL(req.url).pathname.split("/").reverse();
|
|
1394
|
-
debug(provider);
|
|
1395
1420
|
try {
|
|
1396
1421
|
const passThroughUrl = new URL(req.url);
|
|
1397
1422
|
const params = new URLSearchParams(passThroughUrl.search);
|
|
1398
1423
|
const url = `${proxyRoutes(config)[key6]}/${provider}${params.toString() !== "" ? `?${params.toString()}` : ""}`;
|
|
1399
|
-
debug("params", { params, passThroughUrl, url, req });
|
|
1400
1424
|
const res = await request(
|
|
1401
1425
|
url,
|
|
1402
1426
|
{
|
|
@@ -1407,7 +1431,6 @@ async function route9(req, config) {
|
|
|
1407
1431
|
).catch((e) => {
|
|
1408
1432
|
error("an error as occurred", e);
|
|
1409
1433
|
});
|
|
1410
|
-
debug("did the res come back?", { res });
|
|
1411
1434
|
const location = res?.headers.get("location");
|
|
1412
1435
|
if (location) {
|
|
1413
1436
|
return new Response(res?.body, {
|
|
@@ -1948,10 +1971,14 @@ var Auth = class extends Config {
|
|
|
1948
1971
|
get sessionUrl() {
|
|
1949
1972
|
return "/auth/session";
|
|
1950
1973
|
}
|
|
1951
|
-
|
|
1974
|
+
getSession = async (req, init) => {
|
|
1952
1975
|
const _requester = new Requester(this);
|
|
1953
1976
|
const _init = this.handleHeaders(init);
|
|
1954
|
-
|
|
1977
|
+
const session = await _requester.get(req, this.sessionUrl, _init);
|
|
1978
|
+
if (Object.keys(session).length === 0) {
|
|
1979
|
+
return void 0;
|
|
1980
|
+
}
|
|
1981
|
+
return session;
|
|
1955
1982
|
};
|
|
1956
1983
|
};
|
|
1957
1984
|
|
|
@@ -2154,6 +2181,7 @@ var Api = class {
|
|
|
2154
2181
|
auth;
|
|
2155
2182
|
tenants;
|
|
2156
2183
|
routes;
|
|
2184
|
+
_headers;
|
|
2157
2185
|
handlers;
|
|
2158
2186
|
paths;
|
|
2159
2187
|
constructor(config) {
|
|
@@ -2212,10 +2240,19 @@ var Api = class {
|
|
|
2212
2240
|
this.users = new Users(this.config, headers);
|
|
2213
2241
|
this.tenants = new Tenants(this.config, headers);
|
|
2214
2242
|
this.auth = new Auth(this.config, headers);
|
|
2243
|
+
this._headers = headers;
|
|
2215
2244
|
}
|
|
2216
2245
|
async login(payload) {
|
|
2217
2246
|
this.headers = await serverLogin(this.config, this.handlers)(payload);
|
|
2218
2247
|
}
|
|
2248
|
+
async session(req) {
|
|
2249
|
+
if (req instanceof Headers) {
|
|
2250
|
+
return this.auth.getSession(req);
|
|
2251
|
+
} else if (req instanceof Request) {
|
|
2252
|
+
return auth(req, this.config);
|
|
2253
|
+
}
|
|
2254
|
+
return this.auth.getSession(this._headers);
|
|
2255
|
+
}
|
|
2219
2256
|
};
|
|
2220
2257
|
|
|
2221
2258
|
// src/Server.ts
|