@solidstarters/solid-core 1.2.200 → 1.2.202
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/commands/fixtures/fixtures-setup.command.d.ts +15 -0
- package/dist/commands/fixtures/fixtures-setup.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-setup.command.js +58 -0
- package/dist/commands/fixtures/fixtures-setup.command.js.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +16 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts.map +1 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js +59 -0
- package/dist/commands/fixtures/fixtures-tear-down.command.js.map +1 -0
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +4 -0
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/config/cache.options.d.ts +1 -1
- package/dist/config/cache.options.d.ts.map +1 -1
- package/dist/config/cache.options.js +2 -2
- package/dist/config/cache.options.js.map +1 -1
- package/dist/config/iam.config.d.ts +4 -0
- package/dist/config/iam.config.d.ts.map +1 -1
- package/dist/config/iam.config.js +2 -0
- package/dist/config/iam.config.js.map +1 -1
- package/dist/constants/error-messages.d.ts +2 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +4 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +25 -0
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +23 -0
- package/dist/controllers/model-metadata.controller.js.map +1 -1
- package/dist/controllers/model-sequence.controller.d.ts +43 -0
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -0
- package/dist/controllers/model-sequence.controller.js +179 -0
- package/dist/controllers/model-sequence.controller.js.map +1 -0
- package/dist/controllers/setting.controller.d.ts +2 -2
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +36 -42
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/decorators/sms-provider.decorator.d.ts +3 -0
- package/dist/decorators/sms-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/sms-provider.decorator.js +11 -0
- package/dist/decorators/sms-provider.decorator.js.map +1 -0
- package/dist/dtos/basic-filters.dto.d.ts +3 -1
- package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.js +8 -2
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/basic-group-filters.dto.d.ts +6 -0
- package/dist/dtos/basic-group-filters.dto.d.ts.map +1 -0
- package/dist/dtos/basic-group-filters.dto.js +46 -0
- package/dist/dtos/basic-group-filters.dto.js.map +1 -0
- package/dist/dtos/create-field-metadata.dto.js +2 -2
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-sequence.dto.d.ts +14 -0
- package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/create-model-sequence.dto.js +90 -0
- package/dist/dtos/create-model-sequence.dto.js.map +1 -0
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +1 -0
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/get-mcp-url.dto.d.ts +5 -0
- package/dist/dtos/get-mcp-url.dto.d.ts.map +1 -0
- package/dist/dtos/get-mcp-url.dto.js +31 -0
- package/dist/dtos/get-mcp-url.dto.js.map +1 -0
- package/dist/dtos/navigation.dto.d.ts +6 -0
- package/dist/dtos/navigation.dto.d.ts.map +1 -0
- package/dist/dtos/navigation.dto.js +33 -0
- package/dist/dtos/navigation.dto.js.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts +5 -5
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -1
- package/dist/dtos/resolve-s3-url.dto.js +7 -7
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -1
- package/dist/dtos/sign-in.dto.js +3 -3
- package/dist/dtos/sign-in.dto.js.map +1 -1
- package/dist/dtos/update-model-sequence.dto.d.ts +15 -0
- package/dist/dtos/update-model-sequence.dto.d.ts.map +1 -0
- package/dist/dtos/update-model-sequence.dto.js +94 -0
- package/dist/dtos/update-model-sequence.dto.js.map +1 -0
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +6 -4
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +2 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/legacy-common.entity.d.ts.map +1 -1
- package/dist/entities/legacy-common.entity.js +6 -4
- package/dist/entities/legacy-common.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +5 -1
- package/dist/entities/model-metadata.entity.js.map +1 -1
- package/dist/entities/model-sequence.entity.d.ts +15 -0
- package/dist/entities/model-sequence.entity.d.ts.map +1 -0
- package/dist/entities/model-sequence.entity.js +67 -0
- package/dist/entities/model-sequence.entity.js.map +1 -0
- package/dist/factories/mail.factory.d.ts.map +1 -1
- package/dist/factories/mail.factory.js.map +1 -1
- package/dist/factories/sms.factory.d.ts +14 -0
- package/dist/factories/sms.factory.d.ts.map +1 -0
- package/dist/factories/sms.factory.js +53 -0
- package/dist/factories/sms.factory.js.map +1 -0
- package/dist/helpers/date.helper.d.ts.map +1 -1
- package/dist/helpers/date.helper.js +13 -4
- package/dist/helpers/date.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +13 -2
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +7 -8
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +0 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +4 -9
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +6 -2
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +1 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +9 -0
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts +1 -0
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +29 -3
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +14 -0
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +7 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -8
- package/dist/index.js.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts +1 -0
- package/dist/jobs/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/computed-field-evaluation-subscriber.service.js +16 -4
- package/dist/jobs/computed-field-evaluation-subscriber.service.js.map +1 -1
- package/dist/jobs/database/{sms-publisher-database.service.d.ts → msg91-sms-publisher-database.service.d.ts} +2 -2
- package/dist/jobs/database/msg91-sms-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{sms-publisher-database.service.js → msg91-sms-publisher-database.service.js} +8 -8
- package/dist/jobs/database/msg91-sms-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/{sms-queue-database-options.d.ts → msg91-sms-queue-database-options.d.ts} +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.d.ts.map +1 -0
- package/dist/jobs/database/{sms-queue-database-options.js → msg91-sms-queue-database-options.js} +1 -1
- package/dist/jobs/database/msg91-sms-queue-database-options.js.map +1 -0
- package/dist/jobs/database/{sms-subscriber-database.service.d.ts → msg91-sms-subscriber-database.service.d.ts} +5 -5
- package/dist/jobs/database/msg91-sms-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{sms-subscriber-database.service.js → msg91-sms-subscriber-database.service.js} +14 -12
- package/dist/jobs/database/msg91-sms-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/otp-subscriber-database.service.d.ts +4 -4
- package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/otp-subscriber-database.service.js +6 -4
- package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +3 -3
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js +6 -4
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -1
- package/dist/jobs/{sms-publisher.service.d.ts → msg91-otp-publisher.service.d.ts} +2 -2
- package/dist/jobs/msg91-otp-publisher.service.d.ts.map +1 -0
- package/dist/jobs/{sms-publisher.service.js → msg91-otp-publisher.service.js} +8 -8
- package/dist/jobs/msg91-otp-publisher.service.js.map +1 -0
- package/dist/jobs/{sms-queue-options.d.ts → msg91-otp-queue-options.d.ts} +1 -1
- package/dist/jobs/msg91-otp-queue-options.d.ts.map +1 -0
- package/dist/jobs/{otp-queue-options.js → msg91-otp-queue-options.js} +1 -1
- package/dist/jobs/msg91-otp-queue-options.js.map +1 -0
- package/dist/jobs/{sms-subscriber.service.d.ts → msg91-otp-subscriber.service.d.ts} +6 -6
- package/dist/jobs/msg91-otp-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/{otp-subscriber.service.js → msg91-otp-subscriber.service.js} +14 -12
- package/dist/jobs/msg91-otp-subscriber.service.js.map +1 -0
- package/dist/jobs/{otp-publisher.service.d.ts → msg91-sms-publisher.service.d.ts} +2 -2
- package/dist/jobs/msg91-sms-publisher.service.d.ts.map +1 -0
- package/dist/jobs/{otp-publisher.service.js → msg91-sms-publisher.service.js} +8 -8
- package/dist/jobs/msg91-sms-publisher.service.js.map +1 -0
- package/dist/jobs/{otp-queue-options.d.ts → msg91-sms-queue-options.d.ts} +1 -1
- package/dist/jobs/msg91-sms-queue-options.d.ts.map +1 -0
- package/dist/jobs/{sms-queue-options.js → msg91-sms-queue-options.js} +1 -1
- package/dist/jobs/msg91-sms-queue-options.js.map +1 -0
- package/dist/jobs/{otp-subscriber.service.d.ts → msg91-sms-subscriber.service.d.ts} +7 -7
- package/dist/jobs/msg91-sms-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/{sms-subscriber.service.js → msg91-sms-subscriber.service.js} +14 -12
- package/dist/jobs/msg91-sms-subscriber.service.js.map +1 -0
- package/dist/jobs/twilio-sms-subscriber.service.d.ts +3 -3
- package/dist/jobs/twilio-sms-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/twilio-sms-subscriber.service.js +6 -4
- package/dist/jobs/twilio-sms-subscriber.service.js.map +1 -1
- package/dist/repository/media.repository.d.ts.map +1 -1
- package/dist/repository/media.repository.js +4 -0
- package/dist/repository/media.repository.js.map +1 -1
- package/dist/repository/model-sequence.repository.d.ts +14 -0
- package/dist/repository/model-sequence.repository.d.ts.map +1 -0
- package/dist/repository/model-sequence.repository.js +103 -0
- package/dist/repository/model-sequence.repository.js.map +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts +7 -12
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +87 -27
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +373 -52
- package/dist/seeders/system-fields-seeder.service.d.ts +1 -0
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +11 -2
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/seeders/user-seeder.service.d.ts.map +1 -1
- package/dist/seeders/user-seeder.service.js +5 -4
- package/dist/seeders/user-seeder.service.js.map +1 -1
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +1 -0
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +1 -0
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +6 -3
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +70 -27
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.d.ts.map +1 -1
- package/dist/services/chatter-message-details.service.js +1 -0
- package/dist/services/chatter-message-details.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +7 -3
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +7 -5
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +15 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +72 -0
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -0
- package/dist/services/crud-helper.service.d.ts +23 -6
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +257 -45
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +4 -3
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +53 -24
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/database/database-bootstrap.service.d.ts +12 -0
- package/dist/services/database/database-bootstrap.service.d.ts.map +1 -0
- package/dist/services/database/database-bootstrap.service.js +115 -0
- package/dist/services/database/database-bootstrap.service.js.map +1 -0
- package/dist/services/email-template.service.d.ts +7 -7
- package/dist/services/email-template.service.d.ts.map +1 -1
- package/dist/services/email-template.service.js +8 -7
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/excel.service.d.ts +11 -0
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +104 -0
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +4 -1
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +35 -30
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts +1 -0
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +9 -0
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/fixtures.service.d.ts +13 -0
- package/dist/services/fixtures.service.d.ts.map +1 -0
- package/dist/services/fixtures.service.js +95 -0
- package/dist/services/fixtures.service.js.map +1 -0
- package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -1
- package/dist/services/genai/ingest-metadata.service.js +1 -1
- package/dist/services/genai/ingest-metadata.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
- package/dist/services/import-transaction-error-log.service.js +1 -0
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +7 -1
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +2 -2
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +2 -1
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +1 -0
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.js +0 -1
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/media.service.d.ts +3 -3
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +6 -4
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +17 -6
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +0 -13
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +4 -0
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +28 -1
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +111 -44
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/model-sequence.service.d.ts +23 -0
- package/dist/services/model-sequence.service.d.ts.map +1 -0
- package/dist/services/model-sequence.service.js +55 -0
- package/dist/services/model-sequence.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +1 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +35 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/permission-metadata.service.d.ts +5 -5
- package/dist/services/permission-metadata.service.d.ts.map +1 -1
- package/dist/services/permission-metadata.service.js +6 -5
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +2 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +2 -2
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +1 -0
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +6 -6
- package/dist/services/scheduled-job.service.d.ts.map +1 -1
- package/dist/services/scheduled-job.service.js +8 -8
- package/dist/services/scheduled-job.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +4 -0
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +1 -0
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js +4 -0
- package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +7 -5
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +28 -48
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.js +6 -6
- package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
- package/dist/services/sms/Msg91OTPService.js +3 -1
- package/dist/services/sms/Msg91OTPService.js.map +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91SMSService.js +3 -1
- package/dist/services/sms/Msg91SMSService.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
- package/dist/services/sms/TwilioSMSService.js +2 -0
- package/dist/services/sms/TwilioSMSService.js.map +1 -1
- package/dist/services/sms-template.service.d.ts +7 -7
- package/dist/services/sms-template.service.d.ts.map +1 -1
- package/dist/services/sms-template.service.js +8 -7
- package/dist/services/sms-template.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +5 -13
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +18 -22
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/solid-ts-morph.service.js +2 -2
- package/dist/services/solid-ts-morph.service.js.map +1 -1
- package/dist/services/user-activity-history.service.d.ts.map +1 -1
- package/dist/services/user-activity-history.service.js +1 -0
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.d.ts.map +1 -1
- package/dist/services/user-view-metadata.service.js +3 -2
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +1 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +1 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +3 -1
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core-cli-db.module.d.ts.map +1 -1
- package/dist/solid-core-cli-db.module.js +5 -2
- package/dist/solid-core-cli-db.module.js.map +1 -1
- package/dist/solid-core-cli.module.js +1 -1
- package/dist/solid-core-cli.module.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +40 -13
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +5 -1
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +4 -2
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +53 -12
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.d.ts.map +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js +1 -1
- package/dist/subscribers/scheduled-job.subscriber.js.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts +5 -0
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js +48 -0
- package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/grouping-enhancements.md +89 -0
- package/package.json +1 -1
- package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
- package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
- package/src/commands/refresh-model.command.ts +3 -1
- package/src/config/cache.options.ts +6 -3
- package/src/config/iam.config.ts +2 -1
- package/src/constants/error-messages.ts +7 -1
- package/src/controllers/model-metadata.controller.ts +21 -1
- package/src/controllers/model-sequence.controller.ts +93 -0
- package/src/controllers/setting.controller.ts +62 -54
- package/src/decorators/sms-provider.decorator.ts +7 -0
- package/src/dtos/basic-filters.dto.ts +6 -1
- package/src/dtos/basic-group-filters.dto.ts +23 -0
- package/src/dtos/create-field-metadata.dto.ts +1 -1
- package/src/dtos/create-model-sequence.dto.ts +51 -0
- package/src/dtos/create-role-metadata.dto.ts +16 -3
- package/src/dtos/get-mcp-url.dto.ts +13 -0
- package/src/dtos/navigation.dto.ts +14 -0
- package/src/dtos/resolve-s3-url.dto.ts +9 -11
- package/src/dtos/sign-in.dto.ts +3 -3
- package/src/dtos/update-model-sequence.dto.ts +53 -0
- package/src/entities/common.entity.ts +8 -8
- package/src/entities/field-metadata.entity.ts +1 -1
- package/src/entities/legacy-common.entity.ts +8 -6
- package/src/entities/model-metadata.entity.ts +1 -1
- package/src/entities/model-sequence.entity.ts +32 -0
- package/src/factories/mail.factory.ts +0 -1
- package/src/factories/sms.factory.ts +43 -0
- package/src/helpers/date.helper.ts +38 -9
- package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +18 -5
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +16 -8
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +9 -9
- package/src/helpers/model-metadata-helper.service.ts +6 -4
- package/src/helpers/module-metadata-helper.service.ts +18 -1
- package/src/helpers/module.helper.ts +40 -5
- package/src/helpers/solid-registry.ts +23 -0
- package/src/index.ts +12 -7
- package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
- package/src/jobs/database/{sms-publisher-database.service.ts → msg91-sms-publisher-database.service.ts} +2 -2
- package/src/jobs/database/{sms-subscriber-database.service.ts → msg91-sms-subscriber-database.service.ts} +9 -4
- package/src/jobs/database/otp-subscriber-database.service.ts +8 -2
- package/src/jobs/database/twilio-sms-subscriber-database.service.ts +5 -2
- package/src/jobs/{otp-publisher.service.ts → msg91-otp-publisher.service.ts} +2 -2
- package/src/jobs/{otp-subscriber.service.ts → msg91-otp-subscriber.service.ts} +10 -4
- package/src/jobs/{sms-publisher.service.ts → msg91-sms-publisher.service.ts} +2 -2
- package/src/jobs/{sms-subscriber.service.ts → msg91-sms-subscriber.service.ts} +9 -4
- package/src/jobs/twilio-sms-subscriber.service.ts +6 -2
- package/src/repository/media.repository.ts +3 -2
- package/src/repository/model-sequence.repository.ts +97 -0
- package/src/seeders/module-metadata-seeder.service.ts +133 -34
- package/src/seeders/seed-data/email-templates/email-on-signup.handlebars.html +155 -0
- package/src/seeders/seed-data/sms-templates/text-on-signup.handlebars.txt +10 -0
- package/src/seeders/seed-data/solid-core-metadata.json +374 -53
- package/src/seeders/system-fields-seeder.service.ts +6 -2
- package/src/seeders/user-seeder.service.ts +5 -4
- package/src/services/action-metadata.service.ts +3 -2
- package/src/services/ai-interaction.service.ts +2 -1
- package/src/services/authentication.service.ts +119 -24
- package/src/services/chatter-message-details.service.ts +2 -1
- package/src/services/chatter-message.service.ts +10 -4
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +9 -9
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
- package/src/services/crud-helper.service.ts +287 -49
- package/src/services/crud.service.ts +95 -45
- package/src/services/database/database-bootstrap.service.ts +91 -0
- package/src/services/email-template.service.ts +11 -13
- package/src/services/excel.service.ts +152 -3
- package/src/services/field-metadata.service.ts +102 -55
- package/src/services/file.service.ts +9 -0
- package/src/services/fixtures.service.ts +108 -0
- package/src/services/genai/ingest-metadata.service.ts +4 -3
- package/src/services/import-transaction-error-log.service.ts +2 -1
- package/src/services/import-transaction.service.ts +8 -4
- package/src/services/list-of-values.service.ts +4 -4
- package/src/services/locale.service.ts +2 -1
- package/src/services/mail/smtp-email.service.ts +1 -1
- package/src/services/media.service.ts +10 -11
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +22 -7
- package/src/services/mediaStorageProviders/file-storage-provider.ts +18 -13
- package/src/services/menu-item-metadata.service.ts +6 -2
- package/src/services/model-metadata.service.ts +201 -44
- package/src/services/model-sequence.service.ts +33 -0
- package/src/services/module-metadata.service.ts +49 -2
- package/src/services/permission-metadata.service.ts +8 -9
- package/src/services/queues/database-subscriber.service.ts +3 -1
- package/src/services/queues/rabbitmq-subscriber.service.ts +4 -2
- package/src/services/role-metadata.service.ts +1 -0
- package/src/services/scheduled-job.service.ts +9 -9
- package/src/services/scheduled-jobs/scheduler.service.ts +5 -0
- package/src/services/security-rule.service.ts +1 -0
- package/src/services/selection-providers/list-of-models-selection-provider.service.ts +5 -2
- package/src/services/setting.service.ts +42 -55
- package/src/services/sms/Msg91BaseSMSService.ts +6 -6
- package/src/services/sms/Msg91OTPService.ts +3 -2
- package/src/services/sms/Msg91SMSService.ts +3 -1
- package/src/services/sms/TwilioSMSService.ts +3 -3
- package/src/services/sms-template.service.ts +11 -13
- package/src/services/solid-introspect.service.ts +28 -19
- package/src/services/solid-ts-morph.service.ts +2 -2
- package/src/services/user-activity-history.service.ts +3 -2
- package/src/services/user-view-metadata.service.ts +4 -3
- package/src/services/user.service.ts +2 -1
- package/src/services/view-metadata.service.ts +5 -4
- package/src/solid-core-cli-db.module.ts +5 -4
- package/src/solid-core-cli.module.ts +2 -2
- package/src/solid-core.module.ts +42 -13
- package/src/subscribers/audit.subscriber.ts +3 -2
- package/src/subscribers/computed-entity-field.subscriber.ts +60 -17
- package/src/subscribers/scheduled-job.subscriber.ts +9 -2
- package/src/transformers/typeorm/local-date-time-transformer.ts +55 -0
- package/dist/jobs/database/sms-publisher-database.service.d.ts.map +0 -1
- package/dist/jobs/database/sms-publisher-database.service.js.map +0 -1
- package/dist/jobs/database/sms-queue-database-options.d.ts.map +0 -1
- package/dist/jobs/database/sms-queue-database-options.js.map +0 -1
- package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +0 -1
- package/dist/jobs/database/sms-subscriber-database.service.js.map +0 -1
- package/dist/jobs/otp-publisher.service.d.ts.map +0 -1
- package/dist/jobs/otp-publisher.service.js.map +0 -1
- package/dist/jobs/otp-queue-options.d.ts.map +0 -1
- package/dist/jobs/otp-queue-options.js.map +0 -1
- package/dist/jobs/otp-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/otp-subscriber.service.js.map +0 -1
- package/dist/jobs/sms-publisher.service.d.ts.map +0 -1
- package/dist/jobs/sms-publisher.service.js.map +0 -1
- package/dist/jobs/sms-queue-options.d.ts.map +0 -1
- package/dist/jobs/sms-queue-options.js.map +0 -1
- package/dist/jobs/sms-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/sms-subscriber.service.js.map +0 -1
- /package/sql/{mssql → default/mssql}/proc_CleanupModelMetadata.sql +0 -0
- /package/sql/{mssql → default/mssql}/proc_CleanupModuleMetadata.sql +0 -0
- /package/sql/{mssql/scratchpad.sql → default/mssql/scratchpad.sql.txt} +0 -0
- /package/sql/{postgres → default/postgres}/proc_CleanupModelMetadata.sql +0 -0
- /package/sql/{postgres → default/postgres}/proc_CleanupModuleMetadata.sql +0 -0
- /package/sql/{postgres/scratchpad.sql → default/postgres/scratchpad.sql.txt} +0 -0
- /package/src/jobs/database/{sms-queue-database-options.ts → msg91-sms-queue-database-options.ts} +0 -0
- /package/src/jobs/{otp-queue-options.ts → msg91-otp-queue-options.ts} +0 -0
- /package/src/jobs/{sms-queue-options.ts → msg91-sms-queue-options.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { ConfigService } from '@nestjs/config';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
@@ -7,7 +7,7 @@ import { CRUDService } from 'src/services/crud.service';
|
|
|
7
7
|
import { FileService } from "src/services/file.service";
|
|
8
8
|
import { ModelMetadataService } from 'src/services/model-metadata.service';
|
|
9
9
|
import { ModuleMetadataService } from 'src/services/module-metadata.service';
|
|
10
|
-
import { EntityManager } from 'typeorm';
|
|
10
|
+
import { EntityManager, In } from 'typeorm';
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
import { ActionMetadataRepository } from 'src/repository/action-metadata.repository';
|
|
@@ -16,6 +16,7 @@ import { ActionMetadata } from '../entities/action-metadata.entity';
|
|
|
16
16
|
@Injectable()
|
|
17
17
|
export class ActionMetadataService extends CRUDService<ActionMetadata> {
|
|
18
18
|
constructor(
|
|
19
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
19
20
|
readonly modelMetadataService: ModelMetadataService,
|
|
20
21
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
21
22
|
readonly configService: ConfigService,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BadRequestException, Injectable, Logger } from '@nestjs/common';
|
|
1
|
+
import { BadRequestException, forwardRef, Inject, Injectable, Logger } from '@nestjs/common';
|
|
2
2
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
3
3
|
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
4
4
|
import { EntityManager } from 'typeorm';
|
|
@@ -24,6 +24,7 @@ export class AiInteractionService extends CRUDService<AiInteraction> {
|
|
|
24
24
|
private readonly logger = new Logger(AiInteractionService.name);
|
|
25
25
|
|
|
26
26
|
constructor(
|
|
27
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
27
28
|
readonly modelMetadataService: ModelMetadataService,
|
|
28
29
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
29
30
|
readonly configService: ConfigService,
|
|
@@ -49,6 +49,7 @@ import { RoleMetadataService } from './role-metadata.service';
|
|
|
49
49
|
import { SettingService } from './setting.service';
|
|
50
50
|
import { UserActivityHistoryService } from './user-activity-history.service';
|
|
51
51
|
import { UserService } from './user.service';
|
|
52
|
+
import { SmsFactory } from 'src/factories/sms.factory';
|
|
52
53
|
|
|
53
54
|
enum LoginProvider {
|
|
54
55
|
LOCAL = 'local',
|
|
@@ -79,7 +80,8 @@ export class AuthenticationService {
|
|
|
79
80
|
private readonly httpService: HttpService,
|
|
80
81
|
// private readonly mailService: SMTPEMailService,
|
|
81
82
|
private readonly mailServiceFactory: MailFactory,
|
|
82
|
-
private readonly smsService: Msg91OTPService,
|
|
83
|
+
// private readonly smsService: Msg91OTPService,
|
|
84
|
+
private readonly smsFactory: SmsFactory,
|
|
83
85
|
private readonly eventEmitter: EventEmitter2,
|
|
84
86
|
private readonly settingService: SettingService,
|
|
85
87
|
private readonly roleMetadataService: RoleMetadataService,
|
|
@@ -197,7 +199,7 @@ export class AuthenticationService {
|
|
|
197
199
|
// Merge the extended signUpDto attributes into the user entity
|
|
198
200
|
//@ts-ignore
|
|
199
201
|
const extensionUser = extensionUserRepo.merge(extensionUserRepo.create() as T, extensionUserDto);
|
|
200
|
-
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, true, onForcePasswordChange);
|
|
202
|
+
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup<T>(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
|
|
201
203
|
const savedUser = await extensionUserRepo.save(user);
|
|
202
204
|
|
|
203
205
|
await this.handlePostSignup(savedUser, signUpDto.roles, pwd, autoGeneratedPwd);
|
|
@@ -278,6 +280,9 @@ export class AuthenticationService {
|
|
|
278
280
|
if (user.forcePasswordChange && autoGeneratedPwd) {
|
|
279
281
|
this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
280
282
|
}
|
|
283
|
+
|
|
284
|
+
// Send welcome notifications (email/SMS) if enabled.
|
|
285
|
+
await this.notifyUserOnSignup(user);
|
|
281
286
|
}
|
|
282
287
|
|
|
283
288
|
|
|
@@ -323,6 +328,56 @@ export class AuthenticationService {
|
|
|
323
328
|
|
|
324
329
|
}
|
|
325
330
|
|
|
331
|
+
private isWelcomeEmailEnabled(): boolean {
|
|
332
|
+
return this.iamConfiguration.sendWelcomeEmailOnSignup;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
private isWelcomeSmsEnabled(): boolean {
|
|
336
|
+
return this.iamConfiguration.sendWelcomeSmsOnSignup;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
private async notifyUserOnSignup(user: User) {
|
|
340
|
+
const companyLogo = await this.getCompanyLogo();
|
|
341
|
+
// Email welcome
|
|
342
|
+
if (this.isWelcomeEmailEnabled()) {
|
|
343
|
+
const mailService = this.mailServiceFactory.getMailService();
|
|
344
|
+
mailService.sendEmailUsingTemplate(
|
|
345
|
+
user.email,
|
|
346
|
+
'email-on-signup',
|
|
347
|
+
{
|
|
348
|
+
solidAppName: process.env.SOLID_APP_NAME,
|
|
349
|
+
solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
|
|
350
|
+
frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
|
|
351
|
+
email: user.email,
|
|
352
|
+
fullName: user.fullName,
|
|
353
|
+
userName: user.username,
|
|
354
|
+
companyLogoUrl: companyLogo
|
|
355
|
+
},
|
|
356
|
+
this.commonConfiguration.shouldQueueEmails,
|
|
357
|
+
null,
|
|
358
|
+
null,
|
|
359
|
+
'user',
|
|
360
|
+
user.id
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// SMS welcome
|
|
365
|
+
if (this.isWelcomeSmsEnabled() && user.mobile) {
|
|
366
|
+
const smsService = this.smsFactory.getSmsService();
|
|
367
|
+
smsService.sendSMSUsingTemplate(
|
|
368
|
+
user.mobile,
|
|
369
|
+
'text-on-signup',
|
|
370
|
+
{
|
|
371
|
+
solidAppName: process.env.SOLID_APP_NAME,
|
|
372
|
+
frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
|
|
373
|
+
firstName: user.username,
|
|
374
|
+
fullName: user.fullName ? user.fullName : user.username
|
|
375
|
+
},
|
|
376
|
+
this.commonConfiguration.shouldQueueSms,
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
326
381
|
async otpInitiateRegistration(signUpDto: OTPSignUpDto) {
|
|
327
382
|
try {
|
|
328
383
|
if (!this.isPasswordlessRegistrationEnabled()) {
|
|
@@ -444,7 +499,8 @@ export class AuthenticationService {
|
|
|
444
499
|
);
|
|
445
500
|
}
|
|
446
501
|
if (registrationValidationSources.includes(RegistrationValidationSource.MOBILE)) {
|
|
447
|
-
this.
|
|
502
|
+
const smsService = this.smsFactory.getSmsService();
|
|
503
|
+
smsService.sendSMSUsingTemplate(
|
|
448
504
|
user.mobile,
|
|
449
505
|
'otp-on-register',
|
|
450
506
|
{
|
|
@@ -454,7 +510,8 @@ export class AuthenticationService {
|
|
|
454
510
|
firstName: user.username,
|
|
455
511
|
fullName: user.fullName ? user.fullName : user.username,
|
|
456
512
|
companyLogoUrl: companyLogo
|
|
457
|
-
}
|
|
513
|
+
},
|
|
514
|
+
this.commonConfiguration.shouldQueueSms,
|
|
458
515
|
);
|
|
459
516
|
}
|
|
460
517
|
}
|
|
@@ -571,11 +628,18 @@ export class AuthenticationService {
|
|
|
571
628
|
|
|
572
629
|
// Validate & generate otp token for the user based on the identifier type.
|
|
573
630
|
if (signInDto.type === RegistrationValidationSource.EMAIL) {
|
|
631
|
+
// const user = await this.userRepository.findOne({
|
|
632
|
+
// where: {
|
|
633
|
+
// email: signInDto.identifier,
|
|
634
|
+
// }
|
|
635
|
+
// });
|
|
574
636
|
const user = await this.userRepository.findOne({
|
|
575
|
-
where:
|
|
576
|
-
|
|
577
|
-
|
|
637
|
+
where: [
|
|
638
|
+
{ username: signInDto.identifier },
|
|
639
|
+
{ email: signInDto.identifier },
|
|
640
|
+
]
|
|
578
641
|
});
|
|
642
|
+
|
|
579
643
|
if (!user) {
|
|
580
644
|
throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
|
|
581
645
|
}
|
|
@@ -588,11 +652,18 @@ export class AuthenticationService {
|
|
|
588
652
|
await this.userRepository.save(user);
|
|
589
653
|
this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.EMAIL);
|
|
590
654
|
} else if (signInDto.type === RegistrationValidationSource.MOBILE) {
|
|
655
|
+
// const user = await this.userRepository.findOne({
|
|
656
|
+
// where: {
|
|
657
|
+
// mobile: signInDto.identifier,
|
|
658
|
+
// }
|
|
659
|
+
// });
|
|
591
660
|
const user = await this.userRepository.findOne({
|
|
592
|
-
where:
|
|
593
|
-
|
|
594
|
-
|
|
661
|
+
where: [
|
|
662
|
+
{ username: signInDto.identifier },
|
|
663
|
+
{ mobile: signInDto.identifier },
|
|
664
|
+
]
|
|
595
665
|
});
|
|
666
|
+
|
|
596
667
|
if (!user) {
|
|
597
668
|
throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
|
|
598
669
|
}
|
|
@@ -635,7 +706,8 @@ export class AuthenticationService {
|
|
|
635
706
|
);
|
|
636
707
|
}
|
|
637
708
|
if (loginType === RegistrationValidationSource.MOBILE) {
|
|
638
|
-
this.
|
|
709
|
+
const smsService = this.smsFactory.getSmsService();
|
|
710
|
+
smsService.sendSMSUsingTemplate(
|
|
639
711
|
user.mobile,
|
|
640
712
|
'otp-on-login',
|
|
641
713
|
{
|
|
@@ -645,7 +717,8 @@ export class AuthenticationService {
|
|
|
645
717
|
firstName: user.username,
|
|
646
718
|
fullName: user.fullName ? user.fullName : user.username,
|
|
647
719
|
companyLogoUrl: companyLogo
|
|
648
|
-
}
|
|
720
|
+
},
|
|
721
|
+
this.commonConfiguration.shouldQueueSms,
|
|
649
722
|
);
|
|
650
723
|
}
|
|
651
724
|
}
|
|
@@ -655,11 +728,20 @@ export class AuthenticationService {
|
|
|
655
728
|
throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
656
729
|
}
|
|
657
730
|
if (confirmSignInDto.type === RegistrationValidationSource.EMAIL) {
|
|
731
|
+
// const user = await this.userRepository.findOne({
|
|
732
|
+
// where: {
|
|
733
|
+
// email: confirmSignInDto.identifier,
|
|
734
|
+
// },
|
|
735
|
+
// relations: ['roles']
|
|
736
|
+
// });
|
|
658
737
|
const user = await this.userRepository.findOne({
|
|
659
|
-
where:
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
738
|
+
where: [
|
|
739
|
+
{ username: confirmSignInDto.identifier },
|
|
740
|
+
{ email: confirmSignInDto.identifier },
|
|
741
|
+
],
|
|
742
|
+
relations: {
|
|
743
|
+
roles: true
|
|
744
|
+
}
|
|
663
745
|
});
|
|
664
746
|
if (!user) {
|
|
665
747
|
throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
|
|
@@ -682,11 +764,20 @@ export class AuthenticationService {
|
|
|
682
764
|
const roles = user.roles.map((role) => role.name);
|
|
683
765
|
return { accessToken, refreshToken, user: { id, username, email, mobile, lastLoginProvider, roles } };
|
|
684
766
|
} else if (confirmSignInDto.type === RegistrationValidationSource.MOBILE) {
|
|
767
|
+
// const user = await this.userRepository.findOne({
|
|
768
|
+
// where: {
|
|
769
|
+
// mobile: confirmSignInDto.identifier,
|
|
770
|
+
// },
|
|
771
|
+
// relations: ['roles']
|
|
772
|
+
// });
|
|
685
773
|
const user = await this.userRepository.findOne({
|
|
686
|
-
where:
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
774
|
+
where: [
|
|
775
|
+
{ username: confirmSignInDto.identifier },
|
|
776
|
+
{ mobile: confirmSignInDto.identifier },
|
|
777
|
+
],
|
|
778
|
+
relations: {
|
|
779
|
+
roles: true
|
|
780
|
+
}
|
|
690
781
|
});
|
|
691
782
|
if (!user) {
|
|
692
783
|
throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_ACTIVE);
|
|
@@ -856,7 +947,8 @@ export class AuthenticationService {
|
|
|
856
947
|
}
|
|
857
948
|
// Assuming all users do not have mobile as mandatory.
|
|
858
949
|
if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
859
|
-
this.
|
|
950
|
+
const smsService = this.smsFactory.getSmsService();
|
|
951
|
+
smsService.sendSMSUsingTemplate(
|
|
860
952
|
user.mobile,
|
|
861
953
|
'forgot-password',
|
|
862
954
|
{
|
|
@@ -865,7 +957,8 @@ export class AuthenticationService {
|
|
|
865
957
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
866
958
|
firstName: user.username,
|
|
867
959
|
companyLogoUrl: companyLogo
|
|
868
|
-
}
|
|
960
|
+
},
|
|
961
|
+
this.commonConfiguration.shouldQueueSms,
|
|
869
962
|
);
|
|
870
963
|
}
|
|
871
964
|
}
|
|
@@ -945,7 +1038,8 @@ export class AuthenticationService {
|
|
|
945
1038
|
}
|
|
946
1039
|
// Assuming all users do not have mobile as mandatory.
|
|
947
1040
|
if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
948
|
-
this.
|
|
1041
|
+
const smsService = this.smsFactory.getSmsService();
|
|
1042
|
+
smsService.sendSMSUsingTemplate(
|
|
949
1043
|
user.mobile,
|
|
950
1044
|
'forgot-password',
|
|
951
1045
|
{
|
|
@@ -954,7 +1048,8 @@ export class AuthenticationService {
|
|
|
954
1048
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
955
1049
|
firstName: user.username,
|
|
956
1050
|
companyLogoUrl: companyLogo
|
|
957
|
-
}
|
|
1051
|
+
},
|
|
1052
|
+
this.commonConfiguration.shouldQueueSms,
|
|
958
1053
|
);
|
|
959
1054
|
}
|
|
960
1055
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
|
|
3
3
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
4
4
|
import { EntityManager, Repository, In } from 'typeorm';
|
|
@@ -16,6 +16,7 @@ import { ChatterMessageDetailsRepository } from 'src/repository/chatter-message-
|
|
|
16
16
|
@Injectable()
|
|
17
17
|
export class ChatterMessageDetailsService extends CRUDService<ChatterMessageDetails>{
|
|
18
18
|
constructor(
|
|
19
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
19
20
|
readonly modelMetadataService: ModelMetadataService,
|
|
20
21
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
21
22
|
readonly configService: ConfigService,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Injectable } from '@nestjs/common';
|
|
1
|
+
import { forwardRef, Inject, Injectable } from '@nestjs/common';
|
|
2
2
|
import { DiscoveryService, ModuleRef } from "@nestjs/core";
|
|
3
3
|
import { InjectEntityManager } from '@nestjs/typeorm';
|
|
4
4
|
import { Brackets, EntityManager, EntityMetadata } from 'typeorm';
|
|
@@ -26,6 +26,7 @@ import { RequestContextService } from './request-context.service';
|
|
|
26
26
|
@Injectable()
|
|
27
27
|
export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
28
28
|
constructor(
|
|
29
|
+
@Inject(forwardRef(() => ModelMetadataService))
|
|
29
30
|
readonly modelMetadataService: ModelMetadataService,
|
|
30
31
|
readonly moduleMetadataService: ModuleMetadataService,
|
|
31
32
|
readonly configService: ConfigService,
|
|
@@ -44,6 +45,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
44
45
|
readonly moduleRef: ModuleRef,
|
|
45
46
|
// @InjectRepository(ModelMetadata)
|
|
46
47
|
// private readonly modelMetadataRepo: Repository<ModelMetadata>,
|
|
48
|
+
@Inject(forwardRef(() => ModelMetadataRepository))
|
|
47
49
|
private readonly modelMetadataRepo: ModelMetadataRepository,
|
|
48
50
|
readonly requestContextService: RequestContextService,
|
|
49
51
|
private readonly modelMetadataHelperService: ModelMetadataHelperService,
|
|
@@ -116,7 +118,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
116
118
|
|
|
117
119
|
const auditFields = model.fields.filter(field =>
|
|
118
120
|
field.enableAuditTracking &&
|
|
119
|
-
!['mediaSingle', 'mediaMultiple', '
|
|
121
|
+
!['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
|
|
120
122
|
!(field.type === 'relation' && field.relationType === 'one-to-many')
|
|
121
123
|
);
|
|
122
124
|
|
|
@@ -179,7 +181,7 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
179
181
|
|
|
180
182
|
const auditFields = modelFields.filter(field =>
|
|
181
183
|
field.enableAuditTracking &&
|
|
182
|
-
!['mediaSingle', 'mediaMultiple', '
|
|
184
|
+
!['mediaSingle', 'mediaMultiple', 'richText', 'json'].includes(field.type) &&
|
|
183
185
|
!(field.type === 'relation' && field.relationType === 'one-to-many')
|
|
184
186
|
);
|
|
185
187
|
|
|
@@ -542,7 +544,11 @@ export class ChatterMessageService extends CRUDService<ChatterMessage> {
|
|
|
542
544
|
});
|
|
543
545
|
|
|
544
546
|
if (coModel) {
|
|
545
|
-
const relatedEntityRepository = this.entityManager.getRepository(classify(coModelName));
|
|
547
|
+
//const relatedEntityRepository = this.entityManager.getRepository(classify(coModelName));
|
|
548
|
+
const dsName = coModel.dataSource || 'default';
|
|
549
|
+
const em = dsName === 'default' ? this.entityManager : this.moduleRef.get(`${dsName}EntityManager`, { strict: false });
|
|
550
|
+
|
|
551
|
+
const relatedEntityRepository = em.getRepository(classify(coModelName));
|
|
546
552
|
|
|
547
553
|
const relatedEntities = await relatedEntityRepository.find({
|
|
548
554
|
where: { [coModelFieldName]: { id: entityId } }
|
package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts
CHANGED
|
@@ -28,10 +28,10 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
28
28
|
return 'Provider used to compute external ID for a CommonEntity with support for static or dynamic prefix.';
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
31
|
+
async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<AlphaNumExternalIdContext>) {
|
|
32
|
+
const { prefix, length, dynamicFieldPrefix } = computedFieldMetadata.computedFieldValueProviderCtxt;
|
|
33
|
+
const eventContext = computedFieldMetadata.eventContext;
|
|
34
|
+
const entityName = eventContext?.metadataName ?? eventContext.databaseEntity?.constructor?.name ?? '';
|
|
35
35
|
|
|
36
36
|
const codeLength = length || 5;
|
|
37
37
|
|
|
@@ -45,7 +45,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
const uniqueCode = await this.generateUniqueExternalId(resolvedPrefix, codeLength,
|
|
48
|
+
const uniqueCode = await this.generateUniqueExternalId(resolvedPrefix, codeLength, computedFieldMetadata.fieldName, entityName);
|
|
49
49
|
const finalExternalId = resolvedPrefix ? `${resolvedPrefix}-${uniqueCode}` : uniqueCode;
|
|
50
50
|
|
|
51
51
|
triggerEntity[computedFieldMetadata.fieldName] = finalExternalId;
|
|
@@ -60,8 +60,8 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
60
60
|
return result;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
private async isExternalIdUnique(externalId: string,
|
|
64
|
-
const count = await this.entityManager.count(
|
|
63
|
+
private async isExternalIdUnique(externalId: string, fieldName: string, entityName: string): Promise<boolean> {
|
|
64
|
+
const count = await this.entityManager.count(entityName as any,
|
|
65
65
|
{
|
|
66
66
|
where: { [fieldName]: externalId },
|
|
67
67
|
}
|
|
@@ -69,7 +69,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
69
69
|
return count === 0;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
private async generateUniqueExternalId(resolvedPrefix: string, codeLength: number,
|
|
72
|
+
private async generateUniqueExternalId(resolvedPrefix: string, codeLength: number, fieldName: string, entityName: string): Promise<string> {
|
|
73
73
|
const maxAttempts = 10;
|
|
74
74
|
|
|
75
75
|
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
@@ -78,7 +78,7 @@ export class AlphaNumExternalIdComputationProvider<T extends CommonEntity> imple
|
|
|
78
78
|
|
|
79
79
|
const fullId = resolvedPrefix ? `${resolvedPrefix}-${newId}` : newId;
|
|
80
80
|
|
|
81
|
-
const isUnique = await this.isExternalIdUnique(fullId,
|
|
81
|
+
const isUnique = await this.isExternalIdUnique(fullId, fieldName, entityName);
|
|
82
82
|
|
|
83
83
|
if (isUnique) {
|
|
84
84
|
return newId;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Injectable } from "@nestjs/common";
|
|
2
|
+
import { InjectDataSource } from "@nestjs/typeorm";
|
|
3
|
+
import { ComputedFieldProvider } from "src/decorators/computed-field-provider.decorator";
|
|
4
|
+
import { CommonEntity } from "src/entities/common.entity";
|
|
5
|
+
import { ModelSequence } from "src/entities/model-sequence.entity";
|
|
6
|
+
import { ComputedFieldMetadata } from "src/helpers/solid-registry";
|
|
7
|
+
import { IEntityPreComputeFieldProvider } from "src/interfaces";
|
|
8
|
+
import { DataSource, EntityTarget } from "typeorm";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export interface SequenceNumComputedFieldContext {
|
|
12
|
+
sequenceName: string; // The separator to use between concatenated values
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@ComputedFieldProvider()
|
|
16
|
+
@Injectable()
|
|
17
|
+
export class SequenceNumComputedFieldProvider<T extends CommonEntity> implements IEntityPreComputeFieldProvider<T, SequenceNumComputedFieldContext> {
|
|
18
|
+
constructor(
|
|
19
|
+
@InjectDataSource()
|
|
20
|
+
private readonly dataSource: DataSource
|
|
21
|
+
) { }
|
|
22
|
+
|
|
23
|
+
name(): string {
|
|
24
|
+
return "SequenceNumComputedFieldProvider";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
help(): string {
|
|
28
|
+
return "Computed field provider used to create fields whose value is based on some prefix, padding & sequence number.";
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async preComputeValue(triggerEntity: T, computedFieldMetadata: ComputedFieldMetadata<SequenceNumComputedFieldContext>) {
|
|
32
|
+
const { sequenceName } =
|
|
33
|
+
computedFieldMetadata.computedFieldValueProviderCtxt ?? {};
|
|
34
|
+
|
|
35
|
+
if (!sequenceName) {
|
|
36
|
+
throw new Error("sequenceName is required for sequence computation");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
await this.dataSource.transaction(async (manager) => {
|
|
40
|
+
/**
|
|
41
|
+
* 1️⃣ Lock sequence row (prevents race conditions)
|
|
42
|
+
*/
|
|
43
|
+
// 1️⃣ Fetch sequence row
|
|
44
|
+
const modelSequenceRepo = manager.getRepository(ModelSequence)
|
|
45
|
+
const modelSequence = await modelSequenceRepo.findOne({
|
|
46
|
+
where: { sequenceName },
|
|
47
|
+
lock: { mode: "pessimistic_write" }
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (!modelSequence) {
|
|
51
|
+
throw new Error(`ModelSequence not found for ${sequenceName}`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 2️⃣ Generate next sequence value
|
|
55
|
+
const nextValue = modelSequence.currentValue + 1;
|
|
56
|
+
|
|
57
|
+
const paddedValue = String(nextValue).padStart(modelSequence.padding ?? 5, "0");
|
|
58
|
+
|
|
59
|
+
const prefix = modelSequence.prefix ?? "";
|
|
60
|
+
const separator = modelSequence.separator ?? "";
|
|
61
|
+
|
|
62
|
+
const sequenceString = `${prefix}${separator}${paddedValue}`;
|
|
63
|
+
|
|
64
|
+
// 3️⃣ Duplicate check on TARGET ENTITY (extra safety)
|
|
65
|
+
const entityRepo = manager.getRepository(triggerEntity.constructor as any);
|
|
66
|
+
|
|
67
|
+
const existing = await entityRepo.findOne({
|
|
68
|
+
where: {
|
|
69
|
+
[computedFieldMetadata.fieldName]: sequenceString,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
if (existing) {
|
|
74
|
+
throw new Error(`Duplicate Sequence generated: ${sequenceString}`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// 4️⃣ set the computed field on the entity
|
|
78
|
+
(triggerEntity as any)[computedFieldMetadata.fieldName] = sequenceString;
|
|
79
|
+
|
|
80
|
+
// 5️⃣ Persist updated sequence current value
|
|
81
|
+
modelSequence.currentValue = nextValue;
|
|
82
|
+
await modelSequenceRepo.save(modelSequence);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
}
|