@sqrzro/server 2.0.0-bz.1 → 2.0.0-bz.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.
Files changed (51) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +25 -1
  3. package/auth.d.ts +1 -0
  4. package/auth.js +1 -0
  5. package/cache.d.ts +1 -0
  6. package/cache.js +1 -0
  7. package/dist/auth.d.ts +100 -0
  8. package/dist/auth.js +891 -0
  9. package/dist/cache.d.ts +4 -0
  10. package/dist/cache.js +46 -0
  11. package/dist/forms.d.ts +46 -0
  12. package/dist/forms.js +327 -0
  13. package/dist/lists.d.ts +18 -0
  14. package/dist/lists.js +61 -0
  15. package/dist/mail.d.ts +12 -0
  16. package/dist/mail.js +97 -0
  17. package/dist/middleware.d.ts +5 -0
  18. package/dist/middleware.js +66 -0
  19. package/dist/schema.d.ts +288 -0
  20. package/dist/schema.js +77 -0
  21. package/dist/url.d.ts +28 -0
  22. package/dist/url.js +56 -0
  23. package/forms.d.ts +1 -0
  24. package/forms.js +1 -0
  25. package/lists.d.ts +1 -0
  26. package/lists.js +1 -0
  27. package/mail.d.ts +1 -0
  28. package/mail.js +1 -0
  29. package/middleware.d.ts +1 -0
  30. package/middleware.js +1 -0
  31. package/package.json +67 -44
  32. package/schema.d.ts +1 -0
  33. package/schema.js +1 -0
  34. package/url.d.ts +1 -0
  35. package/url.js +1 -0
  36. package/dist/AuthService.d.ts +0 -10
  37. package/dist/AuthService.js +0 -36
  38. package/dist/DataService.d.ts +0 -29
  39. package/dist/DataService.js +0 -64
  40. package/dist/LoginRequest.d.ts +0 -4
  41. package/dist/LoginRequest.js +0 -11
  42. package/dist/PasswordService.d.ts +0 -6
  43. package/dist/PasswordService.js +0 -63
  44. package/dist/RequestService.d.ts +0 -21
  45. package/dist/RequestService.js +0 -121
  46. package/dist/SessionService.d.ts +0 -5
  47. package/dist/SessionService.js +0 -56
  48. package/dist/index.d.ts +0 -7
  49. package/dist/index.js +0 -10
  50. package/dist/interfaces.d.ts +0 -11
  51. package/dist/interfaces.js +0 -2
@@ -0,0 +1,288 @@
1
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
2
+
3
+ declare const mfaType: drizzle_orm_pg_core.PgEnum<["TOTP", "HARDWARE"]>;
4
+ declare const scope: drizzle_orm_pg_core.PgEnum<["ANON", "MFA", "AUTHED"]>;
5
+ type Scope = (typeof scope.enumValues)[number];
6
+ declare const authSchema: drizzle_orm_pg_core.PgSchema<"auth">;
7
+ declare const authUserTable: drizzle_orm_pg_core.PgTableWithColumns<{
8
+ name: "user_credentials";
9
+ schema: "auth";
10
+ columns: {
11
+ id: drizzle_orm_pg_core.PgColumn<{
12
+ name: "id";
13
+ tableName: "user_credentials";
14
+ dataType: "string";
15
+ columnType: "PgText";
16
+ data: string;
17
+ driverParam: string;
18
+ notNull: true;
19
+ hasDefault: false;
20
+ enumValues: [string, ...string[]];
21
+ baseColumn: never;
22
+ }, {}, {}>;
23
+ email: drizzle_orm_pg_core.PgColumn<{
24
+ name: "email";
25
+ tableName: "user_credentials";
26
+ dataType: "string";
27
+ columnType: "PgText";
28
+ data: string;
29
+ driverParam: string;
30
+ notNull: true;
31
+ hasDefault: false;
32
+ enumValues: [string, ...string[]];
33
+ baseColumn: never;
34
+ }, {}, {}>;
35
+ password: drizzle_orm_pg_core.PgColumn<{
36
+ name: "password";
37
+ tableName: "user_credentials";
38
+ dataType: "string";
39
+ columnType: "PgText";
40
+ data: string;
41
+ driverParam: string;
42
+ notNull: false;
43
+ hasDefault: false;
44
+ enumValues: [string, ...string[]];
45
+ baseColumn: never;
46
+ }, {}, {}>;
47
+ role: drizzle_orm_pg_core.PgColumn<{
48
+ name: "role";
49
+ tableName: "user_credentials";
50
+ dataType: "number";
51
+ columnType: "PgInteger";
52
+ data: number;
53
+ driverParam: string | number;
54
+ notNull: true;
55
+ hasDefault: true;
56
+ enumValues: undefined;
57
+ baseColumn: never;
58
+ }, {}, {}>;
59
+ };
60
+ dialect: "pg";
61
+ }>;
62
+ type AuthUser = typeof authUserTable.$inferSelect;
63
+ declare const authSessionTable: drizzle_orm_pg_core.PgTableWithColumns<{
64
+ name: "sessions";
65
+ schema: "auth";
66
+ columns: {
67
+ id: drizzle_orm_pg_core.PgColumn<{
68
+ name: "id";
69
+ tableName: "sessions";
70
+ dataType: "string";
71
+ columnType: "PgText";
72
+ data: string;
73
+ driverParam: string;
74
+ notNull: true;
75
+ hasDefault: false;
76
+ enumValues: [string, ...string[]];
77
+ baseColumn: never;
78
+ }, {}, {}>;
79
+ userId: drizzle_orm_pg_core.PgColumn<{
80
+ name: "userId";
81
+ tableName: "sessions";
82
+ dataType: "string";
83
+ columnType: "PgText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: true;
87
+ hasDefault: false;
88
+ enumValues: [string, ...string[]];
89
+ baseColumn: never;
90
+ }, {}, {}>;
91
+ scope: drizzle_orm_pg_core.PgColumn<{
92
+ name: "scope";
93
+ tableName: "sessions";
94
+ dataType: "string";
95
+ columnType: "PgEnumColumn";
96
+ data: "ANON" | "MFA" | "AUTHED";
97
+ driverParam: string;
98
+ notNull: true;
99
+ hasDefault: true;
100
+ enumValues: ["ANON", "MFA", "AUTHED"];
101
+ baseColumn: never;
102
+ }, {}, {}>;
103
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
104
+ name: "expiresAt";
105
+ tableName: "sessions";
106
+ dataType: "date";
107
+ columnType: "PgTimestamp";
108
+ data: Date;
109
+ driverParam: string;
110
+ notNull: true;
111
+ hasDefault: false;
112
+ enumValues: undefined;
113
+ baseColumn: never;
114
+ }, {}, {}>;
115
+ };
116
+ dialect: "pg";
117
+ }>;
118
+ type AuthSession = typeof authSessionTable.$inferSelect;
119
+ declare const authResetTable: drizzle_orm_pg_core.PgTableWithColumns<{
120
+ name: "resets";
121
+ schema: "auth";
122
+ columns: {
123
+ id: drizzle_orm_pg_core.PgColumn<{
124
+ name: "id";
125
+ tableName: "resets";
126
+ dataType: "string";
127
+ columnType: "PgText";
128
+ data: string;
129
+ driverParam: string;
130
+ notNull: true;
131
+ hasDefault: false;
132
+ enumValues: [string, ...string[]];
133
+ baseColumn: never;
134
+ }, {}, {}>;
135
+ userId: drizzle_orm_pg_core.PgColumn<{
136
+ name: "userId";
137
+ tableName: "resets";
138
+ dataType: "string";
139
+ columnType: "PgText";
140
+ data: string;
141
+ driverParam: string;
142
+ notNull: true;
143
+ hasDefault: false;
144
+ enumValues: [string, ...string[]];
145
+ baseColumn: never;
146
+ }, {}, {}>;
147
+ expiresAt: drizzle_orm_pg_core.PgColumn<{
148
+ name: "expiresAt";
149
+ tableName: "resets";
150
+ dataType: "date";
151
+ columnType: "PgTimestamp";
152
+ data: Date;
153
+ driverParam: string;
154
+ notNull: true;
155
+ hasDefault: false;
156
+ enumValues: undefined;
157
+ baseColumn: never;
158
+ }, {}, {}>;
159
+ };
160
+ dialect: "pg";
161
+ }>;
162
+ type AuthReset = typeof authResetTable.$inferSelect;
163
+ declare const authMFATable: drizzle_orm_pg_core.PgTableWithColumns<{
164
+ name: "mfas";
165
+ schema: "auth";
166
+ columns: {
167
+ id: drizzle_orm_pg_core.PgColumn<{
168
+ name: "id";
169
+ tableName: "mfas";
170
+ dataType: "string";
171
+ columnType: "PgText";
172
+ data: string;
173
+ driverParam: string;
174
+ notNull: true;
175
+ hasDefault: false;
176
+ enumValues: [string, ...string[]];
177
+ baseColumn: never;
178
+ }, {}, {}>;
179
+ name: drizzle_orm_pg_core.PgColumn<{
180
+ name: "name";
181
+ tableName: "mfas";
182
+ dataType: "string";
183
+ columnType: "PgText";
184
+ data: string;
185
+ driverParam: string;
186
+ notNull: true;
187
+ hasDefault: false;
188
+ enumValues: [string, ...string[]];
189
+ baseColumn: never;
190
+ }, {}, {}>;
191
+ userId: drizzle_orm_pg_core.PgColumn<{
192
+ name: "userId";
193
+ tableName: "mfas";
194
+ dataType: "string";
195
+ columnType: "PgText";
196
+ data: string;
197
+ driverParam: string;
198
+ notNull: true;
199
+ hasDefault: false;
200
+ enumValues: [string, ...string[]];
201
+ baseColumn: never;
202
+ }, {}, {}>;
203
+ type: drizzle_orm_pg_core.PgColumn<{
204
+ name: "type";
205
+ tableName: "mfas";
206
+ dataType: "string";
207
+ columnType: "PgEnumColumn";
208
+ data: "TOTP" | "HARDWARE";
209
+ driverParam: string;
210
+ notNull: true;
211
+ hasDefault: true;
212
+ enumValues: ["TOTP", "HARDWARE"];
213
+ baseColumn: never;
214
+ }, {}, {}>;
215
+ secret: drizzle_orm_pg_core.PgColumn<{
216
+ name: "secret";
217
+ tableName: "mfas";
218
+ dataType: "string";
219
+ columnType: "PgText";
220
+ data: string;
221
+ driverParam: string;
222
+ notNull: true;
223
+ hasDefault: false;
224
+ enumValues: [string, ...string[]];
225
+ baseColumn: never;
226
+ }, {}, {}>;
227
+ verifiedAt: drizzle_orm_pg_core.PgColumn<{
228
+ name: "verifiedAt";
229
+ tableName: "mfas";
230
+ dataType: "date";
231
+ columnType: "PgTimestamp";
232
+ data: Date;
233
+ driverParam: string;
234
+ notNull: false;
235
+ hasDefault: false;
236
+ enumValues: undefined;
237
+ baseColumn: never;
238
+ }, {}, {}>;
239
+ };
240
+ dialect: "pg";
241
+ }>;
242
+ type AuthMFA = typeof authMFATable.$inferSelect;
243
+ declare const authClientTable: drizzle_orm_pg_core.PgTableWithColumns<{
244
+ name: "client_credentials";
245
+ schema: "auth";
246
+ columns: {
247
+ id: drizzle_orm_pg_core.PgColumn<{
248
+ name: "id";
249
+ tableName: "client_credentials";
250
+ dataType: "string";
251
+ columnType: "PgText";
252
+ data: string;
253
+ driverParam: string;
254
+ notNull: true;
255
+ hasDefault: false;
256
+ enumValues: [string, ...string[]];
257
+ baseColumn: never;
258
+ }, {}, {}>;
259
+ alias: drizzle_orm_pg_core.PgColumn<{
260
+ name: "alias";
261
+ tableName: "client_credentials";
262
+ dataType: "string";
263
+ columnType: "PgText";
264
+ data: string;
265
+ driverParam: string;
266
+ notNull: true;
267
+ hasDefault: false;
268
+ enumValues: [string, ...string[]];
269
+ baseColumn: never;
270
+ }, {}, {}>;
271
+ secret: drizzle_orm_pg_core.PgColumn<{
272
+ name: "secret";
273
+ tableName: "client_credentials";
274
+ dataType: "string";
275
+ columnType: "PgText";
276
+ data: string;
277
+ driverParam: string;
278
+ notNull: true;
279
+ hasDefault: false;
280
+ enumValues: [string, ...string[]];
281
+ baseColumn: never;
282
+ }, {}, {}>;
283
+ };
284
+ dialect: "pg";
285
+ }>;
286
+ type AuthClient = typeof authClientTable.$inferSelect;
287
+
288
+ export { type AuthClient, type AuthMFA, type AuthReset, type AuthSession, type AuthUser, type Scope, authClientTable, authMFATable, authResetTable, authSchema, authSessionTable, authUserTable, mfaType, scope };
package/dist/schema.js ADDED
@@ -0,0 +1,77 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/database/schema.ts
20
+ var schema_exports = {};
21
+ __export(schema_exports, {
22
+ authClientTable: () => authClientTable,
23
+ authMFATable: () => authMFATable,
24
+ authResetTable: () => authResetTable,
25
+ authSchema: () => authSchema,
26
+ authSessionTable: () => authSessionTable,
27
+ authUserTable: () => authUserTable,
28
+ mfaType: () => mfaType,
29
+ scope: () => scope
30
+ });
31
+ module.exports = __toCommonJS(schema_exports);
32
+ var import_pg_core = require("drizzle-orm/pg-core");
33
+ var DEFAULT_ROLE = 10;
34
+ var mfaType = (0, import_pg_core.pgEnum)("mfaType", ["TOTP", "HARDWARE"]);
35
+ var scope = (0, import_pg_core.pgEnum)("scope", ["ANON", "MFA", "AUTHED"]);
36
+ var authSchema = (0, import_pg_core.pgSchema)("auth");
37
+ var authUserTable = authSchema.table("user_credentials", {
38
+ id: (0, import_pg_core.text)("id").primaryKey(),
39
+ email: (0, import_pg_core.text)("email").notNull().unique(),
40
+ password: (0, import_pg_core.text)("password"),
41
+ role: (0, import_pg_core.integer)("role").notNull().default(DEFAULT_ROLE)
42
+ });
43
+ var authSessionTable = authSchema.table("sessions", {
44
+ id: (0, import_pg_core.text)("id").primaryKey(),
45
+ userId: (0, import_pg_core.text)("userId").notNull().references(() => authUserTable.id),
46
+ scope: scope("scope").notNull().default("ANON"),
47
+ expiresAt: (0, import_pg_core.timestamp)("expiresAt").notNull()
48
+ });
49
+ var authResetTable = authSchema.table("resets", {
50
+ id: (0, import_pg_core.text)("id").primaryKey(),
51
+ userId: (0, import_pg_core.text)("userId").notNull().references(() => authUserTable.id),
52
+ expiresAt: (0, import_pg_core.timestamp)("expiresAt").notNull()
53
+ });
54
+ var authMFATable = authSchema.table("mfas", {
55
+ id: (0, import_pg_core.text)("id").primaryKey(),
56
+ name: (0, import_pg_core.text)("name").notNull(),
57
+ userId: (0, import_pg_core.text)("userId").notNull().references(() => authUserTable.id),
58
+ type: mfaType("type").notNull().default("TOTP"),
59
+ secret: (0, import_pg_core.text)("secret").notNull(),
60
+ verifiedAt: (0, import_pg_core.timestamp)("verifiedAt")
61
+ });
62
+ var authClientTable = authSchema.table("client_credentials", {
63
+ id: (0, import_pg_core.text)("id").primaryKey(),
64
+ alias: (0, import_pg_core.text)("alias").notNull().unique(),
65
+ secret: (0, import_pg_core.text)("secret").notNull().unique()
66
+ });
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ authClientTable,
70
+ authMFATable,
71
+ authResetTable,
72
+ authSchema,
73
+ authSessionTable,
74
+ authUserTable,
75
+ mfaType,
76
+ scope
77
+ });
package/dist/url.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Uses a number of methods to determine the current origin.
3
+ *
4
+ * First, it checks if an `x-origin` header. This will have been set by the `handleMiddleware`
5
+ * function, further up the chain. For more information on how it is being set, see the
6
+ * `middleware` documentation.
7
+ *
8
+ * There are some situations where middleware is not being applied, such as API routes (because the
9
+ * redirection is not necessary, and API routes handle their own authentication). In these cases,
10
+ * this function tries to piece together the origin from the `x-forwarded-proto` and
11
+ * `x-forwarded-host` headers.
12
+ *
13
+ * Finally, if the origin cannot be determined, an error is thrown.
14
+ *
15
+ * @returns The origin of the current request.
16
+ */
17
+ declare function getOrigin(): string;
18
+ /**
19
+ * Builds a URL from the current origin and a given pathname. For more information on how the origin
20
+ * is determined, see the `getOrigin` function. This function then just concatenates the origin and
21
+ * the pathname, and performs some cleanup to ensure the URL is valid.
22
+ *
23
+ * @param pathname
24
+ * @returns The URL, with the origin and pathname combined.
25
+ */
26
+ declare function getURL(pathname?: string): string;
27
+
28
+ export { getOrigin, getURL };
package/dist/url.js ADDED
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/url/index.ts
20
+ var url_exports = {};
21
+ __export(url_exports, {
22
+ getOrigin: () => getOrigin,
23
+ getURL: () => getURL
24
+ });
25
+ module.exports = __toCommonJS(url_exports);
26
+
27
+ // src/url/URLService.ts
28
+ var import_headers = require("next/headers");
29
+ function getOrigin() {
30
+ const origin = (0, import_headers.headers)().get("x-origin");
31
+ if (origin) {
32
+ return origin;
33
+ }
34
+ const proto = (0, import_headers.headers)().get("x-forwarded-proto");
35
+ const host = (0, import_headers.headers)().get("x-forwarded-host");
36
+ if (proto && host) {
37
+ return `${proto}://${host}`;
38
+ }
39
+ throw new Error("No origin could be determined");
40
+ }
41
+ function getURL(pathname) {
42
+ const origin = getOrigin();
43
+ if (!pathname) {
44
+ return origin;
45
+ }
46
+ const isSecure = origin.startsWith("https://");
47
+ const protocol = isSecure ? "https://" : "http://";
48
+ const originWithoutProtocol = origin.replace(/^https?:\/\//u, "");
49
+ const cleanURL = `${originWithoutProtocol}/${pathname}`.replace(/\/+/gu, "/");
50
+ return `${protocol}${cleanURL}`;
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ getOrigin,
55
+ getURL
56
+ });
package/forms.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/forms/index';
package/forms.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/forms/index');
package/lists.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/lists/index';
package/lists.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/lists/index');
package/mail.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/mail/index';
package/mail.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/mail/index');
@@ -0,0 +1 @@
1
+ export * from './dist/middleware';
package/middleware.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/middleware');
package/package.json CHANGED
@@ -1,45 +1,68 @@
1
1
  {
2
- "name": "@sqrzro/server",
3
- "version": "2.0.0-bz.1",
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
6
- "exports": {
7
- ".": "./dist/index.js"
8
- },
9
- "license": "ISC",
10
- "files": [
11
- "dist"
12
- ],
13
- "dependencies": {
14
- "@sqrzro/utility": "workspace:bz",
15
- "bcryptjs": "^2.4.3",
16
- "joi": "^17.11.0",
17
- "jose": "^5.0.1",
18
- "next": "^14.0.0",
19
- "react": "^18.2.0",
20
- "react-dom": "^18.2.0",
21
- "uuid": "^9.0.1"
22
- },
23
- "devDependencies": {
24
- "@sqrzro/eslint-plugin": "workspace:bz",
25
- "@sqrzro/prettier-config": "workspace:bz",
26
- "@types/bcryptjs": "^2.4.6",
27
- "@types/react": "^18.0.28",
28
- "@types/uuid": "^9.0.7",
29
- "esbuild": "^0.19.5",
30
- "eslint": "^8.55.0",
31
- "prettier": "^2.8.4",
32
- "rimraf": "^4.1.2",
33
- "tslib": "^2.3.1",
34
- "typescript": "^5.2.2"
35
- },
36
- "scripts": {
37
- "build": "pnpm clean && tsc --project tsconfig.build.json",
38
- "clean": "rimraf ./dist",
39
- "dev": "tsc -p tsconfig.build.json -w",
40
- "lint": "tsc --noEmit && eslint \"./src/**/*.ts\"",
41
- "prepublishOnly": "pnpm build",
42
- "prettier": "prettier --write \"./src/**/*.ts\"",
43
- "start": "pnpm dev"
44
- }
45
- }
2
+ "name": "@sqrzro/server",
3
+ "version": "2.0.0-bz.11",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "license": "ISC",
7
+ "files": [
8
+ "dist",
9
+ "auth.d.ts",
10
+ "auth.js",
11
+ "cache.d.ts",
12
+ "cache.js",
13
+ "forms.d.ts",
14
+ "forms.js",
15
+ "lists.d.ts",
16
+ "lists.js",
17
+ "mail.d.ts",
18
+ "mail.js",
19
+ "middleware.d.ts",
20
+ "middleware.js",
21
+ "schema.d.ts",
22
+ "schema.js",
23
+ "url.d.ts",
24
+ "url.js"
25
+ ],
26
+ "dependencies": {
27
+ "@lucia-auth/adapter-drizzle": "^1.0.2",
28
+ "@sqrzro/interfaces": "bz",
29
+ "@sqrzro/utility": "bz",
30
+ "bcryptjs": "^2.4.3",
31
+ "drizzle-orm": "^0.29.5",
32
+ "joi": "^17.12.2",
33
+ "jsonwebtoken": "^9.0.2",
34
+ "lucia": "^3.0.1",
35
+ "next": "^14.1.3",
36
+ "otplib": "^12.0.1",
37
+ "path-to-regexp": "^6.2.1",
38
+ "postgres": "^3.4.3",
39
+ "qrcode": "^1.5.3",
40
+ "react-dom": "18.3.0-canary-98b8359f6-20240223",
41
+ "redis": "^4.6.13"
42
+ },
43
+ "devDependencies": {
44
+ "@sqrzro/eslint-plugin": "bz",
45
+ "@sqrzro/prettier-config": "bz",
46
+ "@types/bcryptjs": "^2.4.6",
47
+ "@types/jest": "^29.5.12",
48
+ "@types/qrcode": "^1.5.5",
49
+ "@types/react-dom": "^18.2.21",
50
+ "eslint": "^8.57.0",
51
+ "jest": "^29.7.0",
52
+ "prettier": "^3.2.5",
53
+ "rimraf": "^4.4.1",
54
+ "ts-jest": "^29.1.2",
55
+ "tslib": "^2.6.2",
56
+ "tsup": "^8.0.2",
57
+ "typescript": "^5.4.2"
58
+ },
59
+ "scripts": {
60
+ "build": "pnpm clean && tsup --entry.auth src/auth/index.ts --entry.cache src/cache/index.ts --entry.forms src/forms/index.ts --entry.lists src/lists/index.ts --entry.mail src/mail/index.ts --entry.middleware src/middleware.ts --entry.schema src/database/schema.ts --entry.url src/url/index.ts --dts",
61
+ "clean": "rimraf ./dist",
62
+ "dev": "tsc -p tsconfig.build.json -w",
63
+ "lint": "tsc --noEmit && eslint \"./src/**/*.ts\"",
64
+ "prettier": "prettier --write \"./src/**/*.ts\"",
65
+ "start": "pnpm dev",
66
+ "test": "jest"
67
+ }
68
+ }
package/schema.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/database/schema';
package/schema.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/database/schema');
package/url.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './dist/url/index';
package/url.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/url/index');
@@ -1,10 +0,0 @@
1
- import type { NextRequest } from 'next/server';
2
- import { NextResponse } from 'next/server';
3
- import type { Errorable, UserObject } from './interfaces';
4
- export declare function handleLogin(formData: FormData, lookupFn: (email: string) => Promise<UserObject | null>): Promise<Errorable<UserObject>>;
5
- interface MeObject {
6
- name: string;
7
- email: string;
8
- }
9
- export declare function handleMe(request: NextRequest, lookupFn: (id: number) => Promise<MeObject | null>): Promise<NextResponse>;
10
- export {};
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleMe = exports.handleLogin = void 0;
4
- const tslib_1 = require("tslib");
5
- const server_1 = require("next/server");
6
- const DataService_1 = require("./DataService");
7
- const PasswordService_1 = require("./PasswordService");
8
- const SessionService_1 = require("./SessionService");
9
- const LoginRequest_1 = tslib_1.__importDefault(require("./LoginRequest"));
10
- async function handleLogin(formData, lookupFn) {
11
- async function mutateFn(data) {
12
- const user = await lookupFn(data.email);
13
- const isUserValid = await (0, PasswordService_1.verifyPassword)(data.password, user?.password);
14
- return user && isUserValid ? user : null;
15
- }
16
- const response = await (0, DataService_1.mutate)({
17
- fn: mutateFn,
18
- formData,
19
- request: LoginRequest_1.default,
20
- onSuccess: async (user) => {
21
- await (0, SessionService_1.createSessionForId)(user.id);
22
- },
23
- });
24
- return response;
25
- }
26
- exports.handleLogin = handleLogin;
27
- async function handleMe(request, lookupFn) {
28
- const token = new URL(request.url).searchParams.get('token');
29
- const userId = await (0, SessionService_1.getIdFromToken)(token);
30
- const me = await lookupFn(userId);
31
- if (!me) {
32
- return server_1.NextResponse.json({ valid: false }, { status: 401 });
33
- }
34
- return server_1.NextResponse.json({ name: me.name, email: me.email, valid: true });
35
- }
36
- exports.handleMe = handleMe;