@things-factory/worklist 10.1.37 → 10.1.38

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.
Files changed (113) hide show
  1. package/dist-client/components/activity-instance-preview.js +2 -13
  2. package/dist-client/components/activity-instance-preview.js.map +1 -1
  3. package/dist-client/components/activity-thread-timeline.d.ts +2 -2
  4. package/dist-client/components/can-pick.d.ts +15 -0
  5. package/dist-client/components/can-pick.js +16 -0
  6. package/dist-client/components/can-pick.js.map +1 -0
  7. package/dist-client/pages/activity-catalog/activity-detail-page.d.ts +23 -2
  8. package/dist-client/pages/activity-catalog/activity-detail-page.js +69 -10
  9. package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -1
  10. package/dist-client/pages/activity-catalog/activity-panels.d.ts +28 -0
  11. package/dist-client/pages/activity-catalog/activity-panels.js +19 -0
  12. package/dist-client/pages/activity-catalog/activity-panels.js.map +1 -1
  13. package/dist-client/pages/activity-instance/activity-instance-start-page.d.ts +1 -0
  14. package/dist-client/pages/activity-instance/activity-instance-start-page.js +33 -1
  15. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  16. package/dist-client/pages/activity-instance/discard-offer.d.ts +11 -0
  17. package/dist-client/pages/activity-instance/discard-offer.js +11 -0
  18. package/dist-client/pages/activity-instance/discard-offer.js.map +1 -0
  19. package/dist-client/pages/activity-thread/activity-thread-view.d.ts +1 -1
  20. package/dist-client/pages/todo/approval-done-list-page.d.ts +5 -1
  21. package/dist-client/pages/todo/approval-done-list-page.js +8 -1
  22. package/dist-client/pages/todo/approval-done-list-page.js.map +1 -1
  23. package/dist-client/pages/todo/approval-pending-list-page.d.ts +5 -1
  24. package/dist-client/pages/todo/approval-pending-list-page.js +8 -1
  25. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  26. package/dist-client/pages/todo/done-list-page.d.ts +5 -1
  27. package/dist-client/pages/todo/done-list-page.js +8 -1
  28. package/dist-client/pages/todo/done-list-page.js.map +1 -1
  29. package/dist-client/pages/todo/draft-list-page.d.ts +5 -1
  30. package/dist-client/pages/todo/draft-list-page.js +18 -12
  31. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  32. package/dist-client/pages/todo/list-thumbnail.d.ts +25 -0
  33. package/dist-client/pages/todo/list-thumbnail.js +25 -0
  34. package/dist-client/pages/todo/list-thumbnail.js.map +1 -0
  35. package/dist-client/pages/todo/todo-list-page.d.ts +5 -1
  36. package/dist-client/pages/todo/todo-list-page.js +8 -1
  37. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  38. package/dist-client/pages/work-door/door-links.d.ts +30 -0
  39. package/dist-client/pages/work-door/door-links.js +30 -0
  40. package/dist-client/pages/work-door/door-links.js.map +1 -0
  41. package/dist-client/pages/work-door/work-doors-page.js +15 -5
  42. package/dist-client/pages/work-door/work-doors-page.js.map +1 -1
  43. package/dist-client/route.d.ts +1 -1
  44. package/dist-client/tsconfig.tsbuildinfo +1 -1
  45. package/dist-server/controllers/activity-approval/delegate.js +27 -2
  46. package/dist-server/controllers/activity-approval/delegate.js.map +1 -1
  47. package/dist-server/controllers/activity-approval/delegation.d.ts +31 -0
  48. package/dist-server/controllers/activity-approval/delegation.js +31 -0
  49. package/dist-server/controllers/activity-approval/delegation.js.map +1 -0
  50. package/dist-server/controllers/activity-instance/discard-draft.d.ts +22 -0
  51. package/dist-server/controllers/activity-instance/discard-draft.js +54 -0
  52. package/dist-server/controllers/activity-instance/discard-draft.js.map +1 -0
  53. package/dist-server/controllers/activity-read/assert-may-read.d.ts +15 -0
  54. package/dist-server/controllers/activity-read/assert-may-read.js +99 -0
  55. package/dist-server/controllers/activity-read/assert-may-read.js.map +1 -0
  56. package/dist-server/controllers/activity-read/participates.d.ts +41 -0
  57. package/dist-server/controllers/activity-read/participates.js +42 -0
  58. package/dist-server/controllers/activity-read/participates.js.map +1 -0
  59. package/dist-server/controllers/activity-thread/delegate.js +23 -1
  60. package/dist-server/controllers/activity-thread/delegate.js.map +1 -1
  61. package/dist-server/service/activity/activity-mutation.js +1 -0
  62. package/dist-server/service/activity/activity-mutation.js.map +1 -1
  63. package/dist-server/service/activity-approval/activity-approval-query.js +7 -1
  64. package/dist-server/service/activity-approval/activity-approval-query.js.map +1 -1
  65. package/dist-server/service/activity-approval/activity-approval-subscription.js +2 -11
  66. package/dist-server/service/activity-approval/activity-approval-subscription.js.map +1 -1
  67. package/dist-server/service/activity-instance/activity-instance-mutation.js +12 -20
  68. package/dist-server/service/activity-instance/activity-instance-mutation.js.map +1 -1
  69. package/dist-server/service/activity-instance/activity-instance-query.js +9 -2
  70. package/dist-server/service/activity-instance/activity-instance-query.js.map +1 -1
  71. package/dist-server/service/activity-instance/activity-instance-subscription.js +4 -12
  72. package/dist-server/service/activity-instance/activity-instance-subscription.js.map +1 -1
  73. package/dist-server/service/activity-instance/index.d.ts +1 -2
  74. package/dist-server/service/activity-instance/index.js +1 -2
  75. package/dist-server/service/activity-instance/index.js.map +1 -1
  76. package/dist-server/service/activity-template/activity-template-mutation.js +6 -0
  77. package/dist-server/service/activity-template/activity-template-mutation.js.map +1 -1
  78. package/dist-server/service/activity-thread/activity-thread-mutation.d.ts +0 -3
  79. package/dist-server/service/activity-thread/activity-thread-mutation.js +0 -19
  80. package/dist-server/service/activity-thread/activity-thread-mutation.js.map +1 -1
  81. package/dist-server/service/activity-thread/activity-thread-query.js +7 -1
  82. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  83. package/dist-server/service/activity-thread/activity-thread-subscription.js +2 -8
  84. package/dist-server/service/activity-thread/activity-thread-subscription.js.map +1 -1
  85. package/dist-server/service/index.d.ts +2 -2
  86. package/dist-server/service/subscription/subscription-filters.d.ts +36 -0
  87. package/dist-server/service/subscription/subscription-filters.js +41 -0
  88. package/dist-server/service/subscription/subscription-filters.js.map +1 -0
  89. package/dist-server/service/work-door/work-door-declaration.d.ts +15 -0
  90. package/dist-server/service/work-door/work-door-declaration.js +18 -0
  91. package/dist-server/service/work-door/work-door-declaration.js.map +1 -1
  92. package/dist-server/service/work-door/work-door-resolver.d.ts +3 -0
  93. package/dist-server/service/work-door/work-door-resolver.js +21 -1
  94. package/dist-server/service/work-door/work-door-resolver.js.map +1 -1
  95. package/dist-server/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +10 -10
  97. package/tests/delegate-approval.test.ts +112 -0
  98. package/tests/discard-draft.test.ts +145 -0
  99. package/tests/may-read-case.test.ts +166 -0
  100. package/tests/open-doors.test.ts +274 -0
  101. package/tests/published-shape.test.ts +85 -0
  102. package/tests/work-door-not-used-refuse.test.ts +110 -0
  103. package/translations/en.json +15 -2
  104. package/translations/ja.json +15 -2
  105. package/translations/ko.json +15 -2
  106. package/translations/ms.json +15 -2
  107. package/translations/zh.json +15 -2
  108. package/dist-server/service/activity-instance/activity-instance-history-query.d.ts +0 -12
  109. package/dist-server/service/activity-instance/activity-instance-history-query.js +0 -79
  110. package/dist-server/service/activity-instance/activity-instance-history-query.js.map +0 -1
  111. package/dist-server/service/activity-instance/activity-instance-history-type.d.ts +0 -5
  112. package/dist-server/service/activity-instance/activity-instance-history-type.js +0 -21
  113. package/dist-server/service/activity-instance/activity-instance-history-type.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"activity-instance-query.js","sourceRoot":"","sources":["../../../server/service/activity-instance/activity-instance-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { adjustFilters, Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { ActivityThread } from '../activity-thread/activity-thread.js'\nimport { Activity, AssigneeItem } from '../activity/activity.js'\nimport { ActivityInstance, ActivityInstanceStatus } from './activity-instance.js'\nimport { statesFor, unknownStates } from './draft-list-states.js'\nimport { ActivityInstanceList } from './activity-instance-type.js'\n\n@Resolver(ActivityInstance)\nexport class ActivityInstanceQuery {\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstance!, { nullable: true, description: 'To fetch a ActivityInstance' })\n async activityInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityInstance> {\n const { domain } = context.state\n\n return await getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })\n async activityInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })\n async activityInstancesIssuedByMe(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain, user } = context.state\n\n const { filters } = params\n\n params.filters = adjustFilters(filters, [{ name: 'issuerId', operator: 'eq', value: user.id }])\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple activity instances by activity' })\n async activityInstancesByActivity(\n @Arg('activityId') activityId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain } = context.state\n\n const activity = await getRepository(Activity).findOneBy({ id: activityId })\n const searchables = activity?.searchKeys?.map((item, index) => `key0${index + 1}`) || []\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description'].concat(searchables)\n }).where('ai.activity = :activity', { activity: activityId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n // @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To get list of activity instance that a user can pick' })\n async pickableActivityList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n var { domain, user } = context.state\n\n /* \n activity-instance 중에서 아직 created 상태이면서, \n activity-instance의 assigneeRole 이 지정되지 않았거나,\n assigneeRole이 지정되었으면 그 Role에 내가 해당된 경우이면서,\n 나는 아직 해당 activity-instance의 thread를 할당받지 않은 경우에 해당하는\n activity-instance 리스트를 모두 가져오는 쿼리이다.\n */\n\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description']\n })\n .leftJoinAndSelect('ai.activityThreads', 'threads', 'threads.assignee = :user', { user: user.id })\n .andWhere('ai.state IN (:...status)', {\n status: [ActivityInstanceStatus.Issued, ActivityInstanceStatus.Unassigned]\n })\n .andWhere('ai.assigneeRole IN (:...roles)', { roles })\n .andWhere('threads.id IS NULL') /* 이미 내가 할당된 경우는 제외한다. */\n .getManyAndCount()\n\n return { items, total }\n }\n\n // @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch my own ActivityInstances' })\n async draftList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n var { domain, user } = context.state\n\n /*\n * 내가 올린 것 — 상태는 화면이 고르고, 안 고르면 작성 중만 낸다. 규칙은 순수 모듈이 든다\n * (`draft-list-states.ts`) — 여기에 적으면 시험이 못 든다.\n */\n const asked = unknownStates(params?.filters, Object.values(ActivityInstanceStatus))\n\n if (asked.length) {\n throw new Error(\n context.t('error.activity-instance unknown state', {\n state: asked.join(', '),\n known: Object.values(ActivityInstanceStatus).join(', '),\n defaultValue:\n `${asked.join(', ')} 는 업무의 상태가 아닙니다. ` +\n `쓸 수 있는 상태: ${Object.values(ActivityInstanceStatus).join(', ')}`\n })\n )\n }\n\n const status = statesFor(params?.filters)\n\n const builder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description']\n })\n\n if (status) {\n builder.andWhere('ai.state IN (:...status)', { status: [...status] })\n }\n\n const [items, total] = await builder.andWhere('ai.creator = :user', { user: user.id }).getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Activity)\n async activity(@Root() activityInstance: ActivityInstance): Promise<Activity> {\n const { activityId } = activityInstance\n\n return await getRepository(Activity).findOneBy({ id: activityId })\n }\n\n @FieldResolver(type => [ActivityThread])\n async activityThreads(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread[]> {\n const { user } = context.state\n const { supervisoryRoleId } = activityInstance\n\n if (supervisoryRoleId) {\n /* only user having supervisoryRole can get whole activityThreads */\n const roles = (\n (await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })) as User\n ).roles.map(role => role.id)\n\n if (!roles.includes(supervisoryRoleId)) {\n return await getRepository(ActivityThread).findBy({\n activityInstance: { id: activityInstance.id },\n assignee: { id: user.id }\n })\n }\n }\n\n return await getRepository(ActivityThread).findBy({\n activityInstance: { id: activityInstance.id }\n })\n }\n\n @FieldResolver(type => Role)\n async bizKeys(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.assigneeRole ||\n (activityInstance.assigneeRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.assigneeRoleId\n })))\n )\n }\n\n @FieldResolver(type => Role)\n async assigneeRole(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.assigneeRole ||\n (activityInstance.assigneeRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.assigneeRoleId\n })))\n )\n }\n\n @FieldResolver(type => [AssigneeItem])\n async assignees(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<AssigneeItem[]> {\n const { domain, user } = context.state\n const { assignees } = activityInstance\n\n if (!assignees || !(assignees instanceof Array)) {\n return null\n }\n\n var assigneeItemList = []\n\n for (let item of assignees) {\n // \"value\" deprecated. to be removed\n var { type, assignee, value } = item\n var id = assignee?.id || value\n\n switch (type) {\n case 'Employee':\n assignee = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n assignee = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n assignee = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n assignee = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n assignee && assigneeItemList.push({ type, value: id, assignee })\n }\n\n return assigneeItemList\n }\n\n @FieldResolver(type => [ApprovalLineItem])\n async approvalLine(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<ApprovalLineItem[]> {\n const { domain, user } = context.state\n const { approvalLine } = activityInstance\n\n if (!approvalLine || !(approvalLine instanceof Array)) {\n return null\n }\n\n var approvalLineItems = []\n\n for (let item of approvalLine) {\n // \"value\" deprecated. to be removed\n var { type, approver, value, participation, notifyAfter } = item as any\n var id = approver?.id || value\n approver = null\n\n switch (type) {\n case 'Employee':\n approver = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n approver = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n approver = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n approver = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n /*\n * What the seat is, not only who sits in it.\n *\n * This rebuilt each item as { type, approver } and dropped everything else, so `participation`\n * never left the server. The screen asked for it, the query carried it, and the resolver took\n * it out in the middle — the approval screen could not tell a reference seat from an approver\n * and drew approve and reject for both. organization's approval-line-brief lost the same field\n * and drew a reference with a turn number it does not have.\n *\n * The server guard was unaffected, which is why this stayed hidden: approve() and reject()\n * read the entity through TypeORM, not through GraphQL, so they refused correctly while the\n * screen showed buttons that would be refused. Measured 2026-09-11 on a reference row whose\n * stored line said \"participation\":\"reference\" and whose GraphQL answer said nothing.\n *\n * `value` stays out — it is the deprecated half of the pair that `approver` replaced.\n */\n const seat: any = id ? { type, approver } : { type }\n\n if (participation !== undefined) {\n seat.participation = participation\n }\n\n if (notifyAfter !== undefined) {\n seat.notifyAfter = notifyAfter\n }\n\n approvalLineItems.push(seat)\n }\n\n return approvalLineItems\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.supervisoryRole ||\n (activityInstance.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() activityInstance: ActivityInstance): Promise<string | undefined> {\n const { activityId } = activityInstance\n const attachment: Attachment =\n activityId &&\n (await getRepository(Attachment).findOne({\n where: {\n domain: { id: activityInstance.domainId },\n refBy: activityId\n }\n }))\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => User)\n async issuer(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.issuerId && (await getRepository(User).findOneBy({ id: activityInstance.issuerId }))\n }\n\n @FieldResolver(type => User)\n async starter(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.starterId && (await getRepository(User).findOneBy({ id: activityInstance.starterId }))\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() activityInstance: ActivityInstance): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: activityInstance.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.updaterId && (await getRepository(User).findOneBy({ id: activityInstance.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.creatorId && (await getRepository(User).findOneBy({ id: activityInstance.creatorId }))\n }\n}\n"]}
1
+ {"version":3,"file":"activity-instance-query.js","sourceRoot":"","sources":["../../../server/service/activity-instance/activity-instance-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { Attachment } from '@things-factory/attachment-base'\nimport { Role, User } from '@things-factory/auth-base'\nimport { adjustFilters, Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ApprovalLineItem } from '@things-factory/organization'\nimport { ActivityThread } from '../activity-thread/activity-thread.js'\nimport { Activity, AssigneeItem } from '../activity/activity.js'\nimport { ActivityInstance, ActivityInstanceStatus } from './activity-instance.js'\nimport { statesFor, unknownStates } from './draft-list-states.js'\nimport { ActivityInstanceList } from './activity-instance-type.js'\nimport { assertMayReadInstance } from '../../controllers/activity-read/assert-may-read.js'\n\n@Resolver(ActivityInstance)\nexport class ActivityInstanceQuery {\n /*\n * One instance by id is decided in the body, as one thread and one approval are (ruling 2026-09-24):\n * its participants, or the activity-instance query privilege - § assert-may-read.ts.\n */\n @Query(returns => ActivityInstance!, { nullable: true, description: 'To fetch a ActivityInstance' })\n async activityInstance(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityInstance> {\n const { domain } = context.state\n\n const instance = await getRepository(ActivityInstance).findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n if (instance) await assertMayReadInstance(instance, context)\n\n return instance\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })\n async activityInstances(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain } = context.state\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple ActivityInstances' })\n async activityInstancesIssuedByMe(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain, user } = context.state\n\n const { filters } = params\n\n params.filters = adjustFilters(filters, [{ name: 'issuerId', operator: 'eq', value: user.id }])\n\n const [items, total] = await getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityInstance),\n searchables: ['name', 'description']\n }).getManyAndCount()\n\n return { items, total }\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch multiple activity instances by activity' })\n async activityInstancesByActivity(\n @Arg('activityId') activityId: string,\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n const { domain } = context.state\n\n const activity = await getRepository(Activity).findOneBy({ id: activityId })\n const searchables = activity?.searchKeys?.map((item, index) => `key0${index + 1}`) || []\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description'].concat(searchables)\n }).where('ai.activity = :activity', { activity: activityId })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n // @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To get list of activity instance that a user can pick' })\n async pickableActivityList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n var { domain, user } = context.state\n\n /* \n activity-instance 중에서 아직 created 상태이면서, \n activity-instance의 assigneeRole 이 지정되지 않았거나,\n assigneeRole이 지정되었으면 그 Role에 내가 해당된 경우이면서,\n 나는 아직 해당 activity-instance의 thread를 할당받지 않은 경우에 해당하는\n activity-instance 리스트를 모두 가져오는 쿼리이다.\n */\n\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n if (!roles.length) {\n return { items: [], total: 0 }\n }\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description']\n })\n .leftJoinAndSelect('ai.activityThreads', 'threads', 'threads.assignee = :user', { user: user.id })\n .andWhere('ai.state IN (:...status)', {\n status: [ActivityInstanceStatus.Issued, ActivityInstanceStatus.Unassigned]\n })\n .andWhere('ai.assigneeRole IN (:...roles)', { roles })\n .andWhere('threads.id IS NULL') /* 이미 내가 할당된 경우는 제외한다. */\n .getManyAndCount()\n\n return { items, total }\n }\n\n // @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityInstanceList, { description: 'To fetch my own ActivityInstances' })\n async draftList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityInstanceList> {\n var { domain, user } = context.state\n\n /*\n * 내가 올린 것 — 상태는 화면이 고르고, 안 고르면 작성 중만 낸다. 규칙은 순수 모듈이 든다\n * (`draft-list-states.ts`) — 여기에 적으면 시험이 못 든다.\n */\n const asked = unknownStates(params?.filters, Object.values(ActivityInstanceStatus))\n\n if (asked.length) {\n throw new Error(\n context.t('error.activity-instance unknown state', {\n state: asked.join(', '),\n known: Object.values(ActivityInstanceStatus).join(', '),\n defaultValue:\n `${asked.join(', ')} 는 업무의 상태가 아닙니다. ` +\n `쓸 수 있는 상태: ${Object.values(ActivityInstanceStatus).join(', ')}`\n })\n )\n }\n\n const status = statesFor(params?.filters)\n\n const builder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityInstance),\n params,\n domain,\n alias: 'ai',\n searchables: ['name', 'description']\n })\n\n if (status) {\n builder.andWhere('ai.state IN (:...status)', { status: [...status] })\n }\n\n const [items, total] = await builder.andWhere('ai.creator = :user', { user: user.id }).getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Activity)\n async activity(@Root() activityInstance: ActivityInstance): Promise<Activity> {\n const { activityId } = activityInstance\n\n return await getRepository(Activity).findOneBy({ id: activityId })\n }\n\n @FieldResolver(type => [ActivityThread])\n async activityThreads(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread[]> {\n const { user } = context.state\n const { supervisoryRoleId } = activityInstance\n\n if (supervisoryRoleId) {\n /* only user having supervisoryRole can get whole activityThreads */\n const roles = (\n (await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })) as User\n ).roles.map(role => role.id)\n\n if (!roles.includes(supervisoryRoleId)) {\n return await getRepository(ActivityThread).findBy({\n activityInstance: { id: activityInstance.id },\n assignee: { id: user.id }\n })\n }\n }\n\n return await getRepository(ActivityThread).findBy({\n activityInstance: { id: activityInstance.id }\n })\n }\n\n @FieldResolver(type => Role)\n async bizKeys(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.assigneeRole ||\n (activityInstance.assigneeRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.assigneeRoleId\n })))\n )\n }\n\n @FieldResolver(type => Role)\n async assigneeRole(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.assigneeRole ||\n (activityInstance.assigneeRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.assigneeRoleId\n })))\n )\n }\n\n @FieldResolver(type => [AssigneeItem])\n async assignees(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<AssigneeItem[]> {\n const { domain, user } = context.state\n const { assignees } = activityInstance\n\n if (!assignees || !(assignees instanceof Array)) {\n return null\n }\n\n var assigneeItemList = []\n\n for (let item of assignees) {\n // \"value\" deprecated. to be removed\n var { type, assignee, value } = item\n var id = assignee?.id || value\n\n switch (type) {\n case 'Employee':\n assignee = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n assignee = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n assignee = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n assignee = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n assignee && assigneeItemList.push({ type, value: id, assignee })\n }\n\n return assigneeItemList\n }\n\n @FieldResolver(type => [ApprovalLineItem])\n async approvalLine(\n @Root() activityInstance: ActivityInstance,\n @Ctx() context: ResolverContext\n ): Promise<ApprovalLineItem[]> {\n const { domain, user } = context.state\n const { approvalLine } = activityInstance\n\n if (!approvalLine || !(approvalLine instanceof Array)) {\n return null\n }\n\n var approvalLineItems = []\n\n for (let item of approvalLine) {\n // \"value\" deprecated. to be removed\n var { type, approver, value, participation, notifyAfter } = item as any\n var id = approver?.id || value\n approver = null\n\n switch (type) {\n case 'Employee':\n approver = id && (await getRepository('Employee').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Department':\n approver = id && (await getRepository('Department').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Role':\n approver = id && (await getRepository('Role').findOneBy({ domain: { id: domain.id }, id }))\n break\n case 'Myself':\n approver = user\n break\n case 'MyDepartment':\n case 'MySupervisor':\n break\n default:\n }\n\n /*\n * What the seat is, not only who sits in it.\n *\n * This rebuilt each item as { type, approver } and dropped everything else, so `participation`\n * never left the server. The screen asked for it, the query carried it, and the resolver took\n * it out in the middle — the approval screen could not tell a reference seat from an approver\n * and drew approve and reject for both. organization's approval-line-brief lost the same field\n * and drew a reference with a turn number it does not have.\n *\n * The server guard was unaffected, which is why this stayed hidden: approve() and reject()\n * read the entity through TypeORM, not through GraphQL, so they refused correctly while the\n * screen showed buttons that would be refused. Measured 2026-09-11 on a reference row whose\n * stored line said \"participation\":\"reference\" and whose GraphQL answer said nothing.\n *\n * `value` stays out — it is the deprecated half of the pair that `approver` replaced.\n */\n const seat: any = id ? { type, approver } : { type }\n\n if (participation !== undefined) {\n seat.participation = participation\n }\n\n if (notifyAfter !== undefined) {\n seat.notifyAfter = notifyAfter\n }\n\n approvalLineItems.push(seat)\n }\n\n return approvalLineItems\n }\n\n @FieldResolver(type => Role)\n async supervisoryRole(@Root() activityInstance: ActivityInstance): Promise<Role> {\n return (\n activityInstance.supervisoryRole ||\n (activityInstance.supervisoryRoleId &&\n (await getRepository(Role).findOneBy({\n id: activityInstance.supervisoryRoleId\n })))\n )\n }\n\n @FieldResolver(type => String)\n async thumbnail(@Root() activityInstance: ActivityInstance): Promise<string | undefined> {\n const { activityId } = activityInstance\n const attachment: Attachment =\n activityId &&\n (await getRepository(Attachment).findOne({\n where: {\n domain: { id: activityInstance.domainId },\n refBy: activityId\n }\n }))\n\n return attachment?.fullpath\n }\n\n @FieldResolver(type => User)\n async issuer(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.issuerId && (await getRepository(User).findOneBy({ id: activityInstance.issuerId }))\n }\n\n @FieldResolver(type => User)\n async starter(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.starterId && (await getRepository(User).findOneBy({ id: activityInstance.starterId }))\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() activityInstance: ActivityInstance): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: activityInstance.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.updaterId && (await getRepository(User).findOneBy({ id: activityInstance.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() activityInstance: ActivityInstance): Promise<User> {\n return activityInstance.creatorId && (await getRepository(User).findOneBy({ id: activityInstance.creatorId }))\n }\n}\n"]}
@@ -7,6 +7,7 @@ const type_graphql_1 = require("type-graphql");
7
7
  const auth_base_1 = require("@things-factory/auth-base");
8
8
  const shell_1 = require("@things-factory/shell");
9
9
  const activity_instance_js_1 = require("./activity-instance.js");
10
+ const subscription_filters_js_1 = require("../subscription/subscription-filters.js");
10
11
  let ActivityInstanceSubscription = class ActivityInstanceSubscription {
11
12
  activityInstance(payload) {
12
13
  return payload.activityInstance;
@@ -24,22 +25,13 @@ tslib_1.__decorate([
24
25
  if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {
25
26
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
26
27
  }
27
- return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('activity-instance'), (0, graphql_yoga_1.filter)(async (payload) => {
28
- const { activityInstance } = payload;
29
- const { domainId } = activityInstance;
30
- if (domainId !== domain?.id) {
31
- return false;
32
- }
33
- if (activityInstance.creatorId === user.id) {
34
- return true;
35
- }
36
- // check if the user has that role
28
+ return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('activity-instance'), (0, graphql_yoga_1.filter)((payload) => (0, subscription_filters_js_1.hearsInstance)(payload.activityInstance, domain, user.id, async () => {
37
29
  const userWithRoles = await (0, shell_1.getRepository)(auth_base_1.User).findOne({
38
30
  where: { id: user.id },
39
31
  relations: ['roles']
40
32
  });
41
- return !!userWithRoles.roles.find(role => role.id === activityInstance.assigneeRoleId);
42
- }));
33
+ return userWithRoles?.roles || [];
34
+ })));
43
35
  }
44
36
  }),
45
37
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
@@ -1 +1 @@
1
- {"version":3,"file":"activity-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/activity-instance/activity-instance-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,yDAAgD;AAChD,iDAA6D;AAE7D,iEAAyD;AAGlD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAuCvC,gBAAgB,CAAS,OAA+C;QACtE,OAAO,OAAO,CAAC,gBAAgB,CAAA;IACjC,CAAC;CACF,CAAA;AA1CY,oEAA4B;AAuCvC;IAtCC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3G,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,EACrC,IAAA,qBAAM,EAAC,KAAK,EAAE,OAA+C,EAAE,EAAE;gBAC/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAA;gBACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAA;gBAErC,IAAI,QAAQ,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,gBAAgB,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC3C,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,kCAAkC;gBAClC,MAAM,aAAa,GAAS,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;oBAC5D,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACtB,SAAS,EAAE,CAAC,OAAO,CAAC;iBACrB,CAAC,CAAA;gBAEF,OAAO,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,gBAAgB,CAAC,cAAc,CAAC,CAAA;YACxF,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACgB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAmD,uCAAgB;oEAE1F;uCAzCU,4BAA4B;IADxC,IAAA,uBAAQ,EAAC,uCAAgB,CAAC;GACd,4BAA4B,CA0CxC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { getRepository, pubsub } from '@things-factory/shell'\n\nimport { ActivityInstance } from './activity-instance.js'\n\n@Resolver(ActivityInstance)\nexport class ActivityInstanceSubscription {\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('activity-instance'),\n filter(async (payload: { activityInstance: ActivityInstance }) => {\n const { activityInstance } = payload\n const { domainId } = activityInstance\n\n if (domainId !== domain?.id) {\n return false\n }\n\n if (activityInstance.creatorId === user.id) {\n return true\n }\n\n // check if the user has that role\n const userWithRoles: User = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n return !!userWithRoles.roles.find(role => role.id === activityInstance.assigneeRoleId)\n })\n )\n }\n })\n activityInstance(@Root() payload: { activityInstance: ActivityInstance }): ActivityInstance {\n return payload.activityInstance\n }\n}\n"]}
1
+ {"version":3,"file":"activity-instance-subscription.js","sourceRoot":"","sources":["../../../server/service/activity-instance/activity-instance-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,yDAAgD;AAChD,iDAA6D;AAE7D,iEAAyD;AACzD,qFAAuE;AAGhE,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IA6BvC,gBAAgB,CAAS,OAA+C;QACtE,OAAO,OAAO,CAAC,gBAAgB,CAAA;IACjC,CAAC;CACF,CAAA;AAhCY,oEAA4B;AA6BvC;IA5BC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3G,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,EACrC,IAAA,qBAAM,EAAC,CAAC,OAA+C,EAAE,EAAE,CACzD,IAAA,uCAAa,EAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,aAAa,GAAS,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,OAAO,CAAC;oBAC5D,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACtB,SAAS,EAAE,CAAC,OAAO,CAAC;iBACrB,CAAC,CAAA;gBAEF,OAAO,aAAa,EAAE,KAAK,IAAI,EAAE,CAAA;YACnC,CAAC,CAAC,CACH,CACF,CAAA;QACH,CAAC;KACF,CAAC;IACgB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAmD,uCAAgB;oEAE1F;uCA/BU,4BAA4B;IADxC,IAAA,uBAAQ,EAAC,uCAAgB,CAAC;GACd,4BAA4B,CAgCxC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { getRepository, pubsub } from '@things-factory/shell'\n\nimport { ActivityInstance } from './activity-instance.js'\nimport { hearsInstance } from '../subscription/subscription-filters.js'\n\n@Resolver(ActivityInstance)\nexport class ActivityInstanceSubscription {\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('activity-instance'),\n filter((payload: { activityInstance: ActivityInstance }) =>\n hearsInstance(payload.activityInstance, domain, user.id, async () => {\n const userWithRoles: User = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n\n return userWithRoles?.roles || []\n })\n )\n )\n }\n })\n activityInstance(@Root() payload: { activityInstance: ActivityInstance }): ActivityInstance {\n return payload.activityInstance\n }\n}\n"]}
@@ -2,9 +2,8 @@ import { ActivityInstance } from "./activity-instance.js";
2
2
  import { ActivityInstanceHistory } from "./activity-instance-history.js";
3
3
  import { ActivityInstanceMutation } from "./activity-instance-mutation.js";
4
4
  import { ActivityInstanceQuery } from "./activity-instance-query.js";
5
- import { ActivityInstanceHistoryQuery } from "./activity-instance-history-query.js";
6
5
  import { ActivityInstanceSubscription } from "./activity-instance-subscription.js";
7
6
  import { ActivityInstanceHistoryEntitySubscriber, ActivityInstanceSubscriber } from "./event-subscriber.js";
8
7
  export declare const entities: (typeof ActivityInstance | typeof ActivityInstanceHistory)[];
9
- export declare const resolvers: (typeof ActivityInstanceMutation | typeof ActivityInstanceQuery | typeof ActivityInstanceHistoryQuery | typeof ActivityInstanceSubscription)[];
8
+ export declare const resolvers: (typeof ActivityInstanceMutation | typeof ActivityInstanceQuery | typeof ActivityInstanceSubscription)[];
10
9
  export declare const subscribers: (typeof ActivityInstanceSubscriber | typeof ActivityInstanceHistoryEntitySubscriber)[];
@@ -5,10 +5,9 @@ const activity_instance_js_1 = require("./activity-instance.js");
5
5
  const activity_instance_history_js_1 = require("./activity-instance-history.js");
6
6
  const activity_instance_mutation_js_1 = require("./activity-instance-mutation.js");
7
7
  const activity_instance_query_js_1 = require("./activity-instance-query.js");
8
- const activity_instance_history_query_js_1 = require("./activity-instance-history-query.js");
9
8
  const activity_instance_subscription_js_1 = require("./activity-instance-subscription.js");
10
9
  const event_subscriber_js_1 = require("./event-subscriber.js");
11
10
  exports.entities = [activity_instance_js_1.ActivityInstance, activity_instance_history_js_1.ActivityInstanceHistory];
12
- exports.resolvers = [activity_instance_query_js_1.ActivityInstanceQuery, activity_instance_mutation_js_1.ActivityInstanceMutation, activity_instance_subscription_js_1.ActivityInstanceSubscription, activity_instance_history_query_js_1.ActivityInstanceHistoryQuery];
11
+ exports.resolvers = [activity_instance_query_js_1.ActivityInstanceQuery, activity_instance_mutation_js_1.ActivityInstanceMutation, activity_instance_subscription_js_1.ActivityInstanceSubscription];
13
12
  exports.subscribers = [event_subscriber_js_1.ActivityInstanceSubscriber, event_subscriber_js_1.ActivityInstanceHistoryEntitySubscriber];
14
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/activity-instance/index.ts"],"names":[],"mappings":";;;AAAA,iEAAyD;AACzD,iFAAwE;AACxE,mFAA0E;AAC1E,6EAAoE;AACpE,6FAAmF;AACnF,2FAAkF;AAClF,+DAA2G;AAE9F,QAAA,QAAQ,GAAG,CAAC,uCAAgB,EAAE,sDAAuB,CAAC,CAAA;AACtD,QAAA,SAAS,GAAG,CAAC,kDAAqB,EAAE,wDAAwB,EAAE,gEAA4B,EAAE,iEAA4B,CAAC,CAAA;AACzH,QAAA,WAAW,GAAG,CAAC,gDAA0B,EAAE,6DAAuC,CAAC,CAAA","sourcesContent":["import { ActivityInstance } from \"./activity-instance.js\"\nimport { ActivityInstanceHistory } from \"./activity-instance-history.js\"\nimport { ActivityInstanceMutation } from \"./activity-instance-mutation.js\"\nimport { ActivityInstanceQuery } from \"./activity-instance-query.js\"\nimport { ActivityInstanceHistoryQuery } from \"./activity-instance-history-query.js\"\nimport { ActivityInstanceSubscription } from \"./activity-instance-subscription.js\"\nimport { ActivityInstanceHistoryEntitySubscriber, ActivityInstanceSubscriber } from \"./event-subscriber.js\"\n\nexport const entities = [ActivityInstance, ActivityInstanceHistory]\nexport const resolvers = [ActivityInstanceQuery, ActivityInstanceMutation, ActivityInstanceSubscription, ActivityInstanceHistoryQuery]\nexport const subscribers = [ActivityInstanceSubscriber, ActivityInstanceHistoryEntitySubscriber]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/activity-instance/index.ts"],"names":[],"mappings":";;;AAAA,iEAAyD;AACzD,iFAAwE;AACxE,mFAA0E;AAC1E,6EAAoE;AACpE,2FAAkF;AAClF,+DAA2G;AAE9F,QAAA,QAAQ,GAAG,CAAC,uCAAgB,EAAE,sDAAuB,CAAC,CAAA;AACtD,QAAA,SAAS,GAAG,CAAC,kDAAqB,EAAE,wDAAwB,EAAE,gEAA4B,CAAC,CAAA;AAC3F,QAAA,WAAW,GAAG,CAAC,gDAA0B,EAAE,6DAAuC,CAAC,CAAA","sourcesContent":["import { ActivityInstance } from \"./activity-instance.js\"\nimport { ActivityInstanceHistory } from \"./activity-instance-history.js\"\nimport { ActivityInstanceMutation } from \"./activity-instance-mutation.js\"\nimport { ActivityInstanceQuery } from \"./activity-instance-query.js\"\nimport { ActivityInstanceSubscription } from \"./activity-instance-subscription.js\"\nimport { ActivityInstanceHistoryEntitySubscriber, ActivityInstanceSubscriber } from \"./event-subscriber.js\"\n\nexport const entities = [ActivityInstance, ActivityInstanceHistory]\nexport const resolvers = [ActivityInstanceQuery, ActivityInstanceMutation, ActivityInstanceSubscription]\nexport const subscribers = [ActivityInstanceSubscriber, ActivityInstanceHistoryEntitySubscriber]\n"]}
@@ -129,6 +129,7 @@ let ActivityTemplateMutation = class ActivityTemplateMutation {
129
129
  exports.ActivityTemplateMutation = ActivityTemplateMutation;
130
130
  tslib_1.__decorate([
131
131
  (0, type_graphql_1.Directive)('@transaction'),
132
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
132
133
  (0, type_graphql_1.Mutation)(returns => activity_template_js_1.ActivityTemplate, { description: 'To create new ActivityTemplate' }),
133
134
  tslib_1.__param(0, (0, type_graphql_1.Arg)('activityTemplate')),
134
135
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -138,6 +139,7 @@ tslib_1.__decorate([
138
139
  ], ActivityTemplateMutation.prototype, "createActivityTemplate", null);
139
140
  tslib_1.__decorate([
140
141
  (0, type_graphql_1.Directive)('@transaction'),
142
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
141
143
  (0, type_graphql_1.Mutation)(returns => activity_template_js_1.ActivityTemplate, { description: 'To modify ActivityTemplate information' }),
142
144
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
143
145
  tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
@@ -148,6 +150,7 @@ tslib_1.__decorate([
148
150
  ], ActivityTemplateMutation.prototype, "updateActivityTemplate", null);
149
151
  tslib_1.__decorate([
150
152
  (0, type_graphql_1.Directive)('@transaction'),
153
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
151
154
  (0, type_graphql_1.Mutation)(returns => [activity_template_js_1.ActivityTemplate], { description: "To modify multiple ActivityTemplates' information" }),
152
155
  tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [activity_template_type_js_1.ActivityTemplatePatch])),
153
156
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -157,6 +160,7 @@ tslib_1.__decorate([
157
160
  ], ActivityTemplateMutation.prototype, "updateMultipleActivityTemplate", null);
158
161
  tslib_1.__decorate([
159
162
  (0, type_graphql_1.Directive)('@transaction'),
163
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
160
164
  (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete ActivityTemplate' }),
161
165
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
162
166
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -166,6 +170,7 @@ tslib_1.__decorate([
166
170
  ], ActivityTemplateMutation.prototype, "deleteActivityTemplate", null);
167
171
  tslib_1.__decorate([
168
172
  (0, type_graphql_1.Directive)('@transaction'),
173
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
169
174
  (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple ActivityTemplates' }),
170
175
  tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
171
176
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -175,6 +180,7 @@ tslib_1.__decorate([
175
180
  ], ActivityTemplateMutation.prototype, "deleteActivityTemplates", null);
176
181
  tslib_1.__decorate([
177
182
  (0, type_graphql_1.Directive)('@transaction'),
183
+ (0, type_graphql_1.Directive)('@privilege(category: "activity", privilege: "mutation", domainOwnerGranted: true)'),
178
184
  (0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To import multiple ActivityTemplates' }),
179
185
  tslib_1.__param(0, (0, type_graphql_1.Arg)('activityTemplates', type => [activity_template_type_js_1.ActivityTemplatePatch])),
180
186
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -1 +1 @@
1
- {"version":3,"file":"activity-template-mutation.js","sourceRoot":"","sources":["../../../server/service/activity-template/activity-template-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\n\nimport { ActivityTemplate } from './activity-template.js'\nimport { ActivityTemplatePatch, NewActivityTemplate } from './activity-template-type.js'\n\n@Resolver(ActivityTemplate)\nexport class ActivityTemplateMutation {\n @Directive('@transaction')\n @Mutation(returns => ActivityTemplate, { description: 'To create new ActivityTemplate' })\n async createActivityTemplate(\n @Arg('activityTemplate') activityTemplate: NewActivityTemplate,\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate> {\n const { domain, user, tx } = context.state\n\n const result = await tx.getRepository(ActivityTemplate).save({\n ...activityTemplate,\n domain,\n creator: user,\n updater: user\n })\n\n if (activityTemplate.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: activityTemplate.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityTemplate, { description: 'To modify ActivityTemplate information' })\n async updateActivityTemplate(\n @Arg('id') id: string,\n @Arg('patch') patch: ActivityTemplatePatch,\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityTemplate)\n const activityTemplate = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n const result = await repository.save({\n ...activityTemplate,\n ...patch,\n updater: user\n })\n\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Mutation(returns => [ActivityTemplate], { description: \"To modify multiple ActivityTemplates' information\" })\n async updateMultipleActivityTemplate(\n @Arg('patches', type => [ActivityTemplatePatch]) patches: ActivityTemplatePatch[],\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const activityTemplateRepo = tx.getRepository(ActivityTemplate)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await activityTemplateRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const activityTemplate = await activityTemplateRepo.findOneBy({ id: newRecord.id })\n\n const result = await activityTemplateRepo.save({\n ...activityTemplate,\n ...newRecord,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [activityTemplate.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: 'activity-template',\n refBy: activityTemplate.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete ActivityTemplate' })\n async deleteActivityTemplate(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(ActivityTemplate).delete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [id] }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple ActivityTemplates' })\n async deleteActivityTemplates(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(ActivityTemplate).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To import multiple ActivityTemplates' })\n async importActivityTemplates(\n @Arg('activityTemplates', type => [ActivityTemplatePatch]) activityTemplates: ActivityTemplatePatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n activityTemplates.map(async (activityTemplate: ActivityTemplatePatch) => {\n const createdActivityTemplate: ActivityTemplate = await tx\n .getRepository(ActivityTemplate)\n .save({ domain, ...activityTemplate })\n })\n )\n\n return true\n }\n}\n"]}
1
+ {"version":3,"file":"activity-template-mutation.js","sourceRoot":"","sources":["../../../server/service/activity-template/activity-template-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'\n\nimport { ActivityTemplate } from './activity-template.js'\nimport { ActivityTemplatePatch, NewActivityTemplate } from './activity-template-type.js'\n\n@Resolver(ActivityTemplate)\nexport class ActivityTemplateMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => ActivityTemplate, { description: 'To create new ActivityTemplate' })\n async createActivityTemplate(\n @Arg('activityTemplate') activityTemplate: NewActivityTemplate,\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate> {\n const { domain, user, tx } = context.state\n\n const result = await tx.getRepository(ActivityTemplate).save({\n ...activityTemplate,\n domain,\n creator: user,\n updater: user\n })\n\n if (activityTemplate.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: activityTemplate.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => ActivityTemplate, { description: 'To modify ActivityTemplate information' })\n async updateActivityTemplate(\n @Arg('id') id: string,\n @Arg('patch') patch: ActivityTemplatePatch,\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(ActivityTemplate)\n const activityTemplate = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n const result = await repository.save({\n ...activityTemplate,\n ...patch,\n updater: user\n })\n\n if (patch.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: patch.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n return result\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [ActivityTemplate], { description: \"To modify multiple ActivityTemplates' information\" })\n async updateMultipleActivityTemplate(\n @Arg('patches', type => [ActivityTemplatePatch]) patches: ActivityTemplatePatch[],\n @Ctx() context: ResolverContext\n ): Promise<ActivityTemplate[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const activityTemplateRepo = tx.getRepository(ActivityTemplate)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await activityTemplateRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: ActivityTemplate.name,\n refBy: result.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const newRecord = _updateRecords[i]\n const activityTemplate = await activityTemplateRepo.findOneBy({ id: newRecord.id })\n\n const result = await activityTemplateRepo.save({\n ...activityTemplate,\n ...newRecord,\n updater: user\n })\n\n if (newRecord.thumbnail) {\n await deleteAttachmentsByRef(null, { refBys: [activityTemplate.id] }, context)\n await createAttachment(\n null,\n {\n attachment: {\n file: newRecord.thumbnail,\n refType: 'activity-template',\n refBy: activityTemplate.id\n }\n },\n context\n )\n }\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete ActivityTemplate' })\n async deleteActivityTemplate(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(ActivityTemplate).delete({ domain: { id: domain.id }, id })\n await deleteAttachmentsByRef(null, { refBys: [id] }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete multiple ActivityTemplates' })\n async deleteActivityTemplates(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(ActivityTemplate).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n await deleteAttachmentsByRef(null, { refBys: ids }, context)\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"activity\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To import multiple ActivityTemplates' })\n async importActivityTemplates(\n @Arg('activityTemplates', type => [ActivityTemplatePatch]) activityTemplates: ActivityTemplatePatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n activityTemplates.map(async (activityTemplate: ActivityTemplatePatch) => {\n const createdActivityTemplate: ActivityTemplate = await tx\n .getRepository(ActivityTemplate)\n .save({ domain, ...activityTemplate })\n })\n )\n\n return true\n }\n}\n"]}
@@ -17,7 +17,4 @@ export declare class ActivityThreadMutation {
17
17
  [key: string]: any;
18
18
  }, reason: string, context: ResolverContext): Promise<ActivityThread>;
19
19
  abortActivityThread(id: string, reason: string, context: ResolverContext): Promise<ActivityThread>;
20
- updateActivityThreadOutput(id: string, output: {
21
- [key: string]: any;
22
- }, context: ResolverContext): Promise<ActivityThread>;
23
20
  }
@@ -30,15 +30,6 @@ let ActivityThreadMutation = class ActivityThreadMutation {
30
30
  async abortActivityThread(id, reason, context) {
31
31
  return await (0, index_js_1.abort)({ id, reason }, context);
32
32
  }
33
- async updateActivityThreadOutput(id, output, context) {
34
- const { domain, user, tx } = context.state;
35
- const repository = tx.getRepository(activity_thread_js_1.ActivityThread);
36
- const activityThread = await repository.findOne({
37
- where: { domain: { id: domain.id }, id }
38
- });
39
- activityThread.output = output;
40
- return await tx.getRepository(activity_thread_js_1.ActivityThread).save(activityThread);
41
- }
42
33
  };
43
34
  exports.ActivityThreadMutation = ActivityThreadMutation;
44
35
  tslib_1.__decorate([
@@ -118,16 +109,6 @@ tslib_1.__decorate([
118
109
  tslib_1.__metadata("design:paramtypes", [String, String, Object]),
119
110
  tslib_1.__metadata("design:returntype", Promise)
120
111
  ], ActivityThreadMutation.prototype, "abortActivityThread", null);
121
- tslib_1.__decorate([
122
- (0, type_graphql_1.Directive)('@transaction'),
123
- (0, type_graphql_1.Mutation)(returns => activity_thread_js_1.ActivityThread, { description: 'To save ActivityThread Output Data' }),
124
- tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
125
- tslib_1.__param(1, (0, type_graphql_1.Arg)('output', type => shell_1.ScalarObject, { nullable: false })),
126
- tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
127
- tslib_1.__metadata("design:type", Function),
128
- tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
129
- tslib_1.__metadata("design:returntype", Promise)
130
- ], ActivityThreadMutation.prototype, "updateActivityThreadOutput", null);
131
112
  exports.ActivityThreadMutation = ActivityThreadMutation = tslib_1.__decorate([
132
113
  (0, type_graphql_1.Resolver)(activity_thread_js_1.ActivityThread)
133
114
  ], ActivityThreadMutation);
@@ -1 +1 @@
1
- {"version":3,"file":"activity-thread-mutation.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\n\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\nimport {\n abort,\n delegate,\n end,\n restart,\n save as saveActivityThread,\n start,\n submit\n} from '../../controllers/activity-thread/index.js'\nimport { ActivityThread } from './activity-thread.js'\nimport { ActivityThreadSave } from './activity-thread-type.js'\n\n@Resolver(ActivityThread)\nexport class ActivityThreadMutation {\n /* transactions ... */\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread' })\n async startActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await start(id, output, reason, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread!, { nullable: true, description: 'To restart ActivityThread' })\n async restartActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await restart(id, output, reason, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To delegate a ActivityThread' })\n async delegateActivityThread(\n @Arg('id') id: string,\n @Arg('assignee', type => ObjectRef, { nullable: true }) assignee: ObjectRef,\n @Arg('dueAt', { nullable: true }) dueAt: Date,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await delegate({ id, assignee, dueAt, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To save ActivityThread information' })\n async saveActivityThread(\n @Arg('id') id: string,\n @Arg('save') save: ActivityThreadSave,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await saveActivityThread(id, save, '', context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To end a ActivityThread' })\n async endActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await end({ id, output, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To submit a ActivityThread' })\n async submitActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await submit({ id, output, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To abort a ActivityThread' })\n async abortActivityThread(\n @Arg('id') id: string,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await abort({ id, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To save ActivityThread Output Data' })\n async updateActivityThreadOutput(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: false }) output: { [key: string]: any },\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n const { domain, user, tx } = context.state\n const repository = tx.getRepository(ActivityThread)\n const activityThread = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n activityThread.output = output\n return await tx.getRepository(ActivityThread).save(activityThread)\n }\n}\n"]}
1
+ {"version":3,"file":"activity-thread-mutation.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'\n\nimport { ObjectRef, ScalarObject } from '@things-factory/shell'\n\nimport {\n abort,\n delegate,\n end,\n restart,\n save as saveActivityThread,\n start,\n submit\n} from '../../controllers/activity-thread/index.js'\nimport { ActivityThread } from './activity-thread.js'\nimport { ActivityThreadSave } from './activity-thread-type.js'\n\n@Resolver(ActivityThread)\nexport class ActivityThreadMutation {\n /* transactions ... */\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread!, { nullable: true, description: 'To start ActivityThread' })\n async startActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await start(id, output, reason, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread!, { nullable: true, description: 'To restart ActivityThread' })\n async restartActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await restart(id, output, reason, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To delegate a ActivityThread' })\n async delegateActivityThread(\n @Arg('id') id: string,\n @Arg('assignee', type => ObjectRef, { nullable: true }) assignee: ObjectRef,\n @Arg('dueAt', { nullable: true }) dueAt: Date,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await delegate({ id, assignee, dueAt, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To save ActivityThread information' })\n async saveActivityThread(\n @Arg('id') id: string,\n @Arg('save') save: ActivityThreadSave,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await saveActivityThread(id, save, '', context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To end a ActivityThread' })\n async endActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await end({ id, output, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To submit a ActivityThread' })\n async submitActivityThread(\n @Arg('id') id: string,\n @Arg('output', type => ScalarObject, { nullable: true }) output: { [key: string]: any },\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await submit({ id, output, reason }, context)\n }\n\n @Directive('@transaction')\n @Mutation(returns => ActivityThread, { description: 'To abort a ActivityThread' })\n async abortActivityThread(\n @Arg('id') id: string,\n @Arg('reason', { nullable: true }) reason: string,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThread> {\n return await abort({ id, reason }, context)\n }\n}\n"]}
@@ -8,6 +8,7 @@ const shell_1 = require("@things-factory/shell");
8
8
  const activity_instance_js_1 = require("../activity-instance/activity-instance.js");
9
9
  const activity_thread_js_1 = require("./activity-thread.js");
10
10
  const my_open_threads_js_1 = require("./my-open-threads.js");
11
+ const assert_may_read_js_1 = require("../../controllers/activity-read/assert-may-read.js");
11
12
  const activity_approval_js_1 = require("../activity-approval/activity-approval.js");
12
13
  const activity_thread_type_js_1 = require("./activity-thread-type.js");
13
14
  const activity_thread_history_js_1 = require("./activity-thread-history.js");
@@ -56,9 +57,13 @@ function applyTodoSortings(queryBuilder, sortings) {
56
57
  let ActivityThreadQuery = class ActivityThreadQuery {
57
58
  async activityThread(id, context) {
58
59
  const { domain } = context.state;
59
- return await (0, shell_1.getRepository)(activity_thread_js_1.ActivityThread).findOne({
60
+ const thread = await (0, shell_1.getRepository)(activity_thread_js_1.ActivityThread).findOne({
60
61
  where: { domain: { id: domain.id }, id }
61
62
  });
63
+ /* 없는 건은 없다고(null). 있는데 못 읽는 건은 이름 붙여 거절한다 — § assert-may-read.ts */
64
+ if (thread)
65
+ await (0, assert_may_read_js_1.assertMayReadThread)(thread, context);
66
+ return thread;
62
67
  }
63
68
  async activityThreads(params, context) {
64
69
  const { domain } = context.state;
@@ -164,6 +169,7 @@ tslib_1.__decorate([
164
169
  tslib_1.__metadata("design:returntype", Promise)
165
170
  ], ActivityThreadQuery.prototype, "activityThread", null);
166
171
  tslib_1.__decorate([
172
+ (0, type_graphql_1.Directive)('@privilege(category: "activity-instance", privilege: "query", domainOwnerGranted: true)'),
167
173
  (0, type_graphql_1.Query)(returns => activity_thread_type_js_1.ActivityThreadList, { description: 'To fetch multiple ActivityThreads' }),
168
174
  tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
169
175
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -1 +1 @@
1
- {"version":3,"file":"activity-thread-query.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets } from 'typeorm'\nimport { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ActivityInstance } from '../activity-instance/activity-instance.js'\nimport { ActivityThread, ActivityThreadStatus } from './activity-thread.js'\nimport { myOpenThreadsWhere } from './my-open-threads.js'\nimport { ActivityApproval } from '../activity-approval/activity-approval.js'\nimport { ActivityThreadList } from './activity-thread-type.js'\nimport { ActivityThreadHistory } from './activity-thread-history.js'\nimport { TODO_INSTANCE_SORTS, todoOrderTerms } from './todo-order.js'\n\n\n/**\n * 「할 일」 목록의 정렬 — **기한이 없는 것은 뒤로 간다.**\n *\n * ── 무엇이 잘못되고 있었나 (2026-09-06) ────────────────────────────────────\n * 화면의 기본 정렬은 `dueAt` 오름차순이다. 급한 것부터 보라는 뜻인데, **기한이 없는 것이 맨 위에\n * 왔다.** 실측(sqlite): 9건 중 기한 없는 6건이 먼저 나오고 「3일 지남」 3건이 맨 아래였다.\n *\n * NULL 을 앞에 둘지 뒤에 둘지는 **DB 마다 다르다** — sqlite 는 오름차순에서 NULL 이 먼저, postgres 는\n * 나중이다. 그래서 같은 코드가 개발 환경과 운영 환경에서 다른 순서를 낸다.\n *\n * ── 왜 NULLS LAST 를 쓰지 않나 ─────────────────────────────────────────────\n * `ORDER BY ... NULLS LAST` 는 postgres · oracle 문법이다. mysql · mssql 에서는 구문 오류가 난다.\n * 이 프레임워크는 다섯 드라이버를 다 지켜야 한다.\n *\n * `CASE WHEN ... IS NULL THEN 1 ELSE 0 END` 는 표준 SQL 이고 다섯 곳에서 다 돈다. 컬럼 이름은\n * 손으로 적지 않고 TypeORM 의 메타데이터에서 꺼낸다 — 이 프로젝트의 명명 규칙이 snake_case 라\n * `dueAt` 은 실제로 `due_at` 이다(shell 의 NamingStrategy).\n *\n * ── 공용 함수를 고치지 않는다 ──────────────────────────────────────────────\n * `getQueryBuilderFromListParams` 는 136개 꾸러미가 함께 쓴다. 정렬은 이 목록의 사정이므로\n * 여기서 맡는다 — 그 함수에는 정렬을 넘기지 않고(빈 배열) 아래에서 직접 건다.\n */\n\nfunction applyTodoSortings(queryBuilder: any, sortings: { name: string; desc?: boolean }[]) {\n const terms = todoOrderTerms(sortings, name => {\n const alias = TODO_INSTANCE_SORTS.has(name) ? 'ai' : 'at'\n const metadata = getRepository(alias === 'ai' ? ActivityInstance : ActivityThread).metadata\n const column = metadata.findColumnWithPropertyName(name)\n\n if (!column) {\n return undefined\n }\n\n const escape = (part: string) => queryBuilder.connection.driver.escape(part)\n\n return `${escape(alias)}.${escape(column.databaseName)}`\n })\n\n terms.forEach(({ expression, direction, select }, index) => {\n /* 식은 select 에 이름 붙여 올린다 — orderBy 는 식을 못 받는다(todo-order 머리말). */\n if (select) {\n queryBuilder.addSelect(select, expression)\n }\n\n index === 0 ? queryBuilder.orderBy(expression, direction) : queryBuilder.addOrderBy(expression, direction)\n })\n}\n\n@Resolver(ActivityThread)\nexport class ActivityThreadQuery {\n @Query(returns => ActivityThread!, { nullable: true, description: 'To fetch a ActivityThread' })\n async activityThread(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityThread> {\n const { domain } = context.state\n\n return await getRepository(ActivityThread).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => ActivityThreadList, { description: 'To fetch multiple ActivityThreads' })\n async activityThreads(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityThread),\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => ActivityThreadList, { description: 'To fetch my own ActivityThreads' })\n async todoList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n var { domain, user } = context.state\n\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityThread),\n /* 정렬은 아래에서 직접 건다(applyTodoSortings 머리말) — 여기에 넘기면 NULL 자리를 못 정한다. */\n params: { ...params, sortings: [] },\n domain,\n alias: 'at',\n searchables: ['name', 'description'],\n filtersMap: {\n name: { columnName: 'name', relationColumn: 'activityInstance' },\n description: { columnName: 'description', relationColumn: 'activityInstance' },\n priority: { columnName: 'priority', relationColumn: 'activityInstance' }\n }\n })\n .innerJoinAndSelect('at.activityInstance', 'ai')\n /* 「내 앞에 있는 일」의 정의는 한 자리에 있다 — 달력도 같은 것을 읽는다. */\n .andWhere(myOpenThreadsWhere({ userId: user.id, roles }))\n\n applyTodoSortings(queryBuilder, params.sortings || [])\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => ActivityThreadList, { description: 'To fetch the tasks(ActivityThreads) which has done by me' })\n async doneList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n var { domain, user } = context.state\n\n const status = [ActivityThreadStatus.Ended, ActivityThreadStatus.Aborted]\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(ActivityThread),\n params,\n domain,\n alias: 'at',\n searchables: ['name', 'description'],\n filtersMap: {\n name: { columnName: 'name', relationColumn: 'activityInstance' },\n description: { columnName: 'description', relationColumn: 'activityInstance' },\n priority: { columnName: 'priority', relationColumn: 'activityInstance' }\n }\n })\n .andWhere('at.state IN (:...status)', { status })\n .andWhere('at.assignee = :user', { user: user.id })\n .getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => User)\n async assignee(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.assigneeId\n ? activityThread.assignee || (await getRepository(User).findOneBy({ id: activityThread.assigneeId }))\n : null\n }\n\n @FieldResolver(type => ActivityInstance)\n async activityInstance(@Root() activityThread: ActivityThread): Promise<ActivityInstance> {\n return await getRepository(ActivityInstance).findOneBy({ id: activityThread.activityInstanceId })\n }\n\n @FieldResolver(type => [ActivityApproval])\n async activityApprovals(\n @Root() activityThread: ActivityThread,\n @Ctx() context: ResolverContext\n ): Promise<ActivityApproval[]> {\n return await getRepository(ActivityApproval).findBy({\n activityThread: { id: activityThread.id }\n })\n }\n\n @FieldResolver(type => [ActivityThreadHistory])\n async activityThreadHistories(\n @Root() activityThread: ActivityThread,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadHistory[]> {\n return await getRepository(ActivityThreadHistory).find({\n where: {\n originalId: activityThread.id\n },\n order: {\n version: 'ASC'\n }\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() activityThread: ActivityThread): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: activityThread.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.updaterId && (await getRepository(User).findOneBy({ id: activityThread.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.creatorId && (await getRepository(User).findOneBy({ id: activityThread.creatorId }))\n }\n\n @FieldResolver(type => User)\n async terminator(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.terminatorId && (await getRepository(User).findOneBy({ id: activityThread.terminatorId }))\n }\n}\n"]}
1
+ {"version":3,"file":"activity-thread-query.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Brackets } from 'typeorm'\nimport { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { ActivityInstance } from '../activity-instance/activity-instance.js'\nimport { ActivityThread, ActivityThreadStatus } from './activity-thread.js'\nimport { myOpenThreadsWhere } from './my-open-threads.js'\nimport { assertMayReadThread } from '../../controllers/activity-read/assert-may-read.js'\nimport { ActivityApproval } from '../activity-approval/activity-approval.js'\nimport { ActivityThreadList } from './activity-thread-type.js'\nimport { ActivityThreadHistory } from './activity-thread-history.js'\nimport { TODO_INSTANCE_SORTS, todoOrderTerms } from './todo-order.js'\n\n\n/**\n * 「할 일」 목록의 정렬 — **기한이 없는 것은 뒤로 간다.**\n *\n * ── 무엇이 잘못되고 있었나 (2026-09-06) ────────────────────────────────────\n * 화면의 기본 정렬은 `dueAt` 오름차순이다. 급한 것부터 보라는 뜻인데, **기한이 없는 것이 맨 위에\n * 왔다.** 실측(sqlite): 9건 중 기한 없는 6건이 먼저 나오고 「3일 지남」 3건이 맨 아래였다.\n *\n * NULL 을 앞에 둘지 뒤에 둘지는 **DB 마다 다르다** — sqlite 는 오름차순에서 NULL 이 먼저, postgres 는\n * 나중이다. 그래서 같은 코드가 개발 환경과 운영 환경에서 다른 순서를 낸다.\n *\n * ── 왜 NULLS LAST 를 쓰지 않나 ─────────────────────────────────────────────\n * `ORDER BY ... NULLS LAST` 는 postgres · oracle 문법이다. mysql · mssql 에서는 구문 오류가 난다.\n * 이 프레임워크는 다섯 드라이버를 다 지켜야 한다.\n *\n * `CASE WHEN ... IS NULL THEN 1 ELSE 0 END` 는 표준 SQL 이고 다섯 곳에서 다 돈다. 컬럼 이름은\n * 손으로 적지 않고 TypeORM 의 메타데이터에서 꺼낸다 — 이 프로젝트의 명명 규칙이 snake_case 라\n * `dueAt` 은 실제로 `due_at` 이다(shell 의 NamingStrategy).\n *\n * ── 공용 함수를 고치지 않는다 ──────────────────────────────────────────────\n * `getQueryBuilderFromListParams` 는 136개 꾸러미가 함께 쓴다. 정렬은 이 목록의 사정이므로\n * 여기서 맡는다 — 그 함수에는 정렬을 넘기지 않고(빈 배열) 아래에서 직접 건다.\n */\n\nfunction applyTodoSortings(queryBuilder: any, sortings: { name: string; desc?: boolean }[]) {\n const terms = todoOrderTerms(sortings, name => {\n const alias = TODO_INSTANCE_SORTS.has(name) ? 'ai' : 'at'\n const metadata = getRepository(alias === 'ai' ? ActivityInstance : ActivityThread).metadata\n const column = metadata.findColumnWithPropertyName(name)\n\n if (!column) {\n return undefined\n }\n\n const escape = (part: string) => queryBuilder.connection.driver.escape(part)\n\n return `${escape(alias)}.${escape(column.databaseName)}`\n })\n\n terms.forEach(({ expression, direction, select }, index) => {\n /* 식은 select 에 이름 붙여 올린다 — orderBy 는 식을 못 받는다(todo-order 머리말). */\n if (select) {\n queryBuilder.addSelect(select, expression)\n }\n\n index === 0 ? queryBuilder.orderBy(expression, direction) : queryBuilder.addOrderBy(expression, direction)\n })\n}\n\n@Resolver(ActivityThread)\nexport class ActivityThreadQuery {\n @Query(returns => ActivityThread!, { nullable: true, description: 'To fetch a ActivityThread' })\n async activityThread(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<ActivityThread> {\n const { domain } = context.state\n\n const thread = await getRepository(ActivityThread).findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n /* 없는 건은 없다고(null). 있는데 못 읽는 건은 이름 붙여 거절한다 — § assert-may-read.ts */\n if (thread) await assertMayReadThread(thread, context)\n\n return thread\n }\n\n @Directive('@privilege(category: \"activity-instance\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => ActivityThreadList, { description: 'To fetch multiple ActivityThreads' })\n async activityThreads(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: getRepository(ActivityThread),\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => ActivityThreadList, { description: 'To fetch my own ActivityThreads' })\n async todoList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n var { domain, user } = context.state\n\n user = await getRepository(User).findOne({\n where: { id: user.id },\n relations: ['roles']\n })\n const roles = user.roles.filter(role => role.domainId === domain.id).map(role => role.id)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(ActivityThread),\n /* 정렬은 아래에서 직접 건다(applyTodoSortings 머리말) — 여기에 넘기면 NULL 자리를 못 정한다. */\n params: { ...params, sortings: [] },\n domain,\n alias: 'at',\n searchables: ['name', 'description'],\n filtersMap: {\n name: { columnName: 'name', relationColumn: 'activityInstance' },\n description: { columnName: 'description', relationColumn: 'activityInstance' },\n priority: { columnName: 'priority', relationColumn: 'activityInstance' }\n }\n })\n .innerJoinAndSelect('at.activityInstance', 'ai')\n /* 「내 앞에 있는 일」의 정의는 한 자리에 있다 — 달력도 같은 것을 읽는다. */\n .andWhere(myOpenThreadsWhere({ userId: user.id, roles }))\n\n applyTodoSortings(queryBuilder, params.sortings || [])\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => ActivityThreadList, { description: 'To fetch the tasks(ActivityThreads) which has done by me' })\n async doneList(\n @Args(type => ListParam) params: ListParam,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadList> {\n var { domain, user } = context.state\n\n const status = [ActivityThreadStatus.Ended, ActivityThreadStatus.Aborted]\n\n const [items, total] = await getQueryBuilderFromListParams({\n repository: getRepository(ActivityThread),\n params,\n domain,\n alias: 'at',\n searchables: ['name', 'description'],\n filtersMap: {\n name: { columnName: 'name', relationColumn: 'activityInstance' },\n description: { columnName: 'description', relationColumn: 'activityInstance' },\n priority: { columnName: 'priority', relationColumn: 'activityInstance' }\n }\n })\n .andWhere('at.state IN (:...status)', { status })\n .andWhere('at.assignee = :user', { user: user.id })\n .getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => User)\n async assignee(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.assigneeId\n ? activityThread.assignee || (await getRepository(User).findOneBy({ id: activityThread.assigneeId }))\n : null\n }\n\n @FieldResolver(type => ActivityInstance)\n async activityInstance(@Root() activityThread: ActivityThread): Promise<ActivityInstance> {\n return await getRepository(ActivityInstance).findOneBy({ id: activityThread.activityInstanceId })\n }\n\n @FieldResolver(type => [ActivityApproval])\n async activityApprovals(\n @Root() activityThread: ActivityThread,\n @Ctx() context: ResolverContext\n ): Promise<ActivityApproval[]> {\n return await getRepository(ActivityApproval).findBy({\n activityThread: { id: activityThread.id }\n })\n }\n\n @FieldResolver(type => [ActivityThreadHistory])\n async activityThreadHistories(\n @Root() activityThread: ActivityThread,\n @Ctx() context: ResolverContext\n ): Promise<ActivityThreadHistory[]> {\n return await getRepository(ActivityThreadHistory).find({\n where: {\n originalId: activityThread.id\n },\n order: {\n version: 'ASC'\n }\n })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() activityThread: ActivityThread): Promise<Domain> {\n return await getRepository(Domain).findOneBy({ id: activityThread.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.updaterId && (await getRepository(User).findOneBy({ id: activityThread.updaterId }))\n }\n\n @FieldResolver(type => User)\n async creator(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.creatorId && (await getRepository(User).findOneBy({ id: activityThread.creatorId }))\n }\n\n @FieldResolver(type => User)\n async terminator(@Root() activityThread: ActivityThread): Promise<User> {\n return activityThread.terminatorId && (await getRepository(User).findOneBy({ id: activityThread.terminatorId }))\n }\n}\n"]}
@@ -6,6 +6,7 @@ const graphql_yoga_1 = require("graphql-yoga");
6
6
  const type_graphql_1 = require("type-graphql");
7
7
  const shell_1 = require("@things-factory/shell");
8
8
  const activity_thread_js_1 = require("./activity-thread.js");
9
+ const subscription_filters_js_1 = require("../subscription/subscription-filters.js");
9
10
  let ActivityThreadSubscription = class ActivityThreadSubscription {
10
11
  activityThread(payload) {
11
12
  return payload.activityThread;
@@ -23,14 +24,7 @@ tslib_1.__decorate([
23
24
  if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {
24
25
  throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`);
25
26
  }
26
- return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('activity-thread'), (0, graphql_yoga_1.filter)((payload) => {
27
- const { activityThread } = payload;
28
- const { domainId } = activityThread;
29
- if (domainId !== domain?.id) {
30
- return false;
31
- }
32
- return activityThread.assigneeId === user.id;
33
- }));
27
+ return (0, graphql_yoga_1.pipe)(shell_1.pubsub.subscribe('activity-thread'), (0, graphql_yoga_1.filter)((payload) => (0, subscription_filters_js_1.hearsThread)(payload.activityThread, domain, user.id)));
34
28
  }
35
29
  }),
36
30
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
@@ -1 +1 @@
1
- {"version":3,"file":"activity-thread-subscription.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAE9C,6DAAqD;AAG9C,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IA6BrC,cAAc,CAAS,OAA2C;QAChE,OAAO,OAAO,CAAC,cAAc,CAAA;IAC/B,CAAC;CACF,CAAA;AAhCY,gEAA0B;AA6BrC;IA5BC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3G,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,EACnC,IAAA,qBAAM,EAAC,CAAC,OAA2C,EAAE,EAAE;gBACrD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;gBAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAA;gBAEnC,IAAI,QAAQ,KAAK,MAAM,EAAE,EAAE,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,cAAc,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,CAAA;YAC9C,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACc,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAA+C,mCAAc;gEAElF;qCA/BU,0BAA0B;IADtC,IAAA,uBAAQ,EAAC,mCAAc,CAAC;GACZ,0BAA0B,CAgCtC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\n\nimport { ActivityThread } from './activity-thread.js'\n\n@Resolver(ActivityThread)\nexport class ActivityThreadSubscription {\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('activity-thread'),\n filter((payload: { activityThread: ActivityThread }) => {\n const { activityThread } = payload\n const { domainId } = activityThread\n\n if (domainId !== domain?.id) {\n return false\n }\n\n return activityThread.assigneeId === user.id\n })\n )\n }\n })\n activityThread(@Root() payload: { activityThread: ActivityThread }): ActivityThread {\n return payload.activityThread\n }\n}\n"]}
1
+ {"version":3,"file":"activity-thread-subscription.js","sourceRoot":"","sources":["../../../server/service/activity-thread/activity-thread-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAA2C;AAC3C,+CAA2D;AAE3D,iDAA8C;AAE9C,6DAAqD;AACrD,qFAAqE;AAG9D,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAoBrC,cAAc,CAAS,OAA2C;QAChE,OAAO,OAAO,CAAC,cAAc,CAAA;IAC/B,CAAC;CACF,CAAA;AAvBY,gEAA0B;AAoBrC;IAnBC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC3G,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,EACnC,IAAA,qBAAM,EAAC,CAAC,OAA2C,EAAE,EAAE,CAAC,IAAA,qCAAW,EAAC,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAC9G,CAAA;QACH,CAAC;KACF,CAAC;IACc,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAA+C,mCAAc;gEAElF;qCAtBU,0BAA0B;IADtC,IAAA,uBAAQ,EAAC,mCAAc,CAAC;GACZ,0BAA0B,CAuBtC","sourcesContent":["import { filter, pipe } from 'graphql-yoga'\nimport { Resolver, Root, Subscription } from 'type-graphql'\n\nimport { pubsub } from '@things-factory/shell'\n\nimport { ActivityThread } from './activity-thread.js'\nimport { hearsThread } from '../subscription/subscription-filters.js'\n\n@Resolver(ActivityThread)\nexport class ActivityThreadSubscription {\n @Subscription({\n subscribe: async ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !(await process.superUserGranted(domain, user))) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('activity-thread'),\n filter((payload: { activityThread: ActivityThread }) => hearsThread(payload.activityThread, domain, user.id))\n )\n }\n })\n activityThread(@Root() payload: { activityThread: ActivityThread }): ActivityThread {\n return payload.activityThread\n }\n}\n"]}