@rytass/bpm-core-nestjs-module 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/eslint.config.mjs +20 -0
- package/jest.config.cts +15 -0
- package/package.json +3 -3
- package/project.json +58 -0
- package/src/lib/attachment/attachment-options.spec.ts +45 -0
- package/src/lib/attachment/attachment-options.ts +130 -0
- package/src/lib/attachment/attachment-storage.provider.spec.ts +79 -0
- package/src/lib/attachment/attachment-storage.provider.ts +60 -0
- package/src/lib/attachment/{attachment-storage.token.d.ts → attachment-storage.token.ts} +3 -1
- package/src/lib/attachment/attachment.controller.ts +39 -0
- package/src/lib/attachment/attachment.entity.ts +59 -0
- package/src/lib/attachment/attachment.module.ts +149 -0
- package/src/lib/attachment/attachment.mutations.ts +22 -0
- package/src/lib/attachment/attachment.queries.ts +65 -0
- package/src/lib/attachment/attachment.service.spec.ts +319 -0
- package/src/lib/attachment/attachment.service.ts +477 -0
- package/src/lib/attachment/dto/upload-attachment.input.ts +60 -0
- package/src/lib/bpm/bpm-root.module.spec.ts +138 -0
- package/src/lib/bpm/bpm-root.module.ts +320 -0
- package/src/lib/bpm-auth/bpm-auth-context.extractor.ts +106 -0
- package/src/lib/bpm-auth/bpm-auth-context.ts +40 -0
- package/src/lib/bpm-auth/bpm-auth.authorization.ts +80 -0
- package/src/lib/bpm-auth/bpm-auth.decorators.ts +19 -0
- package/src/lib/bpm-auth/bpm-auth.guard.ts +31 -0
- package/src/lib/bpm-auth/bpm-auth.module.spec.ts +106 -0
- package/src/lib/bpm-auth/bpm-auth.module.ts +69 -0
- package/src/lib/bpm-auth/bpm-auth.options.ts +21 -0
- package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.ts +55 -0
- package/src/lib/common/filters/all-exceptions.filter.ts +138 -0
- package/src/lib/common/iso-duration.ts +31 -0
- package/src/lib/condition/condition.module.ts +8 -0
- package/src/lib/condition/condition.service.spec.ts +50 -0
- package/src/lib/condition/condition.service.ts +141 -0
- package/src/lib/database/data-source.ts +7 -0
- package/src/lib/database/migration-runner.ts +24 -0
- package/src/lib/database/typeorm.config.ts +217 -0
- package/src/lib/delegation/delegation-rule.entity.ts +84 -0
- package/src/lib/delegation/delegation.enums.ts +21 -0
- package/src/lib/delegation/delegation.module.ts +14 -0
- package/src/lib/delegation/delegation.mutations.ts +92 -0
- package/src/lib/delegation/delegation.queries.ts +111 -0
- package/src/lib/delegation/delegation.service.spec.ts +295 -0
- package/src/lib/delegation/delegation.service.ts +482 -0
- package/src/lib/delegation/dto/delegation-rule.input.ts +125 -0
- package/src/lib/form/dto/form-definition.input.ts +73 -0
- package/src/lib/form/form-definition-version.entity.ts +66 -0
- package/src/lib/form/form-definition.entity.ts +54 -0
- package/src/lib/form/form-schema-lint.object.ts +10 -0
- package/src/lib/form/form-schema.validator.spec.ts +180 -0
- package/src/lib/form/form-schema.validator.ts +538 -0
- package/src/lib/form/form.enums.ts +20 -0
- package/src/lib/form/form.module.ts +19 -0
- package/src/lib/form/form.mutations.ts +68 -0
- package/src/lib/form/form.queries.ts +72 -0
- package/src/lib/form/form.service.spec.ts +144 -0
- package/src/lib/form/form.service.ts +490 -0
- package/src/lib/identity/identity-options.ts +41 -0
- package/src/lib/identity/identity.module.ts +96 -0
- package/src/lib/identity/identity.queries.ts +61 -0
- package/src/lib/identity/identity.service.spec.ts +105 -0
- package/src/lib/identity/identity.service.ts +200 -0
- package/src/lib/identity/member-base.adapter.spec.ts +77 -0
- package/src/lib/identity/member-base.adapter.ts +244 -0
- package/src/lib/identity/member-metadata-cache.entity.ts +27 -0
- package/src/lib/identity/member-profile.object.ts +28 -0
- package/src/lib/identity/{member-resolver.interface.d.ts → member-resolver.interface.ts} +11 -5
- package/src/lib/migrations/0000000000001-enable-postgres-extensions.ts +14 -0
- package/src/lib/migrations/{0000000001000-identity-organization-foundation.js → 0000000001000-identity-organization-foundation.ts} +38 -29
- package/src/lib/migrations/{0000000002000-form-builder-foundation.js → 0000000002000-form-builder-foundation.ts} +22 -21
- package/src/lib/migrations/{0000000003000-approval-template-foundation.js → 0000000003000-approval-template-foundation.ts} +24 -21
- package/src/lib/migrations/{0000000004000-workflow-engine-foundation.js → 0000000004000-workflow-engine-foundation.ts} +46 -34
- package/src/lib/migrations/{0000000005000-delegation-rules.js → 0000000005000-delegation-rules.ts} +20 -19
- package/src/lib/migrations/{0000000006000-notifications-sla.js → 0000000006000-notifications-sla.ts} +26 -23
- package/src/lib/migrations/{0000000007000-signatures-attachments.js → 0000000007000-signatures-attachments.ts} +28 -27
- package/src/lib/migrations/{0000000008000-approval-template-categories.js → 0000000008000-approval-template-categories.ts} +28 -25
- package/src/lib/migrations/{0000000009000-task-candidates.js → 0000000009000-task-candidates.ts} +26 -23
- package/src/lib/migrations/{0000000010000-notification-delivery-state.js → 0000000010000-notification-delivery-state.ts} +16 -17
- package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.ts +19 -0
- package/src/lib/migrations/0000000012000-notification-sla-idempotency.ts +22 -0
- package/src/lib/migrations/0000000013000-workflow-query-indexes.ts +113 -0
- package/src/lib/migrations/index.ts +47 -0
- package/src/lib/notification/dto/notification-preference.input.ts +46 -0
- package/src/lib/notification/notification-delivery-scheduler.service.ts +69 -0
- package/src/lib/notification/notification-delivery.service.spec.ts +315 -0
- package/src/lib/notification/notification-delivery.service.ts +339 -0
- package/src/lib/notification/notification-dispatcher.token.ts +13 -0
- package/src/lib/notification/notification-options.module.ts +67 -0
- package/src/lib/notification/notification-options.spec.ts +93 -0
- package/src/lib/notification/notification-options.ts +452 -0
- package/src/lib/notification/notification-preference.entity.ts +35 -0
- package/src/lib/notification/notification-sla-scheduler.service.ts +66 -0
- package/src/lib/notification/notification-template.spec.ts +33 -0
- package/src/lib/notification/notification-template.ts +97 -0
- package/src/lib/notification/notification.entity.ts +102 -0
- package/src/lib/notification/notification.enums.ts +45 -0
- package/src/lib/notification/notification.module.ts +37 -0
- package/src/lib/notification/notification.mutations.ts +47 -0
- package/src/lib/notification/notification.queries.ts +64 -0
- package/src/lib/notification/notification.service.spec.ts +412 -0
- package/src/lib/notification/notification.service.ts +974 -0
- package/src/lib/organization/dto/manager-resolution.input.ts +91 -0
- package/src/lib/organization/dto/membership.input.ts +77 -0
- package/src/lib/organization/dto/org-unit.input.ts +96 -0
- package/src/lib/organization/dto/position.input.ts +50 -0
- package/src/lib/organization/json-metadata.ts +15 -0
- package/src/lib/organization/manager-resolution.entity.ts +44 -0
- package/src/lib/organization/membership.entity.ts +50 -0
- package/src/lib/organization/org-unit-tree-commit-result.object.ts +8 -0
- package/src/lib/organization/org-unit.entity.ts +53 -0
- package/src/lib/organization/organization-summary.object.ts +16 -0
- package/src/lib/organization/organization.enums.ts +19 -0
- package/src/lib/organization/organization.module.ts +27 -0
- package/src/lib/organization/organization.mutations.ts +115 -0
- package/src/lib/organization/organization.queries.ts +188 -0
- package/src/lib/organization/organization.service.spec.ts +760 -0
- package/src/lib/organization/organization.service.ts +1216 -0
- package/src/lib/organization/position.entity.ts +39 -0
- package/src/lib/organization/resolved-manager.object.ts +10 -0
- package/src/lib/signature/signature-options.spec.ts +60 -0
- package/src/lib/signature/signature-options.ts +120 -0
- package/src/lib/signature/signature-verification.object.ts +16 -0
- package/src/lib/signature/signature.entity.ts +62 -0
- package/src/lib/signature/signature.module.ts +80 -0
- package/src/lib/signature/signature.queries.ts +37 -0
- package/src/lib/signature/signature.service.spec.ts +134 -0
- package/src/lib/signature/signature.service.ts +205 -0
- package/src/lib/template/approval-template-category.entity.ts +40 -0
- package/src/lib/template/approval-template-version.entity.ts +82 -0
- package/src/lib/template/approval-template.entity.ts +64 -0
- package/src/lib/template/dto/approval-template.input.ts +147 -0
- package/src/lib/template/template.enums.ts +30 -0
- package/src/lib/template/template.module.ts +25 -0
- package/src/lib/template/template.mutations.ts +106 -0
- package/src/lib/template/template.queries.ts +119 -0
- package/src/lib/template/template.service.spec.ts +476 -0
- package/src/lib/template/template.service.ts +820 -0
- package/src/lib/template/workflow-definition.validator.spec.ts +595 -0
- package/src/lib/template/workflow-definition.validator.ts +539 -0
- package/src/lib/testing/cel-js.jest.ts +46 -0
- package/src/lib/workflow-engine/activity-log.entity.ts +48 -0
- package/src/lib/workflow-engine/approval-instance-page-info.object.ts +22 -0
- package/src/lib/workflow-engine/approval-instance.entity.ts +86 -0
- package/src/lib/workflow-engine/dto/cancel-approval-instance.input.ts +18 -0
- package/src/lib/workflow-engine/dto/decide-task.input.ts +33 -0
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.ts +22 -0
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.ts +22 -0
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.ts +27 -0
- package/src/lib/workflow-engine/task-candidate.entity.ts +56 -0
- package/src/lib/workflow-engine/task-decision.entity.ts +43 -0
- package/src/lib/workflow-engine/task.entity.ts +85 -0
- package/src/lib/workflow-engine/workflow-condition-evaluator.ts +168 -0
- package/src/lib/workflow-engine/workflow-dashboard-summary.object.ts +22 -0
- package/src/lib/workflow-engine/workflow-dry-run.object.ts +58 -0
- package/src/lib/workflow-engine/workflow-engine.enums.ts +99 -0
- package/src/lib/workflow-engine/workflow-engine.module.ts +75 -0
- package/src/lib/workflow-engine/workflow-engine.mutations.ts +85 -0
- package/src/lib/workflow-engine/workflow-engine.queries.ts +229 -0
- package/src/lib/workflow-engine/workflow-engine.service.spec.ts +2689 -0
- package/src/lib/workflow-engine/workflow-engine.service.ts +4707 -0
- package/src/lib/workflow-engine/{workflow-engine.tokens.d.ts → workflow-engine.tokens.ts} +9 -3
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.ts +69 -0
- package/src/lib/workflow-engine/workflow-token.entity.ts +40 -0
- package/tsconfig.json +24 -0
- package/tsconfig.lib.json +16 -0
- package/tsconfig.spec.json +16 -0
- package/LICENSE +0 -21
- package/src/index.js +0 -18
- package/src/index.js.map +0 -1
- package/src/lib/attachment/attachment-options.d.ts +0 -44
- package/src/lib/attachment/attachment-options.js +0 -62
- package/src/lib/attachment/attachment-options.js.map +0 -1
- package/src/lib/attachment/attachment-storage.provider.d.ts +0 -4
- package/src/lib/attachment/attachment-storage.provider.js +0 -35
- package/src/lib/attachment/attachment-storage.provider.js.map +0 -1
- package/src/lib/attachment/attachment-storage.token.js +0 -5
- package/src/lib/attachment/attachment-storage.token.js.map +0 -1
- package/src/lib/attachment/attachment.controller.d.ts +0 -8
- package/src/lib/attachment/attachment.controller.js +0 -38
- package/src/lib/attachment/attachment.controller.js.map +0 -1
- package/src/lib/attachment/attachment.entity.d.ts +0 -14
- package/src/lib/attachment/attachment.entity.js +0 -74
- package/src/lib/attachment/attachment.entity.js.map +0 -1
- package/src/lib/attachment/attachment.module.d.ts +0 -27
- package/src/lib/attachment/attachment.module.js +0 -103
- package/src/lib/attachment/attachment.module.js.map +0 -1
- package/src/lib/attachment/attachment.mutations.d.ts +0 -8
- package/src/lib/attachment/attachment.mutations.js +0 -35
- package/src/lib/attachment/attachment.mutations.js.map +0 -1
- package/src/lib/attachment/attachment.queries.d.ts +0 -9
- package/src/lib/attachment/attachment.queries.js +0 -78
- package/src/lib/attachment/attachment.queries.js.map +0 -1
- package/src/lib/attachment/attachment.service.d.ts +0 -49
- package/src/lib/attachment/attachment.service.js +0 -276
- package/src/lib/attachment/attachment.service.js.map +0 -1
- package/src/lib/attachment/dto/upload-attachment.input.d.ts +0 -11
- package/src/lib/attachment/dto/upload-attachment.input.js +0 -68
- package/src/lib/attachment/dto/upload-attachment.input.js.map +0 -1
- package/src/lib/attachment/index.js +0 -9
- package/src/lib/attachment/index.js.map +0 -1
- package/src/lib/bpm/bpm-root.module.d.ts +0 -155
- package/src/lib/bpm/bpm-root.module.js +0 -170
- package/src/lib/bpm/bpm-root.module.js.map +0 -1
- package/src/lib/bpm/index.js +0 -5
- package/src/lib/bpm/index.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth-context.d.ts +0 -24
- package/src/lib/bpm-auth/bpm-auth-context.extractor.d.ts +0 -4
- package/src/lib/bpm-auth/bpm-auth-context.extractor.js +0 -69
- package/src/lib/bpm-auth/bpm-auth-context.extractor.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth-context.js +0 -15
- package/src/lib/bpm-auth/bpm-auth-context.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth.authorization.d.ts +0 -12
- package/src/lib/bpm-auth/bpm-auth.authorization.js +0 -67
- package/src/lib/bpm-auth/bpm-auth.authorization.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth.decorators.d.ts +0 -3
- package/src/lib/bpm-auth/bpm-auth.decorators.js +0 -11
- package/src/lib/bpm-auth/bpm-auth.decorators.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth.guard.d.ts +0 -7
- package/src/lib/bpm-auth/bpm-auth.guard.js +0 -24
- package/src/lib/bpm-auth/bpm-auth.guard.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth.module.d.ts +0 -6
- package/src/lib/bpm-auth/bpm-auth.module.js +0 -69
- package/src/lib/bpm-auth/bpm-auth.module.js.map +0 -1
- package/src/lib/bpm-auth/bpm-auth.options.d.ts +0 -11
- package/src/lib/bpm-auth/bpm-auth.options.js +0 -3
- package/src/lib/bpm-auth/bpm-auth.options.js.map +0 -1
- package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.d.ts +0 -10
- package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js +0 -40
- package/src/lib/bpm-auth/configurable-bpm-auth-context.accessor.js.map +0 -1
- package/src/lib/bpm-auth/index.js +0 -10
- package/src/lib/bpm-auth/index.js.map +0 -1
- package/src/lib/common/filters/all-exceptions.filter.d.ts +0 -25
- package/src/lib/common/filters/all-exceptions.filter.js +0 -93
- package/src/lib/common/filters/all-exceptions.filter.js.map +0 -1
- package/src/lib/common/index.js +0 -5
- package/src/lib/common/index.js.map +0 -1
- package/src/lib/common/iso-duration.d.ts +0 -1
- package/src/lib/common/iso-duration.js +0 -27
- package/src/lib/common/iso-duration.js.map +0 -1
- package/src/lib/condition/condition.module.d.ts +0 -2
- package/src/lib/condition/condition.module.js +0 -16
- package/src/lib/condition/condition.module.js.map +0 -1
- package/src/lib/condition/condition.service.d.ts +0 -16
- package/src/lib/condition/condition.service.js +0 -82
- package/src/lib/condition/condition.service.js.map +0 -1
- package/src/lib/condition/index.js +0 -6
- package/src/lib/condition/index.js.map +0 -1
- package/src/lib/database/data-source.d.ts +0 -4
- package/src/lib/database/data-source.js +0 -7
- package/src/lib/database/data-source.js.map +0 -1
- package/src/lib/database/index.js +0 -6
- package/src/lib/database/index.js.map +0 -1
- package/src/lib/database/migration-runner.d.ts +0 -1
- package/src/lib/database/migration-runner.js +0 -23
- package/src/lib/database/migration-runner.js.map +0 -1
- package/src/lib/database/typeorm.config.d.ts +0 -14
- package/src/lib/database/typeorm.config.js +0 -135
- package/src/lib/database/typeorm.config.js.map +0 -1
- package/src/lib/delegation/delegation-rule.entity.d.ts +0 -19
- package/src/lib/delegation/delegation-rule.entity.js +0 -99
- package/src/lib/delegation/delegation-rule.entity.js.map +0 -1
- package/src/lib/delegation/delegation.enums.d.ts +0 -10
- package/src/lib/delegation/delegation.enums.js +0 -23
- package/src/lib/delegation/delegation.enums.js.map +0 -1
- package/src/lib/delegation/delegation.module.d.ts +0 -2
- package/src/lib/delegation/delegation.module.js +0 -22
- package/src/lib/delegation/delegation.module.js.map +0 -1
- package/src/lib/delegation/delegation.mutations.d.ts +0 -11
- package/src/lib/delegation/delegation.mutations.js +0 -87
- package/src/lib/delegation/delegation.mutations.js.map +0 -1
- package/src/lib/delegation/delegation.queries.d.ts +0 -10
- package/src/lib/delegation/delegation.queries.js +0 -91
- package/src/lib/delegation/delegation.queries.js.map +0 -1
- package/src/lib/delegation/delegation.service.d.ts +0 -56
- package/src/lib/delegation/delegation.service.js +0 -268
- package/src/lib/delegation/delegation.service.js.map +0 -1
- package/src/lib/delegation/dto/delegation-rule.input.d.ts +0 -24
- package/src/lib/delegation/dto/delegation-rule.input.js +0 -143
- package/src/lib/delegation/dto/delegation-rule.input.js.map +0 -1
- package/src/lib/delegation/index.js +0 -9
- package/src/lib/delegation/index.js.map +0 -1
- package/src/lib/form/dto/form-definition.input.d.ts +0 -21
- package/src/lib/form/dto/form-definition.input.js +0 -103
- package/src/lib/form/dto/form-definition.input.js.map +0 -1
- package/src/lib/form/form-definition-version.entity.d.ts +0 -17
- package/src/lib/form/form-definition-version.entity.js +0 -84
- package/src/lib/form/form-definition-version.entity.js.map +0 -1
- package/src/lib/form/form-definition.entity.d.ts +0 -13
- package/src/lib/form/form-definition.entity.js +0 -66
- package/src/lib/form/form-definition.entity.js.map +0 -1
- package/src/lib/form/form-schema-lint.object.d.ts +0 -4
- package/src/lib/form/form-schema-lint.object.js +0 -20
- package/src/lib/form/form-schema-lint.object.js.map +0 -1
- package/src/lib/form/form-schema.validator.d.ts +0 -13
- package/src/lib/form/form-schema.validator.js +0 -354
- package/src/lib/form/form-schema.validator.js.map +0 -1
- package/src/lib/form/form.enums.d.ts +0 -9
- package/src/lib/form/form.enums.js +0 -22
- package/src/lib/form/form.enums.js.map +0 -1
- package/src/lib/form/form.module.d.ts +0 -2
- package/src/lib/form/form.module.js +0 -27
- package/src/lib/form/form.module.js.map +0 -1
- package/src/lib/form/form.mutations.d.ts +0 -14
- package/src/lib/form/form.mutations.js +0 -88
- package/src/lib/form/form.mutations.js.map +0 -1
- package/src/lib/form/form.queries.d.ts +0 -16
- package/src/lib/form/form.queries.js +0 -96
- package/src/lib/form/form.queries.js.map +0 -1
- package/src/lib/form/form.service.d.ts +0 -35
- package/src/lib/form/form.service.js +0 -297
- package/src/lib/form/form.service.js.map +0 -1
- package/src/lib/form/index.js +0 -12
- package/src/lib/form/index.js.map +0 -1
- package/src/lib/identity/identity-options.d.ts +0 -13
- package/src/lib/identity/identity-options.js +0 -20
- package/src/lib/identity/identity-options.js.map +0 -1
- package/src/lib/identity/identity.module.d.ts +0 -17
- package/src/lib/identity/identity.module.js +0 -65
- package/src/lib/identity/identity.module.js.map +0 -1
- package/src/lib/identity/identity.queries.d.ts +0 -12
- package/src/lib/identity/identity.queries.js +0 -79
- package/src/lib/identity/identity.queries.js.map +0 -1
- package/src/lib/identity/identity.service.d.ts +0 -22
- package/src/lib/identity/identity.service.js +0 -141
- package/src/lib/identity/identity.service.js.map +0 -1
- package/src/lib/identity/index.js +0 -7
- package/src/lib/identity/index.js.map +0 -1
- package/src/lib/identity/member-base.adapter.d.ts +0 -95
- package/src/lib/identity/member-base.adapter.js +0 -137
- package/src/lib/identity/member-base.adapter.js.map +0 -1
- package/src/lib/identity/member-metadata-cache.entity.d.ts +0 -8
- package/src/lib/identity/member-metadata-cache.entity.js +0 -39
- package/src/lib/identity/member-metadata-cache.entity.js.map +0 -1
- package/src/lib/identity/member-profile.object.d.ts +0 -8
- package/src/lib/identity/member-profile.object.js +0 -37
- package/src/lib/identity/member-profile.object.js.map +0 -1
- package/src/lib/identity/member-resolver.interface.js +0 -19
- package/src/lib/identity/member-resolver.interface.js.map +0 -1
- package/src/lib/migrations/0000000000001-enable-postgres-extensions.d.ts +0 -6
- package/src/lib/migrations/0000000000001-enable-postgres-extensions.js +0 -17
- package/src/lib/migrations/0000000000001-enable-postgres-extensions.js.map +0 -1
- package/src/lib/migrations/0000000001000-identity-organization-foundation.d.ts +0 -6
- package/src/lib/migrations/0000000001000-identity-organization-foundation.js.map +0 -1
- package/src/lib/migrations/0000000002000-form-builder-foundation.d.ts +0 -6
- package/src/lib/migrations/0000000002000-form-builder-foundation.js.map +0 -1
- package/src/lib/migrations/0000000003000-approval-template-foundation.d.ts +0 -6
- package/src/lib/migrations/0000000003000-approval-template-foundation.js.map +0 -1
- package/src/lib/migrations/0000000004000-workflow-engine-foundation.d.ts +0 -6
- package/src/lib/migrations/0000000004000-workflow-engine-foundation.js.map +0 -1
- package/src/lib/migrations/0000000005000-delegation-rules.d.ts +0 -6
- package/src/lib/migrations/0000000005000-delegation-rules.js.map +0 -1
- package/src/lib/migrations/0000000006000-notifications-sla.d.ts +0 -6
- package/src/lib/migrations/0000000006000-notifications-sla.js.map +0 -1
- package/src/lib/migrations/0000000007000-signatures-attachments.d.ts +0 -6
- package/src/lib/migrations/0000000007000-signatures-attachments.js.map +0 -1
- package/src/lib/migrations/0000000008000-approval-template-categories.d.ts +0 -6
- package/src/lib/migrations/0000000008000-approval-template-categories.js.map +0 -1
- package/src/lib/migrations/0000000009000-task-candidates.d.ts +0 -6
- package/src/lib/migrations/0000000009000-task-candidates.js.map +0 -1
- package/src/lib/migrations/0000000010000-notification-delivery-state.d.ts +0 -6
- package/src/lib/migrations/0000000010000-notification-delivery-state.js.map +0 -1
- package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.d.ts +0 -6
- package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js +0 -22
- package/src/lib/migrations/0000000011000-remove-attachment-encryption-key.js.map +0 -1
- package/src/lib/migrations/0000000012000-notification-sla-idempotency.d.ts +0 -6
- package/src/lib/migrations/0000000012000-notification-sla-idempotency.js +0 -21
- package/src/lib/migrations/0000000012000-notification-sla-idempotency.js.map +0 -1
- package/src/lib/migrations/0000000013000-workflow-query-indexes.d.ts +0 -6
- package/src/lib/migrations/0000000013000-workflow-query-indexes.js +0 -80
- package/src/lib/migrations/0000000013000-workflow-query-indexes.js.map +0 -1
- package/src/lib/migrations/index.d.ts +0 -16
- package/src/lib/migrations/index.js +0 -49
- package/src/lib/migrations/index.js.map +0 -1
- package/src/lib/notification/dto/notification-preference.input.d.ts +0 -9
- package/src/lib/notification/dto/notification-preference.input.js +0 -53
- package/src/lib/notification/dto/notification-preference.input.js.map +0 -1
- package/src/lib/notification/index.js +0 -11
- package/src/lib/notification/index.js.map +0 -1
- package/src/lib/notification/notification-delivery-scheduler.service.d.ts +0 -13
- package/src/lib/notification/notification-delivery-scheduler.service.js +0 -53
- package/src/lib/notification/notification-delivery-scheduler.service.js.map +0 -1
- package/src/lib/notification/notification-delivery.service.d.ts +0 -23
- package/src/lib/notification/notification-delivery.service.js +0 -245
- package/src/lib/notification/notification-delivery.service.js.map +0 -1
- package/src/lib/notification/notification-dispatcher.token.d.ts +0 -7
- package/src/lib/notification/notification-dispatcher.token.js +0 -5
- package/src/lib/notification/notification-dispatcher.token.js.map +0 -1
- package/src/lib/notification/notification-options.d.ts +0 -215
- package/src/lib/notification/notification-options.js +0 -128
- package/src/lib/notification/notification-options.js.map +0 -1
- package/src/lib/notification/notification-options.module.d.ts +0 -23
- package/src/lib/notification/notification-options.module.js +0 -41
- package/src/lib/notification/notification-options.module.js.map +0 -1
- package/src/lib/notification/notification-preference.entity.d.ts +0 -10
- package/src/lib/notification/notification-preference.entity.js +0 -50
- package/src/lib/notification/notification-preference.entity.js.map +0 -1
- package/src/lib/notification/notification-sla-scheduler.service.d.ts +0 -13
- package/src/lib/notification/notification-sla-scheduler.service.js +0 -51
- package/src/lib/notification/notification-sla-scheduler.service.js.map +0 -1
- package/src/lib/notification/notification-template.d.ts +0 -13
- package/src/lib/notification/notification-template.js +0 -61
- package/src/lib/notification/notification-template.js.map +0 -1
- package/src/lib/notification/notification.entity.d.ts +0 -23
- package/src/lib/notification/notification.entity.js +0 -122
- package/src/lib/notification/notification.entity.js.map +0 -1
- package/src/lib/notification/notification.enums.d.ts +0 -24
- package/src/lib/notification/notification.enums.js +0 -45
- package/src/lib/notification/notification.enums.js.map +0 -1
- package/src/lib/notification/notification.module.d.ts +0 -2
- package/src/lib/notification/notification.module.js +0 -45
- package/src/lib/notification/notification.module.js.map +0 -1
- package/src/lib/notification/notification.mutations.d.ts +0 -11
- package/src/lib/notification/notification.mutations.js +0 -64
- package/src/lib/notification/notification.mutations.js.map +0 -1
- package/src/lib/notification/notification.queries.d.ts +0 -11
- package/src/lib/notification/notification.queries.js +0 -77
- package/src/lib/notification/notification.queries.js.map +0 -1
- package/src/lib/notification/notification.service.d.ts +0 -81
- package/src/lib/notification/notification.service.js +0 -621
- package/src/lib/notification/notification.service.js.map +0 -1
- package/src/lib/organization/dto/manager-resolution.input.d.ts +0 -18
- package/src/lib/organization/dto/manager-resolution.input.js +0 -107
- package/src/lib/organization/dto/manager-resolution.input.js.map +0 -1
- package/src/lib/organization/dto/membership.input.d.ts +0 -16
- package/src/lib/organization/dto/membership.input.js +0 -99
- package/src/lib/organization/dto/membership.input.js.map +0 -1
- package/src/lib/organization/dto/org-unit.input.d.ts +0 -24
- package/src/lib/organization/dto/org-unit.input.js +0 -119
- package/src/lib/organization/dto/org-unit.input.js.map +0 -1
- package/src/lib/organization/dto/position.input.d.ts +0 -13
- package/src/lib/organization/dto/position.input.js +0 -70
- package/src/lib/organization/dto/position.input.js.map +0 -1
- package/src/lib/organization/index.js +0 -16
- package/src/lib/organization/index.js.map +0 -1
- package/src/lib/organization/json-metadata.d.ts +0 -1
- package/src/lib/organization/json-metadata.js +0 -14
- package/src/lib/organization/json-metadata.js.map +0 -1
- package/src/lib/organization/manager-resolution.entity.d.ts +0 -11
- package/src/lib/organization/manager-resolution.entity.js +0 -55
- package/src/lib/organization/manager-resolution.entity.js.map +0 -1
- package/src/lib/organization/membership.entity.d.ts +0 -11
- package/src/lib/organization/membership.entity.js +0 -60
- package/src/lib/organization/membership.entity.js.map +0 -1
- package/src/lib/organization/org-unit-tree-commit-result.object.d.ts +0 -4
- package/src/lib/organization/org-unit-tree-commit-result.object.js +0 -17
- package/src/lib/organization/org-unit-tree-commit-result.object.js.map +0 -1
- package/src/lib/organization/org-unit.entity.d.ts +0 -13
- package/src/lib/organization/org-unit.entity.js +0 -64
- package/src/lib/organization/org-unit.entity.js.map +0 -1
- package/src/lib/organization/organization-summary.object.d.ts +0 -6
- package/src/lib/organization/organization-summary.object.js +0 -28
- package/src/lib/organization/organization-summary.object.js.map +0 -1
- package/src/lib/organization/organization.enums.d.ts +0 -11
- package/src/lib/organization/organization.enums.js +0 -22
- package/src/lib/organization/organization.enums.js.map +0 -1
- package/src/lib/organization/organization.module.d.ts +0 -2
- package/src/lib/organization/organization.module.js +0 -35
- package/src/lib/organization/organization.module.js.map +0 -1
- package/src/lib/organization/organization.mutations.d.ts +0 -26
- package/src/lib/organization/organization.mutations.js +0 -148
- package/src/lib/organization/organization.mutations.js.map +0 -1
- package/src/lib/organization/organization.queries.d.ts +0 -23
- package/src/lib/organization/organization.queries.js +0 -202
- package/src/lib/organization/organization.queries.js.map +0 -1
- package/src/lib/organization/organization.service.d.ts +0 -102
- package/src/lib/organization/organization.service.js +0 -751
- package/src/lib/organization/organization.service.js.map +0 -1
- package/src/lib/organization/position.entity.d.ts +0 -9
- package/src/lib/organization/position.entity.js +0 -48
- package/src/lib/organization/position.entity.js.map +0 -1
- package/src/lib/organization/resolved-manager.object.d.ts +0 -4
- package/src/lib/organization/resolved-manager.object.js +0 -20
- package/src/lib/organization/resolved-manager.object.js.map +0 -1
- package/src/lib/signature/index.js +0 -8
- package/src/lib/signature/index.js.map +0 -1
- package/src/lib/signature/signature-options.d.ts +0 -33
- package/src/lib/signature/signature-options.js +0 -51
- package/src/lib/signature/signature-options.js.map +0 -1
- package/src/lib/signature/signature-verification.object.d.ts +0 -6
- package/src/lib/signature/signature-verification.object.js +0 -28
- package/src/lib/signature/signature-verification.object.js.map +0 -1
- package/src/lib/signature/signature.entity.d.ts +0 -16
- package/src/lib/signature/signature.entity.js +0 -88
- package/src/lib/signature/signature.entity.js.map +0 -1
- package/src/lib/signature/signature.module.d.ts +0 -11
- package/src/lib/signature/signature.module.js +0 -60
- package/src/lib/signature/signature.module.js.map +0 -1
- package/src/lib/signature/signature.queries.d.ts +0 -11
- package/src/lib/signature/signature.queries.js +0 -46
- package/src/lib/signature/signature.queries.js.map +0 -1
- package/src/lib/signature/signature.service.d.ts +0 -25
- package/src/lib/signature/signature.service.js +0 -124
- package/src/lib/signature/signature.service.js.map +0 -1
- package/src/lib/template/approval-template-category.entity.d.ts +0 -9
- package/src/lib/template/approval-template-category.entity.js +0 -49
- package/src/lib/template/approval-template-category.entity.js.map +0 -1
- package/src/lib/template/approval-template-version.entity.d.ts +0 -21
- package/src/lib/template/approval-template-version.entity.js +0 -106
- package/src/lib/template/approval-template-version.entity.js.map +0 -1
- package/src/lib/template/approval-template.entity.d.ts +0 -14
- package/src/lib/template/approval-template.entity.js +0 -74
- package/src/lib/template/approval-template.entity.js.map +0 -1
- package/src/lib/template/dto/approval-template.input.d.ts +0 -36
- package/src/lib/template/dto/approval-template.input.js +0 -187
- package/src/lib/template/dto/approval-template.input.js.map +0 -1
- package/src/lib/template/index.js +0 -12
- package/src/lib/template/index.js.map +0 -1
- package/src/lib/template/template.enums.d.ts +0 -14
- package/src/lib/template/template.enums.js +0 -31
- package/src/lib/template/template.enums.js.map +0 -1
- package/src/lib/template/template.module.d.ts +0 -2
- package/src/lib/template/template.module.js +0 -33
- package/src/lib/template/template.module.js.map +0 -1
- package/src/lib/template/template.mutations.d.ts +0 -20
- package/src/lib/template/template.mutations.js +0 -139
- package/src/lib/template/template.mutations.js.map +0 -1
- package/src/lib/template/template.queries.d.ts +0 -16
- package/src/lib/template/template.queries.js +0 -133
- package/src/lib/template/template.queries.js.map +0 -1
- package/src/lib/template/template.service.d.ts +0 -64
- package/src/lib/template/template.service.js +0 -521
- package/src/lib/template/template.service.js.map +0 -1
- package/src/lib/template/workflow-definition.validator.d.ts +0 -9
- package/src/lib/template/workflow-definition.validator.js +0 -362
- package/src/lib/template/workflow-definition.validator.js.map +0 -1
- package/src/lib/testing/cel-js.jest.d.ts +0 -15
- package/src/lib/testing/cel-js.jest.js +0 -27
- package/src/lib/testing/cel-js.jest.js.map +0 -1
- package/src/lib/workflow-engine/activity-log.entity.d.ts +0 -12
- package/src/lib/workflow-engine/activity-log.entity.js +0 -62
- package/src/lib/workflow-engine/activity-log.entity.js.map +0 -1
- package/src/lib/workflow-engine/approval-instance-page-info.object.d.ts +0 -8
- package/src/lib/workflow-engine/approval-instance-page-info.object.js +0 -36
- package/src/lib/workflow-engine/approval-instance-page-info.object.js.map +0 -1
- package/src/lib/workflow-engine/approval-instance.entity.d.ts +0 -22
- package/src/lib/workflow-engine/approval-instance.entity.js +0 -113
- package/src/lib/workflow-engine/approval-instance.entity.js.map +0 -1
- package/src/lib/workflow-engine/dto/cancel-approval-instance.input.d.ts +0 -5
- package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js +0 -29
- package/src/lib/workflow-engine/dto/cancel-approval-instance.input.js.map +0 -1
- package/src/lib/workflow-engine/dto/decide-task.input.d.ts +0 -9
- package/src/lib/workflow-engine/dto/decide-task.input.js +0 -47
- package/src/lib/workflow-engine/dto/decide-task.input.js.map +0 -1
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.d.ts +0 -6
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js +0 -34
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js.map +0 -1
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.d.ts +0 -6
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js +0 -34
- package/src/lib/workflow-engine/dto/resubmit-approval-instance.input.js.map +0 -1
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.d.ts +0 -7
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.js +0 -40
- package/src/lib/workflow-engine/dto/submit-approval-instance.input.js.map +0 -1
- package/src/lib/workflow-engine/index.js +0 -24
- package/src/lib/workflow-engine/index.js.map +0 -1
- package/src/lib/workflow-engine/task-candidate.entity.d.ts +0 -14
- package/src/lib/workflow-engine/task-candidate.entity.js +0 -72
- package/src/lib/workflow-engine/task-candidate.entity.js.map +0 -1
- package/src/lib/workflow-engine/task-decision.entity.d.ts +0 -12
- package/src/lib/workflow-engine/task-decision.entity.js +0 -60
- package/src/lib/workflow-engine/task-decision.entity.js.map +0 -1
- package/src/lib/workflow-engine/task.entity.d.ts +0 -20
- package/src/lib/workflow-engine/task.entity.js +0 -109
- package/src/lib/workflow-engine/task.entity.js.map +0 -1
- package/src/lib/workflow-engine/workflow-condition-evaluator.d.ts +0 -5
- package/src/lib/workflow-engine/workflow-condition-evaluator.js +0 -107
- package/src/lib/workflow-engine/workflow-condition-evaluator.js.map +0 -1
- package/src/lib/workflow-engine/workflow-dashboard-summary.object.d.ts +0 -8
- package/src/lib/workflow-engine/workflow-dashboard-summary.object.js +0 -36
- package/src/lib/workflow-engine/workflow-dashboard-summary.object.js.map +0 -1
- package/src/lib/workflow-engine/workflow-dry-run.object.d.ts +0 -21
- package/src/lib/workflow-engine/workflow-dry-run.object.js +0 -86
- package/src/lib/workflow-engine/workflow-dry-run.object.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.enums.d.ts +0 -58
- package/src/lib/workflow-engine/workflow-engine.enums.js +0 -95
- package/src/lib/workflow-engine/workflow-engine.enums.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.module.d.ts +0 -9
- package/src/lib/workflow-engine/workflow-engine.module.js +0 -76
- package/src/lib/workflow-engine/workflow-engine.module.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +0 -19
- package/src/lib/workflow-engine/workflow-engine.mutations.js +0 -106
- package/src/lib/workflow-engine/workflow-engine.mutations.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.queries.d.ts +0 -29
- package/src/lib/workflow-engine/workflow-engine.queries.js +0 -225
- package/src/lib/workflow-engine/workflow-engine.queries.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +0 -145
- package/src/lib/workflow-engine/workflow-engine.service.js +0 -2785
- package/src/lib/workflow-engine/workflow-engine.service.js.map +0 -1
- package/src/lib/workflow-engine/workflow-engine.tokens.js +0 -5
- package/src/lib/workflow-engine/workflow-engine.tokens.js.map +0 -1
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.d.ts +0 -18
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js +0 -39
- package/src/lib/workflow-engine/workflow-service-task-dispatcher.token.js.map +0 -1
- package/src/lib/workflow-engine/workflow-token.entity.d.ts +0 -10
- package/src/lib/workflow-engine/workflow-token.entity.js +0 -50
- package/src/lib/workflow-engine/workflow-token.entity.js.map +0 -1
- /package/src/{index.d.ts → index.ts} +0 -0
- /package/src/lib/attachment/{index.d.ts → index.ts} +0 -0
- /package/src/lib/bpm/{index.d.ts → index.ts} +0 -0
- /package/src/lib/bpm-auth/{index.d.ts → index.ts} +0 -0
- /package/src/lib/common/{index.d.ts → index.ts} +0 -0
- /package/src/lib/condition/{index.d.ts → index.ts} +0 -0
- /package/src/lib/database/{index.d.ts → index.ts} +0 -0
- /package/src/lib/delegation/{index.d.ts → index.ts} +0 -0
- /package/src/lib/form/{index.d.ts → index.ts} +0 -0
- /package/src/lib/identity/{index.d.ts → index.ts} +0 -0
- /package/src/lib/notification/{index.d.ts → index.ts} +0 -0
- /package/src/lib/organization/{index.d.ts → index.ts} +0 -0
- /package/src/lib/signature/{index.d.ts → index.ts} +0 -0
- /package/src/lib/template/{index.d.ts → index.ts} +0 -0
- /package/src/lib/workflow-engine/{index.d.ts → index.ts} +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { InjectionToken, Provider } from '@nestjs/common';
|
|
2
|
+
import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
3
|
+
import { BPMAuthContext } from '../bpm-auth';
|
|
4
|
+
import { BPMMemberResolver } from './member-resolver.interface';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Structural contract a host identity backend should implement (or a thin
|
|
8
|
+
* adapter wrap) so BPM can be plugged into any `member-base`-style
|
|
9
|
+
* directory without coupling `@rytass/bpm-core-nestjs-module` to a
|
|
10
|
+
* specific identity package.
|
|
11
|
+
*
|
|
12
|
+
* `TMember` is the host's own member shape; the adapter walks it through
|
|
13
|
+
* {@link BPMMemberBaseAdapterOptions} field readers.
|
|
14
|
+
*/
|
|
15
|
+
export interface BPMMemberBaseDirectory<TMember> {
|
|
16
|
+
readonly resolveMember: (memberId: string) => Promise<TMember | null>;
|
|
17
|
+
readonly resolveMembers?: (
|
|
18
|
+
memberIds: readonly string[],
|
|
19
|
+
) => Promise<readonly TMember[]>;
|
|
20
|
+
readonly searchMembers?: (searchText: string) => Promise<readonly TMember[]>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Per-host field readers that tell the adapter how to extract canonical
|
|
25
|
+
* BPM fields out of the host's `TMember`. Each reader is optional;
|
|
26
|
+
* sensible defaults are inferred when the host uses common conventions
|
|
27
|
+
* (`memberId` / `id` / `sub` for the member id, `email` for the email,
|
|
28
|
+
* `name` / `displayName` for the name, etc.).
|
|
29
|
+
*
|
|
30
|
+
* Provide `readPermissions` and `readRoles` if you want BPM's
|
|
31
|
+
* `BPMAdminGuard` / `BPMDesignerGuard` to receive the host's RBAC
|
|
32
|
+
* strings; otherwise the resolved `BPMAuthContext` will carry empty
|
|
33
|
+
* arrays.
|
|
34
|
+
*/
|
|
35
|
+
export interface BPMMemberBaseAdapterOptions<TMember> {
|
|
36
|
+
readonly readCustomFields?: (
|
|
37
|
+
member: TMember,
|
|
38
|
+
) => Readonly<Record<string, unknown>>;
|
|
39
|
+
readonly readEmail?: (member: TMember) => string | null;
|
|
40
|
+
readonly readMemberId?: (member: TMember) => string | null;
|
|
41
|
+
readonly readName?: (member: TMember) => string | null;
|
|
42
|
+
readonly readPermissions?: (member: TMember) => readonly string[];
|
|
43
|
+
readonly readRoles?: (member: TMember) => readonly string[];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface BPMMemberBaseResolverProviderOptions<TMember> {
|
|
47
|
+
readonly adapterOptions?: BPMMemberBaseAdapterOptions<TMember>;
|
|
48
|
+
readonly directoryToken: InjectionToken<BPMMemberBaseDirectory<TMember>>;
|
|
49
|
+
readonly provide: InjectionToken<BPMMemberResolver>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export class BPMMemberBaseResolverAdapter<TMember>
|
|
53
|
+
implements BPMMemberResolver
|
|
54
|
+
{
|
|
55
|
+
constructor(
|
|
56
|
+
private readonly directory: BPMMemberBaseDirectory<TMember>,
|
|
57
|
+
private readonly options: BPMMemberBaseAdapterOptions<TMember> = {},
|
|
58
|
+
) {}
|
|
59
|
+
|
|
60
|
+
async resolve(memberId: string): Promise<MemberMetadata> {
|
|
61
|
+
const member = await this.directory.resolveMember(memberId);
|
|
62
|
+
|
|
63
|
+
if (!member) {
|
|
64
|
+
throw new Error(`member-base member ${memberId} was not found`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return readMemberMetadataFromMemberBaseMember(member, this.options);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async resolveMany(
|
|
71
|
+
memberIds: readonly string[],
|
|
72
|
+
): Promise<ReadonlyMap<string, MemberMetadata>> {
|
|
73
|
+
const members = this.directory.resolveMembers
|
|
74
|
+
? await this.directory.resolveMembers(memberIds)
|
|
75
|
+
: await Promise.all(
|
|
76
|
+
memberIds.map((memberId): Promise<TMember | null> =>
|
|
77
|
+
this.directory.resolveMember(memberId),
|
|
78
|
+
),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
return members
|
|
82
|
+
.filter((member): member is TMember => Boolean(member))
|
|
83
|
+
.map((member): MemberMetadata =>
|
|
84
|
+
readMemberMetadataFromMemberBaseMember(member, this.options),
|
|
85
|
+
)
|
|
86
|
+
.reduce<ReadonlyMap<string, MemberMetadata>>(
|
|
87
|
+
(metadataByMemberId, metadata): ReadonlyMap<string, MemberMetadata> =>
|
|
88
|
+
new Map(metadataByMemberId).set(metadata.memberId, metadata),
|
|
89
|
+
new Map(),
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async search(searchText: string): Promise<readonly MemberMetadata[]> {
|
|
94
|
+
if (!this.directory.searchMembers) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return (await this.directory.searchMembers(searchText)).map(
|
|
99
|
+
(member): MemberMetadata =>
|
|
100
|
+
readMemberMetadataFromMemberBaseMember(member, this.options),
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Helper for hosts that already hold an authenticated `TMember` (for
|
|
107
|
+
* example from `@rytass/member-base-nestjs-module`) and want to project it
|
|
108
|
+
* into a {@link BPMAuthContext} without writing the boilerplate by hand.
|
|
109
|
+
*
|
|
110
|
+
* Returns `null` when the input is nullish or when the member is missing
|
|
111
|
+
* an id — never throws. Pair this with `BPMRootModuleOptions.authContextFactory`
|
|
112
|
+
* so BPM resolvers receive the projected context on every request.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const bpmAuth = createBPMAuthContextFromMemberBaseMember(memberBaseUser, {
|
|
117
|
+
* readRoles: (m) => m.roles,
|
|
118
|
+
* readPermissions: (m) => m.permissions,
|
|
119
|
+
* readCustomFields: (m) => ({ tenantId: m.tenantId }),
|
|
120
|
+
* });
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function createBPMAuthContextFromMemberBaseMember<TMember>(
|
|
124
|
+
member: TMember | null | undefined,
|
|
125
|
+
options: BPMMemberBaseAdapterOptions<TMember> = {},
|
|
126
|
+
): BPMAuthContext | null {
|
|
127
|
+
if (!member) {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const memberId = readMemberId(member, options);
|
|
132
|
+
|
|
133
|
+
return memberId
|
|
134
|
+
? {
|
|
135
|
+
memberId,
|
|
136
|
+
metadata: options.readCustomFields?.(member) ?? {},
|
|
137
|
+
permissions: options.readPermissions?.(member) ?? [],
|
|
138
|
+
roles: options.readRoles?.(member) ?? [],
|
|
139
|
+
}
|
|
140
|
+
: null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Builds a Nest `Provider` that adapts a host-provided
|
|
145
|
+
* {@link BPMMemberBaseDirectory} into a {@link BPMMemberResolver}, then
|
|
146
|
+
* registers it under the host-chosen injection token (typically
|
|
147
|
+
* {@link BPM_MEMBER_RESOLVER}).
|
|
148
|
+
*
|
|
149
|
+
* Pass the result inside `BPMRootModuleOptions.memberResolverProvider`.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* BPMRootModule.forRoot({
|
|
154
|
+
* memberResolverProvider: createBPMMemberBaseResolverProvider({
|
|
155
|
+
* provide: BPM_MEMBER_RESOLVER,
|
|
156
|
+
* directoryToken: HOST_MEMBER_DIRECTORY,
|
|
157
|
+
* adapterOptions: {
|
|
158
|
+
* readEmail: (m) => m.email,
|
|
159
|
+
* readName: (m) => m.name,
|
|
160
|
+
* },
|
|
161
|
+
* }),
|
|
162
|
+
* // ...
|
|
163
|
+
* });
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export function createBPMMemberBaseResolverProvider<TMember>({
|
|
167
|
+
adapterOptions,
|
|
168
|
+
directoryToken,
|
|
169
|
+
provide,
|
|
170
|
+
}: BPMMemberBaseResolverProviderOptions<TMember>): Provider<BPMMemberResolver> {
|
|
171
|
+
return {
|
|
172
|
+
inject: [directoryToken],
|
|
173
|
+
provide,
|
|
174
|
+
useFactory: (
|
|
175
|
+
directory: BPMMemberBaseDirectory<TMember>,
|
|
176
|
+
): BPMMemberResolver =>
|
|
177
|
+
new BPMMemberBaseResolverAdapter(directory, adapterOptions),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export function readMemberMetadataFromMemberBaseMember<TMember>(
|
|
182
|
+
member: TMember,
|
|
183
|
+
options: BPMMemberBaseAdapterOptions<TMember> = {},
|
|
184
|
+
): MemberMetadata {
|
|
185
|
+
const memberId = readMemberId(member, options);
|
|
186
|
+
|
|
187
|
+
if (!memberId) {
|
|
188
|
+
throw new Error('member-base member id is required for BPM integration');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return {
|
|
192
|
+
customFields: options.readCustomFields?.(member) ?? {},
|
|
193
|
+
email: readMemberEmail(member, options) ?? '',
|
|
194
|
+
memberId,
|
|
195
|
+
name: readMemberName(member, options) ?? memberId,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function readMemberId<TMember>(
|
|
200
|
+
member: TMember,
|
|
201
|
+
options: BPMMemberBaseAdapterOptions<TMember>,
|
|
202
|
+
): string | null {
|
|
203
|
+
return (
|
|
204
|
+
normalizeText(options.readMemberId?.(member)) ??
|
|
205
|
+
readStringProperty(member, 'memberId') ??
|
|
206
|
+
readStringProperty(member, 'id') ??
|
|
207
|
+
readStringProperty(member, 'sub')
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function readMemberEmail<TMember>(
|
|
212
|
+
member: TMember,
|
|
213
|
+
options: BPMMemberBaseAdapterOptions<TMember>,
|
|
214
|
+
): string | null {
|
|
215
|
+
return normalizeText(options.readEmail?.(member)) ?? readStringProperty(member, 'email');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function readMemberName<TMember>(
|
|
219
|
+
member: TMember,
|
|
220
|
+
options: BPMMemberBaseAdapterOptions<TMember>,
|
|
221
|
+
): string | null {
|
|
222
|
+
return (
|
|
223
|
+
normalizeText(options.readName?.(member)) ??
|
|
224
|
+
readStringProperty(member, 'name') ??
|
|
225
|
+
readStringProperty(member, 'displayName') ??
|
|
226
|
+
readMemberEmail(member, options)
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function readStringProperty(value: unknown, key: string): string | null {
|
|
231
|
+
if (!isRecord(value)) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return normalizeText(value[key]);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function normalizeText(value: unknown): string | null {
|
|
239
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {
|
|
243
|
+
return typeof value === 'object' && value !== null;
|
|
244
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from '@nestjs/graphql';
|
|
2
|
+
import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
|
|
3
|
+
import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
4
|
+
|
|
5
|
+
@Entity('member_metadata_cache')
|
|
6
|
+
@Unique(['memberId'])
|
|
7
|
+
@ObjectType('MemberMetadataCache')
|
|
8
|
+
export class MemberMetadataCacheEntity {
|
|
9
|
+
@PrimaryGeneratedColumn('uuid')
|
|
10
|
+
@Field(() => ID)
|
|
11
|
+
id!: string;
|
|
12
|
+
|
|
13
|
+
@Column('text', { name: 'member_id' })
|
|
14
|
+
@Field()
|
|
15
|
+
memberId!: string;
|
|
16
|
+
|
|
17
|
+
@Column('jsonb')
|
|
18
|
+
metadata!: MemberMetadata;
|
|
19
|
+
|
|
20
|
+
@Column('timestamptz', { name: 'fetched_at' })
|
|
21
|
+
@Field()
|
|
22
|
+
fetchedAt!: Date;
|
|
23
|
+
|
|
24
|
+
@Column('timestamptz', { name: 'expires_at' })
|
|
25
|
+
@Field()
|
|
26
|
+
expiresAt!: Date;
|
|
27
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Field, ID, ObjectType } from '@nestjs/graphql';
|
|
2
|
+
import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
3
|
+
|
|
4
|
+
@ObjectType('MemberProfile')
|
|
5
|
+
export class MemberProfileObject {
|
|
6
|
+
@Field(() => ID)
|
|
7
|
+
memberId!: string;
|
|
8
|
+
|
|
9
|
+
@Field()
|
|
10
|
+
name!: string;
|
|
11
|
+
|
|
12
|
+
@Field()
|
|
13
|
+
email!: string;
|
|
14
|
+
|
|
15
|
+
@Field()
|
|
16
|
+
customFieldsJson!: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function toMemberProfileObject(
|
|
20
|
+
metadata: MemberMetadata,
|
|
21
|
+
): MemberProfileObject {
|
|
22
|
+
return {
|
|
23
|
+
customFieldsJson: JSON.stringify(metadata.customFields),
|
|
24
|
+
email: metadata.email,
|
|
25
|
+
memberId: metadata.memberId,
|
|
26
|
+
name: metadata.name,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
2
|
+
|
|
2
3
|
/**
|
|
3
4
|
* Injection token for the host-provided `BPMMemberResolver`.
|
|
4
5
|
*
|
|
@@ -7,13 +8,15 @@ import { MemberMetadata } from '@rytass/bpm-core-shared';
|
|
|
7
8
|
* services look up display names, emails, and approver candidates via
|
|
8
9
|
* this token without coupling to any specific identity backend.
|
|
9
10
|
*/
|
|
10
|
-
export
|
|
11
|
+
export const BPM_MEMBER_RESOLVER = Symbol('BPM_MEMBER_RESOLVER');
|
|
12
|
+
|
|
11
13
|
/**
|
|
12
14
|
* @deprecated Use {@link BPM_MEMBER_RESOLVER}. Kept as a backwards-compatible
|
|
13
15
|
* alias for hosts that adopted the original name. To be removed in a future
|
|
14
16
|
* major release.
|
|
15
17
|
*/
|
|
16
|
-
export
|
|
18
|
+
export const MEMBER_RESOLVER = BPM_MEMBER_RESOLVER;
|
|
19
|
+
|
|
17
20
|
/**
|
|
18
21
|
* Contract host applications must implement so BPM can resolve member
|
|
19
22
|
* profiles, approver candidates, and search results.
|
|
@@ -30,10 +33,13 @@ export declare const MEMBER_RESOLVER: symbol;
|
|
|
30
33
|
* query simply returns an empty array.
|
|
31
34
|
*/
|
|
32
35
|
export interface BPMMemberResolver {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
resolve(memberId: string): Promise<MemberMetadata>;
|
|
37
|
+
resolveMany(
|
|
38
|
+
memberIds: readonly string[],
|
|
39
|
+
): Promise<ReadonlyMap<string, MemberMetadata>>;
|
|
40
|
+
search?(searchText: string): Promise<readonly MemberMetadata[]>;
|
|
36
41
|
}
|
|
42
|
+
|
|
37
43
|
/**
|
|
38
44
|
* @deprecated Use {@link BPMMemberResolver}. Kept as a backwards-compatible
|
|
39
45
|
* alias.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
export class EnablePostgresExtensions0000000000001 implements MigrationInterface {
|
|
4
|
+
readonly name = 'EnablePostgresExtensions0000000000001';
|
|
5
|
+
|
|
6
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
7
|
+
await queryRunner.query('CREATE EXTENSION IF NOT EXISTS "uuid-ossp"');
|
|
8
|
+
await queryRunner.query('CREATE EXTENSION IF NOT EXISTS "ltree"');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
12
|
+
await queryRunner.query('DROP EXTENSION IF EXISTS "ltree"');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
async up(queryRunner) {
|
|
9
|
-
await queryRunner.query(`
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
export class IdentityOrganizationFoundation0000000001000 implements MigrationInterface {
|
|
4
|
+
readonly name = 'IdentityOrganizationFoundation0000000001000';
|
|
5
|
+
|
|
6
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
7
|
+
await queryRunner.query(`
|
|
10
8
|
CREATE TABLE IF NOT EXISTS member_metadata_cache (
|
|
11
9
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
12
10
|
member_id text NOT NULL UNIQUE,
|
|
@@ -15,7 +13,8 @@ class IdentityOrganizationFoundation0000000001000 {
|
|
|
15
13
|
expires_at timestamptz NOT NULL
|
|
16
14
|
)
|
|
17
15
|
`);
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
await queryRunner.query(`
|
|
19
18
|
CREATE TABLE IF NOT EXISTS org_units (
|
|
20
19
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
21
20
|
parent_id uuid NULL REFERENCES org_units(id),
|
|
@@ -29,14 +28,19 @@ class IdentityOrganizationFoundation0000000001000 {
|
|
|
29
28
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
30
29
|
)
|
|
31
30
|
`);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
await queryRunner.query(
|
|
32
|
+
'CREATE INDEX IF NOT EXISTS idx_org_units_parent_id ON org_units(parent_id)',
|
|
33
|
+
);
|
|
34
|
+
await queryRunner.query(
|
|
35
|
+
'CREATE INDEX IF NOT EXISTS idx_org_units_path_gist ON org_units USING gist(path)',
|
|
36
|
+
);
|
|
37
|
+
await queryRunner.query(`
|
|
35
38
|
CREATE INDEX IF NOT EXISTS idx_org_units_not_deleted
|
|
36
39
|
ON org_units(deleted_at)
|
|
37
40
|
WHERE deleted_at IS NULL
|
|
38
41
|
`);
|
|
39
|
-
|
|
42
|
+
|
|
43
|
+
await queryRunner.query(`
|
|
40
44
|
CREATE TABLE IF NOT EXISTS positions (
|
|
41
45
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
42
46
|
code text NOT NULL UNIQUE,
|
|
@@ -47,7 +51,8 @@ class IdentityOrganizationFoundation0000000001000 {
|
|
|
47
51
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
48
52
|
)
|
|
49
53
|
`);
|
|
50
|
-
|
|
54
|
+
|
|
55
|
+
await queryRunner.query(`
|
|
51
56
|
CREATE TABLE IF NOT EXISTS memberships (
|
|
52
57
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
53
58
|
member_id text NOT NULL,
|
|
@@ -66,9 +71,14 @@ class IdentityOrganizationFoundation0000000001000 {
|
|
|
66
71
|
)
|
|
67
72
|
)
|
|
68
73
|
`);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
await queryRunner.query(
|
|
75
|
+
'CREATE INDEX IF NOT EXISTS idx_memberships_member_id ON memberships(member_id)',
|
|
76
|
+
);
|
|
77
|
+
await queryRunner.query(
|
|
78
|
+
'CREATE INDEX IF NOT EXISTS idx_memberships_org_unit_id ON memberships(org_unit_id)',
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
await queryRunner.query(`
|
|
72
82
|
CREATE TABLE IF NOT EXISTS manager_resolutions (
|
|
73
83
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
74
84
|
scope_type text NOT NULL,
|
|
@@ -80,18 +90,17 @@ class IdentityOrganizationFoundation0000000001000 {
|
|
|
80
90
|
created_at timestamptz NOT NULL DEFAULT now()
|
|
81
91
|
)
|
|
82
92
|
`);
|
|
83
|
-
|
|
93
|
+
await queryRunner.query(`
|
|
84
94
|
CREATE INDEX IF NOT EXISTS idx_manager_resolutions_scope
|
|
85
95
|
ON manager_resolutions(scope_type, scope_id)
|
|
86
96
|
`);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
100
|
+
await queryRunner.query('DROP TABLE IF EXISTS manager_resolutions');
|
|
101
|
+
await queryRunner.query('DROP TABLE IF EXISTS memberships');
|
|
102
|
+
await queryRunner.query('DROP TABLE IF EXISTS positions');
|
|
103
|
+
await queryRunner.query('DROP TABLE IF EXISTS org_units');
|
|
104
|
+
await queryRunner.query('DROP TABLE IF EXISTS member_metadata_cache');
|
|
105
|
+
}
|
|
95
106
|
}
|
|
96
|
-
exports.IdentityOrganizationFoundation0000000001000 = IdentityOrganizationFoundation0000000001000;
|
|
97
|
-
//# sourceMappingURL=0000000001000-identity-organization-foundation.js.map
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
async up(queryRunner) {
|
|
9
|
-
await queryRunner.query(`
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
export class FormBuilderFoundation0000000002000 implements MigrationInterface {
|
|
4
|
+
readonly name = 'FormBuilderFoundation0000000002000';
|
|
5
|
+
|
|
6
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
7
|
+
await queryRunner.query(`
|
|
10
8
|
CREATE TABLE IF NOT EXISTS form_definitions (
|
|
11
9
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
12
10
|
name text NOT NULL,
|
|
@@ -18,7 +16,8 @@ class FormBuilderFoundation0000000002000 {
|
|
|
18
16
|
created_by_member_id text NULL
|
|
19
17
|
)
|
|
20
18
|
`);
|
|
21
|
-
|
|
19
|
+
|
|
20
|
+
await queryRunner.query(`
|
|
22
21
|
CREATE TABLE IF NOT EXISTS form_definition_versions (
|
|
23
22
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
24
23
|
form_definition_id uuid NOT NULL REFERENCES form_definitions(id),
|
|
@@ -37,30 +36,32 @@ class FormBuilderFoundation0000000002000 {
|
|
|
37
36
|
)
|
|
38
37
|
)
|
|
39
38
|
`);
|
|
40
|
-
|
|
39
|
+
|
|
40
|
+
await queryRunner.query(`
|
|
41
41
|
ALTER TABLE form_definitions
|
|
42
42
|
ADD CONSTRAINT fk_form_definitions_current_version
|
|
43
43
|
FOREIGN KEY (current_version_id)
|
|
44
44
|
REFERENCES form_definition_versions(id)
|
|
45
45
|
`);
|
|
46
|
-
|
|
46
|
+
|
|
47
|
+
await queryRunner.query(`
|
|
47
48
|
CREATE INDEX IF NOT EXISTS idx_form_definition_versions_definition_status
|
|
48
49
|
ON form_definition_versions(form_definition_id, status)
|
|
49
50
|
`);
|
|
50
|
-
|
|
51
|
+
|
|
52
|
+
await queryRunner.query(`
|
|
51
53
|
CREATE INDEX IF NOT EXISTS idx_form_definitions_not_deleted
|
|
52
54
|
ON form_definitions(deleted_at)
|
|
53
55
|
WHERE deleted_at IS NULL
|
|
54
56
|
`);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
60
|
+
await queryRunner.query(`
|
|
58
61
|
ALTER TABLE form_definitions
|
|
59
62
|
DROP CONSTRAINT IF EXISTS fk_form_definitions_current_version
|
|
60
63
|
`);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
await queryRunner.query('DROP TABLE IF EXISTS form_definition_versions');
|
|
65
|
+
await queryRunner.query('DROP TABLE IF EXISTS form_definitions');
|
|
66
|
+
}
|
|
64
67
|
}
|
|
65
|
-
exports.FormBuilderFoundation0000000002000 = FormBuilderFoundation0000000002000;
|
|
66
|
-
//# sourceMappingURL=0000000002000-form-builder-foundation.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
|
|
3
|
+
export class ApprovalTemplateFoundation0000000003000
|
|
4
|
+
implements MigrationInterface
|
|
5
|
+
{
|
|
6
|
+
readonly name = 'ApprovalTemplateFoundation0000000003000';
|
|
7
|
+
|
|
8
|
+
async up(queryRunner: QueryRunner): Promise<void> {
|
|
9
|
+
await queryRunner.query(`
|
|
10
10
|
CREATE TABLE IF NOT EXISTS approval_templates (
|
|
11
11
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
12
12
|
name text NOT NULL,
|
|
@@ -19,7 +19,8 @@ class ApprovalTemplateFoundation0000000003000 {
|
|
|
19
19
|
created_by_member_id text NULL
|
|
20
20
|
)
|
|
21
21
|
`);
|
|
22
|
-
|
|
22
|
+
|
|
23
|
+
await queryRunner.query(`
|
|
23
24
|
CREATE TABLE IF NOT EXISTS approval_template_versions (
|
|
24
25
|
id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
25
26
|
template_id uuid NOT NULL REFERENCES approval_templates(id),
|
|
@@ -41,30 +42,32 @@ class ApprovalTemplateFoundation0000000003000 {
|
|
|
41
42
|
)
|
|
42
43
|
)
|
|
43
44
|
`);
|
|
44
|
-
|
|
45
|
+
|
|
46
|
+
await queryRunner.query(`
|
|
45
47
|
ALTER TABLE approval_templates
|
|
46
48
|
ADD CONSTRAINT fk_approval_templates_current_version
|
|
47
49
|
FOREIGN KEY (current_version_id)
|
|
48
50
|
REFERENCES approval_template_versions(id)
|
|
49
51
|
`);
|
|
50
|
-
|
|
52
|
+
|
|
53
|
+
await queryRunner.query(`
|
|
51
54
|
CREATE INDEX IF NOT EXISTS idx_approval_template_versions_template_status
|
|
52
55
|
ON approval_template_versions(template_id, status)
|
|
53
56
|
`);
|
|
54
|
-
|
|
57
|
+
|
|
58
|
+
await queryRunner.query(`
|
|
55
59
|
CREATE INDEX IF NOT EXISTS idx_approval_templates_not_deleted
|
|
56
60
|
ON approval_templates(deleted_at)
|
|
57
61
|
WHERE deleted_at IS NULL
|
|
58
62
|
`);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async down(queryRunner: QueryRunner): Promise<void> {
|
|
66
|
+
await queryRunner.query(`
|
|
62
67
|
ALTER TABLE approval_templates
|
|
63
68
|
DROP CONSTRAINT IF EXISTS fk_approval_templates_current_version
|
|
64
69
|
`);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
await queryRunner.query('DROP TABLE IF EXISTS approval_template_versions');
|
|
71
|
+
await queryRunner.query('DROP TABLE IF EXISTS approval_templates');
|
|
72
|
+
}
|
|
68
73
|
}
|
|
69
|
-
exports.ApprovalTemplateFoundation0000000003000 = ApprovalTemplateFoundation0000000003000;
|
|
70
|
-
//# sourceMappingURL=0000000003000-approval-template-foundation.js.map
|