Skip to content

JSON 주소와 값 검증을 Core 정본으로 통일한다 #731

Description

@developer-1px

Goal Anchor

  • Outcome: JSON 주소와 JSON 값의 공통 규칙을 Core 정본에서 소비하여 Rich Text·React·Zod·Clipboard 사이의 해석 불일치를 없앤다.
  • Done: Core가 지원하는 주소로 만든 Rich Text editor가 React에서 같은 문서를 읽고 변경·관찰할 수 있다. JSON 값으로 수용한 clipboard/도메인 값이 Core의 JSON 제약과 일치한다. 영향 범위의 Pointer 인코딩과 일반 JSON 유효성 재구현을 제거하고 owner API·문서·Usage·source registration·회귀 검증을 갖춘다.
  • Don't: JSONDocument의 여섯 멤버, 기존 JSON 유효성 규칙과 도메인 schema를 바꾸지 않는다. 읽기에 문서 전체 복제나 별도 mutable runtime을 도입하지 않는다. 단축키·Annotation·Gesture·기본 Profile 동결·PR merge는 이번 PR에 포함하지 않는다.

승인과 근거

사용자가 건강도 감사의 실행 우선순위에 대해 “진행하자”라고 요청했다. 이번 이슈는 첫 단계인 주소·JSON 검증의 정본화를 소유한다. 나머지 순서는 #725에 유지한다.

감사 기준 #730 ba1f0ee에서 공개 API로 확인했다.

  • /editor: Rich Text editor 생성과 React SSR 성공.
  • #/editor: editor 생성 성공, React SSR은 Rich Text document was not found로 실패.
  • NaN, Infinity, Date, sparse array: Core applyPatchnot_serializable, Sheet·Database clipboard parser는 수용.

책임과 영향 범위

  • Core Pointer owner: 주소 문법·토큰 인코딩·대상 조회.
  • Core JSON owner: 일반 JSON 값의 유효성. Sheet 직사각형, Database 형태, Rich Text schema 등 추가 조건은 도메인이 유지한다.
  • Rich Text와 React: 정본 주소 해석을 소비하고 snapshot 참조 동일성·변경 관찰을 보존한다.
  • Core JSONPath와 Zod: 기존 정본 Pointer 인코딩 API를 소비한다.
  • Editing clipboard와 Rich Text: 같은 JSON 제약을 소비한다.
  • 필요한 공개 capability는 기존 owner에서 최소한으로 노출하며, 패키지 README/API reference·site Usage·source registration을 연결한다.

완료 증거

  1. root, 일반 Pointer, URI fragment, escaped key로 같은 문서를 읽고 Rich Text 편집 결과와 React 관찰이 일치한다.
  2. 비유효 값·순환 구조·희소 배열 등을 도메인 입력에서 거절하고 유효한 JSON은 계속 수용한다. 거절 시 문서·선택·History를 바꾸지 않는다.
  3. 영향 범위의 별도 Pointer encoder와 일반 JSON 판별 구현이 남지 않는다.
  4. Core/Editing/Rich Text/React/Zod의 관련 테스트·타입 검사·빌드, 공개 계약·문서·site 등록 검사를 통과한다.

기존 작업과의 관계

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions