@appweaver/core 1.0.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 (271) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +7 -0
  3. package/app/application.d.ts +43 -0
  4. package/app/application.js +112 -0
  5. package/app/create-app.d.ts +32 -0
  6. package/app/create-app.js +38 -0
  7. package/app/index.d.ts +2 -0
  8. package/app/index.js +18 -0
  9. package/app/lifecycle-manager.d.ts +20 -0
  10. package/app/lifecycle-manager.js +42 -0
  11. package/app/load-modules.d.ts +10 -0
  12. package/app/load-modules.js +50 -0
  13. package/app/load-providers.d.ts +8 -0
  14. package/app/load-providers.js +33 -0
  15. package/cache/cache-service.d.ts +72 -0
  16. package/cache/cache-service.js +202 -0
  17. package/cache/cache.d.ts +12 -0
  18. package/cache/cache.js +184 -0
  19. package/cache/caching.d.ts +8 -0
  20. package/cache/caching.js +72 -0
  21. package/cache/eviction/eviction-index.d.ts +35 -0
  22. package/cache/eviction/eviction-index.js +2 -0
  23. package/cache/eviction/fifo-eviction-index.d.ts +7 -0
  24. package/cache/eviction/fifo-eviction-index.js +28 -0
  25. package/cache/eviction/index.d.ts +4 -0
  26. package/cache/eviction/index.js +20 -0
  27. package/cache/eviction/lfu-eviction-index.d.ts +8 -0
  28. package/cache/eviction/lfu-eviction-index.js +82 -0
  29. package/cache/eviction/lru-eviction-index.d.ts +8 -0
  30. package/cache/eviction/lru-eviction-index.js +81 -0
  31. package/cache/index.d.ts +2 -0
  32. package/cache/index.js +18 -0
  33. package/cache/memory-cache.d.ts +4 -0
  34. package/cache/memory-cache.js +12 -0
  35. package/cache/redis-cache.d.ts +4 -0
  36. package/cache/redis-cache.js +12 -0
  37. package/context/context.d.ts +2 -0
  38. package/context/context.js +13 -0
  39. package/context/dependency-injection.d.ts +98 -0
  40. package/context/dependency-injection.js +276 -0
  41. package/context/index.d.ts +2 -0
  42. package/context/index.js +18 -0
  43. package/database/create-client.d.ts +11 -0
  44. package/database/create-client.js +142 -0
  45. package/database/index.d.ts +1 -0
  46. package/database/index.js +17 -0
  47. package/database/prisma-database.d.ts +15 -0
  48. package/database/prisma-database.js +53 -0
  49. package/errors/error-handler.d.ts +3 -0
  50. package/errors/error-handler.js +24 -0
  51. package/errors/error-schema.d.ts +32 -0
  52. package/errors/error-schema.js +31 -0
  53. package/errors/http-error.d.ts +21 -0
  54. package/errors/http-error.js +33 -0
  55. package/errors/index.d.ts +3 -0
  56. package/errors/index.js +19 -0
  57. package/events/node-events.d.ts +7 -0
  58. package/events/node-events.js +39 -0
  59. package/export/export-service.d.ts +19 -0
  60. package/export/export-service.js +154 -0
  61. package/export/index.d.ts +1 -0
  62. package/export/index.js +17 -0
  63. package/factory/create-model.d.ts +2 -0
  64. package/factory/create-model.js +366 -0
  65. package/factory/create-policy.d.ts +2 -0
  66. package/factory/create-policy.js +16 -0
  67. package/factory/create-routes.d.ts +2 -0
  68. package/factory/create-routes.js +21 -0
  69. package/factory/create-service.d.ts +3 -0
  70. package/factory/create-service.js +97 -0
  71. package/factory/index.d.ts +4 -0
  72. package/factory/index.js +20 -0
  73. package/health/health-routes.d.ts +2 -0
  74. package/health/health-routes.js +36 -0
  75. package/health/health-schema.d.ts +45 -0
  76. package/health/health-schema.js +52 -0
  77. package/health/health-service.d.ts +38 -0
  78. package/health/health-service.js +82 -0
  79. package/health/index.d.ts +2 -0
  80. package/health/index.js +18 -0
  81. package/index.d.ts +15 -0
  82. package/index.js +31 -0
  83. package/mailer/email-service.d.ts +36 -0
  84. package/mailer/email-service.js +89 -0
  85. package/mailer/index.d.ts +1 -0
  86. package/mailer/index.js +17 -0
  87. package/mailer/json-mailer.d.ts +7 -0
  88. package/mailer/json-mailer.js +32 -0
  89. package/mailer/smtp-mailer.d.ts +7 -0
  90. package/mailer/smtp-mailer.js +43 -0
  91. package/memory/in-memory.d.ts +24 -0
  92. package/memory/in-memory.js +164 -0
  93. package/memory/redis.d.ts +26 -0
  94. package/memory/redis.js +158 -0
  95. package/package.json +68 -0
  96. package/prisma/client/browser.d.ts +34 -0
  97. package/prisma/client/browser.js +56 -0
  98. package/prisma/client/client.d.ts +53 -0
  99. package/prisma/client/client.js +70 -0
  100. package/prisma/client/commonInputTypes.d.ts +395 -0
  101. package/prisma/client/commonInputTypes.js +11 -0
  102. package/prisma/client/enums.d.ts +1 -0
  103. package/prisma/client/enums.js +11 -0
  104. package/prisma/client/internal/class.d.ts +187 -0
  105. package/prisma/client/internal/class.js +85 -0
  106. package/prisma/client/internal/prismaNamespace.d.ts +987 -0
  107. package/prisma/client/internal/prismaNamespace.js +193 -0
  108. package/prisma/client/internal/prismaNamespaceBrowser.d.ts +125 -0
  109. package/prisma/client/internal/prismaNamespaceBrowser.js +164 -0
  110. package/prisma/client/models/ApiKey.d.ts +1167 -0
  111. package/prisma/client/models/ApiKey.js +2 -0
  112. package/prisma/client/models/File.d.ts +1248 -0
  113. package/prisma/client/models/File.js +2 -0
  114. package/prisma/client/models/OneTimeToken.d.ts +1083 -0
  115. package/prisma/client/models/OneTimeToken.js +2 -0
  116. package/prisma/client/models/Permission.d.ts +1209 -0
  117. package/prisma/client/models/Permission.js +2 -0
  118. package/prisma/client/models/Role.d.ts +1209 -0
  119. package/prisma/client/models/Role.js +2 -0
  120. package/prisma/client/models/Seeder.d.ts +1023 -0
  121. package/prisma/client/models/Seeder.js +2 -0
  122. package/prisma/client/models.d.ts +7 -0
  123. package/prisma/client/models.js +2 -0
  124. package/queue/bull-queue.d.ts +37 -0
  125. package/queue/bull-queue.js +207 -0
  126. package/queue/memory-queue.d.ts +54 -0
  127. package/queue/memory-queue.js +283 -0
  128. package/resource/index.d.ts +4 -0
  129. package/resource/index.js +20 -0
  130. package/resource/resource-loader.d.ts +26 -0
  131. package/resource/resource-loader.js +161 -0
  132. package/resource/resource-routes.d.ts +3 -0
  133. package/resource/resource-routes.js +174 -0
  134. package/resource/resource-schema.d.ts +33 -0
  135. package/resource/resource-schema.js +186 -0
  136. package/resource/resource-service.d.ts +89 -0
  137. package/resource/resource-service.js +772 -0
  138. package/resources.d.ts +9 -0
  139. package/resources.js +24 -0
  140. package/scheduler/cron-scheduler.d.ts +12 -0
  141. package/scheduler/cron-scheduler.js +73 -0
  142. package/security/account/account-routes.d.ts +2 -0
  143. package/security/account/account-routes.js +104 -0
  144. package/security/account/account-schema.d.ts +290 -0
  145. package/security/account/account-schema.js +166 -0
  146. package/security/account/account-service.d.ts +88 -0
  147. package/security/account/account-service.js +218 -0
  148. package/security/account/index.d.ts +3 -0
  149. package/security/account/index.js +19 -0
  150. package/security/api-key/api-key-auth.d.ts +4 -0
  151. package/security/api-key/api-key-auth.js +66 -0
  152. package/security/api-key/index.d.ts +1 -0
  153. package/security/api-key/index.js +17 -0
  154. package/security/auth-routes.d.ts +2 -0
  155. package/security/auth-routes.js +80 -0
  156. package/security/auth-schema.d.ts +215 -0
  157. package/security/auth-schema.js +129 -0
  158. package/security/auth-service.d.ts +117 -0
  159. package/security/auth-service.js +272 -0
  160. package/security/auth.d.ts +3 -0
  161. package/security/auth.js +127 -0
  162. package/security/basic/basic-auth.d.ts +4 -0
  163. package/security/basic/basic-auth.js +32 -0
  164. package/security/basic/index.d.ts +1 -0
  165. package/security/basic/index.js +17 -0
  166. package/security/create-auth-resources.d.ts +6 -0
  167. package/security/create-auth-resources.js +129 -0
  168. package/security/helper.d.ts +127 -0
  169. package/security/helper.js +329 -0
  170. package/security/index.d.ts +4 -0
  171. package/security/index.js +20 -0
  172. package/security/jwt/index.d.ts +2 -0
  173. package/security/jwt/index.js +18 -0
  174. package/security/jwt/jwt-auth.d.ts +4 -0
  175. package/security/jwt/jwt-auth.js +57 -0
  176. package/security/jwt/jwt-keys.d.ts +7 -0
  177. package/security/jwt/jwt-keys.js +43 -0
  178. package/security/oauth2/create-oauth2-plugin.d.ts +17 -0
  179. package/security/oauth2/create-oauth2-plugin.js +85 -0
  180. package/security/oauth2/index.d.ts +3 -0
  181. package/security/oauth2/index.js +19 -0
  182. package/security/oauth2/oauth2-custom.d.ts +7 -0
  183. package/security/oauth2/oauth2-custom.js +40 -0
  184. package/security/oauth2/oauth2-facebook.d.ts +1 -0
  185. package/security/oauth2/oauth2-facebook.js +30 -0
  186. package/security/oauth2/oauth2-google.d.ts +1 -0
  187. package/security/oauth2/oauth2-google.js +28 -0
  188. package/security/oauth2/oauth2-schema.d.ts +10 -0
  189. package/security/oauth2/oauth2-schema.js +53 -0
  190. package/security/recaptcha/index.d.ts +2 -0
  191. package/security/recaptcha/index.js +18 -0
  192. package/security/recaptcha/recaptcha-verify.d.ts +1 -0
  193. package/security/recaptcha/recaptcha-verify.js +33 -0
  194. package/security/recaptcha/recaptcha.d.ts +2 -0
  195. package/security/recaptcha/recaptcha.js +22 -0
  196. package/security/resources/api-key/model.d.ts +2 -0
  197. package/security/resources/api-key/model.js +63 -0
  198. package/security/resources/api-key/policy.d.ts +2 -0
  199. package/security/resources/api-key/policy.js +26 -0
  200. package/security/resources/api-key/routes.d.ts +2 -0
  201. package/security/resources/api-key/routes.js +15 -0
  202. package/security/resources/api-key/service.d.ts +3 -0
  203. package/security/resources/api-key/service.js +33 -0
  204. package/security/resources/one-time-token/model.d.ts +2 -0
  205. package/security/resources/one-time-token/model.js +32 -0
  206. package/security/resources/permission/model.d.ts +2 -0
  207. package/security/resources/permission/model.js +16 -0
  208. package/security/resources/role/model.d.ts +2 -0
  209. package/security/resources/role/model.js +22 -0
  210. package/security/store/database-security-store.d.ts +5 -0
  211. package/security/store/database-security-store.js +51 -0
  212. package/security/store/redis-security-store.d.ts +5 -0
  213. package/security/store/redis-security-store.js +32 -0
  214. package/seeder/create-seeder.d.ts +21 -0
  215. package/seeder/create-seeder.js +17 -0
  216. package/seeder/index.d.ts +2 -0
  217. package/seeder/index.js +18 -0
  218. package/seeder/resources/seeder/model.d.ts +2 -0
  219. package/seeder/resources/seeder/model.js +38 -0
  220. package/seeder/seeder.d.ts +20 -0
  221. package/seeder/seeder.js +175 -0
  222. package/server/create-server.d.ts +20 -0
  223. package/server/create-server.js +160 -0
  224. package/server/index.d.ts +4 -0
  225. package/server/index.js +20 -0
  226. package/server/info-route.d.ts +2 -0
  227. package/server/info-route.js +18 -0
  228. package/server/info-schema.d.ts +37 -0
  229. package/server/info-schema.js +19 -0
  230. package/server/register-model.d.ts +2 -0
  231. package/server/register-model.js +12 -0
  232. package/server/register-plugin.d.ts +2 -0
  233. package/server/register-plugin.js +13 -0
  234. package/server/register-route.d.ts +3 -0
  235. package/server/register-route.js +74 -0
  236. package/server/schemas.d.ts +3 -0
  237. package/server/schemas.js +30 -0
  238. package/server/swagger.d.ts +3 -0
  239. package/server/swagger.js +122 -0
  240. package/storage/file-route.d.ts +2 -0
  241. package/storage/file-route.js +39 -0
  242. package/storage/file-schema.d.ts +9 -0
  243. package/storage/file-schema.js +42 -0
  244. package/storage/file-service.d.ts +81 -0
  245. package/storage/file-service.js +384 -0
  246. package/storage/filesystem-storage.d.ts +10 -0
  247. package/storage/filesystem-storage.js +128 -0
  248. package/storage/index.d.ts +2 -0
  249. package/storage/index.js +18 -0
  250. package/storage/resources/file/model.d.ts +2 -0
  251. package/storage/resources/file/model.js +75 -0
  252. package/types/application-context.d.ts +20 -0
  253. package/types/application-context.js +2 -0
  254. package/types/auth.d.ts +31 -0
  255. package/types/auth.js +2 -0
  256. package/types/fastify-extensions.d.ts +24 -0
  257. package/types/fastify-extensions.js +4 -0
  258. package/types/generated.d.ts +193 -0
  259. package/types/generated.js +3 -0
  260. package/types/index.d.ts +4 -0
  261. package/types/index.js +20 -0
  262. package/types/server.d.ts +4 -0
  263. package/types/server.js +2 -0
  264. package/utils/export-util.d.ts +8 -0
  265. package/utils/export-util.js +25 -0
  266. package/utils/file-util.d.ts +64 -0
  267. package/utils/file-util.js +141 -0
  268. package/utils/index.d.ts +3 -0
  269. package/utils/index.js +19 -0
  270. package/utils/schema-util.d.ts +20 -0
  271. package/utils/schema-util.js +37 -0
package/resources.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export { default as apiKey } from './security/resources/api-key/model';
2
+ export { default as oneTimeToken } from './security/resources/one-time-token/model';
3
+ export { default as role } from './security/resources/role/model';
4
+ export { default as permission } from './security/resources/permission/model';
5
+ export { default as seeder } from './seeder/resources/seeder/model';
6
+ export { default as file } from './storage/resources/file/model';
7
+ export { default as apiKeyService } from './security/resources/api-key/service';
8
+ export { default as apiKeyRoutes } from './security/resources/api-key/routes';
9
+ export { default as apiKeyPolicy } from './security/resources/api-key/policy';
package/resources.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiKeyPolicy = exports.apiKeyRoutes = exports.apiKeyService = exports.file = exports.seeder = exports.permission = exports.role = exports.oneTimeToken = exports.apiKey = void 0;
7
+ var model_1 = require("./security/resources/api-key/model");
8
+ Object.defineProperty(exports, "apiKey", { enumerable: true, get: function () { return __importDefault(model_1).default; } });
9
+ var model_2 = require("./security/resources/one-time-token/model");
10
+ Object.defineProperty(exports, "oneTimeToken", { enumerable: true, get: function () { return __importDefault(model_2).default; } });
11
+ var model_3 = require("./security/resources/role/model");
12
+ Object.defineProperty(exports, "role", { enumerable: true, get: function () { return __importDefault(model_3).default; } });
13
+ var model_4 = require("./security/resources/permission/model");
14
+ Object.defineProperty(exports, "permission", { enumerable: true, get: function () { return __importDefault(model_4).default; } });
15
+ var model_5 = require("./seeder/resources/seeder/model");
16
+ Object.defineProperty(exports, "seeder", { enumerable: true, get: function () { return __importDefault(model_5).default; } });
17
+ var model_6 = require("./storage/resources/file/model");
18
+ Object.defineProperty(exports, "file", { enumerable: true, get: function () { return __importDefault(model_6).default; } });
19
+ var service_1 = require("./security/resources/api-key/service");
20
+ Object.defineProperty(exports, "apiKeyService", { enumerable: true, get: function () { return __importDefault(service_1).default; } });
21
+ var routes_1 = require("./security/resources/api-key/routes");
22
+ Object.defineProperty(exports, "apiKeyRoutes", { enumerable: true, get: function () { return __importDefault(routes_1).default; } });
23
+ var policy_1 = require("./security/resources/api-key/policy");
24
+ Object.defineProperty(exports, "apiKeyPolicy", { enumerable: true, get: function () { return __importDefault(policy_1).default; } });
@@ -0,0 +1,12 @@
1
+ import { CronJob, CronJobParams } from 'cron';
2
+ import { Scheduler } from '@appweaver/common';
3
+ export declare class CronScheduler extends Scheduler<CronJob, CronJobParams> {
4
+ onDestroy(): Promise<void>;
5
+ startAll(): void;
6
+ stopAll(): Promise<void>;
7
+ addJob(jobParams: CronJobParams): string;
8
+ getJob(jobId: string): CronJob | undefined;
9
+ startJob(jobId: string): boolean;
10
+ stopJob(jobId: string): Promise<boolean>;
11
+ removeJob(jobId: string): Promise<boolean>;
12
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CronScheduler = void 0;
4
+ const cron_1 = require("cron");
5
+ const common_1 = require("@appweaver/common");
6
+ class CronScheduler extends common_1.Scheduler {
7
+ /** @internal */
8
+ _jobs = {};
9
+ async onDestroy() {
10
+ await this.stopAll();
11
+ }
12
+ startAll() {
13
+ for (const job of Object.values(this._jobs)) {
14
+ if (!job.isActive) {
15
+ job.start();
16
+ }
17
+ }
18
+ }
19
+ async stopAll() {
20
+ const stopActions = [];
21
+ for (const job of Object.values(this._jobs)) {
22
+ if (!job.isActive) {
23
+ return;
24
+ }
25
+ const stopAction = job.stop();
26
+ if (stopAction) {
27
+ stopActions.push(stopAction);
28
+ }
29
+ }
30
+ await Promise.allSettled(stopActions);
31
+ }
32
+ addJob(jobParams) {
33
+ const jobId = (0, common_1.uuid)();
34
+ this._jobs[jobId] = cron_1.CronJob.from({
35
+ start: common_1.config.SCHEDULER_AUTO_START_JOB,
36
+ waitForCompletion: true,
37
+ errorHandler: (e) => {
38
+ common_1.logger.error(e, `Job handler error`);
39
+ },
40
+ ...jobParams
41
+ });
42
+ return jobId;
43
+ }
44
+ getJob(jobId) {
45
+ return this._jobs[jobId];
46
+ }
47
+ startJob(jobId) {
48
+ const job = this._jobs[jobId];
49
+ if (!job) {
50
+ return false;
51
+ }
52
+ job.start();
53
+ return true;
54
+ }
55
+ async stopJob(jobId) {
56
+ const job = this._jobs[jobId];
57
+ if (!job) {
58
+ return false;
59
+ }
60
+ await job.stop();
61
+ return true;
62
+ }
63
+ async removeJob(jobId) {
64
+ const job = this._jobs[jobId];
65
+ if (!job) {
66
+ return false;
67
+ }
68
+ await job.stop();
69
+ delete this._jobs[jobId];
70
+ return true;
71
+ }
72
+ }
73
+ exports.CronScheduler = CronScheduler;
@@ -0,0 +1,2 @@
1
+ import { Server } from '../../types';
2
+ export declare function accountRoutes(server: Server): void;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accountRoutes = accountRoutes;
4
+ const common_1 = require("@appweaver/common");
5
+ const account_schema_1 = require("./account-schema");
6
+ const account_service_1 = require("./account-service");
7
+ const context_1 = require("../../context");
8
+ function accountRoutes(server) {
9
+ const { authenticate, currentUser, recaptcha } = server;
10
+ const accountService = (0, context_1.inject)(account_service_1.AccountService);
11
+ if (common_1.config.SECURITY_ACCOUNT_VERIFY_EMAIL_ENABLED) {
12
+ server.post('/send-verify-email', {
13
+ schema: account_schema_1.sendEmailVerificationSchema,
14
+ onRequest: authenticate(),
15
+ config: {
16
+ rateLimit: {
17
+ max: 10,
18
+ timeWindow: 900000 // 15 minutes
19
+ }
20
+ }
21
+ }, async (request, reply) => {
22
+ const authUser = currentUser();
23
+ const message = await accountService.sendEmailVerification(authUser, request.body.redirectToUrl, request.body.verificationType);
24
+ return reply.send({ message });
25
+ });
26
+ server.post('/verify-email', {
27
+ schema: account_schema_1.verifyEmailSchema,
28
+ config: {
29
+ rateLimit: {
30
+ max: 12
31
+ }
32
+ }
33
+ }, async (request, reply) => {
34
+ const message = await accountService.verifyEmailAddress(request.body.token);
35
+ return reply.send({ message });
36
+ });
37
+ server.get('/verify-email-redirect', {
38
+ schema: account_schema_1.verifyEmailRedirectSchema,
39
+ config: {
40
+ rateLimit: {
41
+ max: 12
42
+ }
43
+ }
44
+ }, async (request, reply) => {
45
+ const { redirectUrl, status, message } = await accountService.verifyEmailAddressRedirect(request.query.token);
46
+ return reply.redirect(`${redirectUrl}status=${status}&message=${message}`);
47
+ });
48
+ }
49
+ if (common_1.config.SECURITY_ACCOUNT_RESET_PASSWORD_ENABLED) {
50
+ server.post('/send-reset-password', {
51
+ schema: account_schema_1.sendResetPasswordSchema,
52
+ onRequest: recaptcha,
53
+ config: {
54
+ rateLimit: {
55
+ max: 10,
56
+ timeWindow: 900000 // 15 minutes
57
+ }
58
+ }
59
+ }, async (request, reply) => {
60
+ const message = await accountService.sendResetPassword(request.body.email, request.body.redirectToUrl);
61
+ return reply.send({ message });
62
+ });
63
+ server.post('/reset-password', {
64
+ schema: account_schema_1.resetPasswordSchema,
65
+ onRequest: recaptcha,
66
+ config: {
67
+ rateLimit: {
68
+ max: 12
69
+ }
70
+ }
71
+ }, async (request, reply) => {
72
+ const message = await accountService.resetPassword(request.body.token, request.body.newPassword);
73
+ return reply.send({ message });
74
+ });
75
+ }
76
+ if (common_1.config.SECURITY_ACCOUNT_2FA_ENABLED) {
77
+ server.post('/send-2fa-code', {
78
+ schema: account_schema_1.send2FACodeSchema,
79
+ onRequest: authenticate([common_1.AuthType.Jwt]),
80
+ config: {
81
+ rateLimit: {
82
+ max: 10,
83
+ timeWindow: 900000 // 15 minutes
84
+ }
85
+ }
86
+ }, async (request, reply) => {
87
+ const authUser = currentUser();
88
+ const response = await accountService.send2FACode(authUser, request.body.purpose);
89
+ return reply.send(response);
90
+ });
91
+ server.post('/verify-2fa-code', {
92
+ schema: account_schema_1.verify2FACodeSchema,
93
+ onRequest: authenticate([common_1.AuthType.Jwt]),
94
+ config: {
95
+ rateLimit: {
96
+ max: 12
97
+ }
98
+ }
99
+ }, async (request, reply) => {
100
+ const response = await accountService.verify2FACode(request.body.challengeId, request.body.code);
101
+ return reply.send(response);
102
+ });
103
+ }
104
+ }
@@ -0,0 +1,290 @@
1
+ import { VerificationType } from './account-service';
2
+ export declare const AccountSendEmailVerificationRequest: import("@sinclair/typebox").TObject<{
3
+ redirectToUrl: import("@sinclair/typebox").TString;
4
+ verificationType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<VerificationType>>;
5
+ }>;
6
+ export declare const AccountEmailVerificationRequest: import("@sinclair/typebox").TObject<{
7
+ token: import("@sinclair/typebox").TString;
8
+ }>;
9
+ export declare const AccountSendResetPasswordRequest: import("@sinclair/typebox").TObject<{
10
+ redirectToUrl: import("@sinclair/typebox").TString;
11
+ email: import("@sinclair/typebox").TString;
12
+ }>;
13
+ export declare const AccountResetPasswordRequest: import("@sinclair/typebox").TObject<{
14
+ token: import("@sinclair/typebox").TString;
15
+ newPassword: import("@sinclair/typebox").TString;
16
+ }>;
17
+ export declare const AccountSend2FACodeRequest: import("@sinclair/typebox").TObject<{
18
+ purpose: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ }>;
20
+ export declare const AccountSend2FAResponse: import("@sinclair/typebox").TObject<{
21
+ challengeId: import("@sinclair/typebox").TString;
22
+ expiresIn: import("@sinclair/typebox").TInteger;
23
+ }>;
24
+ export declare const AccountVerify2FARequest: import("@sinclair/typebox").TObject<{
25
+ challengeId: import("@sinclair/typebox").TString;
26
+ code: import("@sinclair/typebox").TString;
27
+ }>;
28
+ export declare const AccountVerify2FAResponse: import("@sinclair/typebox").TObject<{
29
+ token: import("@sinclair/typebox").TString;
30
+ expiresIn: import("@sinclair/typebox").TInteger;
31
+ }>;
32
+ export declare const AccountStatusResponse: import("@sinclair/typebox").TObject<{
33
+ message: import("@sinclair/typebox").TString;
34
+ }>;
35
+ export declare const sendEmailVerificationSchema: {
36
+ tags: string[];
37
+ security: any[];
38
+ summary: string;
39
+ description: string;
40
+ response: {
41
+ '4xx': {
42
+ description: string;
43
+ content: {
44
+ 'application/json': {
45
+ schema: import("@sinclair/typebox").TObject<{
46
+ errorCode: import("@sinclair/typebox").TInteger;
47
+ message: import("@sinclair/typebox").TString;
48
+ }>;
49
+ };
50
+ };
51
+ };
52
+ '5xx': {
53
+ description: string;
54
+ content: {
55
+ 'application/json': {
56
+ schema: import("@sinclair/typebox").TObject<{
57
+ errorCode: import("@sinclair/typebox").TInteger;
58
+ message: import("@sinclair/typebox").TString;
59
+ }>;
60
+ };
61
+ };
62
+ };
63
+ 200: import("@sinclair/typebox").TObject<{
64
+ message: import("@sinclair/typebox").TString;
65
+ }>;
66
+ };
67
+ body: import("@sinclair/typebox").TObject<{
68
+ redirectToUrl: import("@sinclair/typebox").TString;
69
+ verificationType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<VerificationType>>;
70
+ }>;
71
+ };
72
+ export declare const verifyEmailSchema: {
73
+ tags: string[];
74
+ summary: string;
75
+ description: string;
76
+ response: {
77
+ '4xx': {
78
+ description: string;
79
+ content: {
80
+ 'application/json': {
81
+ schema: import("@sinclair/typebox").TObject<{
82
+ errorCode: import("@sinclair/typebox").TInteger;
83
+ message: import("@sinclair/typebox").TString;
84
+ }>;
85
+ };
86
+ };
87
+ };
88
+ '5xx': {
89
+ description: string;
90
+ content: {
91
+ 'application/json': {
92
+ schema: import("@sinclair/typebox").TObject<{
93
+ errorCode: import("@sinclair/typebox").TInteger;
94
+ message: import("@sinclair/typebox").TString;
95
+ }>;
96
+ };
97
+ };
98
+ };
99
+ 200: import("@sinclair/typebox").TObject<{
100
+ message: import("@sinclair/typebox").TString;
101
+ }>;
102
+ };
103
+ body: import("@sinclair/typebox").TObject<{
104
+ token: import("@sinclair/typebox").TString;
105
+ }>;
106
+ };
107
+ export declare const verifyEmailRedirectSchema: {
108
+ tags: string[];
109
+ summary: string;
110
+ description: string;
111
+ querystring: import("@sinclair/typebox").TObject<{
112
+ token: import("@sinclair/typebox").TString;
113
+ }>;
114
+ response: {
115
+ '4xx': {
116
+ description: string;
117
+ content: {
118
+ 'application/json': {
119
+ schema: import("@sinclair/typebox").TObject<{
120
+ errorCode: import("@sinclair/typebox").TInteger;
121
+ message: import("@sinclair/typebox").TString;
122
+ }>;
123
+ };
124
+ };
125
+ };
126
+ '5xx': {
127
+ description: string;
128
+ content: {
129
+ 'application/json': {
130
+ schema: import("@sinclair/typebox").TObject<{
131
+ errorCode: import("@sinclair/typebox").TInteger;
132
+ message: import("@sinclair/typebox").TString;
133
+ }>;
134
+ };
135
+ };
136
+ };
137
+ 302: {
138
+ description: string;
139
+ };
140
+ };
141
+ };
142
+ export declare const sendResetPasswordSchema: {
143
+ tags: string[];
144
+ header: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>;
145
+ summary: string;
146
+ description: string;
147
+ response: {
148
+ '4xx': {
149
+ description: string;
150
+ content: {
151
+ 'application/json': {
152
+ schema: import("@sinclair/typebox").TObject<{
153
+ errorCode: import("@sinclair/typebox").TInteger;
154
+ message: import("@sinclair/typebox").TString;
155
+ }>;
156
+ };
157
+ };
158
+ };
159
+ '5xx': {
160
+ description: string;
161
+ content: {
162
+ 'application/json': {
163
+ schema: import("@sinclair/typebox").TObject<{
164
+ errorCode: import("@sinclair/typebox").TInteger;
165
+ message: import("@sinclair/typebox").TString;
166
+ }>;
167
+ };
168
+ };
169
+ };
170
+ 200: import("@sinclair/typebox").TObject<{
171
+ message: import("@sinclair/typebox").TString;
172
+ }>;
173
+ };
174
+ body: import("@sinclair/typebox").TObject<{
175
+ redirectToUrl: import("@sinclair/typebox").TString;
176
+ email: import("@sinclair/typebox").TString;
177
+ }>;
178
+ };
179
+ export declare const resetPasswordSchema: {
180
+ tags: string[];
181
+ header: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>;
182
+ summary: string;
183
+ description: string;
184
+ response: {
185
+ '4xx': {
186
+ description: string;
187
+ content: {
188
+ 'application/json': {
189
+ schema: import("@sinclair/typebox").TObject<{
190
+ errorCode: import("@sinclair/typebox").TInteger;
191
+ message: import("@sinclair/typebox").TString;
192
+ }>;
193
+ };
194
+ };
195
+ };
196
+ '5xx': {
197
+ description: string;
198
+ content: {
199
+ 'application/json': {
200
+ schema: import("@sinclair/typebox").TObject<{
201
+ errorCode: import("@sinclair/typebox").TInteger;
202
+ message: import("@sinclair/typebox").TString;
203
+ }>;
204
+ };
205
+ };
206
+ };
207
+ 200: import("@sinclair/typebox").TObject<{
208
+ message: import("@sinclair/typebox").TString;
209
+ }>;
210
+ };
211
+ body: import("@sinclair/typebox").TObject<{
212
+ token: import("@sinclair/typebox").TString;
213
+ newPassword: import("@sinclair/typebox").TString;
214
+ }>;
215
+ };
216
+ export declare const send2FACodeSchema: {
217
+ tags: string[];
218
+ security: any[];
219
+ summary: string;
220
+ description: string;
221
+ response: {
222
+ '4xx': {
223
+ description: string;
224
+ content: {
225
+ 'application/json': {
226
+ schema: import("@sinclair/typebox").TObject<{
227
+ errorCode: import("@sinclair/typebox").TInteger;
228
+ message: import("@sinclair/typebox").TString;
229
+ }>;
230
+ };
231
+ };
232
+ };
233
+ '5xx': {
234
+ description: string;
235
+ content: {
236
+ 'application/json': {
237
+ schema: import("@sinclair/typebox").TObject<{
238
+ errorCode: import("@sinclair/typebox").TInteger;
239
+ message: import("@sinclair/typebox").TString;
240
+ }>;
241
+ };
242
+ };
243
+ };
244
+ 200: import("@sinclair/typebox").TObject<{
245
+ challengeId: import("@sinclair/typebox").TString;
246
+ expiresIn: import("@sinclair/typebox").TInteger;
247
+ }>;
248
+ };
249
+ body: import("@sinclair/typebox").TObject<{
250
+ purpose: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
251
+ }>;
252
+ };
253
+ export declare const verify2FACodeSchema: {
254
+ tags: string[];
255
+ security: any[];
256
+ summary: string;
257
+ description: string;
258
+ response: {
259
+ '4xx': {
260
+ description: string;
261
+ content: {
262
+ 'application/json': {
263
+ schema: import("@sinclair/typebox").TObject<{
264
+ errorCode: import("@sinclair/typebox").TInteger;
265
+ message: import("@sinclair/typebox").TString;
266
+ }>;
267
+ };
268
+ };
269
+ };
270
+ '5xx': {
271
+ description: string;
272
+ content: {
273
+ 'application/json': {
274
+ schema: import("@sinclair/typebox").TObject<{
275
+ errorCode: import("@sinclair/typebox").TInteger;
276
+ message: import("@sinclair/typebox").TString;
277
+ }>;
278
+ };
279
+ };
280
+ };
281
+ 200: import("@sinclair/typebox").TObject<{
282
+ token: import("@sinclair/typebox").TString;
283
+ expiresIn: import("@sinclair/typebox").TInteger;
284
+ }>;
285
+ };
286
+ body: import("@sinclair/typebox").TObject<{
287
+ challengeId: import("@sinclair/typebox").TString;
288
+ code: import("@sinclair/typebox").TString;
289
+ }>;
290
+ };