@g1cloud/bpmn-modeler-next 5.0.0-beta.7 → 5.0.0-beta.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/annotationImportDocking.d.ts +28 -0
- package/dist/adapter/i18n.d.ts +21 -0
- package/dist/adapter/i18nBackfill.d.ts +72 -0
- package/dist/adapter/translationLocaleCopy.d.ts +11 -0
- package/dist/adapter/translationLocaleRestore.d.ts +86 -0
- package/dist/agent/agentBatch.d.ts +17 -1
- package/dist/agent/agentReplay.d.ts +36 -0
- package/dist/agent/describeProcess.d.ts +29 -2
- package/dist/agent/generatedIds.d.ts +18 -0
- package/dist/agent/geometryAudit.d.ts +24 -0
- package/dist/agent/resolver/annotationSize.d.ts +12 -0
- package/dist/agent/resolver/documentIndex.d.ts +12 -0
- package/dist/agent/resolver/index.d.ts +25 -2
- package/dist/agent/resolver/issues.d.ts +53 -0
- package/dist/agent/resolver/localeTexts.d.ts +24 -0
- package/dist/agent/resolver/lower.d.ts +50 -5
- package/dist/agent/resolver/routeRepair.d.ts +144 -4
- package/dist/agent/resolver/validate.d.ts +10 -1
- package/dist/agent/symbolicOp.d.ts +20 -2
- package/dist/bpmn-modeler-next.css +1 -1
- package/dist/bpmn-modeler.js +16665 -13980
- package/dist/bpmn-modeler.umd.cjs +102 -103
- package/dist/command/annotationExactResize.d.ts +30 -0
- package/dist/command/setTranslations.d.ts +42 -0
- package/dist/command/translationCommands.d.ts +11 -0
- package/dist/command/undoEpisode.d.ts +7 -0
- package/dist/core/ir.d.ts +48 -1
- package/dist/editor/controller.d.ts +14 -1
- package/dist/editor/editLock.d.ts +9 -0
- package/dist/headless/dom.d.ts +2 -0
- package/dist/headless/modeler.d.ts +22 -2
- package/dist/index.d.ts +8 -0
- package/dist/view/BpmnModelerView.vue.d.ts +7 -0
- package/dist/view/headlessReplay.d.ts +63 -0
- package/dist/view/i18nDisplay.d.ts +18 -6
- package/dist/view/minimap.d.ts +25 -0
- package/package.json +3 -2
|
@@ -12,6 +12,7 @@ import { SymbolicOp } from '../symbolicOp';
|
|
|
12
12
|
import { ResolveIssue } from './issues';
|
|
13
13
|
import { BwlSide } from '../../core/hints';
|
|
14
14
|
import { GeometryFinding, GeometryScene } from '../geometryAudit';
|
|
15
|
+
import { LocaleWrite } from './localeTexts';
|
|
15
16
|
/** resolver 가 대면하는 bpmn-js 서비스 표면 — 하강은 이 묶음만 사용한다. */
|
|
16
17
|
export interface ResolverServices {
|
|
17
18
|
modeling: Modeling;
|
|
@@ -39,6 +40,14 @@ export declare function resolverServicesOf(modeler: BpmnModelerLike): ResolverSe
|
|
|
39
40
|
* B-33 → B-34 ⓐ 가 그룹 경계 보정에서 닫은 것과 같은 클래스다.
|
|
40
41
|
*
|
|
41
42
|
* `selfId` = 이미 존재하는 주석(update)의 자기 도형·자기 연관을 장애물에서 뺀다 — 안 빼면 늘 "막힘"이다.
|
|
43
|
+
*
|
|
44
|
+
* **B-144** — 앵커가 레인 안이면 클램프 상자와 대안 방위의 `inside` 를 **앵커 레인 대역**으로 좁힌다(풀 클램프와
|
|
45
|
+
* 같은 규칙 — 레인 경계에서 클램프하고 앵커와 겹치면 오른쪽으로 비낀다). 🔴 **레인 안에 막히지 않은 자리가 없으면
|
|
46
|
+
* 종전대로 풀 안 빈 자리(이웃 레인일 수 있다)로 간다** — 레인 소속을 막힌 자리(겹침·관통)와 바꾸지 않는다
|
|
47
|
+
* (반사실: 레인 안 막힌 자리로 두는 안은 findings 가 는 케이스가 두 배였다 · 66 vs 33 / 방위 합성 6,208).
|
|
48
|
+
* 그것도 없으면 레인 안 선언 자리(막힘 — 판정기가 보고한다). ⚠ 잔존 대가 = 그 폴백의 이웃 레인 착지(방위 합성
|
|
49
|
+
* 0.6% — 사람 기저 0.4~1.0% 수준) · 레인 클램프가 오른쪽 비끼기를 더 자주 발동시켜 **가로로 풀 밖** 착지가
|
|
50
|
+
* 12 → 16(그 분기가 풀 우변을 넘는 것은 이 축 이전부터다 — 원장 B-144 곁).
|
|
42
51
|
*/
|
|
43
52
|
export declare function annotationSpot(elementRegistry: ElementRegistry, anchor: {
|
|
44
53
|
x: number;
|
|
@@ -62,6 +71,14 @@ export declare function annotationSpot(elementRegistry: ElementRegistry, anchor:
|
|
|
62
71
|
x: number;
|
|
63
72
|
y: number;
|
|
64
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* **B-168** — source 꼴 직접 끼우기 감지(하강 **전** 문서 기준). 키 = F id · 값 = 7단계까지 미룰 신규 유입(`A → X`) op.
|
|
76
|
+
* 조건 = X 로의 target 재배선이 없다 · X 가 F 의 옛 출발 A 에서 신규 유입을 받는다 · X 마다 첫 F 하나 · 그 신규 유입을
|
|
77
|
+
* 다른 op 가 참조하지 않는다(7단계 앞 단계 — 주석 연관 · 그룹 멤버 — 에서 아직 없다). 뒤 보정(`index.ts`)도 같은 판정을 쓴다.
|
|
78
|
+
*/
|
|
79
|
+
export declare function sourceFormInsertsOf(ops: readonly SymbolicOp[], oldSourceOf: (flowId: string) => string | undefined): Map<string, Extract<SymbolicOp, {
|
|
80
|
+
kind: 'sequenceFlow.add';
|
|
81
|
+
}>>;
|
|
65
82
|
/**
|
|
66
83
|
* 하강 중에야 드러나는 거부를 **구조화된 issue 로** 올린다 — `applyBpmnOps` 가 자유 문장 `lower-failed` 대신
|
|
67
84
|
* 이 issue 를 그대로 낸다(LLM 교정 루프가 읽을 수 있게). 롤백은 다른 throw 와 같다(undo 에피소드가 되감는다).
|
|
@@ -70,11 +87,30 @@ export declare class LowerIssueError extends Error {
|
|
|
70
87
|
readonly issue: ResolveIssue;
|
|
71
88
|
constructor(issue: ResolveIssue);
|
|
72
89
|
}
|
|
90
|
+
/** B-119 ⓒ′ — 위 집합을 읽는다(주입한 `lower` 가 쓰지 않았으면 빈 집합). */
|
|
91
|
+
export declare function labelLandingFlowIdsOf(services: object): ReadonlySet<string>;
|
|
92
|
+
/** B-209 — 위 맵을 이 배치의 서비스 객체에 건다(`applyBpmnOps` 가 하강 직전에). */
|
|
93
|
+
export declare function provideLowerLocaleTexts(services: object, writes: ReadonlyMap<string, LocaleWrite>): void;
|
|
94
|
+
/**
|
|
95
|
+
* B-188 ⓑ — 이 배치의 7단계 행 이동(`node.update{band|lane}`)이 **떠난 자리**(이동 직전 bbox · id = 옮긴 노드). 그 자리를
|
|
96
|
+
* 감싸던 이어지지 않은 선의 ⊓ 를 `foldVacatedDetours` 가 접는다(관통 보정 1차 뒤). 넘기는 길은 B-119 ⓒ′ 와 같다.
|
|
97
|
+
*/
|
|
98
|
+
export interface VacatedBox {
|
|
99
|
+
id: string;
|
|
100
|
+
x: number;
|
|
101
|
+
y: number;
|
|
102
|
+
width: number;
|
|
103
|
+
height: number;
|
|
104
|
+
}
|
|
105
|
+
/** B-188 ⓑ — 위 목록을 읽는다(주입한 `lower` 가 쓰지 않았으면 빈 목록). */
|
|
106
|
+
export declare function vacatedBoxesOf(services: object): readonly VacatedBox[];
|
|
73
107
|
/** 검증 통과가 전제 — 참조 해소 실패는 여기서 프로그래밍 오류로 throw 되고 applyBpmnOps 가 롤백한다. */
|
|
74
108
|
export declare function lowerOps(ops: readonly SymbolicOp[], services: ResolverServices): void;
|
|
75
109
|
/** 주석 도형이 소유자로 등장할 수 있는 finding 의 소유 도형 id. */
|
|
76
110
|
export declare function annotationOwnersOf(finding: GeometryFinding): readonly string[];
|
|
77
|
-
export declare function repairIntroducedAnnotationOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeShapeIds: ReadonlySet<string
|
|
111
|
+
export declare function repairIntroducedAnnotationOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeShapeIds: ReadonlySet<string>,
|
|
112
|
+
/** B-210 — 1차 관통 보정이 미룬 간선(B-142). 그 간선이 지나는 **새** 주석도 이 패스가 맡는다. */
|
|
113
|
+
deferredEdgeIds?: ReadonlySet<string>): void;
|
|
78
114
|
/**
|
|
79
115
|
* **B-91 예방** — 이 배치가 만든 **풀 × 풀 겹침**을, 오른쪽 이웃을 밀어 해소한다.
|
|
80
116
|
*
|
|
@@ -97,13 +133,22 @@ export declare function repairIntroducedAnnotationOverlaps(services: Pick<Resolv
|
|
|
97
133
|
*/
|
|
98
134
|
export declare function repairIntroducedPoolOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, sceneBefore: GeometryScene): void;
|
|
99
135
|
/**
|
|
100
|
-
* 🔴 **B-120 —
|
|
136
|
+
* 🔴 **B-120 — 배치 전 한 우변에 맞춰져 있던 풀 무리를 배치 뒤에도 한 우변으로 되돌린다.**
|
|
101
137
|
*
|
|
102
138
|
* 증언(표본 86) = *"레인 끝부분이 걸린건 위쪽의 세개의 레인이 정렬되있어서야"*. 배치는 두 풀만 늘렸고 **늘리는 경로가 둘인데
|
|
103
139
|
* 기준이 다르다**(`shiftGroups` = 내용 우단 +150 · `createSpace` = 밀기 폭) — 한 우변이 셋으로 갈렸다.
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
140
|
+
*
|
|
141
|
+
* 무리 = 배치 전 우변이 허용 오차 안에서 같은 풀들(크기 ≥2). 범위는 두 단계로 넓어졌다:
|
|
142
|
+
* - **ⓐ 문서 전체가 한 우변**(2026-09-28) — N20 전이 = 전체 정렬 무리는 사람이 **3/3 반응** · 부분 무리는 **0/5**.
|
|
143
|
+
* - **ⓓ 부분 무리 — 블랙박스 멤버가 없을 때만**(2026-10-06 · 표본 99) — 증언 = *"끝부분이 어긋난건 보였는데 … 맞추는게
|
|
144
|
+
* 맞아보이긴해"*. N20 = 사람 문서(풀 ≥2) 98 중 **부분 무리 문서 25** · ⓐ 뒤 현행이 깨는 무리는 **부분 무리뿐**(계보 7/23) ·
|
|
145
|
+
* 합성 재고(블랙박스 없는 부분 무리 1,899) = 깨짐 376 → 복원 **312** · 판정 키 · 교차 · 끝점 공유 교차 · 흐름 간선 변화 **0**.
|
|
146
|
+
* 🔴 **블랙박스 멤버가 있는 부분 무리는 뺀다** — 계보 반사실에서 블랙박스 풀이 **570 → 2155** 로 늘고 그 우변에 붙던 메시지가
|
|
147
|
+
* 다시 그려져 끝점 공유 교차가 **1 → 3** 이 됐다(그 회차의 사람은 맞추지 않았다). ⚠ 아래 가드 ②는 그 메시지를 못 막았다 —
|
|
148
|
+
* 이 패스 시점엔 우변에 안 붙어 있었고 뒤 라우팅이 붙인다(추정). ⚠ 판별은 **이 패스 시점**의 모델이다(배치가 빈 풀에 노드를
|
|
149
|
+
* 넣었으면 더는 블랙박스가 아니다).
|
|
150
|
+
* ⚠ 부분 일치는 도구 문서에서도 우연히 생긴다(저장본 19/69) — 그런 무리는 대개 처음부터 같은 폭이라 되돌려도 원래 모양이다
|
|
151
|
+
* (계보 102 재하강에서 기하가 바뀐 문서 = 표본 99 하나).
|
|
107
152
|
*
|
|
108
153
|
* **목표 우변 = max(base 우변, 각 풀의 산출 내용 우단 + 150)** — 사람 값이 있는 회차(표본 85 = 2338)를 **정확히** 낸 규칙은
|
|
109
154
|
* 이것 하나였다(무리 최댓값 · 풀별 base 여백 보존은 둘 다 2473). base 우변 아래로는 **안 줄인다**.
|
|
@@ -1,5 +1,37 @@
|
|
|
1
|
+
import { Connection } from 'bpmn-js/lib/model/Types';
|
|
1
2
|
import { GeometryEdge, GeometryLabel, GeometryPoint, GeometryScene, GeometryShape } from '../geometryAudit';
|
|
2
|
-
import { ResolverServices } from './lower';
|
|
3
|
+
import { ResolverServices, VacatedBox } from './lower';
|
|
4
|
+
/**
|
|
5
|
+
* ── B-185 ⓐ. 막힌 곧은 메시지의 「도킹 편이 곧은 2점」 후보(순수) ──
|
|
6
|
+
*
|
|
7
|
+
* 송신 노드 바로 아래 위성 저장소처럼 **가운데 곧은 길만** 막힌 메시지를 우회를 까는 두 생성기(관통 보정 `planEdgeRepair` ·
|
|
8
|
+
* 풀 횡단 재경로 `planCrossPoolRoute`)가 각자 ㄷ 으로 감쌌다 — 🔁 「후보 생성기 공백」(B-64 꼴): 둘 다 양 끝 도킹을 고정하고
|
|
9
|
+
* 우회만 내서 곧은 대안을 아무도 안 냈다(N22 · 도킹 편이 `dockShiftCandidates` 는 겹침 보정에만 있다).
|
|
10
|
+
* 🔴 **N20** — 막힌 흐름에 대한 사람의 수단에 ㄷ 이 없다(레거시 + Downloads 막힌 시퀀스 66 · 메시지 4 → 굽힘 4 이상 **0** ·
|
|
11
|
+
* 사람의 굽힘 2 는 계단이 아니라 막는 것 너머를 넘는 같은 쪽 면 U 다 — ⓓ1) · 우리 산출 ㄷ 11 · 사람은 저장 산출의 ㄷ **2/2** 를 막는
|
|
12
|
+
* 것을 옮겨 곧게 폈다.
|
|
13
|
+
* 🔴 **메시지 한정** — 곧은 메시지의 도킹 편이는 사람 관례다(491 중 84 = 17% · 대개 10~24) · 시퀀스는 **2/3,236**.
|
|
14
|
+
*
|
|
15
|
+
* 편이 범위 = 두 끝점 면의 교집합(모서리 10 안쪽 · 끝점이 판정 대상이 아닌 풀이면 그쪽은 제약 없음) · 가운데에서 가까운 편이
|
|
16
|
+
* 순(5px) · 관통 0 · 끝점 아닌 도형과 틈 ≥ `clear`. 채택은 호출부가 `pickDockShiftStraight` 로 대조 경로와 비교해 정한다.
|
|
17
|
+
*/
|
|
18
|
+
export declare function dockShiftStraightCandidates(edge: GeometryEdge, targets: readonly GeometryShape[], clear?: number): GeometryPoint[][];
|
|
19
|
+
/**
|
|
20
|
+
* ── B-185 ⓓ1. 같은 행 정방향 시퀀스가 막히면 같은 쪽 면 U(순수 후보) ──
|
|
21
|
+
*
|
|
22
|
+
* 같은 행에서 노드를 건너뛰는 정방향 시퀀스가 사이 노드에 막히면 관통 보정이 그 노드를 끼고 도는 ㄷ(굽힘 4)을 깔았다.
|
|
23
|
+
* 🔴 **N20** — 사람 막힌 시퀀스 66 중 **U 59**(윗면 → 윗면 39 · 아랫면 → 아랫면 20 · 양 끝 가운데 52 · 정방향 49) · ㄷ **0** ·
|
|
24
|
+
* 계단(Z) **0** · 우리 역방향 건너뛰기는 이미 U 를 냈다(역방향 후보 생성기) — 🔁 「후보 생성기 공백」(B-64 꼴): U 를 역방향에만 냈다.
|
|
25
|
+
* 사람 U 의 채널은 자기 풀 밖으로 나간 것이 0/59 이고 풀 · 레인 경계와 30 미만인 것이 7 ⇒ 부모 풀 안 · `BOUNDARY_CLEARANCE` 를
|
|
26
|
+
* 지킨다(30 미만을 일괄로 열면 U 가 늘지만 교차 이득이 줄었다 — 시제품 v2).
|
|
27
|
+
*
|
|
28
|
+
* 후보 순서 = 가운데 도킹 → 한쪽 ±25 · 채널이 가까운 순(끝점 바깥 `DETOUR_MARGIN` → `FORWARD_SKIP_CHANNEL_MAX`) · 윗면 · 아랫면.
|
|
29
|
+
* 관통 0 · 자기 끝점 되짚기 0 · 부모 풀 안 · 끝점 아닌 도형과 틈 ≥ `DETOUR_MARGIN` · 채널이 경계에 붙지 않는다.
|
|
30
|
+
*
|
|
31
|
+
* `hugAllowance` 를 주면 **경계 예외 후보만** 낸다(B-185 ⓔ) — 채널이 경계에 붙되(`BOUNDARY_CLEARANCE` 미만) 그 거리가 `hugAllowance`
|
|
32
|
+
* 이상인 것. 나머지 조건은 같다. 쓰는 자리와 이유는 `pickForwardSkipU`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function forwardSkipUCandidates(edge: GeometryEdge, targets: readonly GeometryShape[], containers: readonly GeometryShape[], bounds: Bounds | undefined, hugAllowance?: number): GeometryPoint[][];
|
|
3
35
|
/**
|
|
4
36
|
* 축 정렬 구간이 장애물을 **완전히 가로지를 때** 그것을 우회하는 4점을 만든다(순수).
|
|
5
37
|
*
|
|
@@ -54,6 +86,11 @@ export declare function forwardThreePointCandidates(edge: GeometryEdge, shapes:
|
|
|
54
86
|
* 목표 열은 목표 중심에 도킹 편이 0/±25/±40 — 그 열에 다른 메시지가 이미 중심 도킹해 있으면(같은 방향·같은
|
|
55
87
|
* 종류라 finding 은 아니지만 두 화살표가 한 선으로 합쳐 보인다 — 사용자도 -19 비껴 놓았다) 편이 후보가 피한다.
|
|
56
88
|
* 채택은 호출자 몫: 관통 0 을 먼저, 그다음 다른 간선과의 공선 공유가 없는 후보를 고른다.
|
|
89
|
+
*
|
|
90
|
+
* 🔴 B-141. 목표 도킹 열이 **출발 도형 폭 안**이면(같은 열 메시지) 후보를 내지 않는다 — 되돌아오는 세로 구간이
|
|
91
|
+
* 출발 도형을 관통하고, 도킹 편이(최대 ±40)로는 반폭을 못 벗어난다. 그 관통은 호출자의 관통 셈과 판정이 둘 다
|
|
92
|
+
* **자기 끝점을 빼서** 보이지 않아 그대로 채택됐다(표본 93 갈고리 · 계보 102 재하강 = 8회차 10간선 · 전부 이 후보 ·
|
|
93
|
+
* 사람 문서 0/1040 · 사람은 6/7 을 고쳤다). 위 전례는 목표 열 ≠ 출발 열이었다 — 같은 열이면 ㄷ 우회(B-9 ②)로 넘긴다.
|
|
57
94
|
*/
|
|
58
95
|
export declare function farSideChannelCandidates(edge: GeometryEdge, shapes: readonly GeometryShape[]): GeometryPoint[][];
|
|
59
96
|
/**
|
|
@@ -79,6 +116,34 @@ export declare function planEdgeRepair(edge: GeometryEdge, targets: readonly Geo
|
|
|
79
116
|
export declare function repairIntroducedCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>,
|
|
80
117
|
/** 2차 호출 전용 — 이 간선들만 본다(B-90. 1차가 돌려준 «주석 때문에 포기» 집합). */
|
|
81
118
|
only?: ReadonlySet<string>): Set<string>;
|
|
119
|
+
/**
|
|
120
|
+
* ── B-188 ⓑ. 행 이동이 떠난 자리를 감싸던 ⊓ 를 접는다 ──
|
|
121
|
+
*
|
|
122
|
+
* 7단계 `node.update{band|lane}` 가 노드를 이어지지 않은 선 위로 옮기면 위 관통 보정이 **선을** 비켜 깐다(ⓐ). 그 노드가 다음
|
|
123
|
+
* 배치에서 떠나도 그 선은 끝점이 아니라 다시 깔리지 않아 빈자리를 감싼 우회가 남는다(ⓑ — 외부 검토 네 문서가 지목 · 빈 ⊓
|
|
124
|
+
* 사람 2/3,783 ↔ 외부 6/1,063). 같은 노드가 같은 선 위 다른 행으로 가면 ⊓ 가 둘로 쌓인다(B-195 *"두번 ㄷ"*).
|
|
125
|
+
*
|
|
126
|
+
* 🔴 **⊓ 하나만 접는다 — 선 전체를 다시 깔지 않는다.** 기본 경로로 다시 깔면 도킹 오프셋 같은 기존 결정까지 버려 이웃 선과
|
|
127
|
+
* 겹쳤다(시제품 v2). 대상 = 배치 전부터 있던 시퀀스 · 메시지 중 떠난 노드와 이어지지 않고 끝점을 이 배치가 안 바꾼 선의
|
|
128
|
+
* 4점 ⊓(p0 → p1 → p2 → p3 · p0 · p3 가 같은 축)인데 밑변 p0 → p3 가 **떠난 자리를 지나고 지금 아무 도형도 안 지나는** 것.
|
|
129
|
+
* 채택 = `relayFresh`(B-114 ⓔ)와 같은 규칙(그 선 자기 라벨을 뺀 판정 — 새로 생긴 수 ≤ 해소) + 교차(끝점 공유 포함) 비증가 —
|
|
130
|
+
* 아니면 점과 라벨을 되돌린다.
|
|
131
|
+
* ⚠ **이 배치가 떠난 자리만 본다** — 이미 남아 있는 옛 빈 ⊓ 은 원인을 모른다(사람이 둔 것일 수 있다).
|
|
132
|
+
* ⚠ **라벨** — bpmn-js 가 경로 변화에 맞춰 라벨을 옮긴다. 라벨이 붙은 구간(라벨 중심에서 가장 가까운 구간)이 접힌 세 구간
|
|
133
|
+
* 밖이면 제자리로 되돌린다(다른 도형 위로 옮겨졌다 — 합성 실측). 안이면 그대로 두고 호출자가 라벨-선 보정에 넘긴다(B-178 과
|
|
134
|
+
* 같은 이유 · 안 넘기면 선재 라벨로 취급돼 자기 선 위에 남는다).
|
|
135
|
+
*
|
|
136
|
+
* 반환 = 실제로 접은 선 id.
|
|
137
|
+
*/
|
|
138
|
+
export declare function foldVacatedDetours(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, vacated: readonly VacatedBox[], beforeEdgeIds: ReadonlySet<string>, reroutedEdgeIds: ReadonlySet<string>): Set<string>;
|
|
139
|
+
type Bounds = {
|
|
140
|
+
x: number;
|
|
141
|
+
y: number;
|
|
142
|
+
width: number;
|
|
143
|
+
height: number;
|
|
144
|
+
};
|
|
145
|
+
/** 연결의 부모 컨테이너 bounds — 프로세스 평면(루트)이면 `undefined`. */
|
|
146
|
+
export declare function parentBoundsOf(connection: Connection): Bounds | undefined;
|
|
82
147
|
/**
|
|
83
148
|
* 🔴 **이 배치가 새로 만든 간선 × 간선 교차 중 「대가 없이 없앨 수 있는 것」만 없앤다**(B-90 ⓑ).
|
|
84
149
|
*
|
|
@@ -99,16 +164,75 @@ only?: ReadonlySet<string>): Set<string>;
|
|
|
99
164
|
* 읽을 수 없는 중첩이 늘지 않을 때만 채택(🔁 「채택 조건에 대가가 없다」 클래스를 미리 막는다).
|
|
100
165
|
*/
|
|
101
166
|
export declare function repairIntroducedEdgeCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforePairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
167
|
+
/**
|
|
168
|
+
* 공유 노드 `node` 쪽 끝을 네 변 중심으로 옮긴 경로 후보(순수). 반대쪽 끝은 **지금 도킹점 · 그 변 그대로** 둔다 —
|
|
169
|
+
* 그 끝은 이 쌍의 교차와 무관하고, 옮기면 그쪽 이웃과의 관계가 새로 생긴다. 반대쪽 도킹점이 변 위가 아니면 후보 없음.
|
|
170
|
+
*/
|
|
171
|
+
export declare function redockCandidates(edge: GeometryEdge, node: GeometryShape, shapesById: ReadonlyMap<string, GeometryShape>): GeometryPoint[][];
|
|
172
|
+
/**
|
|
173
|
+
* 🔴 **이 배치가 만든 「끝점을 공유하는」 시퀀스 플로우 교차를 공유 노드의 출입 변을 바꿔 없앤다**(B-146 ⓑ).
|
|
174
|
+
*
|
|
175
|
+
* 표본 98 의 사람 수정 형태 그대로다 — 실패 갈래(게이트웨이 → 오류 노드)가 오류 노드 왼쪽 면으로, 되돌아감(오류 노드 →
|
|
176
|
+
* 상류)이 윗면에서 나가 서로 가로질렀고, 사람은 **실패 갈래를 윗면으로 · 되돌아감을 왼쪽 면에서** 내도록 맞바꿨다
|
|
177
|
+
* (도형 무이동 · 간선 직접 2). 🔴 **한 간선만 옮겨서는 안 풀린다** — 어느 쪽만 옮겨도 다른 쪽과 공선으로 마주 달린다.
|
|
178
|
+
* 그래서 B-90 ⓑ(한 간선씩)와 달리 **쌍을 함께** 고른다.
|
|
179
|
+
*
|
|
180
|
+
* **범위**(B-146 수단 결정) — 시퀀스 × 시퀀스(노드 루프)만 · 블랙박스 풀을 함께 끝점으로 가진 메시지는 보류(사람 기저 0 ·
|
|
181
|
+
* 증언 없음) · 이 배치가 만든 쌍만(`beforeSharedPairs` 밖) · **이 배치가 만든 간선만 움직인다**(B-90 ⓑ 규약 — 기존 간선은
|
|
182
|
+
* 지금 경로 하나만 후보다). 도형은 옮기지 않는다 — 경로로 안 풀리는 형상(g39 = 새 게이트웨이가 기존 우회선 아래)은 남는다.
|
|
183
|
+
*
|
|
184
|
+
* **대가 판정**(B-90 ⓑ 와 같은 자세 — 계산이 곧 판별) — 이 쌍이 더는 교차하지 않고 · 둘이 공선으로 겹치지 않고 · 컨테이너
|
|
185
|
+
* 안이고 · 끝점 공유 교차 총수가 줄고 · **종전 교차 쌍이 새로 생기지 않고** · 문서 판정에 **새 키가 0** 일 때만. 통과한
|
|
186
|
+
* 조합 중 **길이 + 꺾임** 이 가장 작은 것을 고른다(사람 수정본은 도구 산출과 길이가 같고 꺾임만 달랐다).
|
|
187
|
+
*/
|
|
188
|
+
export declare function repairIntroducedSharedEndpointCrossings(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeSharedPairs: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
189
|
+
/**
|
|
190
|
+
* 🔴 **이 배치가 만든 메시지 중 선재 블랙박스 풀로 가고 짝 열이 풀 가로 범위 밖인 것을 짝 쪽 가장자리에 다시 도킹한다**(B-150).
|
|
191
|
+
* `beforeEdgeIds` · `beforeShapeIds` = 하강 전 간선 · 도형 id(선재 풀 판별 · 새 메시지 판별).
|
|
192
|
+
*/
|
|
193
|
+
export declare function redockIntroducedBlackboxMessages(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, beforeShapeIds: ReadonlySet<string>): void;
|
|
102
194
|
/**
|
|
103
195
|
* 풀 횡단 메시지플로우의 6점 경로 계획(순수). `null` = 이 간선은 대상이 아니거나(중간 풀 없음 ·
|
|
104
196
|
* 끝점 해소 불가) 더 나은 열이 없다.
|
|
105
197
|
*/
|
|
106
198
|
export declare function planCrossPoolRoute(edge: GeometryEdge, scene: GeometryScene): GeometryPoint[] | null;
|
|
199
|
+
/**
|
|
200
|
+
* ── 승객 간선의 base 경로 평행이동 (B-133 ⓒ) ──
|
|
201
|
+
*
|
|
202
|
+
* 하강 전에 있던 간선 중 **양 끝 도형이 같은 델타로 움직였는데 경로는 다시 깔린 것**을 base 경로 + 델타로
|
|
203
|
+
* 되돌린다. 한 짝의 끝점이 **서로 다른 단계**에서 옮겨지면(밀기 `createSpace` 는 노드 쪽만 · B-75 추종은 풀
|
|
204
|
+
* 쪽만 · 짝 동반은 짝 쪽만) 단계마다 bpmn-js `connection.layout` 이 사람이 그린 경로를 버리고 다시 깐다. 순
|
|
205
|
+
* 변위가 같으므로 평행이동이면 사람 경로가 그대로 산다. 실측(표본 103 · 사람 문서 + 증언 *"선이 껶여있는
|
|
206
|
+
* 부분이 걸렸어"*) = 쌓인 송신 노드의 **옆면 출발 3점**이 위 노드를 관통하는 2점으로 다시 깔리고, 우회 보정이
|
|
207
|
+
* 그것을 **8점 지그재그**로 감싸 이웃 메시지와 130px 겹쳤다(`edge-overlap-unrelated`).
|
|
208
|
+
*
|
|
209
|
+
* 안전 성질 2(선재 경로 불가침)의 **복원판**이다 — 선재 경로를 이 배치가 이미 지운 자리에서, 사람이 그린 것을
|
|
210
|
+
* 되살린다. 자리 = 도형을 옮기는 패스(lower · 풀 · 그룹) **전부 뒤**, 경로 보정 **앞** — 되살린 경로도 뒤
|
|
211
|
+
* 보정의 입력이 된다.
|
|
212
|
+
*
|
|
213
|
+
* 조건(전부) — ① 하강 전에 있던 **시퀀스 · 메시지 흐름**(연관은 뺀다 — N20 에서 base 의 끊긴 주석 연관만 되살려
|
|
214
|
+
* 판정을 늘렸고 이득은 0 이었다) ② 이 배치가 끝점을 바꾸지 않았다(재배선 · 끝점 id) ③ 양 끝 도형 **크기 불변** ·
|
|
215
|
+
* 이동 델타가 **같고 0 이 아니다** ④ 지금 경로 ≠ base + 델타 ⑤ 지금 경로가 이미 **관통 없는 2점 축 직선이면
|
|
216
|
+
* 둔다**(N20 — 다시 깐 직선을 사람의 꺾인 경로로 되돌리면 2점 메시지만 잃었다) ⑥ base + 델타 경로가 도형을
|
|
217
|
+
* 관통하지 않는다(관통하면 뒤 우회 보정에 맡긴다).
|
|
218
|
+
*
|
|
219
|
+
* N20(합성 재고 = 풀 안 시퀀스 전량 끼우기 3 op · 사람 문서 183 → 3,884 · 저장본 109 → 4,466) — 사람: 배치가 만든
|
|
220
|
+
* 판정 **−50** · 새 판정 4(전부 교환) · 교차 −25 · 2점 메시지 무변 · 순악화 **0** / 저장본: **−58** · 교차 감소 ·
|
|
221
|
+
* 2점 메시지 무변 · 순악화 **0**(교차 +1 4건은 종류 다름 중첩 해소와 교환).
|
|
222
|
+
*/
|
|
223
|
+
export declare function restorePassengerEdgeRoutes(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, sceneBefore: GeometryScene, reroutedEdgeIds: ReadonlySet<string>): void;
|
|
107
224
|
/**
|
|
108
225
|
* 이 배치가 **새로 만든** 메시지플로우 중 풀을 횡단하는 것을 재경로한다(하강 직후, undo 에피소드
|
|
109
226
|
* 안). `beforeEdgeIds` = 하강 전 간선 id — 그 밖의 것만 대상(안전 성질 2: 선재 경로 불가침).
|
|
110
227
|
*/
|
|
111
228
|
export declare function rerouteIntroducedCrossPoolEdges(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
229
|
+
/**
|
|
230
|
+
* 🔴 **이 배치가 만들었거나 경로를 바꾼 메시지가 관계없는 풀 안을 가로로 지나면 그 가로를 끝점의 풀 안으로 옮긴다**(B-151) — 끝점 풀 안이
|
|
231
|
+
* 막히면 풀 밖 채널(풀 사이 틈 · 더미 바깥)로(B-151 ⓐ) · 채택이 없던 메시지는 한 번 더 본다.
|
|
232
|
+
* 선재 메시지는 base 보다 그 길이가 `UNRELATED_POOL_RUN_MIN` 이상 **는** 것만 — base 의 가로는 사람이 둔 것이다.
|
|
233
|
+
* `beforeEdgeIds` = 하강 전 간선 id · `sceneBefore` = 하강 전 장면(선재 경로 · 풀).
|
|
234
|
+
*/
|
|
235
|
+
export declare function repairIntroducedUnrelatedPoolRuns(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeEdgeIds: ReadonlySet<string>, sceneBefore: GeometryScene): void;
|
|
112
236
|
/** 안쪽 구간(첫·끝 도킹 구간 제외)이 컨테이너 경계선과 나란히 이 거리 안에서 달리면 "경계에 붙었다"고 본다. */
|
|
113
237
|
export declare const BOUNDARY_CLEARANCE = 30;
|
|
114
238
|
/** 웨이포인트의 **안쪽 구간**(도킹 구간 제외)이 어느 컨테이너의 경계선과 나란히 `BOUNDARY_CLEARANCE` 안에서 겹쳐 달리는가. */
|
|
@@ -162,7 +286,9 @@ export declare function repairIntroducedBoundaryHugging(services: Pick<ResolverS
|
|
|
162
286
|
* 종류 다른 중첩(B-17 ⓐ)의 보정 = 도킹 편이 — "가급적 중심에 도킹하되 어쩔 수 없을 땐 약간 비껴서"
|
|
163
287
|
* (사용자 프레이밍). 기본은 중심이고, finding 이 났을 때만, 최소 편이(±25)부터 본다.
|
|
164
288
|
*/
|
|
165
|
-
export declare function planOppositeOverlapRepair(edge: GeometryEdge, scene: GeometryScene
|
|
289
|
+
export declare function planOppositeOverlapRepair(edge: GeometryEdge, scene: GeometryScene, options?: {
|
|
290
|
+
sideEntry?: boolean;
|
|
291
|
+
}): GeometryPoint[] | null;
|
|
166
292
|
/**
|
|
167
293
|
* 이 간선의 **가짜 합류**(B-77)를 없애는 경로(순수). 못 찾으면 `null`.
|
|
168
294
|
*
|
|
@@ -201,7 +327,13 @@ export declare function planChainOverlapRepair(edge: GeometryEdge, scene: Geomet
|
|
|
201
327
|
* 짝 중 **새 간선만** 손댄다(안전 성질 2).
|
|
202
328
|
*/
|
|
203
329
|
export declare function repairIntroducedChainOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>): void;
|
|
204
|
-
|
|
330
|
+
/**
|
|
331
|
+
* B-14 ⓒ1 — 이 배치가 새로 낸 읽을 수 없는 중첩을 고친다. `beforeEdgeIds` 에 든 간선(배치 전부터 있던 것)은 손대지 않는다.
|
|
332
|
+
* 🔴 **B-178** — `sideEntryEdgeIds` 에 든 간선에만 빈 옆면 진입 후보를 연다(호출자 = 「이 배치가 경로를 다시 깐 기존 간선」).
|
|
333
|
+
* 🔴 **반환 = 실제로 경로를 바꾼 간선** — 뒤의 라벨-선 보정이 그 간선의 라벨을 이 배치 몫으로 다뤄야 한다(안 그러면
|
|
334
|
+
* 다시 깐 기존 간선의 라벨이 새 경로 위에 남는다 — N20 실측 +9).
|
|
335
|
+
*/
|
|
336
|
+
export declare function repairIntroducedOppositeOverlaps(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>, beforeEdgeIds: ReadonlySet<string>, sideEntryEdgeIds?: ReadonlySet<string>): ReadonlySet<string>;
|
|
205
337
|
/**
|
|
206
338
|
* 라벨의 새 bounds(순수). 라벨이 공유 구간 위에 없으면 `null`(옮길 이유가 없다). 고유 구간을 못
|
|
207
339
|
* 찾거나 옮긴 자리가 도형과 겹치면 `null`(손대지 않고 보고에 맡긴다).
|
|
@@ -298,8 +430,15 @@ export declare function planLabelBesideOwnLine(edge: GeometryEdge, scene: Geomet
|
|
|
298
430
|
* 반사실(합성 5,002 · lineage 93) = 해소 9 · lineage 는 표본 78 한 회차(사람 값과 3px) · 새 판정 0.
|
|
299
431
|
* ⚠ **못 닫는 것** — 라벨이 선보다 넓다(🔁 B-31 「틈 40」) · 고른 자리가 다른 선과 공유 구간이다(`label-on-shared-segment`
|
|
300
432
|
* — 공유 구간 검사 + 미끄럼 후보를 더한 판도 이득 0) · base 에서 이미 표류한 라벨(선 기하가 안 바뀌어 이 가지에 안 온다).
|
|
433
|
+
*
|
|
434
|
+
* ── B-119 ⓒ′. **착지가 라벨 뒤로 비켜 선 간선(`labelLandingFlowIds`)은 겹침 없이도 base 로 되돌린다** ──
|
|
435
|
+
*
|
|
436
|
+
* 새 노드가 base 라벨 오른끝 + 10 에 서도 bpmn-js 가 착지 뒤 라벨을 비례 위치로 옮겨 노드 왼변에 **닿게** 둔다(합성 발동 167 중
|
|
437
|
+
* 22 · 여유 5 미만 · 표본 144 = 1px — 사람은 여유 30 으로 고쳤다). 1px 은 위 「겹칠 때만」 문턱(kind 깊이 3)에 안 걸려 아무도
|
|
438
|
+
* 안 본다. 그 자리는 하강이 **일부러 비워 둔** 자리라 되돌리면 여유가 정확히 그 10 이다. ⚠ 「겹칠 때만」(2026-09-28 결정)은
|
|
439
|
+
* 일반 재배선 라벨의 규칙이라 그대로 둔다 — 넓히는 것은 이 간선들뿐이다. 자리 · 거리 · 채택 게이트는 ⓑ 와 같다.
|
|
301
440
|
*/
|
|
302
|
-
export declare function followMovedEdgeLabels(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, before: ReadonlyMap<string, EdgeLabelSnapshot>): void;
|
|
441
|
+
export declare function followMovedEdgeLabels(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, before: ReadonlyMap<string, EdgeLabelSnapshot>, labelLandingFlowIds?: ReadonlySet<string>): void;
|
|
303
442
|
/**
|
|
304
443
|
* 이 배치가 **새로 만든** 간선의 라벨을 선·경계선에서 뗀다(맨 마지막 — 라벨 귀속 보정 뒤). 선재 라벨은 불가침 —
|
|
305
444
|
* 단 `reroutedEdgeIds`(이 배치가 끝점을 바꿔 경로를 다시 깐 선재 간선)는 대상이다(B-114 ⓔ ⓑ).
|
|
@@ -342,3 +481,4 @@ export declare function repairIntroducedShapeLabelLines(services: Pick<ResolverS
|
|
|
342
481
|
* `scene` 으로 하고 통과한 간선만 실제로 옮긴다 · 새 키가 생기면 **그 간선만** 두고 간다(🔁 B-61).
|
|
343
482
|
*/
|
|
344
483
|
export declare function redockIntroducedDetachedEndpoints(services: Pick<ResolverServices, 'elementRegistry' | 'modeling'>, beforeKeys: ReadonlySet<string>): void;
|
|
484
|
+
export {};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import { BpmnDocumentLocales } from '../../adapter/i18n';
|
|
1
2
|
import { SymbolicOp } from '../symbolicOp';
|
|
2
3
|
import { DocumentIndex } from './documentIndex';
|
|
3
4
|
import { ResolveIssue } from './issues';
|
|
4
|
-
|
|
5
|
+
/** 검증 옵션 — 문서 밖에서만 알 수 있는 입력. */
|
|
6
|
+
export interface ValidateOpsOptions {
|
|
7
|
+
/**
|
|
8
|
+
* 그룹의 문서 언어 설정(B-4 ④) — 있으면 다국어 그룹이다(문구 = `names`/`texts` 로 문서 언어 전부 · 평문 거부).
|
|
9
|
+
* 없으면 기능이 꺼진 그룹이다(평문만 · 맵 거부). 그룹 설정은 문서에 없으므로 호스트가 공급한다.
|
|
10
|
+
*/
|
|
11
|
+
i18n?: BpmnDocumentLocales;
|
|
12
|
+
}
|
|
13
|
+
export declare function validateOps(ops: readonly SymbolicOp[], index: DocumentIndex, options?: ValidateOpsOptions): ResolveIssue[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BwlAfterColumn, BwlBand, BwlPlacement, BwlPoolOrder } from '../core/hints';
|
|
2
|
-
import { IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
|
|
2
|
+
import { IrLocaleTexts, IrAssociation, IrDataAssociation, IrDataStore, AddableFlowNodeType, IrEventDefinition, IrFlowCondition, IrGroup, IrLane, IrMessageFlow, IrNode, IrParticipant, IrSequenceFlow, IrTextAnnotation } from '../core/ir';
|
|
3
3
|
/** LLM 이 산출하는 단일 심볼릭 op. `kind` 로 판별한다. */
|
|
4
4
|
export type SymbolicOp =
|
|
5
5
|
/** 풀 추가. `order` = 풀 세로 순서 힌트(생략 시 op 순서가 곧 배치 순서). */
|
|
@@ -57,6 +57,7 @@ export type SymbolicOp =
|
|
|
57
57
|
kind: 'participant.update';
|
|
58
58
|
id: string;
|
|
59
59
|
name?: string | null;
|
|
60
|
+
names?: IrLocaleTexts;
|
|
60
61
|
lanes?: IrLane[];
|
|
61
62
|
}
|
|
62
63
|
/** `lane` = 레인 재배정(이동). `type` = 태스크/이벤트 타입 전환(bpmn-js replace 하강 — 외래 확장 속성 유실 가능성은 불변식 2 가 완충). */
|
|
@@ -67,6 +68,7 @@ export type SymbolicOp =
|
|
|
67
68
|
kind: 'node.update';
|
|
68
69
|
id: string;
|
|
69
70
|
name?: string | null;
|
|
71
|
+
names?: IrLocaleTexts;
|
|
70
72
|
lane?: string;
|
|
71
73
|
type?: AddableFlowNodeType;
|
|
72
74
|
eventDefinition?: IrEventDefinition;
|
|
@@ -85,6 +87,7 @@ export type SymbolicOp =
|
|
|
85
87
|
kind: 'sequenceFlow.update';
|
|
86
88
|
id: string;
|
|
87
89
|
name?: string | null;
|
|
90
|
+
names?: IrLocaleTexts;
|
|
88
91
|
condition?: IrFlowCondition | null;
|
|
89
92
|
source?: string;
|
|
90
93
|
target?: string;
|
|
@@ -92,16 +95,19 @@ export type SymbolicOp =
|
|
|
92
95
|
kind: 'messageFlow.update';
|
|
93
96
|
id: string;
|
|
94
97
|
name?: string | null;
|
|
98
|
+
names?: IrLocaleTexts;
|
|
95
99
|
} | {
|
|
96
100
|
kind: 'dataStore.update';
|
|
97
101
|
id: string;
|
|
98
102
|
name?: string | null;
|
|
103
|
+
names?: IrLocaleTexts;
|
|
99
104
|
}
|
|
100
105
|
/** `text` 는 주석의 본질이라 제거 불가(주석 삭제 = element.remove). `placement: null` = 힌트 제거(휴리스틱 복귀). */
|
|
101
106
|
| {
|
|
102
107
|
kind: 'annotation.update';
|
|
103
108
|
id: string;
|
|
104
109
|
text?: string;
|
|
110
|
+
texts?: IrLocaleTexts;
|
|
105
111
|
placement?: BwlPlacement | null;
|
|
106
112
|
}
|
|
107
113
|
/** `members` 는 전체 재선언(생략 = 보존) — resolver 가 바운즈를 재산출한다. */
|
|
@@ -109,8 +115,20 @@ export type SymbolicOp =
|
|
|
109
115
|
kind: 'group.update';
|
|
110
116
|
id: string;
|
|
111
117
|
name?: string | null;
|
|
118
|
+
names?: IrLocaleTexts;
|
|
112
119
|
members?: string[];
|
|
113
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* **확인만** — 그 요소의 `locale` 칸에 걸린 확인 요청(`bwl:reviewRequest`)을 문구를 바꾸지 않고 해소한다.
|
|
123
|
+
* 다른 언어가 고쳐졌지만 이 칸의 번역은 여전히 맞을 때(오타 수준 수정) 쓴다. 번역을 고쳐야 하면 이것이 아니라
|
|
124
|
+
* 그 요소의 `*.update` 에 `names`/`texts` 를 준다 — 문구가 **실제로 바뀐 칸**의 표식만 해소된다.
|
|
125
|
+
* 다국어 그룹에서만 받는다 · 그 칸에 표식이 없으면 거부한다(읽은 뒤 사람이 이미 정리했을 수 있다).
|
|
126
|
+
*/
|
|
127
|
+
| {
|
|
128
|
+
kind: 'translation.confirm';
|
|
129
|
+
id: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
}
|
|
114
132
|
/** 요소 제거(카테고리 무관 — 도형·연결 균일, 부착 연결은 연쇄 제거). */
|
|
115
133
|
| {
|
|
116
134
|
kind: 'element.remove';
|
|
@@ -120,5 +138,5 @@ export type SymbolicOp =
|
|
|
120
138
|
* 심볼릭 op 종류의 닫힌 집합(단일 출처). resolver·JSON Schema(`schema.ts`)가 공유한다.
|
|
121
139
|
* 아래 컴파일타임 단언이 이 튜플과 `SymbolicOp['kind']` 의 일치를 강제 — 한쪽만 늘리면 타입 에러.
|
|
122
140
|
*/
|
|
123
|
-
export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "element.remove"];
|
|
141
|
+
export declare const SYMBOLIC_OP_KINDS: readonly ["participant.add", "participant.update", "node.add", "node.update", "sequenceFlow.add", "sequenceFlow.update", "messageFlow.add", "messageFlow.update", "dataStore.add", "dataStore.update", "dataAssociation.add", "association.add", "annotation.add", "annotation.update", "group.add", "group.update", "translation.confirm", "element.remove"];
|
|
124
142
|
export type SymbolicOpKind = (typeof SYMBOLIC_OP_KINDS)[number];
|