@g1cloud/entity-modeler-next 5.2.29 → 5.2.31

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.
@@ -506,6 +506,22 @@ export type ResolveError = {
506
506
  where: string;
507
507
  expected: string;
508
508
  got: string;
509
+ }
510
+ /**
511
+ * 다국어(MultiLangText) 자리에 **수용할 수 없는 형상**이 왔다 — 특히 평문 문자열.
512
+ *
513
+ * ★★**조용한 오염을 막는 자리다**(2026-09-05 실사용 결함): `attribute.update {description:"설명"}` 이
514
+ * 어느 층에서도 안 막혀 그대로 저장됐고, 객체로 취급되는 지점에서 **문자 단위 맵**
515
+ * (`{"0":"회","1":"원",…}`)으로 굳었다. 스키마(`schema.ts` `MULTI_LANG`)는 형상을 규정하는데
516
+ * 실행 경로가 그걸 집행하지 않아 «선언과 집행이 갈려» 있었다.
517
+ * ⚠️`{}`·`null` 은 **정당하다**(부재·비움 동치 — `null ≡ {} ≡ 부재` 규약).
518
+ */
519
+ | {
520
+ code: 'multilang-shape-invalid';
521
+ opIndex: number;
522
+ where: string;
523
+ expected: string;
524
+ got: string;
509
525
  } | {
510
526
  code: 'handle-by-unsupported';
511
527
  opIndex: number;
@@ -75,16 +75,6 @@ export declare function javaTypeFromDataType(dataType: string | undefined): stri
75
75
  export declare function isJavaDataTypeCompatible(javaType: string | undefined, dataType: string | undefined, predefinedCustomTypes?: PredefinedCustomTypeCatalog): boolean | undefined;
76
76
  /** 저장값 → 박싱 타입명(`PrimitiveInt`→`Integer`). 원시가 아니면 undefined. */
77
77
  export declare function boxedJavaTypeOf(value: string | undefined): string | undefined;
78
- /**
79
- * Y/N 문자 플래그 컨버터가 붙는 boolean 형상 판정 — **코드젠 방출 조건과 검증 면제의 단일 출처**.
80
- *
81
- * 조건은 `!multiValue && dataType === 'VARCHAR'` 그대로다(코드젠 ynAxis 가 쓰던 술어를 승격):
82
- * - CHAR 를 넓히지 않는 근거 = 레거시에 CHAR 사례가 없어 컨버터 관행을 확인할 수 없다(모르는 값 규약).
83
- * - multiValue 는 컬럼 전체를 다중값 컨버터가 소유하므로 이 축과 겹치지 않는다(@Convert 중복 금지).
84
- * 검증(`CHK-TYPE-8`)이 이 형상을 NULL-안전으로 면제하는 근거는 실물 컨버터다 —
85
- * `PrimitiveBooleanToYNStringConverter.convertToEntityAttribute` 가 `"Y".equals(dbData)` 라
86
- * **NULL → false 로 흡수**된다(bsp-shared/ecp-common · 2026-09-02 실물 인용). 재기술하면 어긋난다.
87
- */
88
78
  export declare function ynBooleanConverterKind(javaType: string | undefined, dataType: string | undefined, multiValue?: boolean): 'primitive' | 'boxed' | null;
89
79
  export declare function isNullLoadUnsafePrimitive(javaType: string | undefined, dataType: string | undefined, multiValue?: boolean): boolean;
90
80
  /**
@@ -23,6 +23,22 @@ export declare function hasMultiLangText(t: MultiLangText | undefined): boolean;
23
23
  * 객체를 만들면 왕복 diff·재렌더가 이유 없이 늘어난다(`columnResolution` 이 같은 이유로 참조 안정을 지킨다).
24
24
  */
25
25
  export declare function normalizeMultiLangText(t: MultiLangText | undefined | null): MultiLangText | undefined;
26
+ /**
27
+ * 이 값을 MultiLangText 자리에 **넣어도 되는가** — 입력 경계에서 쓰는 «수용 형상» 술어.
28
+ *
29
+ * 허용: 부재(`undefined`)·비움(`null`)·빈 객체(`{}` = 부재 동치)·키가 전부 `ko|en|ja|zh` 이고 값이 문자열인 객체.
30
+ * 거부: 그 밖 전부 — 특히 **평문 문자열**.
31
+ *
32
+ * ★★**왜 필요한가**(2026-09-05 실사용 결함): `attribute.update {description: "설명"}` 처럼 평문을 보내면
33
+ * 어느 층도 막지 않아 그대로 저장되고, 그 값이 객체로 취급되는 지점에서 **문자 단위 맵**
34
+ * (`{"0":"회","1":"원",…}` · 공백 인덱스는 아예 누락)으로 굳는다. 「모르는 값을 발명하지 말 것」의 짝인
35
+ * **「형상이 틀린 값을 조용히 받지 말 것」**이고, 조용한 오염이라 에러보다 나쁘다.
36
+ *
37
+ * ⚠️`normalizeOpMultiLang`(resolver)의 `isLangShaped` 와 **묻는 것이 다르다** — 그쪽은 *「이 값이
38
+ * MultiLangText «인가»」*(정규화 대상 고르기)이고 이쪽은 *「이 자리에 이 값을 «받아도 되는가»」*다.
39
+ * 그래서 `{}` 의 답이 갈린다(전자는 아니오 = 안 접는다 / 후자는 예 = 부재 동치라 받는다).
40
+ */
41
+ export declare function isMultiLangAssignable(v: unknown): boolean;
26
42
  /**
27
43
  * 표시할 문자열 하나를 고른다 — `prefer`(유저·콘텐츠 언어) 우선, 없으면 `LANG_ORDER` 순으로 **첫 비어있지 않은 값**.
28
44
  *
@@ -69,6 +69,24 @@ export interface EmbeddableCatalogEntry {
69
69
  defaultName: string;
70
70
  /** 메뉴 표시 라벨(미지정 시 type). */
71
71
  label?: MultiLangText;
72
+ /**
73
+ * 이 임베더블 클래스가 사는 자바 패키지(예: `net.g1project.bluecomm.model` ·
74
+ * `net.g1project.ecp.common.identifier`) — 코드젠이 `{packageName}.{type}` 를 **import 로 방출**한다.
75
+ *
76
+ * ★**왜 «모델»이 아니라 «카탈로그»가 이 축을 갖는가**: EMBED_OWN 은 임베더블이 문서 «안» 엔티티라
77
+ * `resolvePackage` 로 패키지를 도출할 수 있지만, EMBED_PREDEF 는 **모델 밖 클래스**라 도구가 알 방법이
78
+ * 없다. 카탈로그를 주는 쪽(호스트)만 아는 사실이므로 `converterCatalog`·`groupCodeEnumPackage` 와 같은
79
+ * **주입 seam** 으로 연다.
80
+ *
81
+ * ★**미주입이면 발명하지 않는다** — 코드젠은 import 를 생략하고 `fillIn`(패키지 확인)으로 표면화한다
82
+ * (`groupCodeEnumPackage` 미주입과 **같은 관용구**). 종전엔 그 자리가 **무신호**라 import 없는
83
+ * `private MemberNo memberNo;` 가 컴파일 불가인 채로 나갔다.
84
+ *
85
+ * ⚠️`Money` 는 이 축을 **안 본다** — 프레임워크 상수 FQN 세트(`Money` + `MoneyUserType` +
86
+ * `@CompositeType`)가 한 덩어리라 패키지만 갈아끼우는 표현이 성립하지 않는다(`scaffoldJava` 의
87
+ * `FQN.money`·`FQN.moneyUserType` 가 그 자리의 소유자다).
88
+ */
89
+ packageName?: string;
72
90
  /** 펼쳐질 컬럼 메타모델(선언 순서 = dbAttr 인덱스). */
73
91
  fields: EmbeddableCatalogField[];
74
92
  }