@g1cloud/entity-modeler-next 5.0.0-alpha.25 → 5.0.0-alpha.27
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/core/ddl.d.ts +10 -0
- package/dist/core/jsonModel.d.ts +23 -0
- package/dist/core/parseMermaid.d.ts +9 -0
- package/dist/core/parseSqlDdl.d.ts +11 -0
- package/dist/core/quickFix.d.ts +12 -0
- package/dist/core/validation.d.ts +13 -1
- package/dist/editor/controller.d.ts +4 -0
- package/dist/entity-modeler-next.css +1 -1
- package/dist/entity-modeler.js +11237 -10363
- package/dist/entity-modeler.umd.cjs +31 -21
- package/dist/i18n/ko.d.ts +24 -0
- package/dist/index.d.ts +5 -0
- package/dist/view/CommandPalette.vue.d.ts +10 -0
- package/dist/view/TextImportModal.vue.d.ts +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EmbeddableCatalog, LogicalModel } from './types';
|
|
2
|
+
export type SqlDialect = 'postgres';
|
|
3
|
+
export interface DdlContext {
|
|
4
|
+
/** EMBED_PREDEF 서브컬럼의 카탈로그 기본 물리명 해석용(validateModel과 동형 주입). */
|
|
5
|
+
embeddableCatalog?: EmbeddableCatalog;
|
|
6
|
+
}
|
|
7
|
+
/** 표시 모드 → 기본 DDL 방언. 현재는 PG 단일. */
|
|
8
|
+
export declare function defaultSqlDialect(): SqlDialect;
|
|
9
|
+
/** 논리 모델을 지정 방언의 SQL DDL로 직렬화. */
|
|
10
|
+
export declare function entityModelToDdl(logical: LogicalModel, _dialect?: SqlDialect, ctx?: DdlContext): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DiagramLayout, LogicalModel } from './types';
|
|
2
|
+
import { MergeDiagramSource } from './mergeDiagram';
|
|
3
|
+
export declare const DIAGRAM_JSON_FORMAT = "entity-modeler-diagram";
|
|
4
|
+
export declare const DIAGRAM_JSON_VERSION = 1;
|
|
5
|
+
export interface DiagramJsonEnvelope {
|
|
6
|
+
format: typeof DIAGRAM_JSON_FORMAT;
|
|
7
|
+
version: number;
|
|
8
|
+
logical: LogicalModel;
|
|
9
|
+
layout: DiagramLayout;
|
|
10
|
+
}
|
|
11
|
+
/** 파싱 실패(잘못된 JSON·봉투·골격) — 호출부가 사용자에게 사유를 표시할 수 있도록 message에 이유를 담는다. */
|
|
12
|
+
export declare class InvalidDiagramJsonError extends Error {
|
|
13
|
+
constructor(reason: string);
|
|
14
|
+
}
|
|
15
|
+
/** 현재 다이어그램(논리 + 레이아웃)을 이식 가능한 JSON 백업 문자열로 직렬화(pretty). */
|
|
16
|
+
export declare function diagramToJson(logical: LogicalModel, layout: DiagramLayout): string;
|
|
17
|
+
/**
|
|
18
|
+
* JSON 백업 문자열 → 임포트 소스(논리 + 레이아웃). 봉투·모델 골격을 검증하고, 실패 시
|
|
19
|
+
* `InvalidDiagramJsonError`를 던진다. 레이아웃 서브배열이 없으면 빈 배열로 관용 보정한다
|
|
20
|
+
* (논리 전용 JSON도 수용 — importEntities 폴백 geo가 배치). 참조 무결성(dangling)은 mergeDiagram이
|
|
21
|
+
* 관용 처리하므로 여기서 강제하지 않는다.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseDiagramJson(text: string): MergeDiagramSource;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LogicalModel } from './types';
|
|
2
|
+
import { MergeDiagramSource } from './mergeDiagram';
|
|
3
|
+
/** Mermaid ER 소스를 논리 모델로 파싱(순수). 좌표/그룹/노트는 없음(리버스 임포트는 논리 전용). */
|
|
4
|
+
export declare function parseMermaidEr(text: string): LogicalModel;
|
|
5
|
+
/**
|
|
6
|
+
* Mermaid ER 텍스트 → 임포트 소스(논리 + auto-layout 레이아웃). `controller.importEntities`가 그대로 소비한다.
|
|
7
|
+
* 좌표가 없으므로 packEntityBoxes(높이 인지)로 겹침 없는 격자를 생성한다.
|
|
8
|
+
*/
|
|
9
|
+
export declare function mermaidErToImportSource(text: string): MergeDiagramSource;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LogicalModel } from './types';
|
|
2
|
+
import { MergeDiagramSource } from './mergeDiagram';
|
|
3
|
+
export interface ParseSqlDdlResult {
|
|
4
|
+
logical: LogicalModel;
|
|
5
|
+
/** best-effort 파싱에서 건너뛴 statement·해석 못한 부분(부분 성공 가시화). */
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
/** SQL DDL을 논리 모델로 파싱(순수·best-effort). warnings에 건너뛴 부분 보고. */
|
|
9
|
+
export declare function parseSqlDdl(text: string): ParseSqlDdlResult;
|
|
10
|
+
/** SQL DDL → 임포트 소스(논리 + auto-layout). controller.importEntities가 그대로 소비. */
|
|
11
|
+
export declare function sqlDdlToImportSource(text: string): MergeDiagramSource;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { JpaCascadeType, LogicalModel, ModelId } from './types';
|
|
2
|
+
import { ValidationIssue } from './validation';
|
|
3
|
+
export interface QuickFixPlan {
|
|
4
|
+
ruleId: string;
|
|
5
|
+
/** 현재는 association end의 cascade 재설정 한 종류(중복 제거). 확장 시 kind 분기 추가. */
|
|
6
|
+
kind: 'setEndCascades';
|
|
7
|
+
assocRef: ModelId;
|
|
8
|
+
which: 'end1' | 'end2';
|
|
9
|
+
cascades: JpaCascadeType[];
|
|
10
|
+
}
|
|
11
|
+
/** 이슈에 적용 가능한 결정적 quick-fix가 있으면 계획을, 없으면 null(순수·부수효과 없음). */
|
|
12
|
+
export declare function resolveQuickFix(issue: ValidationIssue, model: LogicalModel): QuickFixPlan | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EmbeddableCatalog, LogicalModel, ModelId, SuperClassCatalog } from './types';
|
|
1
|
+
import { Attribute, DbColumn, EmbeddableCatalog, LogicalModel, ModelId, SuperClassCatalog } from './types';
|
|
2
2
|
export declare const PHYSICAL_NAME_MAX_LENGTH = 63;
|
|
3
3
|
/**
|
|
4
4
|
* 물리명이 이식성 권장 한도를 초과하면 **초과 길이(문자 수)**, 아니면 null(비차단 — 호출부는 저장을
|
|
@@ -63,6 +63,18 @@ export interface ValidationContext {
|
|
|
63
63
|
*/
|
|
64
64
|
superClassCatalog?: SuperClassCatalog;
|
|
65
65
|
}
|
|
66
|
+
/** 같은 키를 2회 이상 갖는 항목만 중복으로 — 중복 그룹의 모든 멤버를 반환(어느 쪽이든 보고 고치게). */
|
|
67
|
+
/**
|
|
68
|
+
* 임베드 서브컬럼의 **실효 물리명** — 물리명 override(비어있지 않은 physicalName)가 있으면 그 값, 없으면
|
|
69
|
+
* 상속 기본값을 해석한다. EMBED_PREDEF·EMBED_OWN의 빈 슬롯은 "미매핑"이 아니라 카탈로그/임베더블 source의
|
|
70
|
+
* 기본 컬럼명을 상속하므로(JPA @Embedded는 @AttributeOverride 부재 시 임베더블 선언 컬럼명 사용), 컬럼 충돌
|
|
71
|
+
* 판정은 raw '' 가 아닌 이 실효 물리명으로 해야 한다. 특히 한 테이블에 같은 임베더블(예: Money)이 여러 번
|
|
72
|
+
* 쓰이고 서브컬럼을 비워두면 전부 같은 기본명으로 상속돼 실제 컬럼 충돌이 난다.
|
|
73
|
+
* - EMBED_PREDEF: 카탈로그 fields[index].physicalName (ctx 미주입이면 해석 불가 → '' 로 graceful degrade).
|
|
74
|
+
* - EMBED_OWN: 임베더블 엔터티 source 컬럼[index]의 physicalName(선언순 평탄화 = flattenEmbeddableColumns 동형).
|
|
75
|
+
* - NORMAL 등 그 외: raw physicalName 그대로(빈 값은 '' → 충돌 판정 제외).
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveColumnPhysicalName(attr: Attribute, col: DbColumn, index: number, model: LogicalModel, ctx?: Pick<ValidationContext, 'embeddableCatalog'>): string;
|
|
66
78
|
/**
|
|
67
79
|
* 설계 품질 검증 — 논리 모델(+선택 컨텍스트)을 받아 이슈 목록을 돌려준다.
|
|
68
80
|
* 순수 함수. 호출부가 심각도/차단정책/표시시점을 해석한다(예: 빈 이름 info는 저장 시점에만 표시).
|
|
@@ -73,6 +73,10 @@ export interface EditorController {
|
|
|
73
73
|
* targetRef 없는 이슈(model 레벨)는 인덱스에서 제외(인라인 매칭 대상 아님).
|
|
74
74
|
*/
|
|
75
75
|
issuesByRef: ComputedRef<Map<ModelId, ValidationIssue[]>>;
|
|
76
|
+
/** 이 이슈에 결정적 quick-fix가 있는지(뷰가 '수정' 버튼 노출 여부 판단). 조회 모드에선 항상 false. */
|
|
77
|
+
hasQuickFix(issue: ValidationIssue): boolean;
|
|
78
|
+
/** 이슈의 quick-fix 적용(단일 command·undo 가능). 적용됐으면 true, 불가(없음·조회·잠금)면 false. */
|
|
79
|
+
applyQuickFix(issue: ValidationIssue): boolean;
|
|
76
80
|
/**
|
|
77
81
|
* CHK-DSN-3(모델링된 관계 없는 엔티티) 활성 토글 — 사용자가 검증 패널에서 켠다(기본 off).
|
|
78
82
|
* 비형식 FK 오탐 가능성이 있어 옵트인. read-only에서도 토글 가능(표시 제어라 editable 무관).
|