@taco_tsinghua/graphnode-sdk 0.1.1 → 0.1.3

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 CHANGED
@@ -5,27 +5,28 @@ This SDK provides a convenient way to interact with the GraphNode Backend API fr
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @taco/graphnode-sdk
8
+ npm install @taco_tsinghua/graphnode-sdk
9
9
  ```
10
10
 
11
11
  ## Getting Started
12
12
 
13
13
  ### Initialization
14
14
 
15
- First, create a client instance. You need to provide the base URL of the API server.
15
+ Create a client instance. The base URL is automatically configured to point to the GraphNode backend.
16
16
 
17
17
  ```typescript
18
- import { createGraphNodeClient } from '@taco/graphnode-sdk';
18
+ import { createGraphNodeClient } from '@taco_tsinghua/graphnode-sdk';
19
19
 
20
- const client = createGraphNodeClient({
21
- baseUrl: 'http://localhost:3000',
22
- });
20
+ // No need to pass baseUrl, it defaults to the internal constant
21
+ const client = createGraphNodeClient();
23
22
  ```
24
23
 
25
- If your API requires authentication, you can set the session token after initialization.
24
+ If you need to pass custom fetch options (e.g., for testing or specific environments):
26
25
 
27
26
  ```typescript
28
- client.setSessionToken('your-session-token-here');
27
+ const client = createGraphNodeClient({
28
+ // fetch: customFetch
29
+ });
29
30
  ```
30
31
 
31
32
  ### API Usage Examples
@@ -109,12 +110,144 @@ const newMessage = await client.conversations.createMessage('conversation-id-123
109
110
  console.log(newMessage);
110
111
  ```
111
112
 
113
+ #### Graph
114
+
115
+ **Nodes:**
116
+
117
+ ```typescript
118
+ // Create a node
119
+ const node = await client.graph.createNode({
120
+ id: 1,
121
+ label: 'My Node',
122
+ type: 'concept',
123
+ properties: { color: 'red' }
124
+ });
125
+
126
+ // List nodes
127
+ const nodes = await client.graph.listNodes();
128
+
129
+ // Get node
130
+ const myNode = await client.graph.getNode(1);
131
+
132
+ // Update node
133
+ await client.graph.updateNode(1, { label: 'Updated Node' });
134
+
135
+ // Delete node
136
+ await client.graph.deleteNode(1);
137
+
138
+ // Delete node cascade (with edges)
139
+ await client.graph.deleteNodeCascade(1);
140
+ ```
141
+
142
+ **Edges:**
143
+
144
+ ```typescript
145
+ // Create an edge
146
+ const edge = await client.graph.createEdge({
147
+ source: 1,
148
+ target: 2,
149
+ relationship: 'related_to'
150
+ });
151
+
152
+ // List edges
153
+ const edges = await client.graph.listEdges();
154
+
155
+ // Delete edge
156
+ await client.graph.deleteEdge('edge-id');
157
+ ```
158
+
159
+ **Clusters:**
160
+
161
+ ```typescript
162
+ // Create cluster
163
+ const cluster = await client.graph.createCluster({
164
+ name: 'My Cluster',
165
+ nodeIds: [1, 2]
166
+ });
167
+
168
+ // List clusters
169
+ const clusters = await client.graph.listClusters();
170
+
171
+ // Get cluster
172
+ const myCluster = await client.graph.getCluster('cluster-id');
173
+
174
+ // Delete cluster
175
+ await client.graph.deleteCluster('cluster-id');
176
+
177
+ // Delete cluster cascade
178
+ await client.graph.deleteClusterCascade('cluster-id');
179
+ ```
180
+
181
+ **Stats & Snapshot:**
182
+
183
+ ```typescript
184
+ // Get stats
185
+ const stats = await client.graph.getStats();
186
+
187
+ // Get snapshot
188
+ const snapshot = await client.graph.getSnapshot();
189
+
190
+ // Save snapshot
191
+ await client.graph.saveSnapshot(snapshot);
192
+ ```
193
+
194
+ #### Notes & Folders
195
+
196
+ **Notes:**
197
+
198
+ ```typescript
199
+ // Create a note
200
+ const note = await client.note.createNote({
201
+ title: 'My Note',
202
+ content: '# Hello World',
203
+ folderId: null // Optional
204
+ });
205
+
206
+ // List notes
207
+ const notes = await client.note.listNotes();
208
+
209
+ // Get note
210
+ const myNote = await client.note.getNote('note-id');
211
+
212
+ // Update note
213
+ const updatedNote = await client.note.updateNote('note-id', {
214
+ content: '# Updated Content'
215
+ });
216
+
217
+ // Delete note
218
+ await client.note.deleteNote('note-id');
219
+ ```
220
+
221
+ **Folders:**
222
+
223
+ ```typescript
224
+ // Create a folder
225
+ const folder = await client.note.createFolder({
226
+ name: 'My Folder',
227
+ parentId: null // Optional
228
+ });
229
+
230
+ // List folders
231
+ const folders = await client.note.listFolders();
232
+
233
+ // Get folder
234
+ const myFolder = await client.note.getFolder('folder-id');
235
+
236
+ // Update folder
237
+ const updatedFolder = await client.note.updateFolder('folder-id', {
238
+ name: 'Updated Folder Name'
239
+ });
240
+
241
+ // Delete folder
242
+ await client.note.deleteFolder('folder-id');
243
+ ```
244
+
112
245
  ### Error Handling
113
246
 
114
247
  The SDK uses a custom `HttpError` for API-related errors. You can check the `problem` property for RFC 9457 Problem Details.
115
248
 
116
249
  ```typescript
117
- import { HttpError } from '@taco/graphnode-sdk';
250
+ import { HttpError } from '@taco_tsinghua/graphnode-sdk';
118
251
 
119
252
  try {
120
253
  await client.conversations.get('non-existent-id');
package/dist/client.d.ts CHANGED
@@ -4,6 +4,7 @@ import { MeApi } from './endpoints/me.js';
4
4
  import { ConversationsApi } from './endpoints/conversations.js';
5
5
  import { GoogleAuthApi } from './endpoints/auth.google.js';
6
6
  import { GraphApi } from './endpoints/graph.js';
7
+ import { NoteApi } from './endpoints/note.js';
7
8
  export interface GraphNodeClientOptions extends Omit<BuilderOptions, 'baseUrl'> {
8
9
  }
9
10
  export declare class GraphNodeClient {
@@ -12,6 +13,7 @@ export declare class GraphNodeClient {
12
13
  readonly conversations: ConversationsApi;
13
14
  readonly googleAuth: GoogleAuthApi;
14
15
  readonly graph: GraphApi;
16
+ readonly note: NoteApi;
15
17
  private readonly rb;
16
18
  constructor(opts?: GraphNodeClientOptions);
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;CAAG;AAElF,qBAAa,eAAe;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,IAAI,GAAE,sBAA2B;CA0B9C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAEpF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAkB,MAAM,mBAAmB,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;CAAG;AAElF,qBAAa,eAAe;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,IAAI,GAAE,sBAA2B;CA2B9C;AAED,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAEpF"}
package/dist/client.js CHANGED
@@ -5,6 +5,7 @@ import { MeApi } from './endpoints/me.js';
5
5
  import { ConversationsApi } from './endpoints/conversations.js';
6
6
  import { GoogleAuthApi } from './endpoints/auth.google.js';
7
7
  import { GraphApi } from './endpoints/graph.js';
8
+ import { NoteApi } from './endpoints/note.js';
8
9
  export class GraphNodeClient {
9
10
  constructor(opts = {}) {
10
11
  let fetchFn = opts.fetch;
@@ -30,6 +31,7 @@ export class GraphNodeClient {
30
31
  this.conversations = new ConversationsApi(this.rb);
31
32
  this.googleAuth = new GoogleAuthApi(GRAPHNODE_BASE_URL);
32
33
  this.graph = new GraphApi(this.rb);
34
+ this.note = new NoteApi(this.rb);
33
35
  }
34
36
  }
35
37
  export function createGraphNodeClient(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,MAAM,OAAO,eAAe;IAQ1B,YAAY,OAA+B,EAAE;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClD,iCAAiC;gBACjC,0DAA0D;gBAC1D,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,KAAK,EAAE,CAAC;gBAC1E,4BAA4B;gBAC5B,OAAO,GAAI,UAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;YAC7B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,IAAI;YACP,KAAK,EAAE,OAAO,CAAC,gBAAgB;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAK9C,MAAM,OAAO,eAAe;IAS1B,YAAY,OAA+B,EAAE;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClD,iCAAiC;gBACjC,0DAA0D;gBAC1D,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAkB,CAAC,KAAK,EAAE,CAAC;gBAC1E,4BAA4B;gBAC5B,OAAO,GAAI,UAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;YAC7B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,IAAI;YACP,KAAK,EAAE,OAAO,CAAC,gBAAgB;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { RequestBuilder } from '../http-builder.js';
2
+ import type { NoteDto, NoteCreateDto, NoteUpdateDto, FolderDto, FolderCreateDto, FolderUpdateDto } from '../types/note.js';
3
+ /**
4
+ * Note API
5
+ * - 서버의 /v1/notes 및 /v1/folders 경로의 API들을 호출합니다.
6
+ */
7
+ export declare class NoteApi {
8
+ private readonly rb;
9
+ constructor(rb: RequestBuilder);
10
+ /**
11
+ * 새 노트를 생성합니다.
12
+ * @param dto - 생성할 노트 데이터
13
+ * @returns 생성된 노트
14
+ */
15
+ createNote(dto: NoteCreateDto): Promise<NoteDto>;
16
+ /**
17
+ * 사용자의 모든 노트를 가져옵니다.
18
+ * @returns 노트 목록
19
+ */
20
+ listNotes(): Promise<NoteDto[]>;
21
+ /**
22
+ * 특정 ID의 노트를 가져옵니다.
23
+ * @param id - 가져올 노트의 ID
24
+ * @returns 요청한 노트
25
+ */
26
+ getNote(id: string): Promise<NoteDto>;
27
+ /**
28
+ * 특정 노드를 업데이트합니다.
29
+ * @param id - 업데이트할 노트의 ID
30
+ * @param dto - 업데이트할 데이터
31
+ * @returns 업데이트된 노트
32
+ */
33
+ updateNote(id: string, dto: NoteUpdateDto): Promise<NoteDto>;
34
+ /**
35
+ * 특정 노드를 삭제합니다.
36
+ * @param id - 삭제할 노트의 ID
37
+ */
38
+ deleteNote(id: string): Promise<void>;
39
+ /**
40
+ * 새 폴더를 생성합니다.
41
+ * @param dto - 생성할 폴더 데이터
42
+ * @returns 생성된 폴더
43
+ */
44
+ createFolder(dto: FolderCreateDto): Promise<FolderDto>;
45
+ /**
46
+ * 사용자의 모든 폴더를 가져옵니다.
47
+ * @returns 폴더 목록
48
+ */
49
+ listFolders(): Promise<FolderDto[]>;
50
+ /**
51
+ * 특정 ID의 폴더를 가져옵니다.
52
+ * @param id - 가져올 폴더의 ID
53
+ * @returns 요청한 폴더
54
+ */
55
+ getFolder(id: string): Promise<FolderDto>;
56
+ /**
57
+ * 특정 폴더를 업데이트합니다.
58
+ * @param id - 업데이트할 폴더의 ID
59
+ * @param dto - 업데이트할 데이터
60
+ * @returns 업데이트된 폴더
61
+ */
62
+ updateFolder(id: string, dto: FolderUpdateDto): Promise<FolderDto>;
63
+ /**
64
+ * 특정 폴더를 삭제합니다.
65
+ * @param id - 삭제할 폴더의 ID
66
+ */
67
+ deleteFolder(id: string): Promise<void>;
68
+ }
69
+ //# sourceMappingURL=note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/endpoints/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;gBAExB,EAAE,EAAE,cAAc;IAM9B;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI/B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAItD;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAInC;;;;OAIG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIzC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAIlE;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -0,0 +1,91 @@
1
+ import { RequestBuilder } from '../http-builder.js';
2
+ /**
3
+ * Note API
4
+ * - 서버의 /v1/notes 및 /v1/folders 경로의 API들을 호출합니다.
5
+ */
6
+ export class NoteApi {
7
+ constructor(rb) {
8
+ this.rb = rb.path('/v1');
9
+ }
10
+ // --- Notes ---
11
+ /**
12
+ * 새 노트를 생성합니다.
13
+ * @param dto - 생성할 노트 데이터
14
+ * @returns 생성된 노트
15
+ */
16
+ createNote(dto) {
17
+ return this.rb.path('/notes').post(dto);
18
+ }
19
+ /**
20
+ * 사용자의 모든 노트를 가져옵니다.
21
+ * @returns 노트 목록
22
+ */
23
+ listNotes() {
24
+ return this.rb.path('/notes').get();
25
+ }
26
+ /**
27
+ * 특정 ID의 노트를 가져옵니다.
28
+ * @param id - 가져올 노트의 ID
29
+ * @returns 요청한 노트
30
+ */
31
+ getNote(id) {
32
+ return this.rb.path(`/notes/${id}`).get();
33
+ }
34
+ /**
35
+ * 특정 노드를 업데이트합니다.
36
+ * @param id - 업데이트할 노트의 ID
37
+ * @param dto - 업데이트할 데이터
38
+ * @returns 업데이트된 노트
39
+ */
40
+ updateNote(id, dto) {
41
+ return this.rb.path(`/notes/${id}`).patch(dto);
42
+ }
43
+ /**
44
+ * 특정 노드를 삭제합니다.
45
+ * @param id - 삭제할 노트의 ID
46
+ */
47
+ deleteNote(id) {
48
+ return this.rb.path(`/notes/${id}`).delete();
49
+ }
50
+ // --- Folders ---
51
+ /**
52
+ * 새 폴더를 생성합니다.
53
+ * @param dto - 생성할 폴더 데이터
54
+ * @returns 생성된 폴더
55
+ */
56
+ createFolder(dto) {
57
+ return this.rb.path('/folders').post(dto);
58
+ }
59
+ /**
60
+ * 사용자의 모든 폴더를 가져옵니다.
61
+ * @returns 폴더 목록
62
+ */
63
+ listFolders() {
64
+ return this.rb.path('/folders').get();
65
+ }
66
+ /**
67
+ * 특정 ID의 폴더를 가져옵니다.
68
+ * @param id - 가져올 폴더의 ID
69
+ * @returns 요청한 폴더
70
+ */
71
+ getFolder(id) {
72
+ return this.rb.path(`/folders/${id}`).get();
73
+ }
74
+ /**
75
+ * 특정 폴더를 업데이트합니다.
76
+ * @param id - 업데이트할 폴더의 ID
77
+ * @param dto - 업데이트할 데이터
78
+ * @returns 업데이트된 폴더
79
+ */
80
+ updateFolder(id, dto) {
81
+ return this.rb.path(`/folders/${id}`).patch(dto);
82
+ }
83
+ /**
84
+ * 특정 폴더를 삭제합니다.
85
+ * @param id - 삭제할 폴더의 ID
86
+ */
87
+ deleteFolder(id) {
88
+ return this.rb.path(`/folders/${id}`).delete();
89
+ }
90
+ }
91
+ //# sourceMappingURL=note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/endpoints/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD;;;GAGG;AACH,MAAM,OAAO,OAAO;IAGlB,YAAY,EAAkB;QAC5B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,gBAAgB;IAEhB;;;;OAIG;IACH,UAAU,CAAC,GAAkB;QAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAU,GAAG,CAAC,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAa,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,GAAG,EAAW,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,EAAU,EAAE,GAAkB;QACvC,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAU,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,EAAQ,CAAC;IACrD,CAAC;IAED,kBAAkB;IAElB;;;;OAIG;IACH,YAAY,CAAC,GAAoB;QAC/B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAY,GAAG,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAe,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,EAAa,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,EAAU,EAAE,GAAoB;QAC3C,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAY,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,EAAQ,CAAC;IACvD,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -5,8 +5,10 @@ export { MeApi } from './endpoints/me.js';
5
5
  export { ConversationsApi } from './endpoints/conversations.js';
6
6
  export { GoogleAuthApi } from './endpoints/auth.google.js';
7
7
  export { GraphApi } from './endpoints/graph.js';
8
+ export { NoteApi } from './endpoints/note.js';
8
9
  export type { ProblemDetails } from './types/problem.js';
9
10
  export type { MeResponseDto, MeProfileDto } from './types/me.js';
10
11
  export type { ConversationDto, ConversationCreateDto, ConversationUpdateDto, ConversationBulkCreateDto } from './types/conversation.js';
11
12
  export type { MessageDto, MessageCreateDto, MessageUpdateDto } from './types/message.js';
13
+ export type { NoteDto, NoteCreateDto, NoteUpdateDto, FolderDto, FolderCreateDto, FolderUpdateDto } from './types/note.js';
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACxI,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACxI,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -8,4 +8,5 @@ export { MeApi } from './endpoints/me.js';
8
8
  export { ConversationsApi } from './endpoints/conversations.js';
9
9
  export { GoogleAuthApi } from './endpoints/auth.google.js';
10
10
  export { GraphApi } from './endpoints/graph.js';
11
+ export { NoteApi } from './endpoints/note.js';
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,oCAAoC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,+DAA+D;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,oCAAoC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Note DTO
3
+ */
4
+ export interface NoteDto {
5
+ id: string;
6
+ ownerUserId: string;
7
+ title: string;
8
+ content: string;
9
+ folderId: string | null;
10
+ createdAt: string;
11
+ updatedAt: string;
12
+ }
13
+ /**
14
+ * Folder DTO
15
+ */
16
+ export interface FolderDto {
17
+ id: string;
18
+ ownerUserId: string;
19
+ name: string;
20
+ parentId: string | null;
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ }
24
+ /**
25
+ * Note Create DTO
26
+ */
27
+ export interface NoteCreateDto {
28
+ title?: string;
29
+ content: string;
30
+ folderId?: string | null;
31
+ }
32
+ /**
33
+ * Note Update DTO
34
+ */
35
+ export interface NoteUpdateDto {
36
+ title?: string;
37
+ content?: string;
38
+ folderId?: string | null;
39
+ }
40
+ /**
41
+ * Folder Create DTO
42
+ */
43
+ export interface FolderCreateDto {
44
+ name: string;
45
+ parentId?: string | null;
46
+ }
47
+ /**
48
+ * Folder Update DTO
49
+ */
50
+ export interface FolderUpdateDto {
51
+ name?: string;
52
+ parentId?: string | null;
53
+ }
54
+ //# sourceMappingURL=note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../src/types/note.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../src/types/note.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,31 +1,31 @@
1
- {
2
- "name": "@taco_tsinghua/graphnode-sdk",
3
- "version": "0.1.1",
4
- "description": "GraphNode frontend SDK (cookie-based session)",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js",
12
- "require": "./dist/index.js"
13
- }
14
- },
15
- "files": [
16
- "dist",
17
- "README.md"],
18
- "sideEffects": false,
19
- "scripts": {
20
- "build": "tsc -p tsconfig.json",
21
- "prepublishOnly": "npm run build"
22
- },
23
- "engines": {
24
- "node": ">=18"
25
- },
26
- "license": "MIT",
27
- "devDependencies": {
28
- "@types/node": "^24.10.0",
29
- "typescript": "^5.9.3"
30
- }
1
+ {
2
+ "name": "@taco_tsinghua/graphnode-sdk",
3
+ "version": "0.1.3",
4
+ "description": "GraphNode frontend SDK (cookie-based session)",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md"],
18
+ "sideEffects": false,
19
+ "scripts": {
20
+ "build": "tsc -p tsconfig.json",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "engines": {
24
+ "node": ">=18"
25
+ },
26
+ "license": "MIT",
27
+ "devDependencies": {
28
+ "@types/node": "^24.10.0",
29
+ "typescript": "^5.9.3"
30
+ }
31
31
  }