@things-factory/integration-base 10.0.0-beta.92 → 10.0.0-beta.95

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 (48) hide show
  1. package/dist-server/engine/connection-manager.d.ts +19 -0
  2. package/dist-server/engine/connection-manager.js +148 -16
  3. package/dist-server/engine/connection-manager.js.map +1 -1
  4. package/dist-server/engine/connector/headless-connector.d.ts +12 -0
  5. package/dist-server/engine/connector/headless-connector.js +74 -31
  6. package/dist-server/engine/connector/headless-connector.js.map +1 -1
  7. package/dist-server/engine/evaluate-template.d.ts +22 -3
  8. package/dist-server/engine/evaluate-template.js +43 -4
  9. package/dist-server/engine/evaluate-template.js.map +1 -1
  10. package/dist-server/engine/task/script.js +25 -17
  11. package/dist-server/engine/task/script.js.map +1 -1
  12. package/dist-server/engine/types.d.ts +32 -0
  13. package/dist-server/engine/types.js.map +1 -1
  14. package/dist-server/service/connection/connection-mutation.d.ts +3 -0
  15. package/dist-server/service/connection/connection-type.d.ts +4 -1
  16. package/dist-server/service/connection/connection-type.js +21 -0
  17. package/dist-server/service/connection/connection-type.js.map +1 -1
  18. package/dist-server/service/connection/connection.d.ts +80 -2
  19. package/dist-server/service/connection/connection.js +59 -15
  20. package/dist-server/service/connection/connection.js.map +1 -1
  21. package/dist-server/service/domain-attribute/domain-attribute-query.d.ts +17 -0
  22. package/dist-server/service/domain-attribute/domain-attribute-query.js +76 -0
  23. package/dist-server/service/domain-attribute/domain-attribute-query.js.map +1 -0
  24. package/dist-server/service/domain-attribute/domain-attribute-type.d.ts +15 -0
  25. package/dist-server/service/domain-attribute/domain-attribute-type.js +46 -0
  26. package/dist-server/service/domain-attribute/domain-attribute-type.js.map +1 -0
  27. package/dist-server/service/domain-attribute/index.d.ts +3 -0
  28. package/dist-server/service/domain-attribute/index.js +8 -0
  29. package/dist-server/service/domain-attribute/index.js.map +1 -0
  30. package/dist-server/service/index.d.ts +1 -1
  31. package/dist-server/service/index.js +3 -1
  32. package/dist-server/service/index.js.map +1 -1
  33. package/dist-server/service/scenario/scenario-mutation.js +10 -0
  34. package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
  35. package/dist-server/service/scenario/scenario-query.d.ts +3 -3
  36. package/dist-server/service/scenario/scenario-query.js +9 -9
  37. package/dist-server/service/scenario/scenario-query.js.map +1 -1
  38. package/dist-server/service/scenario-instance/scenario-instance-type.js +79 -0
  39. package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
  40. package/dist-server/service/step/step-mutation.js +15 -0
  41. package/dist-server/service/step/step-mutation.js.map +1 -1
  42. package/dist-server/service/step/step-query.js +11 -2
  43. package/dist-server/service/step/step-query.js.map +1 -1
  44. package/dist-server/tsconfig.tsbuildinfo +1 -1
  45. package/dist-server/utils/domain-inheritance.d.ts +27 -0
  46. package/dist-server/utils/domain-inheritance.js +67 -0
  47. package/dist-server/utils/domain-inheritance.js.map +1 -1
  48. package/package.json +2 -2
@@ -3,28 +3,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StepQuery = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const type_graphql_1 = require("type-graphql");
6
+ const typeorm_1 = require("typeorm");
6
7
  const auth_base_1 = require("@things-factory/auth-base");
7
8
  const shell_1 = require("@things-factory/shell");
8
9
  const scenario_1 = require("../scenario/scenario");
9
10
  const step_type_1 = require("./step-type");
11
+ const domain_inheritance_1 = require("../../utils/domain-inheritance");
10
12
  /**
11
13
  * @description Provides GraphQL resolvers for scenario steps.
12
14
  */
13
15
  let StepQuery = class StepQuery {
14
16
  async step(name, context) {
15
17
  const { domain } = context.state;
18
+ // Scenario·Step 모두 자식 도메인이 부모 도메인 정의를 inherit 가능해야 함 (closest-wins).
19
+ const domainIds = await (0, domain_inheritance_1.getDomainIdsWithAncestors)(domain);
16
20
  return await (0, shell_1.getRepository)(step_type_1.Step).findOne({
17
- where: { domain: { id: domain.id }, name }
21
+ where: { domain: { id: (0, typeorm_1.In)(domainIds) }, name }
18
22
  });
19
23
  }
20
24
  async steps(params, context) {
21
25
  const { domain } = context.state;
26
+ const domainIds = await (0, domain_inheritance_1.getDomainIdsWithAncestors)(domain);
22
27
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
23
28
  repository: (0, shell_1.getRepository)(step_type_1.Step),
24
29
  params,
25
- domain,
30
+ // 도메인 필터는 ancestor 기반으로 직접 적용
31
+ domain: undefined,
26
32
  searchables: ['name', 'description']
27
33
  });
34
+ queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {
35
+ ancestorDomainIds: domainIds
36
+ });
28
37
  const [items, total] = await queryBuilder.getManyAndCount();
29
38
  return { items, total };
30
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"step-query.js","sourceRoot":"","sources":["../../../server/service/step/step-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { 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 { Scenario } from '../scenario/scenario'\nimport { Step, StepList } from './step-type'\n\n/**\n * @description Provides GraphQL resolvers for scenario steps.\n */\n@Resolver(Step)\nexport class StepQuery {\n @Query(returns => Step, { description: 'Fetches a single scenario step by its name.' })\n async step(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Step> {\n const { domain } = context.state\n\n return await getRepository(Step).findOne({\n where: { domain: { id: domain.id }, name }\n })\n }\n\n @Query(returns => StepList, { description: 'Fetches a paginated list of scenario steps.' })\n async steps(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StepList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Step),\n params,\n domain,\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Scenario)\n async scenario(@Root() step: Step) {\n return await getRepository(Scenario).findOneBy({ id: step.scenarioId })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() step: Step) {\n return await getRepository(Domain).findOneBy({ id: step.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() step: Step): Promise<User> {\n return await getRepository(User).findOneBy({ id: step.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() step: Step): Promise<User> {\n return await getRepository(User).findOneBy({ id: step.creatorId })\n }\n}\n"]}
1
+ {"version":3,"file":"step-query.js","sourceRoot":"","sources":["../../../server/service/step/step-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Scenario } from '../scenario/scenario'\nimport { Step, StepList } from './step-type'\nimport { getDomainIdsWithAncestors } from '../../utils/domain-inheritance'\n\n/**\n * @description Provides GraphQL resolvers for scenario steps.\n */\n@Resolver(Step)\nexport class StepQuery {\n @Query(returns => Step, { description: 'Fetches a single scenario step by its name.' })\n async step(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Step> {\n const { domain } = context.state\n // Scenario·Step 모두 자식 도메인이 부모 도메인 정의를 inherit 가능해야 함 (closest-wins).\n const domainIds = await getDomainIdsWithAncestors(domain)\n return await getRepository(Step).findOne({\n where: { domain: { id: In(domainIds) }, name }\n })\n }\n\n @Query(returns => StepList, { description: 'Fetches a paginated list of scenario steps.' })\n async steps(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StepList> {\n const { domain } = context.state\n const domainIds = await getDomainIdsWithAncestors(domain)\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Step),\n params,\n // 도메인 필터는 ancestor 기반으로 직접 적용\n domain: undefined,\n searchables: ['name', 'description']\n })\n\n queryBuilder.andWhere(`${queryBuilder.alias}.domain IN (:...ancestorDomainIds)`, {\n ancestorDomainIds: domainIds\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Scenario)\n async scenario(@Root() step: Step) {\n return await getRepository(Scenario).findOneBy({ id: step.scenarioId })\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() step: Step) {\n return await getRepository(Domain).findOneBy({ id: step.domainId })\n }\n\n @FieldResolver(type => User)\n async updater(@Root() step: Step): Promise<User> {\n return await getRepository(User).findOneBy({ id: step.updaterId })\n }\n\n @FieldResolver(type => User)\n async creator(@Root() step: Step): Promise<User> {\n return await getRepository(User).findOneBy({ id: step.creatorId })\n }\n}\n"]}