@solidstarters/solid-core 1.2.142 → 1.2.144
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/constants/error-messages.d.ts +83 -0
- package/dist/constants/error-messages.d.ts.map +1 -0
- package/dist/constants/error-messages.js +86 -0
- package/dist/constants/error-messages.js.map +1 -0
- package/dist/constants/success-messages.d.ts +11 -0
- package/dist/constants/success-messages.d.ts.map +1 -0
- package/dist/constants/success-messages.js +14 -0
- package/dist/constants/success-messages.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +4 -3
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +66 -64
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/computed-fields/entity/noops-entity-computed-field-provider.service.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/noops-entity-computed-field-provider.service.js +18 -2
- package/dist/services/computed-fields/entity/noops-entity-computed-field-provider.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +3 -2
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +23 -21
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/csv.service.d.ts.map +1 -1
- package/dist/services/csv.service.js +3 -2
- package/dist/services/csv.service.js.map +1 -1
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +3 -2
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/export-transaction.service.d.ts.map +1 -1
- package/dist/services/export-transaction.service.js +2 -1
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +9 -8
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +5 -4
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +10 -9
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.js +4 -3
- package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +2 -1
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +10 -9
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +11 -10
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +3 -2
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/sql-expression-resolver.service.d.ts.map +1 -1
- package/dist/services/sql-expression-resolver.service.js +2 -1
- package/dist/services/sql-expression-resolver.service.js.map +1 -1
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +11 -10
- package/dist/services/user.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/constants/error-messages.ts +123 -0
- package/src/constants/success-messages.ts +13 -0
- package/src/index.ts +3 -1
- package/src/services/ai-interaction.service.ts +4 -3
- package/src/services/authentication.service.ts +66 -64
- package/src/services/computed-fields/entity/noops-entity-computed-field-provider.service.ts +4 -0
- package/src/services/crud-helper.service.ts +3 -2
- package/src/services/crud.service.ts +23 -23
- package/src/services/csv.service.ts +3 -2
- package/src/services/excel.service.ts +3 -2
- package/src/services/export-transaction.service.ts +2 -1
- package/src/services/field-metadata.service.ts +9 -8
- package/src/services/file.service.ts +5 -4
- package/src/services/import-transaction.service.ts +10 -9
- package/src/services/media-storage-provider-metadata.service.ts +4 -3
- package/src/services/media.service.ts +2 -1
- package/src/services/model-metadata.service.ts +10 -9
- package/src/services/module-metadata.service.ts +11 -10
- package/src/services/role-metadata.service.ts +3 -2
- package/src/services/sql-expression-resolver.service.ts +2 -1
- package/src/services/user.service.ts +11 -10
|
@@ -22,6 +22,7 @@ import { CrudHelperService } from './crud-helper.service';
|
|
|
22
22
|
import { ModelMetadataService } from './model-metadata.service';
|
|
23
23
|
import { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';
|
|
24
24
|
import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
|
|
25
|
+
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
25
26
|
|
|
26
27
|
@Injectable()
|
|
27
28
|
export class ModuleMetadataService {
|
|
@@ -77,7 +78,7 @@ export class ModuleMetadataService {
|
|
|
77
78
|
|
|
78
79
|
async findOneByUserKey(name: string, relations = {}) {
|
|
79
80
|
if (!name) {
|
|
80
|
-
throw new BadRequestException(
|
|
81
|
+
throw new BadRequestException(ERROR_MESSAGES.ENTITY_NAME_REQUIRED);
|
|
81
82
|
}
|
|
82
83
|
const entity = await this.moduleMetadataRepo.findOne({
|
|
83
84
|
where: {
|
|
@@ -90,7 +91,7 @@ export class ModuleMetadataService {
|
|
|
90
91
|
|
|
91
92
|
async findOne(id: number, relations = {}) {
|
|
92
93
|
if (!id) {
|
|
93
|
-
throw new BadRequestException(
|
|
94
|
+
throw new BadRequestException(ERROR_MESSAGES.ENTITY_ID_REQUIRED);
|
|
94
95
|
}
|
|
95
96
|
const entity = await this.moduleMetadataRepo.findOne({
|
|
96
97
|
where: {
|
|
@@ -99,7 +100,7 @@ export class ModuleMetadataService {
|
|
|
99
100
|
relations: relations,
|
|
100
101
|
});
|
|
101
102
|
if (!entity) {
|
|
102
|
-
throw new NotFoundException(
|
|
103
|
+
throw new NotFoundException(ERROR_MESSAGES.ENTITY_NOT_FOUND());
|
|
103
104
|
}
|
|
104
105
|
return entity;
|
|
105
106
|
}
|
|
@@ -194,7 +195,7 @@ export class ModuleMetadataService {
|
|
|
194
195
|
} catch (error) {
|
|
195
196
|
// console.error('File creation failed:', error);
|
|
196
197
|
this.logger.error('File creation failed:', error);
|
|
197
|
-
throw new Error(
|
|
198
|
+
throw new Error(ERROR_MESSAGES.FILE_WRITE_FAILED); // Trigger rollback
|
|
198
199
|
}
|
|
199
200
|
}
|
|
200
201
|
|
|
@@ -221,7 +222,7 @@ export class ModuleMetadataService {
|
|
|
221
222
|
});
|
|
222
223
|
|
|
223
224
|
if (!module) {
|
|
224
|
-
throw new NotFoundException(
|
|
225
|
+
throw new NotFoundException(ERROR_MESSAGES.MODULE_ID_NOT_FOUND(id));
|
|
225
226
|
}
|
|
226
227
|
if (files.length > 0) {
|
|
227
228
|
|
|
@@ -281,7 +282,7 @@ export class ModuleMetadataService {
|
|
|
281
282
|
} catch (error) {
|
|
282
283
|
// console.error('File creation failed:', error);
|
|
283
284
|
this.logger.error('File creation failed:', error);
|
|
284
|
-
throw new Error(
|
|
285
|
+
throw new Error(ERROR_MESSAGES.FILE_WRITE_FAILED); // Trigger rollback
|
|
285
286
|
}
|
|
286
287
|
}
|
|
287
288
|
|
|
@@ -320,7 +321,7 @@ export class ModuleMetadataService {
|
|
|
320
321
|
|
|
321
322
|
async deleteMany(ids: number[]): Promise<any> {
|
|
322
323
|
if (!ids || ids.length === 0) {
|
|
323
|
-
throw new Error(
|
|
324
|
+
throw new Error(ERROR_MESSAGES.DELETE_IDS_REQUIRED);
|
|
324
325
|
}
|
|
325
326
|
const removedEntities = [];
|
|
326
327
|
for (let i = 0; i < ids.length; i++) {
|
|
@@ -348,13 +349,13 @@ export class ModuleMetadataService {
|
|
|
348
349
|
@DisallowInProduction()
|
|
349
350
|
async generateCode(options: CodeGenerationOptions): Promise<string> {
|
|
350
351
|
if (!options.moduleId && !options.moduleUserKey) {
|
|
351
|
-
throw new BadRequestException(
|
|
352
|
+
throw new BadRequestException(ERROR_MESSAGES.MODEL_REQUIRED_FOR_CODE_GENERATION);
|
|
352
353
|
}
|
|
353
354
|
const module = options.moduleId ? await this.findOne(options.moduleId) : await this.findOneByUserKey(options.moduleUserKey);
|
|
354
355
|
|
|
355
356
|
// Check if the module exists
|
|
356
357
|
if (!module) {
|
|
357
|
-
throw new NotFoundException(
|
|
358
|
+
throw new NotFoundException(ERROR_MESSAGES.MODULE_ID_NOT_FOUND(options.moduleId));
|
|
358
359
|
}
|
|
359
360
|
|
|
360
361
|
// Check if the module name already exists and is loaded
|
|
@@ -371,7 +372,7 @@ export class ModuleMetadataService {
|
|
|
371
372
|
|
|
372
373
|
private async generateAddModuleCode(options: CodeGenerationOptions = { dryRun: false }): Promise<string> {
|
|
373
374
|
if (!options.moduleId && !options.moduleUserKey) {
|
|
374
|
-
throw new BadRequestException(
|
|
375
|
+
throw new BadRequestException(ERROR_MESSAGES.MODEL_REQUIRED_FOR_CODE_GENERATION);
|
|
375
376
|
}
|
|
376
377
|
const module = options.moduleId ? await this.findOne(options.moduleId) : await this.findOneByUserKey(options.moduleUserKey);
|
|
377
378
|
|
|
@@ -12,6 +12,7 @@ import { CrudHelperService } from "src/services/crud-helper.service";
|
|
|
12
12
|
import { RoleMetadata } from '../entities/role-metadata.entity';
|
|
13
13
|
import { PermissionMetadata } from '../entities/permission-metadata.entity';
|
|
14
14
|
import { CreateRoleMetadataDto } from '../dtos/create-role-metadata.dto';
|
|
15
|
+
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
15
16
|
|
|
16
17
|
@Injectable()
|
|
17
18
|
export class RoleMetadataService extends CRUDService<RoleMetadata> {
|
|
@@ -180,7 +181,7 @@ export class RoleMetadataService extends CRUDService<RoleMetadata> {
|
|
|
180
181
|
});
|
|
181
182
|
|
|
182
183
|
if (!role) {
|
|
183
|
-
throw new Error(
|
|
184
|
+
throw new Error(ERROR_MESSAGES.ROLE_NOT_FOUND(roleName));
|
|
184
185
|
}
|
|
185
186
|
|
|
186
187
|
// modify the permissions array.
|
|
@@ -194,7 +195,7 @@ export class RoleMetadataService extends CRUDService<RoleMetadata> {
|
|
|
194
195
|
where: { name },
|
|
195
196
|
});
|
|
196
197
|
if (!existingPermission) {
|
|
197
|
-
throw new NotFoundException(
|
|
198
|
+
throw new NotFoundException(ERROR_MESSAGES.PERMISSION_NOT_EXIST(name));
|
|
198
199
|
}
|
|
199
200
|
return existingPermission;
|
|
200
201
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Injectable } from "@nestjs/common";
|
|
2
2
|
import { SqlExpression, SqlExpressionOperator } from "./question-data-providers/chartjs-sql-data-provider.service";
|
|
3
3
|
import { RequestContextService } from "./request-context.service";
|
|
4
|
+
import { ERROR_MESSAGES } from "src/constants/error-messages";
|
|
4
5
|
|
|
5
6
|
export interface SqlReplacementResult {
|
|
6
7
|
rawSql: string;
|
|
@@ -117,7 +118,7 @@ export class SqlExpressionResolverService {
|
|
|
117
118
|
break;
|
|
118
119
|
|
|
119
120
|
default:
|
|
120
|
-
throw new Error(
|
|
121
|
+
throw new Error(ERROR_MESSAGES.UNSUPPORTED_SQL_OPERATOR(expr.operator));
|
|
121
122
|
}
|
|
122
123
|
simplifiedSql = simplifiedSql.replace(placeholder, sqlFragment);
|
|
123
124
|
}
|
|
@@ -15,6 +15,7 @@ import { RoleMetadata } from '../entities/role-metadata.entity';
|
|
|
15
15
|
import { User } from '../entities/user.entity';
|
|
16
16
|
import { ActiveUserData } from '../interfaces/active-user-data.interface';
|
|
17
17
|
import { iamConfig } from 'src/config/iam.config';
|
|
18
|
+
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
18
19
|
|
|
19
20
|
@Injectable()
|
|
20
21
|
export class UserService extends CRUDService<User> {
|
|
@@ -42,7 +43,7 @@ export class UserService extends CRUDService<User> {
|
|
|
42
43
|
override async delete(id: number, solidRequestContext: any = {}) {
|
|
43
44
|
// Prevent user from deleting themselves
|
|
44
45
|
if (solidRequestContext?.activeUser?.sub === id) {
|
|
45
|
-
throw new BadRequestException(
|
|
46
|
+
throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
// ✅ Proceed with the default deletion logic
|
|
@@ -51,12 +52,12 @@ export class UserService extends CRUDService<User> {
|
|
|
51
52
|
|
|
52
53
|
override async deleteMany(ids: number[], solidRequestContext: any = {}): Promise<any> {
|
|
53
54
|
if (!ids || ids.length === 0) {
|
|
54
|
-
throw new Error(
|
|
55
|
+
throw new Error(ERROR_MESSAGES.DELETE_IDS_REQUIRED);
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
// ❌ If the active user is trying to delete themselves
|
|
58
59
|
if (solidRequestContext?.activeUser?.sub && ids.includes(solidRequestContext.activeUser.id)) {
|
|
59
|
-
throw new BadRequestException(
|
|
60
|
+
throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
return super.deleteMany(ids, solidRequestContext);
|
|
@@ -105,7 +106,7 @@ export class UserService extends CRUDService<User> {
|
|
|
105
106
|
}
|
|
106
107
|
});
|
|
107
108
|
if (!user) {
|
|
108
|
-
throw new Error(
|
|
109
|
+
throw new Error(ERROR_MESSAGES.USER_NOT_FOUND);
|
|
109
110
|
}
|
|
110
111
|
const roles = updateDto.roles ? updateDto.roles : [];
|
|
111
112
|
await this.addRolesToUser(user.username, roles);
|
|
@@ -121,11 +122,11 @@ export class UserService extends CRUDService<User> {
|
|
|
121
122
|
}
|
|
122
123
|
});
|
|
123
124
|
if (!user) {
|
|
124
|
-
throw new Error(
|
|
125
|
+
throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));
|
|
125
126
|
}
|
|
126
127
|
const role = await this.roleRepository.findOne({ where: { name: roleName } });
|
|
127
128
|
if (!role) {
|
|
128
|
-
throw new Error(
|
|
129
|
+
throw new Error(ERROR_MESSAGES.ROLE_NOT_FOUND(roleName));
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
if (user.roles && user.roles.length > 0) {
|
|
@@ -145,7 +146,7 @@ export class UserService extends CRUDService<User> {
|
|
|
145
146
|
});
|
|
146
147
|
|
|
147
148
|
if (!user) {
|
|
148
|
-
throw new Error(
|
|
149
|
+
throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));
|
|
149
150
|
}
|
|
150
151
|
|
|
151
152
|
const roles = await this.roleRepository.find({
|
|
@@ -155,7 +156,7 @@ export class UserService extends CRUDService<User> {
|
|
|
155
156
|
if (roles.length !== roleNames.length) {
|
|
156
157
|
const foundRoleNames = roles.map(role => role.name);
|
|
157
158
|
const missingRoles = roleNames.filter(roleName => !foundRoleNames.includes(roleName));
|
|
158
|
-
throw new Error(
|
|
159
|
+
throw new Error(ERROR_MESSAGES.ROLES_NOT_FOUND(missingRoles));
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
const currentRoles = user.roles.map(role => role.name);
|
|
@@ -189,7 +190,7 @@ export class UserService extends CRUDService<User> {
|
|
|
189
190
|
});
|
|
190
191
|
|
|
191
192
|
if (!user) {
|
|
192
|
-
throw new Error(
|
|
193
|
+
throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));
|
|
193
194
|
}
|
|
194
195
|
|
|
195
196
|
// modify the permissions array.
|
|
@@ -261,7 +262,7 @@ export class UserService extends CRUDService<User> {
|
|
|
261
262
|
|
|
262
263
|
async initializeRolesForNewUser(roles: string[], user: User) {
|
|
263
264
|
if (!user.id) {
|
|
264
|
-
throw new BadRequestException(
|
|
265
|
+
throw new BadRequestException(ERROR_MESSAGES.USER_MISSING_ID);
|
|
265
266
|
}
|
|
266
267
|
let userRoles = [];
|
|
267
268
|
// Default Internal user role assigned
|