@g1cloud/entity-modeler-next 5.0.0-beta.46 → 5.0.0-beta.48
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/README.md +13 -5
- package/dist/agent/resolver.d.ts +35 -0
- package/dist/agent/symbolicOp.d.ts +9 -0
- package/dist/entity-modeler-next.css +1 -1
- package/dist/entity-modeler.js +10929 -10801
- package/dist/entity-modeler.umd.cjs +27 -27
- package/dist/view/columnResolution.d.ts +56 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,8 +28,10 @@ import '@g1cloud/entity-modeler-next/style.css' // required — components rend
|
|
|
28
28
|
src/
|
|
29
29
|
core/ logical/layout types (separated) · resolve (consistency) · routing · autolayout · propagation · validation · type catalogs. Framework-agnostic
|
|
30
30
|
command/ Command (do/undo) · CommandStack · op/opSync (semantic op emit + CAS concurrency)
|
|
31
|
-
editor/ reactive controller (composable wrapping CommandStack, EDITOR inject key)
|
|
31
|
+
editor/ reactive controller (composable wrapping CommandStack, EDITOR inject key) + axis modules split out of it
|
|
32
|
+
(commandPlans · clipboardImport · hostSync · selection — each takes a minimal injected context)
|
|
32
33
|
view/ Vue Flow components (DiagramCanvas · EntityNode · GroupNode · AssociationEdge · PropertyPanel · ValidationPanel, etc.)
|
|
34
|
+
plus composables (useAttributeEditing · useResizableWidth · useTreeCollapse) and pure helpers
|
|
33
35
|
adapter/ storage-schema mapping (persisted v1/v2 · fromPersisted/toPersisted/toPersistedV2 round-trip)
|
|
34
36
|
agent/ natural-language → op track (symbolicOp · resolver · schema · buildAgentBatch)
|
|
35
37
|
dev/ demo harness (excluded from the library build)
|
|
@@ -40,8 +42,14 @@ Core design: **layout references the logical model by `modelId` (one-way)**. The
|
|
|
40
42
|
## Scripts
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
|
-
pnpm dev
|
|
44
|
-
pnpm test
|
|
45
|
-
pnpm
|
|
46
|
-
pnpm
|
|
45
|
+
pnpm dev # demo harness dev server (src/dev)
|
|
46
|
+
pnpm test # Vitest (unit)
|
|
47
|
+
pnpm test:coverage # Vitest + v8 coverage report (no threshold — report only)
|
|
48
|
+
pnpm typecheck # vue-tsc --noEmit
|
|
49
|
+
pnpm build # library build (dist/)
|
|
50
|
+
pnpm verify # headless GUI probe suite (scripts/verify-*.mjs) — boots the dev harness once, runs all probes
|
|
51
|
+
pnpm check # CI gate: test && build
|
|
47
52
|
```
|
|
53
|
+
|
|
54
|
+
`check` is the entry point CI calls; `verify` runs the browser probes and is kept separate because it needs a
|
|
55
|
+
dev server and takes ~100s.
|
package/dist/agent/resolver.d.ts
CHANGED
|
@@ -175,6 +175,7 @@ export type ResolveError = {
|
|
|
175
175
|
/**
|
|
176
176
|
* attribute.update patch에 Attribute 논리 노드에 실재하지 않는 미지 키 — 통과 시 orphan blind-write.
|
|
177
177
|
* 오탈자/스키마 밖 키를 조용히 흡수하지 않고 명시 거부(자기증식 오염 원천 차단).
|
|
178
|
+
* 허용 dotted 접두는 `dbAttrs.` 하나뿐이다(형제 op의 `jpaAttrs.`·`jpa.` 제한과 같은 근거 — 아래 분류 주석).
|
|
178
179
|
*/
|
|
179
180
|
| {
|
|
180
181
|
code: 'attribute-patch-unknown-key';
|
|
@@ -211,6 +212,28 @@ export type ResolveError = {
|
|
|
211
212
|
handle: Handle;
|
|
212
213
|
matches: ModelId[];
|
|
213
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* attribute.update patch의 `attrType` — 미지 값이거나 **전환**(현재 값과 다름)이라 거부.
|
|
217
|
+
*
|
|
218
|
+
* ★`attrType`은 patch로 자유 설정할 값이 아니라 **동반 구조에서 파생되는 성격**이다:
|
|
219
|
+
* `RELATION_*`은 관계가 소유(`derivedFrom`·`end.attributeRef`), `EMBED_*`는 `embedded` 또는 카탈로그
|
|
220
|
+
* 임베더블 `type`, `DIVIDER`는 `dbAttrs=[]`·`type=''`가 동반돼야 성립한다. patch는 그 동반 구조를
|
|
221
|
+
* 표현할 수 없으므로 전환을 통과시키면 **아무도 관리하지 않는데 사용자도 고칠 수 없는 잠긴 컬럼**이
|
|
222
|
+
* 된다(CC-10 ①-b에서 mermaid 파서가 만들던 바로 그 상태 — `fkDerived`가 GUI 편집을 잠그는데 전파·
|
|
223
|
+
* 코드젠은 그 속성을 관리하지 않는다). 각 축의 정상 경로는 따로 있다: 관계 실체화=관계 op,
|
|
224
|
+
* 임베드 서브컬럼=`embeddableOverrides`, inverse nav 토글=`navigable-toggle-unsupported`가 안내.
|
|
225
|
+
* ⇒ 라운드트립 에코(같은 값 재전송)만 통과시킨다. `reason`으로 사용자가 할 일이 갈린다.
|
|
226
|
+
*/
|
|
227
|
+
| {
|
|
228
|
+
code: 'attribute-attrtype-unsupported';
|
|
229
|
+
opIndex: number;
|
|
230
|
+
entity: Handle;
|
|
231
|
+
handle: Handle;
|
|
232
|
+
/** `unknown-value`=오탈자·존재하지 않는 값 / `transition`=값은 유효하나 patch로 바꿀 수 없는 축. */
|
|
233
|
+
reason: 'unknown-value' | 'transition';
|
|
234
|
+
current: string;
|
|
235
|
+
requested: string;
|
|
236
|
+
}
|
|
214
237
|
/** association.update patch 미지 키(스키마는 하드 폐색 — REST 직접 호출 대비 심층 방어). */
|
|
215
238
|
| {
|
|
216
239
|
code: 'association-patch-unknown-key';
|
|
@@ -228,6 +251,18 @@ export type ResolveError = {
|
|
|
228
251
|
handle: AssocHandle;
|
|
229
252
|
keys: string[];
|
|
230
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* index/operation 핸들에 `by:'physicalName'` — 두 대상엔 물리명 차원이 없어 고정할 키가 없다.
|
|
256
|
+
* 조용히 name으로 매칭하면 *지정하지 않은 키로 해소된 결과*가 성공으로 돌아온다(엔티티 핸들의 `by`는
|
|
257
|
+
* 실제로 키를 고정하므로 같은 필드가 대상에 따라 다르게 동작하는 무신호 비대칭). `by`를 빼거나 `'name'`으로.
|
|
258
|
+
*/
|
|
259
|
+
| {
|
|
260
|
+
code: 'handle-by-unsupported';
|
|
261
|
+
opIndex: number;
|
|
262
|
+
entity: Handle;
|
|
263
|
+
handle: Handle;
|
|
264
|
+
target: 'index' | 'operation';
|
|
265
|
+
}
|
|
231
266
|
/** index.update patch 미지 키(스키마 하드 폐색 — 심층 방어). `columns`는 전용 에러가 먼저 잡는다. */
|
|
232
267
|
| {
|
|
233
268
|
code: 'index-patch-unknown-key';
|
|
@@ -290,3 +290,12 @@ export type SymbolicOp = {
|
|
|
290
290
|
*/
|
|
291
291
|
export declare const SYMBOLIC_OP_KINDS: readonly ["entity.add", "entity.update", "entity.remove", "attribute.add", "attribute.update", "attribute.remove", "association.add", "association.remove", "association.update", "associationEnd.update", "index.add", "index.update", "index.remove", "operation.add", "operation.update", "operation.remove", "attribute.reorder", "operation.reorder", "group.add"];
|
|
292
292
|
export type SymbolicOpKind = (typeof SYMBOLIC_OP_KINDS)[number];
|
|
293
|
+
/**
|
|
294
|
+
* `AttributeType`(core) 런타임 목록 — JSON Schema enum과 resolver 값 검증이 공유한다.
|
|
295
|
+
* SoT는 core의 union이고 아래 단언이 양방향 일치를 강제한다(`SYMBOLIC_OP_KINDS`와 같은 형태).
|
|
296
|
+
*
|
|
297
|
+
* ★목록이 있다고 patch로 자유 전환이 되는 건 아니다 — `attrType`은 동반 구조에서 파생되는 성격이라
|
|
298
|
+
* (RELATION_*=관계 소유, EMBED_*=`embedded`/카탈로그 type, DIVIDER=dbAttrs 0·type '') resolver가
|
|
299
|
+
* *전환*은 거부하고 라운드트립 에코만 통과시킨다. 이 목록의 쓸모는 **미지 값 판별**이다.
|
|
300
|
+
*/
|
|
301
|
+
export declare const ATTRIBUTE_TYPES: readonly ["NORMAL", "RELATION_OWN", "RELATION_REF", "EMBED_OWN", "EMBED_REF", "EMBED_PREDEF", "DIVIDER"];
|