@solidxai/core 0.1.9-beta.6 → 0.1.9-beta.8
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/chatter-message.constants.d.ts +6 -0
- package/dist/constants/chatter-message.constants.d.ts.map +1 -1
- package/dist/constants/chatter-message.constants.js +7 -1
- package/dist/constants/chatter-message.constants.js.map +1 -1
- package/dist/controllers/authentication.controller.d.ts +12 -0
- package/dist/controllers/authentication.controller.d.ts.map +1 -1
- package/dist/controllers/authentication.controller.js +13 -0
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +1 -0
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +12 -0
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/facebook-authentication.controller.d.ts +27 -0
- package/dist/controllers/facebook-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/facebook-authentication.controller.js +117 -0
- package/dist/controllers/facebook-authentication.controller.js.map +1 -0
- package/dist/controllers/menu-item-metadata.controller.d.ts +1 -0
- package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.js +15 -0
- package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
- package/dist/controllers/microsoft-authentication.controller.d.ts +27 -0
- package/dist/controllers/microsoft-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/microsoft-authentication.controller.js +118 -0
- package/dist/controllers/microsoft-authentication.controller.js.map +1 -0
- package/dist/controllers/setting.controller.d.ts +2 -2
- package/dist/controllers/setting.controller.js +2 -2
- package/dist/decorators/auth.decorator.d.ts.map +1 -1
- package/dist/decorators/computed-field-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/disallow-in-production.decorator.d.ts.map +1 -1
- package/dist/decorators/error-codes-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/extension-user-creation-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/is-not-in-enum.decorator.d.ts.map +1 -1
- package/dist/decorators/mail-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/roles.decorator.d.ts.map +1 -1
- package/dist/decorators/scheduled-job-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/security-rule-config-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/selection-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/sms-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/solid-database-module.decorator.d.ts.map +1 -1
- package/dist/decorators/whatsapp-provider.decorator.d.ts.map +1 -1
- package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/create-chatter-message.dto.js +7 -1
- package/dist/dtos/create-chatter-message.dto.js.map +1 -1
- package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/post-chatter-message.dto.js +6 -1
- package/dist/dtos/post-chatter-message.dto.js.map +1 -1
- package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/update-chatter-message.dto.js +7 -1
- package/dist/dtos/update-chatter-message.dto.js.map +1 -1
- package/dist/entities/chatter-message.entity.d.ts +1 -0
- package/dist/entities/chatter-message.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message.entity.js +5 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +8 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +33 -1
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/helpers/cors.helper.js +1 -1
- package/dist/helpers/cors.helper.js.map +1 -1
- package/dist/helpers/facebook-oauth.helper.d.ts +8 -0
- package/dist/helpers/facebook-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/facebook-oauth.helper.js +11 -0
- package/dist/helpers/facebook-oauth.helper.js.map +1 -0
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +5 -5
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +2 -2
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +5 -5
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/microsoft-oauth.helper.d.ts +9 -0
- package/dist/helpers/microsoft-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/microsoft-oauth.helper.js +12 -0
- package/dist/helpers/microsoft-oauth.helper.js.map +1 -0
- package/dist/helpers/module-metadata-helper.service.js +3 -3
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/security.helper.d.ts.map +1 -1
- package/dist/helpers/string.helper.d.ts +1 -0
- package/dist/helpers/string.helper.d.ts.map +1 -1
- package/dist/helpers/string.helper.js +4 -1
- package/dist/helpers/string.helper.js.map +1 -1
- package/dist/helpers/user-helper.d.ts.map +1 -1
- package/dist/helpers/user-helper.js +4 -0
- package/dist/helpers/user-helper.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +19 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts +14 -0
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/facebook-oauth.strategy.js +73 -0
- package/dist/passport-strategies/facebook-oauth.strategy.js.map +1 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.d.ts +14 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.js +77 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.js.map +1 -0
- package/dist/repository/chatter-message-details.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message-details.repository.js +7 -6
- package/dist/repository/chatter-message-details.repository.js.map +1 -1
- package/dist/repository/chatter-message.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message.repository.js +4 -4
- package/dist/repository/chatter-message.repository.js.map +1 -1
- package/dist/repository/solid-base.repository.js +2 -2
- package/dist/repository/solid-base.repository.js.map +1 -1
- package/dist/seeders/module-test-data.service.js +4 -4
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +27 -58
- package/dist/services/api-key.service.d.ts +17 -1
- package/dist/services/api-key.service.d.ts.map +1 -1
- package/dist/services/api-key.service.js +38 -2
- package/dist/services/api-key.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +51 -16
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +318 -150
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +1 -0
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +17 -0
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +2 -2
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +9 -9
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/export-transaction.service.d.ts.map +1 -1
- package/dist/services/export-transaction.service.js +4 -3
- 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 +7 -7
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/fixtures.service.js +2 -2
- package/dist/services/fixtures.service.js.map +1 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +1 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +2 -2
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +2 -2
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/menu-item-metadata.service.js +2 -2
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +12 -11
- 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 +2 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +2 -2
- package/dist/services/queues/publisher-factory.service.js.map +1 -1
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +3 -3
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +5 -2
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +51 -6
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +830 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +1033 -117
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/solid-introspect.service.js +2 -2
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user.service.d.ts +2 -0
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +72 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +2 -2
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +11 -3
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +6 -6
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/transformers/array-transformer.d.ts.map +1 -1
- package/dist/transformers/boolean-transformer.d.ts.map +1 -1
- package/dist/transformers/datetime-transformer.d.ts.map +1 -1
- package/dist/transformers/integer-transformer.d.ts.map +1 -1
- package/dist/validators/is-parsable-int.d.ts.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/nest +0 -0
- package/package.json +7 -2
- package/src/constants/chatter-message.constants.ts +7 -0
- package/src/controllers/authentication.controller.ts +8 -1
- package/src/controllers/chatter-message.controller.ts +6 -0
- package/src/controllers/facebook-authentication.controller.ts +113 -0
- package/src/controllers/menu-item-metadata.controller.ts +21 -15
- package/src/controllers/microsoft-authentication.controller.ts +116 -0
- package/src/dtos/create-chatter-message.dto.ts +11 -0
- package/src/dtos/post-chatter-message.dto.ts +4 -0
- package/src/dtos/update-chatter-message.dto.ts +13 -1
- package/src/entities/chatter-message.entity.ts +4 -1
- package/src/entities/user.entity.ts +32 -0
- package/src/helpers/cors.helper.ts +1 -1
- package/src/helpers/facebook-oauth.helper.ts +17 -0
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +1 -1
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +1 -2
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +1 -1
- package/src/helpers/microsoft-oauth.helper.ts +19 -0
- package/src/helpers/module-metadata-helper.service.ts +3 -3
- package/src/helpers/string.helper.ts +3 -0
- package/src/helpers/user-helper.ts +4 -0
- package/src/index.ts +2 -0
- package/src/interfaces.ts +32 -1
- package/src/passport-strategies/facebook-oauth.strategy.ts +64 -0
- package/src/passport-strategies/microsoft-oauth.strategy.ts +70 -0
- package/src/repository/chatter-message-details.repository.ts +4 -3
- package/src/repository/chatter-message.repository.ts +4 -4
- package/src/repository/solid-base.repository.ts +2 -2
- package/src/seeders/module-test-data.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +27 -58
- package/src/services/api-key.service.ts +77 -35
- package/src/services/authentication.service.ts +1717 -1278
- package/src/services/chatter-message.service.ts +22 -4
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +1 -2
- package/src/services/crud-helper.service.ts +1 -4
- package/src/services/export-transaction.service.ts +3 -4
- package/src/services/field-metadata.service.ts +1 -4
- package/src/services/fixtures.service.ts +1 -1
- package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +1 -2
- package/src/services/import-transaction.service.ts +1 -1
- package/src/services/menu-item-metadata.service.ts +2 -2
- package/src/services/model-metadata.service.ts +11 -13
- package/src/services/module-metadata.service.ts +1 -2
- package/src/services/queues/publisher-factory.service.ts +1 -2
- package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +1 -1
- package/src/services/setting.service.ts +64 -8
- package/src/services/settings/default-settings-provider.service.ts +1104 -155
- package/src/services/solid-introspect.service.ts +1 -1
- package/src/services/user.service.ts +87 -0
- package/src/services/view-metadata.service.ts +1 -5
- package/src/solid-core.module.ts +25 -8
- package/src/subscribers/computed-entity-field.subscriber.ts +6 -6
- package/.claude/settings.local.json +0 -15
- package/src/services/1.js +0 -6
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { LocalDateTimeTransformer, serializeDate } from 'src/transformers/typeorm/local-date-time-transformer';
|
|
2
|
-
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
|
+
import { BadRequestException, forwardRef, Inject, Injectable, NotFoundException } from '@nestjs/common';
|
|
3
3
|
import { ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
5
5
|
import { Brackets, EntityManager, EntityMetadata } from 'typeorm';
|
|
6
6
|
|
|
7
7
|
import { classify } from '@angular-devkit/core/src/utils/strings';
|
|
8
|
-
import { CHATTER_MESSAGE_SUBTYPE, CHATTER_MESSAGE_TYPE } from 'src/constants/chatter-message.constants';
|
|
8
|
+
import { CHATTER_MESSAGE_STATUS, CHATTER_MESSAGE_SUBTYPE, CHATTER_MESSAGE_TYPE } from 'src/constants/chatter-message.constants';
|
|
9
|
+
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
9
10
|
import { PostChatterMessageDto } from 'src/dtos/post-chatter-message.dto';
|
|
10
11
|
import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
|
|
11
12
|
import { lowerFirst } from 'src/helpers/string.helper';
|
|
@@ -46,10 +47,26 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
46
47
|
super(entityManager, repo, 'chatterMessage', 'solid-core', moduleRef);
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
async markCompleted(id: number) {
|
|
51
|
+
const activeUser = this.requestContextService.getActiveUser();
|
|
52
|
+
if (!activeUser) {
|
|
53
|
+
throw new BadRequestException(ERROR_MESSAGES.FORBIDDEN);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const message = await this.repo.findOne({ where: { id } });
|
|
57
|
+
if (!message) {
|
|
58
|
+
throw new NotFoundException(`Entity [solid-core.chatterMessage] with id ${id} not found`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
message.status = CHATTER_MESSAGE_STATUS.COMPLETED;
|
|
62
|
+
return this.repo.save(message);
|
|
63
|
+
}
|
|
64
|
+
|
|
49
65
|
async postMessage(postDto: PostChatterMessageDto, files: Express.Multer.File[] = []) {
|
|
50
66
|
const chatterMessage = new ChatterMessage();
|
|
51
67
|
chatterMessage.messageType = CHATTER_MESSAGE_TYPE.CUSTOM;
|
|
52
68
|
chatterMessage.messageSubType = postDto.messageSubType || CHATTER_MESSAGE_SUBTYPE.CUSTOM;
|
|
69
|
+
chatterMessage.status = postDto.status ?? CHATTER_MESSAGE_STATUS.PENDING;
|
|
53
70
|
chatterMessage.messageBody = postDto.messageBody;
|
|
54
71
|
chatterMessage.coModelEntityId = postDto.coModelEntityId;
|
|
55
72
|
chatterMessage.coModelName = postDto.coModelName;
|
|
@@ -127,6 +144,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
127
144
|
const chatterMessage = new ChatterMessage();
|
|
128
145
|
chatterMessage.messageType = CHATTER_MESSAGE_TYPE.AUDIT;
|
|
129
146
|
chatterMessage.messageSubType = CHATTER_MESSAGE_SUBTYPE.AUDIT_INSERT;
|
|
147
|
+
chatterMessage.status = CHATTER_MESSAGE_STATUS.PENDING;
|
|
130
148
|
chatterMessage.coModelEntityId = entity.id;
|
|
131
149
|
chatterMessage.coModelName = model?.singularName;
|
|
132
150
|
chatterMessage.modelDisplayName = model?.displayName;
|
|
@@ -228,7 +246,6 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
228
246
|
}
|
|
229
247
|
}
|
|
230
248
|
|
|
231
|
-
|
|
232
249
|
const allChangedFields = [
|
|
233
250
|
...changedNonRelationFields.map(field => ({
|
|
234
251
|
field,
|
|
@@ -247,6 +264,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
247
264
|
const chatterMessage = new ChatterMessage();
|
|
248
265
|
chatterMessage.messageType = CHATTER_MESSAGE_TYPE.AUDIT;
|
|
249
266
|
chatterMessage.messageSubType = CHATTER_MESSAGE_SUBTYPE.AUDIT_UPDATE;
|
|
267
|
+
chatterMessage.status = CHATTER_MESSAGE_STATUS.PENDING;
|
|
250
268
|
chatterMessage.coModelEntityId = entity?.id;
|
|
251
269
|
chatterMessage.coModelName = model?.singularName;
|
|
252
270
|
chatterMessage.modelDisplayName = model.displayName;
|
|
@@ -310,6 +328,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
310
328
|
const chatterMessage = new ChatterMessage();
|
|
311
329
|
chatterMessage.messageType = CHATTER_MESSAGE_TYPE.AUDIT;
|
|
312
330
|
chatterMessage.messageSubType = CHATTER_MESSAGE_SUBTYPE.AUDIT_DELETE;
|
|
331
|
+
chatterMessage.status = CHATTER_MESSAGE_STATUS.PENDING;
|
|
313
332
|
chatterMessage.coModelEntityId = databaseEntity?.id;
|
|
314
333
|
chatterMessage.coModelName = model?.singularName;
|
|
315
334
|
chatterMessage.modelDisplayName = model?.displayName;
|
|
@@ -413,7 +432,6 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
413
432
|
}
|
|
414
433
|
}
|
|
415
434
|
|
|
416
|
-
|
|
417
435
|
return value.toString();
|
|
418
436
|
}
|
|
419
437
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classify } from
|
|
1
|
+
import { classify } from '../../../helpers/string.helper';
|
|
2
2
|
import { Injectable } from "@nestjs/common";
|
|
3
3
|
import { InjectDataSource } from "@nestjs/typeorm";
|
|
4
4
|
import { ComputedFieldTriggerOperation } from "src/dtos/create-field-metadata.dto";
|
|
@@ -9,7 +9,6 @@ import { ComputedFieldMetadata } from "src/helpers/solid-registry";
|
|
|
9
9
|
import { IEntityPostComputeFieldProvider } from "src/interfaces";
|
|
10
10
|
import { DataSource, EntityManager } from "typeorm";
|
|
11
11
|
|
|
12
|
-
|
|
13
12
|
export interface SequenceNumComputedFieldContext {
|
|
14
13
|
sequenceName: string;
|
|
15
14
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Brackets, SelectQueryBuilder, WhereExpressionBuilder } from "typeorm";
|
|
2
2
|
import { BasicFilterDto } from "../dtos/basic-filters.dto";
|
|
3
|
-
import { classify } from
|
|
3
|
+
import { classify } from '../helpers/string.helper';
|
|
4
4
|
import { ActiveUserData } from "src/interfaces/active-user-data.interface";
|
|
5
5
|
import { SolidRegistry } from "src/helpers/solid-registry";
|
|
6
6
|
import { BadRequestException, Logger } from "@nestjs/common";
|
|
@@ -287,7 +287,6 @@ export class CrudHelperService {
|
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
|
|
291
290
|
if (showSoftDeleted === 'inclusive') {
|
|
292
291
|
qb.withDeleted();
|
|
293
292
|
}
|
|
@@ -744,6 +743,4 @@ export class CrudHelperService {
|
|
|
744
743
|
return matchingPermssions.length > 0
|
|
745
744
|
}
|
|
746
745
|
|
|
747
|
-
|
|
748
|
-
|
|
749
746
|
}
|
|
@@ -5,8 +5,8 @@ import { EntityManager } from 'typeorm';
|
|
|
5
5
|
|
|
6
6
|
import { CRUDService } from 'src/services/crud.service';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
import { classify
|
|
8
|
+
import { kebabCase } from 'lodash';
|
|
9
|
+
import { classify } from '../helpers/string.helper';
|
|
10
10
|
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
|
|
11
11
|
import { validate } from 'class-validator';
|
|
12
12
|
import { BasicFilterDto } from 'src/dtos/basic-filters.dto';
|
|
@@ -196,7 +196,7 @@ export class ExportTransactionService extends CRUDService<ExportTransaction> {
|
|
|
196
196
|
|
|
197
197
|
private getFileName(templateName: string, exportTransactionUUID: string, fileFormat: string): string {
|
|
198
198
|
const extension = (fileFormat === ExportFormat.EXCEL) ? 'xlsx' : 'csv';
|
|
199
|
-
return `${
|
|
199
|
+
return `${kebabCase(templateName)}-${exportTransactionUUID}.${extension}`;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
private getMimeType(fileFormat: string): string {
|
|
@@ -237,7 +237,6 @@ export class ExportTransactionService extends CRUDService<ExportTransaction> {
|
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
|
|
241
240
|
return async (chunkIndex: number, chunkSize: number) => {
|
|
242
241
|
const offset = chunkIndex * chunkSize;
|
|
243
242
|
const recordFilterDto: BasicFilterDto = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classify } from '
|
|
1
|
+
import { classify } from '../helpers/string.helper';
|
|
2
2
|
import { Injectable, Logger, NotFoundException, OnApplicationBootstrap } from '@nestjs/common';
|
|
3
3
|
import { InjectDataSource } from '@nestjs/typeorm';
|
|
4
4
|
import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
|
|
@@ -21,7 +21,6 @@ import { MediaStorageProviderMetadataRepository } from 'src/repository/media-sto
|
|
|
21
21
|
import { S3FileService } from './file';
|
|
22
22
|
import { MediaStorageProviderMetadata } from 'src/entities/media-storage-provider-metadata.entity';
|
|
23
23
|
|
|
24
|
-
|
|
25
24
|
@Injectable()
|
|
26
25
|
export class FieldMetadataService implements OnApplicationBootstrap {
|
|
27
26
|
constructor(
|
|
@@ -806,7 +805,6 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
806
805
|
"columnName"
|
|
807
806
|
];
|
|
808
807
|
|
|
809
|
-
|
|
810
808
|
case SolidFieldType.json:
|
|
811
809
|
return [
|
|
812
810
|
"name",
|
|
@@ -1194,7 +1192,6 @@ export class FieldMetadataService implements OnApplicationBootstrap {
|
|
|
1194
1192
|
const parsedFormValues = typeof formValues === 'string' ? qs.parse(formValues, { allowDots: true }) : formValues;
|
|
1195
1193
|
selectionDynamicProviderCtxt['formValues'] = parsedFormValues;
|
|
1196
1194
|
|
|
1197
|
-
|
|
1198
1195
|
// 3. get hold of the provider instance from the SolidRegistry
|
|
1199
1196
|
const selectionProviderInstance = this.solidRegistry.getSelectionProviderInstance(selectionDynamicProvider);
|
|
1200
1197
|
if (!selectionProviderInstance) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable, Logger } from "@nestjs/common";
|
|
2
2
|
import { SolidIntrospectService } from "./solid-introspect.service";
|
|
3
3
|
import { ModuleMetadataHelperService } from "src/helpers/module-metadata-helper.service";
|
|
4
|
-
import { classify } from
|
|
4
|
+
import { classify } from '../helpers/string.helper';
|
|
5
5
|
|
|
6
6
|
interface ScenarioFixture {
|
|
7
7
|
name: string;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
|
|
3
|
-
import { classify } from '
|
|
3
|
+
import { classify } from '../../../helpers/string.helper';
|
|
4
4
|
import { IMcpToolResponseHandler } from 'src/interfaces';
|
|
5
5
|
import { SolidIntrospectService } from '../../solid-introspect.service';
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
@Injectable()
|
|
9
8
|
export class McpHandlerFactory {
|
|
10
9
|
private readonly logger = new Logger(McpHandlerFactory.name);
|
|
@@ -6,7 +6,6 @@ import { EntityManager } from 'typeorm';
|
|
|
6
6
|
import { CRUDService } from 'src/services/crud.service';
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
import { classify } from '@angular-devkit/core/src/utils/strings';
|
|
10
9
|
import { HttpService } from '@nestjs/axios';
|
|
11
10
|
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
12
11
|
import { RelationFieldsCommand, RelationType, SolidFieldType } from 'src/dtos/create-field-metadata.dto';
|
|
@@ -27,6 +26,7 @@ import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.se
|
|
|
27
26
|
import { getUserExcludedFields } from 'src/helpers/user-helper';
|
|
28
27
|
import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
|
|
29
28
|
import {upperFirst, camelCase} from 'lodash';
|
|
29
|
+
import { classify } from '../helpers/string.helper';
|
|
30
30
|
|
|
31
31
|
interface ImportTemplateFileInfo {
|
|
32
32
|
stream: NodeJS.ReadableStream;
|
|
@@ -9,7 +9,7 @@ import { MenuItemMetadata } from '../entities/menu-item-metadata.entity';
|
|
|
9
9
|
import { UpdateMenuItemMetadataDto } from '../dtos/update-menu-item-metadata.dto';
|
|
10
10
|
import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
|
|
11
11
|
import { ModuleMetadata } from '../entities/module-metadata.entity';
|
|
12
|
-
import {
|
|
12
|
+
import { kebabCase } from 'lodash';
|
|
13
13
|
import { MenuItemMetadataRepository } from 'src/repository/menu-item-metadata.repository';
|
|
14
14
|
import { SavedFiltersRepository } from 'src/repository/saved-filters.repository';
|
|
15
15
|
|
|
@@ -191,7 +191,7 @@ export class MenuItemMetadataService extends CRUDService<MenuItemMetadata> {
|
|
|
191
191
|
// TODO: Here we are assuming that we will always take the user to collection view of a model.
|
|
192
192
|
// We can make provision to take them other views also in the future.
|
|
193
193
|
// path = `/admin/core/${rootItem.module.name}/${rootItem.action.model.singularName}/${rootItem.action.view.name}`;
|
|
194
|
-
path = `/admin/core/${rootItem.module.name}/${
|
|
194
|
+
path = `/admin/core/${rootItem.module.name}/${kebabCase(rootItem.action?.model?.singularName ?? 'unknown')}/${rootItem.action?.view?.type ?? 'list'}?menuItemId=${menuItemId}&menuItemName=${menuItemName}&actionId=${actionId}&actionName=${actionName}${savedFilterId ? `&savedQuery=${savedFilterId}` : ''}`;
|
|
195
195
|
|
|
196
196
|
}
|
|
197
197
|
}
|
|
@@ -7,7 +7,8 @@ import { CreateModelMetadataDto } from '../dtos/create-model-metadata.dto';
|
|
|
7
7
|
import { ModelMetadata } from '../entities/model-metadata.entity';
|
|
8
8
|
import { ModuleMetadata } from '../entities/module-metadata.entity';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { kebabCase } from 'lodash';
|
|
11
|
+
import { classify } from '../helpers/string.helper';
|
|
11
12
|
import { ERROR_MESSAGES } from 'src/constants/error-messages';
|
|
12
13
|
import { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';
|
|
13
14
|
import { SolidFieldType } from 'src/dtos/create-field-metadata.dto';
|
|
@@ -586,32 +587,32 @@ export class ModelMetadataService {
|
|
|
586
587
|
|
|
587
588
|
const filesToDelete = [];
|
|
588
589
|
// <singularName>.entity.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
589
|
-
const entityFilePath = `${modulePath}/entities/${
|
|
590
|
+
const entityFilePath = `${modulePath}/entities/${kebabCase(modelEntity.singularName)}.entity.ts`;
|
|
590
591
|
filesToDelete.push(entityFilePath);
|
|
591
592
|
this.logger.log(`About to delete entity file path: ${entityFilePath}`);
|
|
592
593
|
|
|
593
594
|
// <singularName>.create.dto.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
594
|
-
const createDtoFilePath = `${modulePath}/dtos/create-${
|
|
595
|
+
const createDtoFilePath = `${modulePath}/dtos/create-${kebabCase(modelEntity.singularName)}.dto.ts`;
|
|
595
596
|
filesToDelete.push(createDtoFilePath);
|
|
596
597
|
this.logger.log(`About to delete create DTO file path: ${createDtoFilePath}`);
|
|
597
598
|
|
|
598
599
|
// <singularName>.update.dto.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
599
|
-
const updateDtoFilePath = `${modulePath}/dtos/update-${
|
|
600
|
+
const updateDtoFilePath = `${modulePath}/dtos/update-${kebabCase(modelEntity.singularName)}.dto.ts`;
|
|
600
601
|
filesToDelete.push(updateDtoFilePath);
|
|
601
602
|
this.logger.log(`About to delete update DTO file path: ${updateDtoFilePath}`);
|
|
602
603
|
|
|
603
604
|
// <singularName>.repository.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
604
|
-
const repositoryFilePath = `${modulePath}/repositories/${
|
|
605
|
+
const repositoryFilePath = `${modulePath}/repositories/${kebabCase(modelEntity.singularName)}.repository.ts`;
|
|
605
606
|
filesToDelete.push(repositoryFilePath);
|
|
606
607
|
this.logger.log(`About to delete repository file path: ${repositoryFilePath}`);
|
|
607
608
|
|
|
608
609
|
// <singularName>.service.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
609
|
-
const serviceFilePath = `${modulePath}/services/${
|
|
610
|
+
const serviceFilePath = `${modulePath}/services/${kebabCase(modelEntity.singularName)}.service.ts`;
|
|
610
611
|
filesToDelete.push(serviceFilePath);
|
|
611
612
|
this.logger.log(`About to delete service file path: ${serviceFilePath}`);
|
|
612
613
|
|
|
613
614
|
// <singularName>.controller.ts | The TypeORM model that needs to be deleted. | Automatic
|
|
614
|
-
const controllerFilePath = `${modulePath}/controllers/${
|
|
615
|
+
const controllerFilePath = `${modulePath}/controllers/${kebabCase(modelEntity.singularName)}.controller.ts`;
|
|
615
616
|
filesToDelete.push(controllerFilePath);
|
|
616
617
|
this.logger.log(`About to delete controller file path: ${controllerFilePath}`);
|
|
617
618
|
|
|
@@ -713,11 +714,11 @@ export class ModelMetadataService {
|
|
|
713
714
|
|
|
714
715
|
// <moduleName>.module.ts | Remove all references and imports of the deleted model files. | Automatic
|
|
715
716
|
if (modulePath) {
|
|
716
|
-
const moduleFilePath = path.resolve(modulePath, `${
|
|
717
|
+
const moduleFilePath = path.resolve(modulePath, `${kebabCase(modelEntity.module?.name)}.module.ts`);
|
|
717
718
|
this.logger.log(`Removing model '${modelEntity.singularName}' references from module file: ${moduleFilePath}`);
|
|
718
719
|
try {
|
|
719
720
|
this.solidTsMorphService.begin();
|
|
720
|
-
const modelPathSegment = `/${
|
|
721
|
+
const modelPathSegment = `/${kebabCase(modelEntity.singularName)}.`;
|
|
721
722
|
const { removedIdentifiers } = this.solidTsMorphService.removeImports(
|
|
722
723
|
moduleFilePath,
|
|
723
724
|
spec => spec.includes(modelPathSegment)
|
|
@@ -836,7 +837,7 @@ export class ModelMetadataService {
|
|
|
836
837
|
}
|
|
837
838
|
}
|
|
838
839
|
const actionName = `${model.singularName}-list-action`;
|
|
839
|
-
const treeViewActionName = `${model.singularName}-tree-
|
|
840
|
+
const treeViewActionName = `${model.singularName}-tree-action`;
|
|
840
841
|
const listViewName = `${model.singularName}-list-view`;
|
|
841
842
|
const treeViewName = `${model.singularName}-tree-view`;
|
|
842
843
|
const formViewName = `${model.singularName}-form-view`;
|
|
@@ -930,7 +931,6 @@ export class ModelMetadataService {
|
|
|
930
931
|
}
|
|
931
932
|
};
|
|
932
933
|
|
|
933
|
-
|
|
934
934
|
const modelFormView = {
|
|
935
935
|
name: formViewName,
|
|
936
936
|
displayName: `${model.displayName}`,
|
|
@@ -1415,7 +1415,6 @@ export class ModelMetadataService {
|
|
|
1415
1415
|
const currentOffset = (meta.currentPage - 1) * meta.perPage;
|
|
1416
1416
|
const currentIndexGlobal = currentOffset + index + 1;
|
|
1417
1417
|
|
|
1418
|
-
|
|
1419
1418
|
let prev: { record: any; offset: number; limit: number } | null = null;
|
|
1420
1419
|
let next: { record: any; offset: number; limit: number } | null = null;
|
|
1421
1420
|
|
|
@@ -1517,5 +1516,4 @@ export class ModelMetadataService {
|
|
|
1517
1516
|
};
|
|
1518
1517
|
}
|
|
1519
1518
|
|
|
1520
|
-
|
|
1521
1519
|
}
|
|
@@ -6,7 +6,7 @@ import { DataSource, EntityManager, SelectQueryBuilder } from 'typeorm';
|
|
|
6
6
|
import { CreateModuleMetadataDto } from '../dtos/create-module-metadata.dto';
|
|
7
7
|
import { ModuleMetadata } from '../entities/module-metadata.entity';
|
|
8
8
|
|
|
9
|
-
import { classify } from '
|
|
9
|
+
import { classify } from '../helpers/string.helper';
|
|
10
10
|
import { ConfigService } from '@nestjs/config';
|
|
11
11
|
import * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await
|
|
12
12
|
import * as path from 'path'; // To handle file paths
|
|
@@ -278,7 +278,6 @@ export class ModuleMetadataService {
|
|
|
278
278
|
};
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
|
|
282
281
|
metaData.moduleMetadata.name = module?.name;
|
|
283
282
|
metaData.moduleMetadata.displayName = module?.displayName;
|
|
284
283
|
metaData.moduleMetadata.description = module?.description;
|
|
@@ -2,10 +2,9 @@ import { forwardRef, Inject, Logger } from '@nestjs/common';
|
|
|
2
2
|
import { Injectable } from '@nestjs/common';
|
|
3
3
|
|
|
4
4
|
import { QueueMessage, QueuePublisher } from 'src/interfaces/mq';
|
|
5
|
-
import { classify } from '
|
|
5
|
+
import { classify } from '../../helpers/string.helper';
|
|
6
6
|
import { SolidIntrospectService } from '../solid-introspect.service';
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
@Injectable()
|
|
10
9
|
export class PublisherFactory<T> {
|
|
11
10
|
private readonly logger = new Logger(PublisherFactory.name);
|
|
@@ -4,7 +4,7 @@ import { BadRequestException, Injectable } from "@nestjs/common";
|
|
|
4
4
|
import { ISelectionProvider, ISelectionProviderContext, ISelectionProviderValues } from "../../interfaces";
|
|
5
5
|
import { BasicFilterDto } from "src/dtos/basic-filters.dto";
|
|
6
6
|
import { SolidIntrospectService } from "../solid-introspect.service";
|
|
7
|
-
import { classify } from
|
|
7
|
+
import { classify } from '../../helpers/string.helper';
|
|
8
8
|
import { CRUDService } from "../crud.service";
|
|
9
9
|
|
|
10
10
|
interface PseudoForeignKeySelectionProviderContext extends ISelectionProviderContext {
|
|
@@ -11,7 +11,7 @@ import { FILE_SERVICE, IFileService, FILE_STORAGE_PATH_BUILDER, IStoragePathBuil
|
|
|
11
11
|
import { Setting } from '../entities/setting.entity';
|
|
12
12
|
import { RequestContextService } from './request-context.service';
|
|
13
13
|
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
14
|
-
import { ISettingsProvider, NoInfer, SettingDefinition, SettingLevel } from '../interfaces';
|
|
14
|
+
import { AdminSettingDefinition, AdminSettingsResponse, ISettingsProvider, NoInfer, SettingControlType, SettingDefinition, SettingLevel } from '../interfaces';
|
|
15
15
|
import { ModuleMetadataRepository } from 'src/repository/module-metadata.repository';
|
|
16
16
|
import type { SolidCoreSetting } from './settings/default-settings-provider.service';
|
|
17
17
|
import { Logger } from '@nestjs/common';
|
|
@@ -68,6 +68,44 @@ export class SettingService {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
private buildSettingLabel(key: string): string {
|
|
72
|
+
return key
|
|
73
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
74
|
+
.replace(/[-_]+/g, ' ')
|
|
75
|
+
.replace(/\s+/g, ' ')
|
|
76
|
+
.trim()
|
|
77
|
+
.replace(/\b\w/g, (match) => match.toUpperCase());
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private inferControlType(setting: SettingDefinition): SettingControlType {
|
|
81
|
+
if (setting.controlType) {
|
|
82
|
+
return setting.controlType;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (setting.options?.length) {
|
|
86
|
+
return 'selectionStatic';
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (typeof setting.value === 'boolean') {
|
|
90
|
+
return 'boolean';
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (typeof setting.value === 'number') {
|
|
94
|
+
return 'numeric';
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return 'shortText';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private toAdminSettingDefinition(setting: SettingDefinition): AdminSettingDefinition {
|
|
101
|
+
return {
|
|
102
|
+
...setting,
|
|
103
|
+
label: setting.label ?? this.buildSettingLabel(setting.key),
|
|
104
|
+
controlType: this.inferControlType(setting),
|
|
105
|
+
editable: setting.level === SettingLevel.SystemAdminEditable,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
71
109
|
/**
|
|
72
110
|
* Reads all registered providers and gathers settings from across the running platform.
|
|
73
111
|
* This is the superset of all possible settings.
|
|
@@ -216,13 +254,31 @@ export class SettingService {
|
|
|
216
254
|
*
|
|
217
255
|
* @returns
|
|
218
256
|
*/
|
|
219
|
-
async getNonEncryptedSystemAdminReadonlyAndAboveSettings(): Promise<
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
257
|
+
async getNonEncryptedSystemAdminReadonlyAndAboveSettings(): Promise<AdminSettingsResponse> {
|
|
258
|
+
const activeUser = this.requestContextService.getActiveUser();
|
|
259
|
+
const hasViewEncryptedPermission = !!activeUser?.permissions?.includes('settings:view_encrypted');
|
|
260
|
+
|
|
261
|
+
const data = this.settings
|
|
262
|
+
.filter(i => i.level !== "system-env")
|
|
263
|
+
.filter(i => hasViewEncryptedPermission || !i.encrypted)
|
|
264
|
+
.filter((setting) => [SettingLevel.SystemAdminReadonly, SettingLevel.SystemAdminEditable].includes(setting.level))
|
|
265
|
+
.map((setting) => this.toAdminSettingDefinition(setting))
|
|
266
|
+
.sort((left, right) => {
|
|
267
|
+
const groupCompare = (left.group ?? '').localeCompare(right.group ?? '');
|
|
268
|
+
if (groupCompare !== 0) {
|
|
269
|
+
return groupCompare;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const leftSort = left.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
273
|
+
const rightSort = right.sortOrder ?? Number.MAX_SAFE_INTEGER;
|
|
274
|
+
if (leftSort !== rightSort) {
|
|
275
|
+
return leftSort - rightSort;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return left.label!.localeCompare(right.label!);
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
return { data };
|
|
226
282
|
}
|
|
227
283
|
|
|
228
284
|
/**
|