@paralect/hive 0.0.27 → 0.1.0

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 (65) hide show
  1. package/cli/hive.js +31 -117
  2. package/package.json +3 -2
  3. package/starter/package-lock.json +2655 -2357
  4. package/starter/package.json +40 -35
  5. package/starter/src/app-config/app.js +1 -1
  6. package/starter/src/app-config/assertEnv.js +3 -3
  7. package/starter/src/app-config/index.js +16 -25
  8. package/starter/src/app.js +32 -34
  9. package/starter/src/autoMap/addHandlers.js +6 -40
  10. package/starter/src/autoMap/mapSchema.js +5 -34
  11. package/starter/src/autoMap/schemaMappings.js +1 -1
  12. package/starter/src/bullMqBus.js +4 -4
  13. package/starter/src/{bullMq.js → bullMqWrapper.js} +3 -4
  14. package/starter/src/db.js +28 -36
  15. package/starter/src/emails/MyEmailComponent.jsx +1 -3
  16. package/starter/src/emails/compiled/MyEmailComponent.js +5 -4
  17. package/starter/src/emails/compiled/compiled/MyEmailComponent.js +18 -0
  18. package/starter/src/helpers/db/ifUpdated.js +2 -2
  19. package/starter/src/helpers/getResourceEndpoints.js +3 -3
  20. package/starter/src/helpers/getResources.js +4 -4
  21. package/starter/src/helpers/getSchemas.js +7 -8
  22. package/starter/src/helpers/prettierFormat.js +2 -2
  23. package/starter/src/ioEmitter.js +4 -5
  24. package/starter/src/lib/node-mongo/package-lock.json +3682 -0
  25. package/starter/src/lib/node-mongo/src/index.js +7 -22
  26. package/starter/src/lib/node-mongo/src/mongo-query-service.js +3 -4
  27. package/starter/src/lib/node-mongo/src/mongo-service-error.js +1 -1
  28. package/starter/src/lib/node-mongo/src/mongo-service.js +6 -8
  29. package/starter/src/logger.js +3 -3
  30. package/starter/src/middlewares/global/extractUserTokens.js +1 -1
  31. package/starter/src/middlewares/global/tryToAttachUser.js +4 -3
  32. package/starter/src/middlewares/isAuthorized.js +6 -4
  33. package/starter/src/middlewares/shouldExist.js +2 -2
  34. package/starter/src/middlewares/shouldNotExist.js +3 -3
  35. package/starter/src/middlewares/uploadFile.js +2 -2
  36. package/starter/src/middlewares/validate.js +24 -31
  37. package/starter/src/migrations/migration.js +1 -1
  38. package/starter/src/migrations/migration.service.js +9 -11
  39. package/starter/src/migrations/migrations/1.js +2 -2
  40. package/starter/src/migrations/migrations-log/migration-log.schema.js +14 -13
  41. package/starter/src/migrations/migrations-log/migration-log.service.js +3 -4
  42. package/starter/src/migrations/migrations.schema.js +8 -7
  43. package/starter/src/migrations/migrator.js +6 -8
  44. package/starter/src/migrator.js +4 -5
  45. package/starter/src/resources/_dev/endpoints/triggerSchedulerHandler.js +6 -6
  46. package/starter/src/resources/health/endpoints/get.js +9 -7
  47. package/starter/src/resources/schemaMappings/schemaMappings.schema.js +6 -6
  48. package/starter/src/resources/tokens/methods/generateSecureToken.js +3 -3
  49. package/starter/src/resources/tokens/methods/setToken.js +3 -2
  50. package/starter/src/resources/tokens/methods/storeToken.js +6 -5
  51. package/starter/src/resources/tokens/tokens.schema.js +11 -11
  52. package/starter/src/resources/users/endpoints/getCurrentUser.js +6 -6
  53. package/starter/src/resources/users/endpoints/getUserProfile.js +8 -6
  54. package/starter/src/resources/users/methods/ensureUserCreated.js +5 -4
  55. package/starter/src/resources/users/users.schema.js +13 -14
  56. package/starter/src/routes/index.js +34 -54
  57. package/starter/src/routes/middlewares/attachCustomErrors.js +2 -2
  58. package/starter/src/routes/middlewares/routeErrorHandler.js +3 -3
  59. package/starter/src/scheduler/handlers/sendDailyReport.example.js +3 -3
  60. package/starter/src/scheduler.js +18 -18
  61. package/starter/src/security.util.js +6 -6
  62. package/starter/src/services/emailService.js +4 -4
  63. package/starter/src/services/setCookie.js +5 -6
  64. package/starter/src/socketIo.js +9 -12
  65. package/starter/tsconfig.json +27 -0
@@ -1,26 +1,20 @@
1
- const monk = require("monk");
2
- const _ = require("lodash");
3
-
4
- const MongoService = require("./mongo-service");
5
- const MongoQueryService = require("./mongo-query-service");
6
-
1
+ import monk from "monk";
2
+ import _ from "lodash";
3
+ import MongoService from "./mongo-service.js";
4
+ import MongoQueryService from "./mongo-query-service.js";
7
5
  const logger = global.logger || console;
8
-
9
6
  const connect = (connectionString, settings) => {
10
7
  const connectionSettings = _.defaults({}, settings, {
11
8
  connectTimeoutMS: 20000,
12
9
  });
13
10
  const db = monk(connectionString, connectionSettings);
14
-
15
11
  db.on("error-opening", (err) => {
16
12
  logger.error(err, "Failed to connect to the mongodb on start");
17
13
  throw err;
18
14
  });
19
-
20
15
  db.on("open", () => {
21
- logger.info(`Connected to mongodb`);
16
+ logger.info(`Connected to mongodb: ${connectionString}`);
22
17
  });
23
-
24
18
  db.on("close", (err) => {
25
19
  if (err) {
26
20
  logger.error(err, `Lost connection with mongodb: ${connectionString}`);
@@ -28,40 +22,31 @@ const connect = (connectionString, settings) => {
28
22
  logger.warn(`Closed connection with mongodb: ${connectionString}`);
29
23
  }
30
24
  });
31
-
32
25
  db.on("connected", (err) => {
33
26
  if (err) {
34
27
  logger.error(err);
35
28
  } else {
36
- logger.info(`Connected to mongodb`);
29
+ logger.info(`Connected to mongodb: ${connectionString}`);
37
30
  }
38
31
  });
39
-
40
32
  db.createService = (collectionName, options = {}) => {
41
33
  const collection = db.get(collectionName, { castIds: false });
42
-
43
34
  return new MongoService(collection, options);
44
35
  };
45
-
46
36
  db.setServiceMethod = (name, method) => {
47
37
  MongoService.prototype[name] = function customMethod(...args) {
48
38
  return method.apply(this, [this, ...args]);
49
39
  };
50
40
  };
51
-
52
41
  db.createQueryService = (collectionName, options = {}) => {
53
42
  const collection = db.get(collectionName, { castIds: false });
54
-
55
43
  return new MongoQueryService(collection, options);
56
44
  };
57
-
58
45
  db.setQueryServiceMethod = (name, method) => {
59
46
  MongoQueryService.prototype[name] = function customMethod(...args) {
60
47
  return method.apply(this, [this, ...args]);
61
48
  };
62
49
  };
63
-
64
50
  return db;
65
51
  };
66
-
67
- module.exports.connect = connect;
52
+ export { connect };
@@ -1,6 +1,5 @@
1
- const _ = require("lodash");
2
-
3
- const MongoServiceError = require("./mongo-service-error");
1
+ import _ from 'lodash';
2
+ import MongoServiceError from './mongo-service-error';
4
3
 
5
4
  class MongoQueryService {
6
5
  constructor(collection, options = {}) {
@@ -69,4 +68,4 @@ class MongoQueryService {
69
68
  }
70
69
  }
71
70
 
72
- module.exports = MongoQueryService;
71
+ export default MongoQueryService;
@@ -12,4 +12,4 @@ MongoServiceError.MORE_THAN_ONE = "MORE_THAN_ONE";
12
12
  MongoServiceError.INVALID_SCHEMA = "INVALID_SCHEMA";
13
13
  MongoServiceError.INVALID_ARGUMENT = "INVALID_ARGUMENT";
14
14
 
15
- module.exports = MongoServiceError;
15
+ export default MongoServiceError;
@@ -1,9 +1,8 @@
1
- const monk = require("monk");
2
- const { EventEmitter } = require("events");
3
- const _ = require("lodash");
4
-
5
- const MongoQueryService = require("./mongo-query-service");
6
- const MongoServiceError = require("./mongo-service-error");
1
+ import monk from 'monk';
2
+ import { EventEmitter } from 'events';
3
+ import _ from 'lodash';
4
+ import MongoQueryService from './mongo-query-service';
5
+ import MongoServiceError from './mongo-service-error';
7
6
 
8
7
  const defaultOptions = {
9
8
  addCreatedOnField: true,
@@ -109,7 +108,6 @@ class MongoService extends MongoQueryService {
109
108
  }
110
109
 
111
110
  on(eventName, handler) {
112
- console.log("this._bus.on(`${this._collection.name}:${eventName}`, handler);", `${this._collection.name}:${eventName}`);
113
111
  return this._bus.on(`${this._collection.name}:${eventName}`, handler);
114
112
  }
115
113
 
@@ -284,4 +282,4 @@ class MongoService extends MongoQueryService {
284
282
  }
285
283
  }
286
284
 
287
- module.exports = MongoService;
285
+ export default MongoService;
@@ -1,5 +1,5 @@
1
- const winston = require("winston");
2
- const config = require("app-config");
1
+ import winston from 'winston';
2
+ import config from 'app-config';
3
3
 
4
4
  const colorizer = winston.format.colorize();
5
5
 
@@ -27,4 +27,4 @@ const createConsoleLogger = () => {
27
27
  return logger;
28
28
  };
29
29
 
30
- module.exports = createConsoleLogger();
30
+ export default createConsoleLogger();
@@ -12,4 +12,4 @@ const storeTokenToState = async (ctx, next) => {
12
12
  await next();
13
13
  };
14
14
 
15
- module.exports = storeTokenToState;
15
+ export default storeTokenToState;
@@ -1,5 +1,6 @@
1
- const userService = require("db").services.users;
2
- const tokenService = require("db").services.tokens;
1
+ import db from 'db';
2
+ const userService = db.services.users;
3
+ const tokenService = db.services.tokens;
3
4
 
4
5
  const storeTokenToState = async (ctx) => {
5
6
  let accessToken = ctx.cookies.get("access_token");
@@ -29,4 +30,4 @@ const tryToAttachUser = async (ctx, next) => {
29
30
  return next();
30
31
  };
31
32
 
32
- module.exports = tryToAttachUser;
33
+ export default tryToAttachUser;
@@ -1,6 +1,8 @@
1
- const config = require('app-config');
2
- const userService = require('db').services.users;
3
- const tokenService = require('db').services.tokens;
1
+ import db from 'db';
2
+ import config from 'app-config';
3
+
4
+ const userService = db.services.users;
5
+ const tokenService = db.services.tokens;
4
6
 
5
7
  const storeTokenToState = async (ctx) => {
6
8
  let accessToken = ctx.cookies.get('access_token');
@@ -18,7 +20,7 @@ const storeTokenToState = async (ctx) => {
18
20
  ctx.state.accessToken = accessToken;
19
21
  };
20
22
 
21
- module.exports = async (ctx, next) => {
23
+ export default async (ctx, next) => {
22
24
  storeTokenToState(ctx);
23
25
 
24
26
  let token;
@@ -1,4 +1,4 @@
1
- const db = require('db');
1
+ import db from 'db';
2
2
 
3
3
  function singularize(word) {
4
4
  const endings = {
@@ -16,7 +16,7 @@ function singularize(word) {
16
16
  );
17
17
  }
18
18
 
19
- module.exports = (
19
+ export default (
20
20
  resourceName,
21
21
  {
22
22
  criteria = (ctx) => ({ _id: ctx.params[`${singularize(resourceName)}Id`] }),
@@ -1,7 +1,7 @@
1
- const _ = require("lodash");
2
- const db = require("db");
1
+ import _ from 'lodash';
2
+ import db from 'db';
3
3
 
4
- module.exports = (
4
+ export default (
5
5
  resourceName,
6
6
  { criteria = (ctx) => ({ name: ctx.validatedData.name }) } = {}
7
7
  ) => {
@@ -1,5 +1,5 @@
1
- const multer = require("@koa/multer");
1
+ import multer from '@koa/multer';
2
2
 
3
3
  const storage = multer.memoryStorage();
4
4
 
5
- module.exports = multer({ storage });
5
+ export default multer({ storage });
@@ -1,39 +1,32 @@
1
- const Joi = require("joi");
2
1
 
3
- function formatError(joiError) {
2
+ const formatError = (zodError) => {
4
3
  const errors = {};
5
4
 
6
- joiError.details.forEach((error) => {
7
- const key = error.path.join(".");
8
- errors[key] = errors[key] || [];
9
- errors[key].push(error.message);
5
+ zodError.issues.forEach((error) => {
6
+ const key = error.path.join('.');
7
+
8
+ if (!errors[key]) {
9
+ errors[key] = [];
10
+ }
11
+
12
+ (errors[key]).push(error.message);
10
13
  });
11
14
 
12
15
  return errors;
13
- }
16
+ };
14
17
 
15
- function validate(schema) {
16
- return async (ctx, next) => {
17
- if (!schema.validate) {
18
- schema = Joi.object(schema);
19
- }
18
+ const validate = (schema) => async (ctx, next) => {
19
+ const result = await schema.safeParseAsync({
20
+ ...(ctx.request.body),
21
+ ...ctx.query,
22
+ ...ctx.params,
23
+ });
24
+
25
+ if (!result.success) ctx.throw(400, { clientErrors: formatError(result.error) });
26
+
27
+ ctx.validatedData = result.data;
28
+
29
+ await next();
30
+ };
20
31
 
21
- const { value, error } = await schema.validate(
22
- {
23
- ...ctx.request.body,
24
- ...ctx.query,
25
- },
26
- {
27
- abortEarly: false,
28
- allowUnknown: true,
29
- }
30
- );
31
-
32
- if (error) ctx.throw(400, { errors: formatError(error) });
33
-
34
- ctx.validatedData = value;
35
- await next();
36
- };
37
- }
38
-
39
- module.exports = validate;
32
+ export default validate;
@@ -5,4 +5,4 @@ class Migration {
5
5
  }
6
6
  }
7
7
 
8
- module.exports = Migration;
8
+ export default Migration;
@@ -1,13 +1,15 @@
1
- const db = require("db");
2
- const fs = require("fs");
3
- const path = require("path");
4
- const _ = require("lodash");
5
- const validateSchema = require("./migrations.schema");
1
+ import db from "db";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ import _ from "lodash";
5
+ import validateSchema from "./migrations.schema";
6
6
 
7
7
  const service = db.createService("__migrationVersion", {
8
8
  validate: validateSchema,
9
9
  });
10
+
10
11
  const migrationsPath = path.join(__dirname, "migrations");
12
+
11
13
  const _id = "migration_version";
12
14
 
13
15
  const getMigrationNames = () =>
@@ -26,21 +28,18 @@ service.getCurrentMigrationVersion = () =>
26
28
  if (!doc) {
27
29
  return 0;
28
30
  }
29
-
30
31
  return doc.version;
31
32
  });
32
33
 
33
34
  service.getMigrations = () => {
34
35
  let migrations = null;
35
-
36
36
  return getMigrationNames()
37
37
  .then((names) => {
38
38
  migrations = names.map((name) => {
39
39
  const migrationPath = path.join(migrationsPath, name);
40
40
  // eslint-disable-next-line import/no-dynamic-require, global-require
41
- return require(migrationPath);
41
+ // return require(migrationPath);
42
42
  });
43
-
44
43
  return migrations;
45
44
  })
46
45
  .catch((err) => {
@@ -64,7 +63,6 @@ service.setNewMigrationVersion = (version) =>
64
63
 
65
64
  service.promiseLimit = (documents = [], limit, operator) => {
66
65
  const chunks = _.chunk(documents, limit);
67
-
68
66
  return chunks.reduce((init, chunk) => {
69
67
  return init.then(() => {
70
68
  return Promise.all(chunk.map((c) => operator(c)));
@@ -72,4 +70,4 @@ service.promiseLimit = (documents = [], limit, operator) => {
72
70
  }, Promise.resolve());
73
71
  };
74
72
 
75
- module.exports = service;
73
+ export default service;
@@ -1,4 +1,4 @@
1
- const Migration = require("migrations/migration");
1
+ import Migration from 'migrations/migration';
2
2
  // const migrationService = require('migrations/migration.service');
3
3
  //
4
4
  // const userService = require('resources/user/user.service');
@@ -19,4 +19,4 @@ migration.migrate = async () => {
19
19
  // ));
20
20
  };
21
21
 
22
- module.exports = migration;
22
+ export default migration;
@@ -1,15 +1,16 @@
1
- const Joi = require("joi");
1
+ import { z } from 'zod';
2
2
 
3
- const schema = Joi.object({
4
- _id: Joi.string(),
5
- createdOn: Joi.date(),
6
- updatedOn: Joi.date(),
7
- startTime: Joi.date().required(),
8
- finishTime: Joi.date(),
9
- status: Joi.string().required(),
10
- error: Joi.string(),
11
- errorStack: Joi.string(),
12
- duration: Joi.string(),
13
- migrationVersion: Joi.number().required(),
3
+ const schema = z.object({
4
+ _id: z.string(),
5
+ createdOn: z.date(),
6
+ updatedOn: z.date(),
7
+ startTime: z.date(),
8
+ finishTime: z.date().optional(),
9
+ status: z.string(),
10
+ error: z.string().optional(),
11
+ errorStack: z.string().optional(),
12
+ duration: z.string().optional(),
13
+ migrationVersion: z.number(),
14
14
  });
15
- module.exports = schema;
15
+
16
+ export default schema;
@@ -1,6 +1,5 @@
1
- const db = require("db");
2
-
3
- const validateSchema = require("./migration-log.schema.js");
1
+ import db from 'db';
2
+ import validateSchema from './migration-log.schema.js';
4
3
 
5
4
  const service = db.createService("__migrationLog", {
6
5
  validate: validateSchema,
@@ -48,4 +47,4 @@ service.finishMigrationLog = (_id, finishTime, duration) =>
48
47
  }
49
48
  );
50
49
 
51
- module.exports = service;
50
+ export default service;
@@ -1,9 +1,10 @@
1
- const Joi = require("joi");
1
+ import { z } from 'zod';
2
2
 
3
- const schema = Joi.object({
4
- _id: Joi.string(),
5
- createdOn: Joi.date(),
6
- updatedOn: Joi.date(),
7
- version: Joi.number().required(),
3
+ const schema = z.object({
4
+ _id: z.string(),
5
+ createdOn: z.date(),
6
+ updatedOn: z.date(),
7
+ version: z.number(),
8
8
  });
9
- module.exports = schema;
9
+
10
+ export default schema;
@@ -1,10 +1,8 @@
1
- require("moment-duration-format");
2
- const moment = require("moment");
3
-
4
- const logger = require("logger");
5
-
6
- const migrationLogService = require("./migrations-log/migration-log.service");
7
- const migrationService = require("./migration.service");
1
+ import 'moment-duration-format';
2
+ import moment from 'moment';
3
+ import logger from 'logger';
4
+ import migrationLogService from './migrations-log/migration-log.service';
5
+ import migrationService from './migration.service';
8
6
 
9
7
  const migrator = {};
10
8
 
@@ -74,4 +72,4 @@ migrator.exec = async () => {
74
72
  process.exit(0);
75
73
  };
76
74
 
77
- module.exports = migrator;
75
+ export default migrator;
@@ -1,5 +1,4 @@
1
- require("app-module-path").addPath(__dirname);
2
-
3
- const migrator = require("migrations/migrator");
4
-
5
- migrator.exec();
1
+ import appModulePath from "app-module-path";
2
+ import migrator from "migrations/migrator";
3
+ appModulePath.addPath(__dirname);
4
+ migrator.exec();
@@ -1,18 +1,18 @@
1
- const Joi = require("joi");
1
+ import { z } from 'zod';
2
2
 
3
- module.exports.endpoint = {
3
+ export const endpoint = {
4
4
  method: "put",
5
5
  url: "/trigger-scheduler-handler",
6
6
  };
7
7
 
8
- module.exports.requestSchema = {
9
- name: Joi.string().required(),
8
+ export const requestSchema = {
9
+ name: z.string(),
10
10
  };
11
11
 
12
- module.exports.handler = async (ctx) => {
12
+ export const handler = async (ctx) => {
13
13
  const { name } = ctx.validatedData;
14
14
 
15
- const schedulerHandler = require(`scheduler/handlers/${name}`);
15
+ const schedulerHandler = await (import(`scheduler/handlers/${name}`)).default;
16
16
 
17
17
  try {
18
18
  const data = await schedulerHandler.handler();
@@ -1,17 +1,19 @@
1
- const { render } = require('@react-email/render');
2
- const { MyEmailComponent } = require('emails/compiled/MyEmailComponent');
3
- const React = require('react');
1
+ import { render } from '@react-email/render';
2
+ import { MyEmailComponent } from 'emails/compiled/MyEmailComponent';
3
+ import React from 'react';
4
4
 
5
- const handler = (ctx) => {
5
+ export const handler = (ctx) => {
6
6
  const emailHtml = render(React.createElement(MyEmailComponent, { name: 'test' }));
7
7
 
8
8
  ctx.body = emailHtml;
9
9
  ctx.status = 200;
10
10
  };
11
11
 
12
- module.exports.handler = handler;
13
-
14
- module.exports.endpoint = {
12
+ export const endpoint = {
15
13
  method: "get",
16
14
  url: "/",
17
15
  };
16
+
17
+ export default {
18
+ handler, endpoint
19
+ }
@@ -1,9 +1,9 @@
1
- const Joi = require('joi');
1
+ import { z } from 'zod';
2
2
 
3
- module.exports = Joi.object({
4
- _id: Joi.string(),
5
- createdOn: Joi.date(),
6
- updatedOn: Joi.date(),
3
+ export default z.object({
4
+ _id: z.string(),
5
+ createdOn: z.date(),
6
+ updatedOn: z.date(),
7
7
 
8
- mappings: Joi.object(),
8
+ mappings: z.object(),
9
9
  });
@@ -1,9 +1,9 @@
1
- const crypto = require('crypto');
2
- const util = require('util');
1
+ import crypto from 'crypto';
2
+ import util from 'util';
3
3
 
4
4
  const randomBytes = util.promisify(crypto.randomBytes, crypto);
5
5
 
6
- module.exports = async (tokenLength = 32) => {
6
+ export default async (tokenLength = 32) => {
7
7
  const buf = await randomBytes(tokenLength);
8
8
  return buf.toString('hex');
9
9
  };
@@ -1,6 +1,7 @@
1
- const tokenService = require('db').services.tokens;
1
+ import db from 'db';
2
+ const tokenService = db.services.tokens;
2
3
 
3
- module.exports = async () => {
4
+ export default async () => {
4
5
  const { results } = await tokenService.aggregate([]);
5
6
 
6
7
  return results;
@@ -1,18 +1,19 @@
1
- const crypto = require('crypto');
2
- const util = require('util');
1
+ import db from 'db';
2
+ import crypto from 'crypto';
3
+ import util from 'util';
3
4
 
4
5
  const randomBytes = util.promisify(crypto.randomBytes, crypto);
5
6
 
6
- const setCookie = require('services/setCookie');
7
+ import setCookie from 'services/setCookie';
7
8
 
8
- const tokenService = require('db').services.tokens;
9
+ const tokenService = db.services.tokens;
9
10
 
10
11
  const generateSecureToken = async (tokenLength = 32) => {
11
12
  const buf = await randomBytes(tokenLength);
12
13
  return buf.toString('hex');
13
14
  };
14
15
 
15
- module.exports = async (ctx, { userId, metadata = null }) => {
16
+ export default async (ctx, { userId, metadata = null }) => {
16
17
  const token = await generateSecureToken();
17
18
  const otp = await generateSecureToken();
18
19
 
@@ -1,13 +1,13 @@
1
- const Joi = require('joi');
1
+ import { z } from 'zod';
2
2
 
3
- module.exports = Joi.object({
4
- _id: Joi.string(),
5
- createdOn: Joi.date(),
6
- updatedOn: Joi.date(),
7
- user: Joi.object({
8
- _id: Joi.string(),
9
- }).required(),
10
- token: Joi.string().required(),
11
- otp: Joi.string().allow(null).allow(''),
12
- metadata: Joi.object({}).optional()
3
+ export default z.object({
4
+ _id: z.string(),
5
+ createdOn: z.date(),
6
+ updatedOn: z.date(),
7
+ user: z.object({
8
+ _id: z.string(),
9
+ }),
10
+ token: z.string(),
11
+ otp: z.string().nullable().optional(),
12
+ metadata: z.object({}).optional()
13
13
  });
@@ -1,14 +1,14 @@
1
- const Joi = require("joi");
1
+ import { z } from 'zod';
2
+ import isAuthorized from 'middlewares/isAuthorized';
2
3
 
3
- module.exports.handler = async (ctx) => {
4
+ export const handler = async (ctx) => {
4
5
  ctx.body = ctx.state.user;
5
6
  };
6
7
 
7
- module.exports.middlewares = [require('middlewares/isAuthorized')];
8
+ export const middlewares = [isAuthorized];
9
+ export const requestSchema = z.object({});
8
10
 
9
- module.exports.requestSchema = Joi.object({});
10
-
11
- module.exports.endpoint = {
11
+ export const endpoint = {
12
12
  method: "GET",
13
13
  url: "/me",
14
14
  };