@warlock.js/auth 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.
- package/cjs/commands/index.d.ts +2 -0
- package/cjs/commands/index.d.ts.map +1 -0
- package/cjs/commands/index.js +3 -0
- package/cjs/commands/index.js.map +1 -0
- package/cjs/contracts/auth-contract.d.ts +23 -0
- package/cjs/contracts/auth-contract.d.ts.map +1 -0
- package/cjs/contracts/index.d.ts +3 -0
- package/cjs/contracts/index.d.ts.map +1 -0
- package/cjs/contracts/types.d.ts +23 -0
- package/cjs/contracts/types.d.ts.map +1 -0
- package/cjs/controllers/guest-login.d.ts +3 -0
- package/cjs/controllers/guest-login.d.ts.map +1 -0
- package/cjs/controllers/guest-login.js +5 -0
- package/cjs/controllers/guest-login.js.map +1 -0
- package/cjs/controllers/index.d.ts +2 -0
- package/cjs/controllers/index.d.ts.map +1 -0
- package/cjs/index.d.ts +7 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/middleware/auth-middleware.d.ts +2 -0
- package/cjs/middleware/auth-middleware.d.ts.map +1 -0
- package/cjs/middleware/auth-middleware.js +79 -0
- package/cjs/middleware/auth-middleware.js.map +1 -0
- package/cjs/middleware/index.d.ts +2 -0
- package/cjs/middleware/index.d.ts.map +1 -0
- package/cjs/models/access-token/access-token.d.ts +9 -0
- package/cjs/models/access-token/access-token.d.ts.map +1 -0
- package/cjs/models/access-token/access-token.js +7 -0
- package/cjs/models/access-token/access-token.js.map +1 -0
- package/cjs/models/access-token/index.d.ts +3 -0
- package/cjs/models/access-token/index.d.ts.map +1 -0
- package/cjs/models/access-token/migration.d.ts +6 -0
- package/cjs/models/access-token/migration.d.ts.map +1 -0
- package/cjs/models/access-token/migration.js +7 -0
- package/cjs/models/access-token/migration.js.map +1 -0
- package/cjs/models/auth.d.ts +25 -0
- package/cjs/models/auth.d.ts.map +1 -0
- package/cjs/models/auth.js +57 -0
- package/cjs/models/auth.js.map +1 -0
- package/cjs/models/casts/cast-password.d.ts +7 -0
- package/cjs/models/casts/cast-password.d.ts.map +1 -0
- package/cjs/models/casts/cast-password.js +9 -0
- package/cjs/models/casts/cast-password.js.map +1 -0
- package/cjs/models/casts/index.d.ts +2 -0
- package/cjs/models/casts/index.d.ts.map +1 -0
- package/cjs/models/guest/guest.d.ts +26 -0
- package/cjs/models/guest/guest.d.ts.map +1 -0
- package/cjs/models/guest/guest.js +39 -0
- package/cjs/models/guest/guest.js.map +1 -0
- package/cjs/models/guest/index.d.ts +3 -0
- package/cjs/models/guest/index.d.ts.map +1 -0
- package/cjs/models/guest/migration.d.ts +7 -0
- package/cjs/models/guest/migration.d.ts.map +1 -0
- package/cjs/models/guest/migration.js +8 -0
- package/cjs/models/guest/migration.js.map +1 -0
- package/cjs/models/index.d.ts +5 -0
- package/cjs/models/index.d.ts.map +1 -0
- package/cjs/services/generate-guest-token.d.ts +2 -0
- package/cjs/services/generate-guest-token.d.ts.map +1 -0
- package/cjs/services/generate-guest-token.js +11 -0
- package/cjs/services/generate-guest-token.js.map +1 -0
- package/cjs/services/generate-jwt-secret.d.ts +2 -0
- package/cjs/services/generate-jwt-secret.d.ts.map +1 -0
- package/cjs/services/generate-jwt-secret.js +26 -0
- package/cjs/services/generate-jwt-secret.js.map +1 -0
- package/cjs/services/index.d.ts +4 -0
- package/cjs/services/index.d.ts.map +1 -0
- package/cjs/services/jwt.d.ts +23 -0
- package/cjs/services/jwt.d.ts.map +1 -0
- package/cjs/services/jwt.js +39 -0
- package/cjs/services/jwt.js.map +1 -0
- package/esm/commands/index.d.ts +2 -0
- package/esm/commands/index.d.ts.map +1 -0
- package/esm/commands/index.js +3 -0
- package/esm/commands/index.js.map +1 -0
- package/esm/contracts/auth-contract.d.ts +23 -0
- package/esm/contracts/auth-contract.d.ts.map +1 -0
- package/esm/contracts/index.d.ts +3 -0
- package/esm/contracts/index.d.ts.map +1 -0
- package/esm/contracts/types.d.ts +23 -0
- package/esm/contracts/types.d.ts.map +1 -0
- package/esm/controllers/guest-login.d.ts +3 -0
- package/esm/controllers/guest-login.d.ts.map +1 -0
- package/esm/controllers/guest-login.js +5 -0
- package/esm/controllers/guest-login.js.map +1 -0
- package/esm/controllers/index.d.ts +2 -0
- package/esm/controllers/index.d.ts.map +1 -0
- package/esm/index.d.ts +7 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/middleware/auth-middleware.d.ts +2 -0
- package/esm/middleware/auth-middleware.d.ts.map +1 -0
- package/esm/middleware/auth-middleware.js +79 -0
- package/esm/middleware/auth-middleware.js.map +1 -0
- package/esm/middleware/index.d.ts +2 -0
- package/esm/middleware/index.d.ts.map +1 -0
- package/esm/models/access-token/access-token.d.ts +9 -0
- package/esm/models/access-token/access-token.d.ts.map +1 -0
- package/esm/models/access-token/access-token.js +7 -0
- package/esm/models/access-token/access-token.js.map +1 -0
- package/esm/models/access-token/index.d.ts +3 -0
- package/esm/models/access-token/index.d.ts.map +1 -0
- package/esm/models/access-token/migration.d.ts +6 -0
- package/esm/models/access-token/migration.d.ts.map +1 -0
- package/esm/models/access-token/migration.js +7 -0
- package/esm/models/access-token/migration.js.map +1 -0
- package/esm/models/auth.d.ts +25 -0
- package/esm/models/auth.d.ts.map +1 -0
- package/esm/models/auth.js +57 -0
- package/esm/models/auth.js.map +1 -0
- package/esm/models/casts/cast-password.d.ts +7 -0
- package/esm/models/casts/cast-password.d.ts.map +1 -0
- package/esm/models/casts/cast-password.js +9 -0
- package/esm/models/casts/cast-password.js.map +1 -0
- package/esm/models/casts/index.d.ts +2 -0
- package/esm/models/casts/index.d.ts.map +1 -0
- package/esm/models/guest/guest.d.ts +26 -0
- package/esm/models/guest/guest.d.ts.map +1 -0
- package/esm/models/guest/guest.js +39 -0
- package/esm/models/guest/guest.js.map +1 -0
- package/esm/models/guest/index.d.ts +3 -0
- package/esm/models/guest/index.d.ts.map +1 -0
- package/esm/models/guest/migration.d.ts +7 -0
- package/esm/models/guest/migration.d.ts.map +1 -0
- package/esm/models/guest/migration.js +8 -0
- package/esm/models/guest/migration.js.map +1 -0
- package/esm/models/index.d.ts +5 -0
- package/esm/models/index.d.ts.map +1 -0
- package/esm/services/generate-guest-token.d.ts +2 -0
- package/esm/services/generate-guest-token.d.ts.map +1 -0
- package/esm/services/generate-guest-token.js +11 -0
- package/esm/services/generate-guest-token.js.map +1 -0
- package/esm/services/generate-jwt-secret.d.ts +2 -0
- package/esm/services/generate-jwt-secret.d.ts.map +1 -0
- package/esm/services/generate-jwt-secret.js +26 -0
- package/esm/services/generate-jwt-secret.js.map +1 -0
- package/esm/services/index.d.ts +4 -0
- package/esm/services/index.d.ts.map +1 -0
- package/esm/services/jwt.d.ts +23 -0
- package/esm/services/jwt.d.ts.map +1 -0
- package/esm/services/jwt.js +39 -0
- package/esm/services/jwt.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type SignerOptions, type VerifierOptions } from "fast-jwt";
|
|
2
|
+
export declare const jwt: {
|
|
3
|
+
/**
|
|
4
|
+
* Generate a new JWT token for the user.
|
|
5
|
+
* @param payload The payload to encode in the JWT token.
|
|
6
|
+
*/
|
|
7
|
+
generate(payload: any, { key, algorithm, ...options }?: any): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* Verify the given token.
|
|
10
|
+
* @param token The JWT token to verify.
|
|
11
|
+
* @returns The decoded token payload if verification is successful.
|
|
12
|
+
*/
|
|
13
|
+
verify(token: string, { key, algorithms, ...options }?: any): Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a new refresh token for the user.
|
|
16
|
+
*/
|
|
17
|
+
generateRefreshToken(payload: any, { key, expiresIn, algorithm, ...options }?: any): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Verify the given refresh token.
|
|
20
|
+
*/
|
|
21
|
+
verifyRefreshToken(token: string, { key, algorithms, ...options }?: any): Promise<any>;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/services/jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAWlB,eAAO,MAAM,GAAG;IACd;;;OAGG;sBAEQ,GAAG,yCAMX,QAAQ,MAAM,CAAC;IAOlB;;;;OAIG;kBAEM,MAAM;IAYf;;OAEG;kCAEQ,GAAG,oDAOX,QAAQ,MAAM,CAAC;IAKlB;;OAEG;8BAEM,MAAM;CAUhB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';var config=require('@mongez/config'),fastJwt=require('fast-jwt');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var config__default=/*#__PURE__*/_interopDefault(config);const getSecretKey = () => config__default.default.get("auth.jwt.secret");
|
|
2
|
+
const getAlgorithm = () => config__default.default.get("auth.jwt.algorithm");
|
|
3
|
+
const getRefreshSecretKey = () => config__default.default.get("auth.jwt.refresh.secret");
|
|
4
|
+
// Assuming there's a separate config for refresh token validity, for example, '7d' for 7 days
|
|
5
|
+
const getRefreshTokenValidity = () => config__default.default.get("auth.jwt.refresh.expiresIn");
|
|
6
|
+
const jwt = {
|
|
7
|
+
/**
|
|
8
|
+
* Generate a new JWT token for the user.
|
|
9
|
+
* @param payload The payload to encode in the JWT token.
|
|
10
|
+
*/
|
|
11
|
+
async generate(payload, { key = getSecretKey(), algorithm = getAlgorithm(), ...options } = {}) {
|
|
12
|
+
// Create a signer function with predefined options
|
|
13
|
+
const sign = fastJwt.createSigner({ key, ...options, algorithm });
|
|
14
|
+
return sign({ ...payload });
|
|
15
|
+
},
|
|
16
|
+
/**
|
|
17
|
+
* Verify the given token.
|
|
18
|
+
* @param token The JWT token to verify.
|
|
19
|
+
* @returns The decoded token payload if verification is successful.
|
|
20
|
+
*/
|
|
21
|
+
async verify(token, { key = getSecretKey(), algorithms = getAlgorithm() ? [getAlgorithm()] : undefined, ...options } = {}) {
|
|
22
|
+
const verify = fastJwt.createVerifier({ key, ...options, algorithms });
|
|
23
|
+
return await verify(token);
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* Generate a new refresh token for the user.
|
|
27
|
+
*/
|
|
28
|
+
async generateRefreshToken(payload, { key = getRefreshSecretKey(), expiresIn = getRefreshTokenValidity(), algorithm = getAlgorithm(), ...options } = {}) {
|
|
29
|
+
const sign = fastJwt.createSigner({ key, expiresIn, algorithm, ...options });
|
|
30
|
+
return sign({ ...payload });
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* Verify the given refresh token.
|
|
34
|
+
*/
|
|
35
|
+
async verifyRefreshToken(token, { key = getRefreshSecretKey(), algorithms = [getAlgorithm()], ...options } = {}) {
|
|
36
|
+
const verify = fastJwt.createVerifier({ key, algorithms, ...options });
|
|
37
|
+
return await verify(token);
|
|
38
|
+
},
|
|
39
|
+
};exports.jwt=jwt;//# sourceMappingURL=jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","sources":["../../src/services/jwt.ts"],"sourcesContent":[null],"names":["config","createSigner","createVerifier"],"mappings":"wMASA,MAAM,YAAY,GAAG,MAAMA,uBAAM,CAAC,GAAG,CAAC,iBAAiB,CAAW,CAAC;AACnE,MAAM,YAAY,GAAG,MAAMA,uBAAM,CAAC,GAAG,CAAC,oBAAoB,CAAc,CAAC;AAEzE,MAAM,mBAAmB,GAAG,MAC1BA,uBAAM,CAAC,GAAG,CAAC,yBAAyB,CAAW,CAAC;AAClD;AACA,MAAM,uBAAuB,GAAG,MAC9BA,uBAAM,CAAC,GAAG,CAAC,4BAA4B,CAAoB,CAAC;AAEjD,MAAA,GAAG,GAAG;AACjB;;;AAGG;AACH,IAAA,MAAM,QAAQ,CACZ,OAAY,EACZ,EACE,GAAG,GAAG,YAAY,EAAE,EACpB,SAAS,GAAG,YAAY,EAAE,EAC1B,GAAG,OAAO,KAC0B,EAAE,EAAA;;AAGxC,QAAA,MAAM,IAAI,GAAGC,oBAAY,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAE1D,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;KAC7B;AAED;;;;AAIG;AACH,IAAA,MAAM,MAAM,CACV,KAAa,EACb,EACE,GAAG,GAAG,YAAY,EAAE,EACpB,UAAU,GAAG,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,SAAS,EAC1D,GAAG,OAAO,KAC4B,EAAE,EAAA;AAE1C,QAAA,MAAM,MAAM,GAAGC,sBAAc,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AAE/D,QAAA,OAAO,MAAM,MAAM,CAAC,KAAe,CAAC,CAAC;KACtC;AAED;;AAEG;IACH,MAAM,oBAAoB,CACxB,OAAY,EACZ,EACE,GAAG,GAAG,mBAAmB,EAAE,EAC3B,SAAS,GAAG,uBAAuB,EAAE,EACrC,SAAS,GAAG,YAAY,EAAE,EAC1B,GAAG,OAAO,EAAA,GAC0B,EAAE,EAAA;AAExC,QAAA,MAAM,IAAI,GAAGD,oBAAY,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACrE,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;KAC7B;AAED;;AAEG;IACH,MAAM,kBAAkB,CACtB,KAAa,EACb,EACE,GAAG,GAAG,mBAAmB,EAAE,EAC3B,UAAU,GAAG,CAAC,YAAY,EAAE,CAAC,EAC7B,GAAG,OAAO,EAAA,GAC4B,EAAE,EAAA;AAE1C,QAAA,MAAM,MAAM,GAAGC,sBAAc,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC/D,QAAA,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;KAC5B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,iCAAiC,QAEhD"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {command}from'@warlock.js/core';import {generateJWTSecret}from'../services/generate-jwt-secret.js';function registerJWTSecretGeneratorCommand() {
|
|
2
|
+
return command("jwt.generate").action(generateJWTSecret);
|
|
3
|
+
}export{registerJWTSecretGeneratorCommand};//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/commands/index.ts"],"sourcesContent":[null],"names":[],"mappings":"mHAGgB,iCAAiC,GAAA;IAC/C,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface Authenticable {
|
|
2
|
+
/**
|
|
3
|
+
* Generate access token
|
|
4
|
+
*/
|
|
5
|
+
generateAccessToken(): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Generate refresh token
|
|
8
|
+
*/
|
|
9
|
+
generateRefreshToken(): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Change password
|
|
12
|
+
*/
|
|
13
|
+
changePassword(password: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Verify Password
|
|
16
|
+
*/
|
|
17
|
+
verifyPassword(password: string): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Get user type
|
|
20
|
+
*/
|
|
21
|
+
getUserType(): string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=auth-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-contract.d.ts","sourceRoot":"","sources":["../../src/contracts/auth-contract.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvC;;OAEG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Algorithm } from "fast-jwt";
|
|
2
|
+
import type { Auth } from "../models/auth";
|
|
3
|
+
export type AuthConfigurations = {
|
|
4
|
+
/**
|
|
5
|
+
* Define all user types
|
|
6
|
+
* This is important to differentiate between user types when validating and generating tokens
|
|
7
|
+
*/
|
|
8
|
+
userType: {
|
|
9
|
+
[userType: string]: typeof Auth;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* JWT configurations
|
|
13
|
+
*/
|
|
14
|
+
jwt: {
|
|
15
|
+
secret: string;
|
|
16
|
+
algorithm?: Algorithm;
|
|
17
|
+
refresh?: {
|
|
18
|
+
secret?: string;
|
|
19
|
+
expiresIn?: number | string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contracts/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,QAAQ,EAAE;QACR,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,IAAI,CAAC;KACjC,CAAC;IACF;;OAEG;IACH,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,OAAO,CAAC,EAAE;YACR,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;SAC7B,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest-login.d.ts","sourceRoot":"","sources":["../../src/controllers/guest-login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1D,wBAAsB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,gBAIrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest-login.js","sources":["../../src/controllers/guest-login.ts"],"sourcesContent":[null],"names":[],"mappings":"qEAGO,eAAe,UAAU,CAAC,QAAiB,EAAE,QAAkB,EAAA;IACpE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,MAAM,kBAAkB,EAAE;AACjC,KAAA,CAAC,CAAC;AACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
|
package/esm/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{registerJWTSecretGeneratorCommand}from'./commands/index.js';export{guestLogin}from'./controllers/guest-login.js';export{authMiddleware}from'./middleware/auth-middleware.js';export{AccessToken,AccessTokenBlueprint}from'./models/access-token/access-token.js';export{accessTokenMigration}from'./models/access-token/migration.js';export{Auth}from'./models/auth.js';export{castPassword}from'./models/casts/cast-password.js';export{Guest}from'./models/guest/guest.js';export{guestBlueprint,guestMigration}from'./models/guest/migration.js';export{generateGuestToken}from'./services/generate-guest-token.js';export{generateJWTSecret}from'./services/generate-jwt-secret.js';export{jwt}from'./services/jwt.js';//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth-middleware.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,cAkGtD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import config from'@mongez/config';import {log}from'@warlock.js/logger';import {AccessToken}from'../models/access-token/access-token.js';import'../models/access-token/migration.js';import {jwt}from'../services/jwt.js';function authMiddleware(allowedUserType) {
|
|
2
|
+
const auth = async (request, response) => {
|
|
3
|
+
try {
|
|
4
|
+
const authorizationValue = request.authorizationValue;
|
|
5
|
+
if (!authorizationValue) {
|
|
6
|
+
return response.unauthorized({
|
|
7
|
+
error: "Unauthorized: Access Token is missing",
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
// get current user jwt
|
|
11
|
+
const user = await jwt.verify(authorizationValue);
|
|
12
|
+
// use our own jwt verify to verify the token
|
|
13
|
+
const accessToken = await AccessToken.first({
|
|
14
|
+
token: authorizationValue,
|
|
15
|
+
});
|
|
16
|
+
if (!accessToken) {
|
|
17
|
+
return response.unauthorized({
|
|
18
|
+
error: "Unauthorized: Invalid Access Token",
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
// now, we need to get an instance of user using its corresponding model
|
|
22
|
+
const userType = user.userType || accessToken.get("userType");
|
|
23
|
+
// check if the user type is allowed
|
|
24
|
+
if (allowedUserType && userType !== allowedUserType) {
|
|
25
|
+
return response.unauthorized({
|
|
26
|
+
error: "You are not allowed to access this resource",
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
// get user model class
|
|
30
|
+
const UserModel = config.get(`auth.userType.${userType}`);
|
|
31
|
+
if (!UserModel) {
|
|
32
|
+
throw new Error(`User type ${userType} is unknown type.`);
|
|
33
|
+
}
|
|
34
|
+
// get user model instance
|
|
35
|
+
const currentUser = await UserModel.find(user.id);
|
|
36
|
+
if (!currentUser) {
|
|
37
|
+
accessToken.destroy();
|
|
38
|
+
return response.unauthorized({
|
|
39
|
+
error: "Unauthorized: Invalid Access Token",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// set current user
|
|
43
|
+
request.user = currentUser;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
log.error("http", "auth", err);
|
|
47
|
+
// unset current user
|
|
48
|
+
request.clearCurrentUser();
|
|
49
|
+
return response.unauthorized({
|
|
50
|
+
error: "Unauthorized: Invalid Access Token",
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
if (allowedUserType) {
|
|
55
|
+
const userAccessTokenKey = `${allowedUserType}AccessToken`;
|
|
56
|
+
const userAccessTokenKeyNameHeader = `${allowedUserType}AccessTokenHeader`;
|
|
57
|
+
auth.postman = {
|
|
58
|
+
onCollectingVariables(variables) {
|
|
59
|
+
if (variables.find((variable) => variable.key === userAccessTokenKeyNameHeader))
|
|
60
|
+
return;
|
|
61
|
+
variables.push({
|
|
62
|
+
key: userAccessTokenKey,
|
|
63
|
+
value: "YOUR_TOKEN_HERE",
|
|
64
|
+
});
|
|
65
|
+
variables.push({
|
|
66
|
+
key: userAccessTokenKeyNameHeader,
|
|
67
|
+
value: `Bearer {{${userAccessTokenKey}}}`,
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
onAddingRequest({ request }) {
|
|
71
|
+
request.header.push({
|
|
72
|
+
key: "Authorization",
|
|
73
|
+
value: `{{${userAccessTokenKeyNameHeader}}}`,
|
|
74
|
+
});
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return auth;
|
|
79
|
+
}export{authMiddleware};//# sourceMappingURL=auth-middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.js","sources":["../../src/middleware/auth-middleware.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-token.d.ts","sourceRoot":"","sources":["../../../src/models/access-token/access-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,qBAAa,WAAY,SAAQ,KAAK;IACpC;;OAEG;IACH,OAAc,UAAU,SAAkB;CAC3C;AAED,eAAO,MAAM,oBAAoB,KAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {Model}from'@warlock.js/cascade';class AccessToken extends Model {
|
|
2
|
+
/**
|
|
3
|
+
* {@inheritDoc}
|
|
4
|
+
*/
|
|
5
|
+
static collection = "accessTokens";
|
|
6
|
+
}
|
|
7
|
+
const AccessTokenBlueprint = AccessToken.blueprint();export{AccessToken,AccessTokenBlueprint};//# sourceMappingURL=access-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-token.js","sources":["../../../src/models/access-token/access-token.ts"],"sourcesContent":[null],"names":[],"mappings":"wCAEM,MAAO,WAAY,SAAQ,KAAK,CAAA;AACpC;;AAEG;AACI,IAAA,OAAO,UAAU,GAAG,cAAc,CAAC;;MAG/B,oBAAoB,GAAG,WAAW,CAAC,SAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/access-token/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/models/access-token/migration.ts"],"names":[],"mappings":"AAEA,wBAAsB,oBAAoB,kBAEzC;yBAFqB,oBAAoB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {AccessTokenBlueprint}from'./access-token.js';async function accessTokenMigration() {
|
|
2
|
+
AccessTokenBlueprint.unique("token");
|
|
3
|
+
}
|
|
4
|
+
accessTokenMigration.down = async () => {
|
|
5
|
+
AccessTokenBlueprint.dropUniqueIndex("token");
|
|
6
|
+
};
|
|
7
|
+
accessTokenMigration.blueprint = AccessTokenBlueprint;export{accessTokenMigration};//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sources":["../../../src/models/access-token/migration.ts"],"sourcesContent":[null],"names":[],"mappings":"qDAEO,eAAe,oBAAoB,GAAA;AACxC,IAAA,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,oBAAoB,CAAC,IAAI,GAAG,YAAW;AACrC,IAAA,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,oBAAoB,CAAC,SAAS,GAAG,oBAAoB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ChildModel } from "@warlock.js/cascade";
|
|
2
|
+
import { Model } from "@warlock.js/cascade";
|
|
3
|
+
export declare abstract class Auth extends Model {
|
|
4
|
+
/**
|
|
5
|
+
* Get user type
|
|
6
|
+
*/
|
|
7
|
+
abstract get userType(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Generate jwt token
|
|
10
|
+
*/
|
|
11
|
+
generateAccessToken(): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Remove current access token
|
|
14
|
+
*/
|
|
15
|
+
removeAccessToken(token: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Attempt to login the user
|
|
18
|
+
*/
|
|
19
|
+
static attempt<T>(this: ChildModel<T>, data: any): Promise<T | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Confirm password
|
|
22
|
+
*/
|
|
23
|
+
confirmPassword(password: string): any;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/models/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI5C,8BAAsB,IAAK,SAAQ,KAAK;IACtC;;OAEG;IACH,aAAoB,QAAQ,IAAI,MAAM,CAAC;IAEvC;;OAEG;IACU,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAyBnD;;OAEG;IACU,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAO5C;;OAEG;WACiB,OAAO,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAkBpB;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM;CAGxC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {verify}from'@mongez/password';import {Model}from'@warlock.js/cascade';import {jwt}from'../services/jwt.js';import {AccessToken}from'./access-token/access-token.js';import'./access-token/migration.js';class Auth extends Model {
|
|
2
|
+
/**
|
|
3
|
+
* Generate jwt token
|
|
4
|
+
*/
|
|
5
|
+
async generateAccessToken() {
|
|
6
|
+
// store the main data in the data object
|
|
7
|
+
// we need to store the user data in an object
|
|
8
|
+
// that we'll sue to generate the token
|
|
9
|
+
// and also it will be saved in the Access Token model under `user` column
|
|
10
|
+
const data = {
|
|
11
|
+
...this.only(["id", "_id"]),
|
|
12
|
+
userType: this.userType,
|
|
13
|
+
createdAt: Date.now(),
|
|
14
|
+
};
|
|
15
|
+
// use our own jwt generator to generate a token for the guest
|
|
16
|
+
const token = await jwt.generate(data);
|
|
17
|
+
// store token and the auth model data in the access token model
|
|
18
|
+
// note that we didn't make it sync because we don't want to wait for the token to be stored in the database
|
|
19
|
+
// as nothing depends on it
|
|
20
|
+
AccessToken.create({
|
|
21
|
+
token,
|
|
22
|
+
user: data,
|
|
23
|
+
});
|
|
24
|
+
return token;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Remove current access token
|
|
28
|
+
*/
|
|
29
|
+
async removeAccessToken(token) {
|
|
30
|
+
AccessToken.delete({
|
|
31
|
+
token: token,
|
|
32
|
+
"user.id": this.id,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Attempt to login the user
|
|
37
|
+
*/
|
|
38
|
+
static async attempt(data) {
|
|
39
|
+
// find first user with the given data, but exclude from it the password
|
|
40
|
+
const { password, ...otherData } = data;
|
|
41
|
+
const user = (await this.first(otherData));
|
|
42
|
+
if (!user) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// now verify the password
|
|
46
|
+
if (!user.confirmPassword(password)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return user;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Confirm password
|
|
53
|
+
*/
|
|
54
|
+
confirmPassword(password) {
|
|
55
|
+
return verify(String(this.get("password")), String(password));
|
|
56
|
+
}
|
|
57
|
+
}export{Auth};//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../src/models/auth.ts"],"sourcesContent":[null],"names":[],"mappings":"gNAMM,MAAgB,IAAK,SAAQ,KAAK,CAAA;AAMtC;;AAEG;AACI,IAAA,MAAM,mBAAmB,GAAA;;;;;AAK9B,QAAA,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;;QAGF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;;;QAKvC,WAAW,CAAC,MAAM,CAAC;YACjB,KAAK;AACL,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACI,MAAM,iBAAiB,CAAC,KAAa,EAAA;QAC1C,WAAW,CAAC,MAAM,CAAC;AACjB,YAAA,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,IAAI,CAAC,EAAE;AACnB,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;AACI,IAAA,aAAa,OAAO,CAEzB,IAAS,EAAA;;QAGT,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;QAExC,MAAM,IAAI,IAAI,MAAM,IAAI,CAAC,KAAK,CAAI,SAAS,CAAC,CAAgB,CAAC;QAE7D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,IAAS,CAAC;KAClB;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,QAAgB,EAAA;AACrC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC/D;AACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Model } from "@warlock.js/cascade";
|
|
2
|
+
/**
|
|
3
|
+
* Cast password on model save
|
|
4
|
+
* If the password is not changed, keep it as is
|
|
5
|
+
*/
|
|
6
|
+
export declare function castPassword(value: any, column: string, model: Model): any;
|
|
7
|
+
//# sourceMappingURL=cast-password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast-password.d.ts","sourceRoot":"","sources":["../../../src/models/casts/cast-password.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,OAIpE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Password from'@mongez/password';/**
|
|
2
|
+
* Cast password on model save
|
|
3
|
+
* If the password is not changed, keep it as is
|
|
4
|
+
*/
|
|
5
|
+
function castPassword(value, column, model) {
|
|
6
|
+
return value
|
|
7
|
+
? Password.generate(String(value), 12)
|
|
8
|
+
: model.getInitial(column);
|
|
9
|
+
}export{castPassword};//# sourceMappingURL=cast-password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast-password.js","sources":["../../../src/models/casts/cast-password.ts"],"sourcesContent":[null],"names":[],"mappings":"uCAGA;;;AAGG;SACa,YAAY,CAAC,KAAU,EAAE,MAAc,EAAE,KAAY,EAAA;AACnE,IAAA,OAAO,KAAK;UACR,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACtC,UAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/casts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Document } from "@warlock.js/cascade";
|
|
2
|
+
import { Auth } from "../auth";
|
|
3
|
+
export declare class Guest extends Auth {
|
|
4
|
+
/**
|
|
5
|
+
* {@inheritDoc}
|
|
6
|
+
*/
|
|
7
|
+
static collection: string;
|
|
8
|
+
/**
|
|
9
|
+
* Set the user type key
|
|
10
|
+
* If set to empty string, then it will ignored
|
|
11
|
+
*/
|
|
12
|
+
userTypeKey: string;
|
|
13
|
+
/**
|
|
14
|
+
* Get user type
|
|
15
|
+
*/
|
|
16
|
+
get userType(): string;
|
|
17
|
+
/**
|
|
18
|
+
* {@inheritDoc}
|
|
19
|
+
*/
|
|
20
|
+
get embeddedData(): Document;
|
|
21
|
+
/**
|
|
22
|
+
* {@inheritDoc}
|
|
23
|
+
*/
|
|
24
|
+
toJSON(): Promise<any>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=guest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest.d.ts","sourceRoot":"","sources":["../../../src/models/guest/guest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,qBAAa,KAAM,SAAQ,IAAI;IAC7B;;OAEG;IACH,OAAc,UAAU,SAAY;IAEpC;;;OAGG;IACI,WAAW,SAAc;IAEhC;;OAEG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,QAAQ,CAMlC;IAED;;OAEG;IACU,MAAM;CAQpB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {Auth}from'../auth.js';class Guest extends Auth {
|
|
2
|
+
/**
|
|
3
|
+
* {@inheritDoc}
|
|
4
|
+
*/
|
|
5
|
+
static collection = "guests";
|
|
6
|
+
/**
|
|
7
|
+
* Set the user type key
|
|
8
|
+
* If set to empty string, then it will ignored
|
|
9
|
+
*/
|
|
10
|
+
userTypeKey = "userType";
|
|
11
|
+
/**
|
|
12
|
+
* Get user type
|
|
13
|
+
*/
|
|
14
|
+
get userType() {
|
|
15
|
+
return "guest";
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* {@inheritDoc}
|
|
19
|
+
*/
|
|
20
|
+
get embeddedData() {
|
|
21
|
+
if (!this.userTypeKey)
|
|
22
|
+
return super.embeddedData;
|
|
23
|
+
return {
|
|
24
|
+
...this.onlyId,
|
|
25
|
+
[this.userTypeKey]: this.userType,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* {@inheritDoc}
|
|
30
|
+
*/
|
|
31
|
+
async toJSON() {
|
|
32
|
+
if (!this.userTypeKey)
|
|
33
|
+
return this.onlyId;
|
|
34
|
+
return {
|
|
35
|
+
...this.onlyId,
|
|
36
|
+
[this.userTypeKey]: this.userType,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}export{Guest};//# sourceMappingURL=guest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guest.js","sources":["../../../src/models/guest/guest.ts"],"sourcesContent":[null],"names":[],"mappings":"8BAGM,MAAO,KAAM,SAAQ,IAAI,CAAA;AAC7B;;AAEG;AACI,IAAA,OAAO,UAAU,GAAG,QAAQ,CAAC;AAEpC;;;AAGG;IACI,WAAW,GAAG,UAAU,CAAC;AAEhC;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC,YAAY,CAAC;QACjD,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;SAClC,CAAC;KACH;AAED;;AAEG;AACI,IAAA,MAAM,MAAM,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAE1C,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;AACd,YAAA,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ;SAClC,CAAC;KACH;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/guest/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/models/guest/migration.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,KAAoB,CAAC;AAEhD,wBAAsB,cAAc,kBAEnC;yBAFqB,cAAc"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {Guest}from'./guest.js';const guestBlueprint = Guest.blueprint();
|
|
2
|
+
async function guestMigration() {
|
|
3
|
+
await guestBlueprint.unique("id");
|
|
4
|
+
}
|
|
5
|
+
guestMigration.down = async () => {
|
|
6
|
+
await guestBlueprint.dropUniqueIndex("id");
|
|
7
|
+
};
|
|
8
|
+
guestMigration.blueprint = guestBlueprint;export{guestBlueprint,guestMigration};//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sources":["../../../src/models/guest/migration.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAEa,cAAc,GAAG,KAAK,CAAC,SAAS,GAAG;AAEzC,eAAe,cAAc,GAAA;AAClC,IAAA,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,cAAc,CAAC,IAAI,GAAG,YAAW;AAC/B,IAAA,MAAM,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,cAAc,CAAC,SAAS,GAAG,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|