@overmap-ai/core 1.0.45-batch-bug-fixes.0 → 1.0.46-project-attachments.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/sdk/sdk.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AttachmentService, AuthService, CategoryService, ComponentService, ComponentStageCompletionService, ComponentStageService, ComponentTypeService, EmailVerificationService, FileService, IssueCommentService, IssueService, MainService, OrganizationAccessService, ProjectAccessService, ProjectFileService, ProjectService, UserFormService, UserFormSubmissionService, WorkspaceService, OrganizationService, EmailDomainsService, LicenseService } from "./services";
1
+ import { AttachmentService, AuthService, CategoryService, ComponentService, ComponentStageCompletionService, ComponentStageService, ComponentTypeService, EmailVerificationService, FileService, IssueCommentService, IssueService, MainService, OrganizationAccessService, ProjectAccessService, ProjectFileService, ProjectService, UserFormService, UserFormSubmissionService, WorkspaceService, OrganizationService, EmailDomainsService, LicenseService, DocumentService } from "./services";
2
2
  import { ToolkitStore } from "@reduxjs/toolkit/dist/configureStore.js";
3
3
  import { RootState } from "../typings";
4
4
  export declare class OvermapSDK {
@@ -27,5 +27,6 @@ export declare class OvermapSDK {
27
27
  emailVerification: EmailVerificationService;
28
28
  emailDomains: EmailDomainsService;
29
29
  licenses: LicenseService;
30
+ documents: DocumentService;
30
31
  }
31
32
  export declare const makeClient: (apiUrl: string, store: ToolkitStore<RootState>) => OvermapSDK;
@@ -1,6 +1,6 @@
1
1
  import { BaseApiService } from "./BaseApiService";
2
2
  import type { OptimisticModelResult } from "../typings";
3
- import { ComponentAttachment, ComponentTypeAttachment, Created, IssueAttachment, MaybeObjectURL, AttachmentPayload, Stored } from "../../typings";
3
+ import { ComponentAttachment, ComponentTypeAttachment, Created, IssueAttachment, MaybeObjectURL, AttachmentPayload, Stored, ProjectAttachment, Project } from "../../typings";
4
4
  /**
5
5
  * Handles creation and caching of attachments
6
6
  */
@@ -8,23 +8,27 @@ interface StoredAttachments {
8
8
  issue_attachments: Stored<IssueAttachment>[];
9
9
  component_attachments: Stored<ComponentAttachment>[];
10
10
  component_type_attachments: Stored<ComponentTypeAttachment>[];
11
+ project_attachments: Stored<ProjectAttachment>[];
11
12
  }
12
13
  interface CreatedAttachments {
13
14
  issue_attachments: Created<IssueAttachment>[];
14
15
  component_attachments: Created<ComponentAttachment>[];
15
16
  component_type_attachments: Created<ComponentTypeAttachment>[];
17
+ project_attachments: Created<ProjectAttachment>[];
16
18
  }
17
19
  export declare class AttachmentService extends BaseApiService {
18
20
  fetchAll(projectId: number): [StoredAttachments, Promise<CreatedAttachments>];
19
21
  addIssueAttachment(attachmentPayload: AttachmentPayload<IssueAttachment>): Promise<OptimisticModelResult<IssueAttachment>>;
20
22
  addComponentAttachment(attachmentPayload: AttachmentPayload<ComponentAttachment>): Promise<OptimisticModelResult<ComponentAttachment>>;
21
23
  addComponentTypeAttachment(attachmentPayload: AttachmentPayload<ComponentTypeAttachment>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
24
+ addProjectAttachment(attachmentPayload: AttachmentPayload<ProjectAttachment>): Promise<OptimisticModelResult<ProjectAttachment>>;
22
25
  /** the outer Promise is needed to await the hashing of each file, which is required before offline use. If wanting to
23
26
  * attach promise handlers to the request to add the attachment in the backend, apply it on the promise returned from the
24
27
  * OptimisticModelResult. */
25
28
  attachFilesToIssue(filesToSubmit: File[], issueId: string): Promise<OptimisticModelResult<IssueAttachment>>[];
26
29
  attachFilesToComponent(filesToSubmit: File[], componentId: string): Promise<OptimisticModelResult<ComponentAttachment>>[];
27
30
  attachFilesToComponentType(filesToSubmit: File[], componentTypeId: string): Promise<OptimisticModelResult<ComponentTypeAttachment>>[];
31
+ attachFilesToProjectType(filesToSubmit: File[], projectId: Project["id"]): Promise<OptimisticModelResult<ProjectAttachment>>[];
28
32
  replaceIssueAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<IssueAttachment>>;
29
33
  replaceComponentAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentAttachment>>;
30
34
  replaceComponentTypeAttachmentFile(attachmentId: string, newFile: MaybeObjectURL<File>): Promise<OptimisticModelResult<ComponentTypeAttachment>>;
@@ -35,5 +39,6 @@ export declare class AttachmentService extends BaseApiService {
35
39
  deleteIssueAttachment(issueAttachmentId: string): Promise<undefined>;
36
40
  deleteComponentAttachment(componentAttachmentId: string): Promise<undefined>;
37
41
  deleteComponentTypeAttachment(componentTypeAttachmentId: string): Promise<undefined>;
42
+ deleteProjectAttachment(projectAttachmentId: string): Promise<undefined>;
38
43
  }
39
44
  export {};
@@ -0,0 +1,10 @@
1
+ import { BaseApiService } from "./BaseApiService";
2
+ import { MovePosition, Payload, ProjectDocument, Submitted } from "../../typings";
3
+ import { OptimisticModelResult } from "../typings";
4
+ export declare class DocumentService extends BaseApiService {
5
+ add(document: Payload<ProjectDocument>): OptimisticModelResult<ProjectDocument>;
6
+ update(document: Submitted<Partial<ProjectDocument>>): OptimisticModelResult<ProjectDocument>;
7
+ move(documentId: string, targetDocumentId: string | null, position: MovePosition): Promise<ProjectDocument[]>;
8
+ delete(documentId: string): Promise<ProjectDocument[]>;
9
+ refreshStore(): Promise<void>;
10
+ }
@@ -20,4 +20,5 @@ export * from "./FileService";
20
20
  export * from "./EmailVerificationService";
21
21
  export * from "./EmailDomainsService";
22
22
  export * from "./OrganizationService";
23
- export * from "./LicenseService.ts";
23
+ export * from "./LicenseService";
24
+ export * from "./DocumentService";
@@ -23,7 +23,7 @@ export interface RequestDetails {
23
23
  immediate?: boolean;
24
24
  isExternalUrl?: boolean;
25
25
  isResponseBlob?: boolean;
26
- queryParams?: Record<string, string>;
26
+ queryParams?: Record<string, string | undefined>;
27
27
  isAuthNeeded?: boolean;
28
28
  /** The hash of any included attachments being uploaded to S3, retrieved from cache before the request is fired */
29
29
  attachmentHash?: string;
@@ -65,6 +65,7 @@ export declare const selectCategories: ((state: import("redux").EmptyObject & {
65
65
  workspaceReducer: import('..').WorkspaceState;
66
66
  emailDomainsReducer: import('..').EmailDomainState;
67
67
  licenseReducer: import('..').LicenseState;
68
+ documentsReducer: import('..').DocumentState;
68
69
  } & {
69
70
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
70
71
  }) => Category[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Category>, args_1: string | null) => Category[], {
@@ -0,0 +1,66 @@
1
+ /// <reference types="@redux-offline/redux-offline" />
2
+ import { Reducer } from "@reduxjs/toolkit";
3
+ import { MovePosition, ProjectDocument, RootState, Stored, Submitted } from "../../typings";
4
+ import { AppSelector } from "./componentTypeSlice";
5
+ export interface DocumentState {
6
+ documents: Record<string, Stored<ProjectDocument>>;
7
+ }
8
+ export interface MoveDocumentPayload {
9
+ documentId: ProjectDocument["offline_id"];
10
+ targetDocumentId: ProjectDocument["offline_id"] | null;
11
+ position: MovePosition;
12
+ }
13
+ export declare const documentSlice: import("@reduxjs/toolkit").Slice<DocumentState, {
14
+ setDocuments: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
15
+ payload: ProjectDocument[];
16
+ }) => void;
17
+ addDocuments: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
18
+ payload: ProjectDocument[];
19
+ }) => void;
20
+ updateDocuments: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
21
+ payload: Submitted<Partial<ProjectDocument>>[];
22
+ }) => void;
23
+ moveDocument: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
24
+ payload: MoveDocumentPayload;
25
+ }) => void;
26
+ removeDocuments: (state: import("immer/dist/internal.js").WritableDraft<DocumentState>, action: {
27
+ payload: string[];
28
+ }) => void;
29
+ }, "documents">;
30
+ export declare const setDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/setDocuments">, addDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectDocument[], "documents/addDocuments">, updateDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<Submitted<Partial<ProjectDocument>>[], "documents/updateDocuments">, moveDocument: import("@reduxjs/toolkit").ActionCreatorWithPayload<MoveDocumentPayload, "documents/moveDocument">, removeDocuments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "documents/removeDocuments">;
31
+ export declare const selectDocumentsMapping: AppSelector<Record<string, Stored<ProjectDocument>>>;
32
+ export declare const selectDocuments: AppSelector<Stored<ProjectDocument>[]>;
33
+ export declare const selectDocument: (args: string) => (state: RootState) => Stored<ProjectDocument> | undefined;
34
+ export declare const selectRootDocuments: ((state: import("redux").EmptyObject & {
35
+ versioning: import('../slices/versioningSlice').VersioningState;
36
+ fileReducer: import('..').FileState;
37
+ authReducer: import('..').AuthState;
38
+ categoryReducer: import('..').CategoryState;
39
+ componentReducer: import('..').ComponentState;
40
+ componentStageCompletionReducer: import('..').ComponentStageCompletionState;
41
+ componentStageReducer: import('..').ComponentStageState;
42
+ componentTypeReducer: import("./componentTypeSlice").ComponentTypeState;
43
+ issueReducer: import('..').IssueState;
44
+ mapReducer: import('..').MapState;
45
+ organizationReducer: import('..').OrganizationState;
46
+ outboxReducer: import('..').OutboxState;
47
+ projectReducer: import('..').ProjectState;
48
+ projectAccessReducer: import('..').ProjectAccessState;
49
+ organizationAccessReducer: import('..').OrganizationAccessState;
50
+ projectFileReducer: import('..').ProjectFileState;
51
+ rehydratedReducer: import('..').RehydratedState;
52
+ settingReducer: import('..').SettingState;
53
+ userFormReducer: import('..').UserFormState;
54
+ userReducer: import('..').UserState;
55
+ workspaceReducer: import('..').WorkspaceState;
56
+ emailDomainsReducer: import('..').EmailDomainState;
57
+ licenseReducer: import('..').LicenseState;
58
+ documentsReducer: DocumentState;
59
+ } & {
60
+ offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
61
+ }) => Stored<ProjectDocument>[]) & import("reselect").OutputSelectorFields<(args_0: Stored<ProjectDocument>[]) => Stored<ProjectDocument>[], {
62
+ clearCache: () => void;
63
+ }> & {
64
+ clearCache: () => void;
65
+ };
66
+ export declare const documentsReducer: Reducer<DocumentState>;
@@ -20,3 +20,4 @@ export * from "./workspaceSlice";
20
20
  export * from "./organizationAccessSlice";
21
21
  export * from "./emailDomainsSlice";
22
22
  export * from "./licenseSlice";
23
+ export * from "./documentSlice";
@@ -118,6 +118,7 @@ export declare const selectAllAttachments: ((state: import("redux").EmptyObject
118
118
  workspaceReducer: import("./workspaceSlice").WorkspaceState;
119
119
  emailDomainsReducer: import('..').EmailDomainState;
120
120
  licenseReducer: import('..').LicenseState;
121
+ documentsReducer: import('..').DocumentState;
121
122
  } & {
122
123
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
123
124
  }) => Stored<IssueAttachment>[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Stored<IssueAttachment>>) => Stored<IssueAttachment>[], {
@@ -73,6 +73,7 @@ export declare const selectProjectFiles: ((state: import("redux").EmptyObject &
73
73
  workspaceReducer: import('..').WorkspaceState;
74
74
  emailDomainsReducer: import('..').EmailDomainState;
75
75
  licenseReducer: import('..').LicenseState;
76
+ documentsReducer: import('..').DocumentState;
76
77
  } & {
77
78
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
78
79
  }) => ProjectFile[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, ProjectFile>, args_1: number | null) => ProjectFile[], {
@@ -1,11 +1,12 @@
1
1
  import { Reducer } from "@reduxjs/toolkit";
2
- import { Project, ProjectType, RootState, Selector, User } from "../../typings";
2
+ import { Project, ProjectAttachment, ProjectType, RootState, Selector, Stored, User } from "../../typings";
3
3
  export interface ProjectState {
4
4
  projects: Record<number, Project>;
5
5
  activeProjectId: number | null;
6
6
  recentProjectIds: number[];
7
7
  recentSearchableQueries: string[];
8
8
  createProjectType: ProjectType;
9
+ attachments: Record<string, Stored<ProjectAttachment>>;
9
10
  }
10
11
  export declare const projectSlice: import("@reduxjs/toolkit").Slice<ProjectState, {
11
12
  setProjects: (state: import("immer/dist/internal.js").WritableDraft<ProjectState>, action: {
@@ -35,8 +36,32 @@ export declare const projectSlice: import("@reduxjs/toolkit").Slice<ProjectState
35
36
  addActiveProjectFormSubmissionsCount: (state: import("immer/dist/internal.js").WritableDraft<ProjectState>, action: {
36
37
  payload: number;
37
38
  }) => void;
39
+ setProjectAttachments: (state: ProjectState, action: {
40
+ payload: import('../../typings/models/issues').Created<ProjectAttachment>[];
41
+ type: string;
42
+ }) => void;
43
+ addProjectAttachment: (state: ProjectState, action: {
44
+ payload: import('../../typings/models/issues').Submitted<ProjectAttachment>;
45
+ type: string;
46
+ }) => void;
47
+ addProjectAttachments: (state: ProjectState, action: {
48
+ payload: import('../../typings/models/issues').Submitted<ProjectAttachment>[];
49
+ type: string;
50
+ }) => void;
51
+ updateProjectAttachment: (state: ProjectState, action: {
52
+ payload: import('../../typings/models/issues').Submitted<ProjectAttachment>;
53
+ type: string;
54
+ }) => void;
55
+ removeProjectAttachment: (state: ProjectState, action: {
56
+ payload: string;
57
+ type: string;
58
+ }) => void;
59
+ removeProjectAttachments: (state: ProjectState, action: {
60
+ payload: string[];
61
+ type: string;
62
+ }) => void;
38
63
  }, "projects">;
39
- export declare const setProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/setProjects">, updateOrCreateProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/updateOrCreateProject">, addOrReplaceProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/updateOrCreateProjects">, setActiveProjectId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "projects/setActiveProjectId">, setCreateProjectType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectType, "projects/setCreateProjectType">, deleteProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/deleteProject">, acceptProjectInvite: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/acceptProjectInvite">, addActiveProjectIssuesCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectIssuesCount">, addActiveProjectFormSubmissionsCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectFormSubmissionsCount">;
64
+ export declare const setProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/setProjects">, updateOrCreateProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/updateOrCreateProject">, addOrReplaceProjects: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project[], "projects/updateOrCreateProjects">, setActiveProjectId: import("@reduxjs/toolkit").ActionCreatorWithPayload<number | null, "projects/setActiveProjectId">, setCreateProjectType: import("@reduxjs/toolkit").ActionCreatorWithPayload<ProjectType, "projects/setCreateProjectType">, deleteProject: import("@reduxjs/toolkit").ActionCreatorWithPayload<Project, "projects/deleteProject">, acceptProjectInvite: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/acceptProjectInvite">, addActiveProjectIssuesCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectIssuesCount">, addActiveProjectFormSubmissionsCount: import("@reduxjs/toolkit").ActionCreatorWithPayload<number, "projects/addActiveProjectFormSubmissionsCount">, setProjectAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues').Created<ProjectAttachment>[], "projects/setProjectAttachments">, addProjectAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues').Submitted<ProjectAttachment>, "projects/addProjectAttachment">, addProjectAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues').Submitted<ProjectAttachment>[], "projects/addProjectAttachments">, updateProjectAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<import('../../typings/models/issues').Submitted<ProjectAttachment>, "projects/updateProjectAttachment">, removeProjectAttachment: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "projects/removeProjectAttachment">, removeProjectAttachments: import("@reduxjs/toolkit").ActionCreatorWithPayload<string[], "projects/removeProjectAttachments">;
40
65
  export declare const selectProjects: Selector<Record<number, Project>>;
41
66
  export declare const selectActiveProjectId: (state: RootState) => number | null;
42
67
  export declare const selectActiveProject: (state: RootState) => Project | null;
@@ -48,3 +73,10 @@ export declare const selectProjectUsersIds: Selector<number[]>;
48
73
  export declare const selectProjectUsersAsMapping: Selector<Record<number, User>>;
49
74
  export declare const selectProjectsWithAccess: Selector<Project[]>;
50
75
  export declare const selectSortedProjectUsers: Selector<User[]>;
76
+ export declare const selectProjectAttachmentMapping: (state: RootState) => Record<string, Stored<ProjectAttachment>>;
77
+ export declare const selectAllProjectAttachments: Selector<Stored<ProjectAttachment>[]>;
78
+ export declare const selectAttachmentsOfProject: (args: number) => (state: RootState) => Stored<ProjectAttachment>[];
79
+ export declare const selectAttachmentsOfProjectByType: (args: number) => (state: RootState) => {
80
+ fileAttachments: Stored<ProjectAttachment>[];
81
+ imageAttachments: Stored<ProjectAttachment>[];
82
+ };
@@ -51,6 +51,7 @@ export declare const selectWorkspaces: ((state: import("redux").EmptyObject & {
51
51
  workspaceReducer: WorkspaceState;
52
52
  emailDomainsReducer: import('..').EmailDomainState;
53
53
  licenseReducer: import('..').LicenseState;
54
+ documentsReducer: import('..').DocumentState;
54
55
  } & {
55
56
  offline: import("@redux-offline/redux-offline/lib/types").OfflineState;
56
57
  }) => Workspace[]) & import("reselect").OutputSelectorFields<(args_0: Record<string, Workspace>) => Workspace[], {
@@ -3,7 +3,7 @@ import { AnyAction, Reducer } from "redux";
3
3
  import { Config, OfflineAction, OfflineMetadata, OfflineState } from "@redux-offline/redux-offline/lib/types";
4
4
  import request from "superagent";
5
5
  import { type OfflineMetaEffect, type OvermapSDK, RequestDetails } from "../sdk";
6
- import { AuthState, CategoryState, ComponentStageCompletionState, ComponentStageState, ComponentState, ComponentTypeState, EmailDomainState, FileState, IssueState, LicenseState, MapState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectFileState, ProjectState, RehydratedState, SettingState, UserFormState, UserState, WorkspaceState } from "./slices";
6
+ import { AuthState, CategoryState, ComponentStageCompletionState, ComponentStageState, ComponentState, ComponentTypeState, EmailDomainState, FileState, IssueState, LicenseState, MapState, OrganizationAccessState, OrganizationState, OutboxState, ProjectAccessState, ProjectFileState, ProjectState, RehydratedState, SettingState, UserFormState, UserState, WorkspaceState, DocumentState } from "./slices";
7
7
  import { VersioningState } from "./slices/versioningSlice";
8
8
  import { RootState } from "../typings";
9
9
  export declare const overmapReducers: {
@@ -30,6 +30,7 @@ export declare const overmapReducers: {
30
30
  workspaceReducer: Reducer<WorkspaceState>;
31
31
  emailDomainsReducer: Reducer<EmailDomainState>;
32
32
  licenseReducer: Reducer<LicenseState>;
33
+ documentsReducer: Reducer<DocumentState>;
33
34
  };
34
35
  export declare const overmapReducer: Reducer<import("redux").CombinedState<{
35
36
  versioning: VersioningState;
@@ -55,6 +56,7 @@ export declare const overmapReducer: Reducer<import("redux").CombinedState<{
55
56
  workspaceReducer: WorkspaceState;
56
57
  emailDomainsReducer: EmailDomainState;
57
58
  licenseReducer: LicenseState;
59
+ documentsReducer: DocumentState;
58
60
  }>, AnyAction>;
59
61
  export declare const resetStore = "RESET";
60
62
  export declare const rootReducer: Reducer<RootState>;
@@ -98,6 +100,7 @@ export declare const defaultStore: import("@reduxjs/toolkit/dist/configureStore"
98
100
  workspaceReducer: WorkspaceState;
99
101
  emailDomainsReducer: EmailDomainState;
100
102
  licenseReducer: LicenseState;
103
+ documentsReducer: DocumentState;
101
104
  } & {
102
105
  offline: OfflineState;
103
106
  }, AnyAction, import("@reduxjs/toolkit").MiddlewareArray<[import("@reduxjs/toolkit").ThunkMiddleware<RootState, AnyAction>]>>;
@@ -1,5 +1,6 @@
1
1
  import { OfflineModel } from "./base";
2
2
  import { MaybeObjectURL, UploadedFileModel } from "../files";
3
+ import { Project } from "./projects";
3
4
  export interface Attachment extends OfflineModel, UploadedFileModel {
4
5
  description?: string;
5
6
  file_name: string;
@@ -14,6 +15,9 @@ export interface ComponentAttachment extends Attachment, UploadedFileModel {
14
15
  export interface ComponentTypeAttachment extends Attachment, UploadedFileModel {
15
16
  component_type: string;
16
17
  }
18
+ export interface ProjectAttachment extends Attachment, UploadedFileModel {
19
+ project: Project["id"];
20
+ }
17
21
  /** to get an AttachmentPayload for a specific type, pass in the given AttachmentType
18
22
  * ex. AttachmentPayload<IssueAttachment> */
19
23
  export type AttachmentPayload<TAttachment> = Omit<TAttachment, "file"> & {
@@ -0,0 +1,11 @@
1
+ import { OfflineModel } from "./base";
2
+ import { User } from "./users";
3
+ export interface ProjectDocument extends OfflineModel {
4
+ title: string | null;
5
+ description: string | null;
6
+ content: string | null;
7
+ created_by: User["id"];
8
+ parent_document: ProjectDocument["offline_id"] | null;
9
+ children_documents: ProjectDocument["offline_id"][];
10
+ }
11
+ export type MovePosition = "left" | "right" | "left-child" | "right-child";
@@ -14,3 +14,4 @@ export * from "./emailVerification";
14
14
  export * from "./store";
15
15
  export * from "./emailDomain";
16
16
  export * from "./license";
17
+ export * from "./documents";
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core functionality for Overmap",
4
4
  "author": "Wôrdn Inc.",
5
5
  "license": "UNLICENSED",
6
- "version": "1.0.45-batch-bug-fixes.0",
6
+ "version": "1.0.46-project-attachments.0",
7
7
  "type": "module",
8
8
  "main": "dist/overmap-core.umd.cjs",
9
9
  "module": "dist/overmap-core.js",