@sorokchat-messenger/contracts 1.0.7 → 1.0.8
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/authorization/authorized.schema.d.ts +6 -0
- package/dist/authorization/authorized.schema.d.ts.map +1 -0
- package/dist/authorization/authorized.schema.js +9 -0
- package/dist/authorization/authorized.schema.js.map +1 -0
- package/dist/authorization/codes.d.ts +4 -0
- package/dist/authorization/codes.d.ts.map +1 -1
- package/dist/authorization/codes.js +5 -0
- package/dist/authorization/codes.js.map +1 -1
- package/dist/authorization/index.d.ts +1 -0
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +1 -0
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/login.schema.d.ts +2 -2
- package/dist/authorization/register.schema.d.ts +2 -2
- package/dist/common/role-hierarchy.util.d.ts +9 -0
- package/dist/common/role-hierarchy.util.d.ts.map +1 -0
- package/dist/common/role-hierarchy.util.js +40 -0
- package/dist/common/role-hierarchy.util.js.map +1 -0
- package/dist/common/role.hierarchy.util.spec.d.ts +2 -0
- package/dist/common/role.hierarchy.util.spec.d.ts.map +1 -0
- package/dist/common/role.hierarchy.util.spec.js +36 -0
- package/dist/common/role.hierarchy.util.spec.js.map +1 -0
- package/dist/users/new-user.schema.d.ts +2 -2
- package/dist/users/new-user.schema.d.ts.map +1 -1
- package/dist/users/new-user.schema.js +3 -5
- package/dist/users/new-user.schema.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorized.schema.d.ts","sourceRoot":"","sources":["../../src/authorization/authorized.schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,eAAO,MAAM,gBAAgB;;iBAI3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { AuthorizationCodes } from "./codes.js";
|
|
3
|
+
const JWT_REGEXP = /^[A-Za-z0-9_-]{2,}\.[A-Za-z0-9_-]{2,}\.[A-Za-z0-9_-]+$/;
|
|
4
|
+
export const AuthorizedSchema = z.object({
|
|
5
|
+
accessToken: z
|
|
6
|
+
.string({ error: AuthorizationCodes.ACCESS_TOKEN.UNDEFINED })
|
|
7
|
+
.regex(JWT_REGEXP, { error: AuthorizationCodes.ACCESS_TOKEN.NOT_JWT }),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=authorized.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorized.schema.js","sourceRoot":"","sources":["../../src/authorization/authorized.schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,UAAU,GAAG,wDAAwD,CAAC;AAE5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;SAC5D,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;CACzE,CAAC,CAAC"}
|
|
@@ -2,5 +2,9 @@ export declare const AuthorizationCodes: {
|
|
|
2
2
|
readonly BAD_CREDENTIALS: `${string}.bad-credentials`;
|
|
3
3
|
readonly ACCESS_DENIED: `${string}.access-denied`;
|
|
4
4
|
readonly UNAUTHORIZED: `${string}.unauthorized`;
|
|
5
|
+
readonly ACCESS_TOKEN: {
|
|
6
|
+
readonly UNDEFINED: `${string}.undefined`;
|
|
7
|
+
readonly NOT_JWT: `${string}.not-jwt`;
|
|
8
|
+
};
|
|
5
9
|
};
|
|
6
10
|
//# sourceMappingURL=codes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/authorization/codes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codes.d.ts","sourceRoot":"","sources":["../../src/authorization/codes.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB;aAC7B,eAAe;aACf,aAAa;aACb,YAAY;aACZ,YAAY;iBACV,SAAS;iBACT,OAAO;;CAED,CAAC"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { ERROR_CODE } from "../common/index.js";
|
|
2
2
|
const AUTHORIZATION_ERROR = `${ERROR_CODE}.authorization`;
|
|
3
|
+
const ACCESS_TOKEN_ERROR = `${ERROR_CODE}.access-token`;
|
|
3
4
|
export const AuthorizationCodes = {
|
|
4
5
|
BAD_CREDENTIALS: `${AUTHORIZATION_ERROR}.bad-credentials`,
|
|
5
6
|
ACCESS_DENIED: `${AUTHORIZATION_ERROR}.access-denied`,
|
|
6
7
|
UNAUTHORIZED: `${AUTHORIZATION_ERROR}.unauthorized`,
|
|
8
|
+
ACCESS_TOKEN: {
|
|
9
|
+
UNDEFINED: `${ACCESS_TOKEN_ERROR}.undefined`,
|
|
10
|
+
NOT_JWT: `${ACCESS_TOKEN_ERROR}.not-jwt`,
|
|
11
|
+
},
|
|
7
12
|
};
|
|
8
13
|
//# sourceMappingURL=codes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../../src/authorization/codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,mBAAmB,GAAW,GAAG,UAAU,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"codes.js","sourceRoot":"","sources":["../../src/authorization/codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,mBAAmB,GAAW,GAAG,UAAU,gBAAgB,CAAC;AAClE,MAAM,kBAAkB,GAAW,GAAG,UAAU,eAAe,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,eAAe,EAAE,GAAG,mBAAmB,kBAAkB;IACzD,aAAa,EAAE,GAAG,mBAAmB,gBAAgB;IACrD,YAAY,EAAE,GAAG,mBAAmB,eAAe;IACnD,YAAY,EAAE;QACZ,SAAS,EAAE,GAAG,kBAAkB,YAAY;QAC5C,OAAO,EAAE,GAAG,kBAAkB,UAAU;KACzC;CACO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authorization/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type z from "zod";
|
|
2
2
|
export declare const LoginSchema: z.ZodObject<{
|
|
3
|
-
login: z.
|
|
4
|
-
password: z.
|
|
3
|
+
login: z.ZodString;
|
|
4
|
+
password: z.ZodString;
|
|
5
5
|
}, z.core.$strip>;
|
|
6
6
|
export type LoginPayload = z.infer<typeof LoginSchema>;
|
|
7
7
|
//# sourceMappingURL=login.schema.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type z from "zod";
|
|
2
2
|
export declare const RegisterSchema: z.ZodObject<{
|
|
3
|
-
login: z.
|
|
4
|
-
password: z.
|
|
3
|
+
login: z.ZodString;
|
|
4
|
+
password: z.ZodString;
|
|
5
5
|
displayName: z.ZodOptional<z.ZodString>;
|
|
6
6
|
}, z.core.$strip>;
|
|
7
7
|
export type RegisterPayload = z.infer<typeof RegisterSchema>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class RoleHierarchy {
|
|
2
|
+
private readonly map;
|
|
3
|
+
private readonly cache;
|
|
4
|
+
constructor(map: Map<string, string[]>);
|
|
5
|
+
hasRole(needRole: string, currentRole: string): boolean;
|
|
6
|
+
private save;
|
|
7
|
+
private generateKey;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=role-hierarchy.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-hierarchy.util.d.ts","sourceRoot":"","sources":["../../src/common/role-hierarchy.util.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAE7C,YAAmB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAQ5C;IAEM,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAsB7D;IAED,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export class RoleHierarchy {
|
|
2
|
+
map;
|
|
3
|
+
cache;
|
|
4
|
+
constructor(map) {
|
|
5
|
+
this.map = new Map([...map.entries()].map(([role, inheritedRoles]) => [
|
|
6
|
+
role,
|
|
7
|
+
[...inheritedRoles],
|
|
8
|
+
]));
|
|
9
|
+
this.cache = new Map();
|
|
10
|
+
}
|
|
11
|
+
hasRole(needRole, currentRole) {
|
|
12
|
+
const key = this.generateKey(currentRole, needRole);
|
|
13
|
+
const fromCache = this.cache.get(key);
|
|
14
|
+
if (fromCache !== undefined)
|
|
15
|
+
return fromCache;
|
|
16
|
+
if (needRole === currentRole) {
|
|
17
|
+
this.save(key, true);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
const currentRoles = this.map.get(currentRole);
|
|
21
|
+
if (!currentRoles) {
|
|
22
|
+
this.save(key, false);
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (currentRoles.includes(needRole)) {
|
|
26
|
+
this.save(key, true);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const result = currentRoles.some((role) => this.hasRole(needRole, role));
|
|
30
|
+
this.save(key, result);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
save(key, flag) {
|
|
34
|
+
this.cache.set(key, flag);
|
|
35
|
+
}
|
|
36
|
+
generateKey(current, needed) {
|
|
37
|
+
return `${current}:${needed}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=role-hierarchy.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-hierarchy.util.js","sourceRoot":"","sources":["../../src/common/role-hierarchy.util.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,aAAa;IACP,GAAG,CAAwB;IAC3B,KAAK,CAAuB;IAE7C,YAAmB,GAA0B;QAC3C,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAChB,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC;YACjD,IAAI;YACJ,CAAC,GAAG,cAAc,CAAC;SACpB,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,CAAC;IAEM,OAAO,CAAC,QAAgB,EAAE,WAAmB;QAClD,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9C,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAY,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC7B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,IAAI,CAAC,GAAW,EAAE,IAAa;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,WAAW,CAAC,OAAe,EAAE,MAAc;QACjD,OAAO,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.hierarchy.util.spec.d.ts","sourceRoot":"","sources":["../../src/common/role.hierarchy.util.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { beforeAll, expect, it, describe } from "vitest";
|
|
2
|
+
import { RoleHierarchy } from "./role-hierarchy.util.js";
|
|
3
|
+
const USER = "USER";
|
|
4
|
+
const PRO = "PRO";
|
|
5
|
+
const ADMIN = "ADMIN";
|
|
6
|
+
describe("Role Hierarchy tests", () => {
|
|
7
|
+
let hierarchy;
|
|
8
|
+
beforeAll(() => {
|
|
9
|
+
hierarchy = new RoleHierarchy(new Map([
|
|
10
|
+
[USER, []],
|
|
11
|
+
[PRO, [USER]],
|
|
12
|
+
[ADMIN, [PRO]],
|
|
13
|
+
]));
|
|
14
|
+
});
|
|
15
|
+
it(`returns false if needUser = ${ADMIN}, currentUser = ${PRO}`, () => {
|
|
16
|
+
const result = hierarchy.hasRole(ADMIN, PRO);
|
|
17
|
+
expect(result).toBeFalsy();
|
|
18
|
+
});
|
|
19
|
+
it(`returns false if needUser = ${ADMIN}, currentUser = ${USER}`, () => {
|
|
20
|
+
const result = hierarchy.hasRole(ADMIN, USER);
|
|
21
|
+
expect(result).toBeFalsy();
|
|
22
|
+
});
|
|
23
|
+
it(`returns false if needUser = ${ADMIN}, currentUser = ${ADMIN}`, () => {
|
|
24
|
+
const result = hierarchy.hasRole(ADMIN, ADMIN);
|
|
25
|
+
expect(result).toBeTruthy();
|
|
26
|
+
});
|
|
27
|
+
it("returns false if role not found", () => {
|
|
28
|
+
const result = hierarchy.hasRole(ADMIN, "TEST");
|
|
29
|
+
expect(result).toBeFalsy();
|
|
30
|
+
});
|
|
31
|
+
it(`returns false if needUser = ${PRO}, currentUser = ${ADMIN}`, () => {
|
|
32
|
+
const result = hierarchy.hasRole(PRO, ADMIN);
|
|
33
|
+
expect(result).toBeTruthy();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=role.hierarchy.util.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.hierarchy.util.spec.js","sourceRoot":"","sources":["../../src/common/role.hierarchy.util.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,IAAI,GAAW,MAAM,CAAC;AAC5B,MAAM,GAAG,GAAW,KAAK,CAAC;AAC1B,MAAM,KAAK,GAAW,OAAO,CAAC;AAE9B,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,SAAwB,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,GAAG,IAAI,aAAa,CAC3B,IAAI,GAAG,CAAmB;YACxB,CAAC,IAAI,EAAE,EAAE,CAAC;YACV,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACb,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;SACf,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,KAAK,mBAAmB,GAAG,EAAE,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,KAAK,mBAAmB,IAAI,EAAE,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,KAAK,mBAAmB,KAAK,EAAE,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,GAAG,mBAAmB,KAAK,EAAE,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import z from "zod";
|
|
2
2
|
export declare const NewUserSchema: z.ZodObject<{
|
|
3
|
-
login: z.
|
|
4
|
-
password: z.
|
|
3
|
+
login: z.ZodString;
|
|
4
|
+
password: z.ZodString;
|
|
5
5
|
displayName: z.ZodOptional<z.ZodString>;
|
|
6
6
|
}, z.core.$strip>;
|
|
7
7
|
export type NewUserPayload = z.infer<typeof NewUserSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-user.schema.d.ts","sourceRoot":"","sources":["../../src/users/new-user.schema.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;
|
|
1
|
+
{"version":3,"file":"new-user.schema.d.ts","sourceRoot":"","sources":["../../src/users/new-user.schema.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,aAAa;;;;iBA4B+C,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -3,15 +3,14 @@ import z from "zod";
|
|
|
3
3
|
export const NewUserSchema = z
|
|
4
4
|
.object({
|
|
5
5
|
login: z
|
|
6
|
-
.string()
|
|
6
|
+
.string({ message: UserCodes.LOGIN.UNDEFINED })
|
|
7
7
|
.nonempty({ message: UserCodes.LOGIN.EMPTY })
|
|
8
|
-
.nonoptional({ message: UserCodes.LOGIN.UNDEFINED })
|
|
9
8
|
.meta({
|
|
10
9
|
example: "andrey_sorokovsky",
|
|
11
10
|
description: "Унікальне ім'я користувача",
|
|
12
11
|
}),
|
|
13
12
|
password: z
|
|
14
|
-
.string()
|
|
13
|
+
.string({ message: UserCodes.PASSWORD.UNDEFINED })
|
|
15
14
|
.min(UserCodes.PASSWORD.MIN_LENGTH.VALUE, {
|
|
16
15
|
message: UserCodes.PASSWORD.MIN_LENGTH.CODE,
|
|
17
16
|
})
|
|
@@ -19,10 +18,9 @@ export const NewUserSchema = z
|
|
|
19
18
|
message: UserCodes.PASSWORD.MAX_LENGTH.CODE,
|
|
20
19
|
})
|
|
21
20
|
.nonempty({ message: UserCodes.PASSWORD.EMPTY })
|
|
22
|
-
.nonoptional({ message: UserCodes.PASSWORD.UNDEFINED })
|
|
23
21
|
.meta({ example: "<PASSWORD>", description: "Пароль користувача" }),
|
|
24
22
|
displayName: z
|
|
25
|
-
.string()
|
|
23
|
+
.string({ message: UserCodes.DISPLAY_NAME.EMPTY })
|
|
26
24
|
.nonempty({ message: UserCodes.DISPLAY_NAME.EMPTY })
|
|
27
25
|
.optional()
|
|
28
26
|
.meta({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-user.schema.js","sourceRoot":"","sources":["../../src/users/new-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC;SACL,MAAM,
|
|
1
|
+
{"version":3,"file":"new-user.schema.js","sourceRoot":"","sources":["../../src/users/new-user.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;SAC9C,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SAC5C,IAAI,CAAC;QACJ,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,4BAA4B;KAC1C,CAAC;IACJ,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;SACjD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE;QACxC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;KAC5C,CAAC;SACD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE;QACxC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;KAC5C,CAAC;SACD,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SAC/C,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACrE,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SACjD,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SACnD,QAAQ,EAAE;SACV,IAAI,CAAC;QACJ,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,yBAAyB;KACvC,CAAC;CACL,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sorokchat-messenger/contracts",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Frontend and backend contracts",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frontend",
|
|
@@ -34,14 +34,18 @@
|
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
|
-
"build": "tsc"
|
|
37
|
+
"build": "tsc",
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"test:cov": "vitest run --coverage"
|
|
38
40
|
},
|
|
39
41
|
"devDependencies": {
|
|
40
42
|
"@sorokchat-messenger/core": "^1.0.0",
|
|
41
43
|
"prettier": "^3.9.6"
|
|
42
44
|
},
|
|
43
45
|
"dependencies": {
|
|
46
|
+
"@vitest/coverage-v8": "^5.0.1",
|
|
44
47
|
"reflect-metadata": "^0.2.2",
|
|
48
|
+
"vitest": "^5.0.1",
|
|
45
49
|
"zod": "^4.5.4"
|
|
46
50
|
}
|
|
47
51
|
}
|