@yangsaiyam/helper 1.6.0 → 1.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yangsaiyam/helper",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "main": "./src/index.ts",
5
5
  "types": "./src/index.ts",
6
6
  "exports": {
@@ -16,6 +16,8 @@ assert.equal(normalizeRole(0), "super-admin");
16
16
  assert.equal(normalizeRole("admin"), "admin");
17
17
  assert.equal(normalizeRole(2), "staff");
18
18
  assert.equal(normalizeRole("hr"), "hr");
19
+ assert.equal(normalizeRole(32766), "visitor");
20
+ assert.equal(normalizeRole("none"), "none");
19
21
  assert.equal(normalizeRole("unknown"), undefined);
20
22
  assert.equal(normalizeRole(undefined), undefined);
21
23
 
@@ -23,12 +25,16 @@ assert.equal(roleToId("super-admin"), 0);
23
25
  assert.equal(roleToId("admin"), 1);
24
26
  assert.equal(roleToId("staff"), 2);
25
27
  assert.equal(roleToId("hr"), 3);
28
+ assert.equal(roleToId("visitor"), 32766);
29
+ assert.equal(roleToId("none"), 32767);
26
30
  assert.equal(roleToId("unknown"), undefined);
27
31
 
28
32
  assert.equal(roleLabelKey(0), "users.roleSuperAdmin");
29
33
  assert.equal(roleLabelKey("admin"), "users.roleAdmin");
30
34
  assert.equal(roleLabelKey(2), "users.roleStaff");
31
35
  assert.equal(roleLabelKey("hr"), "users.roleHr");
36
+ assert.equal(roleLabelKey("visitor"), "users.roleVisitor");
37
+ assert.equal(roleLabelKey("none"), "users.roleNone");
32
38
  assert.equal(roleLabelKey(undefined), "users.roleStaff");
33
39
 
34
40
  assert.deepEqual(ROLE[0], {
@@ -37,6 +43,16 @@ assert.deepEqual(ROLE[0], {
37
43
  i18nKey: "users.roleSuperAdmin",
38
44
  });
39
45
  assert.equal(ROLE[3]?.i18nKey, "users.roleHr");
46
+ assert.deepEqual(ROLE[4], {
47
+ key: 32766,
48
+ value: "visitor",
49
+ i18nKey: "users.roleVisitor",
50
+ });
51
+ assert.deepEqual(ROLE[5], {
52
+ key: 32767,
53
+ value: "none",
54
+ i18nKey: "users.roleNone",
55
+ });
40
56
 
41
57
  assert.equal(
42
58
  PERMISSION_I18N_KEY[Permission.ALLOWED_EMAILS_READ],
@@ -55,6 +71,7 @@ assert.equal(
55
71
  "permissions.twoFactorAuthWrite",
56
72
  );
57
73
  assert.equal(permissionLabelKey(Permission.VIEWS_READ), "permissions.viewsRead");
74
+ assert.equal(permissionLabelKey(Permission.LOGS_READ), "permissions.logsRead");
58
75
 
59
76
  assert.ok(ROLE_PERMISSIONS["super-admin"].includes(Permission.USERS_DELETE));
60
77
  assert.ok(ROLE_PERMISSIONS["super-admin"].includes(Permission.OTP_ATTEMPTS_READ));
@@ -62,14 +79,18 @@ assert.ok(
62
79
  ROLE_PERMISSIONS["super-admin"].includes(Permission.TWO_FACTOR_AUTH_WRITE),
63
80
  );
64
81
  assert.ok(ROLE_PERMISSIONS["super-admin"].includes(Permission.VIEWS_READ));
82
+ assert.ok(ROLE_PERMISSIONS["super-admin"].includes(Permission.LOGS_READ));
65
83
  assert.ok(ROLE_PERMISSIONS.admin.includes(Permission.CONTACT_FORM_DELETE));
66
84
  assert.ok(ROLE_PERMISSIONS.admin.includes(Permission.VIEWS_READ));
85
+ assert.ok(ROLE_PERMISSIONS.admin.includes(Permission.LOGS_READ));
67
86
  assert.equal(
68
87
  ROLE_PERMISSIONS.admin.includes(Permission.USERS_WRITE),
69
88
  false,
70
89
  );
71
90
  assert.ok(ROLE_PERMISSIONS.hr.includes(Permission.JOB_APPLICATIONS_READ));
72
91
  assert.deepEqual(ROLE_PERMISSIONS.staff, [Permission.CONTACT_FORM_READ]);
92
+ assert.deepEqual(ROLE_PERMISSIONS.visitor, []);
93
+ assert.deepEqual(ROLE_PERMISSIONS.none, []);
73
94
 
74
95
  assert.equal(hasPermission("super-admin", Permission.USERS_WRITE), true);
75
96
  assert.equal(hasPermission("super-admin", Permission.OTP_ATTEMPTS_WRITE), true);
@@ -78,4 +99,6 @@ assert.equal(hasPermission("hr", Permission.CAREERS_WRITE), true);
78
99
  assert.equal(hasPermission("staff", Permission.CAREERS_WRITE), false);
79
100
  assert.equal(hasPermission("staff", Permission.CONTACT_FORM_READ), true);
80
101
  assert.equal(hasPermission("admin", Permission.VIEWS_READ), true);
102
+ assert.equal(hasPermission("visitor", Permission.VIEWS_READ), false);
103
+ assert.equal(hasPermission(32767, Permission.LOGS_READ), false);
81
104
  assert.equal(hasPermission(undefined, Permission.CAREERS_READ), false);
@@ -1,32 +1,53 @@
1
1
  import type { MappingOption } from "../shared/types";
2
2
 
3
- export type CanonicalRole = "super-admin" | "admin" | "hr" | "staff";
3
+ export type CanonicalRole =
4
+ | "super-admin"
5
+ | "admin"
6
+ | "staff"
7
+ | "hr"
8
+ | "visitor"
9
+ | "none";
4
10
  export type RoleValue = CanonicalRole | number;
5
11
  export type RoleInput = RoleValue | string;
6
12
 
13
+ export const ROLE_MAP: Record<number, CanonicalRole> = {
14
+ 0: "super-admin",
15
+ 1: "admin",
16
+ 2: "staff",
17
+ 3: "hr",
18
+ 32766: "visitor",
19
+ 32767: "none",
20
+ };
21
+
7
22
  export const ROLE = [
8
23
  { key: 0, value: "super-admin", i18nKey: "users.roleSuperAdmin" },
9
24
  { key: 1, value: "admin", i18nKey: "users.roleAdmin" },
10
25
  { key: 2, value: "staff", i18nKey: "users.roleStaff" },
11
26
  { key: 3, value: "hr", i18nKey: "users.roleHr" },
27
+ { key: 32766, value: "visitor", i18nKey: "users.roleVisitor" },
28
+ { key: 32767, value: "none", i18nKey: "users.roleNone" },
12
29
  ] as const satisfies readonly MappingOption[];
13
30
 
14
31
  export function normalizeRole(
15
32
  role: RoleInput | undefined,
16
33
  ): CanonicalRole | undefined {
34
+ if (typeof role === "number") {
35
+ return ROLE_MAP[role];
36
+ }
37
+
17
38
  switch (role) {
18
- case 0:
19
39
  case "super-admin":
20
40
  return "super-admin";
21
- case 1:
22
41
  case "admin":
23
42
  return "admin";
24
- case 2:
25
43
  case "staff":
26
44
  return "staff";
27
- case 3:
28
45
  case "hr":
29
46
  return "hr";
47
+ case "visitor":
48
+ return "visitor";
49
+ case "none":
50
+ return "none";
30
51
  default:
31
52
  return undefined;
32
53
  }
@@ -42,24 +63,18 @@ export function roleLabelKey(role: RoleInput | undefined): string {
42
63
  return "users.roleHr";
43
64
  case "staff":
44
65
  return "users.roleStaff";
66
+ case "visitor":
67
+ return "users.roleVisitor";
68
+ case "none":
69
+ return "users.roleNone";
45
70
  default:
46
71
  return "users.roleStaff";
47
72
  }
48
73
  }
49
74
 
50
75
  export function roleToId(role: RoleInput | undefined): number | undefined {
51
- switch (normalizeRole(role)) {
52
- case "super-admin":
53
- return 0;
54
- case "admin":
55
- return 1;
56
- case "staff":
57
- return 2;
58
- case "hr":
59
- return 3;
60
- default:
61
- return undefined;
62
- }
76
+ const normalizedRole = normalizeRole(role);
77
+ return ROLE.find((option) => option.value === normalizedRole)?.key;
63
78
  }
64
79
 
65
80
  export const Permission = {
@@ -79,6 +94,7 @@ export const Permission = {
79
94
  TWO_FACTOR_AUTH_READ: "two-factor-auth:read",
80
95
  TWO_FACTOR_AUTH_WRITE: "two-factor-auth:write",
81
96
  VIEWS_READ: "views:read",
97
+ LOGS_READ: "logs:read",
82
98
  } as const;
83
99
 
84
100
  export type Permission = (typeof Permission)[keyof typeof Permission];
@@ -100,6 +116,7 @@ export const PERMISSION_I18N_KEY: Record<Permission, string> = {
100
116
  [Permission.TWO_FACTOR_AUTH_READ]: "permissions.twoFactorAuthRead",
101
117
  [Permission.TWO_FACTOR_AUTH_WRITE]: "permissions.twoFactorAuthWrite",
102
118
  [Permission.VIEWS_READ]: "permissions.viewsRead",
119
+ [Permission.LOGS_READ]: "permissions.logsRead",
103
120
  };
104
121
 
105
122
  export const ROLE_PERMISSIONS: Record<CanonicalRole, Permission[]> = {
@@ -120,6 +137,7 @@ export const ROLE_PERMISSIONS: Record<CanonicalRole, Permission[]> = {
120
137
  Permission.TWO_FACTOR_AUTH_READ,
121
138
  Permission.TWO_FACTOR_AUTH_WRITE,
122
139
  Permission.VIEWS_READ,
140
+ Permission.LOGS_READ,
123
141
  ],
124
142
  admin: [
125
143
  Permission.ALLOWED_EMAILS_READ,
@@ -132,6 +150,7 @@ export const ROLE_PERMISSIONS: Record<CanonicalRole, Permission[]> = {
132
150
  Permission.CONTACT_FORM_DELETE,
133
151
  Permission.JOB_APPLICATIONS_READ,
134
152
  Permission.VIEWS_READ,
153
+ Permission.LOGS_READ,
135
154
  ],
136
155
  hr: [
137
156
  Permission.CAREERS_READ,
@@ -140,6 +159,8 @@ export const ROLE_PERMISSIONS: Record<CanonicalRole, Permission[]> = {
140
159
  Permission.JOB_APPLICATIONS_READ,
141
160
  ],
142
161
  staff: [Permission.CONTACT_FORM_READ],
162
+ visitor: [],
163
+ none: [],
143
164
  };
144
165
 
145
166
  export function hasPermission(
@@ -0,0 +1,10 @@
1
+ import { Website } from "../website";
2
+
3
+ export const URL_PREFIXES = {
4
+ [Website.KORRE]: {
5
+ contact: "https://www.korre.site/contact",
6
+ careerDetail: "https://www.korre.site/career/[id]",
7
+ careerApply: "https://www.korre.site/career/[id]/apply",
8
+ },
9
+ [Website.KORRE_LABS]: {},
10
+ };
@@ -0,0 +1,17 @@
1
+ export enum Website {
2
+ KORRE = 1,
3
+ KORRE_LABS = 2,
4
+ }
5
+
6
+ export const WEBSITES = {
7
+ [Website.KORRE]: {
8
+ id: Website.KORRE,
9
+ name: "Korre Evolution",
10
+ url: "https://public.korre.site/images/korre-evo.png",
11
+ },
12
+ [Website.KORRE_LABS]: {
13
+ id: Website.KORRE_LABS,
14
+ name: "Korre Labs",
15
+ url: "https://public.korre.site/images/korre-labs.png",
16
+ },
17
+ };