@g1cloud/bpmn-modeler-next 5.0.0-alpha.80 → 5.0.0-alpha.82

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.
@@ -0,0 +1,53 @@
1
+ import { ModdleElement, ParseWarning } from '../adapter/xml';
2
+ type El = ModdleElement;
3
+ /**
4
+ * 이 쓰기가 만진 요소 id 집합 — 호스트 `BpmnChangedElements` 와 같은 형태.
5
+ *
6
+ * `modified` 는 **의미론 변화와 기하 변화의 합집합**이다. 둘을 가르지 않는 이유 = 소비처 둘이
7
+ * 모두 합집합을 쓴다(충돌 판정 = 「만졌는가」 · 패널 범위 = 「이번 것인가」). 가를 필요가 생기면
8
+ * 그때 `modifiedGeometry` 를 additive 로 더한다 — 지금 나누면 어느 소비처도 안 쓰는 축이 계약에 남는다.
9
+ */
10
+ export interface BpmnChangedElements {
11
+ added: string[];
12
+ removed: string[];
13
+ modified: string[];
14
+ }
15
+ export interface DiffBpmnElementsOptions {
16
+ /**
17
+ * 「움직였다」로 볼 최소 좌표 변화(px). 기본 **0.5** = 직렬화 잡음만 거른다.
18
+ *
19
+ * ⚠ **의도적으로 작다** — 이 판정기의 1차 소비처가 충돌 판정이라 *사람이 일부러 옮긴 것*을
20
+ * 놓치는 쪽이 비싸다. 범위 축(B-109)의 N20 은 5px 로 쟀는데 두 값 사이에서 결과가 갈리지
21
+ * 않았다(그 회차들의 이동은 전부 수십~수백 px).
22
+ */
23
+ moveTolerance?: number;
24
+ /**
25
+ * 라벨 **위치**의 허용 오차(px). 기본 **8**.
26
+ *
27
+ * 🔴 **라벨 박스는 사람 손과 폰트 근사가 함께 움직인다** — 실측(2026-09-26 · 82쌍 · 본체가 안
28
+ * 움직인 라벨 **280**): 라벨만 달라진 것이 **2건**이고 위치 Δ 3·5px · 크기 Δ 6·9px 였다. 우리
29
+ * 헤드리스 하강이 폰트 폭을 **근사**하므로(`headless/dom`) 재직렬화만으로 그만큼 표류한다.
30
+ * ⇒ 표류폭 위에 임계를 둔다. ⚠ **크기는 아예 안 본다** — bpmn-js 에 라벨 리사이즈가 없어
31
+ * 사람이 만들 수 없는 변화이고, 텍스트·폰트가 정하는 파생값이다.
32
+ */
33
+ labelTolerance?: number;
34
+ }
35
+ /**
36
+ * 두 문서가 만진 요소를 가른다. **순수 함수** — 좌표·의미 어느 쪽 변화든 `modified` 에 든다.
37
+ *
38
+ * ⚠ **id 가 진실이다** — bpmn-js 가 요소를 재생성하는 조작(morph)은 id 를 바꾸므로 `removed` +
39
+ * `added` 한 쌍으로 잡힌다. 그것이 정직한 판정이다(같은 요소라고 우기면 충돌 판정이 거짓 음성이 된다).
40
+ */
41
+ export declare function diffBpmnElements(oldDefinitions: El, newDefinitions: El, options?: DiffBpmnElementsOptions): BpmnChangedElements;
42
+ export interface DiffBpmnElementsXmlResult extends BpmnChangedElements {
43
+ warnings: ParseWarning[];
44
+ }
45
+ /** XML 진입점 — 호스트(서버)가 두 버전 본문을 그대로 넘기는 경로. C-3 이 적은 그 시그니처다. */
46
+ export declare function diffBpmnElementsXml(oldXml: string, newXml: string, options?: DiffBpmnElementsOptions): Promise<DiffBpmnElementsXmlResult>;
47
+ /**
48
+ * 「이번에 만들거나 만진 것」 — 패널 범위 축(B-109 ⓑ)이 쓰는 형태.
49
+ *
50
+ * ⚠ `removed` 는 넣지 않는다 — 사라진 요소는 패널이 가리킬 대상이 없다(판정도 안 난다).
51
+ */
52
+ export declare function touchedElements(changed: BpmnChangedElements): Set<string>;
53
+ export {};
@@ -0,0 +1,36 @@
1
+ import { ModdleElement, ParseWarning } from '../adapter/xml';
2
+ /** 시블링 `IssueSeverity` 와 같은 3단계 — 패널이 필터 토글로 쓰고, 정렬 우선순위이기도 하다. */
3
+ export type IssueSeverity = 'error' | 'warning' | 'info';
4
+ /**
5
+ * 이슈가 가리키는 대상의 종류. 지금 쓰는 둘만 둔다 — union 확장은 additive 라 규칙이 늘 때
6
+ * 함께 넓히면 된다(미리 넣으면 어느 규칙도 쓰지 않는 값이 계약에 남는다).
7
+ */
8
+ export type SemanticTargetKind = 'flowNode' | 'participant';
9
+ export interface SemanticIssue {
10
+ /**
11
+ * 규칙 식별자 겸 **메시지 코드**. 소비측이 이 값(+`params`)으로 표시 문자열을 해석한다.
12
+ * 시블링 `CHK-*` 형식을 따르되 카테고리는 BPMN 고유라 충돌하지 않는다(`FLOW` · `POOL`).
13
+ */
14
+ ruleId: string;
15
+ severity: IssueSeverity;
16
+ targetKind: SemanticTargetKind;
17
+ /**
18
+ * 문제 요소 id 목록. 🔴 **시블링의 단수 `targetRef` 와 의도적으로 다르다** — 이 모듈에는
19
+ * 문서당 1건으로 **집약하는 규칙**이 있다(`CHK-POOL-1`: 실무 문서에서 문서당 5~18건이
20
+ * 전부 참이라, 개별로 내면 패널이 한 규칙으로 덮인다). 단일 대상 규칙은 길이 1 이다.
21
+ */
22
+ targetRefs: string[];
23
+ /** 표시 보간 데이터 — 번역 대상이 아닌 값(타입 리터럴·건수)만. */
24
+ params?: Record<string, string | number>;
25
+ }
26
+ /**
27
+ * 저장 진실 기준 의미론 판정 — 그 문서에 있는 **전부**(선재 포함). `auditBpmnGeometry` 와 같은
28
+ * 지위이고, 입력도 같은 moddle `definitions` 라 서버에서 돈다(A-6 과 같은 근거 — DOM 불요).
29
+ */
30
+ export declare function auditBpmnSemantics(definitions: ModdleElement): SemanticIssue[];
31
+ export interface AuditBpmnSemanticsXmlResult {
32
+ issues: SemanticIssue[];
33
+ warnings: ParseWarning[];
34
+ }
35
+ /** XML 문자열 입력 래퍼 (`describeProcessXml`·`auditBpmnGeometryXml` 대칭). */
36
+ export declare function auditBpmnSemanticsXml(xml: string): Promise<AuditBpmnSemanticsXmlResult>;