aboutsummaryrefslogtreecommitdiffstats
path: root/contracts
diff options
context:
space:
mode:
Diffstat (limited to 'contracts')
-rw-r--r--contracts/auth.ts103
-rw-r--r--contracts/drive.ts13
-rw-r--r--contracts/env.ts23
-rw-r--r--contracts/events.ts33
-rw-r--r--contracts/hash.ts26
-rw-r--r--contracts/mail.ts13
-rw-r--r--contracts/tests.ts19
7 files changed, 230 insertions, 0 deletions
diff --git a/contracts/auth.ts b/contracts/auth.ts
new file mode 100644
index 0000000..1625116
--- /dev/null
+++ b/contracts/auth.ts
@@ -0,0 +1,103 @@
1/**
2 * Contract source: https://git.io/JOdz5
3 *
4 * Feel free to let us know via PR, if you find something broken in this
5 * file.
6 */
7
8import User from 'App/Models/User';
9import { JWTGuardConfig, JWTGuardContract } from '@ioc:Adonis/Addons/Jwt';
10
11declare module '@ioc:Adonis/Addons/Auth' {
12 /*
13 |--------------------------------------------------------------------------
14 | Providers
15 |--------------------------------------------------------------------------
16 |
17 | The providers are used to fetch users. The Auth module comes pre-bundled
18 | with two providers that are `Lucid` and `Database`. Both uses database
19 | to fetch user details.
20 |
21 | You can also create and register your own custom providers.
22 |
23 */
24 interface ProvidersList {
25 /*
26 |--------------------------------------------------------------------------
27 | User Provider
28 |--------------------------------------------------------------------------
29 |
30 | The following provider uses Lucid models as a driver for fetching user
31 | details from the database for authentication.
32 |
33 | You can create multiple providers using the same underlying driver with
34 | different Lucid models.
35 |
36 */
37 user: {
38 implementation: LucidProviderContract<typeof User>;
39 config: LucidProviderConfig<typeof User>;
40 };
41 }
42
43 /*
44 |--------------------------------------------------------------------------
45 | Guards
46 |--------------------------------------------------------------------------
47 |
48 | The guards are used for authenticating users using different drivers.
49 | The auth module comes with 3 different guards.
50 |
51 | - SessionGuardContract
52 | - BasicAuthGuardContract
53 | - OATGuardContract ( Opaque access token )
54 |
55 | Every guard needs a provider for looking up users from the database.
56 |
57 */
58 interface GuardsList {
59 /*
60 |--------------------------------------------------------------------------
61 | Web Guard
62 |--------------------------------------------------------------------------
63 |
64 | The web guard uses sessions for maintaining user login state. It uses
65 | the `user` provider for fetching user details.
66 |
67 */
68 web: {
69 implementation: SessionGuardContract<'user', 'web'>;
70 config: SessionGuardConfig<'user'>;
71 };
72 /*
73 |--------------------------------------------------------------------------
74 | OAT Guard
75 |--------------------------------------------------------------------------
76 |
77 | OAT, stands for (Opaque access tokens) guard uses database backed tokens
78 | to authenticate requests.
79 |
80 */
81 api: {
82 implementation: OATGuardContract<'user', 'api'>;
83 config: OATGuardConfig<'user'>;
84 };
85 /*
86 |--------------------------------------------------------------------------
87 | Basic Auth Guard
88 |--------------------------------------------------------------------------
89 |
90 | The basic guard uses basic auth for maintaining user login state. It uses
91 | the `user` provider for fetching user details.
92 |
93 */
94 basic: {
95 implementation: BasicAuthGuardContract<'user', 'basic'>;
96 config: BasicAuthGuardConfig<'user'>;
97 };
98 jwt: {
99 implementation: JWTGuardContract<'user', 'api'>;
100 config: JWTGuardConfig<'user'>;
101 };
102 }
103}
diff --git a/contracts/drive.ts b/contracts/drive.ts
new file mode 100644
index 0000000..47b70f3
--- /dev/null
+++ b/contracts/drive.ts
@@ -0,0 +1,13 @@
1/**
2 * Contract source: https://git.io/JBt3I
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferDisksFromConfig } from '@adonisjs/core/build/config';
9import driveConfig from '../config/drive';
10
11declare module '@ioc:Adonis/Core/Drive' {
12 interface DisksList extends InferDisksFromConfig<typeof driveConfig> {}
13}
diff --git a/contracts/env.ts b/contracts/env.ts
new file mode 100644
index 0000000..e1fd92e
--- /dev/null
+++ b/contracts/env.ts
@@ -0,0 +1,23 @@
1/**
2 * Contract source: https://git.io/JTm6U
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8declare module '@ioc:Adonis/Core/Env' {
9 /*
10 |--------------------------------------------------------------------------
11 | Getting types for validated environment variables
12 |--------------------------------------------------------------------------
13 |
14 | The `default` export from the "../env.ts" file exports types for the
15 | validated environment variables. Here we merge them with the `EnvTypes`
16 | interface so that you can enjoy intellisense when using the "Env"
17 | module.
18 |
19 */
20
21 type CustomTypes = typeof import('../env').default;
22 interface EnvTypes extends CustomTypes {}
23}
diff --git a/contracts/events.ts b/contracts/events.ts
new file mode 100644
index 0000000..541bdc2
--- /dev/null
+++ b/contracts/events.ts
@@ -0,0 +1,33 @@
1/**
2 * Contract source: https://git.io/JfefG
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import User from 'App/Models/User';
9
10declare module '@ioc:Adonis/Core/Event' {
11 /*
12 |--------------------------------------------------------------------------
13 | Define typed events
14 |--------------------------------------------------------------------------
15 |
16 | You can define types for events inside the following interface and
17 | AdonisJS will make sure that all listeners and emit calls adheres
18 | to the defined types.
19 |
20 | For example:
21 |
22 | interface EventsList {
23 | 'new:user': UserModel
24 | }
25 |
26 | Now calling `Event.emit('new:user')` will statically ensure that passed value is
27 | an instance of the the UserModel only.
28 |
29 */
30 interface EventsList {
31 'forgot:password': { user: User; token: string };
32 }
33}
diff --git a/contracts/hash.ts b/contracts/hash.ts
new file mode 100644
index 0000000..af336c7
--- /dev/null
+++ b/contracts/hash.ts
@@ -0,0 +1,26 @@
1/**
2 * Contract source: https://git.io/Jfefs
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferListFromConfig } from '@adonisjs/core/build/config';
9import hashConfig from '../config/hash';
10
11declare module '@ioc:Adonis/Core/Hash' {
12 interface HashersList extends InferListFromConfig<typeof hashConfig> {
13 bcrypt: {
14 config: BcryptConfig;
15 implementation: BcryptContract;
16 };
17 argon: {
18 config: ArgonConfig;
19 implementation: ArgonContract;
20 };
21 legacy: {
22 config: BcryptConfig;
23 implementation: HashDriverContract;
24 };
25 }
26}
diff --git a/contracts/mail.ts b/contracts/mail.ts
new file mode 100644
index 0000000..0ea307f
--- /dev/null
+++ b/contracts/mail.ts
@@ -0,0 +1,13 @@
1/**
2 * Contract source: https://git.io/JvgAT
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferMailersFromConfig } from '@adonisjs/mail/build/config';
9import mailConfig from '../config/mail';
10
11declare module '@ioc:Adonis/Addons/Mail' {
12 interface MailersList extends InferMailersFromConfig<typeof mailConfig> {}
13}
diff --git a/contracts/tests.ts b/contracts/tests.ts
new file mode 100644
index 0000000..fec995d
--- /dev/null
+++ b/contracts/tests.ts
@@ -0,0 +1,19 @@
1/**
2 * Contract source: https://bit.ly/3DP1ypf
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import '@japa/runner';
9
10declare module '@japa/runner' {
11 interface TestContext {
12 // Extend context
13 }
14
15 // eslint-disable-next-line @typescript-eslint/no-unused-vars
16 interface Test<TestData> {
17 // Extend test
18 }
19}