fix npm run build

This commit is contained in:
Rayyan
2026-08-02 20:01:29 +07:00
parent 306c145f91
commit eb6031282a
236 changed files with 5557 additions and 47 deletions
@@ -0,0 +1,26 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaPermissionMapper = void 0;
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaPermissionMapper {
static toDomain(model) {
return permission_entity_1.PermissionData.restore({
id: model.id,
code: model.code || model.name,
name: model.name,
description: model.description,
createdAt: model.createdAt,
updatedAt: model.updatedAt,
});
}
static toPersistence(permission) {
return {
id: permission.id,
code: permission.code,
name: permission.name,
description: permission.description,
};
}
}
exports.PrismaPermissionMapper = PrismaPermissionMapper;
//# sourceMappingURL=prisma-permission.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-permission.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-permission.mapper.ts"],"names":[],"mappings":";;;AAAA,+EAAyE;AAEzE,MAAa,sBAAsB;IACjC,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,OAAO,kCAAc,CAAC,OAAO,CAAC;YAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAA0B;QAC7C,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC;IACJ,CAAC;CACF;AApBD,wDAoBC"}
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaRoleMapper = void 0;
const role_entity_1 = require("../../domain/entities/role.entity");
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaRoleMapper {
static toDomain(model) {
const permissions = (model.permissions || []).map((p) => {
const perm = p.permission || p; // p may be RolePermission with nested permission or permission itself
return permission_entity_1.PermissionData.restore({
id: perm.id,
name: perm.name,
description: perm.description,
createdAt: perm.createdAt,
updatedAt: perm.updatedAt,
});
});
return role_entity_1.RoleData.restore({
id: model.id,
code: model.code,
name: model.name,
description: model.description,
permissions,
isDefault: model.isDefault ?? false,
createdAt: model.createdAt,
updatedAt: model.updatedAt,
});
}
}
exports.PrismaRoleMapper = PrismaRoleMapper;
//# sourceMappingURL=prisma-role.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-role.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-role.mapper.ts"],"names":[],"mappings":";;;AAAA,mEAA6D;AAC7D,+EAAyE;AAEzE,MAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAU;QACxB,MAAM,WAAW,GAAqB,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC7E,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,sEAAsE;YACtG,OAAO,kCAAc,CAAC,OAAO,CAAC;gBAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,sBAAQ,CAAC,OAAO,CAAC;YACtB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW;YACX,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAxBD,4CAwBC"}
@@ -0,0 +1,69 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaUserMapper = void 0;
const user_entity_1 = require("../../domain/entities/user.entity");
const role_entity_1 = require("../../domain/entities/role.entity");
const permission_entity_1 = require("../../domain/entities/permission.entity");
class PrismaUserMapper {
static toDomain(model) {
const roles = (model.roles || []).map((ur) => {
const r = ur.role;
const permissions = (r?.permissions || []).map((rp) => permission_entity_1.PermissionData.restore({
id: rp.permission.id,
name: rp.permission.name,
description: rp.permission.description,
createdAt: rp.permission.createdAt,
updatedAt: rp.permission.updatedAt,
}));
return role_entity_1.RoleData.restore({
id: r.id,
code: r.code,
name: r.name,
description: r.description,
permissions,
createdAt: r.createdAt,
updatedAt: r.updatedAt,
});
});
const permissions = (model.permissions || []).map((up) => permission_entity_1.PermissionData.restore({
id: up.permission.id,
name: up.permission.name,
description: up.permission.description,
createdAt: up.permission.createdAt,
updatedAt: up.permission.updatedAt,
}));
return user_entity_1.UserData.restore({
id: model.id,
authentikId: model.authentikUserId || model.authentikId || null,
username: model.username || model.name || model.username,
email: model.email,
password: model.password ?? null,
roles,
permissions,
isActive: model.isActive ?? true,
deletedAt: model.deletedAt || null,
lastSeenAt: model.lastSeenAt || null,
storageQuota: model.storageQuota !== undefined && model.storageQuota !== null ? Number(model.storageQuota) : undefined,
storageUsed: model.storageUsed !== undefined && model.storageUsed !== null ? Number(model.storageUsed) : undefined,
});
}
static toPersistence(userData) {
return {
id: userData.id,
authentikUserId: userData.authentikUserId || userData.authentikId,
authentikId: userData.authentikId,
username: userData.username,
email: userData.email,
password: userData.password ?? null,
isActive: userData.isActive,
deletedAt: userData.deletedAt,
lastSeenAt: userData.lastSeenAt,
lastSyncedAt: userData.lastSyncedAt,
syncStatus: userData.syncStatus,
storageQuota: userData.storageQuota,
storageUsed: userData.storageUsed,
};
}
}
exports.PrismaUserMapper = PrismaUserMapper;
//# sourceMappingURL=prisma-user.mapper.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-user.mapper.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/mappers/prisma-user.mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaPermissionRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_permission_mapper_1 = require("../mappers/prisma-permission.mapper");
let PrismaPermissionRepository = class PrismaPermissionRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ name: { contains: params.search, mode: 'insensitive' } },
{ code: { contains: params.search, mode: 'insensitive' } },
{ description: { contains: params.search, mode: 'insensitive' } },
];
}
const [total, items] = await Promise.all([
this.prisma.permission.count({ where }),
this.prisma.permission.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' } }),
]);
return { data: items.map(i => prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(i)), total };
}
async getById(id) {
const p = await this.prisma.permission.findUnique({ where: { id } });
if (!p)
throw new Error('Permission not found.');
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(p);
}
async create(permission) {
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
const created = await this.prisma.permission.create({ data: base });
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(created);
}
async update(permission) {
const base = prisma_permission_mapper_1.PrismaPermissionMapper.toPersistence(permission);
const updated = await this.prisma.permission.update({ where: { id: permission.id }, data: base });
return prisma_permission_mapper_1.PrismaPermissionMapper.toDomain(updated);
}
async delete(id) {
await this.prisma.permission.delete({ where: { id } });
}
async findRoleIdsByPermission(permissionId) {
const rows = await this.prisma.rolePermission.findMany({ where: { permissionId }, select: { roleId: true } });
return rows.map(r => r.roleId);
}
};
exports.PrismaPermissionRepository = PrismaPermissionRepository;
exports.PrismaPermissionRepository = PrismaPermissionRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaPermissionRepository);
//# sourceMappingURL=prisma-permission.repository.js.map
@@ -0,0 +1 @@
{"version":3,"file":"prisma-permission.repository.js","sourceRoot":"","sources":["../../../../../src/modules/identity/infrastructure/repositories/prisma-permission.repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaRoleRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_role_mapper_1 = require("../mappers/prisma-role.mapper");
let PrismaRoleRepository = class PrismaRoleRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
async getDefaultRole() {
const role = await this.prisma.role.findFirst({
where: { isDefault: true },
include: { permissions: { include: { permission: true } } },
});
if (!role)
return null;
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
}
async findById(roleId) {
const role = await this.prisma.role.findUnique({
where: { id: roleId },
include: { permissions: { include: { permission: true } } },
});
if (!role)
throw new Error('Role not found.');
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(role);
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ name: { contains: params.search, mode: 'insensitive' } },
{ code: { contains: params.search, mode: 'insensitive' } },
{ description: { contains: params.search, mode: 'insensitive' } },
];
}
const [total, items] = await Promise.all([
this.prisma.role.count({ where }),
this.prisma.role.findMany({ where, skip: (page - 1) * limit, take: limit, orderBy: { createdAt: 'desc' }, include: { permissions: { include: { permission: true } } } }),
]);
return { data: items.map(i => prisma_role_mapper_1.PrismaRoleMapper.toDomain(i)), total };
}
async create(role) {
const base = {
id: role.id,
code: role.code,
name: role.name,
description: role.description,
isDefault: role.isDefault,
};
if (role.permissions && role.permissions.length > 0) {
base.permissions = {
create: role.permissions.map(p => ({ permission: { connect: { id: p.id } }, assignedBy: 'system' })),
};
}
const created = await this.prisma.role.create({ data: base, include: { permissions: { include: { permission: true } } } });
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(created);
}
async update(role) {
const base = {
code: role.code,
name: role.name,
description: role.description,
isDefault: role.isDefault,
};
// sync permissions via transaction
const permIds = role.permissions ? role.permissions.map(p => p.id) : [];
await this.prisma.$transaction(async (prisma) => {
const currentPerms = await prisma.rolePermission.findMany({ where: { roleId: role.id } });
const currentIds = currentPerms.map(p => p.permissionId);
const toAdd = permIds.filter(id => !currentIds.includes(id));
const toRemove = currentIds.filter(id => !permIds.includes(id));
if (toRemove.length > 0) {
await prisma.rolePermission.deleteMany({ where: { roleId: role.id, permissionId: { in: toRemove } } });
}
if (toAdd.length > 0) {
await prisma.rolePermission.createMany({ data: toAdd.map(pid => ({ roleId: role.id, permissionId: pid, assignedBy: 'system' })), skipDuplicates: true });
}
await prisma.role.update({ where: { id: role.id }, data: base });
});
const updated = await this.prisma.role.findUnique({ where: { id: role.id }, include: { permissions: { include: { permission: true } } } });
return prisma_role_mapper_1.PrismaRoleMapper.toDomain(updated);
}
async delete(roleId) {
await this.prisma.role.delete({ where: { id: roleId } });
}
async getAssignedUserIds(roleId) {
const rows = await this.prisma.userRole.findMany({ where: { roleId }, select: { userId: true } });
return rows.map(r => r.userId);
}
};
exports.PrismaRoleRepository = PrismaRoleRepository;
exports.PrismaRoleRepository = PrismaRoleRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaRoleRepository);
//# sourceMappingURL=prisma-role.repository.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,216 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrismaUserRepository = void 0;
const common_1 = require("@nestjs/common");
const prisma_service_1 = require("../../../../shared/prisma.service");
const prisma_user_mapper_1 = require("../mappers/prisma-user.mapper");
let PrismaUserRepository = class PrismaUserRepository {
prisma;
constructor(prisma) {
this.prisma = prisma;
}
//#region Create
async create(userData) {
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
const data = { ...base };
if (userData.roles && userData.roles.length > 0) {
data.roles = {
create: userData.roles.map(r => ({ role: { connect: { id: r.id } }, assignedBy: 'system' })),
};
}
const created = await this.prisma.user.create({
data,
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(created);
}
//#endregion
//#region Read
async existsById(userId) {
return ((await this.prisma.user.findUnique({
where: { id: userId },
select: { id: true },
})) !== null);
}
async existByEmail(userEmail) {
return ((await this.prisma.user.findUnique({
where: { email: userEmail },
select: { email: true },
})) !== null);
}
async getById(userId) {
const userData = await this.prisma.user.findUnique({
where: { id: userId },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (userData === null)
throw new Error('User tidak ditemukan.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async getByEmail(userEmail) {
const userData = await this.prisma.user.findUnique({
where: { email: userEmail },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (userData === null)
throw new Error('User tidak ditemukan.');
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async findByAuthentikId(authentikId) {
const userData = await this.prisma.user.findUnique({
where: { authentikId },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
if (!userData)
return null;
return prisma_user_mapper_1.PrismaUserMapper.toDomain(userData);
}
async find(params) {
const page = params.page && params.page > 0 ? params.page : 1;
const limit = params.limit && params.limit > 0 ? params.limit : 10;
const where = {};
if (params.search) {
where.OR = [
{ username: { contains: params.search, mode: 'insensitive' } },
{ email: { contains: params.search, mode: 'insensitive' } },
];
}
if (params.isActive !== undefined && params.isActive !== null) {
where.isActive = params.isActive;
}
if (params.deleted !== undefined && params.deleted !== null) {
if (params.deleted)
where.deletedAt = { not: null };
else
where.deletedAt = null;
}
if (params.roleId) {
where.roles = { some: { roleId: params.roleId } };
}
const [total, items] = await Promise.all([
this.prisma.user.count({ where }),
this.prisma.user.findMany({
where,
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
skip: (page - 1) * limit,
take: limit,
orderBy: { createdAt: 'desc' },
}),
]);
return { data: items.map(i => prisma_user_mapper_1.PrismaUserMapper.toDomain(i)), total };
}
async softDelete(userId) {
await this.prisma.user.update({ where: { id: userId }, data: { deletedAt: new Date(), isActive: false } });
}
async restore(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { deletedAt: null },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async enable(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { isActive: true },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async disable(userId) {
const updated = await this.prisma.user.update({
where: { id: userId },
data: { isActive: false },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
async update(userData) {
const base = prisma_user_mapper_1.PrismaUserMapper.toPersistence(userData);
const data = { ...base };
// sync roles and permissions using transaction
const roleIds = userData.roles ? userData.roles.map(r => r.id) : [];
const permissionIds = userData.permissions ? userData.permissions.map(p => p.id) : [];
// perform transaction: delete removed relations, create missing ones, update user
await this.prisma.$transaction(async (prisma) => {
// current roles
const currentRoles = await prisma.userRole.findMany({ where: { userId: userData.id } });
const currentRoleIds = currentRoles.map(r => r.roleId);
const toAddRoles = roleIds.filter(id => !currentRoleIds.includes(id));
const toRemoveRoles = currentRoleIds.filter(id => !roleIds.includes(id));
if (toRemoveRoles.length > 0) {
await prisma.userRole.deleteMany({ where: { userId: userData.id, roleId: { in: toRemoveRoles } } });
}
if (toAddRoles.length > 0) {
await prisma.userRole.createMany({
data: toAddRoles.map(rid => ({ userId: userData.id, roleId: rid, assignedBy: 'system' })),
skipDuplicates: true,
});
}
// permissions
const currentPerms = await prisma.userPermission.findMany({ where: { userId: userData.id } });
const currentPermIds = currentPerms.map(p => p.permissionId);
const toAddPerms = permissionIds.filter(id => !currentPermIds.includes(id));
const toRemovePerms = currentPermIds.filter(id => !permissionIds.includes(id));
if (toRemovePerms.length > 0) {
await prisma.userPermission.deleteMany({ where: { userId: userData.id, permissionId: { in: toRemovePerms } } });
}
if (toAddPerms.length > 0) {
await prisma.userPermission.createMany({
data: toAddPerms.map(pid => ({ userId: userData.id, permissionId: pid, assignedBy: 'system' })),
skipDuplicates: true,
});
}
// update base user fields
await prisma.user.update({ where: { id: userData.id }, data });
});
const updated = await this.prisma.user.findUnique({
where: { id: userData.id },
include: {
roles: { include: { role: { include: { permissions: { include: { permission: true } } } } } },
permissions: { include: { permission: true } },
},
});
return prisma_user_mapper_1.PrismaUserMapper.toDomain(updated);
}
};
exports.PrismaUserRepository = PrismaUserRepository;
exports.PrismaUserRepository = PrismaUserRepository = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [prisma_service_1.PrismaService])
], PrismaUserRepository);
//# sourceMappingURL=prisma-user.repository.js.map
File diff suppressed because one or more lines are too long