@solidstarters/solid-core 1.2.193 → 1.2.201
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/mcp.command.d.ts +20 -0
- package/dist/commands/mcp.command.d.ts.map +1 -0
- package/dist/commands/mcp.command.js +208 -0
- package/dist/commands/mcp.command.js.map +1 -0
- package/dist/commands/refresh-model.command.d.ts +8 -5
- package/dist/commands/refresh-model.command.d.ts.map +1 -1
- package/dist/commands/refresh-model.command.js +36 -0
- package/dist/commands/refresh-model.command.js.map +1 -1
- package/dist/commands/remove-fields.command.js +1 -1
- package/dist/commands/remove-fields.command.js.map +1 -1
- package/dist/commands/seed.command.d.ts +2 -0
- package/dist/commands/seed.command.d.ts.map +1 -1
- package/dist/commands/seed.command.js +28 -1
- package/dist/commands/seed.command.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/authentication.controller.js +1 -1
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/email-template.controller.js +1 -1
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/field-metadata.controller.d.ts +136 -4
- package/dist/controllers/field-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/field-metadata.controller.js +14 -1
- package/dist/controllers/field-metadata.controller.js.map +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js +1 -1
- package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -1
- package/dist/controllers/model-metadata.controller.js +1 -1
- 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/module-metadata.controller.js +1 -1
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/otp-authentication.controller.js +1 -1
- package/dist/controllers/otp-authentication.controller.js.map +1 -1
- package/dist/controllers/service.controller.js +1 -1
- package/dist/controllers/service.controller.js.map +1 -1
- package/dist/controllers/setting.controller.d.ts +1 -0
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +15 -0
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/controllers/sms-template.controller.js +1 -1
- package/dist/controllers/sms-template.controller.js.map +1 -1
- package/dist/controllers/test-queue.controller.js +1 -1
- package/dist/controllers/test-queue.controller.js.map +1 -1
- package/dist/controllers/test.controller.js +1 -1
- package/dist/controllers/test.controller.js.map +1 -1
- 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-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-ai-interaction.dto.js +14 -1
- package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/create-field-metadata.dto.d.ts +22 -5
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +34 -8
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/create-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/create-import-transaction.dto.js +1 -7
- package/dist/dtos/create-import-transaction.dto.js.map +1 -1
- package/dist/dtos/create-model-metadata.dto.d.ts +2 -0
- package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-metadata.dto.js +13 -1
- package/dist/dtos/create-model-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 +6 -1
- 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/resolve-s3-url.dto.d.ts +10 -0
- package/dist/dtos/resolve-s3-url.dto.d.ts.map +1 -0
- package/dist/dtos/resolve-s3-url.dto.js +49 -0
- package/dist/dtos/resolve-s3-url.dto.js.map +1 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts +2 -0
- package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-ai-interaction.dto.js +13 -1
- package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
- package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/update-field-metadata.dto.js.map +1 -1
- package/dist/dtos/update-import-transaction.dto.d.ts +0 -1
- package/dist/dtos/update-import-transaction.dto.d.ts.map +1 -1
- package/dist/dtos/update-import-transaction.dto.js +1 -7
- package/dist/dtos/update-import-transaction.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/action-metadata.entity.js +4 -4
- package/dist/entities/action-metadata.entity.js.map +1 -1
- package/dist/entities/ai-interaction.entity.d.ts +2 -0
- package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
- package/dist/entities/ai-interaction.entity.js +15 -6
- package/dist/entities/ai-interaction.entity.js.map +1 -1
- package/dist/entities/chatter-message-details.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message-details.entity.js +1 -1
- package/dist/entities/chatter-message-details.entity.js.map +1 -1
- package/dist/entities/chatter-message.entity.js +1 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/common.entity.d.ts +2 -3
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +10 -11
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js +2 -2
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -1
- package/dist/entities/dashboard-question.entity.js +3 -3
- package/dist/entities/dashboard-question.entity.js.map +1 -1
- package/dist/entities/dashboard-variable.entity.js +3 -3
- package/dist/entities/dashboard-variable.entity.js.map +1 -1
- package/dist/entities/dashboard.entity.js +1 -1
- package/dist/entities/dashboard.entity.js.map +1 -1
- package/dist/entities/email-template.entity.d.ts.map +1 -1
- package/dist/entities/email-template.entity.js +4 -3
- package/dist/entities/email-template.entity.js.map +1 -1
- package/dist/entities/export-template.entity.js +2 -2
- package/dist/entities/export-template.entity.js.map +1 -1
- package/dist/entities/export-transaction.entity.js +2 -2
- package/dist/entities/export-transaction.entity.js.map +1 -1
- package/dist/entities/field-metadata.entity.d.ts +1 -0
- package/dist/entities/field-metadata.entity.d.ts.map +1 -1
- package/dist/entities/field-metadata.entity.js +8 -4
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/import-transaction-error-log.entity.js +1 -1
- package/dist/entities/import-transaction-error-log.entity.js.map +1 -1
- package/dist/entities/import-transaction.entity.d.ts +0 -1
- package/dist/entities/import-transaction.entity.d.ts.map +1 -1
- package/dist/entities/import-transaction.entity.js +2 -7
- package/dist/entities/import-transaction.entity.js.map +1 -1
- package/dist/entities/legacy-common-with-id.entity.d.ts +5 -0
- package/dist/entities/legacy-common-with-id.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common-with-id.entity.js +32 -0
- package/dist/entities/legacy-common-with-id.entity.js.map +1 -0
- package/dist/entities/legacy-common.entity.d.ts +13 -0
- package/dist/entities/legacy-common.entity.d.ts.map +1 -0
- package/dist/entities/legacy-common.entity.js +68 -0
- package/dist/entities/legacy-common.entity.js.map +1 -0
- package/dist/entities/list-of-values.entity.js +2 -2
- package/dist/entities/list-of-values.entity.js.map +1 -1
- package/dist/entities/locale.entity.js +1 -1
- package/dist/entities/locale.entity.js.map +1 -1
- package/dist/entities/media.entity.d.ts.map +1 -1
- package/dist/entities/media.entity.js +3 -3
- package/dist/entities/media.entity.js.map +1 -1
- package/dist/entities/menu-item-metadata.entity.js +4 -4
- package/dist/entities/menu-item-metadata.entity.js.map +1 -1
- package/dist/entities/model-metadata.entity.d.ts +2 -0
- package/dist/entities/model-metadata.entity.d.ts.map +1 -1
- package/dist/entities/model-metadata.entity.js +11 -3
- 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/entities/mq-message-queue.entity.js +1 -1
- package/dist/entities/mq-message-queue.entity.js.map +1 -1
- package/dist/entities/mq-message.entity.d.ts +3 -3
- package/dist/entities/mq-message.entity.d.ts.map +1 -1
- package/dist/entities/mq-message.entity.js +10 -10
- package/dist/entities/mq-message.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.js +4 -4
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/scheduled-job.entity.js +4 -4
- package/dist/entities/scheduled-job.entity.js.map +1 -1
- package/dist/entities/security-rule.entity.js +2 -2
- package/dist/entities/security-rule.entity.js.map +1 -1
- package/dist/entities/setting.entity.js +2 -2
- package/dist/entities/setting.entity.js.map +1 -1
- package/dist/entities/sms-template.entity.js +2 -2
- package/dist/entities/sms-template.entity.js.map +1 -1
- package/dist/entities/user-activity-history.entity.d.ts.map +1 -1
- package/dist/entities/user-activity-history.entity.js +1 -1
- package/dist/entities/user-activity-history.entity.js.map +1 -1
- package/dist/entities/user-view-metadata.entity.js +2 -2
- package/dist/entities/user-view-metadata.entity.js.map +1 -1
- package/dist/entities/user.entity.js +13 -15
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.js +3 -3
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/helpers/date.helper.d.ts +1 -1
- package/dist/helpers/date.helper.d.ts.map +1 -1
- package/dist/helpers/date.helper.js +24 -2
- 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 +4 -1
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +52 -30
- 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 +26 -2
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts +9 -3
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +49 -32
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +14 -2
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +10 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/typeorm-db-helper.d.ts +3 -0
- package/dist/helpers/typeorm-db-helper.d.ts.map +1 -0
- package/dist/helpers/typeorm-db-helper.js +24 -0
- package/dist/helpers/typeorm-db-helper.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +3 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.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/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +6 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.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 +8 -13
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +103 -43
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +553 -652
- 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 +12 -3
- package/dist/seeders/system-fields-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 +2 -1
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +22 -14
- 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.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js +10 -6
- 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 +31 -6
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +285 -50
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +7 -2
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +135 -26
- 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 +10 -0
- package/dist/services/excel.service.d.ts.map +1 -1
- package/dist/services/excel.service.js +100 -0
- package/dist/services/excel.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +146 -6
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +218 -58
- 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 +3 -1
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +35 -11
- 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 +16 -45
- 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/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +3 -4
- package/dist/services/mq-message.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/publisher-factory.service.d.ts.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +4 -0
- package/dist/services/queues/publisher-factory.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/{providers → services/selection-providers}/list-of-values-selection-providers.service.d.ts +2 -2
- package/dist/services/selection-providers/list-of-values-selection-providers.service.d.ts.map +1 -0
- package/dist/{providers → services/selection-providers}/list-of-values-selection-providers.service.js +3 -3
- package/dist/services/selection-providers/list-of-values-selection-providers.service.js.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts +20 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.d.ts.map +1 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +87 -0
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -0
- 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 -5
- package/dist/services/setting.service.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 +10 -3
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +66 -12
- 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 +3 -1
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +33 -5
- 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.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +23 -1
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +3 -2
- package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
- package/dist/subscribers/audit.subscriber.js +8 -10
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +7 -4
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +60 -21
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts +4 -2
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.js +10 -8
- package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/field-metadata.subscriber.js +0 -1
- package/dist/subscribers/field-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.d.ts.map +1 -1
- package/dist/subscribers/model-metadata.subscriber.js +3 -2
- package/dist/subscribers/model-metadata.subscriber.js.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts +3 -2
- package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -1
- package/dist/subscribers/soft-delete-aware-event.subscriber.js +6 -11
- package/dist/subscribers/soft-delete-aware-event.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 +26 -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/sql/default/mssql/proc_CleanupModelMetadata.sql +175 -0
- package/sql/default/mssql/proc_CleanupModuleMetadata.sql +78 -0
- package/sql/default/mssql/scratchpad.sql.txt +10 -0
- package/sql/default/postgres/proc_CleanupModelMetadata.sql +148 -0
- package/sql/default/postgres/proc_CleanupModuleMetadata.sql +50 -0
- package/sql/default/postgres/scratchpad.sql.txt +12 -0
- package/sql-server-changes.txt +88 -0
- package/src/commands/fixtures/fixtures-setup.command.ts +44 -0
- package/src/commands/fixtures/fixtures-tear-down.command.ts +45 -0
- package/src/commands/mcp.command.ts +215 -0
- package/src/commands/refresh-model.command.ts +39 -5
- package/src/commands/remove-fields.command.ts +1 -1
- package/src/commands/seed.command.ts +34 -15
- package/src/constants/error-messages.ts +7 -1
- package/src/controllers/authentication.controller.ts +1 -1
- package/src/controllers/email-template.controller.ts +1 -1
- package/src/controllers/field-metadata.controller.ts +7 -1
- package/src/controllers/media-storage-provider-metadata.controller.ts +1 -1
- package/src/controllers/model-metadata.controller.ts +1 -1
- package/src/controllers/model-sequence.controller.ts +93 -0
- package/src/controllers/module-metadata.controller.ts +1 -1
- package/src/controllers/otp-authentication.controller.ts +1 -1
- package/src/controllers/service.controller.ts +1 -1
- package/src/controllers/setting.controller.ts +33 -21
- package/src/controllers/sms-template.controller.ts +1 -1
- package/src/controllers/test-queue.controller.ts +1 -1
- package/src/controllers/test.controller.ts +1 -1
- package/src/dtos/basic-filters.dto.ts +6 -1
- package/src/dtos/basic-group-filters.dto.ts +23 -0
- package/src/dtos/create-ai-interaction.dto.ts +16 -9
- package/src/dtos/create-field-metadata.dto.ts +43 -13
- package/src/dtos/create-import-transaction.dto.ts +0 -4
- package/src/dtos/create-model-metadata.dto.ts +10 -0
- package/src/dtos/create-model-sequence.dto.ts +51 -0
- package/src/dtos/create-role-metadata.dto.ts +23 -4
- package/src/dtos/get-mcp-url.dto.ts +13 -0
- package/src/dtos/resolve-s3-url.dto.ts +31 -0
- package/src/dtos/update-ai-interaction.dto.ts +16 -9
- package/src/dtos/update-field-metadata.dto.ts +1 -2
- package/src/dtos/update-import-transaction.dto.ts +0 -4
- package/src/dtos/update-model-sequence.dto.ts +53 -0
- package/src/entities/action-metadata.entity.ts +4 -4
- package/src/entities/ai-interaction.entity.ts +16 -12
- package/src/entities/chatter-message-details.entity.ts +18 -18
- package/src/entities/chatter-message.entity.ts +2 -2
- package/src/entities/common.entity.ts +20 -11
- package/src/entities/dashboard-question-sql-dataset-config.entity.ts +2 -2
- package/src/entities/dashboard-question.entity.ts +3 -3
- package/src/entities/dashboard-variable.entity.ts +3 -3
- package/src/entities/dashboard.entity.ts +1 -1
- package/src/entities/email-template.entity.ts +4 -3
- package/src/entities/export-template.entity.ts +2 -2
- package/src/entities/export-transaction.entity.ts +2 -2
- package/src/entities/field-metadata.entity.ts +6 -3
- package/src/entities/import-transaction-error-log.entity.ts +2 -2
- package/src/entities/import-transaction.entity.ts +2 -5
- package/src/entities/legacy-common-with-id.entity.ts +11 -0
- package/src/entities/legacy-common.entity.ts +58 -0
- package/src/entities/list-of-values.entity.ts +2 -2
- package/src/entities/locale.entity.ts +1 -1
- package/src/entities/media.entity.ts +25 -25
- package/src/entities/menu-item-metadata.entity.ts +4 -4
- package/src/entities/model-metadata.entity.ts +9 -2
- package/src/entities/model-sequence.entity.ts +32 -0
- package/src/entities/mq-message-queue.entity.ts +1 -1
- package/src/entities/mq-message.entity.ts +34 -34
- package/src/entities/saved-filters.entity.ts +5 -5
- package/src/entities/scheduled-job.entity.ts +4 -4
- package/src/entities/security-rule.entity.ts +2 -2
- package/src/entities/setting.entity.ts +2 -2
- package/src/entities/sms-template.entity.ts +2 -2
- package/src/entities/user-activity-history.entity.ts +14 -14
- package/src/entities/user-view-metadata.entity.ts +2 -2
- package/src/entities/user.entity.ts +15 -15
- package/src/entities/view-metadata.entity.ts +3 -3
- package/src/helpers/date.helper.ts +31 -10
- 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 +67 -34
- package/src/helpers/module-metadata-helper.service.ts +18 -1
- package/src/helpers/module.helper.ts +37 -1
- package/src/helpers/schematic.service.ts +72 -46
- package/src/helpers/solid-registry.ts +28 -2
- package/src/helpers/typeorm-db-helper.ts +26 -0
- package/src/index.ts +7 -2
- package/src/interfaces.ts +3 -0
- package/src/jobs/computed-field-evaluation-subscriber.service.ts +15 -4
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
- 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 +176 -58
- package/src/seeders/seed-data/solid-core-metadata.json +555 -654
- package/src/seeders/system-fields-seeder.service.ts +39 -36
- package/src/services/action-metadata.service.ts +3 -2
- package/src/services/ai-interaction.service.ts +3 -2
- package/src/services/authentication.service.ts +46 -14
- 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 +17 -12
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +86 -0
- package/src/services/crud-helper.service.ts +319 -53
- package/src/services/crud.service.ts +233 -34
- 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 +146 -3
- package/src/services/field-metadata.service.ts +322 -70
- 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 +87 -52
- package/src/services/model-metadata.service.ts +68 -47
- package/src/services/model-sequence.service.ts +33 -0
- package/src/services/module-metadata.service.ts +49 -2
- package/src/services/mq-message.service.ts +16 -15
- package/src/services/permission-metadata.service.ts +8 -9
- package/src/services/queues/database-subscriber.service.ts +3 -1
- package/src/services/queues/publisher-factory.service.ts +2 -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/{providers → services/selection-providers}/list-of-values-selection-providers.service.ts +2 -2
- package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +94 -0
- package/src/services/setting.service.ts +46 -16
- package/src/services/sms-template.service.ts +11 -13
- package/src/services/solid-introspect.service.ts +97 -10
- 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 +52 -21
- package/src/solid-core-cli-db.module.ts +5 -4
- package/src/solid-core.module.ts +23 -1
- package/src/subscribers/audit.subscriber.ts +14 -9
- package/src/subscribers/computed-entity-field.subscriber.ts +71 -22
- package/src/subscribers/created-by-updated-by.subscriber.ts +14 -8
- package/src/subscribers/field-metadata.subscriber.ts +1 -1
- package/src/subscribers/model-metadata.subscriber.ts +4 -2
- package/src/subscribers/soft-delete-aware-event.subscriber.ts +12 -6
- package/src/transformers/typeorm/local-date-time-transformer.ts +30 -0
- package/dist/providers/list-of-values-selection-providers.service.d.ts.map +0 -1
- package/dist/providers/list-of-values-selection-providers.service.js.map +0 -1
- package/src/commands/ingest-rag-chunking-strategy-for.md +0 -224
- package/src/entities/user.entity.ts.bkp +0 -144
- package/src/services/docker exec -it mssql //" +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { CRUDService } from './crud.service';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\nimport { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';\nimport { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';\nimport { IS_MAIL_PROVIDER } from 'src/decorators/mail-provider.decorator';\nimport { IS_WA_PROVIDER } from 'src/decorators/whatsapp-provider.decorator';\nimport { IS_ERROR_CODE_PROVIDER } from 'src/decorators/error-codes-provider.decorator';\nimport { IS_SECURITY_RULE_CONFIG_PROVIDER } from 'src/decorators/security-rule-config-provider.decorator';\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n onApplicationBootstrap() {\n this.logger.log('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all IErrorCodeProvider implementations\n const errorCodeProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isErrorCodeProvider(provider));\n\n errorCodeProviders.forEach((errorCodeProvider) => {\n this.solidRegistry.registerErrorCodeProvider(errorCodeProvider);\n });\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardVariableSelectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardVariableSelectionProvider(provider));\n\n dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {\n this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardQuestionDataProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardQuestionDataProvider(provider));\n\n dashboardQuestionDataProviders.forEach((provider) => {\n this.solidRegistry.registerDashboardQuestionDataProvider(provider);\n });\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n // Register all IMail implementations\n const mailProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isMailProvider(provider));\n\n mailProviders.forEach((mailProvider) => {\n this.solidRegistry.registerMailProvider(mailProvider);\n });\n\n // Register all IWhatsappTransport implementations\n const whatsappProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isWhatsappProvider(provider));\n\n whatsappProviders.forEach((whatsappProvider) => {\n this.solidRegistry.registerWhatsappProvider(whatsappProvider);\n });\n\n // Register all ISecurityRuleConfigProvider implementations\n const securityRuleConfigProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSecurityRuleConfigProvider(provider));\n\n securityRuleConfigProviders.forEach((securityRuleConfigProvider) => {\n this.solidRegistry.registerSecurityRuleConfigProvider(securityRuleConfigProvider);\n });\n }\n\n isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {\n const { instance } = providerWrapper;\n if (!instance) return false;\n const provider = this.reflector.get<boolean>(\n IS_DASHBOARD_QUESTION_DATA_PROVIDER,\n instance.constructor,\n );\n return !!provider;\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isErrorCodeProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isErrorCodeProvider = this.reflector.get<boolean>(\n IS_ERROR_CODE_PROVIDER,\n instance.constructor,\n );\n\n return !!isErrorCodeProvider;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isDashboardVariableSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n const isDashboardSelectionProvider = this.reflector.get<boolean>(\n IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER,\n instance.constructor,\n );\n return !!isDashboardSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isMailProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isMailProvider = this.reflector.get<boolean>(\n IS_MAIL_PROVIDER,\n instance.constructor,\n );\n\n return !!isMailProvider;\n }\n\n private isWhatsappProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isWhatsappProvider = this.reflector.get<boolean>(\n IS_WA_PROVIDER,\n instance.constructor,\n );\n\n return !!isWhatsappProvider;\n }\n\n private isSecurityRuleConfigProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSecurityRuleConfigProvider = this.reflector.get<boolean>(\n IS_SECURITY_RULE_CONFIG_PROVIDER,\n instance.constructor,\n );\n\n return !!isSecurityRuleConfigProvider;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, ModuleRef, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { getDataSourceToken } from '@nestjs/typeorm';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';\nimport { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';\nimport { IS_ERROR_CODE_PROVIDER } from 'src/decorators/error-codes-provider.decorator';\nimport { IS_MAIL_PROVIDER } from 'src/decorators/mail-provider.decorator';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\nimport { IS_SECURITY_RULE_CONFIG_PROVIDER } from 'src/decorators/security-rule-config-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { IS_WA_PROVIDER } from 'src/decorators/whatsapp-provider.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { AuditSubscriber } from 'src/subscribers/audit.subscriber';\nimport { ComputedEntityFieldSubscriber } from 'src/subscribers/computed-entity-field.subscriber';\nimport { CreatedByUpdatedBySubscriber } from 'src/subscribers/created-by-updated-by.subscriber';\nimport { SoftDeleteAwareEventSubscriber } from 'src/subscribers/soft-delete-aware-event.subscriber';\nimport { DataSource } from 'typeorm';\nimport { CRUDService } from './crud.service';\n\nexport const coreSubscriberClasses = [\n AuditSubscriber,\n ComputedEntityFieldSubscriber,\n CreatedByUpdatedBySubscriber,\n SoftDeleteAwareEventSubscriber\n];\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n private readonly moduleRef: ModuleRef,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n async onApplicationBootstrap() {\n this.logger.debug('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all IErrorCodeProvider implementations\n const errorCodeProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isErrorCodeProvider(provider));\n\n errorCodeProviders.forEach((errorCodeProvider) => {\n this.solidRegistry.registerErrorCodeProvider(errorCodeProvider);\n });\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardVariableSelectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardVariableSelectionProvider(provider));\n\n dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {\n this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardQuestionDataProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardQuestionDataProvider(provider));\n\n dashboardQuestionDataProviders.forEach((provider) => {\n this.solidRegistry.registerDashboardQuestionDataProvider(provider);\n });\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n // Register all IMail implementations\n const mailProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isMailProvider(provider));\n\n mailProviders.forEach((mailProvider) => {\n this.solidRegistry.registerMailProvider(mailProvider);\n });\n\n // Register all IWhatsappTransport implementations\n const whatsappProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isWhatsappProvider(provider));\n\n whatsappProviders.forEach((whatsappProvider) => {\n this.solidRegistry.registerWhatsappProvider(whatsappProvider);\n });\n\n // Register all ISecurityRuleConfigProvider implementations\n const securityRuleConfigProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSecurityRuleConfigProvider(provider));\n\n securityRuleConfigProviders.forEach((securityRuleConfigProvider) => {\n this.solidRegistry.registerSecurityRuleConfigProvider(securityRuleConfigProvider);\n });\n\n // Register the core subscribers against all the configured database modules / datasources\n await this.bootstrapCoreTypeOrmSubscribers(solidDatabaseModules)\n }\n\n async bootstrapCoreTypeOrmSubscribers(dbModules: Array<InstanceWrapper<any>>): Promise<void> {\n // Register core subscribers for each Solid database module\n for (const wrapper of dbModules) {\n // Get the Database Module instance\n const instance = (wrapper as InstanceWrapper).instance as any;\n if (!instance || typeof instance.name !== 'function') {\n this.logger.warn('Skipping a solid DB module wrapper with no instance or name() method');\n continue;\n }\n\n // Get the DataSource for this module\n const dsName: string | undefined = instance.name();\n // getDataSourceToken() without name = default; pass dsName if non-default\n const token = dsName ? getDataSourceToken(dsName) : getDataSourceToken();\n let ds: DataSource | undefined;\n try {\n ds = this.moduleRef.get<DataSource>(token, { strict: false });\n } catch (err) {\n this.logger.warn(`DataSource token for \"${dsName ?? 'default'}\" not found: ${err?.message ?? err}`);\n }\n if (!ds) {\n this.logger.warn(`No DataSource found for module \"${dsName}\". Skipping subscriber registration.`);\n continue;\n }\n\n // Ensure DataSource is initialized (optional)\n if (!ds.isInitialized) {\n try {\n await ds.initialize(); // only if you need to initialize here; in many apps datasources are created earlier\n } catch (err) {\n this.logger.error(`Failed to initialize DataSource \"${dsName}\": ${err}`);\n continue;\n }\n }\n\n // Register each subscriber class for this DataSource\n // const auditSubscriberInstance = new AuditSubscriber(this.chatterMessageService, this.modelMetadataRepo, this.modelMetadataHelperService);\n // auditSubscriberInstance.bindToDataSource(ds);\n\n // const computedEntityFieldSubscriberInstance = new ComputedEntityFieldSubscriber(this.solidRegistry, this.publisherFactory);\n // computedEntityFieldSubscriberInstance.bindToDataSource(ds);\n\n // const createdByUpdatedBySubscriberInstance = new CreatedByUpdatedBySubscriber(this.requestContextService);\n // createdByUpdatedBySubscriberInstance.bindToDataSource(ds);\n\n // const softDeleteAwareEventSubscriberInstance = new SoftDeleteAwareEventSubscriber();\n // softDeleteAwareEventSubscriberInstance.bindToDataSource(ds);\n for (const SubClass of coreSubscriberClasses) {\n const alreadyRegistered = ds.subscribers.some(\n (s) => (s as any).constructor?.name === SubClass.name,\n );\n if (alreadyRegistered) {\n this.logger.debug(`Subscriber ${SubClass.name} already registered on datasource ${dsName ?? 'default'}`);\n continue;\n }\n\n // Resolve subscriber from NestJS moduleRef to ensure dependencies are injected\n const subscriberInstance = await this.moduleRef.resolve(SubClass, undefined, { strict: false });\n subscriberInstance.bindToDataSource(ds);\n\n // instantiate subscriber bound to this DataSource\n // NOTE: constructor signature must be (dataSource: DataSource, requestContextService: RequestContextService, ...)\n // const subscriberInstance = new (SubClass as any)(ds, this.requestContextService);\n\n // ds.subscribers.push(subscriberInstance);\n // this.logger.log(`Registered subscriber ${SubClass.name} on datasource ${dsName ?? 'default'}`);\n }\n }\n }\n\n isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {\n const { instance } = providerWrapper;\n if (!instance) return false;\n const provider = this.reflector.get<boolean>(\n IS_DASHBOARD_QUESTION_DATA_PROVIDER,\n instance.constructor,\n );\n return !!provider;\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isErrorCodeProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isErrorCodeProvider = this.reflector.get<boolean>(\n IS_ERROR_CODE_PROVIDER,\n instance.constructor,\n );\n\n return !!isErrorCodeProvider;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isDashboardVariableSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n const isDashboardSelectionProvider = this.reflector.get<boolean>(\n IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER,\n instance.constructor,\n );\n return !!isDashboardSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isMailProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isMailProvider = this.reflector.get<boolean>(\n IS_MAIL_PROVIDER,\n instance.constructor,\n );\n\n return !!isMailProvider;\n }\n\n private isWhatsappProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isWhatsappProvider = this.reflector.get<boolean>(\n IS_WA_PROVIDER,\n instance.constructor,\n );\n\n return !!isWhatsappProvider;\n }\n\n private isSecurityRuleConfigProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSecurityRuleConfigProvider = this.reflector.get<boolean>(\n IS_SECURITY_RULE_CONFIG_PROVIDER,\n instance.constructor,\n );\n\n return !!isSecurityRuleConfigProvider;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
|
|
@@ -34,8 +34,8 @@ let SolidTsMorphService = SolidTsMorphService_1 = class SolidTsMorphService {
|
|
|
34
34
|
insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,
|
|
35
35
|
},
|
|
36
36
|
});
|
|
37
|
-
this.logger.
|
|
38
|
-
Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.
|
|
37
|
+
this.logger.debug(`SolidTsMorphService repoRoot = ${this.repoRoot}`);
|
|
38
|
+
Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.debug(`workspace '${k}' => ${v}`));
|
|
39
39
|
}
|
|
40
40
|
discoverRepoRoot() {
|
|
41
41
|
const envRoot = process.env.SOLID_REPO_ROOT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-ts-morph.service.js","sourceRoot":"","sources":["../../src/services/solid-ts-morph.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,2CAAoD;AACpD,yCAA2E;AAC3E,qCAA6E;AAC7E,uCAAsH;AAa/G,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAc5B;QAbiB,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;QAIvD,UAAK,GAAG,KAAK,CAAC;QACd,iBAAY,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC1E,qBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QASzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG;YAChB,WAAW,EAAE,IAAA,gBAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC7C,UAAU,EAAE,IAAA,gBAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;SAE9C,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;YACvB,2BAA2B,EAAE,IAAI;YACjC,oBAAoB,EAAE;gBAClB,SAAS,EAAE,oBAAS,CAAC,MAAM;gBAC3B,eAAe,EAAE,0BAAe,CAAC,UAAU;gBAC3C,qDAAqD,EAAE,IAAI;aAC9D;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAGO,gBAAgB;QAIpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC5C,IAAI,OAAO,IAAI,IAAA,sBAAU,EAAC,OAAO,CAAC;YAAE,OAAO,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;QAG9D,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9C,OAAO,IAAA,qBAAS,EAAC,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;QAGD,OAAO,GAAG,CAAC;IACf,CAAC;IAGO,eAAe,CAAC,OAAe;QACnC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,IAAA,sBAAU,EAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAG5B,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3E,OAAO,IAAA,qBAAS,EAAC,IAAA,gBAAI,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAGD,OAAO,IAAA,qBAAS,EAAC,IAAA,gBAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,GAAG,CAAC,GAAW;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAGD,KAAK;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACpF,OAAO;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;YACvB,2BAA2B,EAAE,IAAI;YACjC,oBAAoB,EAAE;gBAClB,SAAS,EAAE,oBAAS,CAAC,MAAM;gBAC3B,eAAe,EAAE,0BAAe,CAAC,UAAU;gBAC3C,qDAAqD,EAAE,IAAI;aAC9D;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;YACvB,2BAA2B,EAAE,IAAI;YACjC,oBAAoB,EAAE;gBAClB,SAAS,EAAE,oBAAS,CAAC,MAAM;gBAC3B,eAAe,EAAE,0BAAe,CAAC,UAAU;gBAC3C,qDAAqD,EAAE,IAAI;aAC9D;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACtE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QAGf,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACtE,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;gBAAE,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACJ,IAAA,uBAAa,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpC,MAAM,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC;QACL,CAAC;QAGD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,EAAE,CAAC,iBAAiB,EAAE,CAAC;YACvB,EAAE,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QAGD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAO,CAAC;YACvB,2BAA2B,EAAE,IAAI;YACjC,oBAAoB,EAAE;gBAClB,SAAS,EAAE,oBAAS,CAAC,MAAM;gBAC3B,eAAe,EAAE,0BAAe,CAAC,UAAU;gBAC3C,qDAAqD,EAAE,IAAI;aAC9D;SACJ,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAGD,aAAa,CAAC,IAAY,EAAE,OAAe,EAAE,SAAS,GAAG,KAAK;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;gBAAE,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC;YACnF,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAAE,IAAA,mBAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAA,oBAAU,EAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,IAAA,uBAAa,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAU,EAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,UAAU,IAAI,EAAE,CAAC,CAAC;QAC3F,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,oBAAoB,CAChB,UAAkB,EAClB,iBAAyB,EACzB,UAAkB,EAClB,UAAyB,EACzB,WAAW,GAAG,IAAI;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;QAEtG,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ;YACvB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAGzF,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,KAAK,UAAU,CAAC,CAAC;QACrG,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,iBAAiB,CAAC,CAAC;YACjF,IAAI,CAAC,GAAG;gBAAE,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,UAAU,CAAC,oBAAoB,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACxG,CAAC;QAGD,MAAM,eAAe,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACvD,GAAG,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAC9D,CAAC;QACF,IAAI,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,EAAE,CAAC,CAAC;QAEzG,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,SAAU,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,IAA+B,CAAC;QAE7C,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,GAAuC,CAAC;YAC5C,IAAI,eAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBACnC,IAAI,IAAI,IAAI,eAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;oBAAE,GAAG,GAAG,IAAI,CAAC;YAChE,CAAC;YACD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,uBAAuB,UAAU,EAAE,CAAC,CAAC;YAEzG,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAC;YACnG,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW;gBAAE,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QACnE,CAAC,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,UAAU;YAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAGD,wBAAwB,CACpB,QAAgB,EAChB,SAAiB,EACjB,UAAkB,EAClB,UAAkB;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;QAE/E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ;YACvB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW;YACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QAE7F,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YAEjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,UAAU,oBAAoB,CAAC,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAED,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAGlC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,UAAU,cAAc,SAAS,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,wBAAwB,CACpB,QAAgB,EAChB,SAAiB;QAEjB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;QAE/E,MAAM,WAAW,GAAG,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAG9C,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;YACtE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAGD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;QAG1E,IAAA,uBAAa,EAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IAED,SAAS,CACL,QAAgB,EAChB,UAAkB;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;QAEhE,IAAI,WAAW,GAAG,IAAA,sBAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAG5C,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;YACzE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;QAGD,MAAM,WAAW,GAAG,wBAAwB,CAAC;QAC7C,IAAI,eAAuC,CAAC;QAC5C,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC;QAEzB,OAAO,CAAC,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAChE,eAAe,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACxE,CAAC;QAGD,IAAI,UAAkB,CAAC;QACvB,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,UAAU;gBACN,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;oBACrC,IAAI;oBACJ,UAAU,CAAC,IAAI,EAAE;oBACjB,IAAI;oBACJ,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YAEJ,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC;QAC1D,CAAC;QAED,IAAA,uBAAa,EAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEvC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;CAIJ,CAAA;AArWY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;;GACA,mBAAmB,CAqW/B","sourcesContent":["// src/ai/services/solid-ts-morph.service.ts\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport { join, dirname, normalize, isAbsolute, basename } from \"node:path\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { Project, Node, ObjectLiteralExpression, ArrayLiteralExpression, QuoteKind, IndentationText } from \"ts-morph\";\nimport { MethodDeclarationStructure, StructureKind } from \"ts-morph\";\n\ntype Bucket = \"providers\" | \"exports\";\n\n// interface SolidTsMorphOptions {\n// /** Absolute path to monorepo root. Defaults to auto-detect or ENV. */\n// repoRoot?: string;\n// /** Map of workspace prefixes to absolute directories. Defaults for solid-api / solid-ui. */\n// workspaceMap?: Record<string, string>;\n// }\n\n@Injectable()\nexport class SolidTsMorphService {\n private readonly logger = new Logger(SolidTsMorphService.name);\n private project: Project;\n\n // transaction state\n private inTxn = false;\n private stagedWrites = new Map<string, { content: string; overwrite: boolean }>(); // absPath -> write\n private dirtySourceFiles = new Set<string>(); // absPath\n\n // path roots\n private readonly repoRoot: string;\n private readonly workspaceMap: Record<string, string>;\n\n // constructor(opts: SolidTsMorphOptions = {}) {\n constructor() {\n // this.repoRoot = this.discoverRepoRoot(opts.repoRoot);\n this.repoRoot = this.discoverRepoRoot();\n this.workspaceMap = {\n \"solid-api\": join(this.repoRoot, \"solid-api\"),\n \"solid-ui\": join(this.repoRoot, \"solid-ui\"),\n // ...(opts.workspaceMap ?? {}),\n };\n\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n\n this.logger.log(`SolidTsMorphService repoRoot = ${this.repoRoot}`);\n Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.log(`workspace '${k}' => ${v}`));\n }\n\n // ---- repo-root discovery ----\n private discoverRepoRoot(): string {\n // if (input && isAbsolute(input)) return normalize(input);\n\n // ENV override\n const envRoot = process.env.SOLID_REPO_ROOT;\n if (envRoot && isAbsolute(envRoot)) return normalize(envRoot);\n\n // Auto-detect: if current cwd is a workspace (solid-api/solid-ui), then repoRoot = parent(cwd)\n const cwd = normalize(process.cwd());\n const base = basename(cwd);\n if (base === \"solid-api\" || base === \"solid-ui\") {\n return normalize(dirname(cwd));\n }\n\n // Otherwise assume cwd itself is the repo root\n return cwd;\n }\n\n /** Resolve a repo-relative path with optional workspace prefix (e.g. 'solid-api/...', 'solid-ui/...'). */\n private resolveRepoPath(relPath: string): string {\n if (!relPath) throw new Error(\"resolveRepoPath: empty path\");\n const p = normalize(relPath);\n\n if (isAbsolute(p)) return p;\n\n // Prefix-aware mapping: 'solid-api/...', 'solid-ui/...'\n for (const [prefix, root] of Object.entries(this.workspaceMap)) {\n if (p === prefix || p.startsWith(prefix + \"/\") || p.startsWith(prefix + \"\\\\\")) {\n const suffix = p.slice(prefix.length + (p.length > prefix.length ? 1 : 0));\n return normalize(join(root, suffix));\n }\n }\n\n // Default: treat as repo-root relative\n return normalize(join(this.repoRoot, p));\n }\n\n private rel(abs: string): string {\n const root = this.repoRoot.replace(/\\\\/g, \"/\");\n return abs.replace(/\\\\/g, \"/\").replace(root + \"/\", \"\");\n }\n\n // ---- transaction API ----\n begin(): void {\n if (this.inTxn) {\n this.logger.warn(\"begin(): already in a transaction; reusing current transaction.\");\n return;\n }\n this.inTxn = true;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n this.logger.log(\"Transaction started.\");\n }\n\n rollback(): void {\n if (!this.inTxn) return;\n this.inTxn = false;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n this.logger.log(\"Transaction rolled back.\");\n }\n\n async commit(): Promise<{ wrote: number }> {\n if (!this.inTxn) {\n this.logger.log(\"commit(): not in a transaction; nothing to commit.\");\n return { wrote: 0 };\n }\n\n let writes = 0;\n\n // 1) write staged new/overwritten files\n for (const [abs, { content, overwrite }] of this.stagedWrites.entries()) {\n const dir = dirname(abs);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n if (existsSync(abs) && !overwrite) {\n this.logger.log(`createNewFile (staged): skipped (exists) ${this.rel(abs)}`);\n } else {\n writeFileSync(abs, content, \"utf8\");\n writes++;\n this.logger.log(`${existsSync(abs) && overwrite ? \"Overwrote\" : \"Created\"} file: ${this.rel(abs)}`);\n }\n }\n\n // 2) save all mutated module files once\n for (const abs of this.dirtySourceFiles.values()) {\n const sf = this.project.getSourceFile(abs);\n if (!sf) continue;\n sf.fixMissingImports();\n sf.organizeImports();\n await sf.save();\n writes++;\n this.logger.log(`Updated module: ${this.rel(abs)}`);\n }\n\n // end txn\n this.inTxn = false;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n\n return { wrote: writes };\n }\n\n // ---- operations ----\n createNewFile(path: string, content: string, overwrite = false): { createdOrStaged: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(path);\n const dir = dirname(abs);\n\n if (this.inTxn) {\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n this.stagedWrites.set(abs, { content, overwrite });\n this.logger.log(`Staged createNewFile: ${this.rel(abs)} (overwrite=${overwrite})`);\n return { createdOrStaged: true, skipped: false };\n }\n\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n if (existsSync(abs) && !overwrite) {\n this.logger.log(`createNewFile: skipped (exists): ${path}`);\n return { createdOrStaged: false, skipped: true };\n }\n writeFileSync(abs, content, \"utf8\");\n this.logger.log(`${existsSync(abs) && overwrite ? \"Overwrote\" : \"Created\"} file: ${path}`);\n return { createdOrStaged: true, skipped: false };\n }\n\n registerNestProvider(\n modulePath: string,\n providerClassName: string,\n importFrom: string,\n registerIn: Array<Bucket>,\n uniqueGuard = true\n ): { staged: boolean } {\n const abs = this.resolveRepoPath(modulePath);\n if (!existsSync(abs)) throw new Error(`registerNestProvider: module file not found at ${modulePath}`);\n\n const existing = this.project.getSourceFile(abs);\n const sourceFile = existing\n ? existing\n : this.project.createSourceFile(abs, readFileSync(abs, \"utf8\"), { overwrite: true });\n\n // ensure import\n const imp = sourceFile.getImportDeclarations().find(d => d.getModuleSpecifierValue() === importFrom);\n if (imp) {\n const has = imp.getNamedImports().some(ni => ni.getName() === providerClassName);\n if (!has) imp.addNamedImport(providerClassName);\n } else {\n sourceFile.addImportDeclaration({ moduleSpecifier: importFrom, namedImports: [providerClassName] });\n }\n\n // mutate @Module metadata\n const nestModuleClass = sourceFile.getClasses().find(cls =>\n cls.getDecorators().some(dec => dec.getName() === \"Module\")\n );\n if (!nestModuleClass) throw new Error(`registerNestProvider: No @Module() class found in ${modulePath}`);\n\n const moduleDec = nestModuleClass.getDecorators().find(dec => dec.getName() === \"Module\");\n const callExpr = moduleDec!.getCallExpression();\n const arg0 = callExpr?.getArguments()[0];\n if (!arg0 || !Node.isObjectLiteralExpression(arg0)) {\n throw new Error(`registerNestProvider: Malformed @Module() in ${modulePath}`);\n }\n const meta = arg0 as ObjectLiteralExpression;\n\n const ensureInArray = (propName: Bucket) => {\n let prop = meta.getProperty(propName);\n if (!prop) {\n meta.addPropertyAssignment({ name: propName, initializer: \"[]\" });\n prop = meta.getProperty(propName);\n }\n let arr: ArrayLiteralExpression | undefined;\n if (Node.isPropertyAssignment(prop)) {\n const init = prop.getInitializer();\n if (init && Node.isArrayLiteralExpression(init)) arr = init;\n }\n if (!arr) throw new Error(`registerNestProvider: Property ${propName} is not an array in ${modulePath}`);\n\n const exists = arr.getElements().some(el => el.getText().replace(/\\s/g, \"\") === providerClassName);\n if (!exists || !uniqueGuard) arr.addElement(providerClassName);\n };\n\n for (const bucket of registerIn) ensureInArray(bucket);\n\n this.dirtySourceFiles.add(abs); // defer save to commit()\n this.logger.log(`Staged provider registration in: ${this.rel(abs)} (${registerIn.join(\", \")})`);\n return { staged: true };\n }\n\n\n addMethodToExistingClass(\n filePath: string,\n className: string,\n methodName: string,\n methodCode: string,\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`addMethodToExistingClass: File not found at ${filePath}`);\n\n const existing = this.project.getSourceFile(abs);\n const sourceFile = existing\n ? existing\n : this.project.createSourceFile(abs, readFileSync(abs, \"utf8\"), { overwrite: true });\n\n const targetClass = sourceFile.getClass(className);\n if (!targetClass)\n throw new Error(`addMethodToExistingClass: Class ${className} not found in ${filePath}`);\n\n const existingMethod = targetClass.getMethod(methodName);\n if (existingMethod) {\n\n this.logger.log(`Skipped adding method '${methodName}' (already exists)`);\n return { staged: false, overwritten: false, skipped: true };\n }\n // Add the LLM-generated method directly\n targetClass.addMember(methodCode);\n\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged method '${methodName}' in class ${className} at ${this.rel(abs)}`);\n return { staged: true, overwritten: !!existingMethod, skipped: false };\n }\n\n registerSolidUiExtension(\n filePath: string,\n lineToAdd: string\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`registerSolidUiExtension: File not found at ${filePath}`);\n\n const fileContent = readFileSync(abs, \"utf8\");\n\n // Check if the line already exists (avoid duplicates)\n if (fileContent.includes(lineToAdd.trim())) {\n this.logger.log(`Skipped adding line (already exists): ${lineToAdd}`);\n return { staged: false, overwritten: false, skipped: true };\n }\n\n // Append the new line at the end, ensuring newline\n const newContent = fileContent.trimEnd() + \"\\n\" + lineToAdd.trim() + \"\\n\";\n\n // Write updated content back\n writeFileSync(abs, newContent, \"utf8\");\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged new line in ${this.rel(abs)}: ${lineToAdd}`);\n return { staged: true, overwritten: false, skipped: false };\n }\n\n addImport(\n filePath: string,\n importLine: string\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`addImport: File not found at ${filePath}`);\n\n let fileContent = readFileSync(abs, \"utf8\");\n\n // If import already exists — skip\n if (fileContent.includes(importLine.trim())) {\n this.logger.log(`Skipped adding import (already exists): ${importLine}`);\n return { staged: false, overwritten: false, skipped: true };\n }\n\n // Find last import statement (so we can insert after all imports)\n const importRegex = /^import .+ from .+;$/gm;\n let lastImportMatch: RegExpExecArray | null;\n let lastImportIndex = -1;\n\n while ((lastImportMatch = importRegex.exec(fileContent)) !== null) {\n lastImportIndex = lastImportMatch.index + lastImportMatch[0].length;\n }\n\n // Insert after last import (or at top if none exist)\n let newContent: string;\n if (lastImportIndex !== -1) {\n newContent =\n fileContent.slice(0, lastImportIndex) +\n \"\\n\" +\n importLine.trim() +\n \"\\n\" +\n fileContent.slice(lastImportIndex);\n } else {\n // No imports found — insert at top\n newContent = importLine.trim() + \"\\n\\n\" + fileContent;\n }\n\n writeFileSync(abs, newContent, \"utf8\");\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged import in ${this.rel(abs)}: ${importLine}`);\n return { staged: true, overwritten: false, skipped: false };\n }\n\n\n\n}"]}
|
|
1
|
+
{"version":3,"file":"solid-ts-morph.service.js","sourceRoot":"","sources":["../../src/services/solid-ts-morph.service.ts"],"names":[],"mappings":"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","sourcesContent":["// src/ai/services/solid-ts-morph.service.ts\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport { join, dirname, normalize, isAbsolute, basename } from \"node:path\";\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { Project, Node, ObjectLiteralExpression, ArrayLiteralExpression, QuoteKind, IndentationText } from \"ts-morph\";\nimport { MethodDeclarationStructure, StructureKind } from \"ts-morph\";\n\ntype Bucket = \"providers\" | \"exports\";\n\n// interface SolidTsMorphOptions {\n// /** Absolute path to monorepo root. Defaults to auto-detect or ENV. */\n// repoRoot?: string;\n// /** Map of workspace prefixes to absolute directories. Defaults for solid-api / solid-ui. */\n// workspaceMap?: Record<string, string>;\n// }\n\n@Injectable()\nexport class SolidTsMorphService {\n private readonly logger = new Logger(SolidTsMorphService.name);\n private project: Project;\n\n // transaction state\n private inTxn = false;\n private stagedWrites = new Map<string, { content: string; overwrite: boolean }>(); // absPath -> write\n private dirtySourceFiles = new Set<string>(); // absPath\n\n // path roots\n private readonly repoRoot: string;\n private readonly workspaceMap: Record<string, string>;\n\n // constructor(opts: SolidTsMorphOptions = {}) {\n constructor() {\n // this.repoRoot = this.discoverRepoRoot(opts.repoRoot);\n this.repoRoot = this.discoverRepoRoot();\n this.workspaceMap = {\n \"solid-api\": join(this.repoRoot, \"solid-api\"),\n \"solid-ui\": join(this.repoRoot, \"solid-ui\"),\n // ...(opts.workspaceMap ?? {}),\n };\n\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n\n this.logger.debug(`SolidTsMorphService repoRoot = ${this.repoRoot}`);\n Object.entries(this.workspaceMap).forEach(([k, v]) => this.logger.debug(`workspace '${k}' => ${v}`));\n }\n\n // ---- repo-root discovery ----\n private discoverRepoRoot(): string {\n // if (input && isAbsolute(input)) return normalize(input);\n\n // ENV override\n const envRoot = process.env.SOLID_REPO_ROOT;\n if (envRoot && isAbsolute(envRoot)) return normalize(envRoot);\n\n // Auto-detect: if current cwd is a workspace (solid-api/solid-ui), then repoRoot = parent(cwd)\n const cwd = normalize(process.cwd());\n const base = basename(cwd);\n if (base === \"solid-api\" || base === \"solid-ui\") {\n return normalize(dirname(cwd));\n }\n\n // Otherwise assume cwd itself is the repo root\n return cwd;\n }\n\n /** Resolve a repo-relative path with optional workspace prefix (e.g. 'solid-api/...', 'solid-ui/...'). */\n private resolveRepoPath(relPath: string): string {\n if (!relPath) throw new Error(\"resolveRepoPath: empty path\");\n const p = normalize(relPath);\n\n if (isAbsolute(p)) return p;\n\n // Prefix-aware mapping: 'solid-api/...', 'solid-ui/...'\n for (const [prefix, root] of Object.entries(this.workspaceMap)) {\n if (p === prefix || p.startsWith(prefix + \"/\") || p.startsWith(prefix + \"\\\\\")) {\n const suffix = p.slice(prefix.length + (p.length > prefix.length ? 1 : 0));\n return normalize(join(root, suffix));\n }\n }\n\n // Default: treat as repo-root relative\n return normalize(join(this.repoRoot, p));\n }\n\n private rel(abs: string): string {\n const root = this.repoRoot.replace(/\\\\/g, \"/\");\n return abs.replace(/\\\\/g, \"/\").replace(root + \"/\", \"\");\n }\n\n // ---- transaction API ----\n begin(): void {\n if (this.inTxn) {\n this.logger.warn(\"begin(): already in a transaction; reusing current transaction.\");\n return;\n }\n this.inTxn = true;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n this.logger.log(\"Transaction started.\");\n }\n\n rollback(): void {\n if (!this.inTxn) return;\n this.inTxn = false;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n this.logger.log(\"Transaction rolled back.\");\n }\n\n async commit(): Promise<{ wrote: number }> {\n if (!this.inTxn) {\n this.logger.log(\"commit(): not in a transaction; nothing to commit.\");\n return { wrote: 0 };\n }\n\n let writes = 0;\n\n // 1) write staged new/overwritten files\n for (const [abs, { content, overwrite }] of this.stagedWrites.entries()) {\n const dir = dirname(abs);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n if (existsSync(abs) && !overwrite) {\n this.logger.log(`createNewFile (staged): skipped (exists) ${this.rel(abs)}`);\n } else {\n writeFileSync(abs, content, \"utf8\");\n writes++;\n this.logger.log(`${existsSync(abs) && overwrite ? \"Overwrote\" : \"Created\"} file: ${this.rel(abs)}`);\n }\n }\n\n // 2) save all mutated module files once\n for (const abs of this.dirtySourceFiles.values()) {\n const sf = this.project.getSourceFile(abs);\n if (!sf) continue;\n sf.fixMissingImports();\n sf.organizeImports();\n await sf.save();\n writes++;\n this.logger.log(`Updated module: ${this.rel(abs)}`);\n }\n\n // end txn\n this.inTxn = false;\n this.stagedWrites.clear();\n this.dirtySourceFiles.clear();\n this.project = new Project({\n skipAddingFilesFromTsConfig: true,\n manipulationSettings: {\n quoteKind: QuoteKind.Double,\n indentationText: IndentationText.FourSpaces,\n insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true,\n },\n });\n\n return { wrote: writes };\n }\n\n // ---- operations ----\n createNewFile(path: string, content: string, overwrite = false): { createdOrStaged: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(path);\n const dir = dirname(abs);\n\n if (this.inTxn) {\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n this.stagedWrites.set(abs, { content, overwrite });\n this.logger.log(`Staged createNewFile: ${this.rel(abs)} (overwrite=${overwrite})`);\n return { createdOrStaged: true, skipped: false };\n }\n\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n if (existsSync(abs) && !overwrite) {\n this.logger.log(`createNewFile: skipped (exists): ${path}`);\n return { createdOrStaged: false, skipped: true };\n }\n writeFileSync(abs, content, \"utf8\");\n this.logger.log(`${existsSync(abs) && overwrite ? \"Overwrote\" : \"Created\"} file: ${path}`);\n return { createdOrStaged: true, skipped: false };\n }\n\n registerNestProvider(\n modulePath: string,\n providerClassName: string,\n importFrom: string,\n registerIn: Array<Bucket>,\n uniqueGuard = true\n ): { staged: boolean } {\n const abs = this.resolveRepoPath(modulePath);\n if (!existsSync(abs)) throw new Error(`registerNestProvider: module file not found at ${modulePath}`);\n\n const existing = this.project.getSourceFile(abs);\n const sourceFile = existing\n ? existing\n : this.project.createSourceFile(abs, readFileSync(abs, \"utf8\"), { overwrite: true });\n\n // ensure import\n const imp = sourceFile.getImportDeclarations().find(d => d.getModuleSpecifierValue() === importFrom);\n if (imp) {\n const has = imp.getNamedImports().some(ni => ni.getName() === providerClassName);\n if (!has) imp.addNamedImport(providerClassName);\n } else {\n sourceFile.addImportDeclaration({ moduleSpecifier: importFrom, namedImports: [providerClassName] });\n }\n\n // mutate @Module metadata\n const nestModuleClass = sourceFile.getClasses().find(cls =>\n cls.getDecorators().some(dec => dec.getName() === \"Module\")\n );\n if (!nestModuleClass) throw new Error(`registerNestProvider: No @Module() class found in ${modulePath}`);\n\n const moduleDec = nestModuleClass.getDecorators().find(dec => dec.getName() === \"Module\");\n const callExpr = moduleDec!.getCallExpression();\n const arg0 = callExpr?.getArguments()[0];\n if (!arg0 || !Node.isObjectLiteralExpression(arg0)) {\n throw new Error(`registerNestProvider: Malformed @Module() in ${modulePath}`);\n }\n const meta = arg0 as ObjectLiteralExpression;\n\n const ensureInArray = (propName: Bucket) => {\n let prop = meta.getProperty(propName);\n if (!prop) {\n meta.addPropertyAssignment({ name: propName, initializer: \"[]\" });\n prop = meta.getProperty(propName);\n }\n let arr: ArrayLiteralExpression | undefined;\n if (Node.isPropertyAssignment(prop)) {\n const init = prop.getInitializer();\n if (init && Node.isArrayLiteralExpression(init)) arr = init;\n }\n if (!arr) throw new Error(`registerNestProvider: Property ${propName} is not an array in ${modulePath}`);\n\n const exists = arr.getElements().some(el => el.getText().replace(/\\s/g, \"\") === providerClassName);\n if (!exists || !uniqueGuard) arr.addElement(providerClassName);\n };\n\n for (const bucket of registerIn) ensureInArray(bucket);\n\n this.dirtySourceFiles.add(abs); // defer save to commit()\n this.logger.log(`Staged provider registration in: ${this.rel(abs)} (${registerIn.join(\", \")})`);\n return { staged: true };\n }\n\n\n addMethodToExistingClass(\n filePath: string,\n className: string,\n methodName: string,\n methodCode: string,\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`addMethodToExistingClass: File not found at ${filePath}`);\n\n const existing = this.project.getSourceFile(abs);\n const sourceFile = existing\n ? existing\n : this.project.createSourceFile(abs, readFileSync(abs, \"utf8\"), { overwrite: true });\n\n const targetClass = sourceFile.getClass(className);\n if (!targetClass)\n throw new Error(`addMethodToExistingClass: Class ${className} not found in ${filePath}`);\n\n const existingMethod = targetClass.getMethod(methodName);\n if (existingMethod) {\n\n this.logger.log(`Skipped adding method '${methodName}' (already exists)`);\n return { staged: false, overwritten: false, skipped: true };\n }\n // Add the LLM-generated method directly\n targetClass.addMember(methodCode);\n\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged method '${methodName}' in class ${className} at ${this.rel(abs)}`);\n return { staged: true, overwritten: !!existingMethod, skipped: false };\n }\n\n registerSolidUiExtension(\n filePath: string,\n lineToAdd: string\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`registerSolidUiExtension: File not found at ${filePath}`);\n\n const fileContent = readFileSync(abs, \"utf8\");\n\n // Check if the line already exists (avoid duplicates)\n if (fileContent.includes(lineToAdd.trim())) {\n this.logger.log(`Skipped adding line (already exists): ${lineToAdd}`);\n return { staged: false, overwritten: false, skipped: true };\n }\n\n // Append the new line at the end, ensuring newline\n const newContent = fileContent.trimEnd() + \"\\n\" + lineToAdd.trim() + \"\\n\";\n\n // Write updated content back\n writeFileSync(abs, newContent, \"utf8\");\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged new line in ${this.rel(abs)}: ${lineToAdd}`);\n return { staged: true, overwritten: false, skipped: false };\n }\n\n addImport(\n filePath: string,\n importLine: string\n ): { staged: boolean; overwritten: boolean; skipped: boolean } {\n const abs = this.resolveRepoPath(filePath);\n if (!existsSync(abs))\n throw new Error(`addImport: File not found at ${filePath}`);\n\n let fileContent = readFileSync(abs, \"utf8\");\n\n // If import already exists — skip\n if (fileContent.includes(importLine.trim())) {\n this.logger.log(`Skipped adding import (already exists): ${importLine}`);\n return { staged: false, overwritten: false, skipped: true };\n }\n\n // Find last import statement (so we can insert after all imports)\n const importRegex = /^import .+ from .+;$/gm;\n let lastImportMatch: RegExpExecArray | null;\n let lastImportIndex = -1;\n\n while ((lastImportMatch = importRegex.exec(fileContent)) !== null) {\n lastImportIndex = lastImportMatch.index + lastImportMatch[0].length;\n }\n\n // Insert after last import (or at top if none exist)\n let newContent: string;\n if (lastImportIndex !== -1) {\n newContent =\n fileContent.slice(0, lastImportIndex) +\n \"\\n\" +\n importLine.trim() +\n \"\\n\" +\n fileContent.slice(lastImportIndex);\n } else {\n // No imports found — insert at top\n newContent = importLine.trim() + \"\\n\\n\" + fileContent;\n }\n\n writeFileSync(abs, newContent, \"utf8\");\n\n this.dirtySourceFiles.add(abs);\n this.logger.log(`Staged import in ${this.rel(abs)}: ${importLine}`);\n return { staged: true, overwritten: false, skipped: false };\n }\n\n\n\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-activity-history.service.d.ts","sourceRoot":"","sources":["../../src/services/user-activity-history.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"user-activity-history.service.d.ts","sourceRoot":"","sources":["../../src/services/user-activity-history.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAEhG,qBACa,0BAA2B,SAAQ,WAAW,CAAC,mBAAmB,CAAC;IAG5E,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAE7C,QAAQ,CAAC,aAAa,EAAE,aAAa;IAGrC,QAAQ,CAAC,IAAI,EAAE,6BAA6B;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAZ5C,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EAEpC,aAAa,EAAE,aAAa,EAG5B,IAAI,EAAE,6BAA6B,EACnC,SAAS,EAAE,SAAS,EACpB,qBAAqB,EAAE,qBAAqB;IAKjD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,gBAAgB,EAAE,IAAI,EAAE,IAAI;CAYxE"}
|
|
@@ -53,6 +53,7 @@ let UserActivityHistoryService = class UserActivityHistoryService extends crud_s
|
|
|
53
53
|
exports.UserActivityHistoryService = UserActivityHistoryService;
|
|
54
54
|
exports.UserActivityHistoryService = UserActivityHistoryService = __decorate([
|
|
55
55
|
(0, common_1.Injectable)(),
|
|
56
|
+
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => model_metadata_service_1.ModelMetadataService))),
|
|
56
57
|
__param(6, (0, typeorm_1.InjectEntityManager)()),
|
|
57
58
|
__metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
|
|
58
59
|
module_metadata_service_1.ModuleMetadataService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-activity-history.service.js","sourceRoot":"","sources":["../../src/services/user-activity-history.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"user-activity-history.service.js","sourceRoot":"","sources":["../../src/services/user-activity-history.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,6CAAwE;AACxE,uCAA2D;AAC3D,qCAAwD;AAExD,iDAAwD;AACxD,qEAA2E;AAC3E,uEAA6E;AAC7E,2CAA+C;AAC/C,iDAAwD;AACxD,+DAAqE;AAIrE,uEAAkE;AAElE,qGAAgG;AAGzF,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,0BAAgC;IAC9E,YAEW,oBAA0C,EAC1C,qBAA4C,EAC5C,aAA4B,EAC5B,WAAwB,EACxB,gBAAkC,EAClC,iBAAoC,EAEpC,aAA4B,EAG5B,IAAmC,EACnC,SAAoB,EACpB,qBAA4C;QAGrD,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAfhL,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,kBAAa,GAAb,aAAa,CAAe;QAG5B,SAAI,GAAJ,IAAI,CAA+B;QACnC,cAAS,GAAT,SAAS,CAAW;QACpB,0BAAqB,GAArB,qBAAqB,CAAuB;IAIvD,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,KAA4C,EAAE,IAAU;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;QAE5D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB,IAAI;YACJ,KAAK;YACL,SAAS,EAAE,EAAE;YACb,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CAEF,CAAA;AAhCY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,6CAAoB,CAAC,CAAC,CAAA;IAO9C,WAAA,IAAA,6BAAmB,GAAE,CAAA;qCANS,6CAAoB;QACnB,+CAAqB;QAC7B,sBAAa;QACf,0BAAW;QACN,uBAAgB;QACf,uCAAiB;QAErB,uBAAa;QAGtB,gEAA6B;QACxB,gBAAS;QACG,+CAAqB;GAf5C,0BAA0B,CAgCtC","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { EntityManager, In, Repository } from 'typeorm';\n\nimport { CRUDService } from 'src/services/crud.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { ConfigService } from '@nestjs/config';\nimport { FileService } from 'src/services/file.service';\nimport { CrudHelperService } from 'src/services/crud-helper.service';\n\n\nimport { UserActivityHistory } from '../entities/user-activity-history.entity';\nimport { RequestContextService } from './request-context.service';\nimport { User } from 'src/entities/user.entity';\nimport { UserActivityHistoryRepository } from 'src/repository/user-activity-history.repository';\n\n@Injectable()\nexport class UserActivityHistoryService extends CRUDService<UserActivityHistory> {\n constructor(\n @Inject(forwardRef(() => ModelMetadataService))\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(UserActivityHistory, 'default')\n // readonly repo: Repository<UserActivityHistory>,\n readonly repo: UserActivityHistoryRepository,\n readonly moduleRef: ModuleRef,\n readonly requestContextService: RequestContextService,\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'userActivityHistory', 'solid-core', moduleRef);\n }\n async logEvent(event: 'login' | 'logout' | 'tokenRefreshed', user: User) {\n const ip = this.requestContextService.getIp();\n const userAgent = this.requestContextService.getUserAgent();\n\n await this.repo.save({\n user,\n event,\n ipAddress: ip,\n userAgent,\n });\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/user-view-metadata.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAc,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F,qBACa,uBAAwB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/user-view-metadata.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAc,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F,qBACa,uBAAwB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;IAGtE,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAE7C,QAAQ,CAAC,aAAa,EAAE,aAAa;IAGrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS;gBAXpB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EAEpC,aAAa,EAAE,aAAa,EAG5B,IAAI,EAAE,0BAA0B,EAChC,SAAS,EAAE,SAAS;IAMzB,MAAM,CAAC,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,cAAc;CAkB1E"}
|
|
@@ -42,14 +42,14 @@ let UserViewMetadataService = class UserViewMetadataService extends crud_service
|
|
|
42
42
|
where: { user: { id: activeUser?.sub }, viewMetadata: { id: query.viewMetadataId } }
|
|
43
43
|
});
|
|
44
44
|
if (existing) {
|
|
45
|
-
existing.layout =
|
|
45
|
+
existing.layout = query.layout;
|
|
46
46
|
return await this.repo.save(existing);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
49
|
const newEntry = this.repo.create({
|
|
50
50
|
user: { id: activeUser?.sub },
|
|
51
51
|
viewMetadata: { id: query.viewMetadataId },
|
|
52
|
-
layout:
|
|
52
|
+
layout: query.layout
|
|
53
53
|
});
|
|
54
54
|
return await this.repo.save(newEntry);
|
|
55
55
|
}
|
|
@@ -58,6 +58,7 @@ let UserViewMetadataService = class UserViewMetadataService extends crud_service
|
|
|
58
58
|
exports.UserViewMetadataService = UserViewMetadataService;
|
|
59
59
|
exports.UserViewMetadataService = UserViewMetadataService = __decorate([
|
|
60
60
|
(0, common_1.Injectable)(),
|
|
61
|
+
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => model_metadata_service_1.ModelMetadataService))),
|
|
61
62
|
__param(6, (0, typeorm_1.InjectEntityManager)()),
|
|
62
63
|
__metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
|
|
63
64
|
module_metadata_service_1.ModuleMetadataService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-view-metadata.service.js","sourceRoot":"","sources":["../../src/services/user-view-metadata.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"user-view-metadata.service.js","sourceRoot":"","sources":["../../src/services/user-view-metadata.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAgE;AAChE,6CAAwE;AACxE,uCAA2D;AAC3D,qCAAoD;AAEpD,iDAAwD;AACxD,qEAA2E;AAC3E,uEAA6E;AAC7E,2CAA+C;AAC/C,iDAAwD;AACxD,+DAAqE;AAMrE,+FAA0F;AAGnF,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,0BAA6B;IACxE,YAEW,oBAA0C,EAC1C,qBAA4C,EAC5C,aAA4B,EAC5B,WAAwB,EACxB,gBAAkC,EAClC,iBAAoC,EAEpC,aAA4B,EAG5B,IAAgC,EAChC,SAAoB;QAG7B,KAAK,CAAC,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAd7K,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAEpC,kBAAa,GAAb,aAAa,CAAe;QAG5B,SAAI,GAAJ,IAAI,CAA4B;QAChC,cAAS,GAAT,SAAS,CAAW;IAI/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgC,EAAE,UAA0B;QACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE;SACrF,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAChC,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;gBAC7B,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC1C,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CAEF,CAAA;AAtCY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,6CAAoB,CAAC,CAAC,CAAA;IAO9C,WAAA,IAAA,6BAAmB,GAAE,CAAA;qCANS,6CAAoB;QACnB,+CAAqB;QAC7B,sBAAa;QACf,0BAAW;QACN,uBAAgB;QACf,uCAAiB;QAErB,uBAAa;QAGtB,0DAA0B;QACrB,gBAAS;GAdpB,uBAAuB,CAsCnC","sourcesContent":["import { forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { EntityManager, Repository } from 'typeorm';\n\nimport { CRUDService } from 'src/services/crud.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { ConfigService } from '@nestjs/config';\nimport { FileService } from 'src/services/file.service';\nimport { CrudHelperService } from 'src/services/crud-helper.service';\n\n\nimport { UserViewMetadata } from '../entities/user-view-metadata.entity';\nimport { UpsertUserViewMetadataDto } from 'src/dtos/upsert-user-view-metadata.dto';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { UserViewMetadataRepository } from 'src/repository/user-view-metadata.repository';\n\n@Injectable()\nexport class UserViewMetadataService extends CRUDService<UserViewMetadata> {\n constructor(\n @Inject(forwardRef(() => ModelMetadataService))\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(UserViewMetadata, 'default')\n // readonly repo: Repository<UserViewMetadata>,\n readonly repo: UserViewMetadataRepository,\n readonly moduleRef: ModuleRef\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'userViewMetadata', 'solid-core', moduleRef);\n }\n\n async upsert(query: UpsertUserViewMetadataDto, activeUser: ActiveUserData) {\n const existing = await this.repo.findOne({\n where: { user: { id: activeUser?.sub }, viewMetadata: { id: query.viewMetadataId } }\n });\n\n if (existing) {\n existing.layout = query.layout;\n return await this.repo.save(existing);\n } else {\n const newEntry = this.repo.create({\n user: { id: activeUser?.sub },\n viewMetadata: { id: query.viewMetadataId },\n layout: query.layout\n });\n return await this.repo.save(newEntry);\n }\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,qBACa,WAAY,SAAQ,WAAW,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -228,6 +228,7 @@ let UserService = class UserService extends crud_service_1.CRUDService {
|
|
|
228
228
|
exports.UserService = UserService;
|
|
229
229
|
exports.UserService = UserService = __decorate([
|
|
230
230
|
(0, common_1.Injectable)(),
|
|
231
|
+
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => model_metadata_service_1.ModelMetadataService))),
|
|
231
232
|
__param(6, (0, typeorm_1.InjectEntityManager)()),
|
|
232
233
|
__param(8, (0, typeorm_1.InjectRepository)(user_entity_1.User, 'default')),
|
|
233
234
|
__param(11, (0, common_1.Inject)(iam_config_1.iamConfig.KEY)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, Inject, Injectable } from '@nestjs/common';\nimport { ConfigService, ConfigType } from '@nestjs/config';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { CrudHelperService } from \"src/services/crud-helper.service\";\nimport { CRUDService } from 'src/services/crud.service';\nimport { FileService } from \"src/services/file.service\";\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { EntityManager, Repository } from 'typeorm';\n\n\nimport { OauthUserDto } from '../dtos/oauth-user-dto';\nimport { RoleMetadata } from '../entities/role-metadata.entity';\nimport { User } from '../entities/user.entity';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { iamConfig } from 'src/config/iam.config';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport { UserRepository } from 'src/repository/user.repository';\nimport { RoleMetadataRepository } from 'src/repository/role-metadata.repository';\n\n@Injectable()\nexport class UserService extends CRUDService<User> {\n constructor(\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(User, 'default')\n readonly repo: UserRepository,\n @InjectRepository(User, 'default')\n readonly nonSecurityRuleAwareRepo : Repository<User>,\n // @InjectRepository(RoleMetadata)\n // private readonly roleRepository: Repository<RoleMetadata>,\n private readonly roleRepository: RoleMetadataRepository,\n readonly moduleRef: ModuleRef,\n @Inject(iamConfig.KEY)\n private readonly iamConfiguration: ConfigType<typeof iamConfig>,\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'user', 'solid-core', moduleRef);\n }\n\n override async delete(id: number, solidRequestContext: any = {}) {\n // Prevent user from deleting themselves\n if (solidRequestContext?.activeUser?.sub === id) {\n throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);\n }\n\n // ✅ Proceed with the default deletion logic\n return super.delete(id, solidRequestContext);\n }\n\n override async deleteMany(ids: number[], solidRequestContext: any = {}): Promise<any> {\n if (!ids || ids.length === 0) {\n throw new Error(ERROR_MESSAGES.DELETE_IDS_REQUIRED);\n }\n\n // ❌ If the active user is trying to delete themselves\n if (solidRequestContext?.activeUser?.sub && ids.includes(solidRequestContext.activeUser.id)) {\n throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);\n }\n\n return super.deleteMany(ids, solidRequestContext);\n }\n\n async findOneByEmail(email: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n email: email\n },\n relations: {}\n });\n // if (!entity) {\n // throw new NotFoundException(`user with email #${email} not found`);\n // }\n // return entity;\n }\n\n async findOneByAccessCode(accessCode: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n accessCode: accessCode\n },\n relations: {}\n });\n }\n\n async findOneByUsername(username: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n username: username\n },\n relations: {}\n });\n // if (!entity) {\n // throw new NotFoundException(`user with username ${username} not found`);\n // }\n // return entity;\n }\n\n async updateUser(id: any, updateDto, files, solidRequestContext: any = {}) {\n const user = await this.repo.findOne({\n where: { id: id },\n relations: {\n roles: true\n }\n });\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND);\n }\n const roles = updateDto.roles ? updateDto.roles : [];\n await this.addRolesToUser(user.username, roles);\n await this.update(id, updateDto, files, true);\n }\n\n async addRoleToUser(username: string, roleName: string): Promise<User> {\n // Find the role, find the user and populate the many 2 many table.\n const user = await this.repo.findOne({\n where: { username: username },\n relations: {\n roles: true\n }\n });\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n const role = await this.roleRepository.findOne({ where: { name: roleName } });\n if (!role) {\n throw new Error(ERROR_MESSAGES.ROLE_NOT_FOUND(roleName));\n }\n\n if (user.roles && user.roles.length > 0) {\n user.roles.push(role);\n }\n else {\n user.roles = [role];\n }\n\n return await this.repo.save(user);\n }\n\n async addRolesToUser(username: string, roleNames: string[]): Promise<User> {\n const user = await this.nonSecurityRuleAwareRepo.findOne({\n where: { username: username },\n relations: { roles: true }\n });\n\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n\n const roles = await this.roleRepository.find({\n where: roleNames.map(roleName => ({ name: roleName }))\n });\n\n if (roles.length !== roleNames.length) {\n const foundRoleNames = roles.map(role => role.name);\n const missingRoles = roleNames.filter(roleName => !foundRoleNames.includes(roleName));\n throw new Error(ERROR_MESSAGES.ROLES_NOT_FOUND(missingRoles));\n }\n\n const currentRoles = user.roles.map(role => role.name);\n\n const rolesToAdd = roles.filter(role => !currentRoles.includes(role.name));\n\n const rolesToRemove = user.roles.filter(role => !roleNames.includes(role.name));\n\n if (rolesToAdd.length > 0) {\n user.roles.push(...rolesToAdd);\n }\n\n if (rolesToRemove.length > 0) {\n user.roles = user.roles.filter(role => !rolesToRemove.includes(role));\n }\n\n return await this.nonSecurityRuleAwareRepo.save(user);\n }\n\n\n async removeRoleFromUser(username: string, roleName: string): Promise<User> {\n\n // load the role with the respective permissions.\n const user = await this.repo.findOne({\n where: {\n username: username\n },\n relations: {\n roles: true\n }\n });\n\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n\n // modify the permissions array.\n user.roles = user.roles.filter(role => role.name !== roleName);\n\n return await this.repo.save(user);\n }\n\n // PROVIDER SPECIFIC CODE\n async resolveUserOnOauthGoogle(oauthUserDto: OauthUserDto): Promise<User> {\n const user = await this.repo.findOne({\n where: {\n email: oauthUserDto.email,\n },\n relations: {\n roles: true\n }\n });\n\n // if we are unable to find a user then we need to create one. \n if (!user) {\n const user = new User();\n user.username = oauthUserDto.email;\n user.email = oauthUserDto.email;\n user.fullName = oauthUserDto.name;\n user.lastLoginProvider = oauthUserDto.provider;\n user.accessCode = oauthUserDto.accessCode;\n user.googleAccessToken = oauthUserDto.accessToken;\n user.googleId = oauthUserDto.providerId;\n user.googleProfilePicture = oauthUserDto.picture;\n\n const savedUser = await this.repo.save(user);\n\n // Initialize the user roles\n this.initializeRolesForNewUser([this.iamConfiguration.defaultRole], savedUser);\n }\n // else we update the user and store the generated code & access token. \n else {\n const entity = await this.repo.preload({\n id: user.id,\n lastLoginProvider: oauthUserDto.provider,\n accessCode: oauthUserDto.accessCode,\n googleAccessToken: oauthUserDto.accessToken,\n googleId: oauthUserDto.providerId,\n googleProfilePicture: oauthUserDto.picture,\n });\n\n await this.repo.save(entity);\n }\n\n return user;\n }\n\n async findUsersByRole(roleName: string, relations: any = {}): Promise<User[]> {\n return await this.repo.find({\n where: {\n roles: {\n name: roleName\n }\n },\n relations: relations\n });\n }\n\n async checkIfPermissionExists(query: any, activeUser: ActiveUserData) {\n\n const matchingPermssions = activeUser.permissions.filter((p) => query.permissionNames.includes(p));\n return matchingPermssions\n }\n\n async initializeRolesForNewUser(roles: string[], user: User) {\n if (!user.id) {\n throw new BadRequestException(ERROR_MESSAGES.USER_MISSING_ID);\n }\n let userRoles = [];\n // Default Internal user role assigned \n userRoles.push(\"Internal User\");\n if (roles) {\n userRoles = [...userRoles, ...roles];\n }\n userRoles = Array.from(new Set([...userRoles]));\n if (userRoles.length > 0) {\n await this.addRolesToUser(user.username, userRoles);\n }\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"user.service.js","sourceRoot":"","sources":["../../src/services/user.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, forwardRef, Inject, Injectable } from '@nestjs/common';\nimport { ConfigService, ConfigType } from '@nestjs/config';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { CrudHelperService } from \"src/services/crud-helper.service\";\nimport { CRUDService } from 'src/services/crud.service';\nimport { FileService } from \"src/services/file.service\";\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\nimport { EntityManager, Repository } from 'typeorm';\n\n\nimport { OauthUserDto } from '../dtos/oauth-user-dto';\nimport { RoleMetadata } from '../entities/role-metadata.entity';\nimport { User } from '../entities/user.entity';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { iamConfig } from 'src/config/iam.config';\nimport { ERROR_MESSAGES } from 'src/constants/error-messages';\nimport { UserRepository } from 'src/repository/user.repository';\nimport { RoleMetadataRepository } from 'src/repository/role-metadata.repository';\n\n@Injectable()\nexport class UserService extends CRUDService<User> {\n constructor(\n @Inject(forwardRef(() => ModelMetadataService))\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n // @InjectRepository(User, 'default')\n readonly repo: UserRepository,\n @InjectRepository(User, 'default')\n readonly nonSecurityRuleAwareRepo : Repository<User>,\n // @InjectRepository(RoleMetadata)\n // private readonly roleRepository: Repository<RoleMetadata>,\n private readonly roleRepository: RoleMetadataRepository,\n readonly moduleRef: ModuleRef,\n @Inject(iamConfig.KEY)\n private readonly iamConfiguration: ConfigType<typeof iamConfig>,\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'user', 'solid-core', moduleRef);\n }\n\n override async delete(id: number, solidRequestContext: any = {}) {\n // Prevent user from deleting themselves\n if (solidRequestContext?.activeUser?.sub === id) {\n throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);\n }\n\n // ✅ Proceed with the default deletion logic\n return super.delete(id, solidRequestContext);\n }\n\n override async deleteMany(ids: number[], solidRequestContext: any = {}): Promise<any> {\n if (!ids || ids.length === 0) {\n throw new Error(ERROR_MESSAGES.DELETE_IDS_REQUIRED);\n }\n\n // ❌ If the active user is trying to delete themselves\n if (solidRequestContext?.activeUser?.sub && ids.includes(solidRequestContext.activeUser.id)) {\n throw new BadRequestException(ERROR_MESSAGES.DELETE_SELF_NOT_ALLOWED);\n }\n\n return super.deleteMany(ids, solidRequestContext);\n }\n\n async findOneByEmail(email: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n email: email\n },\n relations: {}\n });\n // if (!entity) {\n // throw new NotFoundException(`user with email #${email} not found`);\n // }\n // return entity;\n }\n\n async findOneByAccessCode(accessCode: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n accessCode: accessCode\n },\n relations: {}\n });\n }\n\n async findOneByUsername(username: string): Promise<User> {\n return await this.repo.findOne({\n where: {\n username: username\n },\n relations: {}\n });\n // if (!entity) {\n // throw new NotFoundException(`user with username ${username} not found`);\n // }\n // return entity;\n }\n\n async updateUser(id: any, updateDto, files, solidRequestContext: any = {}) {\n const user = await this.repo.findOne({\n where: { id: id },\n relations: {\n roles: true\n }\n });\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND);\n }\n const roles = updateDto.roles ? updateDto.roles : [];\n await this.addRolesToUser(user.username, roles);\n await this.update(id, updateDto, files, true);\n }\n\n async addRoleToUser(username: string, roleName: string): Promise<User> {\n // Find the role, find the user and populate the many 2 many table.\n const user = await this.repo.findOne({\n where: { username: username },\n relations: {\n roles: true\n }\n });\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n const role = await this.roleRepository.findOne({ where: { name: roleName } });\n if (!role) {\n throw new Error(ERROR_MESSAGES.ROLE_NOT_FOUND(roleName));\n }\n\n if (user.roles && user.roles.length > 0) {\n user.roles.push(role);\n }\n else {\n user.roles = [role];\n }\n\n return await this.repo.save(user);\n }\n\n async addRolesToUser(username: string, roleNames: string[]): Promise<User> {\n const user = await this.nonSecurityRuleAwareRepo.findOne({\n where: { username: username },\n relations: { roles: true }\n });\n\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n\n const roles = await this.roleRepository.find({\n where: roleNames.map(roleName => ({ name: roleName }))\n });\n\n if (roles.length !== roleNames.length) {\n const foundRoleNames = roles.map(role => role.name);\n const missingRoles = roleNames.filter(roleName => !foundRoleNames.includes(roleName));\n throw new Error(ERROR_MESSAGES.ROLES_NOT_FOUND(missingRoles));\n }\n\n const currentRoles = user.roles.map(role => role.name);\n\n const rolesToAdd = roles.filter(role => !currentRoles.includes(role.name));\n\n const rolesToRemove = user.roles.filter(role => !roleNames.includes(role.name));\n\n if (rolesToAdd.length > 0) {\n user.roles.push(...rolesToAdd);\n }\n\n if (rolesToRemove.length > 0) {\n user.roles = user.roles.filter(role => !rolesToRemove.includes(role));\n }\n\n return await this.nonSecurityRuleAwareRepo.save(user);\n }\n\n\n async removeRoleFromUser(username: string, roleName: string): Promise<User> {\n\n // load the role with the respective permissions.\n const user = await this.repo.findOne({\n where: {\n username: username\n },\n relations: {\n roles: true\n }\n });\n\n if (!user) {\n throw new Error(ERROR_MESSAGES.USER_NOT_FOUND_BY_USERNAME(username));\n }\n\n // modify the permissions array.\n user.roles = user.roles.filter(role => role.name !== roleName);\n\n return await this.repo.save(user);\n }\n\n // PROVIDER SPECIFIC CODE\n async resolveUserOnOauthGoogle(oauthUserDto: OauthUserDto): Promise<User> {\n const user = await this.repo.findOne({\n where: {\n email: oauthUserDto.email,\n },\n relations: {\n roles: true\n }\n });\n\n // if we are unable to find a user then we need to create one. \n if (!user) {\n const user = new User();\n user.username = oauthUserDto.email;\n user.email = oauthUserDto.email;\n user.fullName = oauthUserDto.name;\n user.lastLoginProvider = oauthUserDto.provider;\n user.accessCode = oauthUserDto.accessCode;\n user.googleAccessToken = oauthUserDto.accessToken;\n user.googleId = oauthUserDto.providerId;\n user.googleProfilePicture = oauthUserDto.picture;\n\n const savedUser = await this.repo.save(user);\n\n // Initialize the user roles\n this.initializeRolesForNewUser([this.iamConfiguration.defaultRole], savedUser);\n }\n // else we update the user and store the generated code & access token. \n else {\n const entity = await this.repo.preload({\n id: user.id,\n lastLoginProvider: oauthUserDto.provider,\n accessCode: oauthUserDto.accessCode,\n googleAccessToken: oauthUserDto.accessToken,\n googleId: oauthUserDto.providerId,\n googleProfilePicture: oauthUserDto.picture,\n });\n\n await this.repo.save(entity);\n }\n\n return user;\n }\n\n async findUsersByRole(roleName: string, relations: any = {}): Promise<User[]> {\n return await this.repo.find({\n where: {\n roles: {\n name: roleName\n }\n },\n relations: relations\n });\n }\n\n async checkIfPermissionExists(query: any, activeUser: ActiveUserData) {\n\n const matchingPermssions = activeUser.permissions.filter((p) => query.permissionNames.includes(p));\n return matchingPermssions\n }\n\n async initializeRolesForNewUser(roles: string[], user: User) {\n if (!user.id) {\n throw new BadRequestException(ERROR_MESSAGES.USER_MISSING_ID);\n }\n let userRoles = [];\n // Default Internal user role assigned \n userRoles.push(\"Internal User\");\n if (roles) {\n userRoles = [...userRoles, ...roles];\n }\n userRoles = Array.from(new Set([...userRoles]));\n if (userRoles.length > 0) {\n await this.addRolesToUser(user.username, userRoles);\n }\n }\n\n}\n"]}
|
|
@@ -13,6 +13,7 @@ import { UpdateViewMetadataDto } from '../dtos/update-view-metadata.dto';
|
|
|
13
13
|
import { FieldMetadata } from '../entities/field-metadata.entity';
|
|
14
14
|
import { ViewMetadata } from '../entities/view-metadata.entity';
|
|
15
15
|
import { ActionMetadataService } from './action-metadata.service';
|
|
16
|
+
import { MenuItemMetadataService } from './menu-item-metadata.service';
|
|
16
17
|
import { SolidIntrospectService } from './solid-introspect.service';
|
|
17
18
|
import { UserViewMetadataService } from './user-view-metadata.service';
|
|
18
19
|
export declare class ViewMetadataService extends CRUDService<ViewMetadata> {
|
|
@@ -23,6 +24,7 @@ export declare class ViewMetadataService extends CRUDService<ViewMetadata> {
|
|
|
23
24
|
readonly discoveryService: DiscoveryService;
|
|
24
25
|
readonly crudHelperService: CrudHelperService;
|
|
25
26
|
readonly actionMetadataService: ActionMetadataService;
|
|
27
|
+
readonly menuItemMetadataService: MenuItemMetadataService;
|
|
26
28
|
readonly introspectService: SolidIntrospectService;
|
|
27
29
|
readonly userViewMetadataService: UserViewMetadataService;
|
|
28
30
|
readonly entityManager: EntityManager;
|
|
@@ -30,7 +32,7 @@ export declare class ViewMetadataService extends CRUDService<ViewMetadata> {
|
|
|
30
32
|
private readonly modelMetadataRepo;
|
|
31
33
|
private readonly modelMetadataHelperService;
|
|
32
34
|
readonly moduleRef: ModuleRef;
|
|
33
|
-
constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, actionMetadataService: ActionMetadataService, introspectService: SolidIntrospectService, userViewMetadataService: UserViewMetadataService, entityManager: EntityManager, repo: ViewMetadataRepository, modelMetadataRepo: ModelMetadataRepository, modelMetadataHelperService: ModelMetadataHelperService, moduleRef: ModuleRef);
|
|
35
|
+
constructor(modelMetadataService: ModelMetadataService, moduleMetadataService: ModuleMetadataService, configService: ConfigService, fileService: FileService, discoveryService: DiscoveryService, crudHelperService: CrudHelperService, actionMetadataService: ActionMetadataService, menuItemMetadataService: MenuItemMetadataService, introspectService: SolidIntrospectService, userViewMetadataService: UserViewMetadataService, entityManager: EntityManager, repo: ViewMetadataRepository, modelMetadataRepo: ModelMetadataRepository, modelMetadataHelperService: ModelMetadataHelperService, moduleRef: ModuleRef);
|
|
34
36
|
private readonly logger;
|
|
35
37
|
private getEntityRecordsInAllLocales;
|
|
36
38
|
getLayout(query: any, activeUser: any): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/view-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"view-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/view-metadata.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAM,MAAM,SAAS,CAAC;AAK5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,qBACa,mBAAoB,SAAQ,WAAW,CAAC,YAAY,CAAC;IAG9D,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IACnD,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa;IACrC,QAAQ,CAAC,WAAW,EAAE,WAAW;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB;IACzD,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB;IAClD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB;IAEzD,QAAQ,CAAC,aAAa,EAAE,aAAa;IAErC,QAAQ,CAAC,IAAI,EAAE,sBAAsB;IAMrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS;gBArBpB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,qBAAqB,EAAE,qBAAqB,EAC5C,uBAAuB,EAAE,uBAAuB,EAChD,iBAAiB,EAAE,sBAAsB,EACzC,uBAAuB,EAAE,uBAAuB,EAEhD,aAAa,EAAE,aAAa,EAE5B,IAAI,EAAE,sBAAsB,EAMpB,iBAAiB,EAAE,uBAAuB,EAC1C,0BAA0B,EAAE,0BAA0B,EAC9D,SAAS,EAAE,SAAS;IAK/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;YAGjD,4BAA4B;IA8DpC,SAAS,CAAC,KAAK,KAAA,EAAE,UAAU,KAAA;;;;;;;;YA6PnB,kBAAkB;IAyB1B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,KAAK;IAU7C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB;IAgBhD,kBAAkB,CAAC,kBAAkB,EAAE,qBAAqB;CAgBnE"}
|