@esb-market-contracts/admin-backend 1.4.8 → 1.4.10

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/api.d.ts CHANGED
@@ -17,28 +17,28 @@ declare const authRouter: import("hono/hono-base").HonoBase<{}, {
17
17
  };
18
18
  };
19
19
  } & {
20
- "/iam/authentication/update": {
20
+ "/iam/authentication/logout": {
21
21
  $post: {
22
22
  input: {};
23
23
  output: import("@kalutskii/foundation").APIError | import("@kalutskii/foundation").APISuccess<{
24
- accessToken: string;
24
+ [x: string]: never;
25
25
  }>;
26
26
  outputFormat: "json";
27
27
  status: 200;
28
28
  };
29
29
  };
30
30
  } & {
31
- "/iam/authentication/logout": {
31
+ "/iam/authentication/refresh": {
32
32
  $post: {
33
33
  input: {};
34
34
  output: import("@kalutskii/foundation").APIError | import("@kalutskii/foundation").APISuccess<{
35
- [x: string]: never;
35
+ accessToken: string;
36
36
  }>;
37
37
  outputFormat: "json";
38
38
  status: 200;
39
39
  };
40
40
  };
41
- }, "/iam/authentication", "/iam/authentication/logout">;
41
+ }, "/iam/authentication", "/iam/authentication/refresh">;
42
42
  export type AuthRouter = typeof authRouter;
43
43
 
44
44
  export {};
package/enums.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  // Generated by dts-bundle-generator v9.5.1
2
2
 
3
- declare const PBACPermissionItems: readonly [
3
+ declare const pbacPermissionsArray: readonly [
4
4
  "employee.create",
5
5
  "employee.read",
6
6
  "employee.update"
7
7
  ];
8
- export declare const PBACPermissions: {
8
+ export declare const pbacPermissions: {
9
9
  "EMPLOYEE.CREATE": "employee.create";
10
10
  "EMPLOYEE.READ": "employee.read";
11
11
  "EMPLOYEE.UPDATE": "employee.update";
12
12
  };
13
- export type PBACPermission = (typeof PBACPermissionItems)[number];
13
+ export type PBACPermission = (typeof pbacPermissionsArray)[number];
14
14
 
15
15
  export {};
package/enums.js CHANGED
@@ -4,8 +4,8 @@ function createStringEnumRecord(values) {
4
4
  }
5
5
 
6
6
  // src/app/domain/(iam)/employees-permissions/employees-permissions.enums.ts
7
- var PBACPermissionItems = ["employee.create", "employee.read", "employee.update"];
8
- var PBACPermissions = createStringEnumRecord(PBACPermissionItems);
7
+ var pbacPermissionsArray = ["employee.create", "employee.read", "employee.update"];
8
+ var pbacPermissions = createStringEnumRecord(pbacPermissionsArray);
9
9
  export {
10
- PBACPermissions
10
+ pbacPermissions
11
11
  };
package/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export type * from './api';
2
2
  export type * from './enums';
3
- export type * from './schemas';
4
- export * from './enums';
5
- export * from './schemas';
3
+ export type * from './types';
4
+ export * from './enums';
package/index.js CHANGED
@@ -1,2 +1 @@
1
- export * from './enums.js';
2
- export * from './schemas.js';
1
+ export * from './enums.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@esb-market-contracts/admin-backend",
3
3
  "description": "Shared TypeScript contract definitions for admin-backend.",
4
- "version": "1.4.8",
4
+ "version": "1.4.10",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -12,8 +12,8 @@
12
12
  "api.js",
13
13
  "enums.d.ts",
14
14
  "enums.js",
15
- "schemas.d.ts",
16
- "schemas.js"
15
+ "types.d.ts",
16
+ "types.js"
17
17
  ],
18
18
  "exports": {
19
19
  ".": {
@@ -28,9 +28,9 @@
28
28
  "types": "./enums.d.ts",
29
29
  "default": "./enums.js"
30
30
  },
31
- "./schemas": {
32
- "types": "./schemas.d.ts",
33
- "default": "./schemas.js"
31
+ "./types": {
32
+ "types": "./types.d.ts",
33
+ "default": "./types.js"
34
34
  }
35
35
  },
36
36
  "types": "./index.d.ts"
@@ -6,8 +6,7 @@ declare const authorizeRequestSchema: z.ZodObject<{
6
6
  email: z.ZodEmail;
7
7
  password: z.ZodString;
8
8
  }, z.core.$strip>;
9
- /** Schema for the payload of an access token. */
10
- export declare const accessTokenPayloadSchema: z.ZodObject<{
9
+ declare const accessTokenPayloadSchema: z.ZodObject<{
11
10
  employee: z.ZodObject<{
12
11
  id: z.ZodInt;
13
12
  email: z.ZodString;
package/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/schemas.js DELETED
@@ -1,243 +0,0 @@
1
- // src/app/flows/authentication/authentication.schemas.ts
2
- import { z as z5 } from "zod";
3
-
4
- // src/app/domain/(iam)/employees/employees.audit.ts
5
- import { z } from "zod";
6
- var employeesAuditEvents = {
7
- "employee.created": z.object({ targetEmployeeId: z.number() }),
8
- "employee.suspended": z.object({ targetEmployeeId: z.number() }),
9
- "employee.activated": z.object({ targetEmployeeId: z.number() }),
10
- "employee.passwordReset": z.object({ targetEmployeeId: z.number() })
11
- };
12
-
13
- // src/app/domain/(iam)/employees/employees.drizzle.ts
14
- import { sql } from "drizzle-orm";
15
- import { check, pgTable, serial, text, timestamp } from "drizzle-orm/pg-core";
16
-
17
- // src/app/domain/(iam)/employees/employees.enums.ts
18
- import { pgEnum } from "drizzle-orm/pg-core";
19
-
20
- // src/utilities/enums.utilities.ts
21
- function createStringEnumRecord(values) {
22
- return Object.fromEntries(values.map((value) => [value.toUpperCase(), value]));
23
- }
24
-
25
- // src/app/domain/(iam)/employees/employees.enums.ts
26
- var employeeStatuses = ["active", "suspended"];
27
- var employeeStatusesRecord = createStringEnumRecord(employeeStatuses);
28
- var employeeStatusPGEnum = pgEnum("employee_status", employeeStatuses);
29
-
30
- // src/app/domain/(iam)/employees/employees.drizzle.ts
31
- var employeesTable = pgTable("employees", {
32
- id: serial("id").primaryKey(),
33
- email: text("email").notNull().unique(),
34
- fullName: text("full_name").notNull(),
35
- status: employeeStatusPGEnum("status").notNull().default("active"),
36
- passwordDigest: text("password_digest").notNull(),
37
- updatedAt: timestamp("updated_at").$onUpdateFn(() => /* @__PURE__ */ new Date()),
38
- createdAt: timestamp("created_at").notNull().defaultNow()
39
- }, (table) => [
40
- // Database-level email field format validation using a regex pattern.
41
- check("employees_email_check", sql`${table.email} ~* '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$'`)
42
- ]);
43
-
44
- // src/drizzle/drizzle.database.ts
45
- import { drizzle } from "drizzle-orm/postgres-js";
46
-
47
- // src/app/domain/(iam)/audit-logs/audit-logs.relations.ts
48
- import { defineRelationsPart } from "drizzle-orm";
49
-
50
- // src/app/domain/(iam)/audit-logs/audit-logs.drizzle.ts
51
- import { sql as sql2 } from "drizzle-orm";
52
- import { check as check2, index, integer, jsonb, pgTable as pgTable2, serial as serial2, text as text2, timestamp as timestamp2 } from "drizzle-orm/pg-core";
53
- var auditLogsTable = pgTable2("audit_logs", {
54
- id: serial2("id").primaryKey(),
55
- actorEmployeeId: integer("actor_employee_id").references(() => employeesTable.id, {
56
- onDelete: "set null"
57
- }),
58
- event: text2("event").notNull().$type(),
59
- payload: jsonb("payload"),
60
- createdAt: timestamp2("created_at").notNull().defaultNow()
61
- }, (table) => [
62
- // Ensure event is not empty and payload is a valid JSON object.
63
- check2("audit_event_check", sql2`${table.event} != ''`),
64
- check2("audit_payload_check", sql2`jsonb_typeof(${table.payload}) = 'object'`),
65
- // Indexes for efficient querying by employeeId and event type.
66
- index("audit_logs_actor_employee_id_idx").on(table.actorEmployeeId),
67
- index("audit_logs_event_idx").on(table.event),
68
- index("audit_logs_created_at_idx").on(table.createdAt)
69
- ]);
70
-
71
- // src/app/domain/(iam)/audit-logs/audit-logs.relations.ts
72
- var auditLogsRelationsPart = defineRelationsPart({ auditLogsTable, employeesTable }, (r) => ({
73
- auditLogsTable: {
74
- employee: r.one.employeesTable({
75
- from: r.auditLogsTable.actorEmployeeId,
76
- to: r.employeesTable.id
77
- })
78
- }
79
- }));
80
-
81
- // src/app/domain/(iam)/employees-permissions/employees-permissions.relations.ts
82
- import { defineRelationsPart as defineRelationsPart2 } from "drizzle-orm";
83
-
84
- // src/app/domain/(iam)/employees-permissions/employees-permissions.drizzle.ts
85
- import { integer as integer2, pgTable as pgTable3, serial as serial3, text as text3, unique } from "drizzle-orm/pg-core";
86
- var employeesPermissionsTable = pgTable3("employees_permissions", {
87
- id: serial3("id").primaryKey(),
88
- permission: text3("permission").notNull().$type(),
89
- employeeId: integer2("employee_id").notNull().references(() => employeesTable.id, { onDelete: "cascade" })
90
- }, (table) => [
91
- // Unique constraint on (employeeId, permission) to prevent duplicate permissions for the same employee.
92
- unique("employees_permissions_employee_id_permission_unique").on(table.employeeId, table.permission)
93
- ]);
94
-
95
- // src/app/domain/(iam)/employees-permissions/employees-permissions.relations.ts
96
- var employeesPermissionsRelationsPart = defineRelationsPart2({ employeesPermissionsTable, employeesTable }, (r) => ({
97
- employeesPermissionsTable: {
98
- employee: r.one.employeesTable({
99
- from: r.employeesPermissionsTable.employeeId,
100
- to: r.employeesTable.id
101
- })
102
- }
103
- }));
104
-
105
- // src/app/domain/(iam)/employees/employees.relations.ts
106
- import { defineRelationsPart as defineRelationsPart3 } from "drizzle-orm";
107
-
108
- // src/app/domain/(iam)/employees-permissions/employees-permissions.audit.ts
109
- import { z as z2 } from "zod";
110
-
111
- // src/app/domain/(iam)/employees-permissions/employees-permissions.enums.ts
112
- var PBACPermissionItems = ["employee.create", "employee.read", "employee.update"];
113
- var PBACPermissions = createStringEnumRecord(PBACPermissionItems);
114
-
115
- // src/app/domain/(iam)/employees-permissions/employees-permissions.audit.ts
116
- var employeesPermissionsAuditEvents = {
117
- "permissions.updated": z2.object({
118
- targetEmployeeId: z2.number(),
119
- newPermissions: z2.array(z2.enum(PBACPermissionItems))
120
- })
121
- };
122
-
123
- // src/app/domain/(iam)/sessions/sessions.audit.ts
124
- import { z as z3 } from "zod";
125
- var sessionsAuditEvents = {
126
- "session.created": z3.object({ userAgent: z3.string().optional() }),
127
- "session.revoked": z3.object({
128
- targetSessionId: z3.number(),
129
- actorEmployeeId: z3.number().optional()
130
- // Required only if the actor is not the owner of the session.
131
- })
132
- };
133
-
134
- // src/app/domain/(iam)/sessions/sessions.drizzle.ts
135
- import { index as index2, integer as integer3, pgTable as pgTable4, serial as serial4, text as text4, timestamp as timestamp3 } from "drizzle-orm/pg-core";
136
- var sessionsTable = pgTable4("sessions", {
137
- id: serial4("id").primaryKey(),
138
- refreshTokenDigest: text4("refresh_token_digest").notNull().unique(),
139
- employeeId: integer3("employee_id").notNull().references(() => employeesTable.id, { onDelete: "cascade" }),
140
- createdAt: timestamp3("created_at").notNull().defaultNow(),
141
- expiresAt: timestamp3("expires_at").notNull(),
142
- revokedAt: timestamp3("revoked_at")
143
- }, (table) => [
144
- // Indexes for efficient querying by employeeId and expiration time.
145
- index2("sessions_employee_id_idx").on(table.employeeId),
146
- index2("sessions_expires_at_idx").on(table.expiresAt)
147
- ]);
148
-
149
- // src/app/domain/(iam)/sessions/sessions.schemas.ts
150
- import { createInsertSchema, createSelectSchema } from "drizzle-orm/zod";
151
- var sessionSchema = createSelectSchema(sessionsTable);
152
- var sessionInsertSchema = createInsertSchema(sessionsTable);
153
-
154
- // src/app/domain/(iam)/sessions/sessions.repository.ts
155
- import { eq } from "drizzle-orm";
156
-
157
- // src/app/domain/(iam)/audit-logs/audit-logs.registry.ts
158
- var auditEventsRegistry = {
159
- ...employeesPermissionsAuditEvents,
160
- ...employeesAuditEvents,
161
- ...sessionsAuditEvents
162
- };
163
-
164
- // src/app/domain/(iam)/employees/employees.relations.ts
165
- var employeesRelationsPart = defineRelationsPart3({ employeesTable, employeesPermissionsTable, auditLogsTable, sessionsTable }, (r) => ({
166
- employeesTable: {
167
- sessions: r.many.sessionsTable({
168
- from: r.employeesTable.id,
169
- to: r.sessionsTable.employeeId
170
- }),
171
- auditLogs: r.many.auditLogsTable({
172
- from: r.employeesTable.id,
173
- to: r.auditLogsTable.actorEmployeeId
174
- }),
175
- permissions: r.many.employeesPermissionsTable({
176
- from: r.employeesTable.id,
177
- to: r.employeesPermissionsTable.employeeId
178
- })
179
- }
180
- }));
181
-
182
- // src/app/domain/(iam)/sessions/sessions.relations.ts
183
- import { defineRelationsPart as defineRelationsPart4 } from "drizzle-orm";
184
- var sessionsRelationsPart = defineRelationsPart4({ sessionsTable, employeesTable }, (r) => ({
185
- sessionsTable: {
186
- employee: r.one.employeesTable({
187
- from: r.sessionsTable.employeeId,
188
- to: r.employeesTable.id
189
- })
190
- }
191
- }));
192
-
193
- // src/app/domain/domain.registry.ts
194
- var domainRelationsRegistry = {
195
- ...auditLogsRelationsPart,
196
- ...employeesRelationsPart,
197
- ...employeesPermissionsRelationsPart,
198
- ...sessionsRelationsPart
199
- };
200
-
201
- // src/internal/env.config.ts
202
- import { createEnv } from "@t3-oss/env-core";
203
- import { z as z4 } from "zod";
204
- var env = createEnv({
205
- server: {
206
- // Database settings for Drizzle ORM
207
- DRIZZLE_DB_URL: z4.url().min(8).max(256),
208
- DRIZZLE_MIGRATIONS_FOLDER: z4.string().min(1).max(256),
209
- // Bun server settings
210
- BUN_SERVER_PORT: z4.coerce.number().int().positive().min(1).max(65535),
211
- BUN_SERVER_HOST: z4.string().min(1).max(64).optional().default("0.0.0.0"),
212
- // Ecosystem variables
213
- ESB_MARKET_SPACE_JWT_SECRET: z4.string().min(16).max(256),
214
- // Peripheral settings, usually not required in the environment
215
- DEFAULT_TIMEZONE: z4.string().min(4).max(256).optional().default("Asia/Tbilisi"),
216
- NODE_ENV: z4.enum(["development", "production", "test"]).optional().default("development")
217
- },
218
- runtimeEnv: process.env,
219
- emptyStringAsUndefined: true
220
- });
221
-
222
- // src/drizzle/drizzle.database.ts
223
- var db = drizzle(env.DRIZZLE_DB_URL, { relations: domainRelationsRegistry });
224
-
225
- // src/app/domain/(iam)/employees/employees.schemas.ts
226
- import { createSelectSchema as createSelectSchema2 } from "drizzle-orm/zod";
227
- var employeeSchema = createSelectSchema2(employeesTable);
228
-
229
- // src/app/domain/(iam)/employees/employees.exceptions.ts
230
- import { HTTPException } from "hono/http-exception";
231
-
232
- // src/app/flows/authentication/authentication.schemas.ts
233
- var authorizeRequestSchema = z5.object({
234
- email: z5.email().min(8).max(128),
235
- password: z5.string().min(8).max(128)
236
- });
237
- var accessTokenPayloadSchema = z5.object({
238
- employee: employeeSchema.pick({ id: true, email: true, fullName: true }),
239
- permissions: z5.array(z5.enum(PBACPermissionItems))
240
- });
241
- export {
242
- accessTokenPayloadSchema
243
- };