@scefira/dfw 1.4.4 → 1.4.5
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/dist/cjs/lib/APIManager.d.ts.map +1 -1
- package/dist/cjs/lib/APIManager.js +6 -5
- package/dist/cjs/lib/APIManager.js.map +1 -1
- package/dist/cjs/lib/DFWSessionStore.js +1 -1
- package/dist/cjs/lib/DFWSessionStore.js.map +1 -1
- package/dist/cjs/makers/makeLoginListener.d.ts +1 -1
- package/dist/cjs/makers/makeLoginListener.d.ts.map +1 -1
- package/dist/cjs/makers/makeLoginListener.js +1 -1
- package/dist/cjs/makers/makeLoginListener.js.map +1 -1
- package/dist/cjs/makers/makeLogoutListener.d.ts.map +1 -1
- package/dist/cjs/makers/makeLogoutListener.js.map +1 -1
- package/dist/cjs/repositories/DFWSecurityRepository.d.ts +8 -8
- package/dist/cjs/repositories/DFWSecurityRepository.d.ts.map +1 -1
- package/dist/cjs/repositories/DFWSecurityRepository.js +24 -34
- package/dist/cjs/repositories/DFWSecurityRepository.js.map +1 -1
- package/dist/cjs/repositories/DFWSessionRepository.d.ts +4 -4
- package/dist/cjs/repositories/DFWSessionRepository.d.ts.map +1 -1
- package/dist/cjs/repositories/DFWSessionRepository.js +3 -9
- package/dist/cjs/repositories/DFWSessionRepository.js.map +1 -1
- package/dist/cjs/repositories/DFWUserRepository.d.ts +5 -5
- package/dist/cjs/repositories/DFWUserRepository.d.ts.map +1 -1
- package/dist/cjs/repositories/DFWUserRepository.js +3 -9
- package/dist/cjs/repositories/DFWUserRepository.js.map +1 -1
- package/dist/cjs/test.js +27 -1
- package/dist/cjs/test.js.map +1 -1
- package/dist/cjs/types/DFWConfig.d.ts +3 -2
- package/dist/cjs/types/DFWConfig.d.ts.map +1 -1
- package/dist/cjs/types/DFWRequest.d.ts +1 -0
- package/dist/cjs/types/DFWRequest.d.ts.map +1 -1
- package/dist/esm/lib/APIManager.d.ts.map +1 -1
- package/dist/esm/lib/APIManager.js +3 -2
- package/dist/esm/lib/APIManager.js.map +1 -1
- package/dist/esm/lib/DFWSessionStore.js +1 -1
- package/dist/esm/lib/DFWSessionStore.js.map +1 -1
- package/dist/esm/makers/makeLoginListener.d.ts +1 -1
- package/dist/esm/makers/makeLoginListener.d.ts.map +1 -1
- package/dist/esm/makers/makeLoginListener.js +1 -1
- package/dist/esm/makers/makeLoginListener.js.map +1 -1
- package/dist/esm/makers/makeLogoutListener.d.ts.map +1 -1
- package/dist/esm/makers/makeLogoutListener.js.map +1 -1
- package/dist/esm/repositories/DFWSecurityRepository.d.ts +8 -8
- package/dist/esm/repositories/DFWSecurityRepository.d.ts.map +1 -1
- package/dist/esm/repositories/DFWSecurityRepository.js +75 -75
- package/dist/esm/repositories/DFWSecurityRepository.js.map +1 -1
- package/dist/esm/repositories/DFWSessionRepository.d.ts +4 -4
- package/dist/esm/repositories/DFWSessionRepository.d.ts.map +1 -1
- package/dist/esm/repositories/DFWSessionRepository.js +34 -34
- package/dist/esm/repositories/DFWSessionRepository.js.map +1 -1
- package/dist/esm/repositories/DFWUserRepository.d.ts +5 -5
- package/dist/esm/repositories/DFWUserRepository.d.ts.map +1 -1
- package/dist/esm/repositories/DFWUserRepository.js +30 -30
- package/dist/esm/repositories/DFWUserRepository.js.map +1 -1
- package/dist/esm/test.js +17 -0
- package/dist/esm/test.js.map +1 -1
- package/dist/esm/types/DFWConfig.d.ts +3 -2
- package/dist/esm/types/DFWConfig.d.ts.map +1 -1
- package/dist/esm/types/DFWRequest.d.ts +1 -0
- package/dist/esm/types/DFWRequest.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWSessionStore.js","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAMtC,YAAY,GAAiB;QACzB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DFWSessionStore.js","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@ import { type AuthenticateOptions } from "passport";
|
|
|
6
6
|
* @param options
|
|
7
7
|
* @returns DFW Auth Listener
|
|
8
8
|
*/
|
|
9
|
-
export declare const makeLoginListener: (DFW: DFWCore, options
|
|
9
|
+
export declare const makeLoginListener: (DFW: DFWCore, options?: AuthenticateOptions) => import("..").APIListener<any>;
|
|
10
10
|
//# sourceMappingURL=makeLoginListener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLoginListener.d.ts","sourceRoot":"","sources":["../../../src/makers/makeLoginListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"makeLoginListener.d.ts","sourceRoot":"","sources":["../../../src/makers/makeLoginListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,EAAE,UAAS,mBAAwB,kCAM3E,CAAA"}
|
|
@@ -6,7 +6,7 @@ import passport, {} from "passport";
|
|
|
6
6
|
* @param options
|
|
7
7
|
* @returns DFW Auth Listener
|
|
8
8
|
*/
|
|
9
|
-
export const makeLoginListener = (DFW, options) => DFW.listener.post({
|
|
9
|
+
export const makeLoginListener = (DFW, options = {}) => DFW.listener.post({
|
|
10
10
|
middleware: [passport.authenticate('dfw', options)],
|
|
11
11
|
}, async (_, req) => {
|
|
12
12
|
const { updateSessionAgentAsync } = new DFWSessionRepository(DFW);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLoginListener.js","sourceRoot":"","sources":["../../../src/makers/makeLoginListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,QAAQ,EAAE,EAA4B,MAAM,UAAU,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"makeLoginListener.js","sourceRoot":"","sources":["../../../src/makers/makeLoginListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,QAAQ,EAAE,EAA4B,MAAM,UAAU,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,UAA+B,EAAE,EAAE,EAAE,CACjF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;IACd,UAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACtD,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;IAChB,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAClE,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAA;AACtC,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLogoutListener.d.ts","sourceRoot":"","sources":["../../../src/makers/makeLogoutListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"makeLogoutListener.d.ts","sourceRoot":"","sources":["../../../src/makers/makeLogoutListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,kCAIzC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeLogoutListener.js","sourceRoot":"","sources":["../../../src/makers/makeLogoutListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"makeLogoutListener.js","sourceRoot":"","sources":["../../../src/makers/makeLogoutListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,EAAE,CAC/C,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;IAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC,CAAC,CAAA"}
|
|
@@ -3,34 +3,34 @@ import type { dfw_credential, dfw_user, PrismaClient } from "#prisma/client";
|
|
|
3
3
|
import { DFWRepository } from "#lib/DFWRepository";
|
|
4
4
|
export declare class DFWSecurityRepository extends DFWRepository<PrismaClient> {
|
|
5
5
|
constructor(DFW: DFWCore);
|
|
6
|
-
createCredentiaAsync(name: string, description?: string)
|
|
6
|
+
createCredentiaAsync: (name: string, description?: string) => Promise<{
|
|
7
7
|
name: string;
|
|
8
8
|
description: string | null;
|
|
9
9
|
createdAt: Date;
|
|
10
10
|
updatedAt: Date;
|
|
11
11
|
}>;
|
|
12
|
-
createAccessAsync(name: string, description?: string)
|
|
12
|
+
createAccessAsync: (name: string, description?: string) => Promise<{
|
|
13
13
|
name: string;
|
|
14
14
|
description: string | null;
|
|
15
15
|
createdAt: Date;
|
|
16
16
|
updatedAt: Date;
|
|
17
17
|
}>;
|
|
18
|
-
attachUserToCredentialAsync(user: string | {
|
|
18
|
+
attachUserToCredentialAsync: (user: string | {
|
|
19
19
|
id: string;
|
|
20
|
-
}, credential: dfw_credential | string | (dfw_credential | string)[])
|
|
21
|
-
attachAccessToCredentialAsync(access: string | {
|
|
20
|
+
}, credential: dfw_credential | string | (dfw_credential | string)[]) => Promise<any>;
|
|
21
|
+
attachAccessToCredentialAsync: (access: string | {
|
|
22
22
|
name: string;
|
|
23
23
|
}, credential: {
|
|
24
24
|
name: string;
|
|
25
|
-
} | string)
|
|
25
|
+
} | string) => Promise<{
|
|
26
26
|
name: string;
|
|
27
27
|
description: string | null;
|
|
28
28
|
createdAt: Date;
|
|
29
29
|
updatedAt: Date;
|
|
30
30
|
} | never[]>;
|
|
31
|
-
userHasCredentialAsync(userSource: string | {
|
|
31
|
+
userHasCredentialAsync: (userSource: string | {
|
|
32
32
|
id: string;
|
|
33
|
-
}, credential: string)
|
|
33
|
+
}, credential: string) => Promise<boolean>;
|
|
34
34
|
userHasAccessAsync: (userSource: string | Partial<dfw_user>, access: string) => Promise<boolean>;
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=DFWSecurityRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWSecurityRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWSecurityRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBACtD,GAAG,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"DFWSecurityRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWSecurityRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBACtD,GAAG,EAAE,OAAO;IAIxB,oBAAoB,GAAU,MAAM,MAAM,EAAE,cAAc,MAAM;;;;;OAE/D;IAED,iBAAiB,GAAU,MAAM,MAAM,EAAE,cAAc,MAAM;;;;;OAE5D;IAED,2BAA2B,GAAU,MAAM,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,YAAY,cAAc,GAAG,MAAM,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,kBA8BpI;IAED,6BAA6B,GAAU,QAAQ,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,YAAY;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;;;;;iBAkB9G;IAED,sBAAsB,GAAU,YAAY,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,YAAY,MAAM,sBAkBtF;IAED,kBAAkB,GAAU,YAAY,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,MAAM,sBAoBjF;CACJ"}
|
|
@@ -2,6 +2,81 @@ import { DFWRepository } from "#lib/DFWRepository";
|
|
|
2
2
|
export class DFWSecurityRepository extends DFWRepository {
|
|
3
3
|
constructor(DFW) {
|
|
4
4
|
super(DFW);
|
|
5
|
+
this.createCredentiaAsync = async (name, description) => {
|
|
6
|
+
return this.db.dfw_credential.create({ data: { name, description } });
|
|
7
|
+
};
|
|
8
|
+
this.createAccessAsync = async (name, description) => {
|
|
9
|
+
return this.db.dfw_access.create({ data: { name, description } });
|
|
10
|
+
};
|
|
11
|
+
this.attachUserToCredentialAsync = async (user, credential) => {
|
|
12
|
+
const idUser = typeof user === "object" ? user.id : user;
|
|
13
|
+
if (Array.isArray(credential)) {
|
|
14
|
+
let result = await Promise.all(credential.map((credentialObj) => this.attachUserToCredentialAsync(user, credentialObj)));
|
|
15
|
+
return result.flat(1);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
let idCredential;
|
|
19
|
+
if (typeof credential == "string") {
|
|
20
|
+
let credentialObj = (await this.db.dfw_credential.findFirst({ select: { name: true }, where: { name: credential } }));
|
|
21
|
+
if (credentialObj) {
|
|
22
|
+
idCredential = credentialObj.name;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
idCredential = credential.name;
|
|
30
|
+
}
|
|
31
|
+
const newCredential = await this.db.dfw_credential.update({
|
|
32
|
+
data: {
|
|
33
|
+
users: {
|
|
34
|
+
connect: {
|
|
35
|
+
id: idUser
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
where: {
|
|
40
|
+
name: idCredential
|
|
41
|
+
}
|
|
42
|
+
}).catch((e) => []);
|
|
43
|
+
return Array.isArray(newCredential) ? newCredential : [newCredential];
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
this.attachAccessToCredentialAsync = async (access, credential) => {
|
|
47
|
+
const idAccess = typeof access === 'object' ? access.name : access;
|
|
48
|
+
const idCredential = typeof credential === 'object' ? credential.name : credential;
|
|
49
|
+
const newCredential = await this.db.dfw_credential.update({
|
|
50
|
+
data: {
|
|
51
|
+
access: {
|
|
52
|
+
connect: {
|
|
53
|
+
name: idAccess
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
where: {
|
|
58
|
+
name: idCredential
|
|
59
|
+
}
|
|
60
|
+
}).catch(() => []);
|
|
61
|
+
return newCredential;
|
|
62
|
+
};
|
|
63
|
+
this.userHasCredentialAsync = async (userSource, credential) => {
|
|
64
|
+
const idUser = typeof userSource === 'object' ? userSource.id : userSource;
|
|
65
|
+
const user = await this.db.dfw_user.findUnique({
|
|
66
|
+
select: { id: true },
|
|
67
|
+
where: {
|
|
68
|
+
id: idUser,
|
|
69
|
+
credentials: {
|
|
70
|
+
some: {
|
|
71
|
+
OR: [
|
|
72
|
+
{ name: credential }
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return !!user;
|
|
79
|
+
};
|
|
5
80
|
this.userHasAccessAsync = async (userSource, access) => {
|
|
6
81
|
const idUser = typeof userSource === 'object' ? userSource.id : userSource;
|
|
7
82
|
const user = await this.db.dfw_user.findUnique({
|
|
@@ -22,80 +97,5 @@ export class DFWSecurityRepository extends DFWRepository {
|
|
|
22
97
|
return !!user;
|
|
23
98
|
};
|
|
24
99
|
}
|
|
25
|
-
async createCredentiaAsync(name, description) {
|
|
26
|
-
return this.db.dfw_credential.create({ data: { name, description } });
|
|
27
|
-
}
|
|
28
|
-
async createAccessAsync(name, description) {
|
|
29
|
-
return this.db.dfw_access.create({ data: { name, description } });
|
|
30
|
-
}
|
|
31
|
-
async attachUserToCredentialAsync(user, credential) {
|
|
32
|
-
const idUser = typeof user === "object" ? user.id : user;
|
|
33
|
-
if (Array.isArray(credential)) {
|
|
34
|
-
let result = await Promise.all(credential.map((credentialObj) => this.attachUserToCredentialAsync(user, credentialObj)));
|
|
35
|
-
return result.flat(1);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
let idCredential;
|
|
39
|
-
if (typeof credential == "string") {
|
|
40
|
-
let credentialObj = (await this.db.dfw_credential.findFirst({ select: { name: true }, where: { name: credential } }));
|
|
41
|
-
if (credentialObj) {
|
|
42
|
-
idCredential = credentialObj.name;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return [];
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
idCredential = credential.name;
|
|
50
|
-
}
|
|
51
|
-
const newCredential = await this.db.dfw_credential.update({
|
|
52
|
-
data: {
|
|
53
|
-
users: {
|
|
54
|
-
connect: {
|
|
55
|
-
id: idUser
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
where: {
|
|
60
|
-
name: idCredential
|
|
61
|
-
}
|
|
62
|
-
}).catch((e) => []);
|
|
63
|
-
return Array.isArray(newCredential) ? newCredential : [newCredential];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async attachAccessToCredentialAsync(access, credential) {
|
|
67
|
-
const idAccess = typeof access === 'object' ? access.name : access;
|
|
68
|
-
const idCredential = typeof credential === 'object' ? credential.name : credential;
|
|
69
|
-
const newCredential = await this.db.dfw_credential.update({
|
|
70
|
-
data: {
|
|
71
|
-
access: {
|
|
72
|
-
connect: {
|
|
73
|
-
name: idAccess
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
where: {
|
|
78
|
-
name: idCredential
|
|
79
|
-
}
|
|
80
|
-
}).catch(() => []);
|
|
81
|
-
return newCredential;
|
|
82
|
-
}
|
|
83
|
-
async userHasCredentialAsync(userSource, credential) {
|
|
84
|
-
const idUser = typeof userSource === 'object' ? userSource.id : userSource;
|
|
85
|
-
const user = await this.db.dfw_user.findUnique({
|
|
86
|
-
select: { id: true },
|
|
87
|
-
where: {
|
|
88
|
-
id: idUser,
|
|
89
|
-
credentials: {
|
|
90
|
-
some: {
|
|
91
|
-
OR: [
|
|
92
|
-
{ name: credential }
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
return !!user;
|
|
99
|
-
}
|
|
100
100
|
}
|
|
101
101
|
//# sourceMappingURL=DFWSecurityRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWSecurityRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWSecurityRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,qBAAsB,SAAQ,aAA2B;IAClE,YAAY,GAAY;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DFWSecurityRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWSecurityRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ import type { DFWRequest } from "#types/index";
|
|
|
4
4
|
import { DFWRepository } from "#lib/DFWRepository";
|
|
5
5
|
export declare class DFWSessionRepository extends DFWRepository<PrismaClient> {
|
|
6
6
|
constructor(DFW: DFWCore);
|
|
7
|
-
updateSessionAgentAsync({ dfw, sessionID, ip, socket, headers }: DFWRequest<PrismaClient>)
|
|
8
|
-
loginAsync(req: DFWRequest, user: {
|
|
7
|
+
updateSessionAgentAsync: ({ dfw, sessionID, ip, socket, headers }: DFWRequest<PrismaClient>) => Promise<void | import("../prisma/internal/prismaNamespace").BatchPayload>;
|
|
8
|
+
loginAsync: (req: DFWRequest, user: {
|
|
9
9
|
id: string;
|
|
10
|
-
})
|
|
11
|
-
logoutAsync(req: DFWRequest)
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
logoutAsync: (req: DFWRequest) => Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=DFWSessionRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBACrD,GAAG,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"DFWSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qBAAa,oBAAqB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBACrD,GAAG,EAAE,OAAO;IAIxB,uBAAuB,GAAU,yCAAyC,UAAU,CAAC,YAAY,CAAC,+EAY9F;IAED,UAAU,GAAU,KAAK,UAAU,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,mBASxD;IAED,WAAW,GAAU,KAAK,UAAU,mBASnC;CACP"}
|
|
@@ -2,43 +2,43 @@ import { DFWRepository } from "#lib/DFWRepository";
|
|
|
2
2
|
export class DFWSessionRepository extends DFWRepository {
|
|
3
3
|
constructor(DFW) {
|
|
4
4
|
super(DFW);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
5
|
+
this.updateSessionAgentAsync = async ({ dfw, sessionID, ip, socket, headers }) => {
|
|
6
|
+
if (sessionID) {
|
|
7
|
+
return dfw.db.dfw_session.updateMany({
|
|
8
|
+
data: {
|
|
9
|
+
ip: ip ?? socket?.remoteAddress,
|
|
10
|
+
agent: headers['user-agent'] ?? null
|
|
11
|
+
},
|
|
12
|
+
where: { id: sessionID }
|
|
13
|
+
}).catch((e) => {
|
|
14
|
+
console.log(e);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
this.loginAsync = async (req, user) => {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
req.login(user, (err) => {
|
|
21
|
+
if (err) {
|
|
22
|
+
reject(err);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
req.session['passport'] = { user: user.id };
|
|
26
|
+
req.user = { id: user.id };
|
|
27
|
+
resolve(undefined);
|
|
28
|
+
});
|
|
29
29
|
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
};
|
|
31
|
+
this.logoutAsync = async (req) => {
|
|
32
|
+
return new Promise((resolve) => {
|
|
33
|
+
req.logout((err) => {
|
|
34
|
+
req.session.destroy((err) => {
|
|
35
|
+
if (process.env.NODE_ENV === 'development')
|
|
36
|
+
console.log('session destroyed', err);
|
|
37
|
+
resolve();
|
|
38
|
+
});
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
//# sourceMappingURL=DFWSessionRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWSessionRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWSessionRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,oBAAqB,SAAQ,aAA2B;IACjE,YAAY,GAAY;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DFWSessionRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWSessionRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,oBAAqB,SAAQ,aAA2B;IACjE,YAAY,GAAY;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;QAGf,4BAAuB,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAA4B,EAAE,EAAE;YAC/F,IAAI,SAAS,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;oBACjC,IAAI,EAAE;wBACF,EAAE,EAAE,EAAE,IAAI,MAAM,EAAE,aAAa;wBAC/B,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI;qBACvC;oBACD,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;iBAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAClB,CAAC,CAAC,CAAA;YACN,CAAC;QACL,CAAC,CAAA;QAED,eAAU,GAAG,KAAK,EAAE,GAAe,EAAE,IAAoB,EAAE,EAAE;YACzD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACzC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAQ,EAAE,EAAE;oBACzB,IAAI,GAAG,EAAE,CAAC;wBAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAAC,OAAO;oBAAC,CAAC;oBAChC,GAAG,CAAC,OAAe,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;oBACpD,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAA;oBAC1B,OAAO,CAAC,SAAS,CAAC,CAAA;gBACtB,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACN,CAAC,CAAA;QAED,gBAAW,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE;YACpC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACjC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACxB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;4BAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;wBACjF,OAAO,EAAE,CAAA;oBACb,CAAC,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACN,CAAC,CAAA;IApCJ,CAAC;CAqCJ"}
|
|
@@ -3,13 +3,13 @@ import type { dfw_credential, PrismaClient } from "#prisma/client";
|
|
|
3
3
|
import { DFWRepository } from "#lib/DFWRepository";
|
|
4
4
|
export declare class DFWUserRepository extends DFWRepository<PrismaClient> {
|
|
5
5
|
constructor(DFW: DFWCore);
|
|
6
|
-
verifyPasswordAsync(identifier: string, password: any)
|
|
7
|
-
createUserAsync({ password, ...params }: {
|
|
6
|
+
verifyPasswordAsync: (identifier: string, password: any) => Promise<string | false | null>;
|
|
7
|
+
createUserAsync: ({ password, ...params }: {
|
|
8
8
|
[key: string]: any;
|
|
9
9
|
name?: string;
|
|
10
10
|
email?: string;
|
|
11
11
|
password: string;
|
|
12
|
-
})
|
|
12
|
+
}) => Promise<{
|
|
13
13
|
name: string | null;
|
|
14
14
|
id: string;
|
|
15
15
|
email: string | null;
|
|
@@ -18,8 +18,8 @@ export declare class DFWUserRepository extends DFWRepository<PrismaClient> {
|
|
|
18
18
|
displayName: string | null;
|
|
19
19
|
encodedKey: string | null;
|
|
20
20
|
}>;
|
|
21
|
-
assignCredentialAsync(user: string | {
|
|
21
|
+
assignCredentialAsync: (user: string | {
|
|
22
22
|
id: string;
|
|
23
|
-
}, credential: dfw_credential | string | (dfw_credential | string)[])
|
|
23
|
+
}, credential: dfw_credential | string | (dfw_credential | string)[]) => Promise<dfw_credential[]>;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=DFWUserRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWUserRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWUserRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBAClD,GAAG,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"DFWUserRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/DFWUserRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,qBAAa,iBAAkB,SAAQ,aAAa,CAAC,YAAY,CAAC;gBAClD,GAAG,EAAE,OAAO;IAIxB,mBAAmB,GAAU,YAAY,MAAM,EAAE,UAAU,GAAG,oCAmB7D;IAED,eAAe,GAAU,yBAAyB;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;;;;;;;;OAOxH;IAED,qBAAqB,GAAU,MAAM,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,YAAY,cAAc,GAAG,MAAM,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,KAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAG1J;CACJ"}
|
|
@@ -4,36 +4,36 @@ import { DFWSecurityRepository } from "#repositories/DFWSecurityRepository";
|
|
|
4
4
|
export class DFWUserRepository extends DFWRepository {
|
|
5
5
|
constructor(DFW) {
|
|
6
6
|
super(DFW);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
7
|
+
this.verifyPasswordAsync = async (identifier, password) => {
|
|
8
|
+
const isEmail = DFWUtils.isEmail(identifier);
|
|
9
|
+
const user = await this.db.dfw_user.findUnique({
|
|
10
|
+
select: {
|
|
11
|
+
id: true,
|
|
12
|
+
encodedKey: true
|
|
13
|
+
},
|
|
14
|
+
where: {
|
|
15
|
+
[isEmail ? 'email' : 'name']: identifier
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
if (!user || !user.encodedKey)
|
|
19
|
+
return null;
|
|
20
|
+
const check = await DFWUtils.verifyPasswordAsync(user.encodedKey, password);
|
|
21
|
+
if (!check)
|
|
22
|
+
return false;
|
|
23
|
+
return user.id;
|
|
24
|
+
};
|
|
25
|
+
this.createUserAsync = async ({ password, ...params }) => {
|
|
26
|
+
return this.db.dfw_user.create({
|
|
27
|
+
data: {
|
|
28
|
+
...params,
|
|
29
|
+
encodedKey: password ? await DFWUtils.encryptPasswordAsync(password) : undefined
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
this.assignCredentialAsync = async (user, credential) => {
|
|
34
|
+
const { attachUserToCredentialAsync } = new DFWSecurityRepository(this.dfw);
|
|
35
|
+
return attachUserToCredentialAsync(user, credential);
|
|
36
|
+
};
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=DFWUserRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWUserRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWUserRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,OAAO,iBAAkB,SAAQ,aAA2B;IAC9D,YAAY,GAAY;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DFWUserRepository.js","sourceRoot":"","sources":["../../../src/repositories/DFWUserRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,OAAO,iBAAkB,SAAQ,aAA2B;IAC9D,YAAY,GAAY;QACpB,KAAK,CAAC,GAAG,CAAC,CAAC;QAGf,wBAAmB,GAAG,KAAK,EAAE,UAAkB,EAAE,QAAa,EAAE,EAAE;YAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAC3C,MAAM,EAAE;oBACJ,EAAE,EAAE,IAAI;oBACR,UAAU,EAAE,IAAI;iBACnB;gBACD,KAAK,EAAE;oBACH,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU;iBACpC;aACX,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO,IAAI,CAAA;YAE1C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAE3E,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;YAExB,OAAO,IAAI,CAAC,EAAE,CAAA;QAClB,CAAC,CAAA;QAED,oBAAe,GAAG,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAA2E,EAAE,EAAE;YACzH,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3B,IAAI,EAAE;oBACF,GAAG,MAAM;oBACT,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;iBACnF;aACJ,CAAC,CAAA;QACN,CAAC,CAAA;QAED,0BAAqB,GAAG,KAAK,EAAE,IAA6B,EAAE,UAAiE,EAA6B,EAAE;YAC1J,MAAM,EAAE,2BAA2B,EAAE,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC3E,OAAO,2BAA2B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC,CAAA;IAnCD,CAAC;CAoCJ"}
|
package/dist/esm/test.js
CHANGED
|
@@ -3,6 +3,9 @@ import { TestGuard } from "./test.guard";
|
|
|
3
3
|
import z from "zod";
|
|
4
4
|
import { TestService } from "./test.service";
|
|
5
5
|
import { BodyValidationGuard } from "#guards/BodyValidatorGuard";
|
|
6
|
+
import { makeLoginListener } from "#makers/makeLoginListener";
|
|
7
|
+
import { makeLogoutListener } from "#makers/makeLogoutListener";
|
|
8
|
+
import { DFWUserRepository } from "#repositories/DFWUserRepository";
|
|
6
9
|
const validationEmailSchema = z.object({
|
|
7
10
|
email: z.email(),
|
|
8
11
|
test: z.coerce.number().min(5)
|
|
@@ -25,6 +28,20 @@ DFW.register({
|
|
|
25
28
|
test: DFW.listener.get(({ db }) => {
|
|
26
29
|
const { getSessions } = new TestService();
|
|
27
30
|
return getSessions();
|
|
31
|
+
}),
|
|
32
|
+
boot: DFW.listener.get(async ({ db, getSession }) => {
|
|
33
|
+
const { user: idUser, id: sessionID } = getSession();
|
|
34
|
+
if (!idUser)
|
|
35
|
+
return { user: null, sessionID };
|
|
36
|
+
const user = await db.dfw_user.findUnique({ where: { id: idUser } });
|
|
37
|
+
return { user, sessionID };
|
|
38
|
+
}),
|
|
39
|
+
login: makeLoginListener(DFW),
|
|
40
|
+
logout: makeLogoutListener(DFW),
|
|
41
|
+
createUser: DFW.listener.post(async ({ db }, { body }) => {
|
|
42
|
+
const { username, password } = body;
|
|
43
|
+
const { createUserAsync } = new DFWUserRepository(DFW);
|
|
44
|
+
return createUserAsync({ password, name: username, email: `${username}@dfw.com` });
|
|
28
45
|
})
|
|
29
46
|
});
|
|
30
47
|
DFW.start();
|
package/dist/esm/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACjC,CAAC,CAAA;AAEF,GAAG,CAAC,QAAQ,CAAC;IAET,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxB,UAAU,EAAE;YACR,mBAAmB,CAAC,qBAAqB,CAAC;SAC7C;KACJ,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACf,OAAO,IAAI,CAAA;IACf,CAAC,CAAC;IAEF,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,UAAU,EAAE;YACR,SAAS;SACZ;KACJ,EAAE,GAAG,EAAE;QACJ,OAAO,mBAAmB,CAAA;IAC9B,CAAC,CAAC;IAEF,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;QACzC,OAAO,WAAW,EAAE,CAAA;IACxB,CAAC,CAAC;IAEF,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAG,EAAE,EAAC,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;QACpD,IAAG,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAE5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;QACpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC,CAAC;IAEF,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC;IAE7B,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC;IAE/B,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACnC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACtD,OAAO,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC,CAAA;IACtF,CAAC,CAAC;CACL,CAAC,CAAA;AAEF,GAAG,CAAC,KAAK,EAAE,CAAA;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyFE"}
|
|
@@ -36,9 +36,10 @@ export type DFWConfig = {
|
|
|
36
36
|
*/
|
|
37
37
|
cookieOptions?: CookieOptions;
|
|
38
38
|
/**
|
|
39
|
-
* Session id cached on sever
|
|
39
|
+
* Session id cached on sever
|
|
40
|
+
* @default 200
|
|
40
41
|
*/
|
|
41
|
-
|
|
42
|
+
cacheSize?: number;
|
|
42
43
|
};
|
|
43
44
|
};
|
|
44
45
|
//# sourceMappingURL=DFWConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWConfig.d.ts","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,OAAO,CAAC,EAAE;QACN;;WAEG;QACH,cAAc,CAAC,EAAE;YACb,GAAG,CAAC,EAAE,KAAK,CAAA;SACd,CAAA;QAED;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,CAAA;QAEzB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,aAAa,CAAC,EAAE,aAAa,CAAA;QAE7B
|
|
1
|
+
{"version":3,"file":"DFWConfig.d.ts","sourceRoot":"","sources":["../../../src/types/DFWConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,OAAO,CAAC,EAAE;QACN;;WAEG;QACH,cAAc,CAAC,EAAE;YACb,GAAG,CAAC,EAAE,KAAK,CAAA;SACd,CAAA;QAED;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;;WAGG;QACH,eAAe,CAAC,EAAE,OAAO,CAAA;QAEzB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,aAAa,CAAC,EAAE,aAAa,CAAA;QAE7B;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;CACJ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DFWRequest.d.ts","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,MAAM,UAAU,CAAC,SAAS,GAAG,GAAG,IAAI;IACtC,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;CACpC,GAAG,OAAO,CAAA;AAEX,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAA;AAElC,MAAM,MAAM,iBAAiB,GAAG;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,SAAS,GAAG,GAAG,IAAI;IAC5C,UAAU,EAAE,MAAM,iBAAiB,CAAA;IAEnC,EAAE,EAAE,SAAS,CAAA;IAEb;;;;OAIG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAA"}
|
|
1
|
+
{"version":3,"file":"DFWRequest.d.ts","sourceRoot":"","sources":["../../../src/types/DFWRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,MAAM,UAAU,CAAC,SAAS,GAAG,GAAG,IAAI;IACtC,GAAG,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;CACpC,GAAG,OAAO,CAAA;AAEX,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAA;AAElC,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,eAAe,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,SAAS,GAAG,GAAG,IAAI;IAC5C,UAAU,EAAE,MAAM,iBAAiB,CAAA;IAEnC,EAAE,EAAE,SAAS,CAAA;IAEb;;;;OAIG;IACH,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAErC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB,CAAA"}
|