@solidxai/core 0.1.13-beta.2 → 0.1.13-beta.21
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/CHANGELOG.md +10107 -0
- package/CLAUDE.md +5 -6
- package/README.md +19 -0
- package/dist/commands/run-tests.command.d.ts +9 -1
- package/dist/commands/run-tests.command.d.ts.map +1 -1
- package/dist/commands/run-tests.command.js +69 -6
- package/dist/commands/run-tests.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 +21 -0
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/config/cache.options.d.ts.map +1 -1
- package/dist/config/cache.options.js +2 -2
- package/dist/config/cache.options.js.map +1 -1
- package/dist/constants/chatter-message.constants.d.ts +1 -0
- package/dist/constants/chatter-message.constants.d.ts.map +1 -1
- package/dist/constants/chatter-message.constants.js +3 -1
- package/dist/constants/chatter-message.constants.js.map +1 -1
- package/dist/constants/draft-publish-fields.d.ts +2 -0
- package/dist/constants/draft-publish-fields.d.ts.map +1 -0
- package/dist/constants/draft-publish-fields.js +5 -0
- package/dist/constants/draft-publish-fields.js.map +1 -0
- package/dist/constants/error-messages.d.ts +7 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +7 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants/media-file-types.d.ts +12 -0
- package/dist/constants/media-file-types.d.ts.map +1 -1
- package/dist/constants/media-file-types.js +66 -1
- package/dist/constants/media-file-types.js.map +1 -1
- package/dist/constants/success-messages.d.ts +3 -0
- package/dist/constants/success-messages.d.ts.map +1 -1
- package/dist/constants/success-messages.js +3 -0
- package/dist/constants/success-messages.js.map +1 -1
- package/dist/constants/user.constants.d.ts +2 -0
- package/dist/constants/user.constants.d.ts.map +1 -0
- package/dist/constants/user.constants.js +5 -0
- package/dist/constants/user.constants.js.map +1 -0
- package/dist/controllers/action-metadata.controller.d.ts +1 -1
- package/dist/controllers/action-metadata.controller.js +1 -1
- package/dist/controllers/agent-event.controller.d.ts +1 -1
- package/dist/controllers/agent-event.controller.js +1 -1
- package/dist/controllers/agent-session.controller.d.ts +1 -1
- package/dist/controllers/agent-session.controller.js +1 -1
- package/dist/controllers/authentication.controller.d.ts +1 -1
- package/dist/controllers/authentication.controller.d.ts.map +1 -1
- package/dist/controllers/authentication.controller.js +4 -3
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +5 -0
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +14 -0
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
- package/dist/controllers/dashboard-user-layout.controller.js +1 -1
- package/dist/controllers/email-template.controller.d.ts +1 -1
- package/dist/controllers/email-template.controller.js +1 -1
- package/dist/controllers/export-template.controller.d.ts +1 -1
- package/dist/controllers/export-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-template.controller.js +6 -4
- package/dist/controllers/export-template.controller.js.map +1 -1
- package/dist/controllers/export-transaction.controller.d.ts +1 -1
- package/dist/controllers/export-transaction.controller.js +1 -1
- package/dist/controllers/field-metadata.controller.d.ts +2 -2
- package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
- package/dist/controllers/import-transaction-error-log.controller.js +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +1 -1
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.js +7 -7
- package/dist/controllers/import-transaction.controller.js.map +1 -1
- package/dist/controllers/list-of-values.controller.d.ts +1 -1
- package/dist/controllers/list-of-values.controller.js +1 -1
- package/dist/controllers/locale.controller.d.ts +1 -1
- package/dist/controllers/locale.controller.js +1 -1
- package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
- package/dist/controllers/mcp-audit-log.controller.js +1 -1
- package/dist/controllers/media.controller.d.ts +2 -2
- package/dist/controllers/media.controller.d.ts.map +1 -1
- package/dist/controllers/media.controller.js +13 -8
- package/dist/controllers/media.controller.js.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
- package/dist/controllers/menu-item-metadata.controller.js +1 -1
- package/dist/controllers/model-sequence.controller.d.ts +1 -1
- package/dist/controllers/model-sequence.controller.js +1 -1
- package/dist/controllers/module-package.controller.d.ts.map +1 -1
- package/dist/controllers/module-package.controller.js +2 -3
- package/dist/controllers/module-package.controller.js.map +1 -1
- package/dist/controllers/mpin-authentication.controller.d.ts +44 -0
- package/dist/controllers/mpin-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/mpin-authentication.controller.js +102 -0
- package/dist/controllers/mpin-authentication.controller.js.map +1 -0
- package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
- package/dist/controllers/mq-message-queue.controller.js +1 -1
- package/dist/controllers/mq-message.controller.d.ts +1 -1
- package/dist/controllers/mq-message.controller.js +1 -1
- package/dist/controllers/permission-metadata.controller.d.ts +1 -1
- package/dist/controllers/permission-metadata.controller.js +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -1
- package/dist/controllers/role-metadata.controller.js +1 -1
- package/dist/controllers/saved-filters.controller.d.ts +1 -1
- package/dist/controllers/saved-filters.controller.js +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +1 -1
- package/dist/controllers/scheduled-job.controller.js +1 -1
- package/dist/controllers/security-rule.controller.d.ts +1 -1
- package/dist/controllers/security-rule.controller.js +1 -1
- package/dist/controllers/sms-template.controller.d.ts +1 -1
- package/dist/controllers/sms-template.controller.js +1 -1
- package/dist/controllers/user-activity-history.controller.d.ts +1 -1
- package/dist/controllers/user-activity-history.controller.js +1 -1
- package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
- package/dist/controllers/user-view-metadata.controller.js +1 -1
- package/dist/controllers/user.controller.d.ts +2 -2
- package/dist/controllers/user.controller.js +2 -2
- package/dist/controllers/view-metadata.controller.d.ts +2 -2
- package/dist/controllers/view-metadata.controller.js +1 -1
- package/dist/controllers/workflow-definition.controller.d.ts +1 -1
- package/dist/controllers/workflow-definition.controller.js +1 -1
- package/dist/controllers/workflow-execution-artifact.controller.d.ts +1 -1
- package/dist/controllers/workflow-execution-artifact.controller.js +1 -1
- package/dist/controllers/workflow-execution-log.controller.d.ts +1 -1
- package/dist/controllers/workflow-execution-log.controller.js +1 -1
- package/dist/controllers/workflow-execution.controller.d.ts +1 -1
- package/dist/controllers/workflow-execution.controller.js +1 -1
- package/dist/controllers/workflow-secret.controller.d.ts +1 -1
- package/dist/controllers/workflow-secret.controller.js +1 -1
- package/dist/controllers/workflow-step-execution.controller.d.ts +1 -1
- package/dist/controllers/workflow-step-execution.controller.js +1 -1
- package/dist/controllers/workflow-trigger-execution.controller.d.ts +1 -1
- package/dist/controllers/workflow-trigger-execution.controller.js +1 -1
- package/dist/dtos/basic-filters.dto.d.ts +0 -1
- package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
- package/dist/dtos/basic-filters.dto.js +1 -6
- package/dist/dtos/basic-filters.dto.js.map +1 -1
- package/dist/dtos/change-mpin.dto.d.ts +6 -0
- package/dist/dtos/change-mpin.dto.d.ts.map +1 -0
- package/dist/dtos/change-mpin.dto.js +39 -0
- package/dist/dtos/change-mpin.dto.js.map +1 -0
- package/dist/dtos/create-field-metadata.dto.d.ts +3 -6
- package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-field-metadata.dto.js +15 -10
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-model-sequence.dto.d.ts +1 -1
- package/dist/dtos/create-model-sequence.dto.d.ts.map +1 -1
- package/dist/dtos/create-model-sequence.dto.js +1 -1
- package/dist/dtos/create-model-sequence.dto.js.map +1 -1
- package/dist/dtos/mpin-login.dto.d.ts +5 -0
- package/dist/dtos/mpin-login.dto.d.ts.map +1 -0
- package/dist/dtos/mpin-login.dto.js +33 -0
- package/dist/dtos/mpin-login.dto.js.map +1 -0
- package/dist/dtos/setup-mpin.dto.d.ts +7 -0
- package/dist/dtos/setup-mpin.dto.d.ts.map +1 -0
- package/dist/dtos/setup-mpin.dto.js +47 -0
- package/dist/dtos/setup-mpin.dto.js.map +1 -0
- package/dist/entities/common.entity.d.ts +4 -0
- package/dist/entities/common.entity.d.ts.map +1 -1
- package/dist/entities/common.entity.js +25 -1
- package/dist/entities/common.entity.js.map +1 -1
- package/dist/entities/dashboard-user-layout.entity.js +2 -2
- package/dist/entities/dashboard-user-layout.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 +5 -1
- package/dist/entities/field-metadata.entity.js.map +1 -1
- package/dist/entities/saved-filters.entity.js +3 -3
- package/dist/entities/saved-filters.entity.js.map +1 -1
- package/dist/entities/user-device-credential.entity.d.ts +18 -0
- package/dist/entities/user-device-credential.entity.d.ts.map +1 -0
- package/dist/entities/user-device-credential.entity.js +91 -0
- package/dist/entities/user-device-credential.entity.js.map +1 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +36 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.js.map +1 -1
- package/dist/entities/workflow-execution-artifact.entity.d.ts.map +1 -1
- package/dist/entities/workflow-execution-artifact.entity.js +4 -3
- package/dist/entities/workflow-execution-artifact.entity.js.map +1 -1
- package/dist/entities/workflow-execution-log.entity.d.ts.map +1 -1
- package/dist/entities/workflow-execution-log.entity.js +4 -3
- package/dist/entities/workflow-execution-log.entity.js.map +1 -1
- package/dist/entities/workflow-execution.entity.d.ts.map +1 -1
- package/dist/entities/workflow-execution.entity.js +3 -2
- package/dist/entities/workflow-execution.entity.js.map +1 -1
- package/dist/entities/workflow-secret.entity.d.ts.map +1 -1
- package/dist/entities/workflow-secret.entity.js +3 -2
- package/dist/entities/workflow-secret.entity.js.map +1 -1
- package/dist/entities/workflow-step-execution.entity.d.ts.map +1 -1
- package/dist/entities/workflow-step-execution.entity.js +3 -2
- package/dist/entities/workflow-step-execution.entity.js.map +1 -1
- package/dist/entities/workflow-trigger-execution.entity.d.ts.map +1 -1
- package/dist/entities/workflow-trigger-execution.entity.js +7 -6
- package/dist/entities/workflow-trigger-execution.entity.js.map +1 -1
- package/dist/factories/mail.factory.d.ts.map +1 -1
- package/dist/factories/mail.factory.js +4 -0
- package/dist/factories/mail.factory.js.map +1 -1
- package/dist/filters/http-exception.filter.d.ts.map +1 -1
- package/dist/filters/http-exception.filter.js +5 -1
- package/dist/filters/http-exception.filter.js.map +1 -1
- package/dist/helpers/bootstrap.helper.d.ts +5 -2
- package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
- package/dist/helpers/bootstrap.helper.js +7 -3
- package/dist/helpers/bootstrap.helper.js.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +7 -0
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +66 -32
- package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
- package/dist/helpers/file-download.helper.d.ts +9 -0
- package/dist/helpers/file-download.helper.d.ts.map +1 -0
- package/dist/helpers/file-download.helper.js +19 -0
- package/dist/helpers/file-download.helper.js.map +1 -0
- package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/model-metadata-helper.service.js +30 -1
- package/dist/helpers/model-metadata-helper.service.js.map +1 -1
- package/dist/helpers/security.helper.d.ts +5 -1
- package/dist/helpers/security.helper.d.ts.map +1 -1
- package/dist/helpers/security.helper.js +15 -4
- package/dist/helpers/security.helper.js.map +1 -1
- package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
- package/dist/helpers/solid-core-error-codes-provider.service.js +45 -0
- package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
- package/dist/helpers/solid-microservice-adapter.service.d.ts.map +1 -1
- package/dist/helpers/solid-microservice-adapter.service.js +1 -1
- package/dist/helpers/solid-microservice-adapter.service.js.map +1 -1
- package/dist/helpers/solid-registry.js +1 -1
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/typeorm-db-helper.d.ts.map +1 -1
- package/dist/helpers/typeorm-db-helper.js +9 -0
- package/dist/helpers/typeorm-db-helper.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/active-user-data.interface.d.ts +1 -0
- package/dist/interfaces/active-user-data.interface.d.ts.map +1 -1
- package/dist/interfaces/active-user-data.interface.js.map +1 -1
- package/dist/interfaces.d.ts +1 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/repository/user-device-credential.repository.d.ts +12 -0
- package/dist/repository/user-device-credential.repository.d.ts.map +1 -0
- package/dist/repository/user-device-credential.repository.js +34 -0
- package/dist/repository/user-device-credential.repository.js.map +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +51 -30
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.d.ts +3 -1
- package/dist/seeders/module-test-data.service.d.ts.map +1 -1
- package/dist/seeders/module-test-data.service.js +8 -2
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +290 -78
- package/dist/services/api-key.service.d.ts.map +1 -1
- package/dist/services/api-key.service.js +1 -1
- package/dist/services/api-key.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +9 -5
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +102 -23
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +16 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +100 -16
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud-helper.service.d.ts +6 -4
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +32 -48
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +13 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +94 -68
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/datasource-introspection.service.d.ts.map +1 -1
- package/dist/services/datasource-introspection.service.js.map +1 -1
- package/dist/services/draft-publish-helper.service.d.ts +53 -0
- package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
- package/dist/services/draft-publish-helper.service.js +402 -0
- package/dist/services/draft-publish-helper.service.js.map +1 -0
- package/dist/services/field-metadata.service.d.ts +2 -2
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +4 -1
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/internationalisation-helper.service.d.ts +19 -0
- package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
- package/dist/services/internationalisation-helper.service.js +107 -0
- package/dist/services/internationalisation-helper.service.js.map +1 -0
- package/dist/services/locale.service.d.ts +1 -1
- package/dist/services/media-storage.utils.d.ts +1 -0
- package/dist/services/media-storage.utils.d.ts.map +1 -1
- package/dist/services/media-storage.utils.js +12 -1
- package/dist/services/media-storage.utils.js.map +1 -1
- package/dist/services/media.service.d.ts +3 -2
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +45 -29
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/metadata-validation.service.d.ts +7 -0
- package/dist/services/metadata-validation.service.d.ts.map +1 -0
- package/dist/services/metadata-validation.service.js +42 -0
- package/dist/services/metadata-validation.service.js.map +1 -0
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +2 -1
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +9 -1
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mpin.service.d.ts +67 -0
- package/dist/services/mpin.service.d.ts.map +1 -0
- package/dist/services/mpin.service.js +282 -0
- package/dist/services/mpin.service.js.map +1 -0
- package/dist/services/object.utils.d.ts +2 -0
- package/dist/services/object.utils.d.ts.map +1 -0
- package/dist/services/object.utils.js +11 -0
- package/dist/services/object.utils.js.map +1 -0
- package/dist/services/refresh-token-ids-storage.service.d.ts +25 -6
- package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -1
- package/dist/services/refresh-token-ids-storage.service.js +80 -42
- package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +6 -1
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +248 -12
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +143 -6
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/user.service.d.ts +2 -2
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +9 -3
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +1 -2
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +3 -55
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/services/workflow/nodes/execution-fail.node.d.ts +6 -0
- package/dist/services/workflow/nodes/execution-fail.node.d.ts.map +1 -0
- package/dist/services/workflow/nodes/execution-fail.node.js +81 -0
- package/dist/services/workflow/nodes/execution-fail.node.js.map +1 -0
- package/dist/services/workflow/nodes/for-each.node.d.ts +2 -0
- package/dist/services/workflow/nodes/for-each.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/for-each.node.js +114 -5
- package/dist/services/workflow/nodes/for-each.node.js.map +1 -1
- package/dist/services/workflow/nodes/if.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/if.node.js +7 -0
- package/dist/services/workflow/nodes/if.node.js.map +1 -1
- package/dist/services/workflow/nodes/log-write.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/log-write.node.js +2 -0
- package/dist/services/workflow/nodes/log-write.node.js.map +1 -1
- package/dist/services/workflow/nodes/loop-until.node.d.ts +12 -0
- package/dist/services/workflow/nodes/loop-until.node.d.ts.map +1 -0
- package/dist/services/workflow/nodes/loop-until.node.js +281 -0
- package/dist/services/workflow/nodes/loop-until.node.js.map +1 -0
- package/dist/services/workflow/nodes/parallel.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/parallel.node.js +7 -0
- package/dist/services/workflow/nodes/parallel.node.js.map +1 -1
- package/dist/services/workflow/nodes/sequential.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/sequential.node.js +7 -0
- package/dist/services/workflow/nodes/sequential.node.js.map +1 -1
- package/dist/services/workflow/nodes/switch.node.d.ts.map +1 -1
- package/dist/services/workflow/nodes/switch.node.js +7 -0
- package/dist/services/workflow/nodes/switch.node.js.map +1 -1
- package/dist/services/workflow/workflow-definition-validator.service.d.ts.map +1 -1
- package/dist/services/workflow/workflow-definition-validator.service.js +5 -2
- package/dist/services/workflow/workflow-definition-validator.service.js.map +1 -1
- package/dist/services/workflow/workflow-expression.service.d.ts.map +1 -1
- package/dist/services/workflow/workflow-expression.service.js +5 -0
- package/dist/services/workflow/workflow-expression.service.js.map +1 -1
- package/dist/services/workflow/workflow-node-registry.service.d.ts +2 -1
- package/dist/services/workflow/workflow-node-registry.service.d.ts.map +1 -1
- package/dist/services/workflow/workflow-node-registry.service.js +7 -0
- package/dist/services/workflow/workflow-node-registry.service.js.map +1 -1
- package/dist/services/workflow/workflow-runtime.service.d.ts +8 -0
- package/dist/services/workflow/workflow-runtime.service.d.ts.map +1 -1
- package/dist/services/workflow/workflow-runtime.service.js +197 -32
- package/dist/services/workflow/workflow-runtime.service.js.map +1 -1
- package/dist/services/workflow-definition.service.d.ts +1 -1
- package/dist/solid-core.module.d.ts +1 -3
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +28 -40
- package/dist/solid-core.module.js.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
- package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
- package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
- package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
- package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
- package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
- package/dist/testing/adapters/ui/ui.types.js.map +1 -1
- package/dist/testing/reporter/console-reporter.d.ts +3 -0
- package/dist/testing/reporter/console-reporter.d.ts.map +1 -1
- package/dist/testing/reporter/console-reporter.js +2 -0
- package/dist/testing/reporter/console-reporter.js.map +1 -1
- package/dist/testing/reporter/progress-reporter.d.ts +64 -0
- package/dist/testing/reporter/progress-reporter.d.ts.map +1 -0
- package/dist/testing/reporter/progress-reporter.js +224 -0
- package/dist/testing/reporter/progress-reporter.js.map +1 -0
- package/dist/testing/reporter/reporter.types.d.ts +3 -0
- package/dist/testing/reporter/reporter.types.d.ts.map +1 -1
- package/dist/testing/reporter/reporter.types.js.map +1 -1
- package/dist/testing/runner/run-from-metadata.d.ts.map +1 -1
- package/dist/testing/runner/run-from-metadata.js +1 -0
- package/dist/testing/runner/run-from-metadata.js.map +1 -1
- package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/actions.step.js +6 -2
- package/dist/testing/steps/ui/actions.step.js.map +1 -1
- package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/assertions.step.js +11 -3
- package/dist/testing/steps/ui/assertions.step.js.map +1 -1
- package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/form.step.js +9 -3
- package/dist/testing/steps/ui/form.step.js.map +1 -1
- package/dist/testing/steps/ui/manual.step.js +1 -1
- package/dist/testing/steps/ui/manual.step.js.map +1 -1
- package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/navigation.step.js +3 -1
- package/dist/testing/steps/ui/navigation.step.js.map +1 -1
- package/dist/theme/theme-registry.d.ts +14 -0
- package/dist/theme/theme-registry.d.ts.map +1 -0
- package/dist/theme/theme-registry.js +147 -0
- package/dist/theme/theme-registry.js.map +1 -0
- package/dist/types/workflow-dsl.types.d.ts +14 -0
- package/dist/types/workflow-dsl.types.d.ts.map +1 -1
- package/dist/types/workflow-dsl.types.js.map +1 -1
- package/package.json +2 -2
- package/src/commands/run-tests.command.ts +64 -4
- package/src/commands/seed.command.ts +19 -0
- package/src/config/cache.options.ts +9 -1
- package/src/constants/chatter-message.constants.ts +12 -0
- package/src/constants/draft-publish-fields.ts +5 -0
- package/src/constants/error-messages.ts +14 -0
- package/src/constants/media-file-types.ts +128 -0
- package/src/constants/success-messages.ts +5 -0
- package/src/constants/user.constants.ts +13 -0
- package/src/controllers/authentication.controller.ts +5 -2
- package/src/controllers/chatter-message.controller.ts +8 -0
- package/src/controllers/export-template.controller.ts +5 -3
- package/src/controllers/import-transaction.controller.ts +6 -6
- package/src/controllers/media.controller.ts +17 -6
- package/src/controllers/module-package.controller.ts +2 -3
- package/src/controllers/mpin-authentication.controller.ts +67 -0
- package/src/dtos/basic-filters.dto.ts +0 -4
- package/src/dtos/change-mpin.dto.ts +18 -0
- package/src/dtos/create-field-metadata.dto.ts +17 -9
- package/src/dtos/create-model-sequence.dto.ts +1 -1
- package/src/dtos/mpin-login.dto.ts +24 -0
- package/src/dtos/setup-mpin.dto.ts +51 -0
- package/src/entities/common.entity.ts +24 -0
- package/src/entities/dashboard-user-layout.entity.ts +2 -2
- package/src/entities/field-metadata.entity.ts +3 -0
- package/src/entities/saved-filters.entity.ts +3 -3
- package/src/entities/user-device-credential.entity.ts +130 -0
- package/src/entities/user.entity.ts +53 -36
- package/src/entities/view-metadata.entity.ts +2 -2
- package/src/entities/workflow-execution-artifact.entity.ts +4 -3
- package/src/entities/workflow-execution-log.entity.ts +4 -3
- package/src/entities/workflow-execution.entity.ts +3 -2
- package/src/entities/workflow-secret.entity.ts +3 -2
- package/src/entities/workflow-step-execution.entity.ts +3 -2
- package/src/entities/workflow-trigger-execution.entity.ts +7 -6
- package/src/factories/mail.factory.ts +7 -1
- package/src/filters/http-exception.filter.ts +11 -1
- package/src/helpers/bootstrap.helper.ts +43 -6
- package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +90 -37
- package/src/helpers/file-download.helper.ts +45 -0
- package/src/helpers/model-metadata-helper.service.ts +32 -1
- package/src/helpers/security.helper.ts +35 -8
- package/src/helpers/solid-core-error-codes-provider.service.ts +53 -0
- package/src/helpers/solid-microservice-adapter.service.ts +6 -1
- package/src/helpers/solid-registry.ts +1 -1
- package/src/helpers/typeorm-db-helper.ts +12 -1
- package/src/index.ts +10 -0
- package/src/interfaces/active-user-data.interface.ts +9 -0
- package/src/interfaces.ts +1 -0
- package/src/repository/user-device-credential.repository.ts +17 -0
- package/src/seeders/module-metadata-seeder.service.ts +61 -39
- package/src/seeders/module-test-data.service.ts +6 -0
- package/src/seeders/seed-data/solid-core-metadata.json +290 -78
- package/src/services/api-key.service.ts +13 -1
- package/src/services/authentication.service.ts +203 -41
- package/src/services/chatter-message.service.ts +180 -19
- package/src/services/crud-helper.service.ts +35 -50
- package/src/services/crud.service.ts +132 -105
- package/src/services/datasource-introspection.service.ts +5 -0
- package/src/services/draft-publish-helper.service.ts +581 -0
- package/src/services/field-metadata.service.ts +5 -2
- package/src/services/internationalisation-helper.service.ts +148 -0
- package/src/services/media-storage.utils.ts +26 -1
- package/src/services/media.service.ts +68 -36
- package/src/services/metadata-validation.service.ts +39 -0
- package/src/services/model-metadata.service.ts +4 -1
- package/src/services/module-metadata.service.ts +10 -1
- package/src/services/mpin.service.ts +447 -0
- package/src/services/object.utils.ts +10 -0
- package/src/services/refresh-token-ids-storage.service.ts +229 -90
- package/src/services/setting.service.ts +8 -1
- package/src/services/settings/default-settings-provider.service.ts +154 -6
- package/src/services/user.service.ts +18 -3
- package/src/services/view-metadata.service.ts +5 -145
- package/src/services/workflow/nodes/execution-fail.node.ts +82 -0
- package/src/services/workflow/nodes/for-each.node.ts +140 -6
- package/src/services/workflow/nodes/if.node.ts +7 -0
- package/src/services/workflow/nodes/log-write.node.ts +2 -0
- package/src/services/workflow/nodes/loop-until.node.ts +343 -0
- package/src/services/workflow/nodes/parallel.node.ts +7 -0
- package/src/services/workflow/nodes/sequential.node.ts +7 -0
- package/src/services/workflow/nodes/switch.node.ts +7 -0
- package/src/services/workflow/workflow-definition-validator.service.ts +5 -2
- package/src/services/workflow/workflow-expression.service.ts +5 -0
- package/src/services/workflow/workflow-node-registry.service.ts +11 -0
- package/src/services/workflow/workflow-runtime.service.ts +274 -39
- package/src/solid-core.module.ts +46 -15
- package/src/testing/README.md +75 -3
- package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
- package/src/testing/adapters/ui/ui.types.ts +2 -0
- package/src/testing/reporter/console-reporter.ts +4 -0
- package/src/testing/reporter/progress-reporter.ts +251 -0
- package/src/testing/reporter/reporter.types.ts +3 -0
- package/src/testing/runner/run-from-metadata.ts +1 -0
- package/src/testing/steps/ui/actions.step.ts +8 -4
- package/src/testing/steps/ui/assertions.step.ts +18 -5
- package/src/testing/steps/ui/form.step.ts +16 -6
- package/src/testing/steps/ui/manual.step.ts +1 -1
- package/src/testing/steps/ui/navigation.step.ts +4 -2
- package/src/theme/theme-registry.ts +181 -0
- package/src/types/workflow-dsl.types.ts +43 -0
|
@@ -5,6 +5,23 @@ import { UserViewMetadata } from 'src/entities/user-view-metadata.entity'
|
|
|
5
5
|
import { UserApiKey } from 'src/entities/user-api-key.entity'
|
|
6
6
|
import { Exclude, Expose } from "class-transformer";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Serialization is locked down twice over, and both halves are load-bearing:
|
|
10
|
+
*
|
|
11
|
+
* - The class-level `@Exclude()` below makes User itself an allowlist: only `@Expose()`d
|
|
12
|
+
* properties are serialized.
|
|
13
|
+
* - Every other property additionally carries its own `@Exclude()`. That looks redundant
|
|
14
|
+
* here, and for `User` it is - but class-transformer resolves the *class-level* strategy
|
|
15
|
+
* with a direct lookup on the exact constructor (MetadataStorage.getStrategy), so a
|
|
16
|
+
* subclass inherits nothing and falls back to `exposeAll`. Since this entity is a
|
|
17
|
+
* `@TableInheritance` root that consuming projects extend (see
|
|
18
|
+
* IExtensionUserCreationProvider), an extension user that forgets its own `@Exclude()`
|
|
19
|
+
* would otherwise serialize the password hash and every OAuth/verification token.
|
|
20
|
+
* Property-level metadata *is* walked up the prototype chain, so the per-property
|
|
21
|
+
* decorators are what actually protect subclasses.
|
|
22
|
+
*
|
|
23
|
+
* Keep both. Adding a new column? Give it `@Expose()` or `@Exclude()` - never neither.
|
|
24
|
+
*/
|
|
8
25
|
@Entity("ss_user")
|
|
9
26
|
@TableInheritance({ column: { type: "varchar", name: "type", default: "User" } })
|
|
10
27
|
@Exclude()
|
|
@@ -30,7 +47,7 @@ export class User extends CommonEntity {
|
|
|
30
47
|
mobile: string;
|
|
31
48
|
|
|
32
49
|
@Column({ type: "varchar", nullable: true })
|
|
33
|
-
|
|
50
|
+
@Exclude()
|
|
34
51
|
password: string;
|
|
35
52
|
|
|
36
53
|
@Column({ nullable: true, default: true })
|
|
@@ -38,67 +55,67 @@ export class User extends CommonEntity {
|
|
|
38
55
|
forcePasswordChange: boolean = true;
|
|
39
56
|
|
|
40
57
|
@Column({ type: "varchar", default: "local" })
|
|
41
|
-
|
|
58
|
+
@Exclude()
|
|
42
59
|
lastLoginProvider: string = "local";
|
|
43
60
|
|
|
44
61
|
@Column({ type: "varchar", nullable: true })
|
|
45
|
-
|
|
62
|
+
@Exclude()
|
|
46
63
|
accessCode: string;
|
|
47
64
|
|
|
48
65
|
@Column({ type: "varchar", nullable: true })
|
|
49
|
-
|
|
66
|
+
@Exclude()
|
|
50
67
|
googleAccessToken: string;
|
|
51
68
|
|
|
52
69
|
@Column({ type: "varchar", nullable: true })
|
|
53
|
-
|
|
70
|
+
@Exclude()
|
|
54
71
|
googleId: string;
|
|
55
72
|
|
|
56
73
|
@Column({ type: "varchar", nullable: true })
|
|
57
|
-
|
|
74
|
+
@Exclude()
|
|
58
75
|
googleProfilePicture: string;
|
|
59
76
|
|
|
60
77
|
@Column({ type: "varchar", nullable: true })
|
|
61
|
-
|
|
78
|
+
@Exclude()
|
|
62
79
|
facebookId: string;
|
|
63
80
|
|
|
64
81
|
@Column({ type: "varchar", nullable: true })
|
|
65
|
-
|
|
82
|
+
@Exclude()
|
|
66
83
|
facebookAccessToken: string;
|
|
67
84
|
|
|
68
85
|
@Column({ type: "varchar", nullable: true })
|
|
69
|
-
|
|
86
|
+
@Exclude()
|
|
70
87
|
facebookProfilePicture: string;
|
|
71
88
|
|
|
72
89
|
@Column({ type: "varchar", nullable: true })
|
|
73
|
-
|
|
90
|
+
@Exclude()
|
|
74
91
|
appleId: string;
|
|
75
92
|
|
|
76
93
|
@Column({ type: "varchar", nullable: true })
|
|
77
|
-
|
|
94
|
+
@Exclude()
|
|
78
95
|
appleAccessToken: string;
|
|
79
96
|
|
|
80
97
|
@Column({ type: "varchar", nullable: true })
|
|
81
|
-
|
|
98
|
+
@Exclude()
|
|
82
99
|
microsoftId: string;
|
|
83
100
|
|
|
84
101
|
@Column({ type: "varchar", nullable: true })
|
|
85
|
-
|
|
102
|
+
@Exclude()
|
|
86
103
|
microsoftAccessToken: string;
|
|
87
104
|
|
|
88
105
|
@Column({ type: "varchar", nullable: true })
|
|
89
|
-
|
|
106
|
+
@Exclude()
|
|
90
107
|
microsoftProfilePicture: string;
|
|
91
108
|
|
|
92
109
|
@Column({ type: "varchar", nullable: true })
|
|
93
|
-
|
|
110
|
+
@Exclude()
|
|
94
111
|
microsoftActiveDirectoryId: string;
|
|
95
112
|
|
|
96
113
|
@Column({ type: "varchar", nullable: true })
|
|
97
|
-
|
|
114
|
+
@Exclude()
|
|
98
115
|
microsoftActiveDirectoryAccessToken: string;
|
|
99
116
|
|
|
100
117
|
@Column({ type: "varchar", nullable: true })
|
|
101
|
-
|
|
118
|
+
@Exclude()
|
|
102
119
|
microsoftActiveDirectoryProfilePicture: string;
|
|
103
120
|
|
|
104
121
|
@Index()
|
|
@@ -107,63 +124,63 @@ export class User extends CommonEntity {
|
|
|
107
124
|
active: boolean = true;
|
|
108
125
|
|
|
109
126
|
@Column({ nullable: true })
|
|
110
|
-
|
|
127
|
+
@Exclude()
|
|
111
128
|
forgotPasswordConfirmedAt: Date;
|
|
112
129
|
|
|
113
130
|
@Column({ type: "varchar", nullable: true })
|
|
114
|
-
|
|
131
|
+
@Exclude()
|
|
115
132
|
verificationTokenOnForgotPassword: string;
|
|
116
133
|
|
|
117
134
|
@Column({ nullable: true })
|
|
118
|
-
|
|
135
|
+
@Exclude()
|
|
119
136
|
verificationTokenOnForgotPasswordExpiresAt: Date;
|
|
120
137
|
|
|
121
138
|
@Column({ nullable: true })
|
|
122
|
-
|
|
139
|
+
@Exclude()
|
|
123
140
|
emailVerifiedOnRegistrationAt: Date;
|
|
124
141
|
|
|
125
142
|
@Column({ type: "varchar", nullable: true })
|
|
126
|
-
|
|
143
|
+
@Exclude()
|
|
127
144
|
emailVerificationTokenOnRegistration: string;
|
|
128
145
|
|
|
129
146
|
@Column({ nullable: true })
|
|
130
|
-
|
|
147
|
+
@Exclude()
|
|
131
148
|
emailVerificationTokenOnRegistrationExpiresAt: Date;
|
|
132
149
|
|
|
133
150
|
@Column({ nullable: true })
|
|
134
|
-
|
|
151
|
+
@Exclude()
|
|
135
152
|
mobileVerifiedOnRegistrationAt: Date;
|
|
136
153
|
|
|
137
154
|
@Column({ type: "varchar", nullable: true })
|
|
138
|
-
|
|
155
|
+
@Exclude()
|
|
139
156
|
mobileVerificationTokenOnRegistration: string;
|
|
140
157
|
|
|
141
158
|
@Column({ nullable: true })
|
|
142
|
-
|
|
159
|
+
@Exclude()
|
|
143
160
|
mobileVerificationTokenOnRegistrationExpiresAt: Date;
|
|
144
161
|
|
|
145
162
|
@Column({ nullable: true })
|
|
146
|
-
|
|
163
|
+
@Exclude()
|
|
147
164
|
emailVerifiedOnLoginAt: Date;
|
|
148
165
|
|
|
149
166
|
@Column({ type: "varchar", nullable: true })
|
|
150
|
-
|
|
167
|
+
@Exclude()
|
|
151
168
|
emailVerificationTokenOnLogin: string;
|
|
152
169
|
|
|
153
170
|
@Column({ nullable: true })
|
|
154
|
-
|
|
171
|
+
@Exclude()
|
|
155
172
|
emailVerificationTokenOnLoginExpiresAt: Date;
|
|
156
173
|
|
|
157
174
|
@Column({ nullable: true })
|
|
158
|
-
|
|
175
|
+
@Exclude()
|
|
159
176
|
mobileVerifiedOnLoginAt: Date;
|
|
160
177
|
|
|
161
178
|
@Column({ type: "varchar", nullable: true })
|
|
162
|
-
|
|
179
|
+
@Exclude()
|
|
163
180
|
mobileVerificationTokenOnLogin: string;
|
|
164
181
|
|
|
165
182
|
@Column({ nullable: true })
|
|
166
|
-
|
|
183
|
+
@Exclude()
|
|
167
184
|
mobileVerificationTokenOnLoginExpiresAt: Date;
|
|
168
185
|
|
|
169
186
|
@Column({ type: "varchar", nullable: true })
|
|
@@ -176,18 +193,18 @@ export class User extends CommonEntity {
|
|
|
176
193
|
roles: RoleMetadata[];
|
|
177
194
|
|
|
178
195
|
@OneToMany(() => UserViewMetadata, userViewMetadata => userViewMetadata.user, { cascade: true })
|
|
179
|
-
|
|
196
|
+
@Exclude()
|
|
180
197
|
userViewMetadata: UserViewMetadata[];
|
|
181
198
|
|
|
182
|
-
|
|
199
|
+
@Exclude()
|
|
183
200
|
@Column({ type: "varchar", default: "bcrypt" })
|
|
184
201
|
passwordScheme: string;
|
|
185
202
|
|
|
186
|
-
|
|
203
|
+
@Exclude()
|
|
187
204
|
@Column({ type: "int", default: 1 })
|
|
188
205
|
passwordSchemeVersion: number;
|
|
189
206
|
|
|
190
|
-
|
|
207
|
+
@Exclude()
|
|
191
208
|
@Column({ nullable: true })
|
|
192
209
|
rehashedAt: Date;
|
|
193
210
|
|
|
@@ -19,11 +19,11 @@ export class ViewMetadata extends CommonEntity {
|
|
|
19
19
|
@Column({ name: "type", type: "varchar" })
|
|
20
20
|
type: string;
|
|
21
21
|
|
|
22
|
-
//TODO: To make this truly cross db compatible, we should avoid setting a db type
|
|
22
|
+
// TODO: To make this truly cross db compatible, we should avoid setting a db type
|
|
23
23
|
@Column({ name: "context", type: "text" })
|
|
24
24
|
context: any = "{}";
|
|
25
25
|
|
|
26
|
-
//TODO: To make this truly cross db compatible, we should avoid setting a db type
|
|
26
|
+
// TODO: To make this truly cross db compatible, we should avoid setting a db type
|
|
27
27
|
@Column({ name: "layout", type: "text" })
|
|
28
28
|
layout: any;
|
|
29
29
|
|
|
@@ -2,6 +2,7 @@ import { CommonEntity } from 'src/entities/common.entity';
|
|
|
2
2
|
import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
3
3
|
import { WorkflowExecution } from './workflow-execution.entity';
|
|
4
4
|
import { WorkflowStepExecution } from './workflow-step-execution.entity'
|
|
5
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
5
6
|
|
|
6
7
|
@Entity('ss_workflow_execution_artifact')
|
|
7
8
|
export class WorkflowExecutionArtifact extends CommonEntity {
|
|
@@ -10,12 +11,12 @@ export class WorkflowExecutionArtifact extends CommonEntity {
|
|
|
10
11
|
artifactKey: string;
|
|
11
12
|
|
|
12
13
|
@Index()
|
|
13
|
-
@ManyToOne(() => WorkflowExecution, {
|
|
14
|
+
@ManyToOne(() => WorkflowExecution, { nullable: false })
|
|
14
15
|
@JoinColumn()
|
|
15
16
|
workflowExecution: WorkflowExecution;
|
|
16
17
|
|
|
17
18
|
@Index()
|
|
18
|
-
@ManyToOne(() => WorkflowStepExecution, {
|
|
19
|
+
@ManyToOne(() => WorkflowStepExecution, { nullable: true })
|
|
19
20
|
@JoinColumn()
|
|
20
21
|
workflowStepExecution: WorkflowStepExecution;
|
|
21
22
|
|
|
@@ -61,7 +62,7 @@ export class WorkflowExecutionArtifact extends CommonEntity {
|
|
|
61
62
|
checksum: string;
|
|
62
63
|
|
|
63
64
|
@Index()
|
|
64
|
-
@Column({
|
|
65
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
65
66
|
producedAt: Date;
|
|
66
67
|
|
|
67
68
|
@Column({ type: "simple-json", nullable: true })
|
|
@@ -2,6 +2,7 @@ import { CommonEntity } from 'src/entities/common.entity';
|
|
|
2
2
|
import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
3
3
|
import { WorkflowExecution } from './workflow-execution.entity';
|
|
4
4
|
import { WorkflowStepExecution } from './workflow-step-execution.entity'
|
|
5
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
5
6
|
|
|
6
7
|
@Entity('ss_workflow_execution_log')
|
|
7
8
|
export class WorkflowExecutionLog extends CommonEntity {
|
|
@@ -10,12 +11,12 @@ export class WorkflowExecutionLog extends CommonEntity {
|
|
|
10
11
|
logKey: string;
|
|
11
12
|
|
|
12
13
|
@Index()
|
|
13
|
-
@ManyToOne(() => WorkflowExecution, {
|
|
14
|
+
@ManyToOne(() => WorkflowExecution, { nullable: false })
|
|
14
15
|
@JoinColumn()
|
|
15
16
|
workflowExecution: WorkflowExecution;
|
|
16
17
|
|
|
17
18
|
@Index()
|
|
18
|
-
@ManyToOne(() => WorkflowStepExecution, {
|
|
19
|
+
@ManyToOne(() => WorkflowStepExecution, { nullable: true })
|
|
19
20
|
@JoinColumn()
|
|
20
21
|
workflowStepExecution: WorkflowStepExecution;
|
|
21
22
|
|
|
@@ -47,7 +48,7 @@ export class WorkflowExecutionLog extends CommonEntity {
|
|
|
47
48
|
sequenceNumber: number;
|
|
48
49
|
|
|
49
50
|
@Index()
|
|
50
|
-
@Column({
|
|
51
|
+
@Column({ ...getColumnType('datetime') })
|
|
51
52
|
occurredAt: Date;
|
|
52
53
|
|
|
53
54
|
@Column({ type: "simple-json", nullable: true })
|
|
@@ -4,6 +4,7 @@ import { WorkflowDefinition } from './workflow-definition.entity'
|
|
|
4
4
|
import { WorkflowStepExecution } from './workflow-step-execution.entity';
|
|
5
5
|
import { WorkflowExecutionLog } from './workflow-execution-log.entity';
|
|
6
6
|
import { WorkflowExecutionArtifact } from './workflow-execution-artifact.entity';
|
|
7
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
7
8
|
|
|
8
9
|
@Entity('ss_workflow_execution')
|
|
9
10
|
export class WorkflowExecution extends CommonEntity {
|
|
@@ -32,11 +33,11 @@ export class WorkflowExecution extends CommonEntity {
|
|
|
32
33
|
triggerType: string = "manual";
|
|
33
34
|
|
|
34
35
|
@Index()
|
|
35
|
-
@Column({
|
|
36
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
36
37
|
startedAt: Date;
|
|
37
38
|
|
|
38
39
|
@Index()
|
|
39
|
-
@Column({
|
|
40
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
40
41
|
finishedAt: Date;
|
|
41
42
|
|
|
42
43
|
@Column({ type: "bigint", nullable: true })
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CommonEntity } from 'src/entities/common.entity';
|
|
2
2
|
import { Entity, Column, Index } from 'typeorm';
|
|
3
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
3
4
|
|
|
4
5
|
@Entity('ss_workflow_secret')
|
|
5
6
|
export class WorkflowSecret extends CommonEntity {
|
|
@@ -25,9 +26,9 @@ export class WorkflowSecret extends CommonEntity {
|
|
|
25
26
|
@Column({ type: "varchar", default: "active" })
|
|
26
27
|
status: string = "active";
|
|
27
28
|
|
|
28
|
-
@Column({
|
|
29
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
29
30
|
lastRotatedAt: Date;
|
|
30
31
|
|
|
31
|
-
@Column({
|
|
32
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
32
33
|
lastAccessedAt: Date;
|
|
33
34
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommonEntity } from 'src/entities/common.entity';
|
|
2
2
|
import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
3
3
|
import { WorkflowExecution } from './workflow-execution.entity'
|
|
4
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
4
5
|
|
|
5
6
|
@Entity('ss_workflow_step_execution')
|
|
6
7
|
export class WorkflowStepExecution extends CommonEntity {
|
|
@@ -55,11 +56,11 @@ export class WorkflowStepExecution extends CommonEntity {
|
|
|
55
56
|
sequenceNumber: number;
|
|
56
57
|
|
|
57
58
|
@Index()
|
|
58
|
-
@Column({
|
|
59
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
59
60
|
startedAt: Date;
|
|
60
61
|
|
|
61
62
|
@Index()
|
|
62
|
-
@Column({
|
|
63
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
63
64
|
finishedAt: Date;
|
|
64
65
|
|
|
65
66
|
@Column({ type: "bigint", nullable: true })
|
|
@@ -2,6 +2,7 @@ import { CommonEntity } from 'src/entities/common.entity';
|
|
|
2
2
|
import { Entity, Column, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
3
3
|
import { WorkflowDefinition } from './workflow-definition.entity';
|
|
4
4
|
import { WorkflowExecution } from './workflow-execution.entity'
|
|
5
|
+
import { getColumnType } from 'src/helpers/typeorm-db-helper';
|
|
5
6
|
|
|
6
7
|
@Entity('ss_workflow_trigger_execution')
|
|
7
8
|
export class WorkflowTriggerExecution extends CommonEntity {
|
|
@@ -10,12 +11,12 @@ export class WorkflowTriggerExecution extends CommonEntity {
|
|
|
10
11
|
triggerExecutionKey: string;
|
|
11
12
|
|
|
12
13
|
@Index()
|
|
13
|
-
@ManyToOne(() => WorkflowDefinition, {
|
|
14
|
+
@ManyToOne(() => WorkflowDefinition, { nullable: false })
|
|
14
15
|
@JoinColumn()
|
|
15
16
|
workflowDefinition: WorkflowDefinition;
|
|
16
17
|
|
|
17
18
|
@Index()
|
|
18
|
-
@ManyToOne(() => WorkflowExecution, {
|
|
19
|
+
@ManyToOne(() => WorkflowExecution, { nullable: true })
|
|
19
20
|
@JoinColumn()
|
|
20
21
|
workflowExecution: WorkflowExecution;
|
|
21
22
|
|
|
@@ -35,19 +36,19 @@ export class WorkflowTriggerExecution extends CommonEntity {
|
|
|
35
36
|
status: string = "received";
|
|
36
37
|
|
|
37
38
|
@Index()
|
|
38
|
-
@Column({
|
|
39
|
+
@Column({ nullable: true, default: false })
|
|
39
40
|
matched: boolean = false;
|
|
40
41
|
|
|
41
42
|
@Index()
|
|
42
|
-
@Column({
|
|
43
|
+
@Column({ ...getColumnType('datetime') })
|
|
43
44
|
firedAt: Date;
|
|
44
45
|
|
|
45
46
|
@Index()
|
|
46
|
-
@Column({
|
|
47
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
47
48
|
startedAt: Date;
|
|
48
49
|
|
|
49
50
|
@Index()
|
|
50
|
-
@Column({
|
|
51
|
+
@Column({ nullable: true, ...getColumnType('datetime') })
|
|
51
52
|
finishedAt: Date;
|
|
52
53
|
|
|
53
54
|
@Column({ type: "bigint", nullable: true })
|
|
@@ -30,8 +30,14 @@ export class MailFactory {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
const mailServiceProvider = mailProviders.find(provider => provider.name === mailServiceName);
|
|
33
|
+
if (!mailServiceProvider?.instance) {
|
|
34
|
+
const registeredProviders = mailProviders.map((provider) => provider?.name).filter(Boolean).join(", ");
|
|
35
|
+
throw new Error(
|
|
36
|
+
`Mail provider "${mailServiceName}" is not registered. Registered providers: ${registeredProviders || "none"}`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
33
39
|
|
|
34
40
|
return mailServiceProvider.instance as IMail;
|
|
35
41
|
}
|
|
36
42
|
|
|
37
|
-
}
|
|
43
|
+
}
|
|
@@ -30,12 +30,22 @@ export class HttpExceptionFilter implements ExceptionFilter {
|
|
|
30
30
|
const isHttp = exception instanceof HttpException;
|
|
31
31
|
const explicitStatus = isHttp ? exception.getStatus() : undefined;
|
|
32
32
|
|
|
33
|
+
// Errors from http-errors-style libraries (e.g. body-parser's PayloadTooLargeError)
|
|
34
|
+
// are plain Errors carrying their own status. Honour it rather than collapsing to 500.
|
|
35
|
+
const rawStatus = exception?.status ?? exception?.statusCode;
|
|
36
|
+
const derivedStatus =
|
|
37
|
+
typeof rawStatus === 'number' && rawStatus >= 400 && rawStatus < 600
|
|
38
|
+
? rawStatus
|
|
39
|
+
: undefined;
|
|
40
|
+
|
|
33
41
|
// Canonical code + static message
|
|
34
42
|
const code: ErrorCode = this.errorMapper.mapException(exception);
|
|
35
43
|
const defaultStatus = this.errorMapper.getHttpStatus(code);
|
|
36
44
|
const message = code === 'solidx-unknown-error' ? `${exception?.message}` : this.errorMapper.getMessage(code);
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
// derivedStatus must precede defaultStatus: getHttpStatus() returns a hard 500
|
|
47
|
+
// for unmatched codes, so it is never undefined and would always win otherwise.
|
|
48
|
+
const status = explicitStatus ?? derivedStatus ?? defaultStatus ?? 500;
|
|
39
49
|
|
|
40
50
|
// Logging
|
|
41
51
|
this.logger.error(
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ClassSerializerInterceptor, ValidationPipe } from '@nestjs/common';
|
|
2
2
|
import { NestFactory, Reflector } from '@nestjs/core';
|
|
3
|
+
import { NestExpressApplication } from '@nestjs/platform-express';
|
|
3
4
|
import { WsAdapter } from '@nestjs/platform-ws';
|
|
4
5
|
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
|
|
5
6
|
import { NextFunction, Request, Response } from 'express';
|
|
@@ -12,7 +13,12 @@ import { CommandFactory } from 'nest-commander';
|
|
|
12
13
|
import { createWinstonLoggerConfig } from '../winston.logger';
|
|
13
14
|
import { WrapResponseInterceptor } from '../interceptors/wrap-response.interceptor';
|
|
14
15
|
import { buildDefaultCorsOptions } from './cors.helper';
|
|
15
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
buildDefaultSecurityHeaderOptions,
|
|
18
|
+
buildPermissionsPolicyHeader,
|
|
19
|
+
PermissionsPolicyConfig,
|
|
20
|
+
SolidSecurityOptions,
|
|
21
|
+
} from './security.helper';
|
|
16
22
|
import { parseBooleanEnv } from './environment.helper';
|
|
17
23
|
|
|
18
24
|
// ---- Shared process handlers ----
|
|
@@ -50,8 +56,20 @@ export interface SolidBootstrapOptions {
|
|
|
50
56
|
swagger?: SolidSwaggerOptions | false;
|
|
51
57
|
/** Permissions-Policy header overrides (merged with defaults). */
|
|
52
58
|
permissionsPolicyOverrides?: Partial<PermissionsPolicyConfig>;
|
|
59
|
+
/** Security header overrides, including iframe frame-ancestor allowlists. */
|
|
60
|
+
security?: SolidSecurityOptions;
|
|
53
61
|
/** Show full NestJS init logs during bootstrap (route mapping, module deps, pollers). Defaults to false. */
|
|
54
62
|
verboseBootstrap?: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Max request body size for JSON and urlencoded payloads, as a `bytes`-compatible
|
|
65
|
+
* string (e.g. '10mb', '512kb'). Defaults to '10mb'.
|
|
66
|
+
*
|
|
67
|
+
* Does NOT apply to multipart/form-data uploads: body-parser matches on Content-Type,
|
|
68
|
+
* so multipart requests skip these parsers entirely and are handled by Multer. Raise
|
|
69
|
+
* this only for large structured JSON (e.g. /bulk arrays), bearing in mind the parsed
|
|
70
|
+
* object graph can retain several times the raw byte size.
|
|
71
|
+
*/
|
|
72
|
+
bodyLimit?: string;
|
|
55
73
|
}
|
|
56
74
|
|
|
57
75
|
/**
|
|
@@ -64,19 +82,30 @@ export interface SolidBootstrapOptions {
|
|
|
64
82
|
* // main.ts
|
|
65
83
|
* bootstrapSolidApp(() => AppModule.forRoot(), {
|
|
66
84
|
* swagger: { title: 'My API', description: 'My API description' },
|
|
85
|
+
* security: { frameAncestors: ["'self'", 'https://portal.example.com'] },
|
|
67
86
|
* });
|
|
68
87
|
*/
|
|
69
88
|
export async function bootstrapSolidApp(
|
|
70
89
|
appModuleFactory: () => Promise<any>,
|
|
71
90
|
options: SolidBootstrapOptions = {},
|
|
72
|
-
): Promise<
|
|
91
|
+
): Promise<NestExpressApplication> {
|
|
73
92
|
registerGlobalProcessHandlers();
|
|
74
93
|
|
|
75
|
-
const {
|
|
94
|
+
const {
|
|
95
|
+
globalPrefix = 'api',
|
|
96
|
+
swagger = {},
|
|
97
|
+
permissionsPolicyOverrides = {},
|
|
98
|
+
security = {},
|
|
99
|
+
verboseBootstrap = false,
|
|
100
|
+
bodyLimit = '10mb',
|
|
101
|
+
} = options;
|
|
76
102
|
|
|
77
103
|
const startTime = Date.now();
|
|
78
104
|
const appModule = await appModuleFactory();
|
|
79
|
-
const app = await NestFactory.create(appModule, {
|
|
105
|
+
const app = await NestFactory.create<NestExpressApplication>(appModule, {
|
|
106
|
+
// Nest's default parsers are registered during init() with a 100kb limit, ahead of
|
|
107
|
+
// any module middleware. Disable them so the parsers below own the limit outright.
|
|
108
|
+
bodyParser: false,
|
|
80
109
|
logger: WinstonModule.createLogger({ ...createWinstonLoggerConfig(), level: verboseBootstrap ? 'debug' : 'error' }),
|
|
81
110
|
});
|
|
82
111
|
|
|
@@ -87,7 +116,7 @@ export async function bootstrapSolidApp(
|
|
|
87
116
|
app
|
|
88
117
|
.get(WINSTON_MODULE_NEST_PROVIDER)
|
|
89
118
|
.log('API server disabled via API_ENABLED=false. Skipping HTTP listen.', 'Bootstrap');
|
|
90
|
-
return;
|
|
119
|
+
return app;
|
|
91
120
|
}
|
|
92
121
|
|
|
93
122
|
// Health check at root path
|
|
@@ -95,7 +124,7 @@ export async function bootstrapSolidApp(
|
|
|
95
124
|
server.get('/', (_req, res) => res.status(200).send('SOLID OK'));
|
|
96
125
|
|
|
97
126
|
// Security headers
|
|
98
|
-
app.use(helmet(buildDefaultSecurityHeaderOptions()));
|
|
127
|
+
app.use(helmet(buildDefaultSecurityHeaderOptions(security)));
|
|
99
128
|
|
|
100
129
|
// Nest's Swagger UI HTML injects inline styles; keep CSP strict elsewhere.
|
|
101
130
|
const isSwaggerPath = (path: string) =>
|
|
@@ -136,6 +165,12 @@ export async function bootstrapSolidApp(
|
|
|
136
165
|
next();
|
|
137
166
|
});
|
|
138
167
|
|
|
168
|
+
// Body parsers — replaces Nest's default 100kb parsers (disabled via bodyParser: false).
|
|
169
|
+
// Registered here so the middleware order Nest applied by default is preserved:
|
|
170
|
+
// helmet -> CSP -> Permissions-Policy -> qs -> body parsers -> routes.
|
|
171
|
+
app.useBodyParser('json', { limit: bodyLimit });
|
|
172
|
+
app.useBodyParser('urlencoded', { limit: bodyLimit, extended: true });
|
|
173
|
+
|
|
139
174
|
// Global ValidationPipe
|
|
140
175
|
app.useGlobalPipes(
|
|
141
176
|
new ValidationPipe({
|
|
@@ -195,6 +230,8 @@ export async function bootstrapSolidApp(
|
|
|
195
230
|
|
|
196
231
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
197
232
|
process.stdout.write(`\x1b[32mServer started on port ${port} in ${elapsed}s\x1b[0m\n`);
|
|
233
|
+
|
|
234
|
+
return app;
|
|
198
235
|
}
|
|
199
236
|
|
|
200
237
|
// ---- CLI bootstrap ----
|