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.
- package/dist/mcp.js +151 -37
- package/package.json +5 -5
- package/scripts/postinstall-prisma.mjs +3 -2
- package/server/client/dist/assets/Calendar-CSXEuWmQ.js +25 -0
- package/server/client/dist/assets/Callout-Ap1OcxWN.js +1 -0
- package/server/client/dist/assets/Graph-C0Ax9qjI.js +1 -0
- package/server/client/dist/assets/{Image-ZxF459sC.js → Image-CSbcG-5a.js} +1 -1
- package/server/client/dist/assets/{Image.es-CFTbON7k.js → Image.es-Fbe7aDDo.js} +1 -1
- package/server/client/dist/assets/{ModalActionRow-Hg6MY61u.js → ModalActionRow-DjI5b4bl.js} +1 -1
- package/server/client/dist/assets/Note-BY6WgYLq.js +1 -0
- package/server/client/dist/assets/Note-W4f6H9K0.css +1 -0
- package/server/client/dist/assets/Reminders-vRksvSQE.js +1 -0
- package/server/client/dist/assets/Search-Cq4tuiJO.js +1 -0
- package/server/client/dist/assets/{SurfaceCard-BV6y4bCo.js → SurfaceCard-Br6TjX5W.js} +1 -1
- package/server/client/dist/assets/Tag-ARDLA-Pb.js +1 -0
- package/server/client/dist/assets/TagNotes-CDGVrCJU.js +1 -0
- package/server/client/dist/assets/{Trash.es-CPtRLE0y.js → Trash.es-BfCEiL3-.js} +1 -1
- package/server/client/dist/assets/ViewNotes-ZBOQ1adH.js +1 -0
- package/server/client/dist/assets/Views-DQHPfdwM.js +1 -0
- package/server/client/dist/assets/{image.api-Dsrx9S-G.js → image.api-DGXlQ_Ca.js} +1 -1
- package/server/client/dist/assets/index-B28TO4FC.js +1 -0
- package/server/client/dist/assets/{index-CD2bFEqK.css → index-Bm9l_L20.css} +1 -1
- package/server/client/dist/assets/index-Bsx4P7EA.js +210 -0
- package/server/client/dist/assets/manage-image-Dg297A_h.js +1 -0
- package/server/client/dist/assets/manage-image-detail-hk6jWyiB.js +1 -0
- package/server/client/dist/assets/mcp-CSjmBjFR.js +1 -0
- package/server/client/dist/assets/{note-core-BCgMq5QA.js → note-core-GgFcksAF.js} +1 -1
- package/server/client/dist/assets/{note-vendor-BofYbzmZ.js → note-vendor-5N5mRkIT.js} +3 -3
- package/server/client/dist/assets/{placeholder-MNsco0AT.js → placeholder-Bmiowo28.js} +4 -4
- package/server/client/dist/assets/trash-CM7SbVtW.js +1 -0
- package/server/client/dist/assets/{useReminderMutate-yJak8FzP.js → useReminderMutate-DsIvVpCQ.js} +2 -2
- package/server/client/dist/assets/view-dashboard-CP8nhfxQ.js +90 -0
- package/server/client/dist/index.html +4 -4
- package/server/dist/app.js +8 -84
- package/server/dist/app.js.map +1 -1
- package/server/dist/features/auth/http/api.js +43 -0
- package/server/dist/features/auth/http/api.js.map +1 -0
- package/server/dist/features/auth/http/login-page.js +28 -0
- package/server/dist/features/auth/http/login-page.js.map +1 -0
- package/server/dist/features/auth/http/pages.js +50 -0
- package/server/dist/features/auth/http/pages.js.map +1 -0
- package/server/dist/features/auth/service.js +94 -0
- package/server/dist/features/auth/service.js.map +1 -0
- package/server/dist/features/cache/graphql/cache.field.resolver.js +5 -0
- package/server/dist/features/cache/graphql/cache.field.resolver.js.map +1 -0
- package/server/dist/features/cache/graphql/cache.mutation.resolver.js +49 -0
- package/server/dist/features/cache/graphql/cache.mutation.resolver.js.map +1 -0
- package/server/dist/features/cache/graphql/cache.query.resolver.js +21 -0
- package/server/dist/features/cache/graphql/cache.query.resolver.js.map +1 -0
- package/server/dist/features/cache/graphql/cache.resolver.js +12 -0
- package/server/dist/features/cache/graphql/cache.resolver.js.map +1 -0
- package/server/dist/features/cache/graphql/cache.type-defs.js +32 -0
- package/server/dist/features/cache/graphql/cache.type-defs.js.map +1 -0
- package/server/dist/features/cache/graphql/index.js +21 -0
- package/server/dist/features/cache/graphql/index.js.map +1 -0
- package/server/dist/features/image/graphql/image.field.resolver.js +14 -0
- package/server/dist/features/image/graphql/image.field.resolver.js.map +1 -0
- package/server/dist/features/image/graphql/image.mutation.resolver.js +21 -0
- package/server/dist/features/image/graphql/image.mutation.resolver.js.map +1 -0
- package/server/dist/features/image/graphql/image.query.resolver.js +40 -0
- package/server/dist/features/image/graphql/image.query.resolver.js.map +1 -0
- package/server/dist/features/image/graphql/image.resolver.js +12 -0
- package/server/dist/features/image/graphql/image.resolver.js.map +1 -0
- package/server/dist/features/image/graphql/image.type-defs.js +31 -0
- package/server/dist/features/image/graphql/image.type-defs.js.map +1 -0
- package/server/dist/features/image/graphql/index.js +16 -0
- package/server/dist/features/image/graphql/index.js.map +1 -0
- package/server/dist/features/image/http/upload.js +48 -0
- package/server/dist/features/image/http/upload.js.map +1 -0
- package/server/dist/features/image/services/delete.js +52 -0
- package/server/dist/features/image/services/delete.js.map +1 -0
- package/server/dist/{modules/remote-image.js → features/image/services/remote-fetch.js} +1 -1
- package/server/dist/features/image/services/remote-fetch.js.map +1 -0
- package/server/dist/{modules/image-upload.js → features/image/services/upload.js} +4 -8
- package/server/dist/features/image/services/upload.js.map +1 -0
- package/server/dist/{views/mcp-admin.js → features/mcp-admin/http/handlers.js} +3 -3
- package/server/dist/features/mcp-admin/http/handlers.js.map +1 -0
- package/server/dist/{modules/mcp-admin.js → features/mcp-admin/service.js} +3 -3
- package/server/dist/features/mcp-admin/service.js.map +1 -0
- package/server/dist/features/note/graphql/index.js +8 -0
- package/server/dist/features/note/graphql/index.js.map +1 -0
- package/server/dist/features/note/graphql/note.field.resolver.js +12 -0
- package/server/dist/features/note/graphql/note.field.resolver.js.map +1 -0
- package/server/dist/features/note/graphql/note.graphql.shared.js +23 -0
- package/server/dist/features/note/graphql/note.graphql.shared.js.map +1 -0
- package/server/dist/features/note/graphql/note.mutation.resolver.js +140 -0
- package/server/dist/features/note/graphql/note.mutation.resolver.js.map +1 -0
- package/server/dist/features/note/graphql/note.query.resolver.js +382 -0
- package/server/dist/features/note/graphql/note.query.resolver.js.map +1 -0
- package/server/dist/features/note/graphql/note.resolver.js +14 -0
- package/server/dist/features/note/graphql/note.resolver.js.map +1 -0
- package/server/dist/features/note/graphql/note.type-defs.js +184 -0
- package/server/dist/features/note/graphql/note.type-defs.js.map +1 -0
- package/server/dist/{views/note.js → features/note/http/mcp.js} +27 -15
- package/server/dist/features/note/http/mcp.js.map +1 -0
- package/server/dist/{modules/note-authoring.js → features/note/services/authoring.js} +25 -7
- package/server/dist/features/note/services/authoring.js.map +1 -0
- package/server/dist/{modules/note-cleanup.js → features/note/services/cleanup.js} +14 -23
- package/server/dist/features/note/services/cleanup.js.map +1 -0
- package/server/dist/features/note/services/search-backfill.js +84 -0
- package/server/dist/features/note/services/search-backfill.js.map +1 -0
- package/server/dist/features/note/services/search.js +197 -0
- package/server/dist/features/note/services/search.js.map +1 -0
- package/server/dist/{modules/note-snapshot.js → features/note/services/snapshot.js} +51 -49
- package/server/dist/features/note/services/snapshot.js.map +1 -0
- package/server/dist/features/note/services/tag-filter.js +18 -0
- package/server/dist/features/note/services/tag-filter.js.map +1 -0
- package/server/dist/{modules/note-trash.js → features/note/services/trash.js} +28 -23
- package/server/dist/features/note/services/trash.js.map +1 -0
- package/server/dist/features/placeholder/graphql/index.js +27 -0
- package/server/dist/features/placeholder/graphql/index.js.map +1 -0
- package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js +5 -0
- package/server/dist/features/placeholder/graphql/placeholder.field.resolver.js.map +1 -0
- package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js +72 -0
- package/server/dist/features/placeholder/graphql/placeholder.mutation.resolver.js.map +1 -0
- package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js +36 -0
- package/server/dist/features/placeholder/graphql/placeholder.query.resolver.js.map +1 -0
- package/server/dist/features/placeholder/graphql/placeholder.resolver.js +12 -0
- package/server/dist/features/placeholder/graphql/placeholder.resolver.js.map +1 -0
- package/server/dist/features/placeholder/graphql/placeholder.type-defs.js +50 -0
- package/server/dist/features/placeholder/graphql/placeholder.type-defs.js.map +1 -0
- package/server/dist/features/reminder/graphql/index.js +27 -0
- package/server/dist/features/reminder/graphql/index.js.map +1 -0
- package/server/dist/features/reminder/graphql/reminder.field.resolver.js +10 -0
- package/server/dist/features/reminder/graphql/reminder.field.resolver.js.map +1 -0
- package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js +59 -0
- package/server/dist/features/reminder/graphql/reminder.mutation.resolver.js.map +1 -0
- package/server/dist/features/reminder/graphql/reminder.query.resolver.js +79 -0
- package/server/dist/features/reminder/graphql/reminder.query.resolver.js.map +1 -0
- package/server/dist/features/reminder/graphql/reminder.resolver.js +12 -0
- package/server/dist/features/reminder/graphql/reminder.resolver.js.map +1 -0
- package/server/dist/features/reminder/graphql/reminder.type-defs.js +51 -0
- package/server/dist/features/reminder/graphql/reminder.type-defs.js.map +1 -0
- package/server/dist/features/tag/graphql/index.js +14 -0
- package/server/dist/features/tag/graphql/index.js.map +1 -0
- package/server/dist/features/tag/graphql/tag.field.resolver.js +10 -0
- package/server/dist/features/tag/graphql/tag.field.resolver.js.map +1 -0
- package/server/dist/features/tag/graphql/tag.mutation.resolver.js +15 -0
- package/server/dist/features/tag/graphql/tag.mutation.resolver.js.map +1 -0
- package/server/dist/features/tag/graphql/tag.query.resolver.js +26 -0
- package/server/dist/features/tag/graphql/tag.query.resolver.js.map +1 -0
- package/server/dist/features/tag/graphql/tag.resolver.js +12 -0
- package/server/dist/features/tag/graphql/tag.resolver.js.map +1 -0
- package/server/dist/features/tag/graphql/tag.type-defs.js +46 -0
- package/server/dist/features/tag/graphql/tag.type-defs.js.map +1 -0
- package/server/dist/{views/tag.js → features/tag/http/mcp.js} +3 -3
- package/server/dist/features/tag/http/mcp.js.map +1 -0
- package/server/dist/{modules/tag-organization.js → features/tag/services/organization.js} +38 -8
- package/server/dist/features/tag/services/organization.js.map +1 -0
- package/server/dist/features/view/graphql/index.js +11 -0
- package/server/dist/features/view/graphql/index.js.map +1 -0
- package/server/dist/features/view/graphql/view.mutation.resolver.js +53 -0
- package/server/dist/features/view/graphql/view.mutation.resolver.js.map +1 -0
- package/server/dist/features/view/graphql/view.query.resolver.js +29 -0
- package/server/dist/features/view/graphql/view.query.resolver.js.map +1 -0
- package/server/dist/features/view/graphql/view.resolver.js +10 -0
- package/server/dist/features/view/graphql/view.resolver.js.map +1 -0
- package/server/dist/features/view/graphql/view.type-defs.js +63 -0
- package/server/dist/features/view/graphql/view.type-defs.js.map +1 -0
- package/server/dist/features/view/services/workspace.js +432 -0
- package/server/dist/features/view/services/workspace.js.map +1 -0
- package/server/dist/main.js +14 -0
- package/server/dist/main.js.map +1 -1
- package/server/dist/modules/auth-guard.js +10 -9
- package/server/dist/modules/auth-guard.js.map +1 -1
- package/server/dist/modules/auth-mode.js +1 -3
- package/server/dist/modules/auth-mode.js.map +1 -1
- package/server/dist/modules/blocknote.js +96 -33
- package/server/dist/modules/blocknote.js.map +1 -1
- package/server/dist/modules/data-maintenance.js +75 -0
- package/server/dist/modules/data-maintenance.js.map +1 -0
- package/server/dist/modules/error-handler.js.map +1 -1
- package/server/dist/modules/logger.js +5 -23
- package/server/dist/modules/logger.js.map +1 -1
- package/server/dist/modules/mcp-auth.js +4 -5
- package/server/dist/modules/mcp-auth.js.map +1 -1
- package/server/dist/modules/mcp-token.js.map +1 -1
- package/server/dist/modules/prisma-runtime.js +2 -7
- package/server/dist/modules/prisma-runtime.js.map +1 -1
- package/server/dist/modules/recovery-retention.js +1 -1
- package/server/dist/modules/recovery-retention.js.map +1 -1
- package/server/dist/modules/server-events-handler.js +34 -0
- package/server/dist/modules/server-events-handler.js.map +1 -0
- package/server/dist/modules/server-events.js +32 -0
- package/server/dist/modules/server-events.js.map +1 -0
- package/server/dist/modules/use-async.js.map +1 -1
- package/server/dist/paths.js.map +1 -1
- package/server/dist/routes/api.js +34 -0
- package/server/dist/routes/api.js.map +1 -0
- package/server/dist/routes/auth-pages.js +11 -0
- package/server/dist/routes/auth-pages.js.map +1 -0
- package/server/dist/routes/client.js +27 -0
- package/server/dist/routes/client.js.map +1 -0
- package/server/dist/routes/graphql.js +33 -0
- package/server/dist/routes/graphql.js.map +1 -0
- package/server/dist/routes/index.js +11 -0
- package/server/dist/routes/index.js.map +1 -0
- package/server/dist/routes/mcp.js +30 -0
- package/server/dist/routes/mcp.js.map +1 -0
- package/server/dist/schema/index.js +11 -8
- package/server/dist/schema/index.js.map +1 -1
- package/server/dist/types/index.js.map +1 -1
- package/server/prisma/migrations/20260413143000_0014_tag_name_unique/migration.sql +32 -0
- package/server/prisma/migrations/20260414143000_0015_note_searchable_text/migration.sql +5 -0
- package/server/prisma/migrations/20260416090000_0016_view_workspace/migration.sql +50 -0
- package/server/prisma/schema.prisma +66 -12
- package/server/client/dist/assets/Calendar-DyXzs5M3.js +0 -25
- package/server/client/dist/assets/Graph-C8K4PJOn.js +0 -1
- package/server/client/dist/assets/Note-BbgZvrC3.js +0 -1
- package/server/client/dist/assets/Note-PEevDKBh.css +0 -1
- package/server/client/dist/assets/Reminders-jFhljND4.js +0 -1
- package/server/client/dist/assets/Search-X6QIR_m2.js +0 -1
- package/server/client/dist/assets/Tag-Ba2Dw4gH.js +0 -1
- package/server/client/dist/assets/TagNotes-BRJv6sDI.js +0 -1
- package/server/client/dist/assets/index-BglnLSet.js +0 -205
- package/server/client/dist/assets/index-DpqKngJz.js +0 -1
- package/server/client/dist/assets/manage-image-C6Y_0M5H.js +0 -1
- package/server/client/dist/assets/manage-image-detail-Dv3xofpe.js +0 -1
- package/server/client/dist/assets/mcp-BijQkpfY.js +0 -1
- package/server/client/dist/assets/trash-CiFJm_PK.js +0 -1
- package/server/dist/modules/auth.js +0 -25
- package/server/dist/modules/auth.js.map +0 -1
- package/server/dist/modules/image-upload.js.map +0 -1
- package/server/dist/modules/mcp-admin.js.map +0 -1
- package/server/dist/modules/note-authoring.js.map +0 -1
- package/server/dist/modules/note-cleanup.js.map +0 -1
- package/server/dist/modules/note-snapshot.js.map +0 -1
- package/server/dist/modules/note-trash.js.map +0 -1
- package/server/dist/modules/remote-image.js.map +0 -1
- package/server/dist/modules/tag-organization.js.map +0 -1
- package/server/dist/schema/cache/index.js +0 -58
- package/server/dist/schema/cache/index.js.map +0 -1
- package/server/dist/schema/image/index.js +0 -88
- package/server/dist/schema/image/index.js.map +0 -1
- package/server/dist/schema/note/index.js +0 -551
- package/server/dist/schema/note/index.js.map +0 -1
- package/server/dist/schema/placeholder/index.js +0 -105
- package/server/dist/schema/placeholder/index.js.map +0 -1
- package/server/dist/schema/reminder/index.js +0 -161
- package/server/dist/schema/reminder/index.js.map +0 -1
- package/server/dist/schema/tag/index.js +0 -81
- package/server/dist/schema/tag/index.js.map +0 -1
- package/server/dist/urls.js +0 -9
- package/server/dist/urls.js.map +0 -1
- package/server/dist/views/auth.js +0 -305
- package/server/dist/views/auth.js.map +0 -1
- package/server/dist/views/image.js +0 -44
- package/server/dist/views/image.js.map +0 -1
- package/server/dist/views/index.js +0 -6
- package/server/dist/views/index.js.map +0 -1
- package/server/dist/views/mcp-admin.js.map +0 -1
- package/server/dist/views/note.js.map +0 -1
- 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 {
|
|
2
|
-
import {
|
|
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=
|
|
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 "
|
|
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
|
|
30
|
-
if (
|
|
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(
|
|
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
|
-
|
|
51
|
-
return models.tag.
|
|
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=
|
|
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":[]}
|