Compare commits
No commits in common. "c596a805189a0c2b4b886e7d30035bf8cbd90e4b" and "becef4d32184eb4f93c62c4206e9e7efeb42383b" have entirely different histories.
c596a80518
...
becef4d321
1 changed files with 1 additions and 195 deletions
|
@ -201,201 +201,7 @@ class FsWatcherImpl{
|
||||||
### 5.1.2 Client Side UML
|
### 5.1.2 Client Side UML
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
classDiagram
|
|
||||||
Error <|-- RPCErrorWrapper
|
|
||||||
class RPCErrorWrapper {
|
|
||||||
+data?: unknown
|
|
||||||
+code: RPCErrorCode
|
|
||||||
+toJSON(): Inline
|
|
||||||
}
|
|
||||||
MessageEvent <|-- RPCNotificationEvent
|
|
||||||
class RPCNotificationEvent {
|
|
||||||
+notification: ChunkNotification
|
|
||||||
}
|
|
||||||
```
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
class ViewModelBase {
|
|
||||||
+updateAsSource(path: string, updatedAt: number): void
|
|
||||||
}
|
|
||||||
<<Interface>> ViewModelBase
|
|
||||||
ViewModelBase <|.. IViewModel
|
|
||||||
class IViewModel {
|
|
||||||
+pageView: IPageViewModel
|
|
||||||
}
|
|
||||||
<<Interface>> IViewModel
|
|
||||||
IPageViewModel <|.. BlankPage
|
|
||||||
class BlankPage {
|
|
||||||
+type: string
|
|
||||||
+updateAsSource(_path: string, _updatedAt: number): void
|
|
||||||
}
|
|
||||||
IViewModel <|.. ViewModel
|
|
||||||
class ViewModel {
|
|
||||||
+pageView: IPageViewModel
|
|
||||||
+updateAsSource(path: string, updatedAt: number): void
|
|
||||||
}
|
|
||||||
ViewModelBase <|.. IPageViewModel
|
|
||||||
class IPageViewModel {
|
|
||||||
+type: string
|
|
||||||
}
|
|
||||||
<<Interface>> IPageViewModel
|
|
||||||
IPageViewModel <|.. IDocumentViewModel
|
|
||||||
class IDocumentViewModel {
|
|
||||||
+updateOnNotification(notification: ChunkNotification): void
|
|
||||||
}
|
|
||||||
<<Interface>> IDocumentViewModel
|
|
||||||
class ChunkListMutator {
|
|
||||||
+add(i?: number | undefined, chunkContent?: ChunkContent | undefined): void
|
|
||||||
+create(i?: number | undefined): void
|
|
||||||
+addFromText(i: number, text: string): void
|
|
||||||
+del(id: string): void
|
|
||||||
+move(id: string, pos: number): void
|
|
||||||
}
|
|
||||||
<<Interface>> ChunkListMutator
|
|
||||||
class ChunkListState {
|
|
||||||
+chunks: Chunk[]
|
|
||||||
+cloen(): ChunkListState
|
|
||||||
}
|
|
||||||
class ChunkListStateMutator
|
|
||||||
<<Interface>> ChunkListStateMutator
|
|
||||||
class ChunkListHistory {
|
|
||||||
+history: ChunkListHistoryElem[]
|
|
||||||
+limit: number
|
|
||||||
-applyLast(mutator: ChunkListStateMutator, updatedAt: number): void
|
|
||||||
+current: ChunkListState
|
|
||||||
+currentUpdatedAt: number
|
|
||||||
+revoke(): void
|
|
||||||
+apply(mutator: ChunkListStateMutator, updatedAt: number): boolean
|
|
||||||
}
|
|
||||||
class ChunkMutator {
|
|
||||||
+setType(t: ChunkContentType): void
|
|
||||||
+setContent(s: string): void
|
|
||||||
}
|
|
||||||
<<Interface>> ChunkMutator
|
|
||||||
IDocumentViewModel <|.. DocumentViewModel
|
|
||||||
class DocumentViewModel {
|
|
||||||
+type: "document"
|
|
||||||
+docPath: string
|
|
||||||
+chunks: Chunk[]
|
|
||||||
+history: ChunkListHistory
|
|
||||||
+buffer: Inline
|
|
||||||
+seq: number
|
|
||||||
+tags: string[]
|
|
||||||
+updatedAt: number
|
|
||||||
+tagsUpdatedAt: number
|
|
||||||
+updateOnNotification(notification: ChunkNotification): void
|
|
||||||
-updateMark(updatedAt: number): void
|
|
||||||
+apply(mutator: ChunkListStateMutator, updatedAt: number, seq: number, refresh?: boolean): void
|
|
||||||
+updateAsSource(_path: string, _updatedAt: number): void
|
|
||||||
+useChunks(): [Chunk[], ChunkListMutator]
|
|
||||||
+useTags(): [string[], (tags: string[]) => Promise<void>]
|
|
||||||
+useChunk(chunk_arg: Chunk): [Chunk, ChunkMutator]
|
|
||||||
}
|
|
||||||
IViewModel ..> "1" IPageViewModel
|
|
||||||
ViewModel ..> "1" IPageViewModel
|
|
||||||
ChunkListHistory ..> "1" ChunkListStateMutator
|
|
||||||
ChunkListHistory ..> "1" ChunkListState
|
|
||||||
DocumentViewModel ..> "1" ChunkListHistory
|
|
||||||
DocumentViewModel ..> "1" ChunkListStateMutator
|
|
||||||
DocumentViewModel ..> "1" ChunkListMutator
|
|
||||||
DocumentViewModel ..> "1" ChunkMutator
|
|
||||||
```
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
class ChunkListStateMutator
|
|
||||||
<<Interface>> ChunkListStateMutator
|
|
||||||
class ChunkListStateAddMutator
|
|
||||||
class ChunkListStateDeleteMutator
|
|
||||||
class ChunkListStateModifyMutator
|
|
||||||
class ChunkListStateMoveMutator
|
|
||||||
ChunkListStateMutator <|.. ChunkListStateAddMutator
|
|
||||||
ChunkListStateMutator <|.. ChunkListStateDeleteMutator
|
|
||||||
ChunkListStateMutator <|.. ChunkListStateModifyMutator
|
|
||||||
ChunkListStateMutator <|.. ChunkListStateMoveMutator
|
|
||||||
```
|
|
||||||
```mermaid
|
|
||||||
classDiagram
|
|
||||||
class IRPCMessageManager {
|
|
||||||
+opened: boolean
|
|
||||||
+close(): void
|
|
||||||
+sendNotification(notification: ChunkNotification): void
|
|
||||||
+addEventListener(name: "notification", listener: RPCMessageMessagerEventListener): void
|
|
||||||
+addEventListener(name: string, listener: EventListenerOrEventListenerObject): void
|
|
||||||
+removeEventListener(name: "notification", listener: RPCMessageMessagerEventListener): void
|
|
||||||
+removeEventListener(name: string, listener: EventListenerOrEventListenerObject): void
|
|
||||||
+invokeMethod(m: RPCMessageBody): Promise<RPCResponse>
|
|
||||||
}
|
|
||||||
<<Interface>> IRPCMessageManager
|
|
||||||
IRPCMessageManager <|.. RPCMessageManager
|
|
||||||
class RPCMessageManager {
|
|
||||||
-callbackList: Map<number, RPCCallback>
|
|
||||||
-curId: number
|
|
||||||
-ws?: WebSocket | undefined
|
|
||||||
+opened: boolean
|
|
||||||
+open(url: string | URL, protocals?: string | undefined): Promise<void>
|
|
||||||
+close(): void
|
|
||||||
-genId(): number
|
|
||||||
+genHeader(): Inline
|
|
||||||
+send(message: RPCMethod): Promise<RPCResponse>
|
|
||||||
+sendNotification(message: ChunkNotification): void
|
|
||||||
+addEventListener(type: "notification", callback: RPCMessageMessagerEventListener): void
|
|
||||||
+removeEventListener(type: "notification", callback: RPCMessageMessagerEventListener): void
|
|
||||||
+invokeMethod(m: RPCMessageBody): Promise<RPCResponse>
|
|
||||||
}
|
|
||||||
class FsDirEntry {
|
|
||||||
+name: string
|
|
||||||
+isDirectory: boolean
|
|
||||||
+isFile: boolean
|
|
||||||
+isSymlink: boolean
|
|
||||||
}
|
|
||||||
<<Interface>> FsDirEntry
|
|
||||||
class FsStatInfo {
|
|
||||||
+isFile: boolean
|
|
||||||
+isDirectory: boolean
|
|
||||||
+isSymlink: boolean
|
|
||||||
+size: number
|
|
||||||
+mtime: Date | null
|
|
||||||
+atime: Date | null
|
|
||||||
+birthtime: Date | null
|
|
||||||
}
|
|
||||||
<<Interface>> FsStatInfo
|
|
||||||
FsStatInfo <|.. FsGetResult
|
|
||||||
class FsGetResult {
|
|
||||||
+entries?: FsDirEntry[] | undefined
|
|
||||||
}
|
|
||||||
<<Interface>> FsGetResult
|
|
||||||
class IFsEventMap {
|
|
||||||
+modify: (this: IFsManager, event: MessageEvent<NotImplemented>) => void
|
|
||||||
+create: (this: IFsManager, event: MessageEvent<NotImplemented>) => void
|
|
||||||
+delete: (this: IFsManager, event: MessageEvent<NotImplemented>) => void
|
|
||||||
}
|
|
||||||
<<Interface>> IFsEventMap
|
|
||||||
class IFsManager {
|
|
||||||
+get(path: string): Promise<Response>
|
|
||||||
+getStat(path: string): Promise<FsGetResult>
|
|
||||||
+upload(filePath: string, data: BodyInit): Promise<number>
|
|
||||||
+delete(filePath: string): Promise<number>
|
|
||||||
+mkdir(path: string): Promise<number>
|
|
||||||
+addEventListener(name: string, listener: EventListenerOrEventListenerObject): void
|
|
||||||
+removeEventListener(name: string, listener: EventListenerOrEventListenerObject): void
|
|
||||||
+dispatchEvent(event: Event): boolean
|
|
||||||
}
|
|
||||||
<<Interface>> IFsManager
|
|
||||||
IFsManager <|.. FsManager
|
|
||||||
class FsManager {
|
|
||||||
-manager: RPCMessageManager
|
|
||||||
-prefix: string
|
|
||||||
+get(path: string): Promise<Response>
|
|
||||||
+getStat(filePath: string): Promise<FsGetResult>
|
|
||||||
+upload(filePath: string, data: BodyInit): Promise<number>
|
|
||||||
+mkdir(filePath: string): Promise<number>
|
|
||||||
+delete(filePath: string): Promise<number>
|
|
||||||
}
|
|
||||||
FsGetResult ..> "*" FsDirEntry
|
|
||||||
IFsEventMap ..> "1" IFsManager
|
|
||||||
IFsManager ..> "1" FsGetResult
|
|
||||||
FsManager ..> "1" RPCMessageManager
|
|
||||||
FsManager ..> "1" FsGetResult
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 5.2 의사코드
|
## 5.2 의사코드
|
||||||
|
|
Loading…
Add table
Reference in a new issue