@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 CHANGED
@@ -70,13 +70,13 @@ interface LoginUserResponse {
70
70
  interface User {
71
71
  id: string;
72
72
  email: string;
73
- name: string | null;
74
- familyName: string | null;
75
- givenName: string | null;
76
- picture: string | null;
73
+ name?: string | null;
74
+ familyName?: string | null;
75
+ givenName?: string | null;
76
+ picture?: string | null;
77
77
  created: string;
78
- updated: string;
79
- emailVerified: boolean | null;
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: Date;
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
- session: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<Response | JWT | ActiveSession>;
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: string | null;
74
- familyName: string | null;
75
- givenName: string | null;
76
- picture: string | null;
73
+ name?: string | null;
74
+ familyName?: string | null;
75
+ givenName?: string | null;
76
+ picture?: string | null;
77
77
  created: string;
78
- updated: string;
79
- emailVerified: boolean | null;
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: Date;
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
- session: (req: NileRequest<void> | Headers, init?: RequestInit) => Promise<Response | JWT | ActiveSession>;
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
- logger && info(`${logger}[NILEDB_ID] ${String(process.env.NILEDB_ID)}`);
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
- const url = new URL(pg2);
156
- if (url.username) {
157
- return url.username;
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
- logger && info(`${logger}[NILEDB_USER] ${String(process.env.NILEDB_USER)}`);
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
- const url = new URL(pg2);
174
- if (url.password) {
175
- return url.password;
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
- logger && info(`${logger}[NILEDB_PASSWORD] ${String(process.env.NILEDB_PASSWORD)}`);
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] ${process.env.NILEDB_TOKEN}`);
194
- return process.env.NILEDB_TOKEN;
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] ${process.env.NILEDB_NAME}`);
208
- return process.env.NILEDB_NAME;
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
- updatedHeaders.set("content-type", "application/json");
520
- const initBody = await new Response(_init.request.clone().body).json();
521
- const requestBody = await new Response(request2.clone().body).json();
522
- params.body = JSON.stringify(initBody ?? requestBody);
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
- return await new Response(res.body).json();
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 { debug, error } = Logger(
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
- session = async (req, init) => {
1974
+ getSession = async (req, init) => {
1952
1975
  const _requester = new Requester(this);
1953
1976
  const _init = this.handleHeaders(init);
1954
- return await _requester.get(req, this.sessionUrl, _init);
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