@prosopo/client-example-server 2.7.122 → 2.7.124

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 (68) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +15 -31
  2. package/.turbo/turbo-build$colon$tsc.log +21 -21
  3. package/.turbo/turbo-build.log +16 -31
  4. package/CHANGELOG.md +35 -0
  5. package/dist/_virtual/_rolldown/runtime.js +3 -0
  6. package/dist/app.d.ts +15 -1
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +122 -93
  9. package/dist/app.js.map +1 -1
  10. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  11. package/dist/cjs/app.cjs +148 -106
  12. package/dist/cjs/controllers/auth.cjs +180 -244
  13. package/dist/cjs/models/user.cjs +21 -22
  14. package/dist/cjs/routes/routes.cjs +21 -24
  15. package/dist/cjs/utils/connection.cjs +20 -23
  16. package/dist/cjs/utils/database.cjs +3 -28
  17. package/dist/controllers/auth.d.ts +1 -1
  18. package/dist/controllers/auth.d.ts.map +1 -1
  19. package/dist/controllers/auth.js +173 -241
  20. package/dist/controllers/auth.js.map +1 -1
  21. package/dist/models/user.d.ts +2 -2
  22. package/dist/models/user.js +18 -22
  23. package/dist/routes/routes.d.ts.map +1 -1
  24. package/dist/routes/routes.js +18 -24
  25. package/dist/routes/routes.js.map +1 -1
  26. package/dist/tests/app.unit.test.d.ts +2 -0
  27. package/dist/tests/app.unit.test.d.ts.map +1 -0
  28. package/dist/tests/app.unit.test.js +318 -0
  29. package/dist/tests/app.unit.test.js.map +1 -0
  30. package/dist/tests/appEntrypoint.unit.test.d.ts +2 -0
  31. package/dist/tests/appEntrypoint.unit.test.d.ts.map +1 -0
  32. package/dist/tests/appEntrypoint.unit.test.js +100 -0
  33. package/dist/tests/appEntrypoint.unit.test.js.map +1 -0
  34. package/dist/tests/auth.unit.test.d.ts +2 -0
  35. package/dist/tests/auth.unit.test.d.ts.map +1 -0
  36. package/dist/tests/auth.unit.test.js +426 -0
  37. package/dist/tests/auth.unit.test.js.map +1 -0
  38. package/dist/tests/authHarness.d.ts +40 -0
  39. package/dist/tests/authHarness.d.ts.map +1 -0
  40. package/dist/tests/authHarness.js +57 -0
  41. package/dist/tests/authHarness.js.map +1 -0
  42. package/dist/tests/clientExampleServer.test-d.d.ts +2 -0
  43. package/dist/tests/clientExampleServer.test-d.d.ts.map +1 -0
  44. package/dist/tests/clientExampleServer.test-d.js +84 -0
  45. package/dist/tests/clientExampleServer.test-d.js.map +1 -0
  46. package/dist/tests/routes.unit.test.d.ts +2 -0
  47. package/dist/tests/routes.unit.test.d.ts.map +1 -0
  48. package/dist/tests/routes.unit.test.js +123 -0
  49. package/dist/tests/routes.unit.test.js.map +1 -0
  50. package/dist/tests/utils.unit.test.d.ts +2 -0
  51. package/dist/tests/utils.unit.test.d.ts.map +1 -0
  52. package/dist/tests/utils.unit.test.js +125 -0
  53. package/dist/tests/utils.unit.test.js.map +1 -0
  54. package/dist/utils/connection.js +14 -19
  55. package/dist/utils/database.js +4 -8
  56. package/package.json +17 -14
  57. package/src/app.ts +114 -73
  58. package/src/controllers/auth.ts +40 -31
  59. package/src/routes/routes.ts +5 -2
  60. package/src/tests/app.unit.test.ts +428 -0
  61. package/src/tests/appEntrypoint.unit.test.ts +154 -0
  62. package/src/tests/auth.unit.test.ts +859 -0
  63. package/src/tests/authHarness.ts +131 -0
  64. package/src/tests/clientExampleServer.test-d.ts +146 -0
  65. package/src/tests/routes.unit.test.ts +166 -0
  66. package/src/tests/utils.unit.test.ts +169 -0
  67. package/tsconfig.tsbuildinfo +1 -1
  68. package/vite.test.config.ts +18 -0
@@ -1,255 +1,187 @@
1
- import { blake2b } from "@noble/hashes/blake2b";
2
- import { u8aToHex } from "@polkadot/util";
3
- import { randomAsHex } from "@polkadot/util-crypto";
4
1
  import { ProsopoEnvError } from "@prosopo/common";
5
- import { getPair } from "@prosopo/keyring";
6
2
  import { getLogger } from "@prosopo/logger";
7
3
  import { ProsopoServer } from "@prosopo/server";
8
- import { ProcaptchaResponse, CaptchaType, ApiParams } from "@prosopo/types";
9
4
  import { at } from "@prosopo/util";
5
+ import { blake2b } from "@noble/hashes/blake2b";
6
+ import { u8aToHex } from "@polkadot/util";
7
+ import { randomAsHex } from "@polkadot/util-crypto";
8
+ import { getPair } from "@prosopo/keyring";
9
+ import { ApiParams, CaptchaType, ProcaptchaResponse } from "@prosopo/types";
10
10
  import jwt from "jsonwebtoken";
11
11
  import { z } from "zod";
12
- const logger = getLogger("info", "client-example-server:auth");
13
- const SubscribeBodySpec = ProcaptchaResponse.merge(
14
- z.object({
15
- email: z.string().email(),
16
- password: z.string(),
17
- siteKey: z.string()
18
- })
19
- );
12
+ //#region src/controllers/auth.ts
13
+ var logger = getLogger("info", "client-example-server:auth");
14
+ var SubscribeBodySpec = ProcaptchaResponse.merge(z.object({
15
+ email: z.string().email(),
16
+ password: z.string(),
17
+ siteKey: z.string()
18
+ }));
20
19
  function hashPassword(password) {
21
- return u8aToHex(blake2b(password));
20
+ return u8aToHex(blake2b(password));
22
21
  }
23
- const NO_IP = "NO_IP";
24
- const getPairAndSecretForSiteKey = (baseSecret, siteKey) => {
25
- let pair;
26
- let secret = baseSecret;
27
- pair = getPair(secret);
28
- if (pair.address === siteKey) {
29
- logger.info(() => ({
30
- msg: "Site key matches the server configuration without captcha type suffix",
31
- data: {
32
- siteKeyDerived: pair?.address,
33
- siteKey
34
- }
35
- }));
36
- return { pair, secret };
37
- }
38
- for (const captchaType of [
39
- CaptchaType.pow,
40
- CaptchaType.image,
41
- CaptchaType.frictionless,
42
- CaptchaType.puzzle
43
- ]) {
44
- const newSecret = `${baseSecret}//${captchaType}`;
45
- pair = getPair(newSecret);
46
- console.log(
47
- `[PAIR CHECK] Checking pair for ${captchaType}: ${pair?.address} (expected: ${siteKey})`
48
- );
49
- logger.info(() => ({
50
- msg: "Checking pair",
51
- data: {
52
- captchaType,
53
- siteKeyDerived: pair?.address,
54
- siteKey
55
- }
56
- }));
57
- if (pair.address === siteKey) {
58
- console.log(`[PAIR CHECK] ✅ Match found for ${captchaType}!`);
59
- secret = newSecret;
60
- break;
61
- }
62
- }
63
- if (!pair || pair.address !== siteKey) {
64
- throw new Error(
65
- `Site key does not match the server configuration: Provided ${siteKey} vs Server ${pair?.address}`
66
- );
67
- }
68
- return { pair, secret };
69
- };
70
- const getResponse = async (ip, token, secret, verifyEndpoint, email) => {
71
- const body = {
72
- [ApiParams.token]: token,
73
- [ApiParams.secret]: secret,
74
- ...email ? { [ApiParams.email]: email } : {}
75
- };
76
- if (process.env.NODE_ENV !== "development") {
77
- body[ApiParams.ip] = ip;
78
- }
79
- logger.info(() => ({
80
- data: {
81
- body
82
- }
83
- }));
84
- const response = await fetch(verifyEndpoint, {
85
- method: "POST",
86
- body: JSON.stringify(body)
87
- });
88
- return response.json();
22
+ var NO_IP = "NO_IP";
23
+ /**
24
+ * Derives the correct KeyringPair and secret for a given site key by trying different captcha types.
25
+ * @param baseSecret - The base secret from config
26
+ * @param siteKey - The site key to match against
27
+ * @returns Object containing the matched pair and its corresponding secret
28
+ * @throws Error if no matching pair is found
29
+ */
30
+ var getPairAndSecretForSiteKey = (baseSecret, siteKey) => {
31
+ let pair;
32
+ let secret = baseSecret;
33
+ pair = getPair(secret);
34
+ if (pair.address === siteKey) {
35
+ logger.info(() => ({
36
+ msg: "Site key matches the server configuration without captcha type suffix",
37
+ data: {
38
+ siteKeyDerived: pair?.address,
39
+ siteKey
40
+ }
41
+ }));
42
+ return {
43
+ pair,
44
+ secret
45
+ };
46
+ }
47
+ for (const captchaType of [
48
+ CaptchaType.pow,
49
+ CaptchaType.image,
50
+ CaptchaType.frictionless,
51
+ CaptchaType.puzzle
52
+ ]) {
53
+ const newSecret = `${baseSecret}//${captchaType}`;
54
+ pair = getPair(newSecret);
55
+ logger.info(() => ({
56
+ msg: "Checking pair",
57
+ data: {
58
+ captchaType,
59
+ siteKeyDerived: pair?.address,
60
+ siteKey
61
+ }
62
+ }));
63
+ if (pair.address === siteKey) {
64
+ secret = newSecret;
65
+ break;
66
+ }
67
+ }
68
+ if (!pair || pair.address !== siteKey) throw new Error(`Site key does not match the server configuration: Provided ${siteKey} vs Server ${pair?.address}`);
69
+ return {
70
+ pair,
71
+ secret
72
+ };
89
73
  };
90
- const verify = async (prosopoServer, verifyType, verifyEndpoint, token, secret, ip, email) => {
91
- if (verifyType === "api") {
92
- logger.info(() => ({
93
- msg: "Verifying using the API endpoint",
94
- data: {
95
- verifyEndpoint
96
- }
97
- }));
98
- const response = await getResponse(
99
- ip,
100
- token,
101
- secret,
102
- verifyEndpoint,
103
- email
104
- );
105
- logger.info(() => ({
106
- data: {
107
- response
108
- }
109
- }));
110
- return response.verified;
111
- }
112
- const verified = await prosopoServer.isVerified(token, ip, email);
113
- logger.info(() => ({
114
- data: {
115
- verified
116
- }
117
- }));
118
- return verified[ApiParams.verified];
74
+ var getResponse = async (ip, token, secret, verifyEndpoint, email) => {
75
+ const body = {
76
+ [ApiParams.token]: token,
77
+ [ApiParams.secret]: secret,
78
+ ...email ? { [ApiParams.email]: email } : {}
79
+ };
80
+ if (process.env.NODE_ENV !== "development") body[ApiParams.ip] = ip;
81
+ logger.info(() => ({ data: { body } }));
82
+ return (await fetch(verifyEndpoint, {
83
+ method: "POST",
84
+ body: JSON.stringify(body)
85
+ })).json();
119
86
  };
120
- const signup = async (mongoose, config, verifyEndpoint, verifyType, req, res, next) => {
121
- try {
122
- if (!config.account.secret) {
123
- throw new ProsopoEnvError("GENERAL.MNEMONIC_UNDEFINED", {
124
- context: { missingParams: ["PROSOPO_SITE_PRIVATE_KEY"] }
125
- });
126
- }
127
- const User = mongoose.model("User");
128
- const dbUser = await User.findOne({
129
- email: { $eq: req.body.email }
130
- });
131
- const payload = SubscribeBodySpec.parse(req.body);
132
- const token = payload[ApiParams.procaptchaResponse];
133
- const siteKey = payload[ApiParams.siteKey];
134
- const { pair, secret } = getPairAndSecretForSiteKey(
135
- config.account.secret,
136
- siteKey
137
- );
138
- const prosopoServer = new ProsopoServer(config, pair);
139
- if (dbUser) {
140
- return res.status(409).json({ message: "email already exists" });
141
- }
142
- const email = req.body.email;
143
- const verified = await verify(
144
- prosopoServer,
145
- verifyType,
146
- verifyEndpoint,
147
- token,
148
- secret,
149
- req.headers["x-client-ip"]?.toString() || "127.0.0.1",
150
- email
151
- );
152
- if (verified === true) {
153
- const salt = randomAsHex(32);
154
- const passwordHash = hashPassword(`${req.body.password}${salt}`);
155
- if (passwordHash) {
156
- return User.create({
157
- email,
158
- name: req.body.name,
159
- password: passwordHash,
160
- salt
161
- }).then(() => {
162
- res.status(200).json({ message: "user created" });
163
- }).catch((err) => {
164
- logger.error(() => ({
165
- err,
166
- msg: "Error creating user in database"
167
- }));
168
- res.status(502).json({ message: "error while creating the user" });
169
- });
170
- }
171
- } else {
172
- res.status(401).json({ message: "user has not completed a captcha", verified });
173
- }
174
- } catch (err) {
175
- console.error("error", err);
176
- res.status(500).json({ message: err.message || "internal server error" });
177
- }
87
+ var verify = async (prosopoServer, verifyType, verifyEndpoint, token, secret, ip, email) => {
88
+ if (verifyType === "api") {
89
+ logger.info(() => ({
90
+ msg: "Verifying using the API endpoint",
91
+ data: { verifyEndpoint }
92
+ }));
93
+ const response = await getResponse(ip, token, secret, verifyEndpoint, email);
94
+ logger.info(() => ({ data: { response } }));
95
+ return response.verified;
96
+ }
97
+ const verified = await prosopoServer.isVerified(token, ip, email);
98
+ logger.info(() => ({ data: { verified } }));
99
+ return verified[ApiParams.verified];
178
100
  };
179
- const login = async (mongoose, config, verifyEndpoint, verifyType, req, res) => {
180
- const User = mongoose.model("User");
181
- await User.findOne({
182
- email: { $eq: req.body.email }
183
- }).then(async (dbUser) => {
184
- if (dbUser) {
185
- const payload = SubscribeBodySpec.parse(req.body);
186
- const token = payload[ApiParams.procaptchaResponse];
187
- const siteKey = payload[ApiParams.siteKey];
188
- if (!config.account.secret) {
189
- throw new ProsopoEnvError("GENERAL.SECRET_MISSING", {
190
- context: { missingParams: ["PROSOPO_SITE_PRIVATE_KEY"] }
191
- });
192
- }
193
- const { pair, secret } = getPairAndSecretForSiteKey(
194
- config.account.secret,
195
- siteKey
196
- );
197
- const prosopoServer = new ProsopoServer(config, pair);
198
- const verified = await verify(
199
- prosopoServer,
200
- verifyType,
201
- verifyEndpoint,
202
- token,
203
- secret,
204
- req.headers["x-client-ip"]?.toString() || NO_IP
205
- );
206
- logger.info(() => ({
207
- data: {
208
- verified
209
- }
210
- }));
211
- if (verified) {
212
- const passwordHash = hashPassword(
213
- `${req.body.password}${dbUser.salt}`
214
- );
215
- if (passwordHash !== dbUser.password) {
216
- return res.status(401).json({ message: "invalid credentials" });
217
- }
218
- const token2 = jwt.sign({ email: req.body.email }, "secret", {
219
- expiresIn: "1h"
220
- });
221
- return res.status(200).json({ message: "user logged in", token: token2 });
222
- }
223
- return res.status(401).json({ message: "user has not completed a captcha", verified });
224
- }
225
- return res.status(404).json({ message: "user not found" });
226
- }).catch((err) => {
227
- console.error("error", err);
228
- res.status(500).json({ message: err.message || "internal server error" });
229
- });
101
+ var signup = async (mongoose, config, verifyEndpoint, verifyType, req, res, next) => {
102
+ try {
103
+ if (!config.account.secret) throw new ProsopoEnvError("GENERAL.MNEMONIC_UNDEFINED", { context: { missingParams: ["PROSOPO_SITE_PRIVATE_KEY"] } });
104
+ const User = mongoose.model("User");
105
+ const dbUser = await User.findOne({ email: { $eq: req.body.email } });
106
+ const payload = SubscribeBodySpec.parse(req.body);
107
+ const token = payload[ApiParams.procaptchaResponse];
108
+ const siteKey = payload[ApiParams.siteKey];
109
+ const { pair, secret } = getPairAndSecretForSiteKey(config.account.secret, siteKey);
110
+ const prosopoServer = new ProsopoServer(config, pair);
111
+ if (dbUser) return res.status(409).json({ message: "email already exists" });
112
+ const email = req.body.email;
113
+ const verified = await verify(prosopoServer, verifyType, verifyEndpoint, token, secret, req.headers["x-client-ip"]?.toString() || "127.0.0.1", email);
114
+ if (verified === true) {
115
+ const salt = randomAsHex(32);
116
+ const passwordHash = hashPassword(`${req.body.password}${salt}`);
117
+ return User.create({
118
+ email,
119
+ name: req.body.name,
120
+ password: passwordHash,
121
+ salt
122
+ }).then(() => {
123
+ res.status(200).json({ message: "user created" });
124
+ }).catch((err) => {
125
+ logger.error(() => ({
126
+ err,
127
+ msg: "Error creating user in database"
128
+ }));
129
+ res.status(502).json({ message: "error while creating the user" });
130
+ });
131
+ }
132
+ res.status(401).json({
133
+ message: "user has not completed a captcha",
134
+ verified
135
+ });
136
+ } catch (err) {
137
+ console.error("error", err);
138
+ res.status(500).json({ message: err.message || "internal server error" });
139
+ }
230
140
  };
231
- const isAuth = (req, res) => {
232
- const authHeader = req.get("Authorization") || "";
233
- if (!authHeader) {
234
- res.status(401).json({ message: "not authenticated" });
235
- }
236
- const token = at(authHeader.split(" "), 1);
237
- let decodedToken = "";
238
- try {
239
- decodedToken = jwt.verify(token, "secret");
240
- } catch (err) {
241
- res.status(500).json({
242
- message: err.message || "could not decode the token"
243
- });
244
- }
245
- if (!decodedToken) {
246
- res.status(401).json({ message: "unauthorized" });
247
- } else {
248
- res.status(200).json({ message: "here is your resource" });
249
- }
141
+ var login = async (mongoose, config, verifyEndpoint, verifyType, req, res) => {
142
+ await mongoose.model("User").findOne({ email: { $eq: req.body.email } }).then(async (dbUser) => {
143
+ if (dbUser) {
144
+ const payload = SubscribeBodySpec.parse(req.body);
145
+ const token = payload[ApiParams.procaptchaResponse];
146
+ const siteKey = payload[ApiParams.siteKey];
147
+ if (!config.account.secret) throw new ProsopoEnvError("GENERAL.SECRET_MISSING", { context: { missingParams: ["PROSOPO_SITE_PRIVATE_KEY"] } });
148
+ const { pair, secret } = getPairAndSecretForSiteKey(config.account.secret, siteKey);
149
+ const verified = await verify(new ProsopoServer(config, pair), verifyType, verifyEndpoint, token, secret, req.headers["x-client-ip"]?.toString() || NO_IP);
150
+ logger.info(() => ({ data: { verified } }));
151
+ if (verified) {
152
+ if (hashPassword(`${req.body.password}${dbUser.salt}`) !== dbUser.password) return res.status(401).json({ message: "invalid credentials" });
153
+ const token = jwt.sign({ email: req.body.email }, "secret", { expiresIn: "1h" });
154
+ return res.status(200).json({
155
+ message: "user logged in",
156
+ token
157
+ });
158
+ }
159
+ return res.status(401).json({
160
+ message: "user has not completed a captcha",
161
+ verified
162
+ });
163
+ }
164
+ return res.status(404).json({ message: "user not found" });
165
+ }).catch((err) => {
166
+ console.error("error", err);
167
+ res.status(500).json({ message: err.message || "internal server error" });
168
+ });
250
169
  };
251
- export {
252
- isAuth,
253
- login,
254
- signup
170
+ var isAuth = (req, res) => {
171
+ const authHeader = req.get("Authorization") || "";
172
+ if (!authHeader) return res.status(401).json({ message: "not authenticated" });
173
+ const headerParts = authHeader.split(" ");
174
+ if (headerParts.length < 2) return res.status(401).json({ message: "not authenticated" });
175
+ const token = at(headerParts, 1);
176
+ if (!token) return res.status(401).json({ message: "not authenticated" });
177
+ let decodedToken = "";
178
+ try {
179
+ decodedToken = jwt.verify(token, "secret");
180
+ } catch (err) {
181
+ return res.status(500).json({ message: err.message || "could not decode the token" });
182
+ }
183
+ if (!decodedToken) return res.status(401).json({ message: "unauthorized" });
184
+ return res.status(200).json({ message: "here is your resource" });
255
185
  };
186
+ //#endregion
187
+ export { isAuth, login, signup };
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/controllers/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/controllers/auth.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@ export interface UserInterface {
6
6
  password: string;
7
7
  salt: string;
8
8
  }
9
- declare const UserSchema: mongoose.Schema<UserInterface, mongoose.Model<UserInterface, any, any, any, mongoose.Document<unknown, any, UserInterface> & UserInterface & {
9
+ declare const UserSchema: mongoose.Schema<UserInterface, mongoose.Model<UserInterface, any, any, any, mongoose.Document<unknown, any, UserInterface, any, {}> & UserInterface & {
10
10
  _id: mongoose.Types.ObjectId;
11
11
  } & {
12
12
  __v: number;
13
- }, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, UserInterface, mongoose.Document<unknown, {}, mongoose.FlatRecord<UserInterface>> & mongoose.FlatRecord<UserInterface> & {
13
+ }, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, UserInterface, mongoose.Document<unknown, {}, mongoose.FlatRecord<UserInterface>, {}, mongoose.DefaultSchemaOptions> & mongoose.FlatRecord<UserInterface> & {
14
14
  _id: mongoose.Types.ObjectId;
15
15
  } & {
16
16
  __v: number;
@@ -1,24 +1,20 @@
1
1
  import mongoose, { Schema } from "mongoose";
2
- const UserSchema = new Schema({
3
- email: {
4
- type: mongoose.SchemaTypes.String,
5
- required: true
6
- },
7
- name: {
8
- type: mongoose.SchemaTypes.String
9
- },
10
- password: {
11
- type: mongoose.SchemaTypes.String,
12
- required: true
13
- },
14
- id: {
15
- type: mongoose.SchemaTypes.Number
16
- },
17
- salt: {
18
- type: mongoose.SchemaTypes.String,
19
- required: true
20
- }
2
+ //#region src/models/user.ts
3
+ var UserSchema = new Schema({
4
+ email: {
5
+ type: mongoose.SchemaTypes.String,
6
+ required: true
7
+ },
8
+ name: { type: mongoose.SchemaTypes.String },
9
+ password: {
10
+ type: mongoose.SchemaTypes.String,
11
+ required: true
12
+ },
13
+ id: { type: mongoose.SchemaTypes.Number },
14
+ salt: {
15
+ type: mongoose.SchemaTypes.String,
16
+ required: true
17
+ }
21
18
  });
22
- export {
23
- UserSchema as default
24
- };
19
+ //#endregion
20
+ export { UserSchema as default };
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C,iBAAS,SAAS,CACjB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CA0BhB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,OAAO,MAAM,SAAS,CAAC;AAc9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,iBAAS,SAAS,CACjB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,yBAAyB,EACjC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CA+BhB;AAED,eAAe,SAAS,CAAC"}
@@ -1,27 +1,21 @@
1
+ import { isAuth, login, signup } from "../controllers/auth.js";
1
2
  import express from "express";
2
- import { login, signup, isAuth } from "../controllers/auth.js";
3
- const router = express.Router();
3
+ //#region src/routes/routes.ts
4
4
  function getRoutes(mongoose, config, verifyEndpoint, verifyType) {
5
- router.post(
6
- "/login",
7
- login.bind(null, mongoose, config, verifyEndpoint, verifyType)
8
- );
9
- router.post(
10
- "/signup",
11
- signup.bind(null, mongoose, config, verifyEndpoint, verifyType)
12
- );
13
- router.get("/private", isAuth);
14
- router.get("/public", (req, res) => {
15
- res.status(200).json({ message: "here is your public resource" });
16
- });
17
- router.get("/health", (req, res) => {
18
- res.status(200).json({ status: "ok" });
19
- });
20
- router.use("/", (req, res) => {
21
- res.status(404).json({ error: "page not found" });
22
- });
23
- return router;
5
+ const router = express.Router();
6
+ router.post("/login", login.bind(null, mongoose, config, verifyEndpoint, verifyType));
7
+ router.post("/signup", signup.bind(null, mongoose, config, verifyEndpoint, verifyType));
8
+ router.get("/private", isAuth);
9
+ router.get("/public", (req, res) => {
10
+ res.status(200).json({ message: "here is your public resource" });
11
+ });
12
+ router.get("/health", (req, res) => {
13
+ res.status(200).json({ status: "ok" });
14
+ });
15
+ router.use("/", (req, res) => {
16
+ res.status(404).json({ error: "page not found" });
17
+ });
18
+ return router;
24
19
  }
25
- export {
26
- getRoutes as default
27
- };
20
+ //#endregion
21
+ export { getRoutes as default };
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAe9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,SAAS,SAAS,CACjB,QAAoB,EACpB,MAAiC,EACjC,cAAsB,EACtB,UAAkB;IAElB,MAAM,CAAC,IAAI,CACV,QAAQ,EACR,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAC9D,CAAC;IAEF,MAAM,CAAC,IAAI,CACV,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAC/D,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAGH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/routes/routes.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAe9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE/D,SAAS,SAAS,CACjB,QAAoB,EACpB,MAAiC,EACjC,cAAsB,EACtB,UAAkB;IAKlB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,MAAM,CAAC,IAAI,CACV,QAAQ,EACR,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAC9D,CAAC;IAEF,MAAM,CAAC,IAAI,CACV,SAAS,EACT,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAC/D,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAGH,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AACf,CAAC;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/app.unit.test.ts"],"names":[],"mappings":""}