├── .build ├── ory │ ├── kratos │ │ ├── courier-templates │ │ │ ├── recovery │ │ │ │ ├── invalid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ │ └── valid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ ├── recovery_code │ │ │ │ ├── invalid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ │ └── valid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ ├── verification │ │ │ │ ├── invalid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ │ └── valid │ │ │ │ │ ├── email.body.gotmpl │ │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ │ └── email.subject.gotmpl │ │ │ └── verification_code │ │ │ │ ├── invalid │ │ │ │ ├── email.body.gotmpl │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ └── email.subject.gotmpl │ │ │ │ └── valid │ │ │ │ ├── email.body.gotmpl │ │ │ │ ├── email.body.plaintext.gotmpl │ │ │ │ └── email.subject.gotmpl │ │ ├── identity.schema.json │ │ ├── kratos.yml │ │ └── oidc │ │ │ ├── oidc.github.jsonnet │ │ │ ├── oidc.linkedin.jsonnet │ │ │ └── oidc.microsoft.jsonnet │ └── oathkeeper │ │ ├── access-rules.yml │ │ ├── id_token.jwks.json │ │ └── oathkeeper.yml ├── synapse │ ├── alkemio.matrix.host.log.config │ ├── alkemio.matrix.host.signing.key │ ├── homeserver.yaml │ └── media_store │ │ └── README.md └── traefik │ ├── http.yml │ └── traefik.yml ├── .coderabbit.yaml ├── .dockerignore ├── .editorconfig ├── .env.docker ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── epic.md │ ├── feature_request.md │ └── user_story.md ├── config.yml ├── stale.yml └── workflows │ ├── build-deploy-k8s-dev-hetzner.yml │ ├── build-deploy-k8s-sandbox-hetzner.yml │ ├── build-deploy-k8s-test-hetzner.yml │ ├── build-release-docker-hub.yml │ └── trigger-e2e-tests.yml ├── .gitignore ├── .lintstagedrc.json ├── .npmrc ├── .prettierrc ├── .scripts ├── backups │ ├── .env.sample │ ├── README.md │ ├── restore_latest_backup.sh │ └── restore_latest_backup_set.sh ├── bootstrap_synapse.sh ├── create_db.sh ├── migrations │ ├── .env.sample │ ├── README.md │ ├── compare_sql_tables.sh │ ├── create_snapshot.sh │ ├── create_synapse_snapshot.sh │ ├── db │ │ └── reference_schema.sql │ ├── export_to_csv.sh │ ├── import_from_csv.sh │ ├── restore_snapshot.sh │ ├── restore_synapse_snapshot.sh │ └── run_validate_migration.sh ├── rename.sh └── schema.sql ├── .travis.yml ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── Dockerfile ├── LICENSE ├── README.md ├── alkemio.yml ├── docs ├── DataManagement.md ├── Design.md ├── Developing.md ├── Pagination.md ├── PublishingImages.md ├── QA.md ├── Running.md ├── Templates.md ├── authentication │ ├── authentication_flow.md │ └── authentication_flow.svg ├── database-definitions.md ├── diagrams │ ├── .$templates.drawio.bkp │ ├── alkemio-server-layer-diagram.drawio │ ├── alkemio-services-networking.drawio │ ├── login-session-extend-flow │ └── templates.drawio ├── graphql-typeorm-usage.md ├── images │ ├── alkemio-pagination-design.svg │ ├── alkemio-server-design.png │ ├── alkemio-server-layer-diagram.png │ ├── alkemio-services-networking.png │ ├── login-session-extend-flow.png │ ├── pagination-efficiency.png │ ├── pagination-time-complexity.png │ ├── templates-domain.png │ └── templates-platform.png └── search │ ├── Search.md │ ├── ingest-detailed-design.svg │ ├── search-detailed-design.svg │ └── search-high-level-system-design.svg ├── eslint.config.js ├── graphql-samples ├── admin │ ├── authorization │ │ ├── users-authorization-privileges │ │ └── users-with-authorization-credential │ └── communication │ │ ├── communication-ensure-communication-access │ │ ├── communication-membership │ │ ├── communication-remove-orphaned-room │ │ └── communication-rooms-join-rule ├── mutations │ ├── authorization │ │ ├── assign-user-as-global-admin │ │ ├── assign-user-as-organization-admin │ │ ├── assign-user-as-organization-owner │ │ ├── assign-user-to-organization │ │ ├── grant-credential-to-user │ │ ├── reset-authorization-all │ │ ├── reset-authorization-on-account │ │ ├── reset-authorization-on-organization │ │ ├── reset-authorization-on-platform │ │ ├── reset-authorization-on-space │ │ ├── reset-authorization-on-user │ │ └── revoke-credential-from-user │ ├── communication │ │ ├── add-message-reaction-in-room │ │ ├── create-discussion-on-communication │ │ ├── message-user │ │ ├── remove-message │ │ ├── remove-message-reaction-in-room │ │ ├── send-community-leads-message │ │ ├── send-message │ │ ├── send-message-reply-to-room │ │ ├── send-message-to-room │ │ ├── send-organization-message │ │ ├── send-user-message │ │ └── update-discussion │ ├── convert │ │ ├── convert-challenge-to-space │ │ └── convert-opportunity-to-challenge │ ├── create │ │ ├── community-membership-application │ │ ├── community-membership-invitation │ │ ├── community-membership-invitation-external │ │ ├── community-membership-join │ │ ├── create-account │ │ ├── create-actor │ │ ├── create-actor-group │ │ ├── create-callout-on-collaboration │ │ ├── create-callout-template │ │ ├── create-callout-whiteboard-rt │ │ ├── create-community-guidelines-template │ │ ├── create-contribution-post-on-callout │ │ ├── create-contribution-whiteboard-on-callout │ │ ├── create-event-on-calendar │ │ ├── create-feedback-on-community-context │ │ ├── create-innovation-flow-template │ │ ├── create-innovation-hub │ │ ├── create-innovation-pack-on-library │ │ ├── create-license-plan │ │ ├── create-organization │ │ ├── create-post-template │ │ ├── create-project │ │ ├── create-reference-on-context │ │ ├── create-reference-on-post │ │ ├── create-reference-on-profile │ │ ├── create-subspace │ │ ├── create-tagset-on-profile │ │ ├── create-user │ │ ├── create-user-group-on-community │ │ ├── create-virtual-contributor │ │ ├── create-virtual-persona │ │ └── create-whiteboard-template │ ├── delete │ │ ├── delete-actor │ │ ├── delete-actor-group │ │ ├── delete-callout │ │ ├── delete-canvas │ │ ├── delete-collaboration │ │ ├── delete-community-application │ │ ├── delete-community-guidelines-template │ │ ├── delete-community-invitation │ │ ├── delete-discussion │ │ ├── delete-document │ │ ├── delete-innovation-flow-template │ │ ├── delete-innovation-hub │ │ ├── delete-innovation-pack │ │ ├── delete-organization │ │ ├── delete-post │ │ ├── delete-post-template │ │ ├── delete-reference │ │ ├── delete-space │ │ ├── delete-user │ │ ├── delete-user-group │ │ └── delete-whiteboard-template │ └── update │ │ ├── assign-community-role-to-organization │ │ ├── assign-community-role-to-user │ │ ├── assign-community-role-to-virtual │ │ ├── assign-user-to-group │ │ ├── event-on-community-application │ │ ├── event-on-community-invitation │ │ ├── event-on-organization-verification │ │ ├── event-on-project │ │ ├── remove-community-role-from-organization │ │ ├── remove-community-role-from-user │ │ ├── remove-user-from-group │ │ ├── update-account-platform-settings │ │ ├── update-actor │ │ ├── update-callout │ │ ├── update-callout-publish-info │ │ ├── update-callout-visibility │ │ ├── update-callouts-sort-order │ │ ├── update-community-application-form │ │ ├── update-ecosystem-model │ │ ├── update-event-on-calendar │ │ ├── update-innovation-flow-lifecycle-template │ │ ├── update-innovation-flow-template │ │ ├── update-innovation-hub │ │ ├── update-innovation-hub-platform-settings │ │ ├── update-organization │ │ ├── update-post │ │ ├── update-post-template │ │ ├── update-preference-on-challenge │ │ ├── update-preference-on-organization │ │ ├── update-preference-on-space │ │ ├── update-preference-on-user │ │ ├── update-profile │ │ ├── update-space │ │ ├── update-user │ │ ├── update-user-group │ │ ├── update-visual │ │ ├── update-whiteboard │ │ ├── update-whiteboard-template │ │ └── upload-avatar ├── queries │ ├── activity │ │ └── activity-by-collaboration │ ├── config │ │ ├── auth-providers │ │ ├── full-config │ │ └── template-config │ ├── configuration-template │ ├── pagination │ │ └── users-paginated │ ├── roles-organization │ ├── roles-user │ ├── roles-user-visibilities │ ├── search │ │ ├── simple-search │ │ ├── simple-search-card │ │ ├── simple-search-filtered │ │ ├── simple-search-space │ │ └── simple-search-tagsets │ ├── spaces-visibility │ ├── storage │ │ ├── organization-storage-bucket │ │ └── space-challenge-storage-bucket │ └── users-filtered └── subscriptions │ ├── calendarEventMessageReceived │ ├── calloutAspectCreated │ ├── calloutMessageReceived │ ├── challengeCreated │ ├── communicationDiscussionMessageReceived │ ├── communicationDiscussionUpdated │ ├── communicationUpdateMessageReceived │ ├── opportunityCreated │ └── profileVerifiedCredential ├── manifests ├── 25-server-deployment-dev.yaml ├── 26-server-migration.yaml └── 30-server-service.yaml ├── nest-cli.json ├── package-lock.json ├── package.json ├── quickstart-services-ai-debug.yml ├── quickstart-services-ai.yml ├── quickstart-services-kratos-debug.yml ├── quickstart-services.yml ├── quickstart-wallet-manager.yml ├── src ├── apm │ ├── apm.ts │ ├── decorators │ │ ├── index.ts │ │ ├── instrument.resolver.decorator.ts │ │ ├── instrument.service.decorator.ts │ │ └── util │ │ │ ├── copy.metadata.ts │ │ │ ├── createInstrumentedClassDecorator.ts │ │ │ ├── index.ts │ │ │ └── instrument.method.ts │ ├── index.ts │ └── plugins │ │ ├── apm.apollo.plugin.ts │ │ └── index.ts ├── app.controller.spec.ts ├── app.controller.ts ├── app.module.ts ├── common │ ├── app.id.provider.ts │ ├── constants │ │ ├── authorization │ │ │ ├── credential.rule.constants.ts │ │ │ ├── credential.rule.types.constants.ts │ │ │ ├── global.policy.constants.ts │ │ │ ├── index.ts │ │ │ └── policy.rule.constants.ts │ │ ├── communication.constants.ts │ │ ├── default.space.constants.ts │ │ ├── entity.field.length.constants.ts │ │ ├── index.ts │ │ ├── innovation.hub.inject.token.ts │ │ ├── providers.ts │ │ └── rabbitmq.constants.ts │ ├── decorators │ │ ├── authorization.agent.privilege.ts │ │ ├── current-user.decorator.ts │ │ ├── headers.decorator.ts │ │ ├── index.ts │ │ ├── innovation.hub.decoration.ts │ │ ├── profiling.decorator.ts │ │ └── typed.subscription │ │ │ ├── index.ts │ │ │ ├── subscription.resolve.context.ts │ │ │ ├── typed.subscription.decorator.ts │ │ │ └── typed.subscription.options.ts │ ├── enums │ │ ├── account.role.ts │ │ ├── account.type.ts │ │ ├── activity.event.type.ts │ │ ├── agent.type.ts │ │ ├── ai.persona.body.of.knowledge.type.ts │ │ ├── ai.persona.data.access.mode.ts │ │ ├── ai.persona.engine.ts │ │ ├── ai.persona.interaction.mode.ts │ │ ├── ai.persona.invocation.operation.ts │ │ ├── ai.persona.model.card.entry.flag.name.ts │ │ ├── ai.persona.model.card.entry.ts │ │ ├── ai.server.authorization.privilege.ts │ │ ├── ai.server.role.ts │ │ ├── alkemio.error.status.ts │ │ ├── authentication.provider.ts │ │ ├── authentication.type.ts │ │ ├── authorization.credential.global.ts │ │ ├── authorization.credential.ts │ │ ├── authorization.policy.type.ts │ │ ├── authorization.privilege.ts │ │ ├── authorization.verified.credential.ts │ │ ├── calendar.event.type.ts │ │ ├── callout.contribution.type.ts │ │ ├── callout.state.ts │ │ ├── callout.type.ts │ │ ├── callout.visibility.ts │ │ ├── callouts.set.type.ts │ │ ├── community.membership.policy.ts │ │ ├── community.membership.status.ts │ │ ├── content.update.policy.ts │ │ ├── credential.type.ts │ │ ├── discussions.orderBy.ts │ │ ├── forum.discussion.category.ts │ │ ├── forum.discussion.privacy.ts │ │ ├── index.ts │ │ ├── innovation.packs.orderBy.ts │ │ ├── license.entitlement.data.type.ts │ │ ├── license.entitlement.type.ts │ │ ├── license.type.ts │ │ ├── licensing.credential.based.credential.type.ts │ │ ├── licensing.credential.based.plan.type.ts │ │ ├── licensing.wingback.subscription.feature.name.ts │ │ ├── logging.context.ts │ │ ├── messaging.queue.ts │ │ ├── mime.file.type.document.ts │ │ ├── mime.file.type.ts │ │ ├── mime.file.type.visual.ts │ │ ├── organization.verification.ts │ │ ├── platform.feature.flag.name.ts │ │ ├── preference.definition.set.ts │ │ ├── preference.type.ts │ │ ├── preference.value.type.ts │ │ ├── profile.type.ts │ │ ├── rest.endpoint.ts │ │ ├── restricted.space.names.ts │ │ ├── role.name.ts │ │ ├── role.set.contributor.type.ts │ │ ├── role.set.invitation.result.type.ts │ │ ├── role.set.role.implicit.ts │ │ ├── role.set.type.ts │ │ ├── role.set.update.type.ts │ │ ├── room.type.ts │ │ ├── search.visibility.ts │ │ ├── space.level.ts │ │ ├── space.privacy.mode.ts │ │ ├── space.visibility.ts │ │ ├── ssi.issuer.type.ts │ │ ├── storage.aggregator.type.ts │ │ ├── subscription.type.ts │ │ ├── subscriptions │ │ │ ├── index.ts │ │ │ └── mutation.type.ts │ │ ├── tagset.reserved.name.ts │ │ ├── tagset.type.ts │ │ ├── template.default.type.ts │ │ ├── template.type.ts │ │ ├── url.path.base.ts │ │ ├── url.path.element.space.ts │ │ ├── url.path.element.ts │ │ ├── url.type.ts │ │ ├── virtual.contributor.status.enum.ts │ │ ├── visual.type.ts │ │ └── wallet.manager.command.ts │ ├── exceptions │ │ ├── account.exception.ts │ │ ├── auth │ │ │ ├── api.restricted.access.exception.ts │ │ │ ├── bearer.token.not.found.exception.ts │ │ │ ├── index.ts │ │ │ ├── login.flow.exception.ts │ │ │ ├── login.flow.initialize.exception.ts │ │ │ └── session.extend.exception.ts │ │ ├── authentication.exception.ts │ │ ├── authorization.invalid.policy.exception.ts │ │ ├── base.exception.ts │ │ ├── bootstrap.exception.ts │ │ ├── callout │ │ │ └── callout.closed.exception.ts │ │ ├── communication │ │ │ ├── communication.timed.out.exception.ts │ │ │ └── index.ts │ │ ├── data-loader │ │ │ ├── data.loader.creator.init.error.ts │ │ │ ├── data.loader.init.error.ts │ │ │ ├── data.loader.interceptor.not.provided.ts │ │ │ ├── data.loader.not.provided.ts │ │ │ └── index.ts │ │ ├── document │ │ │ ├── document.delete.failed.exception.ts │ │ │ ├── document.read.failed.exception.ts │ │ │ └── document.save.failed.exception.ts │ │ ├── entity.not.found.exception.ts │ │ ├── entity.not.initialized.exception.ts │ │ ├── exception.details.ts │ │ ├── forbidden.authorization.policy.exception.ts │ │ ├── forbidden.exception.ts │ │ ├── forbidden.license.policy.exception.ts │ │ ├── format.not.supported.exception.ts │ │ ├── forum.discussion.category.exception.ts │ │ ├── geo │ │ │ ├── geo.service.error.exception.ts │ │ │ ├── geo.service.not.available.exception.ts │ │ │ ├── geo.service.request.limit.exceeded.exception.ts │ │ │ └── index.ts │ │ ├── group.not.initialized.exception.ts │ │ ├── http │ │ │ ├── bad.request.http.exception.ts │ │ │ ├── base.http.exception.ts │ │ │ ├── forbidden.http.exception.ts │ │ │ ├── index.ts │ │ │ └── not.found.http.exception.ts │ │ ├── index.ts │ │ ├── internal │ │ │ ├── base.exception.internal.ts │ │ │ ├── index.ts │ │ │ ├── retry.exception.ts │ │ │ └── timeout.exception.ts │ │ ├── invalid.state.tranistion.exception.ts │ │ ├── invalid.template.type.exception.ts │ │ ├── invalid.uuid.ts │ │ ├── license.entitlement.not.available.exception.ts │ │ ├── license.entitlement.not.supported.ts │ │ ├── license.not.found.exception.ts │ │ ├── matrix.entity.not.found.exception.ts │ │ ├── mime.type.not.found.exception.ts │ │ ├── not.enabled.exception.ts │ │ ├── not.supported.exception.ts │ │ ├── notification.event.exception.ts │ │ ├── operation.not.allowed.exception.ts │ │ ├── pagination │ │ │ ├── index.ts │ │ │ ├── pagination.input.out.of.bounds.exception.ts │ │ │ ├── pagination.not.found.exception.ts │ │ │ └── pagination.parameter.not.found.exception.ts │ │ ├── registration.exception.ts │ │ ├── relationship.not.found.exception.ts │ │ ├── role.set.invitation.exception.ts │ │ ├── role.set.membership.exception.ts │ │ ├── role.set.policy.role.limits.exception.ts │ │ ├── session.expired.exception.ts │ │ ├── ssi.credential.type.not.supported.ts │ │ ├── ssi.exception.ts │ │ ├── ssi.interaction.not.found.ts │ │ ├── ssi.sovrhd.api.exception.ts │ │ ├── ssi.sovrhd.credential.request.failure.ts │ │ ├── ssi.sovrhd.credential.type.not.found.exception.ts │ │ ├── ssi.vc.not.verifiable.ts │ │ ├── ssi.wallet.manager.command.failed.ts │ │ ├── storage.aggregator.not.found.exception.ts │ │ ├── storage.bucket.not.found.exception.ts │ │ ├── storage │ │ │ ├── index.ts │ │ │ ├── local-storage │ │ │ │ ├── local.storage.delete.failed.exception.ts │ │ │ │ ├── local.storage.read.failed.exception.ts │ │ │ │ └── local.storage.save.failed.exception.ts │ │ │ ├── storage.disabled.exception.ts │ │ │ └── storage.upload.failed.exception.ts │ │ ├── subscription.user.not.authenticated.ts │ │ ├── subscription │ │ │ ├── index.ts │ │ │ └── unable.to.subscribe.exception.ts │ │ ├── tagset.not.found.exception.ts │ │ ├── user │ │ │ ├── index.ts │ │ │ ├── user.identity.deletion.exception.ts │ │ │ ├── user.identity.not.found.exception.ts │ │ │ ├── user.not.verified.exception.ts │ │ │ ├── user.registered.exception.ts │ │ │ └── user.registration.invalid.email.ts │ │ └── validation.exception.ts │ ├── interceptors │ │ ├── index.ts │ │ └── innovation.hub.interceptor.ts │ ├── interfaces │ │ ├── base.subscription.payload.interface.ts │ │ ├── communication.message.payload.interface.ts │ │ ├── excalidraw.content.type.ts │ │ ├── groupable.interface.ts │ │ ├── index.ts │ │ ├── lifecycle.definition.interface.ts │ │ └── redis.interfaces.ts │ ├── pipes │ │ ├── index.ts │ │ └── validation.pipe.ts │ └── utils │ │ ├── array.random.element.ts │ │ ├── async.filter.ts │ │ ├── async.map.sequential.ts │ │ ├── async.map.ts │ │ ├── async.reduce.sequential.ts │ │ ├── async.reduce.ts │ │ ├── base64.to.buffer.ts │ │ ├── calculate.buffer.hash.ts │ │ ├── compare.enums.ts │ │ ├── compression.util.spec.ts │ │ ├── compression.util.ts │ │ ├── convert-to-entity │ │ ├── convert.to.entity.ts │ │ └── index.ts │ │ ├── email.util.ts │ │ ├── file.util.ts │ │ ├── get-differences │ │ ├── get.diff.spec.ts │ │ ├── get.diff.ts │ │ └── index.ts │ │ ├── get.session.ts │ │ ├── has-allowed-allowed-fields │ │ ├── has.only.allowed.fields.spec.ts │ │ ├── has.only.allowed.fields.ts │ │ └── index.ts │ │ ├── image.util.ts │ │ ├── index.ts │ │ ├── limitAndShuffle.ts │ │ ├── path.resolve.ts │ │ ├── random.id.generator.util.ts │ │ ├── random.util.ts │ │ ├── string.util.ts │ │ ├── stringify.util.ts │ │ └── untildify.ts ├── config │ ├── aliases.ts │ ├── config.utils.spec.ts │ ├── config.utils.ts │ ├── configuration.ts │ ├── fix.uuid.column.type.ts │ ├── graphql │ │ ├── config.ts │ │ ├── index.ts │ │ ├── me.ts │ │ ├── metadata.ts │ │ └── spaces.ts │ ├── index.ts │ ├── migration.config.ts │ ├── migration.create.config.ts │ ├── typeorm.cli.config.run.ts │ ├── typeorm.cli.config.ts │ └── winston.config.ts ├── core │ ├── authentication.agent.info │ │ ├── agent.info.cache.service.ts │ │ ├── agent.info.metadata.ts │ │ ├── agent.info.module.ts │ │ ├── agent.info.service.ts │ │ └── agent.info.ts │ ├── authentication │ │ ├── authentication.module.ts │ │ ├── authentication.service.spec.ts │ │ ├── authentication.service.ts │ │ ├── index.ts │ │ ├── ory.api.strategy.ts │ │ ├── ory.strategy.ts │ │ ├── strategy.names.ts │ │ └── verify.identity.if.oidc.auth.ts │ ├── authorization │ │ ├── authorization.module.ts │ │ ├── authorization.policy.rule.credential.interface.ts │ │ ├── authorization.policy.rule.credential.ts │ │ ├── authorization.policy.rule.privilege.interface.ts │ │ ├── authorization.policy.rule.privilege.ts │ │ ├── authorization.policy.rule.verified.credential.interface.ts │ │ ├── authorization.policy.rule.verified.credential.ts │ │ ├── authorization.rule.agent.privilege.ts │ │ ├── authorization.service.spec.ts │ │ ├── authorization.service.ts │ │ ├── graphql.guard.ts │ │ ├── index.ts │ │ └── rest.guard.ts │ ├── bootstrap │ │ ├── bootstrap.module.ts │ │ ├── bootstrap.service.spec.ts │ │ ├── bootstrap.service.ts │ │ ├── index.ts │ │ └── platform-template-definitions │ │ │ ├── default-templates │ │ │ ├── bootstrap.template.space.content.callouts.space.l0.tutorials.ts │ │ │ ├── bootstrap.template.space.content.callouts.vc.knowledge.base.ts │ │ │ ├── bootstrap.template.space.content.space.l0.ts │ │ │ └── bootstrap.template.space.content.subspace.ts │ │ │ ├── license-plan │ │ │ └── license-plans.json │ │ │ └── user │ │ │ └── users.json │ ├── dataloader │ │ ├── creators │ │ │ ├── base │ │ │ │ ├── data.loader.creator.base.options.ts │ │ │ │ ├── data.loader.creator.limit.options.ts │ │ │ │ ├── data.loader.creator.options.ts │ │ │ │ ├── data.loader.creator.pagination.options.ts │ │ │ │ ├── data.loader.creator.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── loader.creator.module.ts │ │ │ └── loader.creators │ │ │ │ ├── account │ │ │ │ ├── account.innovation.hubs.loader.creator.ts │ │ │ │ ├── account.innovation.pack.loader.creator.ts │ │ │ │ ├── account.loader.creator.ts │ │ │ │ ├── account.spaces.loader.creator.ts │ │ │ │ └── account.virtual.contributors.loader.creator.ts │ │ │ │ ├── agent.loader.creator.ts │ │ │ │ ├── authorization.loader.creator.ts │ │ │ │ ├── callout-framing │ │ │ │ └── callout.framing.whiteboard.loader.ts │ │ │ │ ├── classification.tagsets.loader.creator.ts │ │ │ │ ├── collaboration │ │ │ │ ├── collaboration.callouts.set.loader.creator.ts │ │ │ │ ├── collaboration.timeline.loader.creator.ts │ │ │ │ └── knowledge.base.callouts.set.loader.creator.ts │ │ │ │ ├── community │ │ │ │ ├── organization.storage.aggregator.loader.creator.ts │ │ │ │ └── user.storage.aggregator.loader.creator.ts │ │ │ │ ├── in-app-notification │ │ │ │ ├── callout.loader.creator.ts │ │ │ │ ├── community.type.loader.creator.ts │ │ │ │ ├── contributor.loader.creator.ts │ │ │ │ └── space.loader.creator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── license.loader.creator.ts │ │ │ │ ├── preferences.loader.creator.ts │ │ │ │ ├── profile.loader.creator.ts │ │ │ │ ├── profile │ │ │ │ ├── profile.avatars.loader.creator.ts │ │ │ │ ├── profile.location.loader.creator.ts │ │ │ │ ├── profile.references.loader.creator.ts │ │ │ │ ├── profile.storage.bucket.loader.creator.ts │ │ │ │ └── profile.tagsets.loader.creator.ts │ │ │ │ ├── space │ │ │ │ ├── space.about.loader.creator.ts │ │ │ │ ├── space.collaboration.loader.creator.ts │ │ │ │ └── space.community.loader.creator.ts │ │ │ │ ├── user.loader.creator.ts │ │ │ │ └── visual.loader.creator.ts │ │ ├── data.loader.inject.token.ts │ │ ├── decorators │ │ │ ├── data.loader.decorator.ts │ │ │ └── index.ts │ │ ├── interceptors │ │ │ ├── data.loader.context.entry.ts │ │ │ ├── data.loader.interceptor.ts │ │ │ └── index.ts │ │ ├── loader.interface.ts │ │ └── utils │ │ │ ├── createTypedBatchLoader.ts │ │ │ ├── createTypedRelationLoader.ts │ │ │ ├── createTypedSimpleLoader.ts │ │ │ ├── find.by.batch.options.ts │ │ │ ├── findByBatchIds.ts │ │ │ ├── findByBatchIdsSimple.ts │ │ │ ├── index.ts │ │ │ ├── selectOptionsFromFields.ts │ │ │ └── sort.output.by.keys.ts │ ├── error-handling │ │ ├── graphql.exception.filter.ts │ │ ├── http.exception.filter.ts │ │ ├── index.ts │ │ ├── rest.error.response.ts │ │ └── unhandled.exception.filter.ts │ ├── filtering │ │ ├── filter.fn.ts │ │ ├── filter.fn.where.expression.ts │ │ ├── filters │ │ │ ├── index.ts │ │ │ ├── organizationFilter.ts │ │ │ └── userFilter.ts │ │ ├── index.ts │ │ └── input-types │ │ │ ├── index.ts │ │ │ ├── organization.filter.input.ts │ │ │ └── user.filter.input.ts │ ├── interceptors │ │ ├── auth.interceptor.ts │ │ └── index.ts │ ├── microservices │ │ ├── client.proxy.factory.ts │ │ ├── index.ts │ │ ├── microservices.module.ts │ │ ├── subscription.factory.provider.ts │ │ └── subscription.factory.ts │ ├── middleware │ │ ├── favicon.middleware.ts │ │ ├── index.ts │ │ ├── request.logger.middleware.ts │ │ └── session.extend.middleware.ts │ ├── pagination │ │ ├── index.ts │ │ ├── paginated.organization.ts │ │ ├── paginated.space.ts │ │ ├── paginated.type.ts │ │ ├── paginated.user.ts │ │ ├── paginated.virtual.contributor.ts │ │ ├── pagination.args.ts │ │ ├── pagination.fn.ts │ │ ├── relay.style.paginated.type.ts │ │ ├── relay.style.pagination.fn.ts │ │ └── validate.pagination.args.ts │ └── validation │ │ ├── excalidraw │ │ ├── excalidraw.schema.simple.json │ │ └── validateExcalidrawContent.ts │ │ ├── handlers │ │ ├── base │ │ │ ├── abstract.handler.ts │ │ │ ├── base.handler.ts │ │ │ ├── handler.interface.ts │ │ │ └── index.ts │ │ └── index.ts │ │ ├── index.ts │ │ ├── subdomain.regex.ts │ │ └── xstate │ │ ├── machine.schema.json │ │ ├── machine.schema.simple.json │ │ └── validateMachineDefinition.ts ├── domain │ ├── access │ │ ├── application │ │ │ ├── application.entity.ts │ │ │ ├── application.interface.ts │ │ │ ├── application.module.ts │ │ │ ├── application.resolver.fields.lifecycle.ts │ │ │ ├── application.resolver.fields.ts │ │ │ ├── application.resolver.mutations.ts │ │ │ ├── application.service.authorization.ts │ │ │ ├── application.service.lifecycle.ts │ │ │ ├── application.service.ts │ │ │ ├── dto │ │ │ │ ├── application.dto.create.ts │ │ │ │ ├── application.dto.delete.ts │ │ │ │ └── application.dto.event.ts │ │ │ └── index.ts │ │ ├── invitation.platform │ │ │ ├── dto │ │ │ │ ├── platform.invitation.dto.create.ts │ │ │ │ ├── platform.invitation.dto.delete.ts │ │ │ │ ├── platform.invitation.dto.global.role.ts │ │ │ │ └── platform.invitations.dto.create.ts │ │ │ ├── index.ts │ │ │ ├── platform.invitation.entity.ts │ │ │ ├── platform.invitation.interface.ts │ │ │ ├── platform.invitation.module.ts │ │ │ ├── platform.invitation.resolver.fields.ts │ │ │ ├── platform.invitation.resolver.mutations.ts │ │ │ ├── platform.invitation.service.authorization.ts │ │ │ └── platform.invitation.service.ts │ │ ├── invitation │ │ │ ├── dto │ │ │ │ ├── invitation.dto.create.ts │ │ │ │ ├── invitation.dto.delete.ts │ │ │ │ └── invitation.dto.event.ts │ │ │ ├── index.ts │ │ │ ├── invitation.entity.ts │ │ │ ├── invitation.interface.ts │ │ │ ├── invitation.module.ts │ │ │ ├── invitation.resolver.fields.lifecycle.ts │ │ │ ├── invitation.resolver.fields.ts │ │ │ ├── invitation.resolver.mutations.ts │ │ │ ├── invitation.service.authorization.ts │ │ │ ├── invitation.service.lifecycle.ts │ │ │ └── invitation.service.ts │ │ ├── role-set │ │ │ ├── dto │ │ │ │ ├── role.set.contributors.in.roles.interfaces.ts │ │ │ │ ├── role.set.dto.create.ts │ │ │ │ ├── role.set.dto.entry.role.apply.ts │ │ │ │ ├── role.set.dto.entry.role.invite.ts │ │ │ │ ├── role.set.dto.entry.role.join.ts │ │ │ │ ├── role.set.dto.role.assign.organization.ts │ │ │ │ ├── role.set.dto.role.assign.user.ts │ │ │ │ ├── role.set.dto.role.assign.virtual.ts │ │ │ │ ├── role.set.dto.role.remove.organization.ts │ │ │ │ ├── role.set.dto.role.remove.user.ts │ │ │ │ ├── role.set.dto.role.remove.virtual.ts │ │ │ │ ├── role.set.dto.role.selection.credentials.ts │ │ │ │ ├── role.set.dto.role.with.parent.credentials.ts │ │ │ │ ├── role.set.dto.update.application.form.ts │ │ │ │ └── role.set.invitation.result.ts │ │ │ ├── index.ts │ │ │ ├── role.set.data.loader.membership.status.ts │ │ │ ├── role.set.data.loaders.agent.roles.ts │ │ │ ├── role.set.entity.ts │ │ │ ├── role.set.interface.ts │ │ │ ├── role.set.module.ts │ │ │ ├── role.set.resolver.fields.public.ts │ │ │ ├── role.set.resolver.fields.ts │ │ │ ├── role.set.resolver.mutations.membership.ts │ │ │ ├── role.set.resolver.mutations.spec.ts │ │ │ ├── role.set.resolver.mutations.ts │ │ │ ├── role.set.service.authorization.ts │ │ │ ├── role.set.service.cache.module.ts │ │ │ ├── role.set.service.cache.ts │ │ │ ├── role.set.service.events.ts │ │ │ ├── role.set.service.license.ts │ │ │ ├── role.set.service.lifecycle.application.ts │ │ │ ├── role.set.service.lifecycle.invitation.ts │ │ │ ├── role.set.service.spec.ts │ │ │ ├── role.set.service.ts │ │ │ └── types │ │ │ │ ├── agent.role.key.ts │ │ │ │ ├── index.ts │ │ │ │ └── roleset.community.membership.status.ts │ │ └── role │ │ │ ├── contributor.role.policy.interface.ts │ │ │ ├── contributor.role.policy.ts │ │ │ ├── dto │ │ │ └── role.dto.create.ts │ │ │ ├── role.entity.ts │ │ │ ├── role.interface.ts │ │ │ ├── role.module.ts │ │ │ ├── role.resolver.fields.ts │ │ │ └── role.service.ts │ ├── activity-feed │ │ ├── activity.feed.grouped.query.args.ts │ │ ├── activity.feed.interface.ts │ │ ├── activity.feed.module.ts │ │ ├── activity.feed.query.args.ts │ │ ├── activity.feed.resolver.queries.ts │ │ ├── activity.feed.roles.enum.ts │ │ ├── activity.feed.service.spec.ts │ │ ├── activity.feed.service.ts │ │ └── index.ts │ ├── agent │ │ ├── agent │ │ │ ├── agent.entity.ts │ │ │ ├── agent.interface.ts │ │ │ ├── agent.module.ts │ │ │ ├── agent.resolver.fields.ts │ │ │ ├── agent.resolver.mutations.ts │ │ │ ├── agent.resolver.subscriptions.ts │ │ │ ├── agent.service.authorization.ts │ │ │ ├── agent.service.ts │ │ │ ├── dto │ │ │ │ ├── agent.dto.create.ts │ │ │ │ ├── agent.dto.credential.grant.ts │ │ │ │ ├── agent.dto.credential.revoke.ts │ │ │ │ ├── agent.dto.interaction.verified.credential.offer.ts │ │ │ │ ├── agent.dto.interaction.verified.credential.request.jolocom.ts │ │ │ │ ├── agent.dto.interaction.verified.credential.request.sovrhd.ts │ │ │ │ ├── agent.dto.profile.credential.verified.ts │ │ │ │ ├── agent.dto.verified.credential.offer.begin.input.ts │ │ │ │ ├── agent.dto.verified.credential.offer.begin.output.ts │ │ │ │ ├── agent.dto.verified.credential.request.begin.input.ts │ │ │ │ └── agent.dto.verified.credential.request.begin.output.ts │ │ │ └── index.ts │ │ ├── credential │ │ │ ├── credential.definition.interface.ts │ │ │ ├── credential.definition.ts │ │ │ ├── credential.entity.ts │ │ │ ├── credential.interface.ts │ │ │ ├── credential.module.ts │ │ │ ├── credential.resolver.fields.ts │ │ │ ├── credential.service.ts │ │ │ ├── dto │ │ │ │ ├── credential.dto.create.ts │ │ │ │ └── credentials.dto.search.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ └── verified-credential │ │ │ ├── dto │ │ │ ├── verified.credential.dto.claim.result.ts │ │ │ ├── verified.credential.dto.metadata.ts │ │ │ └── verified.credential.dto.result.ts │ │ │ ├── index.ts │ │ │ ├── verified.credential.interface.ts │ │ │ ├── verified.credential.module.ts │ │ │ └── verified.credential.service.ts │ ├── collaboration │ │ ├── callout-contribution-defaults │ │ │ ├── callout.contribution.defaults.entity.ts │ │ │ ├── callout.contribution.defaults.interface.ts │ │ │ ├── callout.contribution.defaults.module.ts │ │ │ ├── callout.contribution.defaults.service.ts │ │ │ └── dto │ │ │ │ ├── callout.contribution.defaults.dto.create.ts │ │ │ │ ├── callout.contribution.defaults.dto.update.ts │ │ │ │ └── index.ts │ │ ├── callout-contribution-policy │ │ │ ├── callout.contribution.policy.entity.ts │ │ │ ├── callout.contribution.policy.interface.ts │ │ │ ├── callout.contribution.policy.module.ts │ │ │ ├── callout.contribution.policy.service.ts │ │ │ └── dto │ │ │ │ ├── callout.contribution.policy.dto.create.ts │ │ │ │ ├── callout.contribution.policy.dto.update.ts │ │ │ │ └── index.ts │ │ ├── callout-contribution │ │ │ ├── callout.contribution.entity.ts │ │ │ ├── callout.contribution.interface.ts │ │ │ ├── callout.contribution.module.ts │ │ │ ├── callout.contribution.move.module.ts │ │ │ ├── callout.contribution.move.resolver.mutations.ts │ │ │ ├── callout.contribution.move.service.ts │ │ │ ├── callout.contribution.resolver.fields.ts │ │ │ ├── callout.contribution.service.authorization.ts │ │ │ ├── callout.contribution.service.ts │ │ │ └── dto │ │ │ │ ├── callout.contribution.dto.create.ts │ │ │ │ ├── callout.contribution.dto.move.ts │ │ │ │ ├── callout.contribution.dto.update.callouts.sort.order.ts │ │ │ │ └── index.ts │ │ ├── callout-framing │ │ │ ├── callout.framing.entity.ts │ │ │ ├── callout.framing.interface.ts │ │ │ ├── callout.framing.module.ts │ │ │ ├── callout.framing.resolver.fields.ts │ │ │ ├── callout.framing.service.authorization.ts │ │ │ ├── callout.framing.service.ts │ │ │ └── dto │ │ │ │ ├── callout.framing.dto.create.ts │ │ │ │ ├── callout.framing.dto.update.ts │ │ │ │ └── index.ts │ │ ├── callout-transfer │ │ │ ├── callout.transfer.module.ts │ │ │ ├── callout.transfer.resolver.mutations.ts │ │ │ ├── callout.transfer.service.ts │ │ │ └── dto │ │ │ │ └── callouts.set.dto.transfer.callout.ts │ │ ├── callout │ │ │ ├── callout.entity.ts │ │ │ ├── callout.interface.ts │ │ │ ├── callout.module.ts │ │ │ ├── callout.resolver.fields.ts │ │ │ ├── callout.resolver.mutations.ts │ │ │ ├── callout.resolver.subscriptions.ts │ │ │ ├── callout.service.authorization.ts │ │ │ ├── callout.service.ts │ │ │ └── dto │ │ │ │ ├── callout.args.post.created.ts │ │ │ │ ├── callout.dto.create.contribution.ts │ │ │ │ ├── callout.dto.create.ts │ │ │ │ ├── callout.dto.delete.ts │ │ │ │ ├── callout.dto.event.post.created.ts │ │ │ │ ├── callout.dto.message.created.ts │ │ │ │ ├── callout.dto.update.entity.ts │ │ │ │ ├── callout.dto.update.publish.info.ts │ │ │ │ ├── callout.dto.update.ts │ │ │ │ ├── callout.dto.update.visibility.ts │ │ │ │ ├── callout.post.created.payload.ts │ │ │ │ └── index.ts │ │ ├── callouts-set │ │ │ ├── callouts.set.entity.ts │ │ │ ├── callouts.set.interface.ts │ │ │ ├── callouts.set.module.ts │ │ │ ├── callouts.set.resolver.fields.ts │ │ │ ├── callouts.set.resolver.mutations.ts │ │ │ ├── callouts.set.service.authorization.ts │ │ │ ├── callouts.set.service.ts │ │ │ └── dto │ │ │ │ ├── callouts.set.args.callouts.ts │ │ │ │ ├── callouts.set.dto.create.callout.ts │ │ │ │ ├── callouts.set.dto.create.ts │ │ │ │ └── callouts.set.dto.update.callouts.sort.order.ts │ │ ├── collaboration │ │ │ ├── collaboration.entity.ts │ │ │ ├── collaboration.interface.ts │ │ │ ├── collaboration.module.ts │ │ │ ├── collaboration.resolver.fields.ts │ │ │ ├── collaboration.service.authorization.ts │ │ │ ├── collaboration.service.license.ts │ │ │ ├── collaboration.service.ts │ │ │ ├── dto │ │ │ │ ├── collaboration.dto.create.ts │ │ │ │ ├── collaboration.dto.delete.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── innovation-flow-settings │ │ │ └── innovation.flow.settings.interface.ts │ │ ├── innovation-flow-states │ │ │ ├── dto │ │ │ │ ├── innovation.flow.state.dto.create.ts │ │ │ │ └── innovation.flow.state.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── innovation.flow.state.interface.ts │ │ │ ├── innovation.flow.state.module.ts │ │ │ └── innovation.flow.state.service.ts │ │ ├── innovation-flow │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── innovation.flow.dto.create.ts │ │ │ │ ├── innovation.flow.dto.update.entity.ts │ │ │ │ ├── innovation.flow.dto.update.selected.state.ts │ │ │ │ ├── innovation.flow.dto.update.single.state.ts │ │ │ │ └── innovation.flow.dto.update.ts │ │ │ ├── innovation.flow.entity.ts │ │ │ ├── innovation.flow.interface.ts │ │ │ ├── innovation.flow.module.ts │ │ │ ├── innovation.flow.resolver.fields.ts │ │ │ ├── innovation.flow.resolver.mutations.ts │ │ │ ├── innovation.flow.service.authorization.ts │ │ │ ├── innovation.flow.service.spec.ts │ │ │ └── innovation.flow.service.ts │ │ ├── link │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── link.dto.create.ts │ │ │ │ ├── link.dto.delete.ts │ │ │ │ └── link.dto.update.ts │ │ │ ├── link.entity.ts │ │ │ ├── link.interface.ts │ │ │ ├── link.module.ts │ │ │ ├── link.resolver.fields.ts │ │ │ ├── link.resolver.mutations.ts │ │ │ ├── link.resolver.spec.ts │ │ │ ├── link.service.authorization.ts │ │ │ └── link.service.ts │ │ └── post │ │ │ ├── dto │ │ │ ├── post.dto.create.ts │ │ │ ├── post.dto.delete.ts │ │ │ ├── post.dto.move.ts │ │ │ └── post.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── post.entity.ts │ │ │ ├── post.interface.ts │ │ │ ├── post.module.ts │ │ │ ├── post.resolver.fields.ts │ │ │ ├── post.resolver.mutations.ts │ │ │ ├── post.resolver.spec.ts │ │ │ ├── post.service.authorization.ts │ │ │ └── post.service.ts │ ├── common │ │ ├── authorization-policy │ │ │ ├── authorization.policy.entity.ts │ │ │ ├── authorization.policy.interface.ts │ │ │ ├── authorization.policy.module.ts │ │ │ ├── authorization.policy.resolver.fields.ts │ │ │ ├── authorization.policy.service.ts │ │ │ └── index.ts │ │ ├── classification │ │ │ ├── classification.entity.ts │ │ │ ├── classification.interface.ts │ │ │ ├── classification.module.ts │ │ │ ├── classification.resolver.fields.ts │ │ │ ├── classification.resolver.mutations.ts │ │ │ ├── classification.service.authorization.ts │ │ │ ├── classification.service.ts │ │ │ └── dto │ │ │ │ ├── classification.dto.create.ts │ │ │ │ ├── classification.dto.update.select.tagset.value.ts │ │ │ │ └── classification.dto.update.ts │ │ ├── entity │ │ │ ├── authorizable-entity │ │ │ │ ├── authorizable.entity.ts │ │ │ │ ├── authorizable.interface.ts │ │ │ │ └── index.ts │ │ │ ├── base-entity │ │ │ │ ├── base.alkemio.entity.ts │ │ │ │ ├── base.alkemio.interface.ts │ │ │ │ ├── dto │ │ │ │ │ ├── base.alkemio.dto.delete.ts │ │ │ │ │ └── base.alkemio.dto.update.ts │ │ │ │ └── index.ts │ │ │ └── nameable-entity │ │ │ │ ├── dto │ │ │ │ ├── nameable.dto.create.ts │ │ │ │ └── nameable.dto.update.ts │ │ │ │ ├── index.ts │ │ │ │ ├── nameable.entity.ts │ │ │ │ └── nameable.interface.ts │ │ ├── form │ │ │ ├── dto │ │ │ │ ├── form.dto.create.ts │ │ │ │ ├── form.dto.update.ts │ │ │ │ ├── form.question.dto.create.ts │ │ │ │ └── form.question.dto.update.ts │ │ │ ├── form.dto.question.interface.ts │ │ │ ├── form.entity.ts │ │ │ ├── form.interface.ts │ │ │ ├── form.module.ts │ │ │ ├── form.resolver.fields.ts │ │ │ └── form.service.ts │ │ ├── interfaces │ │ │ ├── groupable.interface.ts │ │ │ └── index.ts │ │ ├── knowledge-base │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── knowledge.base.dto.create.ts │ │ │ │ └── knowledge.base.dto.update.ts │ │ │ ├── knowledge.base.entity.ts │ │ │ ├── knowledge.base.interface.ts │ │ │ ├── knowledge.base.module.ts │ │ │ ├── knowledge.base.resolver.fields.ts │ │ │ ├── knowledge.base.service.authorization.ts │ │ │ └── knowledge.base.service.ts │ │ ├── license-entitlement │ │ │ ├── dto │ │ │ │ └── license.entitlement.dto.create.ts │ │ │ ├── license.entitlement.entity.ts │ │ │ ├── license.entitlement.interface.ts │ │ │ ├── license.entitlement.module.ts │ │ │ ├── license.entitlement.resolver.fields.ts │ │ │ └── license.entitlement.service.ts │ │ ├── license │ │ │ ├── dto │ │ │ │ └── license.dto.create.ts │ │ │ ├── license.entity.ts │ │ │ ├── license.interface.ts │ │ │ ├── license.module.ts │ │ │ ├── license.resolver.fields.ts │ │ │ ├── license.service.authorization.ts │ │ │ └── license.service.ts │ │ ├── lifecycle │ │ │ ├── dto │ │ │ │ └── lifecycle.dto.event.ts │ │ │ ├── index.ts │ │ │ ├── lifecycle.entity.ts │ │ │ ├── lifecycle.fields.interface.ts │ │ │ ├── lifecycle.interface.ts │ │ │ ├── lifecycle.module.ts │ │ │ ├── lifecycle.service.spec.ts │ │ │ ├── lifecycle.service.ts │ │ │ └── types │ │ │ │ └── lifecycle.event.ts │ │ ├── location │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── location.dto.create.ts │ │ │ │ └── location.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── location.entity.ts │ │ │ ├── location.interface.ts │ │ │ ├── location.module.ts │ │ │ └── location.service.ts │ │ ├── nvp │ │ │ ├── index.ts │ │ │ ├── nvp.dto.create.ts │ │ │ ├── nvp.entity.ts │ │ │ ├── nvp.factory.ts │ │ │ ├── nvp.interface.ts │ │ │ ├── nvp.module.ts │ │ │ └── nvp.service.ts │ │ ├── preference-set │ │ │ ├── index.ts │ │ │ ├── preference.set.entity.ts │ │ │ ├── preference.set.interface.ts │ │ │ ├── preference.set.module.ts │ │ │ ├── preference.set.service.authorization.ts │ │ │ └── preference.set.service.ts │ │ ├── preference │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── preference-definition.dto.create.ts │ │ │ │ └── preference.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── preference.definition.entity.ts │ │ │ ├── preference.definition.interface.ts │ │ │ ├── preference.entity.ts │ │ │ ├── preference.interface.ts │ │ │ ├── preference.module.ts │ │ │ ├── preference.service.ts │ │ │ └── utils.ts │ │ ├── profile │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── profile.dto.create.reference.ts │ │ │ │ ├── profile.dto.create.tagset.ts │ │ │ │ ├── profile.dto.create.ts │ │ │ │ ├── profile.dto.create.visual.ts │ │ │ │ ├── profile.dto.update.direct.ts │ │ │ │ ├── profile.dto.update.ts │ │ │ │ └── profile.dto.upload.avatar.ts │ │ │ ├── index.ts │ │ │ ├── profile.entity.ts │ │ │ ├── profile.interface.ts │ │ │ ├── profile.module.ts │ │ │ ├── profile.resolver.fields.ts │ │ │ ├── profile.resolver.mutations.ts │ │ │ ├── profile.resolver.spec.ts │ │ │ ├── profile.service.authorization.ts │ │ │ └── profile.service.ts │ │ ├── query-args │ │ │ ├── ids.query.args.ts │ │ │ ├── limit-and-shuffle.ids.query.args.ts │ │ │ └── limit-and-shuffle.query.args.ts │ │ ├── question │ │ │ └── question.interface.ts │ │ ├── reference │ │ │ ├── dto │ │ │ │ ├── reference.dto.create.ts │ │ │ │ ├── reference.dto.delete.ts │ │ │ │ └── reference.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── reference.entity.ts │ │ │ ├── reference.interface.ts │ │ │ ├── reference.module.ts │ │ │ ├── reference.resolver.mutations.ts │ │ │ ├── reference.resolver.spec.ts │ │ │ └── reference.service.ts │ │ ├── scalars │ │ │ ├── index.ts │ │ │ ├── scalar.did.ts │ │ │ ├── scalar.emoji.ts │ │ │ ├── scalar.lifecycle.definition.ts │ │ │ ├── scalar.markdown.ts │ │ │ ├── scalar.messageid.ts │ │ │ ├── scalar.nameid.ts │ │ │ ├── scalar.search.cursor.ts │ │ │ ├── scalar.uuid.ts │ │ │ ├── scalar.whiteboard.content.ts │ │ │ └── scalars.module.ts │ │ ├── tagset-template-set │ │ │ ├── index.ts │ │ │ ├── tagset.template.set.entity.ts │ │ │ ├── tagset.template.set.interface.ts │ │ │ ├── tagset.template.set.module.ts │ │ │ └── tagset.template.set.service.ts │ │ ├── tagset-template │ │ │ ├── dto │ │ │ │ ├── tagset.template.dto.create.ts │ │ │ │ └── tagset.template.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── tagset.template.entity.ts │ │ │ ├── tagset.template.interface.ts │ │ │ ├── tagset.template.module.ts │ │ │ └── tagset.template.service.ts │ │ ├── tagset │ │ │ ├── dto │ │ │ │ ├── tagset.args.ts │ │ │ │ ├── tagset.dto.create.ts │ │ │ │ ├── tagset.dto.delete.ts │ │ │ │ └── tagset.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── tagset.entity.ts │ │ │ ├── tagset.interface.ts │ │ │ ├── tagset.module.ts │ │ │ ├── tagset.resolver.fields.ts │ │ │ ├── tagset.resolver.mutations.ts │ │ │ └── tagset.service.ts │ │ ├── visual │ │ │ ├── dto │ │ │ │ ├── visual.dto.create.ts │ │ │ │ ├── visual.dto.delete.ts │ │ │ │ ├── visual.dto.update.ts │ │ │ │ └── visual.dto.upload.image.ts │ │ │ ├── index.ts │ │ │ ├── visual.constraints.ts │ │ │ ├── visual.entity.ts │ │ │ ├── visual.interface.ts │ │ │ ├── visual.module.ts │ │ │ ├── visual.resolver.mutations.ts │ │ │ ├── visual.resolver.spec.ts │ │ │ ├── visual.service.authorization.ts │ │ │ └── visual.service.ts │ │ └── whiteboard │ │ │ ├── dto │ │ │ ├── whiteboard.dto.create.ts │ │ │ ├── whiteboard.dto.delete.ts │ │ │ ├── whiteboard.dto.update.entity.ts │ │ │ └── whiteboard.dto.update.ts │ │ │ ├── empty.whiteboard.content.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ ├── whiteboard.entity.ts │ │ │ ├── whiteboard.interface.ts │ │ │ ├── whiteboard.module.ts │ │ │ ├── whiteboard.resolver.fields.ts │ │ │ ├── whiteboard.resolver.mutations.ts │ │ │ ├── whiteboard.service.authorization.ts │ │ │ └── whiteboard.service.ts │ ├── communication │ │ ├── communication │ │ │ ├── communication.entity.ts │ │ │ ├── communication.interface.ts │ │ │ ├── communication.module.ts │ │ │ ├── communication.resolver.fields.ts │ │ │ ├── communication.resolver.mutations.spec.ts │ │ │ ├── communication.resolver.mutations.ts │ │ │ ├── communication.service.authorization.ts │ │ │ ├── communication.service.spec.ts │ │ │ ├── communication.service.ts │ │ │ ├── dto │ │ │ │ ├── communication.dto.event.message.received.ts │ │ │ │ ├── communication.dto.send.message.community.leads.ts │ │ │ │ ├── communication.dto.send.message.organization.ts │ │ │ │ └── communication.dto.send.message.user.ts │ │ │ └── index.ts │ │ ├── message.guidance.question.result │ │ │ ├── message.guidance.question.result.interface.ts │ │ │ └── message.guidance.question.result.module.ts │ │ ├── message.reaction │ │ │ ├── index.ts │ │ │ ├── message.reaction.interface.ts │ │ │ ├── message.reaction.module.ts │ │ │ └── message.reaction.resolver.fields.ts │ │ ├── message │ │ │ ├── index.ts │ │ │ ├── message.interface.ts │ │ │ ├── message.module.ts │ │ │ └── message.resolver.fields.ts │ │ ├── messaging │ │ │ └── mention.interface.ts │ │ ├── room-lookup │ │ │ ├── room.lookup.module.ts │ │ │ └── room.lookup.service.ts │ │ ├── room-mentions │ │ │ ├── room.mentions.module.ts │ │ │ └── room.mentions.service.ts │ │ ├── room │ │ │ ├── dto │ │ │ │ ├── room.dto.add.reaction.to.message.ts │ │ │ │ ├── room.dto.remove.message.reaction.ts │ │ │ │ ├── room.dto.remove.message.ts │ │ │ │ ├── room.dto.send.message.reply.ts │ │ │ │ ├── room.dto.send.message.ts │ │ │ │ └── subscription │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── room.event.subscription.args.ts │ │ │ │ │ ├── room.event.subscription.result.ts │ │ │ │ │ ├── room.message.event.subscription.result.ts │ │ │ │ │ └── room.message.reaction.event.subscription.result.ts │ │ │ ├── index.ts │ │ │ ├── room.entity.ts │ │ │ ├── room.event.resolver.subscription.ts │ │ │ ├── room.interface.ts │ │ │ ├── room.module.ts │ │ │ ├── room.resolver.fields.ts │ │ │ ├── room.resolver.mutations.ts │ │ │ ├── room.service.authorization.ts │ │ │ ├── room.service.events.ts │ │ │ ├── room.service.mentions.from.text.spec.ts │ │ │ └── room.service.ts │ │ ├── vc-interaction │ │ │ ├── dto │ │ │ │ └── vc.interaction.dto.create.ts │ │ │ ├── vc.interaction.entity.ts │ │ │ ├── vc.interaction.interface.ts │ │ │ ├── vc.interaction.module.ts │ │ │ └── vc.interaction.service.ts │ │ └── virtual.contributor.message │ │ │ ├── virtual.contributor.message.module.ts │ │ │ └── virtual.contributor.message.service.ts │ ├── community │ │ ├── ai-persona-model-card │ │ │ ├── ai.persona.model.card.module.ts │ │ │ ├── ai.persona.model.card.resolver.fields.ts │ │ │ ├── docs │ │ │ │ ├── ai_model_card_template.md │ │ │ │ └── model.card.json │ │ │ └── dto │ │ │ │ ├── ai.persona.model.card.dto.ai.engine.result.ts │ │ │ │ ├── ai.persona.model.card.dto.entry.flag.ts │ │ │ │ ├── ai.persona.model.card.dto.monitoring.result.ts │ │ │ │ ├── ai.persona.model.card.dto.result.ts │ │ │ │ └── ai.persona.model.card.dto.space.usage.result.ts │ │ ├── ai-persona │ │ │ ├── ai.persona.entity.ts │ │ │ ├── ai.persona.interface.ts │ │ │ ├── ai.persona.module.ts │ │ │ ├── ai.persona.resolver.fields.ts │ │ │ ├── ai.persona.resolver.mutations.ts │ │ │ ├── ai.persona.service.authorization.ts │ │ │ ├── ai.persona.service.ts │ │ │ ├── dto │ │ │ │ ├── ai.persona.dto.create.ts │ │ │ │ ├── ai.persona.dto.delete.ts │ │ │ │ ├── ai.persona.dto.update.ts │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── community-communication │ │ │ ├── community.communication.module.ts │ │ │ └── community.communication.service.ts │ │ ├── community-guidelines │ │ │ ├── community.guidelines.entity.ts │ │ │ ├── community.guidelines.interface.ts │ │ │ ├── community.guidelines.module.ts │ │ │ ├── community.guidelines.resolver.mutations.ts │ │ │ ├── community.guidelines.service.authorization.ts │ │ │ ├── community.guidelines.service.ts │ │ │ ├── dto │ │ │ │ ├── community.guidelines.dto.create.ts │ │ │ │ ├── community.guidelines.dto.remove.content.ts │ │ │ │ ├── community.guidelines.dto.update.entity.ts │ │ │ │ └── community.guidelines.dto.update.ts │ │ │ └── index.ts │ │ ├── community │ │ │ ├── community.entity.ts │ │ │ ├── community.interface.ts │ │ │ ├── community.module.ts │ │ │ ├── community.resolver.fields.ts │ │ │ ├── community.resolver.mutations.spec.ts │ │ │ ├── community.resolver.mutations.ts │ │ │ ├── community.service.authorization.ts │ │ │ ├── community.service.spec.ts │ │ │ ├── community.service.ts │ │ │ ├── dto │ │ │ │ └── community.dto.create.ts │ │ │ └── index.ts │ │ ├── contributor │ │ │ ├── contributor.base.entity.ts │ │ │ ├── contributor.base.interface.ts │ │ │ ├── contributor.defaults.ts │ │ │ ├── contributor.interface.ts │ │ │ ├── contributor.module.ts │ │ │ ├── contributor.service.ts │ │ │ ├── dto │ │ │ │ ├── contributor.dto.create.ts │ │ │ │ ├── contributor.dto.filter.ts │ │ │ │ ├── contributor.dto.update.ts │ │ │ │ └── contributor.query.args.ts │ │ │ └── index.ts │ │ ├── organization-lookup │ │ │ ├── organization.lookup.module.ts │ │ │ └── organization.lookup.service.ts │ │ ├── organization-verification │ │ │ ├── dto │ │ │ │ ├── organization.verification.dto.create.ts │ │ │ │ └── organization.verification.dto.event.ts │ │ │ ├── organization.verification.entity.ts │ │ │ ├── organization.verification.interface.ts │ │ │ ├── organization.verification.module.ts │ │ │ ├── organization.verification.resolver.fields.lifecycle.ts │ │ │ ├── organization.verification.resolver.mutations.ts │ │ │ ├── organization.verification.service.authorization.ts │ │ │ ├── organization.verification.service.lifecycle.ts │ │ │ └── organization.verification.service.ts │ │ ├── organization.settings │ │ │ ├── dto │ │ │ │ ├── organization.settings.dto.update.ts │ │ │ │ ├── organization.settings.membership.dto.update.ts │ │ │ │ └── organization.settings.privacy.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── organization.settings.interface.ts │ │ │ ├── organization.settings.membership.interface.ts │ │ │ ├── organization.settings.module.ts │ │ │ ├── organization.settings.privacy.interface.ts │ │ │ └── organization.settings.service.ts │ │ ├── organization │ │ │ ├── definitions │ │ │ │ ├── organization.role.application.form.ts │ │ │ │ └── organization.role.definitions.ts │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── organization.dto.create.ts │ │ │ │ ├── organization.dto.delete.ts │ │ │ │ ├── organization.dto.reset.authorization.ts │ │ │ │ ├── organization.dto.update.settings.ts │ │ │ │ └── organization.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── organization.entity.ts │ │ │ ├── organization.interface.ts │ │ │ ├── organization.module.ts │ │ │ ├── organization.resolver.fields.ts │ │ │ ├── organization.resolver.mutations.ts │ │ │ ├── organization.resolver.queries.ts │ │ │ ├── organization.resolver.spec.ts │ │ │ ├── organization.service.authorization.ts │ │ │ ├── organization.service.license.ts │ │ │ ├── organization.service.spec.ts │ │ │ └── organization.service.ts │ │ ├── user-group │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── user-group.dto.assign.member.ts │ │ │ │ ├── user-group.dto.create.ts │ │ │ │ ├── user-group.dto.delete.ts │ │ │ │ ├── user-group.dto.remove.member.ts │ │ │ │ └── user-group.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── user-group.entity.ts │ │ │ ├── user-group.interface.ts │ │ │ ├── user-group.module.ts │ │ │ ├── user-group.resolver.fields.ts │ │ │ ├── user-group.resolver.mutations.ts │ │ │ ├── user-group.resolver.spec.ts │ │ │ ├── user-group.service.authorization.ts │ │ │ ├── user-group.service.spec.ts │ │ │ └── user-group.service.ts │ │ ├── user-lookup │ │ │ ├── user.lookup.module.ts │ │ │ └── user.lookup.service.ts │ │ ├── user.settings │ │ │ ├── dto │ │ │ │ ├── user.settings.communications.dto.update.ts │ │ │ │ ├── user.settings.dto.update.ts │ │ │ │ └── user.settings.privacy.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── user.settings.communications.interface.ts │ │ │ ├── user.settings.interface.ts │ │ │ ├── user.settings.module.ts │ │ │ ├── user.settings.privacy.interface.ts │ │ │ └── user.settings.service.ts │ │ ├── user │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── roles.dto.authentication.result.ts │ │ │ │ ├── user.dto.communication.message.send.ts │ │ │ │ ├── user.dto.communication.room.direct.result.ts │ │ │ │ ├── user.dto.create.ts │ │ │ │ ├── user.dto.delete.ts │ │ │ │ ├── user.dto.reset.authorization.ts │ │ │ │ ├── user.dto.update.platform.settings.ts │ │ │ │ ├── user.dto.update.preference.ts │ │ │ │ ├── user.dto.update.settings.ts │ │ │ │ ├── user.dto.update.ts │ │ │ │ └── users.query.args.ts │ │ │ ├── index.ts │ │ │ ├── user.entity.ts │ │ │ ├── user.interface.ts │ │ │ ├── user.module.ts │ │ │ ├── user.resolver.fields.ts │ │ │ ├── user.resolver.mutations.ts │ │ │ ├── user.resolver.queries.ts │ │ │ ├── user.resolver.spec.ts │ │ │ ├── user.service.authorization.ts │ │ │ ├── user.service.spec.ts │ │ │ └── user.service.ts │ │ ├── virtual-contributor-defaults │ │ │ ├── virtual.contributor.defaults.module.ts │ │ │ └── virtual.contributor.defaults.service.ts │ │ ├── virtual-contributor-lookup │ │ │ ├── virtual.contributor.lookup.module.ts │ │ │ └── virtual.contributor.lookup.service.ts │ │ ├── virtual-contributor-settings │ │ │ ├── dto │ │ │ │ ├── virtual.contributor.settings.dto.update.ts │ │ │ │ └── virtual.contributor.settings.privacy.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── virtual.contributor.settings.interface.ts │ │ │ ├── virtual.contributor.settings.module.ts │ │ │ ├── virtual.contributor.settings.privacy.interface.ts │ │ │ └── virtual.contributor.settings.service.ts │ │ └── virtual-contributor │ │ │ ├── definition │ │ │ └── virtual.contributor.settings.default.ts │ │ │ ├── dto │ │ │ ├── index.ts │ │ │ ├── utils.ts │ │ │ ├── virtual.contributor.dto.create.ts │ │ │ ├── virtual.contributor.dto.delete.ts │ │ │ ├── virtual.contributor.dto.invocation.input.ts │ │ │ ├── virtual.contributor.dto.refresh.body.of.knowledge.ts │ │ │ ├── virtual.contributor.dto.update.settings.ts │ │ │ ├── virtual.contributor.dto.update.ts │ │ │ ├── virtual.contributor.updated.subscription.args.ts │ │ │ └── virtual.contributor.updated.subscription.result.ts │ │ │ ├── virtual.contributor.entity.ts │ │ │ ├── virtual.contributor.interface.ts │ │ │ ├── virtual.contributor.module.ts │ │ │ ├── virtual.contributor.resolver.fields.ts │ │ │ ├── virtual.contributor.resolver.mutations.ts │ │ │ ├── virtual.contributor.resolver.queries.ts │ │ │ ├── virtual.contributor.resolver.subscriptions.ts │ │ │ ├── virtual.contributor.service.authorization.ts │ │ │ └── virtual.contributor.service.ts │ ├── in-app-notification-reader │ │ ├── dto │ │ │ ├── in.app.notification.base.ts │ │ │ ├── in.app.notification.callout.published.ts │ │ │ ├── in.app.notification.community.new.member.ts │ │ │ ├── in.app.notification.state.update.ts │ │ │ └── in.app.notification.user.mentioned.ts │ │ ├── field-resolvers │ │ │ ├── in.app.notification.callout.published.resolver.fields.ts │ │ │ ├── in.app.notification.community.new.member.resolver.fields.ts │ │ │ ├── in.app.notification.user.mentioned.resolver.fields.ts │ │ │ └── index.ts │ │ ├── in.app.notification.interface.ts │ │ ├── in.app.notification.reader.module.ts │ │ ├── in.app.notification.reader.ts │ │ ├── in.app.notification.resolver.fields.ts │ │ ├── in.app.notification.resolver.mutations.ts │ │ ├── in.app.notification.resolver.queries.ts │ │ ├── in.app.notification.resolver.subscription.ts │ │ └── util │ │ │ └── get.contributor.type.ts │ ├── in-app-notification-receiver │ │ ├── in.app.notification.receiver.controller.ts │ │ ├── in.app.notification.receiver.module.ts │ │ ├── in.app.notification.receiver.ts │ │ ├── in.app.receiver.spec.ts │ │ └── index.ts │ ├── in-app-notification │ │ ├── in.app.notification.category.ts │ │ ├── in.app.notification.entity.ts │ │ ├── in.app.notification.state.ts │ │ └── notification.event.type.ts │ ├── innovation-hub │ │ ├── dto │ │ │ ├── index.ts │ │ │ ├── innovation.hub.args.query.ts │ │ │ ├── innovation.hub.dto.create.ts │ │ │ ├── innovation.hub.dto.delete.ts │ │ │ └── innovation.hub.dto.update.ts │ │ ├── innovation.hub.entity.ts │ │ ├── innovation.hub.interface.ts │ │ ├── innovation.hub.module.ts │ │ ├── innovation.hub.resolver.fields.ts │ │ ├── innovation.hub.resolver.mutations.ts │ │ ├── innovation.hub.service.authorization.ts │ │ ├── innovation.hub.service.ts │ │ ├── innovation.hub.type.enum.ts │ │ └── types.ts │ ├── profile-documents │ │ ├── profile.documents.module.ts │ │ ├── profile.documents.service.spec.ts │ │ └── profile.documents.service.ts │ ├── space │ │ ├── account.host │ │ │ ├── account.host.module.ts │ │ │ └── account.host.service.ts │ │ ├── account.lookup │ │ │ ├── account.lookup.module.ts │ │ │ └── account.lookup.service.ts │ │ ├── account │ │ │ ├── account.entity.ts │ │ │ ├── account.interface.ts │ │ │ ├── account.license.subscription.interface.ts │ │ │ ├── account.module.ts │ │ │ ├── account.resolver.fields.ts │ │ │ ├── account.resolver.mutations.ts │ │ │ ├── account.resolver.queries.ts │ │ │ ├── account.service.authorization.ts │ │ │ ├── account.service.license.ts │ │ │ ├── account.service.ts │ │ │ └── dto │ │ │ │ ├── account.dto.create.innovation.hub.ts │ │ │ │ ├── account.dto.create.innovation.pack.ts │ │ │ │ ├── account.dto.create.space.ts │ │ │ │ ├── account.dto.create.virtual.contributor.ts │ │ │ │ ├── account.dto.reset.authorization.ts │ │ │ │ ├── account.dto.reset.license.ts │ │ │ │ ├── account.dto.transfer.innovation.hub.ts │ │ │ │ ├── account.dto.transfer.innovation.pack.ts │ │ │ │ ├── account.dto.transfer.space.ts │ │ │ │ └── account.dto.transfer.virtual.contributor.ts │ │ ├── index.ts │ │ ├── space.about.membership │ │ │ ├── dto │ │ │ │ └── space.about.membership.ts │ │ │ ├── space.about.membership.module.ts │ │ │ ├── space.about.membership.resolver.fields.ts │ │ │ └── space.about.membership.service.ts │ │ ├── space.about │ │ │ ├── dto │ │ │ │ ├── space.about.dto.create.ts │ │ │ │ └── space.about.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── space.about.entity.ts │ │ │ ├── space.about.interface.ts │ │ │ ├── space.about.module.ts │ │ │ ├── space.about.resolver.fields.ts │ │ │ ├── space.about.service.authorization.ts │ │ │ └── space.about.service.ts │ │ ├── space.defaults │ │ │ ├── definitions │ │ │ │ ├── space.community.role.application.form.ts │ │ │ │ ├── space.community.roles.ts │ │ │ │ ├── subspace.community.role.application.form.ts │ │ │ │ └── subspace.community.roles.ts │ │ │ ├── space.defaults.module.ts │ │ │ └── space.defaults.service.ts │ │ ├── space.lookup │ │ │ ├── space.lookup.module.ts │ │ │ └── space.lookup.service.ts │ │ ├── space.settings │ │ │ ├── dto │ │ │ │ ├── space.settings.collaboration.dto.create.ts │ │ │ │ ├── space.settings.collaboration.dto.update.ts │ │ │ │ ├── space.settings.dto.create.ts │ │ │ │ ├── space.settings.dto.update.ts │ │ │ │ ├── space.settings.membership.dto.create.ts │ │ │ │ ├── space.settings.membership.dto.update.ts │ │ │ │ ├── space.settings.privacy.dto.create.ts │ │ │ │ └── space.settings.privacy.dto.update.ts │ │ │ ├── index.ts │ │ │ ├── space.settings.collaboration.interface.ts │ │ │ ├── space.settings.interface.ts │ │ │ ├── space.settings.membership.interface.ts │ │ │ ├── space.settings.module.ts │ │ │ ├── space.settings.privacy.interface.ts │ │ │ └── space.settings.service.ts │ │ └── space │ │ │ ├── dto │ │ │ ├── explore.spaces.dto.input.ts │ │ │ ├── space.args.query.spaces.ts │ │ │ ├── space.dto.create.collaboration.ts │ │ │ ├── space.dto.create.subspace.ts │ │ │ ├── space.dto.create.ts │ │ │ ├── space.dto.delete.ts │ │ │ ├── space.dto.event.subspace.created.ts │ │ │ ├── space.dto.ingest.ts │ │ │ ├── space.dto.update.platform.settings.ts │ │ │ ├── space.dto.update.settings.ts │ │ │ ├── space.dto.update.ts │ │ │ ├── space.subspace.created.args.ts │ │ │ └── space.subspace.created.payload.ts │ │ │ ├── index.ts │ │ │ ├── sort.spaces.by.activity.spec.ts │ │ │ ├── sort.spaces.by.activity.ts │ │ │ ├── space.entity.ts │ │ │ ├── space.interface.ts │ │ │ ├── space.license.subscription.interface.ts │ │ │ ├── space.module.ts │ │ │ ├── space.resolver.fields.ts │ │ │ ├── space.resolver.mutations.ts │ │ │ ├── space.resolver.queries.ts │ │ │ ├── space.resolver.subscriptions.ts │ │ │ ├── space.service.authorization.ts │ │ │ ├── space.service.license.ts │ │ │ ├── space.service.spec.ts │ │ │ └── space.service.ts │ ├── storage │ │ ├── document │ │ │ ├── document.entity.ts │ │ │ ├── document.interface.ts │ │ │ ├── document.module.ts │ │ │ ├── document.resolver.fields.ts │ │ │ ├── document.resolver.mutations.ts │ │ │ ├── document.resolver.spec.ts │ │ │ ├── document.service.authorization.ts │ │ │ ├── document.service.ts │ │ │ ├── dto │ │ │ │ ├── document.dto.create.ts │ │ │ │ ├── document.dto.delete.ts │ │ │ │ └── document.dto.update.ts │ │ │ └── index.ts │ │ ├── storage-aggregator │ │ │ ├── dto │ │ │ │ └── storage.aggregator.dto.parent.ts │ │ │ ├── storage.aggregator.entity.ts │ │ │ ├── storage.aggregator.interface.ts │ │ │ ├── storage.aggregator.module.ts │ │ │ ├── storage.aggregator.resolver.fields.ts │ │ │ ├── storage.aggregator.service.authorization.ts │ │ │ └── storage.aggregator.service.ts │ │ └── storage-bucket │ │ │ ├── dto │ │ │ ├── storage.bucket.args.documents.ts │ │ │ ├── storage.bucket.dto.create.ts │ │ │ ├── storage.bucket.dto.delete.ts │ │ │ ├── storage.bucket.dto.parent.ts │ │ │ ├── storage.bucket.dto.upload.file.on.link.ts │ │ │ ├── storage.bucket.dto.upload.file.on.reference.ts │ │ │ └── storage.bucket.dto.upload.file.ts │ │ │ ├── storage.bucket.entity.ts │ │ │ ├── storage.bucket.interface.ts │ │ │ ├── storage.bucket.module.ts │ │ │ ├── storage.bucket.resolver.fields.ts │ │ │ ├── storage.bucket.resolver.mutations.ts │ │ │ ├── storage.bucket.service.authorization.ts │ │ │ └── storage.bucket.service.ts │ ├── task │ │ ├── dto │ │ │ ├── index.ts │ │ │ ├── task.interface.ts │ │ │ └── task.status.enum.ts │ │ ├── index.ts │ │ ├── task.module.ts │ │ ├── task.resolver.fields.ts │ │ └── task.resolver.queries.ts │ ├── template │ │ ├── template-applier │ │ │ ├── dto │ │ │ │ └── template.applier.dto.update.collaboration.ts │ │ │ ├── template.applier.module.ts │ │ │ ├── template.applier.resolver.mutations.ts │ │ │ └── template.applier.service.ts │ │ ├── template-content-space │ │ │ ├── dto │ │ │ │ ├── template.content.space.dto.create.ts │ │ │ │ └── template.content.space.dto.update.ts │ │ │ ├── template.content.space.entity.ts │ │ │ ├── template.content.space.interface.ts │ │ │ ├── template.content.space.module.ts │ │ │ ├── template.content.space.resolver.fields.ts │ │ │ ├── template.content.space.resolver.mutations.ts │ │ │ ├── template.content.space.service.authorization.ts │ │ │ ├── template.content.space.service.license.ts │ │ │ └── template.content.space.service.ts │ │ ├── template-default │ │ │ ├── dto │ │ │ │ ├── template.default.dto.create.ts │ │ │ │ └── template.default.dto.update.ts │ │ │ ├── template.default.entity.ts │ │ │ ├── template.default.interface.ts │ │ │ ├── template.default.module.ts │ │ │ ├── template.default.resolver.fields.ts │ │ │ ├── template.default.service.authorization.ts │ │ │ └── template.default.service.ts │ │ ├── template │ │ │ ├── dto │ │ │ │ ├── template.dto.create.base.ts │ │ │ │ ├── template.dto.create.ts │ │ │ │ ├── template.dto.delete.ts │ │ │ │ ├── template.dto.update.from.space.ts │ │ │ │ └── template.dto.update.ts │ │ │ ├── template.entity.ts │ │ │ ├── template.interface.ts │ │ │ ├── template.module.ts │ │ │ ├── template.resolver.fields.ts │ │ │ ├── template.resolver.mutations.spec.ts │ │ │ ├── template.resolver.mutations.ts │ │ │ ├── template.service.authorization.ts │ │ │ └── template.service.ts │ │ ├── templates-manager │ │ │ ├── dto │ │ │ │ ├── templates.manager.dto.create..ts │ │ │ │ └── templates.manager.dto.create.ts │ │ │ ├── index.ts │ │ │ ├── templates.manager.entity.ts │ │ │ ├── templates.manager.interface.ts │ │ │ ├── templates.manager.module.ts │ │ │ ├── templates.manager.resolver.fields.ts │ │ │ ├── templates.manager.resolver.mutations.ts │ │ │ ├── templates.manager.service.authorization.ts │ │ │ └── templates.manager.service.ts │ │ └── templates-set │ │ │ ├── dto │ │ │ ├── templates.set.dto.create.template.from.collaboration.ts │ │ │ └── templates.set.dto.create.template.ts │ │ │ ├── index.ts │ │ │ ├── templates.set.entity.ts │ │ │ ├── templates.set.interface.ts │ │ │ ├── templates.set.module.ts │ │ │ ├── templates.set.resolver.fields.ts │ │ │ ├── templates.set.resolver.mutations.ts │ │ │ ├── templates.set.service.authorization.ts │ │ │ └── templates.set.service.ts │ └── timeline │ │ ├── calendar │ │ ├── calendar.entity.ts │ │ ├── calendar.interface.ts │ │ ├── calendar.module.ts │ │ ├── calendar.resolver.fields.ts │ │ ├── calendar.resolver.mutations.ts │ │ ├── calendar.service.authorization.ts │ │ ├── calendar.service.ts │ │ └── dto │ │ │ └── calendar.dto.create.event.ts │ │ ├── event │ │ ├── dto │ │ │ ├── event.dto.create.ts │ │ │ ├── event.dto.delete.ts │ │ │ └── event.dto.update.ts │ │ ├── event.entity.ts │ │ ├── event.interface.ts │ │ ├── event.module.ts │ │ ├── event.resolver.fields.ts │ │ ├── event.resolver.mutations.ts │ │ ├── event.resolver.spec.ts │ │ ├── event.service.authorization.ts │ │ ├── event.service.ts │ │ └── index.ts │ │ └── timeline │ │ ├── timeline.entity.ts │ │ ├── timeline.interface.ts │ │ ├── timeline.module.ts │ │ ├── timeline.resolver.fields.ts │ │ ├── timeline.service.authorization.ts │ │ └── timeline.service.ts ├── library │ ├── innovation-pack │ │ ├── dto │ │ │ ├── innovation.pack.dto.create.ts │ │ │ ├── innovation.pack.dto.update.ts │ │ │ └── innovationPack.dto.delete.ts │ │ ├── index.ts │ │ ├── innovation.pack.defaults │ │ │ ├── innovation.pack.defaults.module.ts │ │ │ └── innovation.pack.defaults.service.ts │ │ ├── innovation.pack.entity.ts │ │ ├── innovation.pack.interface.ts │ │ ├── innovation.pack.module.ts │ │ ├── innovation.pack.resolver.fields.ts │ │ ├── innovation.pack.resolver.mutations.ts │ │ ├── innovation.pack.service.authorization.ts │ │ ├── innovation.pack.service.spec.ts │ │ └── innovation.pack.service.ts │ └── library │ │ ├── dto │ │ ├── library.dto.create.innovation.pack.ts │ │ ├── library.dto.innovationPacks.input.ts │ │ ├── library.dto.template.result.ts │ │ └── library.dto.templates.input.ts │ │ ├── library.entity.ts │ │ ├── library.interface.ts │ │ ├── library.module.ts │ │ ├── library.resolver.fields.ts │ │ ├── library.service.authorization.ts │ │ └── library.service.ts ├── main.ts ├── migrations │ ├── 1730713372181-schemaSetup.ts │ ├── 1730906666882-initialData.ts │ ├── 1730986509540-authorizationPolicy.ts │ ├── 1731077703010-allowEventsFromSubspaces.ts │ ├── 1731500015640-licenseEntitlements.ts │ ├── 1731781160588-authParent.ts │ ├── 1731937383422-userGuidanceRoom.ts │ ├── 1733155972372-innovationFlowTemplate.ts │ ├── 1733732413139-inAppNotifications.ts │ ├── 1734087106786-powerpointMimeTypes.ts │ ├── 1734708463412-spaceSettingsJSON.ts │ ├── 1734708463444-credentialRules.ts │ ├── 1734708463555-licensePolicyLimits.ts │ ├── 1734708463777-userOrgSettings.ts │ ├── 1735321009455-calloutsSet.ts │ ├── 1735810576923-fixBaseline.ts │ ├── 1736446208811-IncreaseColumnNVPNameSize.ts │ ├── 1736446208855-authAnonymousReadAccess.ts │ ├── 1736446208899-roleSets2.ts │ ├── 1738002827561-platformVcSettings.ts │ ├── 1738233483679-fixBaseline.ts │ ├── 1738233557873-accountAdminCred.ts │ ├── 1739270527860-fixProfileType.ts │ ├── 1740065242887-innovationFlowStates.ts │ ├── 1740486245080-fixKnowledgeBaseCalloutSetType.ts │ ├── 1740492712821-fixProfileTypeTypo.ts │ ├── 1740499507381-knowledgeBaseTagsets.ts │ ├── 1740499507388-spaceAbout.ts │ ├── 1740661529396-fixBaseline.ts │ ├── 1740661529399-spaceAboutProfile.ts │ ├── 1741340581608-fixInteractionModes.ts │ ├── 1741340581699-innovation-flow-tagsets.ts │ ├── 1742208034705-fixBaseline.ts │ ├── 1742316907610-flowStatesCommunityGuidelines.ts │ ├── 1742377202254-fixBaseline.ts │ ├── 1742475072830-dataCoherency.ts │ ├── 1743416333189-spaceDescription.ts │ ├── 1743578542843-fixEmptyCalloutReferenceName.ts │ ├── 1743965565660-tagsetTemplatesDuplication.ts │ ├── 1743965565670-classificationTagsetDuplication.ts │ ├── 1744022375257-spaceL0Host.ts │ ├── 1744650765522-platformRoles.ts │ ├── 1745504773410-uniqueFields.ts │ ├── 1745836284795-activitySubspaceCreated.ts │ ├── 1747050057273-updateTutorialTemplate.ts │ ├── 1747473969547-spaceType.ts │ ├── 1747641383717-longerInvitationWelcomeMessage.ts │ ├── 1747641383799-paginatedVCs.ts │ ├── 1747925999514-AddBlueSkyRefToUserProfiles.ts │ ├── 1747995647235-AddSocialReferencesToOrganizationProfiles.ts │ ├── 1748424718837-tutorialsFlowState.ts │ ├── 1748434921732-longerPlatformInvitationMessage.ts │ ├── 1748613934555-spaceTemplate.ts │ ├── 1748628720167-refAuths.ts │ ├── 1748628720999-spaceTemplate.ts │ └── utils │ │ ├── alterColumnType.ts │ │ ├── callouts │ │ ├── create-callout.ts │ │ └── update-to-link-callout.ts │ │ ├── chunk.array.ts │ │ ├── create-authorization-policy.ts │ │ ├── create-location.ts │ │ ├── create-profile.ts │ │ ├── create-tagset.ts │ │ ├── dataCoherency-utils.ts │ │ ├── escape-string.ts │ │ ├── generate-nameid.ts │ │ ├── get-query-runner.ts │ │ ├── preferences │ │ ├── add-preference-definitions-defaults.ts │ │ ├── add-preference-definitions.ts │ │ ├── add-preference-set.ts │ │ ├── add-preferences.ts │ │ ├── index.ts │ │ └── remove-preferences.ts │ │ ├── safely-add-foreignKey.ts │ │ ├── safely-drop-foreignKey.ts │ │ ├── safely-drop-index.ts │ │ └── storage │ │ └── storage-bucket-utils.ts ├── platform │ ├── activity │ │ ├── activity.entity.ts │ │ ├── activity.interface.ts │ │ ├── activity.module.ts │ │ ├── activity.service.ts │ │ ├── create.latest.activity.per.space.spec.ts │ │ ├── create.latest.activity.per.space.ts │ │ ├── dto │ │ │ └── activity.dto.create.ts │ │ └── index.ts │ ├── admin │ │ ├── authorization │ │ │ ├── admin.authorization.module.ts │ │ │ ├── admin.authorization.resolver.mutations.ts │ │ │ ├── admin.authorization.resolver.queries.ts │ │ │ ├── admin.authorization.service.ts │ │ │ └── dto │ │ │ │ ├── authorization.dto.credential.grant.organization.ts │ │ │ │ ├── authorization.dto.credential.grant.ts │ │ │ │ ├── authorization.dto.credential.revoke.organization.ts │ │ │ │ ├── authorization.dto.credential.revoke.ts │ │ │ │ ├── authorization.dto.user.authorization.privileges.ts │ │ │ │ ├── authorization.dto.users.with.credential.ts │ │ │ │ └── index.ts │ │ ├── avatars │ │ │ ├── admin.avatar.module.ts │ │ │ └── admin.avatarresolver.mutations.ts │ │ ├── communication │ │ │ ├── admin.communication.module.ts │ │ │ ├── admin.communication.resolver.mutations.ts │ │ │ ├── admin.communication.resolver.queries.ts │ │ │ ├── admin.communication.service.ts │ │ │ └── dto │ │ │ │ ├── admin.communication.dto.ensure.access.input.ts │ │ │ │ ├── admin.communication.dto.membership.input.ts │ │ │ │ ├── admin.communication.dto.membership.result.ts │ │ │ │ ├── admin.communication.dto.orphaned.room.result.ts │ │ │ │ ├── admin.communication.dto.orphaned.usage.result.ts │ │ │ │ ├── admin.communication.dto.remove.orphaned.room.ts │ │ │ │ ├── admin.communication.dto.room.result.ts │ │ │ │ ├── admin.communication.dto.update.room.state.ts │ │ │ │ └── index.ts │ │ ├── licensing │ │ │ ├── admin.licensing.module.ts │ │ │ ├── admin.licensing.resolver.mutations.ts │ │ │ ├── admin.licensing.service.ts │ │ │ └── dto │ │ │ │ ├── admin.licensing.dto.assign.license.plan.to.account.ts │ │ │ │ ├── admin.licensing.dto.assign.license.plan.to.space.ts │ │ │ │ ├── admin.licensing.dto.revoke.license.plan.from.account.ts │ │ │ │ └── admin.licensing.dto.revoke.license.plan.from.space.ts │ │ ├── search │ │ │ ├── admin.search.ingest.module.ts │ │ │ └── admin.search.ingest.resolver.mutations.ts │ │ ├── users │ │ │ ├── admin.users.module.ts │ │ │ └── admin.users.resolver.mutations.ts │ │ └── whiteboards │ │ │ ├── admin.whiteboard.files.result.ts │ │ │ ├── admin.whiteboard.module.ts │ │ │ ├── admin.whiteboard.resolver.mutations.ts │ │ │ └── admin.whiteboard.service.ts │ ├── authorization │ │ ├── platform.authorization.policy.module.ts │ │ └── platform.authorization.policy.service.ts │ ├── configuration │ │ ├── config │ │ │ ├── apm │ │ │ │ ├── apm.config.interface.ts │ │ │ │ └── index.ts │ │ │ ├── authentication │ │ │ │ ├── authentication.config.entity.ts │ │ │ │ ├── authentication.config.interface.ts │ │ │ │ ├── index.ts │ │ │ │ └── providers │ │ │ │ │ ├── authentication.provider.config.entity.ts │ │ │ │ │ ├── authentication.provider.config.interface.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── ory │ │ │ │ │ ├── ory.config.entity.ts │ │ │ │ │ └── ory.config.interface.ts │ │ │ ├── config.entity.ts │ │ │ ├── config.interface.ts │ │ │ ├── config.module.ts │ │ │ ├── config.resolver.fields.ts │ │ │ ├── config.service.spec.ts │ │ │ ├── config.service.ts │ │ │ ├── index.ts │ │ │ ├── integrations │ │ │ │ ├── geo │ │ │ │ │ └── geo.config.interface.ts │ │ │ │ └── index.ts │ │ │ ├── locations │ │ │ │ ├── index.ts │ │ │ │ └── platform.locations.interface.ts │ │ │ ├── sentry │ │ │ │ ├── index.ts │ │ │ │ └── sentry.config.interface.ts │ │ │ └── storage │ │ │ │ ├── file.storage.config.interface.ts │ │ │ │ ├── index.ts │ │ │ │ └── storage.config.interface.ts │ │ ├── feature-flag │ │ │ └── platform.feature.flag.interface.ts │ │ └── index.ts │ ├── domain-settings │ │ ├── domain.platform.settings.module.ts │ │ ├── domain.platform.settings.resolver.mutations.ts │ │ ├── domain.platform.settings.service.ts │ │ └── dto │ │ │ └── organization.dto.update.platform.settings.ts │ ├── forum-discussion-lookup │ │ ├── forum.discussion.lookup.module.ts │ │ └── forum.discussion.lookup.service.ts │ ├── forum-discussion │ │ ├── discussion.entity.ts │ │ ├── discussion.interface.ts │ │ ├── discussion.module.ts │ │ ├── discussion.resolver.fields.ts │ │ ├── discussion.resolver.mutations.spec.ts │ │ ├── discussion.resolver.mutations.ts │ │ ├── discussion.service.authorization.ts │ │ ├── discussion.service.ts │ │ └── dto │ │ │ ├── discussion.dto.delete.ts │ │ │ └── discussion.dto.update.ts │ ├── forum │ │ ├── dto │ │ │ ├── forum.dto.create.discussion.ts │ │ │ ├── forum.dto.discussions.input.ts │ │ │ ├── forum.dto.event.discussion.updated.ts │ │ │ ├── forum.dto.event.message.received.ts │ │ │ └── forum.dto.send.message.community.leads.ts │ │ ├── forum.entity.ts │ │ ├── forum.interface.ts │ │ ├── forum.module.ts │ │ ├── forum.resolver.fields.ts │ │ ├── forum.resolver.mutations.ts │ │ ├── forum.resolver.subscriptions.ts │ │ ├── forum.service.authorization.ts │ │ ├── forum.service.spec.ts │ │ ├── forum.service.ts │ │ └── index.ts │ ├── licensing │ │ ├── credential-based │ │ │ ├── license-credential-issuer │ │ │ │ ├── license.issuer.module.ts │ │ │ │ └── license.issuer.service.ts │ │ │ ├── license-plan │ │ │ │ ├── dto │ │ │ │ │ ├── license.plan.dto.create.ts │ │ │ │ │ ├── license.plan.dto.delete.ts │ │ │ │ │ └── license.plan.dto.update.ts │ │ │ │ ├── index.ts │ │ │ │ ├── license.plan.entity.ts │ │ │ │ ├── license.plan.interface.ts │ │ │ │ ├── license.plan.module.ts │ │ │ │ ├── license.plan.resolver.fields.ts │ │ │ │ ├── license.plan.resolver.mutations.ts │ │ │ │ └── license.plan.service.ts │ │ │ ├── license-policy │ │ │ │ ├── index.ts │ │ │ │ ├── license.policy.entity.ts │ │ │ │ ├── license.policy.interface.ts │ │ │ │ ├── license.policy.module.ts │ │ │ │ ├── license.policy.resolver.fields.ts │ │ │ │ ├── license.policy.service.authorization.ts │ │ │ │ └── license.policy.service.ts │ │ │ ├── licensing-credential-based-entitlements-engine │ │ │ │ ├── index.ts │ │ │ │ ├── licensing.credential.based.module.ts │ │ │ │ ├── licensing.credential.based.policy.credential.rule.interface.ts │ │ │ │ ├── licensing.credential.based.policy.credential.rule.ts │ │ │ │ ├── licensing.credential.based.service.spec.ts │ │ │ │ └── licensing.credential.based.service.ts │ │ │ └── licensing-framework │ │ │ │ ├── dto │ │ │ │ └── licensing.framework.dto.create.license.plan.ts │ │ │ │ ├── licensing.framework.entity.ts │ │ │ │ ├── licensing.framework.interface.ts │ │ │ │ ├── licensing.framework.module.ts │ │ │ │ ├── licensing.framework.resolver.fields.ts │ │ │ │ ├── licensing.framework.resolver.mutations.ts │ │ │ │ ├── licensing.framework.service.authorization.ts │ │ │ │ └── licensing.framework.service.ts │ │ ├── dto │ │ │ └── licensing.dto.granted.entitlement.ts │ │ └── wingback-subscription │ │ │ ├── licensing.wingback.subscription.module.ts │ │ │ ├── licensing.wingback.subscription.resolver.mutations.ts │ │ │ ├── licensing.wingback.subscription.service.spec.ts │ │ │ ├── licensing.wingback.subscription.service.ts │ │ │ ├── types │ │ │ └── create.customer.input.ts │ │ │ └── wingback.constants.ts │ ├── metadata │ │ ├── index.ts │ │ ├── metadata.interface.ts │ │ ├── metadata.module.ts │ │ ├── metadata.service.spec.ts │ │ ├── metadata.service.ts │ │ └── service │ │ │ ├── index.ts │ │ │ ├── service.metadata.entity.ts │ │ │ └── service.metadata.interface.ts │ ├── platform-role │ │ ├── dto │ │ │ ├── platform.role.dto.assign.ts │ │ │ └── platform.role.dto.remove.ts │ │ ├── platform.role.module.ts │ │ └── platform.role.resolver.mutations.ts │ ├── platform-settings │ │ ├── dto │ │ │ ├── platform.settings.dto.update.ts │ │ │ └── platform.settings.integration.dto.update.ts │ │ ├── index.ts │ │ ├── platform.settings.integrations.interface.ts │ │ ├── platform.settings.interface.ts │ │ ├── platform.settings.module.ts │ │ └── platform.settings.service.ts │ ├── platform-templates │ │ ├── platform.templates.module.ts │ │ └── platform.templates.service.ts │ ├── platform.hub │ │ ├── dto │ │ │ ├── platform.dto.assign.role.user.ts │ │ │ ├── platform.dto.remove.role.user.ts │ │ │ └── platform.invitation.dto.global.role.ts │ │ ├── platform.hub.module.ts │ │ └── platform.hub.resolver.fields.ts │ └── platform │ │ ├── dto │ │ └── release.discussion.dto.ts │ │ ├── platform.entity.ts │ │ ├── platform.interface.ts │ │ ├── platform.module.ts │ │ ├── platform.resolver.fields.ts │ │ ├── platform.resolver.mutations.ts │ │ ├── platform.resolver.queries.spec.ts │ │ ├── platform.resolver.queries.ts │ │ ├── platform.service.authorization.ts │ │ ├── platform.service.license.ts │ │ └── platform.service.ts ├── services │ ├── adapters │ │ ├── activity-adapter │ │ │ ├── activity.adapter.module.ts │ │ │ ├── activity.adapter.ts │ │ │ └── dto │ │ │ │ ├── activity.dto.input.base.ts │ │ │ │ ├── activity.dto.input.calendar.event.created.ts │ │ │ │ ├── activity.dto.input.callout.discussion.comment.ts │ │ │ │ ├── activity.dto.input.callout.link.created.ts │ │ │ │ ├── activity.dto.input.callout.post.comment.ts │ │ │ │ ├── activity.dto.input.callout.post.created.ts │ │ │ │ ├── activity.dto.input.callout.published.ts │ │ │ │ ├── activity.dto.input.callout.whiteboard.content.modified.ts │ │ │ │ ├── activity.dto.input.callout.whiteboard.created.ts │ │ │ │ ├── activity.dto.input.member.joined.ts │ │ │ │ ├── activity.dto.input.message.removed.ts │ │ │ │ ├── activity.dto.input.subspace.created.ts │ │ │ │ └── activity.dto.input.update.sent.ts │ │ ├── ai-server-adapter │ │ │ ├── ai.server.adapter.module.ts │ │ │ ├── ai.server.adapter.ts │ │ │ ├── dto │ │ │ │ ├── ai.server.adapter.dto.invocation.ts │ │ │ │ └── ai.server.adapter.dto.update.ai.persona.service.ts │ │ │ └── index.ts │ │ ├── communication-adapter │ │ │ ├── communication-adapter.module.ts │ │ │ ├── communication.adapter.ts │ │ │ ├── dto │ │ │ │ ├── communication.dto.add.reaction.ts │ │ │ │ ├── communication.dto.message.delete.ts │ │ │ │ ├── communication.dto.message.send.ts │ │ │ │ ├── communication.dto.message.send.user.ts │ │ │ │ ├── communication.dto.remove.reaction.ts │ │ │ │ ├── communication.dto.room.result.ts │ │ │ │ └── communications.dto.message.reply.ts │ │ │ └── index.ts │ │ ├── notification-adapter │ │ │ ├── dto │ │ │ │ ├── notification.dto.input.base.ts │ │ │ │ ├── notification.dto.input.callout.published.ts │ │ │ │ ├── notification.dto.input.comment.reply.ts │ │ │ │ ├── notification.dto.input.community.application.ts │ │ │ │ ├── notification.dto.input.community.invitation.ts │ │ │ │ ├── notification.dto.input.community.invitation.vc.ts │ │ │ │ ├── notification.dto.input.community.leads.message.ts │ │ │ │ ├── notification.dto.input.community.new.member.ts │ │ │ │ ├── notification.dto.input.contribution.created.ts │ │ │ │ ├── notification.dto.input.discussion.comment.ts │ │ │ │ ├── notification.dto.input.discussion.created.ts │ │ │ │ ├── notification.dto.input.entity.mention.ts │ │ │ │ ├── notification.dto.input.entity.mentions.ts │ │ │ │ ├── notification.dto.input.forum.discussion.comment.ts │ │ │ │ ├── notification.dto.input.platform.global.role.change.ts │ │ │ │ ├── notification.dto.input.platform.invitation.ts │ │ │ │ ├── notification.dto.input.post.comment.ts │ │ │ │ ├── notification.dto.input.post.created.ts │ │ │ │ ├── notification.dto.input.space.created.ts │ │ │ │ ├── notification.dto.input.update.sent.ts │ │ │ │ ├── notification.dto.input.user.message.ts │ │ │ │ ├── notification.dto.input.user.registered.ts │ │ │ │ ├── notification.dto.input.user.removed.ts │ │ │ │ ├── notification.dto.input.whiteboard.created.ts │ │ │ │ └── notification.input.organization.message.ts │ │ │ ├── index.ts │ │ │ ├── notification.adapter.module.ts │ │ │ ├── notification.adapter.ts │ │ │ └── notification.payload.builder.ts │ │ ├── ssi-sovrhd │ │ │ ├── dto │ │ │ │ ├── ssi.sovrhd.dto.register.callback.credential.content.ts │ │ │ │ ├── ssi.sovrhd.dto.register.callback.credential.ts │ │ │ │ ├── ssi.sovrhd.dto.register.callback.session.ts │ │ │ │ ├── ssi.sovrhd.dto.register.callback.ts │ │ │ │ ├── ssi.sovrhd.dto.register.response.ts │ │ │ │ ├── ssi.sovrhd.dto.register.ts │ │ │ │ ├── ssi.sovrhd.dto.request.data.ts │ │ │ │ ├── ssi.sovrhd.dto.request.response.session.ts │ │ │ │ ├── ssi.sovrhd.dto.request.response.ts │ │ │ │ └── ssi.sovrhd.dto.request.ts │ │ │ ├── index.ts │ │ │ ├── samples │ │ │ │ ├── sovrhd.callback.credential.json │ │ │ │ └── sovrhd.callback.establish.session.json │ │ │ ├── ssi.sovrhd.adapter.module.ts │ │ │ └── ssi.sovrhd.adapter.ts │ │ ├── storage │ │ │ ├── index.ts │ │ │ ├── local-storage │ │ │ │ └── local.storage.adapter.ts │ │ │ ├── storage.service.interface.ts │ │ │ ├── storage.service.module.ts │ │ │ ├── storage.service.provider.ts │ │ │ └── storage.service.type.ts │ │ └── wallet-manager-adapter │ │ │ ├── dto │ │ │ ├── wallet.manager.dto.create.identity.response.ts │ │ │ ├── wallet.manager.dto.create.identity.ts │ │ │ ├── wallet.manager.dto.credential.metadata.ts │ │ │ ├── wallet.manager.dto.credential.offer.metadata.ts │ │ │ ├── wallet.manager.dto.get.agent.info.response.ts │ │ │ ├── wallet.manager.dto.get.agent.info.ts │ │ │ ├── wallet.manager.dto.offer.vc.begin.response.ts │ │ │ ├── wallet.manager.dto.offer.vc.begin.ts │ │ │ ├── wallet.manager.dto.offer.vc.complete.response.ts │ │ │ ├── wallet.manager.dto.offer.vc.complete.ts │ │ │ ├── wallet.manager.dto.request.vc.begin.response.ts │ │ │ ├── wallet.manager.dto.request.vc.begin.ts │ │ │ ├── wallet.manager.dto.request.vc.complete.response.ts │ │ │ ├── wallet.manager.dto.request.vc.complete.sovrhd.ts │ │ │ ├── wallet.manager.dto.request.vc.complete.ts │ │ │ └── wallet.manager.dto.verified.credential.ts │ │ │ ├── index.ts │ │ │ ├── wallet.manager.adapter.module.ts │ │ │ └── wallet.manager.adapter.ts │ ├── ai-server │ │ ├── ai-persona-engine-adapter │ │ │ ├── ai.persona.engine.adapter.module.ts │ │ │ ├── ai.persona.engine.adapter.ts │ │ │ └── dto │ │ │ │ ├── ai.persona.engine.adapter.dto.base.response.ts │ │ │ │ ├── ai.persona.engine.adapter.dto.base.ts │ │ │ │ ├── ai.persona.engine.adapter.dto.invocation.input.ts │ │ │ │ └── ai.persona.engine.adapter.dto.question.response.ts │ │ ├── ai-persona-service │ │ │ ├── ai.persona.service.entity.ts │ │ │ ├── ai.persona.service.external.config.resolver.fields.ts │ │ │ ├── ai.persona.service.interface.ts │ │ │ ├── ai.persona.service.module.ts │ │ │ ├── ai.persona.service.resolver.fields.ts │ │ │ ├── ai.persona.service.resolver.mutations.ts │ │ │ ├── ai.persona.service.service.authorization.ts │ │ │ ├── ai.persona.service.service.ts │ │ │ ├── dto │ │ │ │ ├── ai.persona.service.dto.create.ts │ │ │ │ ├── ai.persona.service.dto.delete.ts │ │ │ │ ├── ai.persona.service.dto.ingest.ts │ │ │ │ ├── ai.persona.service.dto.update.ts │ │ │ │ ├── ai.persona.service.invocation.dto.input.ts │ │ │ │ ├── external.config.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interaction.message.ts │ │ │ │ └── utils.ts │ │ │ └── index.ts │ │ └── ai-server │ │ │ ├── ai.server.entity.ts │ │ │ ├── ai.server.interface.ts │ │ │ ├── ai.server.module.ts │ │ │ ├── ai.server.resolver.fields.ts │ │ │ ├── ai.server.resolver.mutations.ts │ │ │ ├── ai.server.resolver.queries.ts │ │ │ ├── ai.server.service.authorization.ts │ │ │ ├── ai.server.service.ts │ │ │ └── dto │ │ │ ├── ai.server.dto.assign.role.user.ts │ │ │ ├── ai.server.dto.ingest.ai.persona.service.ts │ │ │ └── ai.server.dto.remove.role.user.ts │ ├── api-rest │ │ ├── ssi-credential-flow │ │ │ ├── ssi.credential.flow.controller.ts │ │ │ ├── ssi.credential.flow.module.ts │ │ │ └── ssi.credential.flow.service.ts │ │ └── storage-access │ │ │ ├── storage.access.controller.ts │ │ │ └── storage.access.module.ts │ ├── api │ │ ├── activity-log │ │ │ ├── activity.log.builder.interface.ts │ │ │ ├── activity.log.builder.service.ts │ │ │ ├── activity.log.module.ts │ │ │ ├── activity.log.resolver.queries.ts │ │ │ ├── activity.log.resolver.subscriptions.ts │ │ │ ├── activity.log.service.ts │ │ │ ├── dto │ │ │ │ ├── activity.log.dto.collaboration.input.ts │ │ │ │ ├── activity.log.dto.entry.base.interface.ts │ │ │ │ ├── activity.log.dto.entry.calendar.event.created.ts │ │ │ │ ├── activity.log.dto.entry.callout.discussion.comment.ts │ │ │ │ ├── activity.log.dto.entry.callout.link.created.ts │ │ │ │ ├── activity.log.dto.entry.callout.post.comment.ts │ │ │ │ ├── activity.log.dto.entry.callout.post.created.ts │ │ │ │ ├── activity.log.dto.entry.callout.published.ts │ │ │ │ ├── activity.log.dto.entry.callout.whiteboard.content.modified.ts │ │ │ │ ├── activity.log.dto.entry.callout.whiteboard.created.ts │ │ │ │ ├── activity.log.dto.entry.member.joined.interface.ts │ │ │ │ ├── activity.log.dto.entry.subspace.created.ts │ │ │ │ ├── activity.log.dto.entry.update.sent.ts │ │ │ │ ├── activity.log.entry.interface.ts │ │ │ │ └── subscriptions │ │ │ │ │ ├── activity.created.dto.ts │ │ │ │ │ ├── activity.log.activity.created.subscription.input.ts │ │ │ │ │ └── activity.log.dto.activity.created.subscription.payload.ts │ │ │ └── index.ts │ │ ├── chat-guidance │ │ │ ├── chat.guidance.module.ts │ │ │ ├── chat.guidance.resolver.mutations.ts │ │ │ ├── chat.guidance.service.ts │ │ │ └── dto │ │ │ │ ├── chat.guidance.dto.input.ts │ │ │ │ └── chat.guidance.relevance.dto.ts │ │ ├── conversion │ │ │ ├── conversion.module.ts │ │ │ ├── conversion.resolver.mutations.ts │ │ │ ├── conversion.service.ts │ │ │ └── dto │ │ │ │ ├── conversion.dto.vc.space.to.vc.kb.ts │ │ │ │ ├── convert.dto.space.l1.to.space.l0.input.ts │ │ │ │ ├── convert.dto.space.l1.to.space.l2.input.ts │ │ │ │ └── convert.dto.space.l2.to.space.l1.input.ts │ │ ├── input-creator │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ └── input.creator.query.results.ts │ │ │ ├── input.creator.module.ts │ │ │ ├── input.creator.resolver.fields.ts │ │ │ ├── input.creator.resolver.queries.ts │ │ │ └── input.creator.service.ts │ │ ├── lookup-by-name │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ └── lookup.by.name.query.results.ts │ │ │ ├── index.ts │ │ │ ├── lookup.by.name.module.ts │ │ │ ├── lookup.by.name.resolver.fields.ts │ │ │ ├── lookup.by.name.resolver.queries.ts │ │ │ └── lookup.by.name.service.ts │ │ ├── lookup │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── lookup.query.my.privileges.results.ts │ │ │ │ └── lookup.query.results.ts │ │ │ ├── index.ts │ │ │ ├── lookup.module.ts │ │ │ ├── lookup.resolver.fields.ts │ │ │ ├── lookup.resolver.my.privileges.fields.ts │ │ │ ├── lookup.resolver.queries.ts │ │ │ └── lookup.service.ts │ │ ├── me │ │ │ ├── dto │ │ │ │ ├── index.ts │ │ │ │ ├── me.application.result.ts │ │ │ │ ├── me.invitation.result.ts │ │ │ │ ├── me.membership.result.ts │ │ │ │ ├── me.pending.membership.result.ts │ │ │ │ ├── me.query.results.ts │ │ │ │ ├── me.space.pending.membership.info.ts │ │ │ │ └── my.journeys.results.ts │ │ │ ├── index.ts │ │ │ ├── me.module.ts │ │ │ ├── me.resolver.fields.ts │ │ │ ├── me.resolver.queries.ts │ │ │ ├── me.service.ts │ │ │ └── space.membership.type.ts │ │ ├── registration │ │ │ ├── registration.module.ts │ │ │ ├── registration.resolver.mutations.ts │ │ │ └── registration.service.ts │ │ ├── roles │ │ │ ├── dto │ │ │ │ ├── roles.dto.input.organization.ts │ │ │ │ ├── roles.dto.input.user.ts │ │ │ │ ├── roles.dto.input.virtual.contributor.ts │ │ │ │ ├── roles.dto.result.community.application.ts │ │ │ │ ├── roles.dto.result.community.invitation.ts │ │ │ │ ├── roles.dto.result.community.ts │ │ │ │ ├── roles.dto.result.contributor.ts │ │ │ │ ├── roles.dto.result.organization.ts │ │ │ │ ├── roles.dto.result.space.ts │ │ │ │ └── roles.dto.result.ts │ │ │ ├── index.ts │ │ │ ├── roles.module.ts │ │ │ ├── roles.resolver.fields.ts │ │ │ ├── roles.resolver.queries.spec.ts │ │ │ ├── roles.resolver.queries.ts │ │ │ ├── roles.service.spec.ts │ │ │ ├── roles.service.ts │ │ │ └── util │ │ │ │ ├── get.organization.roles.for.user.entity.data.ts │ │ │ │ ├── get.organization.roles.for.user.query.result.ts │ │ │ │ ├── get.space.roles.for.contributor.entity.data.ts │ │ │ │ ├── get.space.roles.for.contributor.query.result.ts │ │ │ │ ├── group.credentials.by.entity.ts │ │ │ │ ├── map.organization.credentials.to.roles.ts │ │ │ │ └── map.space.credentials.to.roles.ts │ │ ├── search │ │ │ ├── dto │ │ │ │ ├── inputs │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── search.dto.input.ts │ │ │ │ │ └── search.filter.input.ts │ │ │ │ └── results │ │ │ │ │ ├── base.search.hit.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── search.category.result.ts │ │ │ │ │ ├── search.result.base.ts │ │ │ │ │ ├── search.result.callout.ts │ │ │ │ │ ├── search.result.dto.ts │ │ │ │ │ ├── search.result.interface.ts │ │ │ │ │ ├── search.result.organization.ts │ │ │ │ │ ├── search.result.post.ts │ │ │ │ │ ├── search.result.space.ts │ │ │ │ │ └── search.result.user.ts │ │ │ ├── extract │ │ │ │ ├── build.multi.search.request.items.ts │ │ │ │ ├── build.search.query.ts │ │ │ │ ├── search.extract.service.ts │ │ │ │ └── search.index.ts │ │ │ ├── ingest │ │ │ │ ├── get.index.pattern.ts │ │ │ │ ├── index.ts │ │ │ │ ├── search.ingest.module.ts │ │ │ │ ├── search.ingest.service.spec.ts │ │ │ │ └── search.ingest.service.ts │ │ │ ├── result │ │ │ │ └── search.result.service.ts │ │ │ ├── search.category.ts │ │ │ ├── search.module.ts │ │ │ ├── search.resolver.queries.ts │ │ │ ├── search.result.type.ts │ │ │ ├── search.service.spec.ts │ │ │ ├── search.service.ts │ │ │ └── util │ │ │ │ ├── calculate.search.cursor.ts │ │ │ │ ├── index.ts │ │ │ │ ├── try.parse.search.cursor.ts │ │ │ │ └── validate.search.parameters.ts │ │ └── url-resolver │ │ │ ├── dto │ │ │ ├── url.resolver.query.calendar.result.ts │ │ │ ├── url.resolver.query.callouts.set.result.ts │ │ │ ├── url.resolver.query.collaboration.result.ts │ │ │ ├── url.resolver.query.innovation.pack.result.ts │ │ │ ├── url.resolver.query.results.ts │ │ │ ├── url.resolver.query.space.result.ts │ │ │ ├── url.resolver.query.templates.set.result.ts │ │ │ └── url.resolver.query.virtual.contributor.result.ts │ │ │ ├── url.resolver.exception.ts │ │ │ ├── url.resolver.module.ts │ │ │ ├── url.resolver.resolver.queries.ts │ │ │ └── url.resolver.service.ts │ ├── auth-reset │ │ ├── auth-reset.payload.interface.ts │ │ ├── publisher │ │ │ ├── auth-reset.module.ts │ │ │ ├── auth-reset.service.spec.ts │ │ │ └── auth-reset.service.ts │ │ ├── reset.event.type.ts │ │ └── subscriber │ │ │ ├── auth-reset.controller.spec.ts │ │ │ ├── auth-reset.controller.ts │ │ │ └── auth-reset.subscriber.module.ts │ ├── external │ │ ├── avatar-creator │ │ │ ├── avatar.creator.module.ts │ │ │ └── avatar.creator.service.ts │ │ ├── elasticsearch │ │ │ ├── contribution-reporter │ │ │ │ ├── contribution.reporter.module.ts │ │ │ │ ├── contribution.reporter.service.spec.ts │ │ │ │ ├── contribution.reporter.service.ts │ │ │ │ └── index.ts │ │ │ ├── elasticsearch-client │ │ │ │ ├── elasticsearch.client.factory.ts │ │ │ │ ├── elasticsearch.client.provider.ts │ │ │ │ └── index.ts │ │ │ ├── events │ │ │ │ ├── base.contribution.ts │ │ │ │ ├── callout │ │ │ │ │ ├── callout.comment.created.ts │ │ │ │ │ ├── callout.created.ts │ │ │ │ │ ├── callout.post.comment.created.ts │ │ │ │ │ ├── callout.post.created.ts │ │ │ │ │ ├── callout.whiteboard.created.ts │ │ │ │ │ └── callout.whiteboard.edited.ts │ │ │ │ ├── index.ts │ │ │ │ ├── journey │ │ │ │ │ ├── challenge.content.edited.ts │ │ │ │ │ ├── challenge.created.ts │ │ │ │ │ ├── challenge.joined.ts │ │ │ │ │ ├── opportunity.content.edited.ts │ │ │ │ │ ├── opportunity.created.ts │ │ │ │ │ ├── opportunity.joined.ts │ │ │ │ │ ├── space.content.edited.ts │ │ │ │ │ └── space.joined.ts │ │ │ │ └── update.created.ts │ │ │ ├── guidance-reporter │ │ │ │ ├── guidance.reporter.module.ts │ │ │ │ ├── guidance.reporter.service.spec.ts │ │ │ │ ├── guidance.reporter.service.ts │ │ │ │ ├── guidance.usage.document.ts │ │ │ │ ├── guidance.usage.ts │ │ │ │ └── index.ts │ │ │ ├── name-reporter │ │ │ │ ├── name.reporter.module.ts │ │ │ │ ├── name.reporter.service.spec.ts │ │ │ │ ├── name.reporter.service.ts │ │ │ │ └── types │ │ │ │ │ ├── index.ts │ │ │ │ │ └── naming.document.ts │ │ │ ├── types │ │ │ │ ├── author-details.ts │ │ │ │ ├── contribution-details.ts │ │ │ │ ├── contribution.document.ts │ │ │ │ ├── contribution.type.ts │ │ │ │ ├── elastic.response.error.ts │ │ │ │ └── index.ts │ │ │ └── utils │ │ │ │ ├── handle.elastic.error.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is.elastic.error.ts │ │ │ │ └── is.elastic.response.error.ts │ │ ├── geo-location │ │ │ ├── geo.information.ts │ │ │ ├── geo.location.cache.metadata.ts │ │ │ ├── geo.location.module.ts │ │ │ ├── geo.location.service.spec.ts │ │ │ ├── geo.location.service.ts │ │ │ ├── geo.plugin.response.ts │ │ │ ├── index.ts │ │ │ └── utils │ │ │ │ └── is.limit.exceeded.ts │ │ ├── trust-registry │ │ │ ├── trust.registry.adapter │ │ │ │ ├── trust.registry.adapter.module.ts │ │ │ │ └── trust.registry.adapter.ts │ │ │ ├── trust.registry.claim │ │ │ │ ├── claim.alkemio.user.ts │ │ │ │ ├── claim.community.member.ts │ │ │ │ ├── claim.enum.ts │ │ │ │ ├── claim.interface.ts │ │ │ │ ├── trust.registry.claim.module.ts │ │ │ │ └── trust.registry.claim.service.ts │ │ │ └── trust.registry.configuration │ │ │ │ ├── trust.registry.configuation.module.ts │ │ │ │ ├── trust.registry.configuration.adapter.ts │ │ │ │ └── trust.registry.dto.credential.metadata.ts │ │ ├── wingback-webhooks │ │ │ ├── get.contract.validation.pipe.spec.ts │ │ │ ├── get.contract.validation.pipe.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ ├── wingback.webhook.controller.spec.ts │ │ │ ├── wingback.webhook.controller.ts │ │ │ ├── wingback.webhook.interceptor.spec.ts │ │ │ ├── wingback.webhook.interceptor.ts │ │ │ ├── wingback.webhook.module.ts │ │ │ ├── wingback.webhook.service.spec.ts │ │ │ ├── wingback.webhook.service.ts │ │ │ └── wingback.webhook.unauthorized.exception.ts │ │ └── wingback │ │ │ ├── exceptions │ │ │ ├── wingback.customer.not.created.ts │ │ │ ├── wingback.customer.not.found.ts │ │ │ ├── wingback.customer.not.removed.ts │ │ │ └── wingback.exception.ts │ │ │ ├── index.ts │ │ │ ├── types │ │ │ ├── entitlement-details │ │ │ │ └── wingback.feature.detail.per.unit.ts │ │ │ ├── wingback.type.contract.ts │ │ │ ├── wingback.type.create.customer.ts │ │ │ ├── wingback.type.entitlement.ts │ │ │ ├── wingback.type.error.ts │ │ │ ├── wingback.type.feature.ts │ │ │ └── wingback.type.update.customer.ts │ │ │ ├── wingback.manager.module.ts │ │ │ └── wingback.manager.ts │ ├── file-integration │ │ ├── file.integration.controller.ts │ │ ├── file.integration.module.ts │ │ ├── file.integration.service.ts │ │ ├── index.ts │ │ ├── inputs │ │ │ ├── base.input.data.ts │ │ │ ├── file.info.input.data.ts │ │ │ └── index.ts │ │ ├── outputs │ │ │ ├── base.output.data.ts │ │ │ ├── file.info.output.data.ts │ │ │ ├── health.check.output.data.ts │ │ │ └── index.ts │ │ └── types │ │ │ └── message.pattern.ts │ ├── infrastructure │ │ ├── contributor-lookup │ │ │ ├── contributor.lookup.module.ts │ │ │ └── contributor.lookup.service.ts │ │ ├── entity-resolver │ │ │ ├── community.resolver.service.ts │ │ │ ├── contribution.resolver.service.ts │ │ │ ├── entity.resolver.module.ts │ │ │ ├── identity.resolver.service.ts │ │ │ └── timeline.resolver.service.ts │ │ ├── event-bus │ │ │ ├── event.bus.module.ts │ │ │ ├── handlers │ │ │ │ ├── index.ts │ │ │ │ ├── ingest.body.of.knowledge.result.handler.ts │ │ │ │ ├── ingest.website.result.handler.ts │ │ │ │ └── invoke.engine.result.handler.ts │ │ │ ├── messages │ │ │ │ ├── index.ts │ │ │ │ ├── ingest.body.of.knowledge.command.ts │ │ │ │ ├── ingest.body.of.knowledge.result.event.ts │ │ │ │ ├── ingest.website.result.event.ts │ │ │ │ ├── ingest.website.ts │ │ │ │ ├── invoke.engine.result.ts │ │ │ │ ├── invoke.engine.ts │ │ │ │ └── types │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ingest.error.ts │ │ │ │ │ ├── ingestion.purpose.ts │ │ │ │ │ └── ingestion.result.ts │ │ │ ├── publisher.ts │ │ │ └── subscriber.ts │ │ ├── kratos │ │ │ ├── kratos.module.ts │ │ │ ├── kratos.service.ts │ │ │ └── types │ │ │ │ ├── kratos.payload.ts │ │ │ │ ├── ory.default.identity.schema.ts │ │ │ │ ├── ory.traits.ts │ │ │ │ └── session.invalid.enum.ts │ │ ├── license-entitlement-usage │ │ │ ├── license.entitlement.usage.module.ts │ │ │ └── license.entitlement.usage.service.ts │ │ ├── naming │ │ │ ├── generate.name.id.spec.ts │ │ │ ├── generate.name.id.test.data.ts │ │ │ ├── generate.name.id.ts │ │ │ ├── naming.module.ts │ │ │ ├── naming.service.spec.ts │ │ │ └── naming.service.ts │ │ ├── space-filter │ │ │ ├── dto │ │ │ │ └── space.filter.dto.input.ts │ │ │ ├── space.filter.module.ts │ │ │ └── space.filter.service.ts │ │ ├── storage-aggregator-resolver │ │ │ ├── storage.aggregator.resolver.module.ts │ │ │ └── storage.aggregator.resolver.service.ts │ │ ├── temporary-storage │ │ │ ├── temporary.storage.module.ts │ │ │ └── temporary.storage.service.ts │ │ └── url-generator │ │ │ ├── index.ts │ │ │ ├── url.generator.module.ts │ │ │ ├── url.generator.service.cache.ts │ │ │ └── url.generator.service.ts │ ├── room-integration │ │ ├── room.controller.service.ts │ │ └── room.integration.module.ts │ ├── subscriptions │ │ └── subscription-service │ │ │ ├── dto │ │ │ ├── activity.created.subscription.payload.ts │ │ │ ├── in.app.notification.received.subscription.payload.ts │ │ │ ├── index.ts │ │ │ ├── room.event.subscription.payload.ts │ │ │ └── virtual.contributor.updated.subscription.payload.ts │ │ │ ├── index.ts │ │ │ ├── subscription.publish.service.ts │ │ │ ├── subscription.read.service.ts │ │ │ ├── subscription.service.module.ts │ │ │ └── typed.pub.sub.engine.ts │ ├── task │ │ ├── index.ts │ │ ├── task.error.interface.ts │ │ ├── task.interface.ts │ │ ├── task.list.key.ts │ │ ├── task.module.ts │ │ ├── task.result.interface.ts │ │ ├── task.service.spec.ts │ │ ├── task.service.ts │ │ └── types.ts │ ├── util │ │ ├── ack.ts │ │ └── index.ts │ └── whiteboard-integration │ │ ├── inputs │ │ ├── access.granted.input.data.ts │ │ ├── base.input.data.ts │ │ ├── content.modified.input.data.ts │ │ ├── contribution.input.data.ts │ │ ├── fetch.input.data.ts │ │ ├── index.ts │ │ ├── info.input.data.ts │ │ ├── save.input.data.ts │ │ └── who.input.data.ts │ │ ├── outputs │ │ ├── base.output.data.ts │ │ ├── fetch.output.data.ts │ │ ├── health.check.output.data.ts │ │ ├── index.ts │ │ ├── info.output.data.ts │ │ └── save.output.data.ts │ │ ├── types │ │ ├── event.pattern.ts │ │ ├── index.ts │ │ ├── message.pattern.ts │ │ └── user.info.ts │ │ ├── whiteboard.integration.controller.ts │ │ ├── whiteboard.integration.module.ts │ │ └── whiteboard.integration.service.ts └── types │ ├── alkemio.config.ts │ ├── context.type.ts │ ├── deep.select.properties.ts │ ├── entity.relations.ts │ ├── graphql │ ├── graphql.context.ts │ ├── index.ts │ └── subscriptions │ │ └── subscriptionRelatedTypes.ts │ ├── index.ts │ ├── prefixed.type.ts │ └── typed.logger.service.interface.ts ├── test ├── config │ ├── jest.config.ci.js │ └── jest.config.js ├── data │ ├── agent.mock.ts │ ├── agentInfo.mock.ts │ ├── applications.mock.ts │ ├── organization.mock.ts │ ├── roles-user.mock.ts │ ├── space.mock.ts │ ├── user.json │ ├── user.mock.ts │ └── virtual-contributor.mock.ts ├── mocks │ ├── account.service.mock.ts │ ├── agent.service.mock.ts │ ├── app.service.mock.ts │ ├── application.service.mock.ts │ ├── auth.reset.service.mock.ts │ ├── authorization.policy.service.mock.ts │ ├── authorization.service.mock.ts │ ├── cache-manager.mock.ts │ ├── communication.adapter.mock.ts │ ├── community.resolver.service.mock.ts │ ├── community.service.mock.ts │ ├── config.service.mock.ts │ ├── contributor.lookup.service.mock.ts │ ├── elasticsearch.client.provider.mock.ts │ ├── entity.manager.provider.mock.ts │ ├── geo.location.service.mock.ts │ ├── http.service.mock.ts │ ├── index.ts │ ├── invitation.service.mock.ts │ ├── matrix.adapter.service.mock.ts │ ├── notification.adapter.service.mock.ts │ ├── notification.payload.builder.mock.ts │ ├── notifications.service.mock.ts │ ├── organization.lookup.service.mock.ts │ ├── organization.service.mock.ts │ ├── platform.authorization.service.mock.ts │ ├── preference.service.mock.ts │ ├── preference.set.service.mock.ts │ ├── search │ │ ├── search.extract.service.mock.ts │ │ ├── search.ingest.service.mock.ts │ │ └── search.result.service.mock.ts │ ├── space.filter.service.mock.ts │ ├── space.service.mock.ts │ ├── task.service.mock.ts │ ├── user.authorization.service.mock.ts │ ├── user.group.service.mock.ts │ ├── user.lookup.service.mock.ts │ ├── user.service.mock.ts │ ├── virtual.contributor.lookup.service.mock.ts │ ├── virtual.contributor.service.mock.ts │ └── winston.provider.mock.ts └── utils │ ├── async-to-throw.ts │ ├── default.mocker.factory.ts │ ├── index.ts │ ├── mock.type.ts │ ├── mock.value.provider.ts │ ├── pub.sub.engine.mock.factory.ts │ ├── public-part.ts │ ├── repository.mock.factory.ts │ ├── repository.provider.mock.factory.ts │ └── test-data.ts ├── tsconfig.build.json ├── tsconfig.json └── uploads └── hello-alkemio.txt /.build/ory/kratos/courier-templates/recovery/invalid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Account access attempted 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/recovery/valid/email.body.plaintext.gotmpl: -------------------------------------------------------------------------------- 1 | Hi, 2 | 3 | please recover access to your account by clicking the following link: 4 | 5 | {{ .RecoveryURL }} 6 | 7 | Team Alkemio 8 | website: https://alkem.io 9 | "Enabling society to collaborate. Building a better future, together." 10 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/recovery/valid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Recover access to your account 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/recovery_code/invalid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Account access attempted 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/recovery_code/valid/email.body.plaintext.gotmpl: -------------------------------------------------------------------------------- 1 | Hi, 2 | 3 | please recover access to your account by entering the following code: {{ .RecoveryCode }} 4 | 5 | Team Alkemio 6 | website: https://alkem.io 7 | "Enabling society to collaborate. Building a better future, together." 8 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/recovery_code/valid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Recover access to your account 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/verification/invalid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Someone tried to verify this email address 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/verification/valid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Please verify your email address! 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/verification_code/invalid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Someone tried to verify this email address 2 | -------------------------------------------------------------------------------- /.build/ory/kratos/courier-templates/verification_code/valid/email.subject.gotmpl: -------------------------------------------------------------------------------- 1 | [Alkemio] Please verify your email address! 2 | -------------------------------------------------------------------------------- /.build/synapse/alkemio.matrix.host.signing.key: -------------------------------------------------------------------------------- 1 | ed25519 a_uvmV Ns3vabIpDbRd54mzAdjsFqCnijrXjie+GthjnFy5ZII 2 | -------------------------------------------------------------------------------- /.build/synapse/media_store/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/.build/synapse/media_store/README.md -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Tab indentation 7 | [*] 8 | indent_style = space 9 | indent_size = 2 10 | trim_trailing_whitespace = true 11 | 12 | [package.json] 13 | indent_style = space 14 | indent_size = 2 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "src/**/*.ts{,x}": [ 3 | "cross-env NODE_ENV=production eslint --fix", 4 | "prettier --write" 5 | ], 6 | "*.{json,md}": "prettier --write" 7 | } 8 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "es5", 4 | "tabWidth": 2, 5 | "useTabs": false, 6 | "semi": true, 7 | "bracketSpacing": true, 8 | "arrowParens": "avoid" 9 | } -------------------------------------------------------------------------------- /.scripts/backups/.env.sample: -------------------------------------------------------------------------------- 1 | export AWS_ACCESS_KEY_ID= 2 | export AWS_SECRET_ACCESS_KEY= 3 | export AWS_DEFAULT_REGION=eu-west-2 4 | export MYSQL_ROOT_PASSWORD=toor 5 | export MYSQL_DATABASE=alkemio 6 | export POSTGRES_USER=synapse 7 | export POSTGRES_PASSWORD=synapse 8 | export POSTGRES_DB=synapse -------------------------------------------------------------------------------- /.scripts/create_db.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | mysql --user=root --host=${DATABASE_HOST} --password=${MYSQL_ROOT_PASSWORD} -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};" 4 | -------------------------------------------------------------------------------- /.scripts/migrations/.env.sample: -------------------------------------------------------------------------------- 1 | export MYSQL_ROOT_PASSWORD=toor 2 | export MYSQL_DATABASE=alkemio 3 | export POSTGRES_USER=synapse 4 | export POSTGRES_PASSWORD=synapse 5 | export POSTGRES_DB=synapse -------------------------------------------------------------------------------- /.scripts/rename.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | find . -name "*ecoverse*.*" | sed -e "p;s/ecoverse/hub/" | xargs -n2 mv 4 | -------------------------------------------------------------------------------- /.scripts/schema.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS alkemio; 2 | CREATE DATABASE IF NOT EXISTS jolocom; 3 | CREATE DATABASE IF NOT EXISTS kratos; 4 | SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 5 | SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: focal 2 | language: node_js 3 | node_js: 4 | - v20.15.1 5 | env: 6 | matrix: 7 | - NODE_OPTIONS="--max-old-space-size=4196" 8 | cache: 9 | directories: 10 | - node_modules 11 | install: 12 | - npm install 13 | before_install: 14 | - npm i -g npm@10.5.0 15 | script: 16 | - npm run test:ci:no:coverage 17 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "EditorConfig.EditorConfig", 4 | "dbaeumer.vscode-eslint", 5 | "esbenp.prettier-vscode" 6 | ] 7 | } -------------------------------------------------------------------------------- /docs/images/alkemio-server-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/alkemio-server-design.png -------------------------------------------------------------------------------- /docs/images/alkemio-server-layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/alkemio-server-layer-diagram.png -------------------------------------------------------------------------------- /docs/images/alkemio-services-networking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/alkemio-services-networking.png -------------------------------------------------------------------------------- /docs/images/login-session-extend-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/login-session-extend-flow.png -------------------------------------------------------------------------------- /docs/images/pagination-efficiency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/pagination-efficiency.png -------------------------------------------------------------------------------- /docs/images/pagination-time-complexity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/pagination-time-complexity.png -------------------------------------------------------------------------------- /docs/images/templates-domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/templates-domain.png -------------------------------------------------------------------------------- /docs/images/templates-platform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/docs/images/templates-platform.png -------------------------------------------------------------------------------- /graphql-samples/admin/communication/communication-rooms-join-rule: -------------------------------------------------------------------------------- 1 | mutation adminCommunicationUpdateRoomsJoinRule($changeRoomAccessData: CommunicationAdminUpdateRoomsJoinRuleInput!) { 2 | adminCommunicationUpdateRoomsJoinRule(changeRoomAccessData: $changeRoomAccessData) 3 | } 4 | 5 | Variables: 6 | { 7 | "changeRoomAccessData": { 8 | "isPublic": true 9 | } 10 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/authorization/assign-user-as-global-admin: -------------------------------------------------------------------------------- 1 | mutation assignUserAsGlobaAdmin($membershipData: AssignGlobalAdminInput!) { 2 | assignUserAsGlobalAdmin(membershipData: $membershipData) { 3 | id, 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "membershipData": { 10 | "userID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/authorization/reset-authorization-all: -------------------------------------------------------------------------------- 1 | mutation authorizationPolicyResetAll { 2 | authorizationPolicyResetAll 3 | } 4 | 5 | -------------------------------------------------------------------------------- /graphql-samples/mutations/authorization/reset-authorization-on-platform: -------------------------------------------------------------------------------- 1 | mutation authorizationPolicyResetOnPlatform { 2 | authorizationPolicyResetOnPlatform { 3 | id 4 | } 5 | } 6 | 7 | -------------------------------------------------------------------------------- /graphql-samples/mutations/authorization/reset-authorization-on-space: -------------------------------------------------------------------------------- 1 | mutation authorizationPolicyResetOnSpace($authorizationResetData: SpaceAuthorizationResetInput!) { 2 | authorizationPolicyResetOnSpace(authorizationResetData: $authorizationResetData) { 3 | nameID 4 | } 5 | } 6 | 7 | { 8 | "authorizationResetData": { 9 | "spaceID": "eco1" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /graphql-samples/mutations/authorization/reset-authorization-on-user: -------------------------------------------------------------------------------- 1 | mutation authorizationPolicyResetOnUser($authorizationResetData: UserAuthorizationResetInput!) { 2 | authorizationPolicyResetOnUser(authorizationResetData: $authorizationResetData) { 3 | nameID 4 | } 5 | } 6 | 7 | { 8 | "authorizationResetData": { 9 | "userID": "uuid_nameid_email" 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/message-user: -------------------------------------------------------------------------------- 1 | mutation messageUser($messageData: UserSendMessageInput!) { 2 | messageUser(messageData: $messageData) 3 | } 4 | 5 | Variables: 6 | { 7 | "messageData": { 8 | "message": "example", 9 | "receivingUserID": "uuid_nameid_email" 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/remove-message: -------------------------------------------------------------------------------- 1 | mutation removeMessageOnRoom($messageData: RoomRemoveMessageInput!) { 2 | removeMessageOnRoom(messageData: $messageData) 3 | } 4 | 5 | Variables: 6 | { 7 | "messageData": { 8 | "messageID": "example222", 9 | "roomID": "uuid" 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/send-community-leads-message: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/graphql-samples/mutations/communication/send-community-leads-message -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/send-message: -------------------------------------------------------------------------------- 1 | mutation sendMessageToRoom($messageData: RoomSendMessageInput!) { 2 | sendMessageToRoom(messageData: $messageData) { 3 | id 4 | message 5 | timestamp 6 | sender 7 | } 8 | } 9 | 10 | Variables: 11 | { 12 | "messageData": { 13 | "message": "example222", 14 | "roomID": "uuid" 15 | } 16 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/send-message-to-room: -------------------------------------------------------------------------------- 1 | mutation sendMessageToRoom($messageData: SendMessageInput!){ 2 | sendMessageToRoom(messageData: $messageData){ 3 | id 4 | message 5 | } 6 | } 7 | 8 | { 9 | "messageData: { 10 | "message": "testiramo reply 1", 11 | "communicationRoomID": "1a6f7bc3-bda6-4b28-b8b9-2b42770444ff", 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/send-organization-message: -------------------------------------------------------------------------------- 1 | mutation sendMessageToOrganization($messageData: CommunicationSendMessageToOrganizationInput!){ 2 | sendMessageToOrganization(messageData: $messageData) 3 | } 4 | 5 | Variables: 6 | { 7 | "messageData": { 8 | "message": "test", 9 | "organizationId": "uuid_nameid" 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/communication/send-user-message: -------------------------------------------------------------------------------- 1 | mutation sendMessageToUser($messageData: CommunicationSendMessageToUserInput!){ 2 | sendMessageToUser(messageData: $messageData) 3 | } 4 | 5 | Variables: 6 | { 7 | "messageData": { 8 | "message": "test", 9 | "receiverIds": ["uuid_nameid"] 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/convert/convert-challenge-to-space: -------------------------------------------------------------------------------- 1 | mutation ConvertChallengeToSpace($convertData: ConvertChallengeToSpaceInput!) { 2 | convertChallengeToSpace(convertData: $convertData) { 3 | nameID, 4 | id 5 | } 6 | } 7 | 8 | query variables: 9 | { 10 | "convertData": 11 | { 12 | "challengeID": "uuid" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /graphql-samples/mutations/convert/convert-opportunity-to-challenge: -------------------------------------------------------------------------------- 1 | mutation ConvertOpportunityToChallenge($convertData: ConvertOpportunityToChallengeInput!) { 2 | convertOpportunityToChallenge(convertData: $convertData) { 3 | displayName, 4 | id 5 | } 6 | } 7 | 8 | query variables: 9 | { 10 | "convertData": 11 | { 12 | "opportunityID": "uuid" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /graphql-samples/mutations/create/community-membership-join: -------------------------------------------------------------------------------- 1 | mutation joinCommunity($joiningData: CommunityJoinInput!) { 2 | joinCommunity(joiningData:$joiningData){ 3 | id 4 | } 5 | } 6 | 7 | query variables: 8 | { 9 | "joiningData": { 10 | "communityID": "uuid" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /graphql-samples/mutations/create/create-license-plan: -------------------------------------------------------------------------------- 1 | mutation { 2 | createLicensePlan(planData: { 3 | licensingID: "9f4de137-7d92-49b7-89b3-30963039bb83", 4 | name: "FREE" 5 | }) { 6 | id 7 | } 8 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-actor: -------------------------------------------------------------------------------- 1 | mutation deleteActor($deleteData: DeleteActorInput!) { 2 | deleteActor(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-actor-group: -------------------------------------------------------------------------------- 1 | mutation deleteActorGroup($deleteData: DeleteActorGroupInput!) { 2 | deleteActorGroup(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-callout: -------------------------------------------------------------------------------- 1 | mutation deleteCallout($deleteData: DeleteCalloutInput!) { 2 | deleteCallout(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-canvas: -------------------------------------------------------------------------------- 1 | mutation deleteWhiteboard($deleteData: DeleteWhiteboardInput!) { 2 | deleteWhiteboard(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "whiteboardID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-collaboration: -------------------------------------------------------------------------------- 1 | mutation deleteCollaboration($deleteData: DeleteCollaborationInput!) { 2 | deleteCollaboration(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-community-application: -------------------------------------------------------------------------------- 1 | mutation deleteUserApplication($deleteData: DeleteApplicationInput!) { 2 | deleteUserApplication(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-community-guidelines-template: -------------------------------------------------------------------------------- 1 | mutation deleteCommunityGuidelinesTemplate($deleteData: DeleteCommunityGuidelinesTemplateInput!) { 2 | deleteCommunityGuidelinesTemplate(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-community-invitation: -------------------------------------------------------------------------------- 1 | mutation deleteInvitation($deleteData: DeleteInvitationInput!) { 2 | deleteInvitation(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-discussion: -------------------------------------------------------------------------------- 1 | mutation deleteDiscussion($deleteData: DeleteDiscussionInput!) { 2 | deleteDiscussion(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-document: -------------------------------------------------------------------------------- 1 | mutation deleteDocument($deleteData: DeleteDocumentInput!) { 2 | deleteDocument(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-innovation-flow-template: -------------------------------------------------------------------------------- 1 | mutation deleteInnovationFlowTemplate($deleteData: DeleteInnovationFlowTemplateInput!) { 2 | deleteInnovationFlowTemplate(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-innovation-hub: -------------------------------------------------------------------------------- 1 | mutation deleteInnovationHub($input: DeleteInnovationHubInput!) { 2 | deleteInnovationHub(deleteData: $input){ 3 | id 4 | } 5 | } 6 | 7 | query variables: 8 | { 9 | "input": { 10 | "ID": "a44ed988-2b79-41d6-aba8-db3fd40e73ef" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-innovation-pack: -------------------------------------------------------------------------------- 1 | mutation deleteInnovationPack($deleteData: DeleteInnovationPackInput!) { 2 | deleteInnovationPack(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-organization: -------------------------------------------------------------------------------- 1 | mutation deleteOrganization($deleteData: DeleteOrganizationInput!) { 2 | deleteOrganization(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | 8 | Variables: 9 | { 10 | "deleteData": { 11 | "ID": "uuid" 12 | } 13 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-post: -------------------------------------------------------------------------------- 1 | mutation deletePost($deleteData: DeletePostInput!) { 2 | deletePost(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | 8 | Variables: 9 | { 10 | "deleteData": { 11 | "ID": "uuid" 12 | } 13 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-post-template: -------------------------------------------------------------------------------- 1 | mutation deletePostTemplate($deleteData: DeletePostTemplateInput!) { 2 | deletePostTemplate(deleteData: $deleteData) { 3 | profile { 4 | displayName 5 | } 6 | } 7 | } 8 | 9 | Variables: 10 | { 11 | "deleteData": { 12 | "ID": "uuid" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-reference: -------------------------------------------------------------------------------- 1 | mutation deleteReference($deleteData: DeleteReferenceInput!) { 2 | deleteReference(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-space: -------------------------------------------------------------------------------- 1 | mutation deleteSpace($deleteData: DeleteSpaceInput!) { 2 | deleteSpace(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-user: -------------------------------------------------------------------------------- 1 | mutation deleteUser($deleteData: DeleteUserInput!) { 2 | deleteUser(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | Variables: 7 | { 8 | "deleteData": { 9 | "ID": "uuid" 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-user-group: -------------------------------------------------------------------------------- 1 | mutation deleteUserGroup($deleteData: DeleteUserGroupInput!) { 2 | deleteUserGroup(deleteData: $deleteData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "deleteData": { 10 | "ID": "uuid" 11 | } 12 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/delete/delete-whiteboard-template: -------------------------------------------------------------------------------- 1 | mutation deleteWhiteboardTemplate($deleteData: DeleteWhiteboardTemplateInput!) { 2 | deleteWhiteboardTemplate(deleteData: $deleteData) { 3 | profile { 4 | displayName 5 | } 6 | id 7 | } 8 | } 9 | 10 | Variables: 11 | { 12 | "deleteData": { 13 | "ID": "uuid" 14 | } 15 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/assign-community-role-to-user: -------------------------------------------------------------------------------- 1 | mutation assignCommunityRoleToUser($roleData: AssignCommunityRoleToUserInput!) { 2 | assignCommunityRoleToUser(roleData: $roleData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "roleData": { 10 | "userID": "uuid", 11 | "communityID": "uuid", 12 | "role": "MEMBER" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/assign-community-role-to-virtual: -------------------------------------------------------------------------------- 1 | mutation assignCommunityRoleToVirtual($roleData: AssignCommunityRoleToVirtualInput!) { 2 | assignCommunityRoleToVirtual(roleData: $roleData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "roleData": { 10 | "virtualID": "uuid", 11 | "communityID": "uuid", 12 | "role": "MEMBER" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/remove-community-role-from-user: -------------------------------------------------------------------------------- 1 | mutation removeCommunityRoleFromUser($roleData: RemoveCommunityRoleFromUserInput!) { 2 | removeCommunityRoleFromUser(roleData: $roleData) { 3 | id, 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "roleData": { 10 | "userID": "uuid", 11 | "communityID": "uuid", 12 | "role": "MEMBER" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-callout-publish-info: -------------------------------------------------------------------------------- 1 | mutation updateCalloutPublishInfo($calloutData: UpdateCalloutPublishInfoInput!) { 2 | updateCalloutPublishInfo(calloutData: $calloutData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "calloutData": { 10 | "calloutID": "uuid", 11 | "publisherID": "uuid_nameid" 12 | } 13 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-callout-visibility: -------------------------------------------------------------------------------- 1 | mutation updateCalloutVisibility($calloutData: UpdateCalloutVisibilityInput!) { 2 | updateCalloutVisibility(calloutData: $calloutData) { 3 | id 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "calloutData": { 10 | "calloutID": "uuid", 11 | "visibility": "PUBLISHED", 12 | "sendNotification": true 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-ecosystem-model: -------------------------------------------------------------------------------- 1 | mutation updateEcosystemModel($ecosystemModelData: UpdateEcosystemModelInput!) { 2 | updateEcosystemModel(ecosystemModelData: $ecosystemModelData) 3 | { 4 | id 5 | } 6 | } 7 | 8 | Variables: 9 | { 10 | "ecosystemModelData": { 11 | "ID": "uuid", 12 | "description": "some description", 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-profile: -------------------------------------------------------------------------------- 1 | mutation updateProfile($profileData: UpdateProfileInput!) { 2 | updateProfile(profileData: $profileData) 3 | { 4 | id 5 | } 6 | } 7 | 8 | Variables: 9 | { 10 | "profileData": { 11 | "ID": "uuid", 12 | "description": "some description" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-space: -------------------------------------------------------------------------------- 1 | mutation UpdateSpace($spaceData: UpdateSpaceInput!) { 2 | updateSpace(spaceData: $spaceData) { 3 | id 4 | } 5 | } 6 | { 7 | "spaceData": 8 | { 9 | "ID": "uuid", 10 | "profileData": { 11 | "displayName": "New Space 3" 12 | } 13 | 14 | } 15 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-visual: -------------------------------------------------------------------------------- 1 | mutation updateVisual($updateData: UpdateVisualInput!) { 2 | updateVisual(updateData: $updateData) 3 | { 4 | id 5 | } 6 | } 7 | 8 | Variables: 9 | { 10 | "updateData": { 11 | "visualID": "uuid", 12 | "uri": "some description" 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/mutations/update/update-whiteboard: -------------------------------------------------------------------------------- 1 | mutation updateWhiteboard($whiteboardData: UpdateWhiteboardDirectInput!) { 2 | updateWhiteboard(whiteboardData: $whiteboardData) { 3 | name 4 | } 5 | } 6 | 7 | Variables: 8 | { 9 | "whiteboardData": { 10 | "ID": "uuid", 11 | "name": "some description", 12 | "isTemplate": true 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/queries/pagination/users-paginated: -------------------------------------------------------------------------------- 1 | { 2 | usersPaginated(first:3) { 3 | users { 4 | id 5 | nameID 6 | } 7 | pageInfo { 8 | startCursor 9 | endCursor 10 | hasNextPage 11 | hasPreviousPage 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /graphql-samples/queries/spaces-visibility: -------------------------------------------------------------------------------- 1 | query { 2 | spaces(filter: {visibilities: [ARCHIVED, ACTIVE, DEMO]}) { 3 | nameID 4 | visibility 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /graphql-samples/queries/storage/organization-storage-bucket: -------------------------------------------------------------------------------- 1 | query organizations { 2 | organizations { 3 | storageAggregator { 4 | size 5 | storageBuckets { 6 | documents { 7 | displayName 8 | size 9 | } 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /graphql-samples/queries/storage/space-challenge-storage-bucket: -------------------------------------------------------------------------------- 1 | query spaces { 2 | spaces { 3 | storageAggregator 4 | { 5 | size 6 | storageBuckets { 7 | documents 8 | { 9 | displayName 10 | size 11 | } 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /graphql-samples/queries/users-filtered: -------------------------------------------------------------------------------- 1 | query { 2 | users(filter: {credentials: [SPACE_HOST]}) { 3 | nameID 4 | } 5 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/calendarEventMessageReceived: -------------------------------------------------------------------------------- 1 | subscription { 2 | calendarEventCommentsMessageReceived(calendarEventID: "uuid") { 3 | calendarEventID 4 | message { 5 | id, 6 | message 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/calloutAspectCreated: -------------------------------------------------------------------------------- 1 | subscription { 2 | calloutPostCreated(calloutID: "uuid") { 3 | calloutID 4 | post { 5 | profile { 6 | displayName 7 | } 8 | } 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/calloutMessageReceived: -------------------------------------------------------------------------------- 1 | subscription { 2 | calloutMessageReceived(calloutIDs: ["uuid"]) { 3 | calloutID 4 | commentsID 5 | message { 6 | id, 7 | message, 8 | sender 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/challengeCreated: -------------------------------------------------------------------------------- 1 | subscription { 2 | challengeCreated(spaceID: "uuid") { 3 | spaceID 4 | challenge{ 5 | nameID 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/communicationDiscussionMessageReceived: -------------------------------------------------------------------------------- 1 | subscription { 2 | communicationDiscussionMessageReceived(discussionID: "uuid") { 3 | discussionID, 4 | message { 5 | id, 6 | message, 7 | sender 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/communicationDiscussionUpdated: -------------------------------------------------------------------------------- 1 | subscription { 2 | communicationDiscussionUpdated(communicationID: "uuid") { 3 | id 4 | } 5 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/communicationUpdateMessageReceived: -------------------------------------------------------------------------------- 1 | subscription { 2 | communicationUpdateMessageReceived { 3 | updatesID, 4 | message { 5 | id, 6 | message, 7 | sender 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/opportunityCreated: -------------------------------------------------------------------------------- 1 | subscription { 2 | opportunityCreated(challengeID: "uuid") { 3 | challengeID 4 | opportunity{ 5 | nameID 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /graphql-samples/subscriptions/profileVerifiedCredential: -------------------------------------------------------------------------------- 1 | subscription { 2 | profileVerifiedCredential { 3 | vc 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /manifests/30-server-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: alkemio-server-service 5 | 6 | spec: 7 | ports: 8 | - protocol: TCP 9 | name: graphql 10 | port: 4000 11 | - protocol: TCP 12 | name: socket-io 13 | port: 4001 14 | selector: 15 | app: alkemio-server 16 | -------------------------------------------------------------------------------- /nest-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "collection": "@nestjs/schematics", 3 | "sourceRoot": "src", 4 | "compilerOptions": { 5 | "assets": ["**/*.yaml", "**/*.yml"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/apm/decorators/index.ts: -------------------------------------------------------------------------------- 1 | export * from './instrument.service.decorator'; 2 | export * from './instrument.resolver.decorator'; 3 | -------------------------------------------------------------------------------- /src/apm/decorators/util/index.ts: -------------------------------------------------------------------------------- 1 | export * from './copy.metadata'; 2 | export * from './instrument.method'; 3 | export * from './createInstrumentedClassDecorator'; 4 | -------------------------------------------------------------------------------- /src/apm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './apm'; 2 | -------------------------------------------------------------------------------- /src/apm/plugins/index.ts: -------------------------------------------------------------------------------- 1 | export * from './apm.apollo.plugin'; 2 | -------------------------------------------------------------------------------- /src/common/app.id.provider.ts: -------------------------------------------------------------------------------- 1 | import { randomUUID } from 'crypto'; 2 | import { ValueProvider } from '@nestjs/common'; 3 | import { APP_ID } from '@common/constants'; 4 | 5 | export const APP_ID_VALUE = randomUUID(); 6 | 7 | export const APP_ID_PROVIDER: ValueProvider = { 8 | provide: APP_ID, 9 | useValue: APP_ID_VALUE, 10 | }; 11 | -------------------------------------------------------------------------------- /src/common/constants/authorization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './credential.rule.constants'; 2 | export * from './credential.rule.types.constants'; 3 | export * from './global.policy.constants'; 4 | export * from './policy.rule.constants'; 5 | -------------------------------------------------------------------------------- /src/common/constants/communication.constants.ts: -------------------------------------------------------------------------------- 1 | export const COMMUNICATION_PLATFORM_SPACEID = 'platform'; 2 | -------------------------------------------------------------------------------- /src/common/constants/default.space.constants.ts: -------------------------------------------------------------------------------- 1 | export const DEFAULT_SPACE_NAMEID = 'eco1'; 2 | export const DEFAULT_SPACE_DISPLAYNAME = 'Default Space'; 3 | export const DEFAULT_HOST_ORG_NAMEID = 'Eco1Host'; 4 | export const DEFAULT_HOST_ORG_DISPLAY_NAME = 'Eco1 Host'; 5 | -------------------------------------------------------------------------------- /src/common/constants/index.ts: -------------------------------------------------------------------------------- 1 | export * from './entity.field.length.constants'; 2 | export * from './default.space.constants'; 3 | export * from './providers'; 4 | export * from './rabbitmq.constants'; 5 | export * from './communication.constants'; 6 | export * from './authorization'; 7 | export * from './innovation.hub.inject.token'; 8 | -------------------------------------------------------------------------------- /src/common/constants/innovation.hub.inject.token.ts: -------------------------------------------------------------------------------- 1 | export const INNOVATION_HUB_INJECT_TOKEN = 'INNOVATION_HUB_INJECT_TOKEN'; 2 | -------------------------------------------------------------------------------- /src/common/constants/rabbitmq.constants.ts: -------------------------------------------------------------------------------- 1 | export const RABBITMQ_EXCHANGE_NAME_DIRECT = 2 | 'alkemio-graphql-subscriptions-direct'; 3 | -------------------------------------------------------------------------------- /src/common/decorators/authorization.agent.privilege.ts: -------------------------------------------------------------------------------- 1 | import { SetMetadata } from '@nestjs/common'; 2 | 3 | export const AuthorizationAgentPrivilege = (privilege: string) => 4 | SetMetadata('privilege', privilege); 5 | -------------------------------------------------------------------------------- /src/common/decorators/index.ts: -------------------------------------------------------------------------------- 1 | export * from './current-user.decorator'; 2 | export * from './profiling.decorator'; 3 | export * from './authorization.agent.privilege'; 4 | export * from './typed.subscription'; 5 | export * from './headers.decorator'; 6 | export * from './innovation.hub.decoration'; 7 | -------------------------------------------------------------------------------- /src/common/decorators/typed.subscription/index.ts: -------------------------------------------------------------------------------- 1 | export * from './typed.subscription.options'; 2 | export * from './typed.subscription.decorator'; 3 | export * from './subscription.resolve.context'; 4 | -------------------------------------------------------------------------------- /src/common/decorators/typed.subscription/subscription.resolve.context.ts: -------------------------------------------------------------------------------- 1 | import { IncomingHttpHeaders } from 'http'; 2 | import { AgentInfo } from '@core/authentication.agent.info/agent.info'; 3 | 4 | export interface SubscriptionResolveContext { 5 | req: { 6 | headers: IncomingHttpHeaders; 7 | user: AgentInfo; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /src/common/enums/account.role.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AccountRole { 4 | HOST = 'host', 5 | } 6 | 7 | registerEnumType(AccountRole, { 8 | name: 'AccountRole', 9 | }); 10 | -------------------------------------------------------------------------------- /src/common/enums/account.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AccountType { 4 | USER = 'user', 5 | ORGANIZATION = 'organization', 6 | } 7 | 8 | registerEnumType(AccountType, { 9 | name: 'AccountType', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/agent.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AgentType { 4 | USER = 'user', 5 | ORGANIZATION = 'organization', 6 | VIRTUAL_CONTRIBUTOR = 'virtual-contributor', 7 | SPACE = 'space', 8 | ACCOUNT = 'account', 9 | } 10 | 11 | registerEnumType(AgentType, { 12 | name: 'AgentType', 13 | }); 14 | -------------------------------------------------------------------------------- /src/common/enums/ai.persona.data.access.mode.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AiPersonaDataAccessMode { 4 | NONE = 'none', 5 | SPACE_PROFILE = 'space_profile', 6 | SPACE_PROFILE_AND_CONTENTS = 'space_profile_and_contents', 7 | } 8 | 9 | registerEnumType(AiPersonaDataAccessMode, { 10 | name: 'AiPersonaDataAccessMode', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/ai.persona.interaction.mode.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AiPersonaInteractionMode { 4 | DISCUSSION_TAGGING = 'discussion-tagging', 5 | } 6 | 7 | registerEnumType(AiPersonaInteractionMode, { 8 | name: 'AiPersonaInteractionMode', 9 | }); 10 | -------------------------------------------------------------------------------- /src/common/enums/ai.persona.invocation.operation.ts: -------------------------------------------------------------------------------- 1 | export enum InvocationOperation { 2 | QUERY = 'query', 3 | INGEST = 'ingest', 4 | } 5 | -------------------------------------------------------------------------------- /src/common/enums/ai.server.authorization.privilege.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AiServerAuthorizationPrivilege { 4 | AI_SERVER_ADMIN = 'ai-server-admin', 5 | } 6 | 7 | registerEnumType(AiServerAuthorizationPrivilege, { 8 | name: 'AiServerAuthorizationPrivilege', 9 | }); 10 | -------------------------------------------------------------------------------- /src/common/enums/ai.server.role.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AiServerRole { 4 | GLOBAL_ADMIN = 'global-admin', 5 | SUPPORT = 'support', 6 | } 7 | 8 | registerEnumType(AiServerRole, { 9 | name: 'AiServerRole', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/authentication.provider.ts: -------------------------------------------------------------------------------- 1 | export enum AuthenticationProviderConfigs { 2 | ORY = 'OryConfig', 3 | } 4 | -------------------------------------------------------------------------------- /src/common/enums/authentication.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum AuthenticationType { 4 | LINKEDIN = 'linkedin', 5 | MICROSOFT = 'microsoft', 6 | EMAIL = 'email', 7 | UNKNOWN = 'unknown', 8 | } 9 | 10 | registerEnumType(AuthenticationType, { 11 | name: 'AuthenticationType', 12 | }); 13 | -------------------------------------------------------------------------------- /src/common/enums/authorization.credential.global.ts: -------------------------------------------------------------------------------- 1 | export enum AuthorizationRoleGlobal { 2 | GLOBAL_REGISTERED = 'global-registered', 3 | GLOBAL_COMMUNITY_READ = 'global-community-read', 4 | GLOBAL_SUPPORT = 'global-support', 5 | GLOBAL_ADMIN = 'global-admin', 6 | } 7 | -------------------------------------------------------------------------------- /src/common/enums/authorization.verified.credential.ts: -------------------------------------------------------------------------------- 1 | export enum AuthorizationVerifiedCredential { 2 | STATE_MODIFICATION_CREDENTIAL = 'StateModificationCredential', 3 | COMMUNITY_MEMBER = 'CommunityMemberCredential', 4 | THE_HAGUE_ADDRESS = 'TheHagueAddress', 5 | } 6 | -------------------------------------------------------------------------------- /src/common/enums/callout.contribution.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum CalloutContributionType { 4 | POST = 'post', 5 | WHITEBOARD = 'whiteboard', 6 | LINK = 'link', 7 | } 8 | 9 | registerEnumType(CalloutContributionType, { 10 | name: 'CalloutContributionType', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/callout.state.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum CalloutState { 4 | OPEN = 'open', 5 | CLOSED = 'closed', 6 | ARCHIVED = 'archived', 7 | } 8 | 9 | registerEnumType(CalloutState, { 10 | name: 'CalloutState', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/callout.visibility.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum CalloutVisibility { 4 | DRAFT = 'draft', 5 | PUBLISHED = 'published', 6 | } 7 | 8 | registerEnumType(CalloutVisibility, { 9 | name: 'CalloutVisibility', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/callouts.set.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum CalloutsSetType { 4 | COLLABORATION = 'collaboration', 5 | KNOWLEDGE_BASE = 'knowledge-base', 6 | } 7 | 8 | registerEnumType(CalloutsSetType, { 9 | name: 'CalloutsSetType', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/community.membership.policy.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum CommunityMembershipPolicy { 4 | OPEN = 'open', 5 | INVITATIONS = 'invitations', 6 | APPLICATIONS = 'applications', 7 | } 8 | 9 | registerEnumType(CommunityMembershipPolicy, { 10 | name: 'CommunityMembershipPolicy', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/content.update.policy.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum ContentUpdatePolicy { 4 | OWNER = 'owner', 5 | ADMINS = 'admins', 6 | CONTRIBUTORS = 'contributors', 7 | } 8 | 9 | registerEnumType(ContentUpdatePolicy, { 10 | name: 'ContentUpdatePolicy', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/forum.discussion.privacy.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum ForumDiscussionPrivacy { 4 | AUTHOR = 'author', 5 | AUTHENTICATED = 'authenticated', 6 | PUBLIC = 'public', 7 | } 8 | 9 | registerEnumType(ForumDiscussionPrivacy, { 10 | name: 'ForumDiscussionPrivacy', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/license.entitlement.data.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum LicenseEntitlementDataType { 4 | LIMIT = 'limit', 5 | FLAG = 'flag', 6 | } 7 | 8 | registerEnumType(LicenseEntitlementDataType, { 9 | name: 'LicenseEntitlementDataType', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/organization.verification.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum OrganizationVerificationEnum { 4 | NOT_VERIFIED = 'not-verified', 5 | VERIFIED_MANUAL_ATTESTATION = 'verified-manual-attestation', 6 | } 7 | 8 | registerEnumType(OrganizationVerificationEnum, { 9 | name: 'OrganizationVerificationEnum', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/preference.definition.set.ts: -------------------------------------------------------------------------------- 1 | export enum PreferenceDefinitionSet { 2 | USER = 'user', 3 | } 4 | -------------------------------------------------------------------------------- /src/common/enums/preference.value.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum PreferenceValueType { 4 | BOOLEAN = 'boolean', 5 | INT = 'int', 6 | FLOAT = 'float', 7 | STRING = 'string', 8 | } 9 | 10 | registerEnumType(PreferenceValueType, { 11 | name: 'PreferenceValueType', 12 | }); 13 | -------------------------------------------------------------------------------- /src/common/enums/rest.endpoint.ts: -------------------------------------------------------------------------------- 1 | export enum RestEndpoint { 2 | COMPLETE_CREDENTIAL_REQUEST_INTERACTION_JOLOCOM = 'completeCredentialRequestInteractionJolocom', 3 | COMPLETE_CREDENTIAL_REQUEST_INTERACTION_SOVRHD = 'completeCredentialRequestInteractionSovrhd', 4 | COMPLETE_CREDENTIAL_OFFER_INTERACTION = 'completeCredentialOfferInteraction', 5 | GEO_LOCATION = 'geo', 6 | } 7 | -------------------------------------------------------------------------------- /src/common/enums/role.set.contributor.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum RoleSetContributorType { 4 | USER = 'user', 5 | ORGANIZATION = 'organization', 6 | VIRTUAL = 'virtual', 7 | } 8 | 9 | registerEnumType(RoleSetContributorType, { 10 | name: 'RoleSetContributorType', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/role.set.role.implicit.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum RoleSetRoleImplicit { 4 | SUBSPACE_ADMIN = 'subspace-admin', 5 | ACCOUNT_ADMIN = 'account-admin', 6 | } 7 | 8 | registerEnumType(RoleSetRoleImplicit, { 9 | name: 'RoleSetRoleImplicit', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/role.set.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum RoleSetType { 4 | SPACE = 'space', 5 | ORGANIZATION = 'organization', 6 | PLATFORM = 'platform', 7 | } 8 | 9 | registerEnumType(RoleSetType, { 10 | name: 'RoleSetType', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/role.set.update.type.ts: -------------------------------------------------------------------------------- 1 | export enum RoleSetUpdateType { 2 | ASSIGN = 'assign', 3 | REMOVE = 'remove', 4 | } 5 | -------------------------------------------------------------------------------- /src/common/enums/room.type.ts: -------------------------------------------------------------------------------- 1 | export enum RoomType { 2 | POST = 'post', 3 | CALENDAR_EVENT = 'calendar_event', 4 | DISCUSSION = 'discussion', 5 | DISCUSSION_FORUM = 'discussion_forum', 6 | UPDATES = 'updates', 7 | CALLOUT = 'callout', 8 | GUIDANCE = 'guidance', 9 | } 10 | -------------------------------------------------------------------------------- /src/common/enums/space.level.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum SpaceLevel { 4 | L0 = 0, 5 | L1 = 1, 6 | L2 = 2, 7 | } 8 | 9 | registerEnumType(SpaceLevel, { 10 | name: 'SpaceLevel', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/space.privacy.mode.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum SpacePrivacyMode { 4 | PUBLIC = 'public', 5 | PRIVATE = 'private', 6 | } 7 | 8 | registerEnumType(SpacePrivacyMode, { 9 | name: 'SpacePrivacyMode', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/space.visibility.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum SpaceVisibility { 4 | ACTIVE = 'active', 5 | ARCHIVED = 'archived', 6 | DEMO = 'demo', 7 | } 8 | 9 | registerEnumType(SpaceVisibility, { 10 | name: 'SpaceVisibility', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/ssi.issuer.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum SsiIssuerType { 4 | JOLOCOM = 'jolocom', 5 | SOVRHD = 'sovrhd', 6 | } 7 | 8 | registerEnumType(SsiIssuerType, { 9 | name: 'SsiIssuerType', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/enums/storage.aggregator.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum StorageAggregatorType { 4 | SPACE = 'space', 5 | ACCOUNT = 'account', 6 | USER = 'user', 7 | ORGANIZATION = 'organization', 8 | PLATFORM = 'platform', 9 | } 10 | 11 | registerEnumType(StorageAggregatorType, { 12 | name: 'StorageAggregatorType', 13 | }); 14 | -------------------------------------------------------------------------------- /src/common/enums/subscriptions/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mutation.type'; 2 | -------------------------------------------------------------------------------- /src/common/enums/subscriptions/mutation.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum MutationType { 4 | CREATE = 'create', 5 | UPDATE = 'update', 6 | DELETE = 'delete', 7 | } 8 | 9 | registerEnumType(MutationType, { 10 | name: 'MutationType', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/tagset.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum TagsetType { 4 | FREEFORM = 'freeform', 5 | SELECT_ONE = 'select-one', 6 | SELECT_MANY = 'select-many', 7 | } 8 | 9 | registerEnumType(TagsetType, { 10 | name: 'TagsetType', 11 | }); 12 | -------------------------------------------------------------------------------- /src/common/enums/template.type.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum TemplateType { 4 | CALLOUT = 'callout', 5 | POST = 'post', 6 | WHITEBOARD = 'whiteboard', 7 | COMMUNITY_GUIDELINES = 'community-guidelines', 8 | SPACE = 'space', 9 | } 10 | 11 | registerEnumType(TemplateType, { 12 | name: 'TemplateType', 13 | }); 14 | -------------------------------------------------------------------------------- /src/common/enums/url.path.element.space.ts: -------------------------------------------------------------------------------- 1 | export enum UrlPathElementSpace { 2 | CHALLENGES = 'challenges', 3 | OPPORTUNITIES = 'opportunities', 4 | COMMUNITY = 'community', 5 | KNOWLEDGE_BASE = 'knowledge-base', 6 | SETTINGS = 'settings', 7 | } 8 | -------------------------------------------------------------------------------- /src/common/enums/virtual.contributor.status.enum.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum VirtualContributorStatus { 4 | INITIALIZING = 'initializing', 5 | READY = 'ready', 6 | } 7 | 8 | registerEnumType(VirtualContributorStatus, { 9 | name: 'VirtualContributorStatus', 10 | }); 11 | -------------------------------------------------------------------------------- /src/common/exceptions/auth/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login.flow.initialize.exception'; 2 | export * from './login.flow.exception'; 3 | export * from './session.extend.exception'; 4 | export * from './bearer.token.not.found.exception'; 5 | export * from './api.restricted.access.exception'; 6 | -------------------------------------------------------------------------------- /src/common/exceptions/communication/communication.timed.out.exception.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationTimedOutException extends Error { 2 | constructor() { 3 | super('Did not receive response from the communication service in time'); 4 | this.name = 'CommunicationTimedOutException'; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/exceptions/communication/index.ts: -------------------------------------------------------------------------------- 1 | export * from './communication.timed.out.exception'; 2 | -------------------------------------------------------------------------------- /src/common/exceptions/data-loader/data.loader.creator.init.error.ts: -------------------------------------------------------------------------------- 1 | export class DataLoaderCreatorInitError extends Error { 2 | constructor(message: string) { 3 | super(message); 4 | this.name = this.constructor.name; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/exceptions/data-loader/data.loader.init.error.ts: -------------------------------------------------------------------------------- 1 | export class DataLoaderInitError extends Error { 2 | constructor(message: string) { 3 | super(message); 4 | this.name = this.constructor.name; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/exceptions/data-loader/data.loader.interceptor.not.provided.ts: -------------------------------------------------------------------------------- 1 | export class DataLoaderInterceptorNotProvided extends Error { 2 | constructor(message: string) { 3 | super(message); 4 | this.name = this.constructor.name; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/exceptions/data-loader/data.loader.not.provided.ts: -------------------------------------------------------------------------------- 1 | export class DataLoaderNotProvided extends Error { 2 | constructor(message: string) { 3 | super(message); 4 | this.name = this.constructor.name; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/exceptions/data-loader/index.ts: -------------------------------------------------------------------------------- 1 | export * from './data.loader.not.provided'; 2 | export * from './data.loader.interceptor.not.provided'; 3 | export * from './data.loader.creator.init.error'; 4 | export * from './data.loader.init.error'; 5 | -------------------------------------------------------------------------------- /src/common/exceptions/exception.details.ts: -------------------------------------------------------------------------------- 1 | export type ExceptionDetails = ExceptionExtraDetails & Record; 2 | 3 | export type ExceptionExtraDetails = { 4 | userId?: string; 5 | message?: string; 6 | /** 7 | * A probable cause added manually by the developer 8 | */ 9 | cause?: string; 10 | originalException?: Error | unknown; 11 | }; 12 | -------------------------------------------------------------------------------- /src/common/exceptions/geo/index.ts: -------------------------------------------------------------------------------- 1 | export * from './geo.service.not.available.exception'; 2 | export * from './geo.service.error.exception'; 3 | export * from './geo.service.request.limit.exceeded.exception'; 4 | -------------------------------------------------------------------------------- /src/common/exceptions/group.not.initialized.exception.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class GroupNotInitializedException extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.GROUP_NOT_INITIALIZED); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/http/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base.http.exception'; 2 | 3 | export * from './forbidden.http.exception'; 4 | export * from './not.found.http.exception'; 5 | export * from './bad.request.http.exception'; 6 | -------------------------------------------------------------------------------- /src/common/exceptions/internal/index.ts: -------------------------------------------------------------------------------- 1 | export * from './retry.exception'; 2 | export * from './timeout.exception'; 3 | -------------------------------------------------------------------------------- /src/common/exceptions/invalid.template.type.exception.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class InvalidTemplateTypeException extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.INVALID_TEMPLATE_TYPE); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/not.supported.exception.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class NotSupportedException extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.NOT_SUPPORTED); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export * from './pagination.input.out.of.bounds.exception'; 2 | export * from './pagination.not.found.exception'; 3 | export * from './pagination.parameter.not.found.exception'; 4 | -------------------------------------------------------------------------------- /src/common/exceptions/ssi.exception.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class SsiException extends BaseException { 5 | constructor(error: string, code?: AlkemioErrorStatus) { 6 | super(error, LogContext.AUTH_TOKEN, code ?? AlkemioErrorStatus.SSI_ERROR); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/ssi.interaction.not.found.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class SsiInteractionNotFound extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.SSI_INTERACTION_NOT_FOUND); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/ssi.sovrhd.api.exception.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class SsiSovrhdApiException extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.SSI_SOVRHD_API_ERROR); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/ssi.vc.not.verifiable.ts: -------------------------------------------------------------------------------- 1 | import { LogContext, AlkemioErrorStatus } from '@common/enums'; 2 | import { BaseException } from './base.exception'; 3 | 4 | export class SsiVcNotVerifiable extends BaseException { 5 | constructor(error: string, context: LogContext) { 6 | super(error, context, AlkemioErrorStatus.SSI_VC_NOT_VERIABLE); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/common/exceptions/storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './local-storage/local.storage.delete.failed.exception'; 2 | export * from './local-storage/local.storage.save.failed.exception'; 3 | export * from './local-storage/local.storage.read.failed.exception'; 4 | 5 | export * from './storage.disabled.exception'; 6 | -------------------------------------------------------------------------------- /src/common/exceptions/subscription/index.ts: -------------------------------------------------------------------------------- 1 | export * from './unable.to.subscribe.exception'; 2 | -------------------------------------------------------------------------------- /src/common/exceptions/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.not.verified.exception'; 2 | export * from './user.registered.exception'; 3 | export * from './user.registration.invalid.email'; 4 | export * from './user.identity.not.found.exception'; 5 | export * from './user.identity.deletion.exception'; 6 | -------------------------------------------------------------------------------- /src/common/interceptors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './innovation.hub.interceptor'; 2 | -------------------------------------------------------------------------------- /src/common/interfaces/base.subscription.payload.interface.ts: -------------------------------------------------------------------------------- 1 | export interface BaseSubscriptionPayload { 2 | eventID: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/common/interfaces/communication.message.payload.interface.ts: -------------------------------------------------------------------------------- 1 | export interface CommunicationMessagePayload { 2 | id: string; 3 | message: string; 4 | sender: string; 5 | timestamp: number; 6 | reactions: any[]; //todo 7 | } 8 | -------------------------------------------------------------------------------- /src/common/interfaces/groupable.interface.ts: -------------------------------------------------------------------------------- 1 | import { IUserGroup } from '@domain/community/user-group/user-group.interface'; 2 | 3 | export interface IGroupable { 4 | id: string; 5 | groups?: IUserGroup[]; 6 | } 7 | -------------------------------------------------------------------------------- /src/common/interfaces/index.ts: -------------------------------------------------------------------------------- 1 | export * from './groupable.interface'; 2 | export * from './base.subscription.payload.interface'; 3 | export * from './communication.message.payload.interface'; 4 | export * from './excalidraw.content.type'; 5 | -------------------------------------------------------------------------------- /src/common/interfaces/lifecycle.definition.interface.ts: -------------------------------------------------------------------------------- 1 | export interface ILifecycleDefinition { 2 | id: any; 3 | context: any; 4 | initial: any; 5 | states: any; 6 | } 7 | -------------------------------------------------------------------------------- /src/common/interfaces/redis.interfaces.ts: -------------------------------------------------------------------------------- 1 | import { Cache, Store } from 'cache-manager'; 2 | import Redis from 'redis'; 3 | 4 | export interface RedisCache extends Cache { 5 | store: RedisStore; 6 | } 7 | 8 | export interface RedisStore extends Store { 9 | name: 'redis'; 10 | getClient: () => Redis.RedisClient; 11 | isCacheableValue: (value: any) => boolean; 12 | } 13 | -------------------------------------------------------------------------------- /src/common/pipes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validation.pipe'; 2 | -------------------------------------------------------------------------------- /src/common/utils/array.random.element.ts: -------------------------------------------------------------------------------- 1 | export const arrayRandomElement = (array: Array): T => { 2 | const randomIndex = Math.floor(Math.random() * array.length); 3 | return array[randomIndex]; 4 | }; 5 | -------------------------------------------------------------------------------- /src/common/utils/async.map.sequential.ts: -------------------------------------------------------------------------------- 1 | export const asyncMapSequential = async ( 2 | array: T[], 3 | asyncMapper: (item: T) => Promise 4 | ): Promise => { 5 | const results: U[] = []; 6 | for (const item of array) { 7 | const result = await asyncMapper(item); 8 | results.push(result); 9 | } 10 | return results; 11 | }; 12 | -------------------------------------------------------------------------------- /src/common/utils/async.map.ts: -------------------------------------------------------------------------------- 1 | export const asyncMap = ( 2 | array: T[], 3 | asyncMapper: (item: T) => Promise 4 | ): Promise => { 5 | const promises = array.map(asyncMapper); 6 | return Promise.all(promises); 7 | }; 8 | -------------------------------------------------------------------------------- /src/common/utils/calculate.buffer.hash.ts: -------------------------------------------------------------------------------- 1 | import { createHash } from 'node:crypto'; 2 | 3 | export const calculateBufferHash = (data: Buffer) => { 4 | return createHash('sha3-256').update(data).digest('hex'); 5 | }; 6 | -------------------------------------------------------------------------------- /src/common/utils/convert-to-entity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './convert.to.entity'; 2 | -------------------------------------------------------------------------------- /src/common/utils/get-differences/index.ts: -------------------------------------------------------------------------------- 1 | export * from './get.diff'; 2 | -------------------------------------------------------------------------------- /src/common/utils/has-allowed-allowed-fields/index.ts: -------------------------------------------------------------------------------- 1 | export * from './has.only.allowed.fields'; 2 | -------------------------------------------------------------------------------- /src/common/utils/image.util.ts: -------------------------------------------------------------------------------- 1 | import sizeOf from 'image-size'; 2 | 3 | export async function getImageDimensions(imageBuffer: Buffer): Promise { 4 | const imageSize = sizeOf(imageBuffer); 5 | const imageHeight = imageSize.height as number; 6 | const imageWidth = imageSize.width as number; 7 | return { imageHeight, imageWidth }; 8 | } 9 | -------------------------------------------------------------------------------- /src/common/utils/random.id.generator.util.ts: -------------------------------------------------------------------------------- 1 | export const getRandomId = () => Math.floor(Math.random() * 100); 2 | -------------------------------------------------------------------------------- /src/common/utils/random.util.ts: -------------------------------------------------------------------------------- 1 | export function generateRandomArraySelection( 2 | limit: number, 3 | size: number 4 | ): number[] { 5 | const result = []; 6 | while (result.length < limit) { 7 | const r = Math.floor(Math.random() * size); 8 | if (result.indexOf(r) === -1) result.push(r); 9 | } 10 | return result; 11 | } 12 | -------------------------------------------------------------------------------- /src/config/graphql/config.ts: -------------------------------------------------------------------------------- 1 | import gql from 'graphql-tag'; 2 | 3 | export const configQuery = gql` 4 | query configuration { 5 | platform { 6 | configuration { 7 | featureFlags { 8 | enabled 9 | name 10 | } 11 | } 12 | } 13 | } 14 | `; 15 | -------------------------------------------------------------------------------- /src/config/graphql/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config'; 2 | export * from './spaces'; 3 | export * from './me'; 4 | export * from './metadata'; 5 | -------------------------------------------------------------------------------- /src/config/graphql/metadata.ts: -------------------------------------------------------------------------------- 1 | import gql from 'graphql-tag'; 2 | 3 | export const platformMetadataQuery = gql` 4 | query platformMetadata { 5 | platform { 6 | metadata { 7 | services { 8 | name 9 | version 10 | } 11 | } 12 | } 13 | } 14 | `; 15 | -------------------------------------------------------------------------------- /src/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from './typeorm.cli.config'; 2 | export * from './winston.config'; 3 | export * from './graphql'; 4 | -------------------------------------------------------------------------------- /src/config/migration.config.ts: -------------------------------------------------------------------------------- 1 | import { DataSource } from 'typeorm'; 2 | import { typeormCliConfig } from './typeorm.cli.config.run'; 3 | 4 | const datasource = new DataSource(typeormCliConfig); 5 | datasource.initialize(); 6 | export default datasource; 7 | -------------------------------------------------------------------------------- /src/core/authentication/index.ts: -------------------------------------------------------------------------------- 1 | export * from './strategy.names'; 2 | -------------------------------------------------------------------------------- /src/core/authentication/strategy.names.ts: -------------------------------------------------------------------------------- 1 | export const AUTH_STRATEGY_OATHKEEPER_JWT = 'oathkeeper-jwt'; 2 | export const AUTH_STRATEGY_OATHKEEPER_API_TOKEN = 'oathkeeper-api-token'; 3 | -------------------------------------------------------------------------------- /src/core/authorization/authorization.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AuthorizationService } from './authorization.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [AuthorizationService], 7 | exports: [AuthorizationService], 8 | }) 9 | export class AuthorizationModule {} 10 | -------------------------------------------------------------------------------- /src/core/authorization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './graphql.guard'; 2 | -------------------------------------------------------------------------------- /src/core/bootstrap/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bootstrap.service'; 2 | -------------------------------------------------------------------------------- /src/core/dataloader/creators/base/index.ts: -------------------------------------------------------------------------------- 1 | export * from './data.loader.creator'; 2 | 3 | export * from './data.loader.creator.base.options'; 4 | export * from './data.loader.creator.options'; 5 | export * from './data.loader.creator.limit.options'; 6 | export * from './data.loader.creator.pagination.options'; 7 | -------------------------------------------------------------------------------- /src/core/dataloader/creators/index.ts: -------------------------------------------------------------------------------- 1 | export * from './loader.creator.module'; 2 | export * from './loader.creators'; 3 | 4 | export * from './base/data.loader.creator.options'; 5 | export * from './base/data.loader.creator.limit.options'; 6 | export * from './base/data.loader.creator.pagination.options'; 7 | -------------------------------------------------------------------------------- /src/core/dataloader/creators/loader.creator.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import * as creators from './loader.creators'; 3 | 4 | @Module({ 5 | providers: Object.values(creators), 6 | }) 7 | export class LoaderCreatorModule {} 8 | -------------------------------------------------------------------------------- /src/core/dataloader/data.loader.inject.token.ts: -------------------------------------------------------------------------------- 1 | export const DATA_LOADER_CTX_INJECT_TOKEN = 'DATA_LOADER_CTX_INJECT_TOKEN'; 2 | -------------------------------------------------------------------------------- /src/core/dataloader/decorators/index.ts: -------------------------------------------------------------------------------- 1 | export * from './data.loader.decorator'; 2 | -------------------------------------------------------------------------------- /src/core/dataloader/interceptors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './data.loader.interceptor'; 2 | export * from './data.loader.context.entry'; 3 | -------------------------------------------------------------------------------- /src/core/dataloader/loader.interface.ts: -------------------------------------------------------------------------------- 1 | import DataLoader from 'dataloader'; 2 | 3 | export type ILoader = DataLoader; 4 | -------------------------------------------------------------------------------- /src/core/dataloader/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './findByBatchIds'; 2 | export * from './findByBatchIdsSimple'; 3 | export * from './createTypedRelationLoader'; 4 | export * from './createTypedSimpleLoader'; 5 | export * from './createTypedBatchLoader'; 6 | export * from './selectOptionsFromFields'; 7 | export * from './find.by.batch.options'; 8 | export * from './sort.output.by.keys'; 9 | -------------------------------------------------------------------------------- /src/core/error-handling/index.ts: -------------------------------------------------------------------------------- 1 | export * from './http.exception.filter'; 2 | export * from './graphql.exception.filter'; 3 | export * from './unhandled.exception.filter'; 4 | -------------------------------------------------------------------------------- /src/core/filtering/filters/index.ts: -------------------------------------------------------------------------------- 1 | export * from './userFilter'; 2 | export * from './organizationFilter'; 3 | -------------------------------------------------------------------------------- /src/core/filtering/index.ts: -------------------------------------------------------------------------------- 1 | export * from './filter.fn'; 2 | 3 | export * from './input-types'; 4 | -------------------------------------------------------------------------------- /src/core/filtering/input-types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.filter.input'; 2 | export * from './organization.filter.input'; 3 | -------------------------------------------------------------------------------- /src/core/interceptors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.interceptor'; 2 | -------------------------------------------------------------------------------- /src/core/microservices/index.ts: -------------------------------------------------------------------------------- 1 | export * from './microservices.module'; 2 | -------------------------------------------------------------------------------- /src/core/middleware/index.ts: -------------------------------------------------------------------------------- 1 | export * from './favicon.middleware'; 2 | export * from './request.logger.middleware'; 3 | export * from './session.extend.middleware'; 4 | -------------------------------------------------------------------------------- /src/core/pagination/index.ts: -------------------------------------------------------------------------------- 1 | export * from './relay.style.paginated.type'; 2 | export * from './relay.style.pagination.fn'; 3 | 4 | export * from './paginated.user'; 5 | export * from './paginated.space'; 6 | export * from './pagination.args'; 7 | -------------------------------------------------------------------------------- /src/core/pagination/paginated.organization.ts: -------------------------------------------------------------------------------- 1 | import { ObjectType } from '@nestjs/graphql'; 2 | import { Paginate } from '@core/pagination/paginated.type'; 3 | import { IOrganization } from '@src/domain/community/organization'; 4 | 5 | @ObjectType() 6 | export class PaginatedOrganization extends Paginate( 7 | IOrganization, 8 | 'organization' 9 | ) {} 10 | -------------------------------------------------------------------------------- /src/core/pagination/paginated.user.ts: -------------------------------------------------------------------------------- 1 | import { ObjectType } from '@nestjs/graphql'; 2 | import { IUser } from '@src/domain/community/user/user.interface'; 3 | import { Paginate } from './paginated.type'; 4 | 5 | @ObjectType() 6 | export class PaginatedUsers extends Paginate(IUser, 'users') {} 7 | -------------------------------------------------------------------------------- /src/core/validation/handlers/base/handler.interface.ts: -------------------------------------------------------------------------------- 1 | import { ValidationError } from 'class-validator'; 2 | 3 | export interface Handler { 4 | setNext(handler: Handler): Handler; 5 | // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type 6 | handle(value: any, metatype: Function): Promise; 7 | } 8 | -------------------------------------------------------------------------------- /src/core/validation/handlers/base/index.ts: -------------------------------------------------------------------------------- 1 | export * from './abstract.handler'; 2 | export * from './base.handler'; 3 | export * from './handler.interface'; 4 | -------------------------------------------------------------------------------- /src/core/validation/handlers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base'; 2 | -------------------------------------------------------------------------------- /src/core/validation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './handlers'; 2 | export * from './subdomain.regex'; 3 | -------------------------------------------------------------------------------- /src/core/validation/subdomain.regex.ts: -------------------------------------------------------------------------------- 1 | // https://www.rfc-editor.org/rfc/rfc1034#section-3.5 2 | export const SUBDOMAIN_PATTERN = '[a-z][a-z0-9\\-]{0,61}[a-z0-9]'; 3 | export const DOMAIN_PATTERN = '[a-zA-Z0-9\\-_]+'; 4 | export const SUBDOMAIN_REGEX = new RegExp(`^${SUBDOMAIN_PATTERN}$`); 5 | -------------------------------------------------------------------------------- /src/domain/access/application/dto/application.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { CreateNVPInput } from '@domain/common/nvp'; 2 | export class CreateApplicationInput { 3 | userID!: string; 4 | 5 | roleSetID!: string; 6 | 7 | questions!: CreateNVPInput[]; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/access/application/dto/application.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteApplicationInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/access/application/index.ts: -------------------------------------------------------------------------------- 1 | export * from './application.entity'; 2 | export * from './application.interface'; 3 | export * from './dto/application.dto.create'; 4 | export * from './dto/application.dto.delete'; 5 | export * from './dto/application.dto.event'; 6 | -------------------------------------------------------------------------------- /src/domain/access/invitation.platform/dto/platform.invitation.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeletePlatformInvitationInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/access/invitation.platform/index.ts: -------------------------------------------------------------------------------- 1 | export * from './platform.invitation.entity'; 2 | export * from './platform.invitation.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/access/invitation/dto/invitation.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { RoleName } from '@common/enums/role.name'; 2 | 3 | export class CreateInvitationInput { 4 | invitedContributorID!: string; 5 | 6 | welcomeMessage?: string; 7 | 8 | createdBy!: string; 9 | 10 | roleSetID!: string; 11 | 12 | invitedToParent!: boolean; 13 | 14 | extraRole?: RoleName; 15 | } 16 | -------------------------------------------------------------------------------- /src/domain/access/invitation/dto/invitation.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteInvitationInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/access/invitation/index.ts: -------------------------------------------------------------------------------- 1 | export * from './invitation.entity'; 2 | export * from './invitation.interface'; 3 | export * from './dto/invitation.dto.create'; 4 | export * from './dto/invitation.dto.delete'; 5 | export * from './dto/invitation.dto.event'; 6 | -------------------------------------------------------------------------------- /src/domain/access/role-set/index.ts: -------------------------------------------------------------------------------- 1 | export * from './role.set.entity'; 2 | export * from './role.set.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/access/role-set/role.set.service.cache.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { RoleSetCacheService } from './role.set.service.cache'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [RoleSetCacheService], 7 | exports: [RoleSetCacheService], 8 | }) 9 | export class RoleSetCacheModule {} 10 | -------------------------------------------------------------------------------- /src/domain/access/role-set/types/agent.role.key.ts: -------------------------------------------------------------------------------- 1 | import { AgentInfo } from '@core/authentication.agent.info/agent.info'; 2 | import { IRoleSet } from '../role.set.interface'; 3 | 4 | export type AgentRoleKey = { 5 | agentInfo: AgentInfo; 6 | roleSet: IRoleSet; 7 | }; 8 | -------------------------------------------------------------------------------- /src/domain/access/role-set/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agent.role.key'; 2 | export * from './roleset.community.membership.status'; 3 | -------------------------------------------------------------------------------- /src/domain/access/role-set/types/roleset.community.membership.status.ts: -------------------------------------------------------------------------------- 1 | import { CommunityMembershipStatus } from '@common/enums/community.membership.status'; 2 | 3 | export type RoleSetCommunityMembershipStatus = { 4 | roleSetId: string; 5 | membershipStatus: CommunityMembershipStatus; 6 | }; 7 | -------------------------------------------------------------------------------- /src/domain/access/role/contributor.role.policy.ts: -------------------------------------------------------------------------------- 1 | import { IContributorRolePolicy } from './contributor.role.policy.interface'; 2 | 3 | export class ContributorRolePolicy implements IContributorRolePolicy { 4 | minimum: number; 5 | maximum: number; 6 | 7 | constructor() { 8 | this.minimum = -1; 9 | this.maximum = -1; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/activity-feed/activity.feed.interface.ts: -------------------------------------------------------------------------------- 1 | import { ObjectType } from '@nestjs/graphql'; 2 | import { Paginate } from '@core/pagination/paginated.type'; 3 | import { IActivityLogEntry } from '@services/api/activity-log/dto/activity.log.entry.interface'; 4 | 5 | @ObjectType() 6 | export class ActivityFeed extends Paginate(IActivityLogEntry, 'activityFeed') {} 7 | -------------------------------------------------------------------------------- /src/domain/activity-feed/activity.feed.roles.enum.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum ActivityFeedRoles { 4 | MEMBER = 'member', 5 | ADMIN = 'admin', 6 | LEAD = 'lead', 7 | } 8 | 9 | registerEnumType(ActivityFeedRoles, { 10 | name: 'ActivityFeedRoles', 11 | }); 12 | -------------------------------------------------------------------------------- /src/domain/activity-feed/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity.feed.module'; 2 | -------------------------------------------------------------------------------- /src/domain/agent/agent/dto/agent.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { AgentType } from '@common/enums/agent.type'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class CreateAgentInput { 6 | type!: AgentType; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/agent/agent/dto/agent.dto.interaction.verified.credential.request.jolocom.ts: -------------------------------------------------------------------------------- 1 | import { IAgent } from '../agent.interface'; 2 | 3 | export class AgentInteractionVerifiedCredentialRequestJolocom { 4 | nonce!: string; 5 | 6 | interactionId!: string; 7 | 8 | agent!: IAgent; 9 | } 10 | -------------------------------------------------------------------------------- /src/domain/agent/agent/dto/agent.dto.interaction.verified.credential.request.sovrhd.ts: -------------------------------------------------------------------------------- 1 | import { IAgent } from '../agent.interface'; 2 | 3 | export class AgentInteractionVerifiedCredentialRequestSovrhd { 4 | nonce!: string; 5 | 6 | interactionId!: string; 7 | sovrhdSessionId!: string; 8 | credentialType!: string; 9 | 10 | agent!: IAgent; 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/agent/agent/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agent.entity'; 2 | export * from './agent.interface'; 3 | export * from './dto/agent.dto.create'; 4 | -------------------------------------------------------------------------------- /src/domain/agent/credential/credential.definition.ts: -------------------------------------------------------------------------------- 1 | import { ICredentialDefinition } from './credential.definition.interface'; 2 | export class CredentialDefinition implements ICredentialDefinition { 3 | type!: string; 4 | resourceID!: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/domain/agent/credential/index.ts: -------------------------------------------------------------------------------- 1 | export * from './credential.entity'; 2 | export * from './credential.interface'; 3 | export * from './dto/credential.dto.create'; 4 | export * from './dto/credentials.dto.search'; 5 | -------------------------------------------------------------------------------- /src/domain/agent/index.ts: -------------------------------------------------------------------------------- 1 | export * from './agent'; 2 | export * from './credential'; 3 | -------------------------------------------------------------------------------- /src/domain/agent/verified-credential/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/verified.credential.dto.result'; 2 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout-contribution-defaults/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './callout.contribution.defaults.dto.update'; 2 | export * from './callout.contribution.defaults.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout-contribution-policy/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './callout.contribution.policy.dto.update'; 2 | export * from './callout.contribution.policy.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout-contribution/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './callout.contribution.dto.create'; 2 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout-framing/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './callout.framing.dto.update'; 2 | export * from './callout.framing.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout/dto/callout.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteCalloutInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/callout/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './callout.dto.create'; 2 | export * from './callout.dto.update.entity'; 3 | export * from './callout.dto.event.post.created'; 4 | export * from './callout.dto.delete'; 5 | export * from './callout.post.created.payload'; 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/collaboration/dto/collaboration.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteCollaborationInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/collaboration/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collaboration.dto.delete'; 2 | -------------------------------------------------------------------------------- /src/domain/collaboration/collaboration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './collaboration.entity'; 2 | export * from './collaboration.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/innovation-flow-states/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/innovation.flow.state.dto.update'; 2 | export * from './dto/innovation.flow.state.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/innovation-flow/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './innovation.flow.dto.update'; 2 | export * from './innovation.flow.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/collaboration/link/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './link.dto.update'; 2 | export * from './link.dto.create'; 3 | export * from './link.dto.delete'; 4 | -------------------------------------------------------------------------------- /src/domain/collaboration/link/dto/link.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { InputType } from '@nestjs/graphql'; 2 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 3 | 4 | @InputType() 5 | export class DeleteLinkInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/post/dto/post.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeletePostInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/post/dto/post.dto.update.ts: -------------------------------------------------------------------------------- 1 | import { UpdateNameableInput } from '@domain/common/entity/nameable-entity/dto/nameable.dto.update'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class UpdatePostInput extends UpdateNameableInput {} 6 | -------------------------------------------------------------------------------- /src/domain/collaboration/post/index.ts: -------------------------------------------------------------------------------- 1 | export * from './post.entity'; 2 | export * from './post.interface'; 3 | export * from './dto/post.dto.update'; 4 | export * from './dto/post.dto.delete'; 5 | -------------------------------------------------------------------------------- /src/domain/common/authorization-policy/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorization.policy.entity'; 2 | export * from './authorization.policy.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/common/classification/classification.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ITagset } from '@domain/common/tagset/tagset.interface'; 3 | import { ObjectType } from '@nestjs/graphql'; 4 | @ObjectType('Classification') 5 | export abstract class IClassification extends IAuthorizable { 6 | tagsets?: ITagset[]; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/common/entity/authorizable-entity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorizable.entity'; 2 | export * from './authorizable.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/common/entity/base-entity/dto/base.alkemio.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { InputType, Field } from '@nestjs/graphql'; 2 | import { UUID } from '@domain/common/scalars/scalar.uuid'; 3 | 4 | @InputType() 5 | export class DeleteBaseAlkemioInput { 6 | @Field(() => UUID, { nullable: false }) 7 | ID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/common/entity/base-entity/dto/base.alkemio.dto.update.ts: -------------------------------------------------------------------------------- 1 | import { InputType, Field } from '@nestjs/graphql'; 2 | import { UUID } from '@domain/common/scalars/scalar.uuid'; 3 | 4 | @InputType() 5 | export class UpdateBaseAlkemioInput { 6 | @Field(() => UUID, { nullable: false }) 7 | ID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/common/entity/base-entity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/base.alkemio.dto.update'; 2 | export * from './dto/base.alkemio.dto.delete'; 3 | export * from './base.alkemio.entity'; 4 | export * from './base.alkemio.interface'; 5 | -------------------------------------------------------------------------------- /src/domain/common/entity/nameable-entity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/nameable.dto.update'; 2 | export * from './dto/nameable.dto.create'; 3 | export * from './nameable.entity'; 4 | export * from './nameable.interface'; 5 | -------------------------------------------------------------------------------- /src/domain/common/form/dto/form.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { CreateFormQuestionInput } from './form.question.dto.create'; 2 | 3 | export class CreateFormInput { 4 | description!: string; 5 | 6 | questions!: CreateFormQuestionInput[]; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/common/form/dto/form.question.dto.create.ts: -------------------------------------------------------------------------------- 1 | export class CreateFormQuestionInput { 2 | question!: string; 3 | 4 | explanation!: string; 5 | 6 | sortOrder!: number; 7 | 8 | maxLength!: number; 9 | 10 | required!: boolean; 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/common/interfaces/index.ts: -------------------------------------------------------------------------------- 1 | export * from './groupable.interface'; 2 | -------------------------------------------------------------------------------- /src/domain/common/knowledge-base/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './knowledge.base.dto.update'; 2 | export * from './knowledge.base.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/common/license/dto/license.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { LicenseType } from '@common/enums/license.type'; 2 | import { CreateLicenseEntitlementInput } from '@domain/common/license-entitlement/dto/license.entitlement.dto.create'; 3 | 4 | export class CreateLicenseInput { 5 | type!: LicenseType; 6 | 7 | entitlements!: CreateLicenseEntitlementInput[]; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/common/lifecycle/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/lifecycle.dto.event'; 2 | export * from './lifecycle.interface'; 3 | export * from './lifecycle.entity'; 4 | -------------------------------------------------------------------------------- /src/domain/common/lifecycle/lifecycle.fields.interface.ts: -------------------------------------------------------------------------------- 1 | export interface ILifecycleFields { 2 | state(parent: T): string; 3 | 4 | nextEvents(parent: T): string[]; 5 | 6 | isFinalized(parent: T): boolean; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/common/lifecycle/lifecycle.interface.ts: -------------------------------------------------------------------------------- 1 | import { IBaseAlkemio } from '@domain/common/entity/base-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | 4 | @ObjectType('Lifecycle') 5 | export abstract class ILifecycle extends IBaseAlkemio { 6 | machineState?: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/common/lifecycle/types/lifecycle.event.ts: -------------------------------------------------------------------------------- 1 | import { AgentInfo } from '@core/authentication.agent.info/agent.info'; 2 | import { AuthorizationPolicy } from '@domain/common/authorization-policy/authorization.policy.entity'; 3 | 4 | export type LifecycleEvent = { 5 | parentID: string; 6 | agentInfo: AgentInfo; 7 | authorization: AuthorizationPolicy; 8 | }; 9 | -------------------------------------------------------------------------------- /src/domain/common/location/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './location.dto.create'; 2 | export * from './location.dto.update'; 3 | -------------------------------------------------------------------------------- /src/domain/common/location/index.ts: -------------------------------------------------------------------------------- 1 | export * from './location.entity'; 2 | export * from './location.interface'; 3 | export * from './location.service'; 4 | export * from './location.module'; 5 | -------------------------------------------------------------------------------- /src/domain/common/nvp/index.ts: -------------------------------------------------------------------------------- 1 | export * from './nvp.entity'; 2 | export * from './nvp.factory'; 3 | export * from './nvp.dto.create'; 4 | export * from './nvp.interface'; 5 | -------------------------------------------------------------------------------- /src/domain/common/preference-set/index.ts: -------------------------------------------------------------------------------- 1 | export * from './preference.set.entity'; 2 | export * from './preference.set.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/common/preference-set/preference.set.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { IPreference } from '../preference/preference.interface'; 3 | 4 | export abstract class IPreferenceSet extends IAuthorizable { 5 | preferences?: IPreference[]; 6 | } 7 | -------------------------------------------------------------------------------- /src/domain/common/preference/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './preference-definition.dto.create'; 2 | export * from './preference.dto.update'; 3 | -------------------------------------------------------------------------------- /src/domain/common/preference/index.ts: -------------------------------------------------------------------------------- 1 | export * from './preference.definition.entity'; 2 | export * from './preference.definition.interface'; 3 | export * from './preference.entity'; 4 | export * from './preference.interface'; 5 | export * from './preference.service'; 6 | export * from './preference.module'; 7 | -------------------------------------------------------------------------------- /src/domain/common/profile/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile.dto.create'; 2 | export * from './profile.dto.update'; 3 | export * from './profile.dto.upload.avatar'; 4 | export * from './profile.dto.create.tagset'; 5 | -------------------------------------------------------------------------------- /src/domain/common/profile/dto/profile.dto.upload.avatar.ts: -------------------------------------------------------------------------------- 1 | import { InputType, Field } from '@nestjs/graphql'; 2 | 3 | @InputType() 4 | export class UploadProfileAvatarInput { 5 | @Field({ nullable: false }) 6 | profileID!: string; 7 | 8 | @Field({ nullable: false }) 9 | file!: string; 10 | } 11 | -------------------------------------------------------------------------------- /src/domain/common/profile/index.ts: -------------------------------------------------------------------------------- 1 | export * from './profile.entity'; 2 | export * from './profile.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/common/query-args/ids.query.args.ts: -------------------------------------------------------------------------------- 1 | import { ArgsType, Field } from '@nestjs/graphql'; 2 | import { UUID } from '../scalars'; 3 | 4 | @ArgsType() 5 | export class IDsQueryArgs { 6 | @Field(() => [UUID], { 7 | description: 'The IDs of the entities to return', 8 | nullable: true, 9 | }) 10 | IDs?: string[]; 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/common/question/question.interface.ts: -------------------------------------------------------------------------------- 1 | import { ObjectType } from '@nestjs/graphql'; 2 | import { INVP } from '../nvp/nvp.interface'; 3 | 4 | @ObjectType('Question') 5 | export class IQuestion extends INVP {} 6 | -------------------------------------------------------------------------------- /src/domain/common/reference/dto/reference.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteReferenceInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/common/reference/index.ts: -------------------------------------------------------------------------------- 1 | export * from './reference.entity'; 2 | export * from './reference.interface'; 3 | export * from './dto/reference.dto.create'; 4 | export * from './dto/reference.dto.update'; 5 | export * from './dto/reference.dto.delete'; 6 | -------------------------------------------------------------------------------- /src/domain/common/scalars/index.ts: -------------------------------------------------------------------------------- 1 | export * from './scalar.nameid'; 2 | export * from './scalar.did'; 3 | export * from './scalar.uuid'; 4 | export * from './scalar.messageid'; 5 | export * from './scalar.emoji'; 6 | export * from './scalar.search.cursor'; 7 | -------------------------------------------------------------------------------- /src/domain/common/tagset-template-set/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tagset.template.set.entity'; 2 | export * from './tagset.template.set.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/common/tagset-template-set/tagset.template.set.interface.ts: -------------------------------------------------------------------------------- 1 | import { ITagsetTemplate } from '../tagset-template/tagset.template.interface'; 2 | import { IBaseAlkemio } from '../entity/base-entity'; 3 | 4 | export abstract class ITagsetTemplateSet extends IBaseAlkemio { 5 | tagsetTemplates!: ITagsetTemplate[]; 6 | } 7 | -------------------------------------------------------------------------------- /src/domain/common/tagset-template/dto/tagset.template.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { TagsetType } from '@common/enums/tagset.type'; 2 | 3 | export class CreateTagsetTemplateInput { 4 | name!: string; 5 | 6 | type!: TagsetType; 7 | 8 | allowedValues!: string[]; 9 | 10 | defaultSelectedValue?: string; 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/common/tagset-template/dto/tagset.template.dto.update.ts: -------------------------------------------------------------------------------- 1 | export class UpdateTagsetTemplateDefinitionInput { 2 | allowedValues!: string[]; 3 | 4 | defaultSelectedValue?: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/domain/common/tagset-template/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tagset.template.entity'; 2 | export * from './tagset.template.interface'; 3 | export * from './dto/tagset.template.dto.create'; 4 | export * from './dto/tagset.template.dto.update'; 5 | -------------------------------------------------------------------------------- /src/domain/common/tagset/dto/tagset.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteTagsetInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/common/tagset/index.ts: -------------------------------------------------------------------------------- 1 | export * from './tagset.entity'; 2 | export * from './tagset.interface'; 3 | export * from './dto/tagset.dto.create'; 4 | export * from './dto/tagset.dto.update'; 5 | export * from './dto/tagset.dto.delete'; 6 | -------------------------------------------------------------------------------- /src/domain/common/visual/dto/visual.dto.create.ts: -------------------------------------------------------------------------------- 1 | export class CreateVisualInput { 2 | name!: string; 3 | 4 | minWidth!: number; 5 | 6 | maxWidth!: number; 7 | 8 | minHeight!: number; 9 | 10 | maxHeight!: number; 11 | 12 | aspectRatio!: number; 13 | } 14 | -------------------------------------------------------------------------------- /src/domain/common/visual/dto/visual.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteVisualInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/common/visual/index.ts: -------------------------------------------------------------------------------- 1 | export * from './visual.entity'; 2 | export * from './visual.interface'; 3 | export * from './dto/visual.dto.create'; 4 | export * from './dto/visual.dto.update'; 5 | -------------------------------------------------------------------------------- /src/domain/common/whiteboard/dto/whiteboard.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteWhiteboardInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/common/whiteboard/empty.whiteboard.content.ts: -------------------------------------------------------------------------------- 1 | export const EMPTY_WHITEBOARD_CONTENT = 2 | '{\n "type": "excalidraw",\n "version": 2,\n "source": "",\n "elements": [],\n "appState": {\n "gridSize": 20,\n "viewBackgroundColor": "#ffffff"\n },\n "files": {}\n}'; 3 | -------------------------------------------------------------------------------- /src/domain/common/whiteboard/index.ts: -------------------------------------------------------------------------------- 1 | export * from './whiteboard.service'; 2 | export * from './whiteboard.service.authorization'; 3 | export * from './whiteboard.module'; 4 | -------------------------------------------------------------------------------- /src/domain/common/whiteboard/types.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/whiteboard.dto.create'; 2 | export * from './dto/whiteboard.dto.update'; 3 | export * from './dto/whiteboard.dto.update.entity'; 4 | 5 | export * from './whiteboard.entity'; 6 | export * from './whiteboard.interface'; 7 | -------------------------------------------------------------------------------- /src/domain/communication/communication/communication.resolver.fields.ts: -------------------------------------------------------------------------------- 1 | import { Resolver } from '@nestjs/graphql'; 2 | import { ICommunication } from './communication.interface'; 3 | 4 | @Resolver(() => ICommunication) 5 | export class CommunicationResolverFields { 6 | constructor() {} 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/communication/communication/index.ts: -------------------------------------------------------------------------------- 1 | export * from './communication.entity'; 2 | export * from './communication.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/communication/message.guidance.question.result/message.guidance.question.result.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | 3 | @Module({ 4 | imports: [], 5 | providers: [], 6 | exports: [], 7 | }) 8 | export class MessageGuidanceQuestionResultModule {} 9 | -------------------------------------------------------------------------------- /src/domain/communication/message.reaction/index.ts: -------------------------------------------------------------------------------- 1 | export * from '../communication/dto/communication.dto.event.message.received'; 2 | -------------------------------------------------------------------------------- /src/domain/communication/message/index.ts: -------------------------------------------------------------------------------- 1 | export * from '../communication/dto/communication.dto.event.message.received'; 2 | -------------------------------------------------------------------------------- /src/domain/communication/messaging/mention.interface.ts: -------------------------------------------------------------------------------- 1 | export enum MentionedEntityType { 2 | USER = 'user', 3 | ORGANIZATION = 'organization', 4 | VIRTUAL_CONTRIBUTOR = 'vc', 5 | } 6 | export abstract class Mention { 7 | id!: string; 8 | type!: MentionedEntityType; 9 | } 10 | -------------------------------------------------------------------------------- /src/domain/communication/room/dto/subscription/index.ts: -------------------------------------------------------------------------------- 1 | export * from './room.event.subscription.result'; 2 | export * from './room.event.subscription.args'; 3 | -------------------------------------------------------------------------------- /src/domain/communication/room/index.ts: -------------------------------------------------------------------------------- 1 | export * from './room.entity'; 2 | -------------------------------------------------------------------------------- /src/domain/communication/vc-interaction/dto/vc.interaction.dto.create.ts: -------------------------------------------------------------------------------- 1 | export class CreateVcInteractionInput { 2 | roomID!: string; 3 | 4 | threadID!: string; 5 | 6 | virtualContributorID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/community/ai-persona/dto/ai.persona.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteAiPersonaInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/ai-persona/dto/ai.persona.dto.update.ts: -------------------------------------------------------------------------------- 1 | import { UpdateBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class UpdateAiPersonaInput extends UpdateBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/ai-persona/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ai.persona.dto.create'; 2 | export * from './ai.persona.dto.update'; 3 | export * from './ai.persona.dto.delete'; 4 | -------------------------------------------------------------------------------- /src/domain/community/ai-persona/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ai.persona.entity'; 2 | export * from './ai.persona.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/community/community-guidelines/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/community.guidelines.dto.update'; 2 | export * from './dto/community.guidelines.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/community/community/dto/community.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { CreateRoleSetInput } from '@domain/access/role-set/dto/role.set.dto.create'; 2 | 3 | export class CreateCommunityInput { 4 | name!: string; 5 | 6 | roleSetData!: CreateRoleSetInput; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/community/community/index.ts: -------------------------------------------------------------------------------- 1 | export * from './community.entity'; 2 | export * from './community.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/community/contributor/dto/contributor.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { CreateNameableInput } from '@domain/common/entity/nameable-entity/dto/nameable.dto.create'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class CreateContributorInput extends CreateNameableInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/contributor/dto/contributor.dto.update.ts: -------------------------------------------------------------------------------- 1 | import { InputType } from '@nestjs/graphql'; 2 | import { UpdateNameableInput } from '@domain/common/entity/nameable-entity/dto/nameable.dto.update'; 3 | 4 | @InputType() 5 | export class UpdateContributorInput extends UpdateNameableInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/contributor/index.ts: -------------------------------------------------------------------------------- 1 | export * from './contributor.base.entity'; 2 | export * from './contributor.base.interface'; 3 | export * from './dto/contributor.dto.create'; 4 | export * from './dto/contributor.dto.update'; 5 | -------------------------------------------------------------------------------- /src/domain/community/organization-verification/dto/organization.verification.dto.create.ts: -------------------------------------------------------------------------------- 1 | export class CreateOrganizationVerificationInput { 2 | organizationID!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/domain/community/organization.settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/organization.settings.dto.update'; 2 | -------------------------------------------------------------------------------- /src/domain/community/organization/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './organization.dto.create'; 2 | export * from './organization.dto.update'; 3 | export * from './organization.dto.delete'; 4 | -------------------------------------------------------------------------------- /src/domain/community/organization/dto/organization.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteOrganizationInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/organization/index.ts: -------------------------------------------------------------------------------- 1 | export * from './organization.entity'; 2 | export * from './organization.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/community/user-group/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user-group.dto.create'; 2 | export * from './user-group.dto.update'; 3 | export * from './user-group.dto.delete'; 4 | export * from './user-group.dto.assign.member'; 5 | export * from './user-group.dto.remove.member'; 6 | -------------------------------------------------------------------------------- /src/domain/community/user-group/dto/user-group.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteUserGroupInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/community/user-group/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user-group.entity'; 2 | export * from './user-group.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/community/user-lookup/user.lookup.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { UserLookupService } from './user.lookup.service'; 3 | 4 | @Module({ 5 | imports: [], // Important this is empty! 6 | providers: [UserLookupService], 7 | exports: [UserLookupService], 8 | }) 9 | export class UserLookupModule {} 10 | -------------------------------------------------------------------------------- /src/domain/community/user.settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/user.settings.dto.update'; 2 | -------------------------------------------------------------------------------- /src/domain/community/user.settings/user.settings.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { UserSettingsService } from './user.settings.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [UserSettingsService], 7 | exports: [UserSettingsService], 8 | }) 9 | export class UserSettingsModule {} 10 | -------------------------------------------------------------------------------- /src/domain/community/user/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.dto.create'; 2 | export * from './user.dto.update'; 3 | export * from './user.dto.delete'; 4 | export * from './user.dto.communication.message.send'; 5 | -------------------------------------------------------------------------------- /src/domain/community/user/dto/user.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteUserInput extends DeleteBaseAlkemioInput { 6 | @Field(() => Boolean, { nullable: true, defaultValue: true }) 7 | deleteIdentity?: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/community/user/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto'; 2 | -------------------------------------------------------------------------------- /src/domain/community/virtual-contributor-settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/virtual.contributor.settings.dto.update'; 2 | -------------------------------------------------------------------------------- /src/domain/community/virtual-contributor/dto/virtual.contributor.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteVirtualContributorInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/in-app-notification-reader/field-resolvers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './in.app.notification.user.mentioned.resolver.fields'; 2 | export * from './in.app.notification.callout.published.resolver.fields'; 3 | export * from './in.app.notification.community.new.member.resolver.fields'; 4 | -------------------------------------------------------------------------------- /src/domain/in-app-notification-receiver/index.ts: -------------------------------------------------------------------------------- 1 | export * from './in.app.notification.receiver'; 2 | export * from './in.app.notification.receiver.module'; 3 | export * from './in.app.notification.receiver.controller'; 4 | -------------------------------------------------------------------------------- /src/domain/in-app-notification/in.app.notification.state.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum InAppNotificationState { 4 | READ = 'read', 5 | UNREAD = 'unread', 6 | ARCHIVED = 'archived', 7 | } 8 | 9 | registerEnumType(InAppNotificationState, { 10 | name: 'InAppNotificationState', 11 | }); 12 | -------------------------------------------------------------------------------- /src/domain/innovation-hub/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './innovation.hub.args.query'; 2 | export * from './innovation.hub.dto.create'; 3 | export * from './innovation.hub.dto.delete'; 4 | export * from './innovation.hub.dto.update'; 5 | -------------------------------------------------------------------------------- /src/domain/innovation-hub/dto/innovation.hub.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteInnovationHubInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/innovation-hub/innovation.hub.type.enum.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum InnovationHubType { 4 | VISIBILITY = 'visibility', 5 | LIST = 'list', 6 | } 7 | 8 | registerEnumType(InnovationHubType, { 9 | name: 'InnovationHubType', 10 | }); 11 | -------------------------------------------------------------------------------- /src/domain/innovation-hub/types.ts: -------------------------------------------------------------------------------- 1 | export * from './innovation.hub.entity'; 2 | export * from './innovation.hub.interface'; 3 | export * from './innovation.hub.type.enum'; 4 | -------------------------------------------------------------------------------- /src/domain/space/account.lookup/account.lookup.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AccountLookupService } from './account.lookup.service'; 3 | 4 | @Module({ 5 | imports: [], // Important this is empty! 6 | providers: [AccountLookupService], 7 | exports: [AccountLookupService], 8 | }) 9 | export class AccountLookupModule {} 10 | -------------------------------------------------------------------------------- /src/domain/space/index.ts: -------------------------------------------------------------------------------- 1 | export * from './space'; 2 | -------------------------------------------------------------------------------- /src/domain/space/space.about.membership/dto/space.about.membership.ts: -------------------------------------------------------------------------------- 1 | import { IRoleSet } from '@domain/access/role-set'; 2 | import { ICommunity } from '@domain/community/community/community.interface'; 3 | import { ObjectType } from '@nestjs/graphql'; 4 | 5 | @ObjectType() 6 | export class SpaceAboutMembership { 7 | roleSet!: IRoleSet; 8 | community!: ICommunity; 9 | } 10 | -------------------------------------------------------------------------------- /src/domain/space/space.about.membership/space.about.membership.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | 3 | @Injectable() 4 | export class SpaceAboutMembershipService { 5 | constructor() {} 6 | } 7 | -------------------------------------------------------------------------------- /src/domain/space/space.about/index.ts: -------------------------------------------------------------------------------- 1 | export * from './space.about.entity'; 2 | export * from './space.about.interface'; 3 | export * from './dto/space.about.dto.create'; 4 | -------------------------------------------------------------------------------- /src/domain/space/space.settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/space.settings.dto.update'; 2 | export * from './dto/space.settings.dto.create'; 3 | -------------------------------------------------------------------------------- /src/domain/space/space.settings/space.settings.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { SpaceSettingsService } from './space.settings.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [SpaceSettingsService], 7 | exports: [SpaceSettingsService], 8 | }) 9 | export class SpaceSettingsModule {} 10 | -------------------------------------------------------------------------------- /src/domain/space/space/dto/space.dto.create.subspace.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | import { CreateSpaceInput } from './space.dto.create'; 4 | 5 | @InputType() 6 | export class CreateSubspaceInput extends CreateSpaceInput { 7 | @Field(() => UUID, { nullable: false }) 8 | spaceID!: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/domain/space/space/dto/space.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteSpaceInput { 6 | @Field(() => UUID, { nullable: false }) 7 | ID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/space/space/dto/space.subspace.created.args.ts: -------------------------------------------------------------------------------- 1 | import { ArgsType, Field } from '@nestjs/graphql'; 2 | import { UUID } from '@domain/common/scalars'; 3 | 4 | @ArgsType() 5 | export class SubspaceCreatedArgs { 6 | @Field(() => UUID, { 7 | description: 'The Space to receive the Subspaces from.', 8 | nullable: false, 9 | }) 10 | spaceID!: string; 11 | } 12 | -------------------------------------------------------------------------------- /src/domain/space/space/dto/space.subspace.created.payload.ts: -------------------------------------------------------------------------------- 1 | import { BaseSubscriptionPayload } from '@src/common/interfaces'; 2 | import { ISpace } from '../space.interface'; 3 | 4 | export interface SubspaceCreatedPayload extends BaseSubscriptionPayload { 5 | spaceID: string; 6 | subspace: ISpace; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/space/space/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/space.dto.update'; 2 | export * from './dto/space.dto.delete'; 3 | export * from './dto/space.dto.create'; 4 | export * from '../space.defaults/definitions/space.community.roles'; 5 | export * from '../space.defaults/definitions/space.community.role.application.form'; 6 | -------------------------------------------------------------------------------- /src/domain/storage/document/dto/document.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteDocumentInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/storage/document/index.ts: -------------------------------------------------------------------------------- 1 | export * from './document.entity'; 2 | export * from './document.interface'; 3 | export * from './dto/document.dto.update'; 4 | export * from './dto/document.dto.delete'; 5 | -------------------------------------------------------------------------------- /src/domain/storage/storage-bucket/dto/storage.bucket.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteStorageBuckeetInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/storage/storage-bucket/dto/storage.bucket.dto.upload.file.on.link.ts: -------------------------------------------------------------------------------- 1 | import { InputType, Field } from '@nestjs/graphql'; 2 | 3 | @InputType() 4 | export class StorageBucketUploadFileOnLinkInput { 5 | @Field({ nullable: false }) 6 | linkID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/storage/storage-bucket/dto/storage.bucket.dto.upload.file.on.reference.ts: -------------------------------------------------------------------------------- 1 | import { InputType, Field } from '@nestjs/graphql'; 2 | 3 | @InputType() 4 | export class StorageBucketUploadFileOnReferenceInput { 5 | @Field({ nullable: false }) 6 | referenceID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/domain/task/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './task.interface'; 2 | export * from './task.status.enum'; 3 | -------------------------------------------------------------------------------- /src/domain/task/dto/task.status.enum.ts: -------------------------------------------------------------------------------- 1 | import { registerEnumType } from '@nestjs/graphql'; 2 | 3 | export enum TaskStatus { 4 | IN_PROGRESS = 'in-progress', 5 | COMPLETED = 'completed', 6 | ERRORED = 'errored', 7 | } 8 | 9 | registerEnumType(TaskStatus, { 10 | name: 'TaskStatus', 11 | description: 'The current status of the task', 12 | }); 13 | -------------------------------------------------------------------------------- /src/domain/task/index.ts: -------------------------------------------------------------------------------- 1 | export * from './task.resolver.queries'; 2 | export * from './task.resolver.fields'; 3 | export * from './task.module'; 4 | -------------------------------------------------------------------------------- /src/domain/template/template/dto/template.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity/dto/base.alkemio.dto.delete'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteTemplateInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/template/templates-manager/dto/templates.manager.dto.create..ts: -------------------------------------------------------------------------------- 1 | import { CreateTemplateDefaultInput } from '@domain/template/template-default/dto/template.default.dto.create'; 2 | 3 | export class CreateTemplatesManagerInput { 4 | templateDefaultsData!: CreateTemplateDefaultInput[]; 5 | } 6 | -------------------------------------------------------------------------------- /src/domain/template/templates-manager/dto/templates.manager.dto.create.ts: -------------------------------------------------------------------------------- 1 | import { CreateTemplateDefaultInput } from '@domain/template/template-default/dto/template.default.dto.create'; 2 | 3 | export class CreateTemplatesManagerInput { 4 | templateDefaultsData!: CreateTemplateDefaultInput[]; 5 | } 6 | -------------------------------------------------------------------------------- /src/domain/template/templates-manager/index.ts: -------------------------------------------------------------------------------- 1 | export * from './templates.manager.entity'; 2 | export * from './templates.manager.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/template/templates-set/index.ts: -------------------------------------------------------------------------------- 1 | export * from './templates.set.entity'; 2 | export * from './templates.set.interface'; 3 | -------------------------------------------------------------------------------- /src/domain/template/templates-set/templates.set.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | import { ITemplate } from '../template/template.interface'; 4 | 5 | @ObjectType('TemplatesSet') 6 | export abstract class ITemplatesSet extends IAuthorizable { 7 | templates!: ITemplate[]; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/timeline/calendar/calendar.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | import { ICalendarEvent } from '../event/event.interface'; 4 | 5 | @ObjectType('Calendar') 6 | export abstract class ICalendar extends IAuthorizable { 7 | events?: ICalendarEvent[]; 8 | } 9 | -------------------------------------------------------------------------------- /src/domain/timeline/event/dto/event.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteCalendarEventInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/domain/timeline/event/index.ts: -------------------------------------------------------------------------------- 1 | export * from './event.entity'; 2 | export * from './event.interface'; 3 | export * from './dto/event.dto.update'; 4 | export * from './dto/event.dto.delete'; 5 | -------------------------------------------------------------------------------- /src/domain/timeline/timeline/timeline.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | import { ICalendar } from '../calendar/calendar.interface'; 4 | 5 | @ObjectType('Timeline') 6 | export abstract class ITimeline extends IAuthorizable { 7 | calendar?: ICalendar; 8 | } 9 | -------------------------------------------------------------------------------- /src/library/innovation-pack/dto/innovationPack.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteInnovationPackInput { 6 | @Field(() => UUID, { nullable: false }) 7 | ID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/library/innovation-pack/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/innovation.pack.dto.update'; 2 | export * from './dto/innovationPack.dto.delete'; 3 | export * from './dto/innovation.pack.dto.create'; 4 | -------------------------------------------------------------------------------- /src/library/library/dto/library.dto.create.innovation.pack.ts: -------------------------------------------------------------------------------- 1 | import { CreateInnovationPackInput } from '@library/innovation-pack/dto/innovation.pack.dto.create'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class CreateInnovationPackOnLibraryInput extends CreateInnovationPackInput {} 6 | -------------------------------------------------------------------------------- /src/library/library/library.entity.ts: -------------------------------------------------------------------------------- 1 | import { AuthorizableEntity } from '@domain/common/entity/authorizable-entity'; 2 | import { Entity } from 'typeorm'; 3 | import { ILibrary } from './library.interface'; 4 | @Entity() 5 | export class Library extends AuthorizableEntity implements ILibrary {} 6 | -------------------------------------------------------------------------------- /src/library/library/library.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | 4 | @ObjectType('Library') 5 | export abstract class ILibrary extends IAuthorizable {} 6 | -------------------------------------------------------------------------------- /src/migrations/1748613934555-spaceTemplate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/migrations/1748613934555-spaceTemplate.ts -------------------------------------------------------------------------------- /src/migrations/utils/alterColumnType.ts: -------------------------------------------------------------------------------- 1 | import { QueryRunner } from 'typeorm'; 2 | 3 | export const alterColumnType = async ( 4 | queryRunner: QueryRunner, 5 | tableName: string, 6 | columnName: string, 7 | columnType: string 8 | ) => { 9 | await queryRunner.query( 10 | `ALTER TABLE \`${tableName}\` MODIFY \`${columnName}\` ${columnType}` 11 | ); 12 | }; 13 | -------------------------------------------------------------------------------- /src/migrations/utils/callouts/update-to-link-callout.ts: -------------------------------------------------------------------------------- 1 | export const updateToLinkCallout = async (id: string) => { 2 | return id; 3 | }; 4 | -------------------------------------------------------------------------------- /src/migrations/utils/chunk.array.ts: -------------------------------------------------------------------------------- 1 | export const chunkArray = (array: T[], chunkSize: number): T[][] => { 2 | const result = []; 3 | for (let i = 0; i < array.length; i += chunkSize) { 4 | const chunk = array.slice(i, i + chunkSize); 5 | result.push(chunk); 6 | } 7 | return result; 8 | }; 9 | -------------------------------------------------------------------------------- /src/migrations/utils/escape-string.ts: -------------------------------------------------------------------------------- 1 | export const escapeString = (str: string) => { 2 | if (!str || str.length === 0) { 3 | return ''; 4 | } else { 5 | return str.replace(/'/g, `\\'`).replace(/"/g, `\\"`); 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /src/migrations/utils/get-query-runner.ts: -------------------------------------------------------------------------------- 1 | import datasource from '@config/migration.config'; 2 | 3 | export const getQueryRunner = async () => { 4 | const queryRunner = datasource.createQueryRunner(); 5 | await queryRunner.connect(); 6 | 7 | return queryRunner; 8 | }; 9 | -------------------------------------------------------------------------------- /src/migrations/utils/preferences/index.ts: -------------------------------------------------------------------------------- 1 | export * from './add-preferences'; 2 | export * from './add-preference-definitions'; 3 | export * from './add-preference-set'; 4 | export * from './remove-preferences'; 5 | -------------------------------------------------------------------------------- /src/platform/activity/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity.entity'; 2 | export * from './dto/activity.dto.create'; 3 | export * from './activity.interface'; 4 | -------------------------------------------------------------------------------- /src/platform/admin/authorization/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authorization.dto.credential.grant'; 2 | export * from './authorization.dto.credential.revoke'; 3 | export * from './authorization.dto.users.with.credential'; 4 | -------------------------------------------------------------------------------- /src/platform/admin/communication/dto/admin.communication.dto.ensure.access.input.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class CommunicationAdminEnsureAccessInput { 6 | @Field(() => UUID, { nullable: false }) 7 | communityID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/platform/admin/communication/dto/admin.communication.dto.membership.input.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class CommunicationAdminMembershipInput { 6 | @Field(() => UUID, { nullable: false }) 7 | communityID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/platform/admin/communication/dto/admin.communication.dto.remove.orphaned.room.ts: -------------------------------------------------------------------------------- 1 | import { Field, InputType } from '@nestjs/graphql'; 2 | 3 | @InputType() 4 | export class CommunicationAdminRemoveOrphanedRoomInput { 5 | @Field(() => String, { nullable: false }) 6 | roomID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/platform/admin/communication/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './admin.communication.dto.membership.input'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/config/apm/index.ts: -------------------------------------------------------------------------------- 1 | export * from './apm.config.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/config/authentication/authentication.config.entity.ts: -------------------------------------------------------------------------------- 1 | import { IAuthenticationConfig } from './authentication.config.interface'; 2 | export class AuthenticationConfig extends IAuthenticationConfig { 3 | enabled?: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /src/platform/configuration/config/authentication/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authentication.config.entity'; 2 | export * from './authentication.config.interface'; 3 | export * from './providers'; 4 | -------------------------------------------------------------------------------- /src/platform/configuration/config/authentication/providers/authentication.provider.config.interface.ts: -------------------------------------------------------------------------------- 1 | export interface IAuthenticationProviderConfig { 2 | name?: string; 3 | label?: string; 4 | icon?: string; 5 | enabled?: boolean; 6 | config?: any; 7 | } 8 | -------------------------------------------------------------------------------- /src/platform/configuration/config/authentication/providers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authentication.provider.config.entity'; 2 | export * from './authentication.provider.config.interface'; 3 | -------------------------------------------------------------------------------- /src/platform/configuration/config/authentication/providers/ory/ory.config.interface.ts: -------------------------------------------------------------------------------- 1 | export interface IOryConfig { 2 | issuer?: string; 3 | kratosPublicBaseURL?: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/platform/configuration/config/config.entity.ts: -------------------------------------------------------------------------------- 1 | import { IConfig } from './config.interface'; 2 | import { IPlatformLocations } from './locations'; 3 | export class Config extends IConfig { 4 | platform?: IPlatformLocations; 5 | } 6 | -------------------------------------------------------------------------------- /src/platform/configuration/config/config.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { KonfigService } from './config.service'; 3 | import { ConfigurationResolverFields } from './config.resolver.fields'; 4 | 5 | @Module({ 6 | providers: [KonfigService, ConfigurationResolverFields], 7 | exports: [KonfigService], 8 | }) 9 | export class KonfigModule {} 10 | -------------------------------------------------------------------------------- /src/platform/configuration/config/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config.entity'; 2 | export * from './config.interface'; 3 | export * from './config.service'; 4 | export * from './authentication'; 5 | -------------------------------------------------------------------------------- /src/platform/configuration/config/integrations/geo/geo.config.interface.ts: -------------------------------------------------------------------------------- 1 | import { Field, ObjectType } from '@nestjs/graphql'; 2 | 3 | @ObjectType('Geo') 4 | export abstract class IGeoConfig { 5 | @Field(() => String, { 6 | nullable: false, 7 | description: 'Endpoint where geo information is consumed from.', 8 | }) 9 | endpoint!: string; 10 | } 11 | -------------------------------------------------------------------------------- /src/platform/configuration/config/integrations/index.ts: -------------------------------------------------------------------------------- 1 | export * from './geo/geo.config.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/config/locations/index.ts: -------------------------------------------------------------------------------- 1 | export * from './platform.locations.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/config/sentry/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sentry.config.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/config/storage/file.storage.config.interface.ts: -------------------------------------------------------------------------------- 1 | import { Field, ObjectType } from '@nestjs/graphql'; 2 | 3 | @ObjectType('FileStorageConfig') 4 | export abstract class IFileStorageConfig { 5 | @Field(() => Number, { 6 | nullable: false, 7 | description: 'Max file size, in bytes.', 8 | }) 9 | maxFileSize!: number; 10 | } 11 | -------------------------------------------------------------------------------- /src/platform/configuration/config/storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './storage.config.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/configuration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './config'; 2 | -------------------------------------------------------------------------------- /src/platform/forum-discussion/dto/discussion.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteDiscussionInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/platform/forum/dto/forum.dto.event.message.received.ts: -------------------------------------------------------------------------------- 1 | import { IMessage } from '@domain/communication/message/message.interface'; 2 | 3 | export class ForumEventMessageReceived { 4 | roomId!: string; 5 | 6 | roomName!: string; 7 | 8 | message!: IMessage; 9 | 10 | forumID!: string; 11 | 12 | communityId!: string | undefined; 13 | } 14 | -------------------------------------------------------------------------------- /src/platform/forum/index.ts: -------------------------------------------------------------------------------- 1 | export * from './forum.entity'; 2 | export * from './forum.interface'; 3 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/license-plan/dto/license.plan.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteLicensePlanInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/license-plan/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/license.plan.dto.update'; 2 | export * from './dto/license.plan.dto.delete'; 3 | export * from './dto/license.plan.dto.create'; 4 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/license-plan/license.plan.resolver.fields.ts: -------------------------------------------------------------------------------- 1 | import { Resolver } from '@nestjs/graphql'; 2 | import { ILicensePlan } from './license.plan.interface'; 3 | 4 | @Resolver(() => ILicensePlan) 5 | export class LicensePlanResolverFields { 6 | constructor() {} 7 | } 8 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/license-policy/index.ts: -------------------------------------------------------------------------------- 1 | export * from './license.policy.entity'; 2 | export * from './license.policy.interface'; 3 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/license-policy/license.policy.interface.ts: -------------------------------------------------------------------------------- 1 | import { IAuthorizable } from '@domain/common/entity/authorizable-entity'; 2 | import { ObjectType } from '@nestjs/graphql'; 3 | 4 | @ObjectType('LicensePolicy') 5 | export abstract class ILicensePolicy extends IAuthorizable { 6 | // exposed via field resolver 7 | credentialRulesStr!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/platform/licensing/credential-based/licensing-credential-based-entitlements-engine/index.ts: -------------------------------------------------------------------------------- 1 | export * from './licensing.credential.based.policy.credential.rule.interface'; 2 | -------------------------------------------------------------------------------- /src/platform/metadata/index.ts: -------------------------------------------------------------------------------- 1 | export * from './metadata.service'; 2 | export * from './metadata.interface'; 3 | export * from './service'; 4 | -------------------------------------------------------------------------------- /src/platform/metadata/metadata.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { MetadataService } from './metadata.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [MetadataService], 7 | exports: [MetadataService], 8 | }) 9 | export class MetadataModule {} 10 | -------------------------------------------------------------------------------- /src/platform/metadata/service/index.ts: -------------------------------------------------------------------------------- 1 | export * from './service.metadata.entity'; 2 | export * from './service.metadata.interface'; 3 | -------------------------------------------------------------------------------- /src/platform/metadata/service/service.metadata.entity.ts: -------------------------------------------------------------------------------- 1 | import { IServiceMetadata } from './service.metadata.interface'; 2 | 3 | export class ServiceMetadata extends IServiceMetadata { 4 | name: string; 5 | 6 | constructor(name: string) { 7 | super(); 8 | this.name = name; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/platform/platform-settings/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/platform.settings.dto.update'; 2 | -------------------------------------------------------------------------------- /src/platform/platform-settings/platform.settings.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { PlatformSettingsService } from './platform.settings.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [PlatformSettingsService], 7 | exports: [PlatformSettingsService], 8 | }) 9 | export class PlatformSettingsModule {} 10 | -------------------------------------------------------------------------------- /src/services/adapters/activity-adapter/dto/activity.dto.input.base.ts: -------------------------------------------------------------------------------- 1 | export class ActivityInputBase { 2 | triggeredBy!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/activity-adapter/dto/activity.dto.input.callout.published.ts: -------------------------------------------------------------------------------- 1 | import { ICallout } from '@domain/collaboration/callout/callout.interface'; 2 | import { ActivityInputBase } from './activity.dto.input.base'; 3 | 4 | export class ActivityInputCalloutPublished extends ActivityInputBase { 5 | callout!: ICallout; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/activity-adapter/dto/activity.dto.input.callout.whiteboard.content.modified.ts: -------------------------------------------------------------------------------- 1 | import { ActivityInputBase } from './activity.dto.input.base'; 2 | 3 | export class ActivityInputCalloutWhiteboardContentModified extends ActivityInputBase { 4 | whiteboardId!: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/activity-adapter/dto/activity.dto.input.message.removed.ts: -------------------------------------------------------------------------------- 1 | import { ActivityInputBase } from './activity.dto.input.base'; 2 | 3 | export class ActivityInputMessageRemoved extends ActivityInputBase { 4 | messageID!: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/activity-adapter/dto/activity.dto.input.subspace.created.ts: -------------------------------------------------------------------------------- 1 | import { ActivityInputBase } from './activity.dto.input.base'; 2 | import { ISpace } from '@domain/space/space/space.interface'; 3 | 4 | export class ActivityInputSubspaceCreated extends ActivityInputBase { 5 | subspace!: ISpace; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/ai-server-adapter/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/services/adapters/ai-server-adapter/index.ts -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communication.dto.add.reaction.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationAddRectionToMessageInput { 2 | senderCommunicationsID!: string; 3 | 4 | emoji!: string; 5 | 6 | roomID!: string; 7 | 8 | messageID!: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communication.dto.message.delete.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationDeleteMessageInput { 2 | senderCommunicationsID!: string; 3 | 4 | messageId!: string; 5 | 6 | roomID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communication.dto.message.send.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationSendMessageInput { 2 | senderCommunicationsID!: string; 3 | 4 | message!: string; 5 | 6 | roomID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communication.dto.message.send.user.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationSendMessageUserInput { 2 | senderCommunicationsID!: string; 3 | 4 | receiverCommunicationsID!: string; 5 | 6 | message!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communication.dto.remove.reaction.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationRemoveRectionToMessageInput { 2 | senderCommunicationsID!: string; 3 | 4 | roomID!: string; 5 | 6 | reactionID!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/dto/communications.dto.message.reply.ts: -------------------------------------------------------------------------------- 1 | export class CommunicationSendMessageReplyInput { 2 | senderCommunicationsID!: string; 3 | 4 | message!: string; 5 | 6 | roomID!: string; 7 | 8 | threadID!: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/services/adapters/communication-adapter/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/services/adapters/communication-adapter/index.ts -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.base.ts: -------------------------------------------------------------------------------- 1 | export interface NotificationInputBase { 2 | triggeredBy: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.callout.published.ts: -------------------------------------------------------------------------------- 1 | import { ICallout } from '@domain/collaboration/callout/callout.interface'; 2 | import { NotificationInputBase } from './notification.dto.input.base'; 3 | 4 | export interface NotificationInputCalloutPublished 5 | extends NotificationInputBase { 6 | callout: ICallout; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.community.application.ts: -------------------------------------------------------------------------------- 1 | import { ICommunity } from '@domain/community/community/community.interface'; 2 | import { NotificationInputBase } from './notification.dto.input.base'; 3 | 4 | export interface NotificationInputCommunityApplication 5 | extends NotificationInputBase { 6 | community: ICommunity; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.community.leads.message.ts: -------------------------------------------------------------------------------- 1 | import { NotificationInputBase } from './notification.dto.input.base'; 2 | 3 | export interface NotificationInputCommunityLeadsMessage 4 | extends NotificationInputBase { 5 | message: string; 6 | communityID: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.discussion.created.ts: -------------------------------------------------------------------------------- 1 | import { IDiscussion } from '@platform/forum-discussion/discussion.interface'; 2 | import { NotificationInputBase } from './notification.dto.input.base'; 3 | 4 | export interface NotificationInputForumDiscussionCreated 5 | extends NotificationInputBase { 6 | discussion: IDiscussion; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.space.created.ts: -------------------------------------------------------------------------------- 1 | import { ICommunity } from '@domain/community/community'; 2 | import { NotificationInputBase } from './notification.dto.input.base'; 3 | 4 | export interface NotificationInputSpaceCreated extends NotificationInputBase { 5 | community: ICommunity; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.update.sent.ts: -------------------------------------------------------------------------------- 1 | import { NotificationInputBase } from './notification.dto.input.base'; 2 | import { IRoom } from '@domain/communication/room/room.interface'; 3 | 4 | export interface NotificationInputUpdateSent extends NotificationInputBase { 5 | updates: IRoom; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.user.message.ts: -------------------------------------------------------------------------------- 1 | import { NotificationInputBase } from './notification.dto.input.base'; 2 | 3 | export interface NotificationInputUserMessage extends NotificationInputBase { 4 | message: string; 5 | receiverID: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.user.registered.ts: -------------------------------------------------------------------------------- 1 | import { NotificationInputBase } from './notification.dto.input.base'; 2 | 3 | export interface NotificationInputUserRegistered extends NotificationInputBase { 4 | userID: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.dto.input.user.removed.ts: -------------------------------------------------------------------------------- 1 | import { IUser } from '@domain/community/user/user.interface'; 2 | import { NotificationInputBase } from './notification.dto.input.base'; 3 | 4 | export interface NotificationInputUserRemoved extends NotificationInputBase { 5 | user: IUser; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/dto/notification.input.organization.message.ts: -------------------------------------------------------------------------------- 1 | import { NotificationInputBase } from './notification.dto.input.base'; 2 | 3 | export interface NotificationInputOrganizationMessage 4 | extends NotificationInputBase { 5 | message: string; 6 | organizationID: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/notification-adapter/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/services/adapters/notification-adapter/index.ts -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.register.callback.credential.content.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRegisterCallbackCredentialContent { 2 | context!: any; 3 | verifiableCredential!: any[]; 4 | holder!: string; 5 | id!: string; 6 | type!: string[]; 7 | proof!: any; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.register.callback.session.ts: -------------------------------------------------------------------------------- 1 | import { SsiSovrhdRegisterCallback } from './ssi.sovrhd.dto.register.callback'; 2 | 3 | export class SsiSovrhdRegisterCallbackSession extends SsiSovrhdRegisterCallback {} 4 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.register.callback.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRegisterCallback { 2 | id!: string; 3 | session!: string; 4 | timestamp!: any; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.register.response.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRegisterResponse { 2 | session!: string; 3 | qr!: string; 4 | webhook!: string; 5 | id!: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.register.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRegister { 2 | webhook!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.request.data.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRequestData { 2 | did!: string; 3 | credentialSchema!: string; 4 | type!: string; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.request.response.session.ts: -------------------------------------------------------------------------------- 1 | export class SsiSovrhdRequestResponseSession { 2 | sender!: string; 3 | webhook!: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.request.response.ts: -------------------------------------------------------------------------------- 1 | import { SsiSovrhdRequestResponseSession } from './ssi.sovrhd.dto.request.response.session'; 2 | 3 | export class SsiSovrhdRequestResponse { 4 | session!: SsiSovrhdRequestResponseSession; 5 | result!: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/dto/ssi.sovrhd.dto.request.ts: -------------------------------------------------------------------------------- 1 | import { SsiSovrhdRequestData } from './ssi.sovrhd.dto.request.data'; 2 | 3 | export class SsiSovrhdRequest { 4 | session!: string; 5 | data!: SsiSovrhdRequestData; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/services/adapters/ssi-sovrhd/index.ts -------------------------------------------------------------------------------- /src/services/adapters/ssi-sovrhd/samples/sovrhd.callback.establish.session.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "did:dock:5HPC8V9ef5BZu1Jbij4YjnMcFV9No68SFKhgkAnpoaf5i3rS", 3 | "session": "YsT6NQOEmjCn7eKOgBgy", 4 | "timestamp": { "seconds": 1648552566, "nanoseconds": 982000000 } 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/storage/index.ts: -------------------------------------------------------------------------------- 1 | export * from './storage.service.interface'; 2 | export * from './storage.service.type'; 3 | export * from './storage.service.module'; 4 | -------------------------------------------------------------------------------- /src/services/adapters/storage/storage.service.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { StorageServiceProvider } from './storage.service.provider'; 3 | 4 | @Module({ 5 | providers: [StorageServiceProvider], 6 | exports: [StorageServiceProvider], 7 | }) 8 | export class StorageServiceModule {} 9 | -------------------------------------------------------------------------------- /src/services/adapters/storage/storage.service.type.ts: -------------------------------------------------------------------------------- 1 | export enum StorageServiceType { 2 | LOCAL_STORAGE = 'local_storage', 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.create.identity.response.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerCreateIdentityResponse { 2 | did!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.create.identity.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerCreateIdentity { 2 | password!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.credential.metadata.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerCredentialMetadata { 2 | name!: string; 3 | description!: string; 4 | schema!: string; 5 | types!: string[]; 6 | uniqueType!: string; 7 | context!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.credential.offer.metadata.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerCredentialOfferMetadata { 2 | metadata: any; 3 | claim?: Record; 4 | } 5 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.get.agent.info.response.ts: -------------------------------------------------------------------------------- 1 | import { WalletManagerVerifiedCredential } from './wallet.manager.dto.verified.credential'; 2 | 3 | export class WalletManagerGetAgentInfoResponse { 4 | verifiedCredentials!: WalletManagerVerifiedCredential[]; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.get.agent.info.ts: -------------------------------------------------------------------------------- 1 | import { WalletManagerCredentialMetadata } from './wallet.manager.dto.credential.metadata'; 2 | 3 | export class WalletManagerGetAgentInfo { 4 | did!: string; 5 | password!: string; 6 | credentialMetadata!: WalletManagerCredentialMetadata[]; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.offer.vc.begin.response.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerOfferVcBeginResponse { 2 | interactionId!: string; 3 | jwt!: string; 4 | expiresOn!: number; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.offer.vc.complete.response.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerOfferVcCompleteResponse { 2 | result!: boolean; 3 | token!: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.request.vc.begin.response.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerRequestVcBeginResponse { 2 | interactionId!: string; 3 | jwt!: string; 4 | expiresOn!: number; 5 | } 6 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.request.vc.complete.response.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerRequestVcCompleteResponse { 2 | result!: boolean; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.request.vc.complete.sovrhd.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerRequestVcCompleteSovrhd { 2 | issuerDID!: string; 3 | issuerPassword!: string; 4 | interactionId!: string; 5 | jwt!: string; 6 | credentialType!: string; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.request.vc.complete.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerRequestVcComplete { 2 | issuerDID!: string; 3 | issuerPassword!: string; 4 | interactionId!: string; 5 | jwt!: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/dto/wallet.manager.dto.verified.credential.ts: -------------------------------------------------------------------------------- 1 | export class WalletManagerVerifiedCredential { 2 | type!: string; 3 | issuer!: string; 4 | issued!: string; 5 | expires?: string; 6 | claim!: string; 7 | name!: string; 8 | context?: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/services/adapters/wallet-manager-adapter/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/src/services/adapters/wallet-manager-adapter/index.ts -------------------------------------------------------------------------------- /src/services/ai-server/ai-persona-engine-adapter/ai.persona.engine.adapter.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AiPersonaEngineAdapter } from './ai.persona.engine.adapter'; 3 | 4 | @Module({ 5 | providers: [AiPersonaEngineAdapter], 6 | exports: [AiPersonaEngineAdapter], 7 | }) 8 | export class AiPersonaEngineAdapterModule {} 9 | -------------------------------------------------------------------------------- /src/services/ai-server/ai-persona-engine-adapter/dto/ai.persona.engine.adapter.dto.base.response.ts: -------------------------------------------------------------------------------- 1 | export class AiPersonaEngineAdapterBaseResponse { 2 | result!: string; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/ai-server/ai-persona-service/dto/ai.persona.service.dto.delete.ts: -------------------------------------------------------------------------------- 1 | import { DeleteBaseAlkemioInput } from '@domain/common/entity/base-entity'; 2 | import { InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class DeleteAiPersonaServiceInput extends DeleteBaseAlkemioInput {} 6 | -------------------------------------------------------------------------------- /src/services/ai-server/ai-persona-service/dto/interaction.message.ts: -------------------------------------------------------------------------------- 1 | export enum MessageSenderRole { 2 | HUMAN = 'human', 3 | ASSISTANT = 'assistant', 4 | } 5 | export interface InteractionMessage { 6 | role: MessageSenderRole; 7 | content: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/ai-server/ai-persona-service/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ai.persona.service.entity'; 2 | export * from './ai.persona.service.interface'; 3 | -------------------------------------------------------------------------------- /src/services/ai-server/ai-server/dto/ai.server.dto.ingest.ai.persona.service.ts: -------------------------------------------------------------------------------- 1 | import { UUID } from '@domain/common/scalars'; 2 | import { Field, InputType } from '@nestjs/graphql'; 3 | 4 | @InputType() 5 | export class AiServerIngestAiPersonaServiceInput { 6 | @Field(() => UUID, { nullable: false }) 7 | aiPersonaServiceID!: string; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/api/activity-log/dto/subscriptions/activity.log.dto.activity.created.subscription.payload.ts: -------------------------------------------------------------------------------- 1 | import { BaseSubscriptionPayload } from '@src/common/interfaces'; 2 | import { IActivity } from '@platform/activity'; 3 | 4 | export interface ActivityCreatedSubscriptionPayload 5 | extends BaseSubscriptionPayload { 6 | activity: IActivity; 7 | } 8 | -------------------------------------------------------------------------------- /src/services/api/activity-log/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity.log.service'; 2 | -------------------------------------------------------------------------------- /src/services/api/input-creator/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './input.creator.query.results'; 2 | -------------------------------------------------------------------------------- /src/services/api/lookup-by-name/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lookup.by.name.query.results'; 2 | -------------------------------------------------------------------------------- /src/services/api/lookup-by-name/dto/lookup.by.name.query.results.ts: -------------------------------------------------------------------------------- 1 | import { ObjectType } from '@nestjs/graphql'; 2 | import { IInnovationPack } from '@library/innovation-pack/innovation.pack.interface'; 3 | 4 | @ObjectType() 5 | export class LookupByNameQueryResults { 6 | // exposed through the field resolver 7 | innovationPack!: IInnovationPack; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/api/lookup-by-name/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lookup.by.name.module'; 2 | export * from './lookup.by.name.service'; 3 | export * from './lookup.by.name.resolver.queries'; 4 | -------------------------------------------------------------------------------- /src/services/api/lookup-by-name/lookup.by.name.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | 3 | @Injectable() 4 | export class LookupByNameService {} 5 | -------------------------------------------------------------------------------- /src/services/api/lookup/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lookup.query.results'; 2 | -------------------------------------------------------------------------------- /src/services/api/lookup/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lookup.module'; 2 | export * from './lookup.service'; 3 | export * from './lookup.resolver.queries'; 4 | -------------------------------------------------------------------------------- /src/services/api/lookup/lookup.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | 3 | @Injectable() 4 | export class LookupService {} 5 | -------------------------------------------------------------------------------- /src/services/api/me/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './me.query.results'; 2 | -------------------------------------------------------------------------------- /src/services/api/me/index.ts: -------------------------------------------------------------------------------- 1 | export * from './me.module'; 2 | export * from './me.service'; 3 | export * from './me.resolver.queries'; 4 | export * from './space.membership.type'; 5 | -------------------------------------------------------------------------------- /src/services/api/roles/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dto/roles.dto.input.user'; 2 | -------------------------------------------------------------------------------- /src/services/api/search/dto/inputs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './search.dto.input'; 2 | export * from './search.filter.input'; 3 | -------------------------------------------------------------------------------- /src/services/api/search/dto/results/base.search.hit.ts: -------------------------------------------------------------------------------- 1 | import { IBaseAlkemio } from '@domain/common/entity/base-entity'; 2 | 3 | export type BaseSearchHit = Pick; 4 | -------------------------------------------------------------------------------- /src/services/api/search/extract/search.index.ts: -------------------------------------------------------------------------------- 1 | import { SearchResultType } from '../search.result.type'; 2 | import { SearchCategory } from '../search.category'; 3 | 4 | export type SearchIndex = { 5 | name: string; 6 | type: SearchResultType; 7 | category: SearchCategory; 8 | }; 9 | -------------------------------------------------------------------------------- /src/services/api/search/ingest/index.ts: -------------------------------------------------------------------------------- 1 | export * from './search.ingest.module'; 2 | -------------------------------------------------------------------------------- /src/services/api/search/util/index.ts: -------------------------------------------------------------------------------- 1 | export * from './validate.search.parameters'; 2 | export * from './calculate.search.cursor'; 3 | export * from './try.parse.search.cursor'; 4 | -------------------------------------------------------------------------------- /src/services/external/avatar-creator/avatar.creator.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { AvatarCreatorService } from './avatar.creator.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [AvatarCreatorService], 7 | exports: [AvatarCreatorService], 8 | }) 9 | export class AvatarCreatorModule {} 10 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/contribution-reporter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './contribution.reporter.module'; 2 | export * from './contribution.reporter.service'; 3 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/elasticsearch-client/index.ts: -------------------------------------------------------------------------------- 1 | export * from './elasticsearch.client.provider'; 2 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/base.contribution.ts: -------------------------------------------------------------------------------- 1 | import { ContributionType } from '../types/contribution.type'; 2 | 3 | export interface BaseContribution { 4 | id: string; 5 | name: string; 6 | author: string; 7 | type: ContributionType; 8 | space: string; 9 | } 10 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.comment.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutCommentCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.post.comment.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutPostCommentCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.post.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutPostCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.whiteboard.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutWhiteboardCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/callout/callout.whiteboard.edited.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type CalloutWhiteboardEdited = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/challenge.content.edited.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type ChallengeContentEdited = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/challenge.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type ChallengeCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/challenge.joined.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type ChallengeJoined = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/opportunity.content.edited.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type OpportunityContentEdited = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/opportunity.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type OpportunityCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/opportunity.joined.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type OpportunityJoined = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/space.content.edited.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type SpaceContentEdited = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/journey/space.joined.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from '../base.contribution'; 2 | 3 | export type SpaceJoined = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/events/update.created.ts: -------------------------------------------------------------------------------- 1 | import { BaseContribution } from './base.contribution'; 2 | 3 | export type UpdateCreated = BaseContribution; 4 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/guidance-reporter/index.ts: -------------------------------------------------------------------------------- 1 | export * from './guidance.reporter.module'; 2 | export * from './guidance.reporter.service'; 3 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/name-reporter/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './naming.document'; 2 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/name-reporter/types/naming.document.ts: -------------------------------------------------------------------------------- 1 | export type NamingDocument = { 2 | space: string; 3 | displayName: string; 4 | environment: string; 5 | }; 6 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/types/author-details.ts: -------------------------------------------------------------------------------- 1 | export type AuthorDetails = { 2 | id: string; 3 | email: string; 4 | }; 5 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/types/contribution-details.ts: -------------------------------------------------------------------------------- 1 | export type ContributionDetails = { 2 | id: string; 3 | name: string; 4 | space: string; 5 | }; 6 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/types/contribution.document.ts: -------------------------------------------------------------------------------- 1 | import { ContributionType } from './contribution.type'; 2 | 3 | export type ContributionDocument = { 4 | id: string; 5 | name: string; 6 | author: string; 7 | type: ContributionType; 8 | '@timestamp': Date; 9 | alkemio: boolean; 10 | environment: string; 11 | }; 12 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './elastic.response.error'; 2 | export * from './contribution.type'; 3 | export * from './contribution.document'; 4 | export * from './author-details'; 5 | export * from './contribution-details'; 6 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './is.elastic.error'; 2 | export * from './is.elastic.response.error'; 3 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/utils/is.elastic.error.ts: -------------------------------------------------------------------------------- 1 | import { ErrorResponseBase } from '@elastic/elasticsearch/lib/api/types'; 2 | 3 | export const isElasticError = (error: unknown): error is ErrorResponseBase => { 4 | const err = error as ErrorResponseBase; 5 | return !!err?.status && !!err?.error && !!err?.error.type; 6 | }; 7 | -------------------------------------------------------------------------------- /src/services/external/elasticsearch/utils/is.elastic.response.error.ts: -------------------------------------------------------------------------------- 1 | import { ElasticResponseError } from '../types'; 2 | 3 | export const isElasticResponseError = ( 4 | error: unknown 5 | ): error is ElasticResponseError => { 6 | const e = error as ElasticResponseError; 7 | return !!e.meta && !!e.stack && !!e.message; 8 | }; 9 | -------------------------------------------------------------------------------- /src/services/external/geo-location/geo.information.ts: -------------------------------------------------------------------------------- 1 | export interface GeoInformation { 2 | latitude: number; 3 | longitude: number; 4 | } 5 | -------------------------------------------------------------------------------- /src/services/external/geo-location/geo.location.cache.metadata.ts: -------------------------------------------------------------------------------- 1 | export interface GeoLocationCacheMetadata { 2 | start: number; 3 | calls: number; 4 | } 5 | -------------------------------------------------------------------------------- /src/services/external/geo-location/index.ts: -------------------------------------------------------------------------------- 1 | export * from './geo.information'; 2 | 3 | export * from './geo.location.service'; 4 | export * from './geo.location.module'; 5 | -------------------------------------------------------------------------------- /src/services/external/trust-registry/trust.registry.claim/claim.enum.ts: -------------------------------------------------------------------------------- 1 | export enum Claim { 2 | AlkemioUser = 'alkemioUser', 3 | CommunityMember = 'communityMember', 4 | } 5 | -------------------------------------------------------------------------------- /src/services/external/trust-registry/trust.registry.claim/claim.interface.ts: -------------------------------------------------------------------------------- 1 | export interface IClaim { 2 | asClaimObject(): Record; 3 | } 4 | -------------------------------------------------------------------------------- /src/services/external/trust-registry/trust.registry.claim/trust.registry.claim.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { TrustRegistryClaimService } from './trust.registry.claim.service'; 3 | 4 | @Module({ 5 | providers: [TrustRegistryClaimService], 6 | exports: [TrustRegistryClaimService], 7 | }) 8 | export class TrustRegistryClaimModule {} 9 | -------------------------------------------------------------------------------- /src/services/external/wingback-webhooks/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wingback.webhook.module'; 2 | -------------------------------------------------------------------------------- /src/services/external/wingback-webhooks/types.ts: -------------------------------------------------------------------------------- 1 | import { Matches } from 'class-validator'; 2 | 3 | export class WingbackContractPayload { 4 | @Matches(/Cont_[\w-]{36}/, { message: 'Invalid Contract ID in payload' }) 5 | id!: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/services/external/wingback/index.ts: -------------------------------------------------------------------------------- 1 | export * from './wingback.manager'; 2 | export * from './wingback.manager.module'; 3 | -------------------------------------------------------------------------------- /src/services/external/wingback/types/wingback.type.error.ts: -------------------------------------------------------------------------------- 1 | export type WingbackError = { 2 | feedback: Record; 3 | }; 4 | -------------------------------------------------------------------------------- /src/services/external/wingback/types/wingback.type.update.customer.ts: -------------------------------------------------------------------------------- 1 | export type UpdateCustomer = Record; 2 | -------------------------------------------------------------------------------- /src/services/external/wingback/wingback.manager.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { HttpModule } from '@nestjs/axios'; 3 | import { WingbackManager } from './wingback.manager'; 4 | 5 | @Module({ 6 | imports: [HttpModule], 7 | providers: [WingbackManager], 8 | exports: [WingbackManager], 9 | }) 10 | export class WingbackManagerModule {} 11 | -------------------------------------------------------------------------------- /src/services/file-integration/index.ts: -------------------------------------------------------------------------------- 1 | export * from './file.integration.service'; 2 | export * from './file.integration.module'; 3 | -------------------------------------------------------------------------------- /src/services/file-integration/inputs/base.input.data.ts: -------------------------------------------------------------------------------- 1 | export class BaseInputData { 2 | constructor(public event: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /src/services/file-integration/inputs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './base.input.data'; 2 | export * from './file.info.input.data'; 3 | -------------------------------------------------------------------------------- /src/services/file-integration/outputs/base.output.data.ts: -------------------------------------------------------------------------------- 1 | export class BaseOutputData { 2 | constructor(public event: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /src/services/file-integration/outputs/health.check.output.data.ts: -------------------------------------------------------------------------------- 1 | import { BaseOutputData } from './base.output.data'; 2 | 3 | export class HealthCheckOutputData extends BaseOutputData { 4 | constructor(public healthy: boolean) { 5 | super('health-check-output'); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/services/file-integration/outputs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './file.info.output.data'; 2 | export * from './health.check.output.data'; 3 | -------------------------------------------------------------------------------- /src/services/file-integration/types/message.pattern.ts: -------------------------------------------------------------------------------- 1 | export enum FileMessagePatternEnum { 2 | FILE_INFO = 'file-info', 3 | HEALTH_CHECK = 'health-check', 4 | } 5 | -------------------------------------------------------------------------------- /src/services/infrastructure/event-bus/messages/types/index.ts: -------------------------------------------------------------------------------- 1 | export { IngestionResult } from './ingestion.result'; 2 | export { IngestionPurpose } from './ingestion.purpose'; 3 | export { IngestError, ErrorCode } from './ingest.error'; 4 | -------------------------------------------------------------------------------- /src/services/infrastructure/event-bus/messages/types/ingest.error.ts: -------------------------------------------------------------------------------- 1 | export enum ErrorCode { 2 | VECTOR_INSERT = 'vector_insert', 3 | } 4 | 5 | export type IngestError = { 6 | code?: ErrorCode; 7 | message: string; 8 | }; 9 | -------------------------------------------------------------------------------- /src/services/infrastructure/event-bus/messages/types/ingestion.purpose.ts: -------------------------------------------------------------------------------- 1 | export enum IngestionPurpose { 2 | KNOWLEDGE = 'knowledge', 3 | CONTEXT = 'context', 4 | } 5 | -------------------------------------------------------------------------------- /src/services/infrastructure/event-bus/messages/types/ingestion.result.ts: -------------------------------------------------------------------------------- 1 | export enum IngestionResult { 2 | SUCCESS = 'success', 3 | FAILURE = 'failure', 4 | } 5 | -------------------------------------------------------------------------------- /src/services/infrastructure/kratos/kratos.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { KratosService } from './kratos.service'; 3 | @Module({ 4 | imports: [], 5 | providers: [KratosService], 6 | exports: [KratosService], 7 | }) 8 | export class KratosModule {} 9 | -------------------------------------------------------------------------------- /src/services/infrastructure/kratos/types/kratos.payload.ts: -------------------------------------------------------------------------------- 1 | import { Session } from '@ory/kratos-client'; 2 | 3 | export interface KratosPayload { 4 | exp: number; 5 | iat: number; 6 | iss: string; 7 | jti: string; 8 | nbf: number; 9 | sub: string; 10 | session: Session | null; 11 | } 12 | -------------------------------------------------------------------------------- /src/services/infrastructure/kratos/types/ory.traits.ts: -------------------------------------------------------------------------------- 1 | export interface OryTraits { 2 | accepted_terms: boolean; 3 | picture: string; 4 | email: string; 5 | name: { 6 | first: string; 7 | last: string; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /src/services/infrastructure/kratos/types/session.invalid.enum.ts: -------------------------------------------------------------------------------- 1 | export type SessionInvalidReason = 2 | | 'Session not defined' 3 | | 'Session expiry not defined' 4 | | 'Session expired'; 5 | -------------------------------------------------------------------------------- /src/services/infrastructure/space-filter/space.filter.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { SpaceFilterService } from './space.filter.service'; 3 | 4 | @Module({ 5 | imports: [], 6 | providers: [SpaceFilterService], 7 | exports: [SpaceFilterService], 8 | }) 9 | export class SpaceFilterModule {} 10 | -------------------------------------------------------------------------------- /src/services/infrastructure/url-generator/index.ts: -------------------------------------------------------------------------------- 1 | export * from './url.generator.module'; 2 | export * from './url.generator.service'; 3 | -------------------------------------------------------------------------------- /src/services/subscriptions/subscription-service/dto/activity.created.subscription.payload.ts: -------------------------------------------------------------------------------- 1 | import { BaseSubscriptionPayload } from '@src/common/interfaces'; 2 | import { IActivity } from '@platform/activity'; 3 | 4 | export interface ActivityCreatedSubscriptionPayload 5 | extends BaseSubscriptionPayload { 6 | collaborationID: string; 7 | activity: IActivity; 8 | } 9 | -------------------------------------------------------------------------------- /src/services/subscriptions/subscription-service/dto/index.ts: -------------------------------------------------------------------------------- 1 | export * from './activity.created.subscription.payload'; 2 | export * from './room.event.subscription.payload'; 3 | export * from './virtual.contributor.updated.subscription.payload'; 4 | export * from './in.app.notification.received.subscription.payload'; 5 | -------------------------------------------------------------------------------- /src/services/subscriptions/subscription-service/index.ts: -------------------------------------------------------------------------------- 1 | export * from './subscription.publish.service'; 2 | export * from './subscription.read.service'; 3 | export * from './subscription.service.module'; 4 | 5 | export * from './typed.pub.sub.engine'; 6 | -------------------------------------------------------------------------------- /src/services/task/index.ts: -------------------------------------------------------------------------------- 1 | export * from './task.service'; 2 | export * from './task.module'; 3 | -------------------------------------------------------------------------------- /src/services/task/task.error.interface.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 2 | export type TaskError = string; 3 | -------------------------------------------------------------------------------- /src/services/task/task.list.key.ts: -------------------------------------------------------------------------------- 1 | export const TASK_LIST_CACHE_KEY = 'task-list'; 2 | -------------------------------------------------------------------------------- /src/services/task/task.module.ts: -------------------------------------------------------------------------------- 1 | import { Module } from '@nestjs/common'; 2 | import { TaskService } from './task.service'; 3 | 4 | @Module({ 5 | providers: [TaskService], 6 | exports: [TaskService], 7 | }) 8 | export class TaskModule {} 9 | -------------------------------------------------------------------------------- /src/services/task/task.result.interface.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-interface 2 | export type TaskResult = string; 3 | -------------------------------------------------------------------------------- /src/services/task/types.ts: -------------------------------------------------------------------------------- 1 | export * from './task.error.interface'; 2 | export * from './task.result.interface'; 3 | export * from './task.list.key'; 4 | export * from './task.interface'; 5 | -------------------------------------------------------------------------------- /src/services/util/ack.ts: -------------------------------------------------------------------------------- 1 | import { RmqContext } from '@nestjs/microservices'; 2 | import { Channel, Message } from 'amqplib'; 3 | 4 | export const ack = (context: RmqContext) => { 5 | const channel: Channel = context.getChannelRef(); 6 | const originalMsg = context.getMessage() as Message; 7 | channel.ack(originalMsg); 8 | }; 9 | -------------------------------------------------------------------------------- /src/services/util/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ack'; 2 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/access.granted.input.data.ts: -------------------------------------------------------------------------------- 1 | import { AuthorizationPrivilege } from '@common/enums'; 2 | 3 | export type AccessGrantedInputData = { 4 | userId: string; 5 | whiteboardId: string; 6 | privilege: AuthorizationPrivilege; 7 | }; 8 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/base.input.data.ts: -------------------------------------------------------------------------------- 1 | export class BaseInputData { 2 | constructor(public event: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/contribution.input.data.ts: -------------------------------------------------------------------------------- 1 | import { BaseInputData } from './base.input.data'; 2 | 3 | export class ContributionInputData extends BaseInputData { 4 | constructor( 5 | public whiteboardId: string, 6 | public users: [{ id: string; email: string }] 7 | ) { 8 | super('contribution'); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './access.granted.input.data'; 2 | export * from './who.input.data'; 3 | export * from './contribution.input.data'; 4 | export * from './content.modified.input.data'; 5 | export * from './info.input.data'; 6 | export * from './save.input.data'; 7 | export * from './fetch.input.data'; 8 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/info.input.data.ts: -------------------------------------------------------------------------------- 1 | import { BaseInputData } from './base.input.data'; 2 | 3 | export class InfoInputData extends BaseInputData { 4 | constructor(public userId: string, public whiteboardId: string) { 5 | super('info'); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/inputs/who.input.data.ts: -------------------------------------------------------------------------------- 1 | export type WhoInputData = { 2 | auth: { 3 | cookie?: string; 4 | authorization?: string; 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/outputs/base.output.data.ts: -------------------------------------------------------------------------------- 1 | export class BaseOutputData { 2 | constructor(public event: string) {} 3 | } 4 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/outputs/health.check.output.data.ts: -------------------------------------------------------------------------------- 1 | import { BaseOutputData } from './base.output.data'; 2 | 3 | export class HealthCheckOutputData extends BaseOutputData { 4 | constructor(public healthy: boolean) { 5 | super('health-check-output'); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/outputs/index.ts: -------------------------------------------------------------------------------- 1 | export * from './info.output.data'; 2 | export * from './health.check.output.data'; 3 | export * from './save.output.data'; 4 | export * from './fetch.output.data'; 5 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/outputs/info.output.data.ts: -------------------------------------------------------------------------------- 1 | export type InfoOutputData = { 2 | read: boolean; 3 | update: boolean; 4 | maxCollaborators: number | undefined; 5 | }; 6 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/types/event.pattern.ts: -------------------------------------------------------------------------------- 1 | export enum WhiteboardIntegrationEventPattern { 2 | CONTRIBUTION = 'contribution', 3 | CONTENT_MODIFIED = 'contentModified', 4 | HEALTH_CHECK = 'health-check', 5 | } 6 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user.info'; 2 | 3 | export * from './message.pattern'; 4 | export * from './event.pattern'; 5 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/types/message.pattern.ts: -------------------------------------------------------------------------------- 1 | export enum WhiteboardIntegrationMessagePattern { 2 | WHO = 'who', 3 | INFO = 'info', 4 | SAVE = 'save', 5 | FETCH = 'fetch', 6 | } 7 | -------------------------------------------------------------------------------- /src/services/whiteboard-integration/types/user.info.ts: -------------------------------------------------------------------------------- 1 | export type UserInfo = { 2 | id: string; 3 | email: string; 4 | }; 5 | -------------------------------------------------------------------------------- /src/types/context.type.ts: -------------------------------------------------------------------------------- 1 | import { ContextType } from '@nestjs/common'; 2 | 3 | export type ContextTypeWithGraphQL = ContextType | 'graphql'; 4 | -------------------------------------------------------------------------------- /src/types/entity.relations.ts: -------------------------------------------------------------------------------- 1 | /*** 2 | * Selects only keys which values are an object 3 | */ 4 | export type EntityRelations = { 5 | [P in keyof Entity]: Entity[P] extends 6 | | string 7 | | number 8 | | symbol 9 | | boolean 10 | | (() => any) 11 | ? never 12 | : P; 13 | }[keyof Entity]; 14 | -------------------------------------------------------------------------------- /src/types/graphql/index.ts: -------------------------------------------------------------------------------- 1 | export * from './subscriptions/subscriptionRelatedTypes'; 2 | export * from './graphql.context'; 3 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from './graphql'; 2 | export * from './entity.relations'; 3 | export * from './alkemio.config'; 4 | export * from './deep.select.properties'; 5 | export * from './prefixed.type'; 6 | -------------------------------------------------------------------------------- /test/config/jest.config.ci.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('./jest.config'), 3 | testMatch: ['**/?(*.)+(spec).ts'], 4 | coverageDirectory: '/coverage-ci', 5 | }; 6 | -------------------------------------------------------------------------------- /test/data/user.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alkem-io/server/927710c07cb56db3f6e2811fc76c0bb4d12f5582/test/data/user.json -------------------------------------------------------------------------------- /test/mocks/config.service.mock.ts: -------------------------------------------------------------------------------- 1 | import { MockValueProvider } from '@test/utils/mock.value.provider'; 2 | import { ConfigService } from '@nestjs/config'; 3 | 4 | export const MockConfigService: MockValueProvider = { 5 | provide: ConfigService, 6 | useValue: { 7 | get: jest.fn(), 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /test/mocks/geo.location.service.mock.ts: -------------------------------------------------------------------------------- 1 | import { GeoLocationService } from '@services/external/geo-location'; 2 | import { MockValueProvider } from '../utils/mock.value.provider'; 3 | 4 | export const MockGeoLocationService: MockValueProvider = { 5 | provide: GeoLocationService, 6 | useValue: { 7 | getGeo: jest.fn(), 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /test/mocks/http.service.mock.ts: -------------------------------------------------------------------------------- 1 | import { HttpService } from '@nestjs/axios'; 2 | import { MockValueProvider } from '../utils/mock.value.provider'; 3 | 4 | export const MockHttpService: MockValueProvider = { 5 | provide: HttpService, 6 | useValue: { 7 | get: jest.fn(), 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /test/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './public-part'; 2 | export * from './async-to-throw'; 3 | export * from './test-data'; 4 | export * from './default.mocker.factory'; 5 | -------------------------------------------------------------------------------- /test/utils/mock.type.ts: -------------------------------------------------------------------------------- 1 | export type MockType = { 2 | [P in keyof T]?: jest.Mock; 3 | }; 4 | -------------------------------------------------------------------------------- /test/utils/mock.value.provider.ts: -------------------------------------------------------------------------------- 1 | import { ValueProvider } from '@nestjs/common'; 2 | import { PublicPart } from './public-part'; 3 | 4 | export type MockValueProvider = ValueProvider>; 5 | -------------------------------------------------------------------------------- /test/utils/public-part.ts: -------------------------------------------------------------------------------- 1 | export type PublicPart = { 2 | [P in keyof T]?: unknown; 3 | }; 4 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /uploads/hello-alkemio.txt: -------------------------------------------------------------------------------- 1 | Hello Alkemio! --------------------------------------------------------------------------------