@solidstarters/solid-core 1.2.192 → 1.2.200
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/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 +32 -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/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/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/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/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 +33 -7
- 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-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +5 -1
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- 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/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 +9 -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 +67 -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/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/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 +48 -30
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +1 -3
- 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 +3 -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 +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- 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/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/seeders/module-metadata-seeder.service.d.ts +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +39 -17
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +53 -468
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +1 -1
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/ai-interaction.service.js +1 -1
- package/dist/services/ai-interaction.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 +6 -4
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +8 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +28 -5
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +4 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +87 -7
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +143 -6
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +211 -56
- package/dist/services/field-metadata.service.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 +31 -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 +14 -3
- package/dist/services/model-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/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/{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.map +1 -1
- package/dist/services/setting.service.js +2 -1
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +19 -3
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +83 -11
- package/dist/services/solid-introspect.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 +31 -5
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +5 -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 +6 -12
- package/dist/subscribers/audit.subscriber.js.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +3 -2
- package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -1
- package/dist/subscribers/computed-entity-field.subscriber.js +7 -9
- 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/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/sql/mssql/proc_CleanupModelMetadata.sql +175 -0
- package/sql/mssql/proc_CleanupModuleMetadata.sql +78 -0
- package/sql/mssql/scratchpad.sql +10 -0
- package/sql/postgres/proc_CleanupModelMetadata.sql +148 -0
- package/sql/postgres/proc_CleanupModuleMetadata.sql +50 -0
- package/sql/postgres/scratchpad.sql +12 -0
- package/sql-server-changes.txt +88 -0
- package/src/commands/mcp.command.ts +215 -0
- package/src/commands/refresh-model.command.ts +37 -5
- package/src/commands/remove-fields.command.ts +1 -1
- package/src/commands/seed.command.ts +34 -15
- 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/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/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/create-ai-interaction.dto.ts +16 -9
- package/src/dtos/create-field-metadata.dto.ts +42 -12
- package/src/dtos/create-import-transaction.dto.ts +0 -4
- package/src/dtos/create-model-metadata.dto.ts +10 -0
- package/src/dtos/create-role-metadata.dto.ts +8 -2
- package/src/dtos/resolve-s3-url.dto.ts +33 -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/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 +19 -10
- 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 +57 -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/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/model-metadata-helper.service.ts +63 -32
- package/src/helpers/module.helper.ts +4 -3
- package/src/helpers/schematic.service.ts +72 -46
- package/src/helpers/solid-registry.ts +14 -2
- package/src/helpers/typeorm-db-helper.ts +26 -0
- package/src/index.ts +5 -1
- package/src/interfaces.ts +3 -0
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +17 -21
- package/src/seeders/module-metadata-seeder.service.ts +73 -29
- package/src/seeders/seed-data/solid-core-metadata.json +55 -470
- package/src/seeders/system-fields-seeder.service.ts +34 -35
- package/src/services/ai-interaction.service.ts +1 -1
- package/src/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.ts +13 -9
- package/src/services/crud-helper.service.ts +32 -4
- package/src/services/crud.service.ts +158 -10
- package/src/services/field-metadata.service.ts +272 -67
- package/src/services/menu-item-metadata.service.ts +81 -50
- package/src/services/model-metadata.service.ts +18 -3
- package/src/services/mq-message.service.ts +16 -15
- package/src/services/queues/publisher-factory.service.ts +2 -1
- 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 +13 -10
- package/src/services/solid-introspect.service.ts +110 -10
- package/src/services/view-metadata.service.ts +48 -18
- package/src/solid-core.module.ts +5 -1
- package/src/subscribers/audit.subscriber.ts +12 -8
- package/src/subscribers/computed-entity-field.subscriber.ts +13 -7
- 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/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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
3
|
+
interface McpCommandOptions {
|
|
4
|
+
repoPath?: string;
|
|
5
|
+
detached?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare class McpCommand extends CommandRunner {
|
|
8
|
+
private readonly solidRegistry;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
constructor(solidRegistry: SolidRegistry);
|
|
11
|
+
run(passedParams: string[], options?: McpCommandOptions): Promise<void>;
|
|
12
|
+
private startContainers;
|
|
13
|
+
private stopContainers;
|
|
14
|
+
private resolvePath;
|
|
15
|
+
private runDockerCommand;
|
|
16
|
+
parseDetached(val: string): boolean;
|
|
17
|
+
parseRepoPath(val: string): string;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=mcp.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.command.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAIa,UAAW,SAAQ,aAAa;IAIrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAGjC,aAAa,EAAE,aAAa;IAK3C,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB/D,eAAe;YA0Ff,cAAc;IAyB5B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,gBAAgB;IAgCxB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGrC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var McpCommand_1;
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.McpCommand = void 0;
|
|
47
|
+
const nest_commander_1 = require("nest-commander");
|
|
48
|
+
const common_1 = require("@nestjs/common");
|
|
49
|
+
const child_process_1 = require("child_process");
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const solid_registry_1 = require("../helpers/solid-registry");
|
|
53
|
+
const create_model_metadata_dto_1 = require("../dtos/create-model-metadata.dto");
|
|
54
|
+
let McpCommand = McpCommand_1 = class McpCommand extends nest_commander_1.CommandRunner {
|
|
55
|
+
constructor(solidRegistry) {
|
|
56
|
+
super();
|
|
57
|
+
this.solidRegistry = solidRegistry;
|
|
58
|
+
this.logger = new common_1.Logger(McpCommand_1.name);
|
|
59
|
+
}
|
|
60
|
+
async run(passedParams, options) {
|
|
61
|
+
const mode = (passedParams[0] || 'start').toLowerCase();
|
|
62
|
+
if (mode === 'stop') {
|
|
63
|
+
await this.stopContainers(options);
|
|
64
|
+
}
|
|
65
|
+
else if (mode === 'start') {
|
|
66
|
+
await this.startContainers(options);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.logger.error(`Unknown mode "${mode}". Supported modes are: start, stop.\n` +
|
|
70
|
+
'Examples:\n' +
|
|
71
|
+
' solid mcp start -p ~/mcp/servers/solidx_mcp_server\n' +
|
|
72
|
+
' solid mcp stop -p ~/mcp/servers/solidx_mcp_server\n');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async startContainers(options) {
|
|
76
|
+
const apiKey = process.env.MCP_API_KEY;
|
|
77
|
+
const defaultDatabaseUser = process.env.DEFAULT_DATABASE_USER;
|
|
78
|
+
const defaultDatabasePwd = process.env.DEFAULT_DATABASE_PASSWORD
|
|
79
|
+
? encodeURIComponent(process.env.DEFAULT_DATABASE_PASSWORD)
|
|
80
|
+
: '';
|
|
81
|
+
const defaultDatabaseHost = process.env.DEFAULT_DATABASE_HOST === 'localhost' ? 'host.docker.internal' : process.env.DEFAULT_DATABASE_HOST;
|
|
82
|
+
const defaultDatabaseName = process.env.DEFAULT_DATABASE_NAME;
|
|
83
|
+
const databaseDialect = process.env.DEFAULT_DATABASE_TYPE?.toLowerCase() === 'mssql' ? 'mssql+pyodbc' : 'postgresql';
|
|
84
|
+
const defaultDatasource = this.solidRegistry.getDefaultSolidDatabaseModule();
|
|
85
|
+
let databaseUrl;
|
|
86
|
+
if (defaultDatasource.type() === create_model_metadata_dto_1.DatasourceType.mssql) {
|
|
87
|
+
const base = `mssql+pyodbc://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;
|
|
88
|
+
const driver = encodeURIComponent('ODBC Driver 18 for SQL Server');
|
|
89
|
+
databaseUrl = `${base}?driver=${driver}&TrustServerCertificate=yes`;
|
|
90
|
+
}
|
|
91
|
+
if (defaultDatasource.type() === create_model_metadata_dto_1.DatasourceType.postgres) {
|
|
92
|
+
databaseUrl = `postgresql://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;
|
|
93
|
+
}
|
|
94
|
+
if (!apiKey || apiKey.trim() === '') {
|
|
95
|
+
this.logger.error('❌ MCP_API_KEY environment variable is missing.\n' +
|
|
96
|
+
'Set it before running:\n' +
|
|
97
|
+
' export MCP_API_KEY="your_license_key"\n');
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.logger.log('✔ MCP_API_KEY found.');
|
|
101
|
+
const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();
|
|
102
|
+
const consumingProjectPath = path.resolve(process.cwd(), '..');
|
|
103
|
+
const composeFile = path.join(repoPath, 'docker-compose.yml');
|
|
104
|
+
if (!fs.existsSync(composeFile)) {
|
|
105
|
+
this.logger.error(`docker-compose.yml not found at ${composeFile}`);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const detached = options?.detached ?? false;
|
|
109
|
+
this.logger.log(`Mode: start`);
|
|
110
|
+
this.logger.log(`Using repo path: ${repoPath}`);
|
|
111
|
+
this.logger.log(`Detached mode: ${detached}`);
|
|
112
|
+
this.logger.log(`Consuming project root: ${consumingProjectPath}`);
|
|
113
|
+
const cmd = 'docker';
|
|
114
|
+
const args = ['compose', '-f', composeFile, 'up'];
|
|
115
|
+
if (detached) {
|
|
116
|
+
args.push('-d');
|
|
117
|
+
}
|
|
118
|
+
args.push('mcp_redis', 'mcp_server', 'mcp_celery_worker');
|
|
119
|
+
const env = {
|
|
120
|
+
...process.env,
|
|
121
|
+
MCP_API_KEY: apiKey,
|
|
122
|
+
HOST_SOLIDX_CONSUMING_PROJECT_ROOT: consumingProjectPath,
|
|
123
|
+
DATABASE_URL: databaseUrl,
|
|
124
|
+
};
|
|
125
|
+
this.logger.log(`Running: ${cmd} ${args.join(' ')}`);
|
|
126
|
+
await this.runDockerCommand(cmd, args, repoPath, env);
|
|
127
|
+
this.logger.log(detached
|
|
128
|
+
? 'MCP containers started in detached mode.'
|
|
129
|
+
: 'MCP containers started in foreground.');
|
|
130
|
+
}
|
|
131
|
+
async stopContainers(options) {
|
|
132
|
+
const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();
|
|
133
|
+
const composeFile = path.join(repoPath, 'docker-compose.yml');
|
|
134
|
+
if (!fs.existsSync(composeFile)) {
|
|
135
|
+
this.logger.error(`docker-compose.yml not found at ${composeFile}`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.logger.log(`Mode: stop`);
|
|
139
|
+
this.logger.log(`Using repo path: ${repoPath}`);
|
|
140
|
+
const cmd = 'docker';
|
|
141
|
+
const args = ['compose', '-f', composeFile, 'down'];
|
|
142
|
+
this.logger.log(`Running: ${cmd} ${args.join(' ')}`);
|
|
143
|
+
await this.runDockerCommand(cmd, args, repoPath, process.env);
|
|
144
|
+
this.logger.log('MCP containers stopped (docker compose down).');
|
|
145
|
+
}
|
|
146
|
+
resolvePath(inputPath) {
|
|
147
|
+
if (inputPath.startsWith('~')) {
|
|
148
|
+
return path.join(process.env.HOME, inputPath.slice(1));
|
|
149
|
+
}
|
|
150
|
+
return path.resolve(inputPath);
|
|
151
|
+
}
|
|
152
|
+
runDockerCommand(cmd, args, cwd, env) {
|
|
153
|
+
return new Promise((resolve, reject) => {
|
|
154
|
+
const child = (0, child_process_1.spawn)(cmd, args, {
|
|
155
|
+
cwd,
|
|
156
|
+
env,
|
|
157
|
+
stdio: 'inherit',
|
|
158
|
+
});
|
|
159
|
+
child.on('error', (err) => {
|
|
160
|
+
this.logger.error(`Docker error: ${err.message}`);
|
|
161
|
+
reject(err);
|
|
162
|
+
});
|
|
163
|
+
child.on('close', (code) => {
|
|
164
|
+
if (code === 0)
|
|
165
|
+
resolve();
|
|
166
|
+
else
|
|
167
|
+
reject(new Error(`Docker exited with code ${code}`));
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
parseDetached(val) {
|
|
172
|
+
if (val === undefined)
|
|
173
|
+
return false;
|
|
174
|
+
return val === 'true' || val === '1';
|
|
175
|
+
}
|
|
176
|
+
parseRepoPath(val) {
|
|
177
|
+
return val;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
exports.McpCommand = McpCommand;
|
|
181
|
+
__decorate([
|
|
182
|
+
(0, nest_commander_1.Option)({
|
|
183
|
+
flags: '-d, --detached [boolean]',
|
|
184
|
+
description: 'Run containers in detached mode (only for start, default: false)',
|
|
185
|
+
required: false,
|
|
186
|
+
}),
|
|
187
|
+
__metadata("design:type", Function),
|
|
188
|
+
__metadata("design:paramtypes", [String]),
|
|
189
|
+
__metadata("design:returntype", Boolean)
|
|
190
|
+
], McpCommand.prototype, "parseDetached", null);
|
|
191
|
+
__decorate([
|
|
192
|
+
(0, nest_commander_1.Option)({
|
|
193
|
+
flags: '-p, --repo-path [path]',
|
|
194
|
+
description: 'Path to the SolidX MCP Server repo containing docker-compose.yml',
|
|
195
|
+
required: false,
|
|
196
|
+
}),
|
|
197
|
+
__metadata("design:type", Function),
|
|
198
|
+
__metadata("design:paramtypes", [String]),
|
|
199
|
+
__metadata("design:returntype", String)
|
|
200
|
+
], McpCommand.prototype, "parseRepoPath", null);
|
|
201
|
+
exports.McpCommand = McpCommand = McpCommand_1 = __decorate([
|
|
202
|
+
(0, nest_commander_1.Command)({
|
|
203
|
+
name: 'mcp',
|
|
204
|
+
description: 'Manage the SolidX MCP server and Celery worker docker containers (start/stop)',
|
|
205
|
+
}),
|
|
206
|
+
__metadata("design:paramtypes", [solid_registry_1.SolidRegistry])
|
|
207
|
+
], McpCommand);
|
|
208
|
+
//# sourceMappingURL=mcp.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.command.js","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, CommandRunner, Option } from 'nest-commander';\nimport { Logger } from '@nestjs/common';\nimport { spawn } from 'child_process';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ISolidDatabaseModule } from 'src/interfaces';\nimport { DatasourceType } from 'src/dtos/create-model-metadata.dto';\n\ninterface McpCommandOptions {\n repoPath?: string;\n detached?: boolean;\n}\n\n@Command({\n name: 'mcp',\n description: 'Manage the SolidX MCP server and Celery worker docker containers (start/stop)',\n})\nexport class McpCommand extends CommandRunner {\n private readonly logger = new Logger(McpCommand.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry\n ) {\n super();\n }\n\n async run(passedParams: string[], options?: McpCommandOptions): Promise<void> {\n const mode = (passedParams[0] || 'start').toLowerCase();\n\n if (mode === 'stop') {\n await this.stopContainers(options);\n } else if (mode === 'start') {\n await this.startContainers(options);\n } else {\n this.logger.error(\n `Unknown mode \"${mode}\". Supported modes are: start, stop.\\n` +\n 'Examples:\\n' +\n ' solid mcp start -p ~/mcp/servers/solidx_mcp_server\\n' +\n ' solid mcp stop -p ~/mcp/servers/solidx_mcp_server\\n'\n );\n }\n }\n\n // ---------------------------------------------------------------\n // START\n // ---------------------------------------------------------------\n private async startContainers(options?: McpCommandOptions): Promise<void> {\n // 1. Validate license key\n const apiKey = process.env.MCP_API_KEY;\n\n // Form the Database url to be used by the MCP server based on the consuming projects details. \n const defaultDatabaseUser = process.env.DEFAULT_DATABASE_USER;\n const defaultDatabasePwd = process.env.DEFAULT_DATABASE_PASSWORD\n ? encodeURIComponent(process.env.DEFAULT_DATABASE_PASSWORD)\n : '';\n const defaultDatabaseHost = process.env.DEFAULT_DATABASE_HOST === 'localhost' ? 'host.docker.internal' : process.env.DEFAULT_DATABASE_HOST;\n const defaultDatabaseName = process.env.DEFAULT_DATABASE_NAME;\n const databaseDialect = process.env.DEFAULT_DATABASE_TYPE?.toLowerCase() === 'mssql' ? 'mssql+pyodbc' : 'postgresql';\n // const databaseUrl = `${databaseDialect}://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n\n const defaultDatasource: ISolidDatabaseModule = this.solidRegistry.getDefaultSolidDatabaseModule()\n\n let databaseUrl: string;\n if (defaultDatasource.type() === DatasourceType.mssql) {\n const base = `mssql+pyodbc://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n const driver = encodeURIComponent('ODBC Driver 18 for SQL Server');\n databaseUrl = `${base}?driver=${driver}&TrustServerCertificate=yes`;\n }\n if (defaultDatasource.type() === DatasourceType.postgres) {\n databaseUrl = `postgresql://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n }\n\n if (!apiKey || apiKey.trim() === '') {\n this.logger.error(\n '❌ MCP_API_KEY environment variable is missing.\\n' +\n 'Set it before running:\\n' +\n ' export MCP_API_KEY=\"your_license_key\"\\n'\n );\n return;\n }\n\n this.logger.log('✔ MCP_API_KEY found.');\n\n // 2. Resolve paths\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const consumingProjectPath = path.resolve(process.cwd(), '..');\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n const detached = options?.detached ?? false;\n\n this.logger.log(`Mode: start`);\n this.logger.log(`Using repo path: ${repoPath}`);\n this.logger.log(`Detached mode: ${detached}`);\n this.logger.log(`Consuming project root: ${consumingProjectPath}`);\n\n // 3. Build docker compose args\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'up'];\n\n if (detached) {\n args.push('-d');\n }\n\n // Service names as defined in docker-compose.yml\n args.push('mcp_redis', 'mcp_server', 'mcp_celery_worker');\n\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n MCP_API_KEY: apiKey,\n HOST_SOLIDX_CONSUMING_PROJECT_ROOT: consumingProjectPath,\n DATABASE_URL: databaseUrl,\n };\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n // const envLog = Object.entries(env)\n // .map(([key, value]) => `${key}=${value ?? ''}`)\n // .join('\\n');\n // this.logger.log(`Using env overrides:\\n${envLog}`);\n\n await this.runDockerCommand(cmd, args, repoPath, env);\n\n this.logger.log(\n detached\n ? 'MCP containers started in detached mode.'\n : 'MCP containers started in foreground.'\n );\n }\n\n // ---------------------------------------------------------------\n // STOP\n // ---------------------------------------------------------------\n private async stopContainers(options?: McpCommandOptions): Promise<void> {\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n this.logger.log(`Mode: stop`);\n this.logger.log(`Using repo path: ${repoPath}`);\n\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'down'];\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n\n await this.runDockerCommand(cmd, args, repoPath, process.env);\n\n this.logger.log('MCP containers stopped (docker compose down).');\n }\n\n // ---------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------\n private resolvePath(inputPath: string): string {\n if (inputPath.startsWith('~')) {\n return path.join(process.env.HOME!, inputPath.slice(1));\n }\n return path.resolve(inputPath);\n }\n\n private runDockerCommand(\n cmd: string,\n args: string[],\n cwd: string,\n env: NodeJS.ProcessEnv,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, {\n cwd,\n env,\n stdio: 'inherit',\n });\n\n child.on('error', (err) => {\n this.logger.error(`Docker error: ${err.message}`);\n reject(err);\n });\n\n child.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Docker exited with code ${code}`));\n });\n });\n }\n\n // Flags\n\n @Option({\n flags: '-d, --detached [boolean]',\n description: 'Run containers in detached mode (only for start, default: false)',\n required: false,\n })\n parseDetached(val: string): boolean {\n if (val === undefined) return false;\n return val === 'true' || val === '1';\n }\n\n @Option({\n flags: '-p, --repo-path [path]',\n description: 'Path to the SolidX MCP Server repo containing docker-compose.yml',\n required: false,\n })\n parseRepoPath(val: string): string {\n return val;\n }\n}\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { CommandRunner } from 'nest-commander';
|
|
2
2
|
import { ModelMetadataService } from 'src/services/model-metadata.service';
|
|
3
|
-
import { CommandError } from './helper';
|
|
4
3
|
interface CommandOptions {
|
|
5
|
-
name
|
|
6
|
-
id
|
|
7
|
-
|
|
4
|
+
name?: string;
|
|
5
|
+
id?: number;
|
|
6
|
+
fieldIds?: number[];
|
|
7
|
+
fieldNames?: string[];
|
|
8
|
+
dryRun?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare class RefreshModelCommand extends CommandRunner {
|
|
10
11
|
private readonly modelMetadataService;
|
|
@@ -14,7 +15,9 @@ export declare class RefreshModelCommand extends CommandRunner {
|
|
|
14
15
|
parseId(val: string): number;
|
|
15
16
|
parseName(val: string): string;
|
|
16
17
|
parseDryRun(val: string): boolean;
|
|
17
|
-
|
|
18
|
+
parseFieldIds(val: string): number[];
|
|
19
|
+
parseFieldNames(val: string): string[];
|
|
20
|
+
private validate;
|
|
18
21
|
}
|
|
19
22
|
export {};
|
|
20
23
|
//# sourceMappingURL=refresh-model.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-model.command.d.ts","sourceRoot":"","sources":["../../src/commands/refresh-model.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"refresh-model.command.d.ts","sourceRoot":"","sources":["../../src/commands/refresh-model.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAIa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,oBAAoB;IAI7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAEzD,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAapC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAStC,OAAO,CAAC,QAAQ;CAOjB"}
|
|
@@ -31,6 +31,8 @@ let RefreshModelCommand = RefreshModelCommand_1 = class RefreshModelCommand exte
|
|
|
31
31
|
modelId: options.id,
|
|
32
32
|
modelUserKey: options.name,
|
|
33
33
|
dryRun: options.dryRun,
|
|
34
|
+
fieldIdsForRefresh: options.fieldIds,
|
|
35
|
+
fieldNamesForRefresh: options.fieldNames,
|
|
34
36
|
};
|
|
35
37
|
await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);
|
|
36
38
|
}
|
|
@@ -44,6 +46,18 @@ let RefreshModelCommand = RefreshModelCommand_1 = class RefreshModelCommand exte
|
|
|
44
46
|
this.logger.debug(`Dry run : ${val}`);
|
|
45
47
|
return (val === 'false') ? false : true;
|
|
46
48
|
}
|
|
49
|
+
parseFieldIds(val) {
|
|
50
|
+
if (!val.startsWith('[') || !val.endsWith(']')) {
|
|
51
|
+
throw new common_1.BadRequestException('Field IDs should be a json array');
|
|
52
|
+
}
|
|
53
|
+
return JSON.parse(val).map((id) => parseInt(id));
|
|
54
|
+
}
|
|
55
|
+
parseFieldNames(val) {
|
|
56
|
+
if (!val.startsWith('[') || !val.endsWith(']')) {
|
|
57
|
+
throw new common_1.BadRequestException('Field Names should be a json array');
|
|
58
|
+
}
|
|
59
|
+
return JSON.parse(val).map((name) => name.toString());
|
|
60
|
+
}
|
|
47
61
|
validate(options) {
|
|
48
62
|
if (!options.id && !options.name) {
|
|
49
63
|
return [new helper_1.CommandError('Model ID or Model Name is required')];
|
|
@@ -79,6 +93,24 @@ __decorate([
|
|
|
79
93
|
__metadata("design:paramtypes", [String]),
|
|
80
94
|
__metadata("design:returntype", Boolean)
|
|
81
95
|
], RefreshModelCommand.prototype, "parseDryRun", null);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, nest_commander_1.Option)({
|
|
98
|
+
flags: '-fids, --fieldIds [Array of field IDs]',
|
|
99
|
+
description: 'Json array of Field IDs from the ss_field_metadata table',
|
|
100
|
+
}),
|
|
101
|
+
__metadata("design:type", Function),
|
|
102
|
+
__metadata("design:paramtypes", [String]),
|
|
103
|
+
__metadata("design:returntype", Array)
|
|
104
|
+
], RefreshModelCommand.prototype, "parseFieldIds", null);
|
|
105
|
+
__decorate([
|
|
106
|
+
(0, nest_commander_1.Option)({
|
|
107
|
+
flags: '-fnames, --fieldNames [Array of field Names]',
|
|
108
|
+
description: 'Json array of Field Names from the ss_field_metadata table',
|
|
109
|
+
}),
|
|
110
|
+
__metadata("design:type", Function),
|
|
111
|
+
__metadata("design:paramtypes", [String]),
|
|
112
|
+
__metadata("design:returntype", Array)
|
|
113
|
+
], RefreshModelCommand.prototype, "parseFieldNames", null);
|
|
82
114
|
exports.RefreshModelCommand = RefreshModelCommand = RefreshModelCommand_1 = __decorate([
|
|
83
115
|
(0, nest_commander_1.Command)({
|
|
84
116
|
name: 'refresh-model',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-model.command.js","sourceRoot":"","sources":["../../src/commands/refresh-model.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"refresh-model.command.js","sourceRoot":"","sources":["../../src/commands/refresh-model.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { CommandError } from './helper';\n\ninterface CommandOptions {\n name?: string;\n id?: number;\n fieldIds?: number[];\n fieldNames?: string[];\n dryRun?: boolean;\n}\n\n@Command({\n name: 'refresh-model',\n description: 'Updates a model and its fields i.e (entity,dto,service,controller files)',\n})\nexport class RefreshModelCommand extends CommandRunner {\n constructor(\n private readonly modelMetadataService: ModelMetadataService,\n ) {\n super();\n }\n private readonly logger = new Logger(RefreshModelCommand.name);\n\n async run(_passedParam: string[], options?: CommandOptions): Promise<void> {\n const errors = this.validate(options);\n if (errors.length) {\n errors.forEach((error) => this.logger.error(error));\n return;\n }\n\n const codeGenerationOptions = {\n modelId: options.id,\n modelUserKey: options.name,\n dryRun: options.dryRun,\n fieldIdsForRefresh: options.fieldIds,\n fieldNamesForRefresh: options.fieldNames,\n };\n await this.modelMetadataService.handleGenerateCode(codeGenerationOptions);\n }\n\n // Accept the model ID as an argument\n @Option({\n flags: '-i, --id [model ID]',\n description: 'Model ID from the ss_model_metadata table',\n })\n parseId(val: string): number {\n return +val;\n }\n\n // Accept the module name as an argument\n @Option({\n flags: '-n, --name [model name]',\n description: 'Model Name from the ss_model_metadata table',\n })\n parseName(val: string): string {\n return val;\n }\n\n // Accept dry run as an argument\n @Option({\n flags: '-d, --dryRun [dry run]',\n description: 'Dry run the command',\n })\n parseDryRun(val: string): boolean {\n this.logger.debug(`Dry run : ${val}`);\n return (val === 'false') ? false : true;\n }\n\n // Accept field IDs as an argument\n @Option({\n flags: '-fids, --fieldIds [Array of field IDs]',\n description: 'Json array of Field IDs from the ss_field_metadata table',\n })\n parseFieldIds(val: string): number[] {\n //Check if the value is a json array\n if (!val.startsWith('[') || !val.endsWith(']')) {\n throw new BadRequestException('Field IDs should be a json array');\n }\n return JSON.parse(val).map((id: string) => parseInt(id));\n }\n\n // Accept field Names as an argument\n @Option({\n flags: '-fnames, --fieldNames [Array of field Names]',\n description: 'Json array of Field Names from the ss_field_metadata table',\n })\n parseFieldNames(val: string): string[] {\n //Check if the value is a json array\n if (!val.startsWith('[') || !val.endsWith(']')) {\n throw new BadRequestException('Field Names should be a json array');\n }\n return JSON.parse(val).map((name: string) => name.toString());\n }\n\n // Validate the options passed\n private validate(options: CommandOptions): CommandError[] {\n if (!options.id && !options.name) {\n return [new CommandError('Model ID or Model Name is required')];\n }\n return [];\n }\n\n}\n"]}
|
|
@@ -75,7 +75,7 @@ __decorate([
|
|
|
75
75
|
exports.RemoveFieldsCommand = RemoveFieldsCommand = RemoveFieldsCommand_1 = __decorate([
|
|
76
76
|
(0, nest_commander_1.Command)({
|
|
77
77
|
name: 'remove-fields',
|
|
78
|
-
description: '
|
|
78
|
+
description: 'Removes fields from a model',
|
|
79
79
|
}),
|
|
80
80
|
__metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService])
|
|
81
81
|
], RemoveFieldsCommand);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-fields.command.js","sourceRoot":"","sources":["../../src/commands/remove-fields.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA6D;AAC7D,mDAAgE;AAChE,+EAA2E;AAapE,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,8BAAa;IACpD,YACmB,oBAA0C;QAE3D,KAAK,EAAE,CAAC;QAFS,yBAAoB,GAApB,oBAAoB,CAAsB;QAI5C,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAD/D,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,YAAsB,EAAE,OAAwB;QAExD,MAAM,qBAAqB,GAA0B;YACnD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,kBAAkB,EAAE,OAAO,CAAC,QAAQ;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,MAAM,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAClF,CAAC;IAOD,aAAa,CAAC,GAAW;QAEvB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,4BAAmB,CAAC,kCAAkC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAOD,YAAY,CAAC,GAAW;QACtB,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAMD,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;CAGF,CAAA;AAnDY,kDAAmB;AAwB9B;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,IAAI;KACf,CAAC;;;;wDAOD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,IAAI;KACf,CAAC;;;;uDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qBAAqB;KACnC,CAAC;;;;sDAID;8BAhDU,mBAAmB;IAJ/B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"remove-fields.command.js","sourceRoot":"","sources":["../../src/commands/remove-fields.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA6D;AAC7D,mDAAgE;AAChE,+EAA2E;AAapE,IAAM,mBAAmB,2BAAzB,MAAM,mBAAoB,SAAQ,8BAAa;IACpD,YACmB,oBAA0C;QAE3D,KAAK,EAAE,CAAC;QAFS,yBAAoB,GAApB,oBAAoB,CAAsB;QAI5C,WAAM,GAAG,IAAI,eAAM,CAAC,qBAAmB,CAAC,IAAI,CAAC,CAAC;IAD/D,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,YAAsB,EAAE,OAAwB;QAExD,MAAM,qBAAqB,GAA0B;YACnD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,kBAAkB,EAAE,OAAO,CAAC,QAAQ;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,MAAM,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;IAClF,CAAC;IAOD,aAAa,CAAC,GAAW;QAEvB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,4BAAmB,CAAC,kCAAkC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAOD,YAAY,CAAC,GAAW;QACtB,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAMD,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;CAGF,CAAA;AAnDY,kDAAmB;AAwB9B;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,IAAI;KACf,CAAC;;;;wDAOD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,IAAI;KACf,CAAC;;;;uDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qBAAqB;KACnC,CAAC;;;;sDAID;8BAhDU,mBAAmB;IAJ/B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,6BAA6B;KAC3C,CAAC;qCAGyC,6CAAoB;GAFlD,mBAAmB,CAmD/B","sourcesContent":["import { BadRequestException, Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { CodeGenerationOptions } from '../interfaces';\n\ninterface CommandOptions {\n fieldIds: number[];\n modelId: number;\n dryRun: boolean;\n}\n\n@Command({\n name: 'remove-fields',\n description: 'Removes fields from a model',\n})\nexport class RemoveFieldsCommand extends CommandRunner {\n constructor(\n private readonly modelMetadataService: ModelMetadataService,\n ) {\n super();\n }\n private readonly logger = new Logger(RemoveFieldsCommand.name);\n\n async run(_passedParam: string[], options?: CommandOptions): Promise<void> {\n\n const codeGenerationOptions: CodeGenerationOptions = {\n modelId: options.modelId,\n fieldIdsForRemoval: options.fieldIds,\n dryRun: options.dryRun,\n };\n\n await this.modelMetadataService.generateRemoveFieldsCode(codeGenerationOptions);\n }\n\n @Option({\n flags: '-fids, --fieldIds [Array of field IDs]',\n description: 'Json array of Field IDs from the ss_field_metadata table',\n required: true,\n })\n parseFieldIds(val: string): number[] {\n //Check if the value is a json array\n if (!val.startsWith('[') || !val.endsWith(']')) {\n throw new BadRequestException('Field IDs should be a json array');\n }\n return JSON.parse(val).map((id: string) => parseInt(id));\n }\n\n @Option({\n flags: '-mid, --modelId [model ID]',\n description: 'Model id from the ss_model_metadata table',\n required: true,\n })\n parseModelId(val: string): number {\n return +val;\n }\n\n @Option({\n flags: '-d, --dryRun [dry run]',\n description: 'Dry run the command',\n })\n parseDryRun(val: string): boolean {\n this.logger.debug(`Dry run : ${val}`);\n return (val === 'false') ? false : true;\n }\n\n\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommandRunner } from 'nest-commander';
|
|
2
2
|
import { SolidRegistry } from 'src/helpers/solid-registry';
|
|
3
3
|
interface SeedCommandOptions {
|
|
4
|
+
conf?: string;
|
|
4
5
|
seeder?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare class SeedCommand extends CommandRunner {
|
|
@@ -8,6 +9,7 @@ export declare class SeedCommand extends CommandRunner {
|
|
|
8
9
|
private readonly logger;
|
|
9
10
|
constructor(solidRegistry: SolidRegistry);
|
|
10
11
|
run(passedParam: string[], options?: SeedCommandOptions): Promise<void>;
|
|
12
|
+
parseConf(val: string): string;
|
|
11
13
|
parseString(val: string): string;
|
|
12
14
|
}
|
|
13
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,UAAU,kBAAkB;
|
|
1
|
+
{"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C7E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGjC"}
|
|
@@ -21,6 +21,20 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
|
|
|
21
21
|
this.logger = new common_1.Logger(SeedCommand_1.name);
|
|
22
22
|
}
|
|
23
23
|
async run(passedParam, options) {
|
|
24
|
+
let parsedConf = null;
|
|
25
|
+
if (options?.conf !== undefined) {
|
|
26
|
+
try {
|
|
27
|
+
parsedConf = JSON.parse(options.conf);
|
|
28
|
+
this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
this.logger.error('Failed to parse --conf. Please provide valid JSON.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.logger.log('No --conf flag provided. Running with default seeder behavior.');
|
|
37
|
+
}
|
|
24
38
|
const seeder = this.solidRegistry
|
|
25
39
|
.getSeeders()
|
|
26
40
|
.filter((seeder) => seeder.name === options.seeder)
|
|
@@ -31,13 +45,26 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
|
|
|
31
45
|
return;
|
|
32
46
|
}
|
|
33
47
|
this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);
|
|
34
|
-
await seeder.seed();
|
|
48
|
+
await seeder.seed(parsedConf);
|
|
49
|
+
}
|
|
50
|
+
parseConf(val) {
|
|
51
|
+
return val;
|
|
35
52
|
}
|
|
36
53
|
parseString(val) {
|
|
37
54
|
return val;
|
|
38
55
|
}
|
|
39
56
|
};
|
|
40
57
|
exports.SeedCommand = SeedCommand;
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, nest_commander_1.Option)({
|
|
60
|
+
flags: '-c, --conf [configuration json]',
|
|
61
|
+
description: 'A configuration json, pass a valid json string.',
|
|
62
|
+
required: false
|
|
63
|
+
}),
|
|
64
|
+
__metadata("design:type", Function),
|
|
65
|
+
__metadata("design:paramtypes", [String]),
|
|
66
|
+
__metadata("design:returntype", String)
|
|
67
|
+
], SeedCommand.prototype, "parseConf", null);
|
|
41
68
|
__decorate([
|
|
42
69
|
(0, nest_commander_1.Option)({
|
|
43
70
|
flags: '-s, --seeder [seeder name]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;
|
|
1
|
+
{"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;QAG3D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAID,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC9B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAYD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAQD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA/DY,kCAAW;AAkDtB;IAVC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;4CAQD;AAQD;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,6BAA6B;KAC5C,CAAC;;;;8CAGD;sBA9DU,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;qCAIjC,8BAAa;GAH9C,WAAW,CA+DvB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\n\ninterface SeedCommandOptions {\n conf?: string;\n seeder?: string;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n // TODO: check if options.conf is non empty and a valid json string only is -c flag is passed.\n // TODO: convert to json object JSON.parse\n let parsedConf: any = null;\n\n // Parse conf only if provided\n if (options?.conf !== undefined) {\n try {\n parsedConf = JSON.parse(options.conf);\n this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);\n } catch (err) {\n this.logger.error('Failed to parse --conf. Please provide valid JSON.');\n return;\n }\n } else {\n this.logger.log('No --conf flag provided. Running with default seeder behavior.');\n }\n\n\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n @Option({\n flags: '-c, --conf [configuration json]',\n description: 'A configuration json, pass a valid json string.',\n required: false\n })\n /**\n * TODO\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n parseConf(val: string): string {\n return val;\n }\n\n @Option({\n flags: '-s, --seeder [seeder name]',\n description: 'The seeder to run.',\n required: true,\n defaultValue: 'ModuleMetadataSeederService'\n })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
|
|
@@ -150,7 +150,7 @@ __decorate([
|
|
|
150
150
|
], AuthenticationController.prototype, "logout", null);
|
|
151
151
|
exports.AuthenticationController = AuthenticationController = AuthenticationController_1 = __decorate([
|
|
152
152
|
(0, common_1.Controller)('iam'),
|
|
153
|
-
(0, swagger_1.ApiTags)("
|
|
153
|
+
(0, swagger_1.ApiTags)("Solid Core"),
|
|
154
154
|
__metadata("design:paramtypes", [authentication_service_1.AuthenticationService])
|
|
155
155
|
], AuthenticationController);
|
|
156
156
|
//# sourceMappingURL=authentication.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/authentication.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, HttpCode, HttpStatus, Logger, Post, Res } from '@nestjs/common';\nimport { ApiBearerAuth, ApiTags } from '@nestjs/swagger';\nimport { Response } from 'express';\nimport { ActiveUser } from \"../decorators/active-user.decorator\";\nimport { Public } from '../decorators/public.decorator';\nimport { ChangePasswordDto } from \"../dtos/change-password.dto\";\nimport { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';\nimport { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';\nimport { RefreshTokenDto } from '../dtos/refresh-token.dto';\nimport { SignInDto } from '../dtos/sign-in.dto';\nimport { SignUpDto } from '../dtos/sign-up.dto';\nimport { ActiveUserData } from \"../interfaces/active-user-data.interface\";\nimport { AuthenticationService } from '../services/authentication.service';\n\n\n// @Auth(AuthType.None)\n@Controller('iam')\n@ApiTags(\"Solid Core\")\n// @UseGuards(ThrottlerGuard)\n// @SkipThrottle({login: true, short: true, burst: true, sustained: true}) // disable all sets by default for this controller\nexport class AuthenticationController {\n private readonly logger = new Logger(AuthenticationController.name);\n\n constructor(private readonly authService: AuthenticationService) { }\n\n @Public()\n // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only\n @Post('register')\n signUp(@Body() signUpDto: SignUpDto) {\n return this.authService.signUp(signUpDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('register-private')\n signUpPrivate(@Body() signUpDto: SignUpDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.signUp(signUpDto, activeUser);\n }\n\n @Public()\n // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only\n @HttpCode(HttpStatus.OK) // by default @Post does 201, we wanted 200 - hence using @HttpCode(HttpStatus.OK)\n @Post('authenticate')\n async signIn(\n @Res({ passthrough: true }) response: Response,\n @Body() signInDto: SignInDto\n ) {\n // This means that we are passing the token back in plain text. \n // This is less secure. \n // console.log(\"signInDto in Signin Controller\", signInDto);\n\n return this.authService.signIn(signInDto);\n\n // This means we are setting the token as a http only cookie.\n // const accessToken = await this.authService.signIn(signInDto);\n // response.cookie('accessToken', accessToken, {\n // secure: true,\n // httpOnly: true,\n // sameSite: true,\n // });\n }\n\n @Public()\n // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only\n @HttpCode(HttpStatus.OK) // changed since the default is 201\n @Post('refresh-tokens')\n refreshTokens(@Body() refreshTokenDto: RefreshTokenDto) {\n return this.authService.refreshTokens(refreshTokenDto);\n }\n\n @Public()\n // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only\n @Post('initiate/forgot-password')\n initiateForgotPassword(@Body() initiateForgotPasswordDto: InitiateForgotPasswordDto) {\n return this.authService.initiateForgotPassword(initiateForgotPasswordDto);\n }\n\n @Public()\n // @SkipThrottle({ login: false, short: true, burst: true, sustained: true }) //Enable the login throttle only\n @Post('confirm/forgot-password')\n confirmForgotPassword(@Body() confirmForgotPasswordDto: ConfirmForgotPasswordDto) {\n return this.authService.confirmForgotPassword(confirmForgotPasswordDto);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('change-password')\n changePassword(@Body() changePasswordDto: ChangePasswordDto, @ActiveUser() activeUser: ActiveUserData) {\n return this.authService.changePassword(changePasswordDto, activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('me')\n me(\n @ActiveUser() activeUser: ActiveUserData\n ) {\n return this.authService.me(activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('logout')\n @Public()\n @HttpCode(HttpStatus.OK)\n async logout(@Body('refreshToken') refreshToken: string) {\n return this.authService.logout(refreshToken);\n }\n}\n"]}
|
|
@@ -206,7 +206,7 @@ __decorate([
|
|
|
206
206
|
], EmailTemplateController.prototype, "generateMailgenTemplate", null);
|
|
207
207
|
exports.EmailTemplateController = EmailTemplateController = __decorate([
|
|
208
208
|
(0, common_1.Controller)('email-template'),
|
|
209
|
-
(0, swagger_1.ApiTags)("
|
|
209
|
+
(0, swagger_1.ApiTags)("Solid Core"),
|
|
210
210
|
__metadata("design:paramtypes", [email_template_service_1.EmailTemplateService])
|
|
211
211
|
], EmailTemplateController);
|
|
212
212
|
//# sourceMappingURL=email-template.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAgI;AAChI,+DAA+D;AAC/D,6CAAmE;AACnE,iFAA2E;AAC3E,iFAA2E;AAC3E,+EAA0E;AAG1E,mCAAoC;AAK7B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAI,CAAC;IAK/D,MAAM,CAAS,SAAiC,EAAmB,KAAiC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAKD,UAAU,CAAS,UAAoC,EAAmB,aAAsC,EAAE;QAChH,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAKD,MAAM,CAAc,EAAU,EAAU,SAAiC,EAAmB,KAAiC;QAC3H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAcK,AAAN,KAAK,CAAC,QAAQ,CAAU,KAAU;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAIK,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU,EAAW,KAAU;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAAS,GAAa;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAKD,uBAAuB,CAAwB,YAAoB;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAGjD,IAAI,aAAa,GAAG,IAAI,OAAO,CAAC;YAC9B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;gBAEP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;aAGb;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,6CAA6C;oBACzE,MAAM,EAAE;wBACN,YAAY,EAAE,uBAAuB,OAAO,iEAAiE;wBAC7G,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,YAAY,OAAO,sCAAsC;wBACvE,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,uGAAuG;wBACrH,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE,qBAAqB;yBAC5B;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QAGD,IAAI,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAc9C,OAAO,SAAS,CAAC;IACnB,CAAC;CAEF,CAAA;AApJY,0DAAuB;AAMlC;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,GAAE;IACN,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;qCAAxC,kDAAsB,EAA0B,KAAK;;qDAE9E;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC3B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAwC,WAAA,IAAA,sBAAa,GAAE,CAAA;;;;yDAExE;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;6CAAxC,kDAAsB,EAA0B,KAAK;;qDAEvG;AAcK;IAZL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACzE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,YAAG,GAAE;;IACU,WAAA,IAAA,cAAK,GAAE,CAAA;;;;uDAEtB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;;IACI,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,cAAK,GAAE,CAAA;;;;sDAE9C;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,OAAO,CAAC;;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;yDAEvB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,KAAK,CAAC;;IACA,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;qDAExB;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,gCAAgC,CAAC;IACrC,IAAA,eAAM,EAAC,cAAc,EAAE,WAAW,CAAC;;IACX,WAAA,IAAA,cAAK,EAAC,cAAc,CAAC,CAAA;;;;sEAqF7C;kCAlJU,uBAAuB;IAFnC,IAAA,mBAAU,EAAC,gBAAgB,CAAC;IAC5B,IAAA,iBAAO,EAAC,QAAQ,CAAC;qCAEsB,6CAAoB;GAD/C,uBAAuB,CAoJnC","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { EmailTemplateService } from '../services/email-template.service';\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this. \nimport Mailgen = require('mailgen');\n\n\n@Controller('email-template')\n@ApiTags(\"Common\")\nexport class EmailTemplateController {\n constructor(private readonly service: EmailTemplateService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = process.env.SOLID_APP_NAME;\n const appUrl = process.env.SOLID_APP_WEBSITE_URL;\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAgI;AAChI,+DAA+D;AAC/D,6CAAmE;AACnE,iFAA2E;AAC3E,iFAA2E;AAC3E,+EAA0E;AAG1E,mCAAoC;AAK7B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAI,CAAC;IAK/D,MAAM,CAAS,SAAiC,EAAmB,KAAiC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAKD,UAAU,CAAS,UAAoC,EAAmB,aAAsC,EAAE;QAChH,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAKD,MAAM,CAAc,EAAU,EAAU,SAAiC,EAAmB,KAAiC;QAC3H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAcK,AAAN,KAAK,CAAC,QAAQ,CAAU,KAAU;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAIK,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU,EAAW,KAAU;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAAS,GAAa;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAKD,uBAAuB,CAAwB,YAAoB;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAGjD,IAAI,aAAa,GAAG,IAAI,OAAO,CAAC;YAC9B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;gBAEP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;aAGb;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,6CAA6C;oBACzE,MAAM,EAAE;wBACN,YAAY,EAAE,uBAAuB,OAAO,iEAAiE;wBAC7G,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,YAAY,OAAO,sCAAsC;wBACvE,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,uGAAuG;wBACrH,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE,qBAAqB;yBAC5B;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QAGD,IAAI,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAc9C,OAAO,SAAS,CAAC;IACnB,CAAC;CAEF,CAAA;AApJY,0DAAuB;AAMlC;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,GAAE;IACN,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;qCAAxC,kDAAsB,EAA0B,KAAK;;qDAE9E;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC3B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAwC,WAAA,IAAA,sBAAa,GAAE,CAAA;;;;yDAExE;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;6CAAxC,kDAAsB,EAA0B,KAAK;;qDAEvG;AAcK;IAZL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACzE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,YAAG,GAAE;;IACU,WAAA,IAAA,cAAK,GAAE,CAAA;;;;uDAEtB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;;IACI,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,cAAK,GAAE,CAAA;;;;sDAE9C;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,OAAO,CAAC;;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;yDAEvB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,KAAK,CAAC;;IACA,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;qDAExB;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,gCAAgC,CAAC;IACrC,IAAA,eAAM,EAAC,cAAc,EAAE,WAAW,CAAC;;IACX,WAAA,IAAA,cAAK,EAAC,cAAc,CAAC,CAAA;;;;sEAqF7C;kCAlJU,uBAAuB;IAFnC,IAAA,mBAAU,EAAC,gBAAgB,CAAC;IAC5B,IAAA,iBAAO,EAAC,YAAY,CAAC;qCAEkB,6CAAoB;GAD/C,uBAAuB,CAoJnC","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { EmailTemplateService } from '../services/email-template.service';\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this. \nimport Mailgen = require('mailgen');\n\n\n@Controller('email-template')\n@ApiTags(\"Solid Core\")\nexport class EmailTemplateController {\n constructor(private readonly service: EmailTemplateService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = process.env.SOLID_APP_NAME;\n const appUrl = process.env.SOLID_APP_WEBSITE_URL;\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
|