ocean-brain 0.3.3 → 0.4.0

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.
Files changed (253) hide show
  1. package/dist/mcp.js +151 -37
  2. package/package.json +5 -5
  3. package/scripts/postinstall-prisma.mjs +3 -2
  4. package/server/client/dist/assets/Calendar-CSXEuWmQ.js +25 -0
  5. package/server/client/dist/assets/Callout-Ap1OcxWN.js +1 -0
  6. package/server/client/dist/assets/Graph-C0Ax9qjI.js +1 -0
  7. package/server/client/dist/assets/{Image-ZxF459sC.js → Image-CSbcG-5a.js} +1 -1
  8. package/server/client/dist/assets/{Image.es-CFTbON7k.js → Image.es-Fbe7aDDo.js} +1 -1
  9. package/server/client/dist/assets/{ModalActionRow-Hg6MY61u.js → ModalActionRow-DjI5b4bl.js} +1 -1
  10. package/server/client/dist/assets/Note-BY6WgYLq.js +1 -0
  11. package/server/client/dist/assets/Note-W4f6H9K0.css +1 -0
  12. package/server/client/dist/assets/Reminders-vRksvSQE.js +1 -0
  13. package/server/client/dist/assets/Search-Cq4tuiJO.js +1 -0
  14. package/server/client/dist/assets/{SurfaceCard-BV6y4bCo.js → SurfaceCard-Br6TjX5W.js} +1 -1
  15. package/server/client/dist/assets/Tag-ARDLA-Pb.js +1 -0
  16. package/server/client/dist/assets/TagNotes-CDGVrCJU.js +1 -0
  17. package/server/client/dist/assets/{Trash.es-CPtRLE0y.js → Trash.es-BfCEiL3-.js} +1 -1
  18. package/server/client/dist/assets/ViewNotes-ZBOQ1adH.js +1 -0
  19. package/server/client/dist/assets/Views-DQHPfdwM.js +1 -0
  20. package/server/client/dist/assets/{image.api-Dsrx9S-G.js → image.api-DGXlQ_Ca.js} +1 -1
  21. package/server/client/dist/assets/index-B28TO4FC.js +1 -0
  22. package/server/client/dist/assets/{index-CD2bFEqK.css → index-Bm9l_L20.css} +1 -1
  23. package/server/client/dist/assets/index-Bsx4P7EA.js +210 -0
  24. package/server/client/dist/assets/manage-image-Dg297A_h.js +1 -0
  25. package/server/client/dist/assets/manage-image-detail-hk6jWyiB.js +1 -0
  26. package/server/client/dist/assets/mcp-CSjmBjFR.js +1 -0
  27. package/server/client/dist/assets/{note-core-BCgMq5QA.js → note-core-GgFcksAF.js} +1 -1
  28. package/server/client/dist/assets/{note-vendor-BofYbzmZ.js → note-vendor-5N5mRkIT.js} +3 -3
  29. package/server/client/dist/assets/{placeholder-MNsco0AT.js → placeholder-Bmiowo28.js} +4 -4
  30. package/server/client/dist/assets/trash-CM7SbVtW.js +1 -0
  31. package/server/client/dist/assets/{useReminderMutate-yJak8FzP.js → useReminderMutate-DsIvVpCQ.js} +2 -2
  32. package/server/client/dist/assets/view-dashboard-CP8nhfxQ.js +90 -0
  33. package/server/client/dist/index.html +4 -4
  34. package/server/dist/app.js +8 -84
  35. package/server/dist/app.js.map +1 -1
  36. package/server/dist/features/auth/http/api.js +43 -0
  37. package/server/dist/features/auth/http/api.js.map +1 -0
  38. package/server/dist/features/auth/http/login-page.js +28 -0
  39. package/server/dist/features/auth/http/login-page.js.map +1 -0
  40. package/server/dist/features/auth/http/pages.js +50 -0
  41. package/server/dist/features/auth/http/pages.js.map +1 -0
  42. package/server/dist/features/auth/service.js +94 -0
  43. package/server/dist/features/auth/service.js.map +1 -0
  44. package/server/dist/features/cache/graphql/cache.field.resolver.js +5 -0
  45. package/server/dist/features/cache/graphql/cache.field.resolver.js.map +1 -0
  46. package/server/dist/features/cache/graphql/cache.mutation.resolver.js +49 -0
  47. package/server/dist/features/cache/graphql/cache.mutation.resolver.js.map +1 -0
  48. package/server/dist/features/cache/graphql/cache.query.resolver.js +21 -0
  49. package/server/dist/features/cache/graphql/cache.query.resolver.js.map +1 -0
  50. package/server/dist/features/cache/graphql/cache.resolver.js +12 -0
  51. package/server/dist/features/cache/graphql/cache.resolver.js.map +1 -0
  52. package/server/dist/features/cache/graphql/cache.type-defs.js +32 -0
  53. package/server/dist/features/cache/graphql/cache.type-defs.js.map +1 -0
  54. package/server/dist/features/cache/graphql/index.js +21 -0
  55. package/server/dist/features/cache/graphql/index.js.map +1 -0
  56. package/server/dist/features/image/graphql/image.field.resolver.js +14 -0
  57. package/server/dist/features/image/graphql/image.field.resolver.js.map +1 -0
  58. package/server/dist/features/image/graphql/image.mutation.resolver.js +21 -0
  59. package/server/dist/features/image/graphql/image.mutation.resolver.js.map +1 -0
  60. package/server/dist/features/image/graphql/image.query.resolver.js +40 -0
  61. package/server/dist/features/image/graphql/image.query.resolver.js.map +1 -0
  62. package/server/dist/features/image/graphql/image.resolver.js +12 -0
  63. package/server/dist/features/image/graphql/image.resolver.js.map +1 -0
  64. package/server/dist/features/image/graphql/image.type-defs.js +31 -0
  65. package/server/dist/features/image/graphql/image.type-defs.js.map +1 -0
  66. package/server/dist/features/image/graphql/index.js +16 -0
  67. package/server/dist/features/image/graphql/index.js.map +1 -0
  68. package/server/dist/features/image/http/upload.js +48 -0
  69. package/server/dist/features/image/http/upload.js.map +1 -0
  70. package/server/dist/features/image/services/delete.js +52 -0
  71. package/server/dist/features/image/services/delete.js.map +1 -0
  72. package/server/dist/{modules/remote-image.js → features/image/services/remote-fetch.js} +1 -1
  73. package/server/dist/features/image/services/remote-fetch.js.map +1 -0
  74. package/server/dist/{modules/image-upload.js → features/image/services/upload.js} +4 -8
  75. package/server/dist/features/image/services/upload.js.map +1 -0
  76. package/server/dist/{views/mcp-admin.js → features/mcp-admin/http/handlers.js} +3 -3
  77. package/server/dist/features/mcp-admin/http/handlers.js.map +1 -0
  78. package/server/dist/{modules/mcp-admin.js → features/mcp-admin/service.js} +3 -3
  79. package/server/dist/features/mcp-admin/service.js.map +1 -0
  80. package/server/dist/features/note/graphql/index.js +8 -0
  81. package/server/dist/features/note/graphql/index.js.map +1 -0
  82. package/server/dist/features/note/graphql/note.field.resolver.js +12 -0
  83. package/server/dist/features/note/graphql/note.field.resolver.js.map +1 -0
  84. package/server/dist/features/note/graphql/note.graphql.shared.js +23 -0
  85. package/server/dist/features/note/graphql/note.graphql.shared.js.map +1 -0
  86. package/server/dist/features/note/graphql/note.mutation.resolver.js +140 -0
  87. package/server/dist/features/note/graphql/note.mutation.resolver.js.map +1 -0
  88. package/server/dist/features/note/graphql/note.query.resolver.js +382 -0
  89. package/server/dist/features/note/graphql/note.query.resolver.js.map +1 -0
  90. package/server/dist/features/note/graphql/note.resolver.js +14 -0
  91. package/server/dist/features/note/graphql/note.resolver.js.map +1 -0
  92. package/server/dist/features/note/graphql/note.type-defs.js +184 -0
  93. package/server/dist/features/note/graphql/note.type-defs.js.map +1 -0
  94. package/server/dist/{views/note.js → features/note/http/mcp.js} +27 -15
  95. package/server/dist/features/note/http/mcp.js.map +1 -0
  96. package/server/dist/{modules/note-authoring.js → features/note/services/authoring.js} +25 -7
  97. package/server/dist/features/note/services/authoring.js.map +1 -0
  98. package/server/dist/{modules/note-cleanup.js → features/note/services/cleanup.js} +14 -23
  99. package/server/dist/features/note/services/cleanup.js.map +1 -0
  100. package/server/dist/features/note/services/search-backfill.js +84 -0
  101. package/server/dist/features/note/services/search-backfill.js.map +1 -0
  102. package/server/dist/features/note/services/search.js +197 -0
  103. package/server/dist/features/note/services/search.js.map +1 -0
  104. package/server/dist/{modules/note-snapshot.js → features/note/services/snapshot.js} +51 -49
  105. package/server/dist/features/note/services/snapshot.js.map +1 -0
  106. package/server/dist/features/note/services/tag-filter.js +18 -0
  107. package/server/dist/features/note/services/tag-filter.js.map +1 -0
  108. package/server/dist/{modules/note-trash.js → features/note/services/trash.js} +28 -23
  109. package/server/dist/features/note/services/trash.js.map +1 -0
  110. package/server/dist/features/placeholder/graphql/index.js +27 -0
  111. package/server/dist/features/placeholder/graphql/index.js.map +1 -0
  112. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js +5 -0
  113. package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js.map +1 -0
  114. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js +72 -0
  115. package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js.map +1 -0
  116. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js +36 -0
  117. package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js.map +1 -0
  118. package/server/dist/features/placeholder/graphql/placeholder.resolver.js +12 -0
  119. package/server/dist/features/placeholder/graphql/placeholder.resolver.js.map +1 -0
  120. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js +50 -0
  121. package/server/dist/features/placeholder/graphql/placeholder.type-defs.js.map +1 -0
  122. package/server/dist/features/reminder/graphql/index.js +27 -0
  123. package/server/dist/features/reminder/graphql/index.js.map +1 -0
  124. package/server/dist/features/reminder/graphql/reminder.field.resolver.js +10 -0
  125. package/server/dist/features/reminder/graphql/reminder.field.resolver.js.map +1 -0
  126. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js +59 -0
  127. package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js.map +1 -0
  128. package/server/dist/features/reminder/graphql/reminder.query.resolver.js +79 -0
  129. package/server/dist/features/reminder/graphql/reminder.query.resolver.js.map +1 -0
  130. package/server/dist/features/reminder/graphql/reminder.resolver.js +12 -0
  131. package/server/dist/features/reminder/graphql/reminder.resolver.js.map +1 -0
  132. package/server/dist/features/reminder/graphql/reminder.type-defs.js +51 -0
  133. package/server/dist/features/reminder/graphql/reminder.type-defs.js.map +1 -0
  134. package/server/dist/features/tag/graphql/index.js +14 -0
  135. package/server/dist/features/tag/graphql/index.js.map +1 -0
  136. package/server/dist/features/tag/graphql/tag.field.resolver.js +10 -0
  137. package/server/dist/features/tag/graphql/tag.field.resolver.js.map +1 -0
  138. package/server/dist/features/tag/graphql/tag.mutation.resolver.js +15 -0
  139. package/server/dist/features/tag/graphql/tag.mutation.resolver.js.map +1 -0
  140. package/server/dist/features/tag/graphql/tag.query.resolver.js +26 -0
  141. package/server/dist/features/tag/graphql/tag.query.resolver.js.map +1 -0
  142. package/server/dist/features/tag/graphql/tag.resolver.js +12 -0
  143. package/server/dist/features/tag/graphql/tag.resolver.js.map +1 -0
  144. package/server/dist/features/tag/graphql/tag.type-defs.js +46 -0
  145. package/server/dist/features/tag/graphql/tag.type-defs.js.map +1 -0
  146. package/server/dist/{views/tag.js → features/tag/http/mcp.js} +3 -3
  147. package/server/dist/features/tag/http/mcp.js.map +1 -0
  148. package/server/dist/{modules/tag-organization.js → features/tag/services/organization.js} +38 -8
  149. package/server/dist/features/tag/services/organization.js.map +1 -0
  150. package/server/dist/features/view/graphql/index.js +11 -0
  151. package/server/dist/features/view/graphql/index.js.map +1 -0
  152. package/server/dist/features/view/graphql/view.mutation.resolver.js +53 -0
  153. package/server/dist/features/view/graphql/view.mutation.resolver.js.map +1 -0
  154. package/server/dist/features/view/graphql/view.query.resolver.js +29 -0
  155. package/server/dist/features/view/graphql/view.query.resolver.js.map +1 -0
  156. package/server/dist/features/view/graphql/view.resolver.js +10 -0
  157. package/server/dist/features/view/graphql/view.resolver.js.map +1 -0
  158. package/server/dist/features/view/graphql/view.type-defs.js +63 -0
  159. package/server/dist/features/view/graphql/view.type-defs.js.map +1 -0
  160. package/server/dist/features/view/services/workspace.js +432 -0
  161. package/server/dist/features/view/services/workspace.js.map +1 -0
  162. package/server/dist/main.js +14 -0
  163. package/server/dist/main.js.map +1 -1
  164. package/server/dist/modules/auth-guard.js +10 -9
  165. package/server/dist/modules/auth-guard.js.map +1 -1
  166. package/server/dist/modules/auth-mode.js +1 -3
  167. package/server/dist/modules/auth-mode.js.map +1 -1
  168. package/server/dist/modules/blocknote.js +96 -33
  169. package/server/dist/modules/blocknote.js.map +1 -1
  170. package/server/dist/modules/data-maintenance.js +75 -0
  171. package/server/dist/modules/data-maintenance.js.map +1 -0
  172. package/server/dist/modules/error-handler.js.map +1 -1
  173. package/server/dist/modules/logger.js +5 -23
  174. package/server/dist/modules/logger.js.map +1 -1
  175. package/server/dist/modules/mcp-auth.js +4 -5
  176. package/server/dist/modules/mcp-auth.js.map +1 -1
  177. package/server/dist/modules/mcp-token.js.map +1 -1
  178. package/server/dist/modules/prisma-runtime.js +2 -7
  179. package/server/dist/modules/prisma-runtime.js.map +1 -1
  180. package/server/dist/modules/recovery-retention.js +1 -1
  181. package/server/dist/modules/recovery-retention.js.map +1 -1
  182. package/server/dist/modules/server-events-handler.js +34 -0
  183. package/server/dist/modules/server-events-handler.js.map +1 -0
  184. package/server/dist/modules/server-events.js +32 -0
  185. package/server/dist/modules/server-events.js.map +1 -0
  186. package/server/dist/modules/use-async.js.map +1 -1
  187. package/server/dist/paths.js.map +1 -1
  188. package/server/dist/routes/api.js +34 -0
  189. package/server/dist/routes/api.js.map +1 -0
  190. package/server/dist/routes/auth-pages.js +11 -0
  191. package/server/dist/routes/auth-pages.js.map +1 -0
  192. package/server/dist/routes/client.js +27 -0
  193. package/server/dist/routes/client.js.map +1 -0
  194. package/server/dist/routes/graphql.js +33 -0
  195. package/server/dist/routes/graphql.js.map +1 -0
  196. package/server/dist/routes/index.js +11 -0
  197. package/server/dist/routes/index.js.map +1 -0
  198. package/server/dist/routes/mcp.js +30 -0
  199. package/server/dist/routes/mcp.js.map +1 -0
  200. package/server/dist/schema/index.js +11 -8
  201. package/server/dist/schema/index.js.map +1 -1
  202. package/server/dist/types/index.js.map +1 -1
  203. package/server/prisma/migrations/20260413143000_0014_tag_name_unique/migration.sql +32 -0
  204. package/server/prisma/migrations/20260414143000_0015_note_searchable_text/migration.sql +5 -0
  205. package/server/prisma/migrations/20260416090000_0016_view_workspace/migration.sql +50 -0
  206. package/server/prisma/schema.prisma +66 -12
  207. package/server/client/dist/assets/Calendar-DyXzs5M3.js +0 -25
  208. package/server/client/dist/assets/Graph-C8K4PJOn.js +0 -1
  209. package/server/client/dist/assets/Note-BbgZvrC3.js +0 -1
  210. package/server/client/dist/assets/Note-PEevDKBh.css +0 -1
  211. package/server/client/dist/assets/Reminders-jFhljND4.js +0 -1
  212. package/server/client/dist/assets/Search-X6QIR_m2.js +0 -1
  213. package/server/client/dist/assets/Tag-Ba2Dw4gH.js +0 -1
  214. package/server/client/dist/assets/TagNotes-BRJv6sDI.js +0 -1
  215. package/server/client/dist/assets/index-BglnLSet.js +0 -205
  216. package/server/client/dist/assets/index-DpqKngJz.js +0 -1
  217. package/server/client/dist/assets/manage-image-C6Y_0M5H.js +0 -1
  218. package/server/client/dist/assets/manage-image-detail-Dv3xofpe.js +0 -1
  219. package/server/client/dist/assets/mcp-BijQkpfY.js +0 -1
  220. package/server/client/dist/assets/trash-CiFJm_PK.js +0 -1
  221. package/server/dist/modules/auth.js +0 -25
  222. package/server/dist/modules/auth.js.map +0 -1
  223. package/server/dist/modules/image-upload.js.map +0 -1
  224. package/server/dist/modules/mcp-admin.js.map +0 -1
  225. package/server/dist/modules/note-authoring.js.map +0 -1
  226. package/server/dist/modules/note-cleanup.js.map +0 -1
  227. package/server/dist/modules/note-snapshot.js.map +0 -1
  228. package/server/dist/modules/note-trash.js.map +0 -1
  229. package/server/dist/modules/remote-image.js.map +0 -1
  230. package/server/dist/modules/tag-organization.js.map +0 -1
  231. package/server/dist/schema/cache/index.js +0 -58
  232. package/server/dist/schema/cache/index.js.map +0 -1
  233. package/server/dist/schema/image/index.js +0 -88
  234. package/server/dist/schema/image/index.js.map +0 -1
  235. package/server/dist/schema/note/index.js +0 -551
  236. package/server/dist/schema/note/index.js.map +0 -1
  237. package/server/dist/schema/placeholder/index.js +0 -105
  238. package/server/dist/schema/placeholder/index.js.map +0 -1
  239. package/server/dist/schema/reminder/index.js +0 -161
  240. package/server/dist/schema/reminder/index.js.map +0 -1
  241. package/server/dist/schema/tag/index.js +0 -81
  242. package/server/dist/schema/tag/index.js.map +0 -1
  243. package/server/dist/urls.js +0 -9
  244. package/server/dist/urls.js.map +0 -1
  245. package/server/dist/views/auth.js +0 -305
  246. package/server/dist/views/auth.js.map +0 -1
  247. package/server/dist/views/image.js +0 -44
  248. package/server/dist/views/image.js.map +0 -1
  249. package/server/dist/views/index.js +0 -6
  250. package/server/dist/views/index.js.map +0 -1
  251. package/server/dist/views/mcp-admin.js.map +0 -1
  252. package/server/dist/views/note.js.map +0 -1
  253. package/server/dist/views/tag.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/tag/graphql/tag.resolver.ts"],"sourcesContent":["import type { IResolvers } from '@graphql-tools/utils';\nimport { tagFieldResolvers } from './tag.field.resolver.js';\nimport { tagMutationResolvers } from './tag.mutation.resolver.js';\nimport { tagQueryResolvers } from './tag.query.resolver.js';\n\nexport const tagResolvers: IResolvers = {\n Query: tagQueryResolvers,\n Mutation: tagMutationResolvers,\n Tag: tagFieldResolvers,\n};\n"],"mappings":"AACA,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAE3B,MAAM,eAA2B;AAAA,EACpC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,KAAK;AACT;","names":[]}
@@ -0,0 +1,46 @@
1
+ import { gql } from "../../../modules/graphql.js";
2
+ const tagType = gql`
3
+ input PaginationInput {
4
+ limit: Int!
5
+ offset: Int!
6
+ }
7
+
8
+ input SearchFilterInput {
9
+ query: String!
10
+ }
11
+
12
+ type Tag {
13
+ id: ID!
14
+ name: String!
15
+ createdAt: String!
16
+ updatedAt: String!
17
+ referenceCount: Int!
18
+ }
19
+
20
+ type Tags {
21
+ totalCount: Int!
22
+ tags: [Tag!]!
23
+ }
24
+ `;
25
+ const tagQuery = gql`
26
+ type Query {
27
+ allTags(searchFilter: SearchFilterInput, pagination: PaginationInput): Tags!
28
+ }
29
+ `;
30
+ const tagMutation = gql`
31
+ type Mutation {
32
+ createTag(name: String!): Tag!
33
+ }
34
+ `;
35
+ const tagTypeDefs = `
36
+ ${tagType}
37
+ ${tagQuery}
38
+ ${tagMutation}
39
+ `;
40
+ export {
41
+ tagMutation,
42
+ tagQuery,
43
+ tagType,
44
+ tagTypeDefs
45
+ };
46
+ //# sourceMappingURL=tag.type-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/tag/graphql/tag.type-defs.ts"],"sourcesContent":["import { gql } from '~/modules/graphql.js';\n\nexport const tagType = gql`\n input PaginationInput {\n limit: Int!\n offset: Int!\n }\n\n input SearchFilterInput {\n query: String!\n }\n\n type Tag {\n id: ID!\n name: String!\n createdAt: String!\n updatedAt: String!\n referenceCount: Int!\n }\n\n type Tags {\n totalCount: Int!\n tags: [Tag!]!\n }\n`;\n\nexport const tagQuery = gql`\n type Query {\n allTags(searchFilter: SearchFilterInput, pagination: PaginationInput): Tags!\n }\n`;\n\nexport const tagMutation = gql`\n type Mutation {\n createTag(name: String!): Tag!\n }\n`;\n\nexport const tagTypeDefs = `\n ${tagType}\n ${tagQuery}\n ${tagMutation}\n`;\n"],"mappings":"AAAA,SAAS,WAAW;AAEb,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBhB,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAMjB,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAMpB,MAAM,cAAc;AAAA,MACrB,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA;","names":[]}
@@ -1,5 +1,5 @@
1
- import { createAppError } from "../modules/error-handler.js";
2
- import { InvalidTagNameError, ensureTagByName } from "../modules/tag-organization.js";
1
+ import { ensureTagByName, InvalidTagNameError } from "../../../features/tag/services/organization.js";
2
+ import { createAppError } from "../../../modules/error-handler.js";
3
3
  const createMcpCreateTagHandler = (ensureTag = ensureTagByName) => {
4
4
  return async (req, res) => {
5
5
  const name = req.body?.name;
@@ -20,4 +20,4 @@ const createMcpCreateTagHandler = (ensureTag = ensureTagByName) => {
20
20
  export {
21
21
  createMcpCreateTagHandler
22
22
  };
23
- //# sourceMappingURL=tag.js.map
23
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/tag/http/mcp.ts"],"sourcesContent":["import { ensureTagByName, InvalidTagNameError } from '~/features/tag/services/organization.js';\nimport { createAppError } from '~/modules/error-handler.js';\nimport type { Controller } from '~/types/index.js';\n\nexport const createMcpCreateTagHandler = (ensureTag = ensureTagByName): Controller => {\n return async (req, res) => {\n const name = req.body?.name;\n\n if (typeof name !== 'string') {\n throw createAppError(400, 'INVALID_TAG_NAME', 'A tag name is required.');\n }\n\n try {\n const result = await ensureTag(name);\n res.status(200).json(result).end();\n } catch (error) {\n if (error instanceof InvalidTagNameError) {\n throw createAppError(400, 'INVALID_TAG_NAME', error.message);\n }\n\n throw error;\n }\n };\n};\n"],"mappings":"AAAA,SAAS,iBAAiB,2BAA2B;AACrD,SAAS,sBAAsB;AAGxB,MAAM,4BAA4B,CAAC,YAAY,oBAAgC;AAClF,SAAO,OAAO,KAAK,QAAQ;AACvB,UAAM,OAAO,IAAI,MAAM;AAEvB,QAAI,OAAO,SAAS,UAAU;AAC1B,YAAM,eAAe,KAAK,oBAAoB,yBAAyB;AAAA,IAC3E;AAEA,QAAI;AACA,YAAM,SAAS,MAAM,UAAU,IAAI;AACnC,UAAI,OAAO,GAAG,EAAE,KAAK,MAAM,EAAE,IAAI;AAAA,IACrC,SAAS,OAAO;AACZ,UAAI,iBAAiB,qBAAqB;AACtC,cAAM,eAAe,KAAK,oBAAoB,MAAM,OAAO;AAAA,MAC/D;AAEA,YAAM;AAAA,IACV;AAAA,EACJ;AACJ;","names":[]}
@@ -1,4 +1,4 @@
1
- import models from "../models.js";
1
+ import models from "../../../models.js";
2
2
  class InvalidTagNameError extends Error {
3
3
  constructor(message) {
4
4
  super(message);
@@ -22,19 +22,49 @@ const serializeTag = (tag) => ({
22
22
  createdAt: tag.createdAt.toISOString(),
23
23
  updatedAt: tag.updatedAt.toISOString()
24
24
  });
25
+ const isTagNameUniqueConflict = (error) => {
26
+ if (typeof error !== "object" || error === null || !("code" in error)) {
27
+ return false;
28
+ }
29
+ if (error.code !== "P2002") {
30
+ return false;
31
+ }
32
+ if (!("meta" in error) || typeof error.meta !== "object" || error.meta === null) {
33
+ return true;
34
+ }
35
+ const rawTarget = "target" in error.meta ? error.meta.target : null;
36
+ const targets = Array.isArray(rawTarget) ? rawTarget.filter((value) => typeof value === "string") : typeof rawTarget === "string" ? [rawTarget] : [];
37
+ return targets.length === 0 || targets.includes("name");
38
+ };
25
39
  const createTagOrganizationService = (deps) => {
26
40
  return {
27
41
  ensureTag: async (name) => {
28
42
  const normalizedName = normalizeTagName(name);
29
- const existingTags = await deps.findTagsByName(normalizedName);
30
- if (existingTags.length > 0) {
43
+ const existingTag = await deps.findTagByName(normalizedName);
44
+ if (existingTag) {
45
+ return {
46
+ created: false,
47
+ normalizedName,
48
+ tag: serializeTag(existingTag)
49
+ };
50
+ }
51
+ let createdTag;
52
+ try {
53
+ createdTag = await deps.createTag(normalizedName);
54
+ } catch (error) {
55
+ if (!isTagNameUniqueConflict(error)) {
56
+ throw error;
57
+ }
58
+ const conflictedTag = await deps.findTagByName(normalizedName);
59
+ if (!conflictedTag) {
60
+ throw error;
61
+ }
31
62
  return {
32
63
  created: false,
33
64
  normalizedName,
34
- tag: serializeTag(existingTags[0])
65
+ tag: serializeTag(conflictedTag)
35
66
  };
36
67
  }
37
- const createdTag = await deps.createTag(normalizedName);
38
68
  return {
39
69
  created: true,
40
70
  normalizedName,
@@ -47,8 +77,8 @@ const defaultTagOrganizationService = createTagOrganizationService({
47
77
  createTag: async (name) => {
48
78
  return models.tag.create({ data: { name } });
49
79
  },
50
- findTagsByName: async (name) => {
51
- return models.tag.findMany({
80
+ findTagByName: async (name) => {
81
+ return models.tag.findFirst({
52
82
  where: { name },
53
83
  orderBy: { createdAt: "asc" }
54
84
  });
@@ -63,4 +93,4 @@ export {
63
93
  ensureTagByName,
64
94
  normalizeTagName
65
95
  };
66
- //# sourceMappingURL=tag-organization.js.map
96
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/tag/services/organization.ts"],"sourcesContent":["import models from '~/models.js';\n\ninterface TagRecord {\n id: number;\n name: string;\n createdAt: Date;\n updatedAt: Date;\n}\n\ninterface TagOrganizationDeps {\n createTag: (name: string) => Promise<TagRecord>;\n findTagByName: (name: string) => Promise<TagRecord | null>;\n}\n\nexport interface TagOrganizationResult {\n created: boolean;\n normalizedName: string;\n tag: {\n id: string;\n name: string;\n createdAt: string;\n updatedAt: string;\n };\n}\n\nexport class InvalidTagNameError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidTagNameError';\n }\n}\n\nexport const normalizeTagName = (name: string) => {\n const trimmedName = name.trim();\n\n if (!trimmedName) {\n throw new InvalidTagNameError('A tag name is required.');\n }\n\n const normalizedName = trimmedName.startsWith('@') ? trimmedName : `@${trimmedName}`;\n\n if (normalizedName === '@' || /\\s/.test(normalizedName.slice(1))) {\n throw new InvalidTagNameError('Tag names must be a single token like @project.');\n }\n\n return normalizedName;\n};\n\nconst serializeTag = (tag: TagRecord) => ({\n id: String(tag.id),\n name: tag.name,\n createdAt: tag.createdAt.toISOString(),\n updatedAt: tag.updatedAt.toISOString(),\n});\n\nconst isTagNameUniqueConflict = (error: unknown) => {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false;\n }\n\n if (error.code !== 'P2002') {\n return false;\n }\n\n if (!('meta' in error) || typeof error.meta !== 'object' || error.meta === null) {\n return true;\n }\n\n const rawTarget = 'target' in error.meta ? error.meta.target : null;\n const targets = Array.isArray(rawTarget)\n ? rawTarget.filter((value): value is string => typeof value === 'string')\n : typeof rawTarget === 'string'\n ? [rawTarget]\n : [];\n\n return targets.length === 0 || targets.includes('name');\n};\n\nexport const createTagOrganizationService = (deps: TagOrganizationDeps) => {\n return {\n ensureTag: async (name: string): Promise<TagOrganizationResult> => {\n const normalizedName = normalizeTagName(name);\n const existingTag = await deps.findTagByName(normalizedName);\n\n if (existingTag) {\n return {\n created: false,\n normalizedName,\n tag: serializeTag(existingTag),\n };\n }\n\n let createdTag: TagRecord;\n\n try {\n createdTag = await deps.createTag(normalizedName);\n } catch (error) {\n if (!isTagNameUniqueConflict(error)) {\n throw error;\n }\n\n const conflictedTag = await deps.findTagByName(normalizedName);\n\n if (!conflictedTag) {\n throw error;\n }\n\n return {\n created: false,\n normalizedName,\n tag: serializeTag(conflictedTag),\n };\n }\n\n return {\n created: true,\n normalizedName,\n tag: serializeTag(createdTag),\n };\n },\n };\n};\n\nconst defaultTagOrganizationService = createTagOrganizationService({\n createTag: async (name) => {\n return models.tag.create({ data: { name } });\n },\n findTagByName: async (name) => {\n return models.tag.findFirst({\n where: { name },\n orderBy: { createdAt: 'asc' },\n });\n },\n});\n\nexport const ensureTagByName = async (name: string) => {\n return defaultTagOrganizationService.ensureTag(name);\n};\n"],"mappings":"AAAA,OAAO,YAAY;AAyBZ,MAAM,4BAA4B,MAAM;AAAA,EAC3C,YAAY,SAAiB;AACzB,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,MAAM,mBAAmB,CAAC,SAAiB;AAC9C,QAAM,cAAc,KAAK,KAAK;AAE9B,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,oBAAoB,yBAAyB;AAAA,EAC3D;AAEA,QAAM,iBAAiB,YAAY,WAAW,GAAG,IAAI,cAAc,IAAI,WAAW;AAElF,MAAI,mBAAmB,OAAO,KAAK,KAAK,eAAe,MAAM,CAAC,CAAC,GAAG;AAC9D,UAAM,IAAI,oBAAoB,iDAAiD;AAAA,EACnF;AAEA,SAAO;AACX;AAEA,MAAM,eAAe,CAAC,SAAoB;AAAA,EACtC,IAAI,OAAO,IAAI,EAAE;AAAA,EACjB,MAAM,IAAI;AAAA,EACV,WAAW,IAAI,UAAU,YAAY;AAAA,EACrC,WAAW,IAAI,UAAU,YAAY;AACzC;AAEA,MAAM,0BAA0B,CAAC,UAAmB;AAChD,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,EAAE,UAAU,QAAQ;AACnE,WAAO;AAAA,EACX;AAEA,MAAI,MAAM,SAAS,SAAS;AACxB,WAAO;AAAA,EACX;AAEA,MAAI,EAAE,UAAU,UAAU,OAAO,MAAM,SAAS,YAAY,MAAM,SAAS,MAAM;AAC7E,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,YAAY,MAAM,OAAO,MAAM,KAAK,SAAS;AAC/D,QAAM,UAAU,MAAM,QAAQ,SAAS,IACjC,UAAU,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IACtE,OAAO,cAAc,WACnB,CAAC,SAAS,IACV,CAAC;AAET,SAAO,QAAQ,WAAW,KAAK,QAAQ,SAAS,MAAM;AAC1D;AAEO,MAAM,+BAA+B,CAAC,SAA8B;AACvE,SAAO;AAAA,IACH,WAAW,OAAO,SAAiD;AAC/D,YAAM,iBAAiB,iBAAiB,IAAI;AAC5C,YAAM,cAAc,MAAM,KAAK,cAAc,cAAc;AAE3D,UAAI,aAAa;AACb,eAAO;AAAA,UACH,SAAS;AAAA,UACT;AAAA,UACA,KAAK,aAAa,WAAW;AAAA,QACjC;AAAA,MACJ;AAEA,UAAI;AAEJ,UAAI;AACA,qBAAa,MAAM,KAAK,UAAU,cAAc;AAAA,MACpD,SAAS,OAAO;AACZ,YAAI,CAAC,wBAAwB,KAAK,GAAG;AACjC,gBAAM;AAAA,QACV;AAEA,cAAM,gBAAgB,MAAM,KAAK,cAAc,cAAc;AAE7D,YAAI,CAAC,eAAe;AAChB,gBAAM;AAAA,QACV;AAEA,eAAO;AAAA,UACH,SAAS;AAAA,UACT;AAAA,UACA,KAAK,aAAa,aAAa;AAAA,QACnC;AAAA,MACJ;AAEA,aAAO;AAAA,QACH,SAAS;AAAA,QACT;AAAA,QACA,KAAK,aAAa,UAAU;AAAA,MAChC;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,MAAM,gCAAgC,6BAA6B;AAAA,EAC/D,WAAW,OAAO,SAAS;AACvB,WAAO,OAAO,IAAI,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA,EAC/C;AAAA,EACA,eAAe,OAAO,SAAS;AAC3B,WAAO,OAAO,IAAI,UAAU;AAAA,MACxB,OAAO,EAAE,KAAK;AAAA,MACd,SAAS,EAAE,WAAW,MAAM;AAAA,IAChC,CAAC;AAAA,EACL;AACJ,CAAC;AAEM,MAAM,kBAAkB,OAAO,SAAiB;AACnD,SAAO,8BAA8B,UAAU,IAAI;AACvD;","names":[]}
@@ -0,0 +1,11 @@
1
+ import { viewMutationResolvers } from "./view.mutation.resolver.js";
2
+ import { viewQueryResolvers } from "./view.query.resolver.js";
3
+ import { viewResolvers } from "./view.resolver.js";
4
+ import { viewTypeDefs } from "./view.type-defs.js";
5
+ export {
6
+ viewMutationResolvers,
7
+ viewQueryResolvers,
8
+ viewResolvers,
9
+ viewTypeDefs
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/view/graphql/index.ts"],"sourcesContent":["export { viewMutationResolvers } from './view.mutation.resolver.js';\nexport { viewQueryResolvers } from './view.query.resolver.js';\nexport { viewResolvers } from './view.resolver.js';\nexport { viewTypeDefs } from './view.type-defs.js';\n"],"mappings":"AAAA,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;","names":[]}
@@ -0,0 +1,53 @@
1
+ import {
2
+ createViewSection,
3
+ createViewTab,
4
+ deleteViewSection,
5
+ deleteViewTab,
6
+ reorderViewSections,
7
+ reorderViewTabs,
8
+ setActiveViewTab,
9
+ updateViewSection,
10
+ updateViewTab
11
+ } from "../../../features/view/services/workspace.js";
12
+ const viewMutationResolvers = {
13
+ createViewTab: async (_, { title }) => {
14
+ return createViewTab(title);
15
+ },
16
+ updateViewTab: async (_, { id, title }) => {
17
+ return updateViewTab(id, title);
18
+ },
19
+ deleteViewTab: async (_, { id }) => {
20
+ return deleteViewTab(id);
21
+ },
22
+ setActiveViewTab: async (_, { id }) => {
23
+ return setActiveViewTab(id);
24
+ },
25
+ reorderViewTabs: async (_, { tabIds }) => {
26
+ return reorderViewTabs(tabIds);
27
+ },
28
+ createViewSection: async (_, {
29
+ tabId,
30
+ input
31
+ }) => {
32
+ return createViewSection(tabId, input);
33
+ },
34
+ updateViewSection: async (_, {
35
+ id,
36
+ input
37
+ }) => {
38
+ return updateViewSection(id, input);
39
+ },
40
+ deleteViewSection: async (_, { id }) => {
41
+ return deleteViewSection(id);
42
+ },
43
+ reorderViewSections: async (_, {
44
+ tabId,
45
+ sectionIds
46
+ }) => {
47
+ return reorderViewSections(tabId, sectionIds);
48
+ }
49
+ };
50
+ export {
51
+ viewMutationResolvers
52
+ };
53
+ //# sourceMappingURL=view.mutation.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/view/graphql/view.mutation.resolver.ts"],"sourcesContent":["import type { IResolvers } from '@graphql-tools/utils';\nimport {\n createViewSection,\n createViewTab,\n deleteViewSection,\n deleteViewTab,\n reorderViewSections,\n reorderViewTabs,\n setActiveViewTab,\n updateViewSection,\n updateViewTab,\n type ViewSectionInput,\n} from '~/features/view/services/workspace.js';\n\ntype ViewMutationResolvers = NonNullable<IResolvers['Mutation']>;\n\nexport const viewMutationResolvers: ViewMutationResolvers = {\n createViewTab: async (_, { title }: { title: string }) => {\n return createViewTab(title);\n },\n updateViewTab: async (_, { id, title }: { id: string; title: string }) => {\n return updateViewTab(id, title);\n },\n deleteViewTab: async (_, { id }: { id: string }) => {\n return deleteViewTab(id);\n },\n setActiveViewTab: async (_, { id }: { id: string }) => {\n return setActiveViewTab(id);\n },\n reorderViewTabs: async (_, { tabIds }: { tabIds: string[] }) => {\n return reorderViewTabs(tabIds);\n },\n createViewSection: async (\n _,\n {\n tabId,\n input,\n }: {\n tabId: string;\n input: ViewSectionInput;\n },\n ) => {\n return createViewSection(tabId, input);\n },\n updateViewSection: async (\n _,\n {\n id,\n input,\n }: {\n id: string;\n input: ViewSectionInput;\n },\n ) => {\n return updateViewSection(id, input);\n },\n deleteViewSection: async (_, { id }: { id: string }) => {\n return deleteViewSection(id);\n },\n reorderViewSections: async (\n _,\n {\n tabId,\n sectionIds,\n }: {\n tabId: string;\n sectionIds: string[];\n },\n ) => {\n return reorderViewSections(tabId, sectionIds);\n },\n};\n"],"mappings":"AACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AAIA,MAAM,wBAA+C;AAAA,EACxD,eAAe,OAAO,GAAG,EAAE,MAAM,MAAyB;AACtD,WAAO,cAAc,KAAK;AAAA,EAC9B;AAAA,EACA,eAAe,OAAO,GAAG,EAAE,IAAI,MAAM,MAAqC;AACtE,WAAO,cAAc,IAAI,KAAK;AAAA,EAClC;AAAA,EACA,eAAe,OAAO,GAAG,EAAE,GAAG,MAAsB;AAChD,WAAO,cAAc,EAAE;AAAA,EAC3B;AAAA,EACA,kBAAkB,OAAO,GAAG,EAAE,GAAG,MAAsB;AACnD,WAAO,iBAAiB,EAAE;AAAA,EAC9B;AAAA,EACA,iBAAiB,OAAO,GAAG,EAAE,OAAO,MAA4B;AAC5D,WAAO,gBAAgB,MAAM;AAAA,EACjC;AAAA,EACA,mBAAmB,OACf,GACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ,MAIC;AACD,WAAO,kBAAkB,OAAO,KAAK;AAAA,EACzC;AAAA,EACA,mBAAmB,OACf,GACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ,MAIC;AACD,WAAO,kBAAkB,IAAI,KAAK;AAAA,EACtC;AAAA,EACA,mBAAmB,OAAO,GAAG,EAAE,GAAG,MAAsB;AACpD,WAAO,kBAAkB,EAAE;AAAA,EAC/B;AAAA,EACA,qBAAqB,OACjB,GACA;AAAA,IACI;AAAA,IACA;AAAA,EACJ,MAIC;AACD,WAAO,oBAAoB,OAAO,UAAU;AAAA,EAChD;AACJ;","names":[]}
@@ -0,0 +1,29 @@
1
+ import { getViewSectionById, getViewSectionNotes, getViewWorkspace } from "../../../features/view/services/workspace.js";
2
+ const viewQueryResolvers = {
3
+ viewWorkspace: async () => {
4
+ return getViewWorkspace();
5
+ },
6
+ viewSection: async (_, { id }) => {
7
+ return getViewSectionById(id);
8
+ },
9
+ viewSectionNotes: async (_, {
10
+ id,
11
+ pagination = {
12
+ limit: 25,
13
+ offset: 0
14
+ }
15
+ }) => {
16
+ const sectionNotes = await getViewSectionNotes(id, {
17
+ limit: Number(pagination.limit),
18
+ offset: Number(pagination.offset)
19
+ });
20
+ if (!sectionNotes) {
21
+ throw "NOT FOUND";
22
+ }
23
+ return sectionNotes;
24
+ }
25
+ };
26
+ export {
27
+ viewQueryResolvers
28
+ };
29
+ //# sourceMappingURL=view.query.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/view/graphql/view.query.resolver.ts"],"sourcesContent":["import type { IResolvers } from '@graphql-tools/utils';\nimport { getViewSectionById, getViewSectionNotes, getViewWorkspace } from '~/features/view/services/workspace.js';\nimport type { Pagination } from '~/types/index.js';\n\ntype ViewQueryResolvers = NonNullable<IResolvers['Query']>;\n\nexport const viewQueryResolvers: ViewQueryResolvers = {\n viewWorkspace: async () => {\n return getViewWorkspace();\n },\n viewSection: async (_, { id }: { id: string }) => {\n return getViewSectionById(id);\n },\n viewSectionNotes: async (\n _,\n {\n id,\n pagination = {\n limit: 25,\n offset: 0,\n },\n }: {\n id: string;\n pagination: Pagination;\n },\n ) => {\n const sectionNotes = await getViewSectionNotes(id, {\n limit: Number(pagination.limit),\n offset: Number(pagination.offset),\n });\n\n if (!sectionNotes) {\n throw 'NOT FOUND';\n }\n\n return sectionNotes;\n },\n};\n"],"mappings":"AACA,SAAS,oBAAoB,qBAAqB,wBAAwB;AAKnE,MAAM,qBAAyC;AAAA,EAClD,eAAe,YAAY;AACvB,WAAO,iBAAiB;AAAA,EAC5B;AAAA,EACA,aAAa,OAAO,GAAG,EAAE,GAAG,MAAsB;AAC9C,WAAO,mBAAmB,EAAE;AAAA,EAChC;AAAA,EACA,kBAAkB,OACd,GACA;AAAA,IACI;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,IACZ;AAAA,EACJ,MAIC;AACD,UAAM,eAAe,MAAM,oBAAoB,IAAI;AAAA,MAC/C,OAAO,OAAO,WAAW,KAAK;AAAA,MAC9B,QAAQ,OAAO,WAAW,MAAM;AAAA,IACpC,CAAC;AAED,QAAI,CAAC,cAAc;AACf,YAAM;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
@@ -0,0 +1,10 @@
1
+ import { viewMutationResolvers } from "./view.mutation.resolver.js";
2
+ import { viewQueryResolvers } from "./view.query.resolver.js";
3
+ const viewResolvers = {
4
+ Query: viewQueryResolvers,
5
+ Mutation: viewMutationResolvers
6
+ };
7
+ export {
8
+ viewResolvers
9
+ };
10
+ //# sourceMappingURL=view.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/view/graphql/view.resolver.ts"],"sourcesContent":["import { viewMutationResolvers } from './view.mutation.resolver.js';\nimport { viewQueryResolvers } from './view.query.resolver.js';\n\nexport const viewResolvers = {\n Query: viewQueryResolvers,\n Mutation: viewMutationResolvers,\n};\n"],"mappings":"AAAA,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AAE5B,MAAM,gBAAgB;AAAA,EACzB,OAAO;AAAA,EACP,UAAU;AACd;","names":[]}
@@ -0,0 +1,63 @@
1
+ import { gql } from "../../../modules/graphql.js";
2
+ const viewType = gql`
3
+ type ViewWorkspace {
4
+ activeTabId: ID
5
+ tabs: [ViewTab!]!
6
+ }
7
+
8
+ type ViewTab {
9
+ id: ID!
10
+ title: String!
11
+ order: Int!
12
+ sections: [ViewSection!]!
13
+ }
14
+
15
+ type ViewSection {
16
+ id: ID!
17
+ tabId: ID!
18
+ title: String!
19
+ tagNames: [String!]!
20
+ mode: TagMatchMode!
21
+ limit: Int!
22
+ order: Int!
23
+ }
24
+
25
+ input ViewSectionInput {
26
+ title: String
27
+ tagNames: [String!]!
28
+ mode: TagMatchMode
29
+ limit: Int
30
+ }
31
+ `;
32
+ const viewQuery = gql`
33
+ type Query {
34
+ viewWorkspace: ViewWorkspace!
35
+ viewSection(id: ID!): ViewSection
36
+ viewSectionNotes(id: ID!, pagination: PaginationInput): Notes!
37
+ }
38
+ `;
39
+ const viewMutation = gql`
40
+ type Mutation {
41
+ createViewTab(title: String!): ViewTab!
42
+ updateViewTab(id: ID!, title: String!): ViewTab!
43
+ deleteViewTab(id: ID!): Boolean!
44
+ setActiveViewTab(id: ID!): ViewWorkspace!
45
+ reorderViewTabs(tabIds: [ID!]!): [ViewTab!]!
46
+ createViewSection(tabId: ID!, input: ViewSectionInput!): ViewSection!
47
+ updateViewSection(id: ID!, input: ViewSectionInput!): ViewSection!
48
+ deleteViewSection(id: ID!): Boolean!
49
+ reorderViewSections(tabId: ID!, sectionIds: [ID!]!): [ViewSection!]!
50
+ }
51
+ `;
52
+ const viewTypeDefs = `
53
+ ${viewType}
54
+ ${viewQuery}
55
+ ${viewMutation}
56
+ `;
57
+ export {
58
+ viewMutation,
59
+ viewQuery,
60
+ viewType,
61
+ viewTypeDefs
62
+ };
63
+ //# sourceMappingURL=view.type-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/view/graphql/view.type-defs.ts"],"sourcesContent":["import { gql } from '~/modules/graphql.js';\n\nexport const viewType = gql`\n type ViewWorkspace {\n activeTabId: ID\n tabs: [ViewTab!]!\n }\n\n type ViewTab {\n id: ID!\n title: String!\n order: Int!\n sections: [ViewSection!]!\n }\n\n type ViewSection {\n id: ID!\n tabId: ID!\n title: String!\n tagNames: [String!]!\n mode: TagMatchMode!\n limit: Int!\n order: Int!\n }\n\n input ViewSectionInput {\n title: String\n tagNames: [String!]!\n mode: TagMatchMode\n limit: Int\n }\n`;\n\nexport const viewQuery = gql`\n type Query {\n viewWorkspace: ViewWorkspace!\n viewSection(id: ID!): ViewSection\n viewSectionNotes(id: ID!, pagination: PaginationInput): Notes!\n }\n`;\n\nexport const viewMutation = gql`\n type Mutation {\n createViewTab(title: String!): ViewTab!\n updateViewTab(id: ID!, title: String!): ViewTab!\n deleteViewTab(id: ID!): Boolean!\n setActiveViewTab(id: ID!): ViewWorkspace!\n reorderViewTabs(tabIds: [ID!]!): [ViewTab!]!\n createViewSection(tabId: ID!, input: ViewSectionInput!): ViewSection!\n updateViewSection(id: ID!, input: ViewSectionInput!): ViewSection!\n deleteViewSection(id: ID!): Boolean!\n reorderViewSections(tabId: ID!, sectionIds: [ID!]!): [ViewSection!]!\n }\n`;\n\nexport const viewTypeDefs = `\n ${viewType}\n ${viewQuery}\n ${viewMutation}\n`;\n"],"mappings":"AAAA,SAAS,WAAW;AAEb,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+BjB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQlB,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcrB,MAAM,eAAe;AAAA,MACtB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY;AAAA;","names":[]}