@esb-market-contracts/admin-backend 1.8.4 → 1.8.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.
Files changed (2) hide show
  1. package/enums.js +3 -197
  2. package/package.json +1 -1
package/enums.js CHANGED
@@ -1,208 +1,14 @@
1
- // src/app/domain/(iam)/permissions/permissions.audit.ts
2
- import { z } from "zod";
3
- var permissionsAuditEvents = {
4
- "permissions.updated": z.object({
5
- targetEmployeeId: z.number(),
6
- updatedGrants: grantsZodArray
7
- })
8
- };
9
-
10
- // src/app/domain/(iam)/permissions/permissions.repository.ts
11
- import { sqlWhere } from "@kalutskii/foundation";
12
-
13
- // src/drizzle/drizzle.database.ts
14
- import { drizzle } from "drizzle-orm/postgres-js";
15
- import postgres from "postgres";
16
-
17
- // src/app/domain/(iam)/audit-logs/audit-logs.relations.ts
18
- import { defineRelationsPart } from "drizzle-orm";
19
-
20
- // src/app/domain/(iam)/employees/employees.drizzle.ts
21
- import { sql } from "drizzle-orm";
22
- import { check, index, pgTable, serial, text, timestamp } from "drizzle-orm/pg-core";
23
-
24
- // src/app/domain/(iam)/employees/employees.enums.ts
25
- import { pgEnum } from "drizzle-orm/pg-core";
1
+ // src/app/domain/(iam)/permissions/permissions.enums.ts
2
+ import z from "zod";
26
3
 
27
4
  // src/utilities/enums.utilities.ts
28
5
  function createStringEnumRecord(values) {
29
6
  return Object.fromEntries(values.map((v) => [v.replace(/\./g, "_").toUpperCase(), v]));
30
7
  }
31
8
 
32
- // src/app/domain/(iam)/employees/employees.enums.ts
33
- var employeeStatusesArray = ["active", "suspended"];
34
- var employeeStatusPGEnum = pgEnum("employee_status", employeeStatusesArray);
35
- var employeeStatusesRecord = createStringEnumRecord(employeeStatusesArray);
36
-
37
- // src/app/domain/(iam)/employees/employees.drizzle.ts
38
- var employeesTable = pgTable("employees", {
39
- id: serial("id").primaryKey(),
40
- email: text("email").notNull().unique(),
41
- fullName: text("full_name").notNull(),
42
- passwordDigest: text("password_digest").notNull(),
43
- status: employeeStatusPGEnum("status").notNull().default("active"),
44
- updatedAt: timestamp("updated_at").$onUpdateFn(() => /* @__PURE__ */ new Date()),
45
- createdAt: timestamp("created_at").notNull().defaultNow()
46
- }, (table) => [
47
- // Ensure `email` is not empty and matches a basic email regex pattern.
48
- check("employees_email_check", sql`${table.email} ~* '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$'`),
49
- // Indexes for efficient querying by `passwordDigest`, and `status` columns.
50
- index("employees_password_digest_idx").on(table.passwordDigest),
51
- index("employees_status_idx").on(table.status)
52
- ]);
53
-
54
- // src/app/domain/(iam)/audit-logs/audit-logs.drizzle.ts
55
- import { sql as sql2 } from "drizzle-orm";
56
- import { check as check2, index as index2, integer, jsonb, pgTable as pgTable2, serial as serial2, text as text2, timestamp as timestamp2 } from "drizzle-orm/pg-core";
57
- var auditLogsTable = pgTable2("audit_logs", {
58
- id: serial2("id").primaryKey(),
59
- event: text2("event").notNull().$type(),
60
- actorEmployeeId: integer("actor_employee_id").references(() => employeesTable.id, {
61
- onDelete: "set null"
62
- }),
63
- payload: jsonb("payload").notNull(),
64
- createdAt: timestamp2("created_at").notNull().defaultNow()
65
- }, (table) => [
66
- // Ensure `event` and `payload` are not empty.
67
- check2("audit_event_check", sql2`${table.event} != ''`),
68
- check2("audit_payload_check", sql2`jsonb_typeof(${table.payload}) = 'object'`),
69
- // Indexes for efficient querying by `actorEmployeeId`, `event`, and `createdAt` columns.
70
- index2("audit_logs_actor_employee_id_idx").on(table.actorEmployeeId),
71
- index2("audit_logs_event_idx").on(table.event),
72
- index2("audit_logs_created_at_idx").on(table.createdAt)
73
- ]);
74
-
75
- // src/app/domain/(iam)/audit-logs/audit-logs.relations.ts
76
- var auditLogsRelationsPart = defineRelationsPart({ auditLogsTable, employeesTable }, (r) => ({
77
- auditLogsTable: {
78
- employee: r.one.employeesTable({
79
- from: r.auditLogsTable.actorEmployeeId,
80
- to: r.employeesTable.id
81
- })
82
- }
83
- }));
84
-
85
- // src/app/domain/(iam)/employees/employees.relations.ts
86
- import { defineRelationsPart as defineRelationsPart2 } from "drizzle-orm";
87
-
88
- // src/app/domain/(iam)/permissions/permissions.drizzle.ts
89
- import { integer as integer2, pgTable as pgTable3, serial as serial3, text as text3, timestamp as timestamp3, unique } from "drizzle-orm/pg-core";
90
- var permissionsTable = pgTable3("permissions", {
91
- id: serial3("id").primaryKey(),
92
- grant: text3("grant").notNull().$type(),
93
- employeeId: integer2("employee_id").notNull().references(() => employeesTable.id, { onDelete: "cascade" }),
94
- createdAt: timestamp3("created_at").notNull().defaultNow()
95
- }, (table) => [
96
- // Unique constraint on (`employeeId`, `grant`) to prevent duplicate records for the same employee.
97
- unique("permissions_employee_id_grant_unique").on(table.employeeId, table.grant)
98
- ]);
99
-
100
- // src/app/domain/(iam)/sessions/sessions.drizzle.ts
101
- import { sql as sql3 } from "drizzle-orm";
102
- import { check as check3, index as index3, integer as integer3, pgTable as pgTable4, serial as serial4, text as text4, timestamp as timestamp4 } from "drizzle-orm/pg-core";
103
- var sessionsTable = pgTable4("sessions", {
104
- id: serial4("id").primaryKey(),
105
- employeeId: integer3("employee_id").notNull().references(() => employeesTable.id, { onDelete: "cascade" }),
106
- refreshTokenDigest: text4("refresh_token_digest").notNull().unique(),
107
- createdAt: timestamp4("created_at").notNull().defaultNow(),
108
- expiresAt: timestamp4("expires_at").notNull(),
109
- revokedAt: timestamp4("revoked_at")
110
- }, (table) => [
111
- // Ensure `expiresAt` is always greater than `createdAt`.
112
- check3("sessions_expires_at_check", sql3`${table.expiresAt} > ${table.createdAt}`),
113
- // Indexes for efficient querying by `employeeId` and `expiresAt` columns.
114
- index3("sessions_employee_id_idx").on(table.employeeId),
115
- index3("sessions_expires_at_idx").on(table.expiresAt)
116
- ]);
117
-
118
- // src/app/domain/(iam)/employees/employees.relations.ts
119
- var employeesRelationsPart = defineRelationsPart2({ auditLogsTable, employeesTable, permissionsTable, sessionsTable }, (r) => ({
120
- employeesTable: {
121
- auditLogs: r.many.auditLogsTable({
122
- from: r.employeesTable.id,
123
- to: r.auditLogsTable.actorEmployeeId
124
- }),
125
- permissions: r.many.permissionsTable({
126
- from: r.employeesTable.id,
127
- to: r.permissionsTable.employeeId
128
- }),
129
- sessions: r.many.sessionsTable({
130
- from: r.employeesTable.id,
131
- to: r.sessionsTable.employeeId
132
- })
133
- }
134
- }));
135
-
136
- // src/app/domain/(iam)/permissions/permissions.relations.ts
137
- import { defineRelationsPart as defineRelationsPart3 } from "drizzle-orm";
138
- var permissionsRelationsPart = defineRelationsPart3({ permissionsTable, employeesTable }, (r) => ({
139
- permissionsTable: {
140
- employee: r.one.employeesTable({
141
- from: r.permissionsTable.employeeId,
142
- to: r.employeesTable.id
143
- })
144
- }
145
- }));
146
-
147
- // src/app/domain/(iam)/sessions/sessions.relations.ts
148
- import { defineRelationsPart as defineRelationsPart4 } from "drizzle-orm";
149
- var sessionsRelationsPart = defineRelationsPart4({ sessionsTable, employeesTable }, (r) => ({
150
- sessionsTable: {
151
- employee: r.one.employeesTable({
152
- from: r.sessionsTable.employeeId,
153
- to: r.employeesTable.id
154
- })
155
- }
156
- }));
157
-
158
- // src/app/domain/domain.registry.ts
159
- var domainRelationsRegistry = {
160
- ...auditLogsRelationsPart,
161
- ...employeesRelationsPart,
162
- ...permissionsRelationsPart,
163
- ...sessionsRelationsPart
164
- };
165
-
166
- // src/internal/env.config.ts
167
- import { createEnv } from "@t3-oss/env-core";
168
- import { z as z2 } from "zod";
169
- var env = createEnv({
170
- server: {
171
- // Database settings for Drizzle ORM
172
- DRIZZLE_DB_URL: z2.url().min(8).max(256),
173
- DRIZZLE_MIGRATIONS_FOLDER: z2.string().min(1).max(256),
174
- // Bun server settings
175
- BUN_SERVER_PORT: z2.coerce.number().int().positive().min(1).max(65535),
176
- BUN_SERVER_HOST: z2.string().min(1).max(64).optional().default("0.0.0.0"),
177
- // Ecosystem variables
178
- ESB_MARKET_SPACE_JWT_SECRET: z2.string().min(32).max(256),
179
- // Peripheral settings, usually not required in the environment
180
- PRODUCTION: z2.boolean().default(process.env.NODE_ENV === "production"),
181
- DEVELOPMENT: z2.boolean().default(process.env.NODE_ENV === "development"),
182
- DEFAULT_TIMEZONE: z2.string().min(4).max(256).optional().default("Asia/Tbilisi")
183
- },
184
- runtimeEnv: process.env,
185
- emptyStringAsUndefined: true
186
- });
187
-
188
- // src/drizzle/drizzle.database.ts
189
- var sql4 = postgres(env.DRIZZLE_DB_URL, { max: 10, idle_timeout: 20, connect_timeout: 10, prepare: false });
190
- var db = drizzle({ client: sql4, relations: domainRelationsRegistry });
191
-
192
- // src/app/domain/(iam)/permissions/permissions.schemas.ts
193
- import { zodAtLeastOne } from "@kalutskii/foundation";
194
- import { createSelectSchema } from "drizzle-orm/zod";
195
- import { z as z3 } from "zod";
196
- var permissionEntitySchema = createSelectSchema(permissionsTable);
197
- var permissionSchema = permissionEntitySchema.omit({ grant: true }).extend({ grant: z3.enum(grantsArray) });
198
- var permissionInsertSchema = permissionSchema.omit({ id: true, createdAt: true }).strict();
199
- var permissionSelectSchema = permissionSchema.pick({ employeeId: true });
200
- var permissionSelectManySchema = zodAtLeastOne(permissionSchema.pick({ employeeId: true, grant: true }).partial());
201
-
202
9
  // src/app/domain/(iam)/permissions/permissions.enums.ts
203
- import z4 from "zod";
204
10
  var grantsArray = ["employee.create", "employee.read", "employee.update"];
205
- var grantsZodArray = z4.array(z4.enum(grantsArray));
11
+ var grantsZodArray = z.array(z.enum(grantsArray));
206
12
  var grantsRecord = createStringEnumRecord(grantsArray);
207
13
  export {
208
14
  grantsRecord as grants
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.8.4",
4
+ "version": "1.8.5",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "sideEffects": false,