@excali-boards/boards-api-client 1.1.41 → 1.1.43
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/classes/analytics.d.ts +60 -0
- package/dist/classes/analytics.js +36 -0
- package/dist/core/manager.d.ts +2 -0
- package/dist/core/manager.js +2 -0
- package/dist/external/types.d.ts +1 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
- package/prisma/schema/boards.prisma +29 -0
- package/prisma/schema/user.prisma +5 -4
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BoardsManager } from '../core/manager';
|
|
2
|
+
export declare class APIAnalytics {
|
|
3
|
+
private web;
|
|
4
|
+
constructor(web: BoardsManager);
|
|
5
|
+
getUserAnalytics({ auth }: AnalyticsFunctionsInput['getUserAnalytics']): Promise<import("..").WebResponse<UserBoardActivityWithBoard[]>>;
|
|
6
|
+
getBoardAnalytics({ auth, boardId, categoryId, groupId }: AnalyticsFunctionsInput['getBoardAnalytics']): Promise<import("..").WebResponse<UserBoardActivityWithUser[]>>;
|
|
7
|
+
getCategoryAnalytics({ auth, categoryId, groupId }: AnalyticsFunctionsInput['getCategoryAnalytics']): Promise<import("..").WebResponse<UserBoardActivityWithUserAndBoard[]>>;
|
|
8
|
+
getGroupAnalytics({ auth, groupId }: AnalyticsFunctionsInput['getGroupAnalytics']): Promise<import("..").WebResponse<UserBoardActivityWithUserAndBoard[]>>;
|
|
9
|
+
}
|
|
10
|
+
export type AnalyticsFunctionsInput = {
|
|
11
|
+
'getUserAnalytics': {
|
|
12
|
+
auth: string;
|
|
13
|
+
};
|
|
14
|
+
'getBoardAnalytics': {
|
|
15
|
+
auth: string;
|
|
16
|
+
boardId: string;
|
|
17
|
+
categoryId: string;
|
|
18
|
+
groupId: string;
|
|
19
|
+
};
|
|
20
|
+
'getCategoryAnalytics': {
|
|
21
|
+
auth: string;
|
|
22
|
+
categoryId: string;
|
|
23
|
+
groupId: string;
|
|
24
|
+
};
|
|
25
|
+
'getGroupAnalytics': {
|
|
26
|
+
auth: string;
|
|
27
|
+
groupId: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export type ActivityAnalytics = {
|
|
31
|
+
totalSessions: number;
|
|
32
|
+
totalActiveSeconds: number;
|
|
33
|
+
totalActions: number;
|
|
34
|
+
lastActivityAt: Date;
|
|
35
|
+
};
|
|
36
|
+
export type UserBoardActivityWithBoard = ActivityAnalytics & {
|
|
37
|
+
board: {
|
|
38
|
+
name: string;
|
|
39
|
+
boardId: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export type UserBoardActivityWithUser = ActivityAnalytics & {
|
|
43
|
+
user: {
|
|
44
|
+
userId: string;
|
|
45
|
+
displayName: string;
|
|
46
|
+
avatarUrl: string | null;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
export type UserBoardActivityWithUserAndBoard = ActivityAnalytics & {
|
|
50
|
+
user: {
|
|
51
|
+
userId: string;
|
|
52
|
+
displayName: string;
|
|
53
|
+
avatarUrl: string | null;
|
|
54
|
+
};
|
|
55
|
+
board: {
|
|
56
|
+
name: string;
|
|
57
|
+
boardId: string;
|
|
58
|
+
categoryId: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APIAnalytics = void 0;
|
|
4
|
+
// Data.
|
|
5
|
+
class APIAnalytics {
|
|
6
|
+
web;
|
|
7
|
+
constructor(web) {
|
|
8
|
+
this.web = web;
|
|
9
|
+
}
|
|
10
|
+
// Methods.
|
|
11
|
+
async getUserAnalytics({ auth }) {
|
|
12
|
+
return await this.web.request({
|
|
13
|
+
method: 'GET', auth,
|
|
14
|
+
endpoint: this.web.qp('/analytics/user'),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async getBoardAnalytics({ auth, boardId, categoryId, groupId }) {
|
|
18
|
+
return await this.web.request({
|
|
19
|
+
method: 'GET', auth,
|
|
20
|
+
endpoint: this.web.qp(`/groups/${groupId}/categories/${categoryId}/boards/${boardId}/analytics`),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async getCategoryAnalytics({ auth, categoryId, groupId }) {
|
|
24
|
+
return await this.web.request({
|
|
25
|
+
method: 'GET', auth,
|
|
26
|
+
endpoint: this.web.qp(`/groups/${groupId}/categories/${categoryId}/analytics`),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async getGroupAnalytics({ auth, groupId }) {
|
|
30
|
+
return await this.web.request({
|
|
31
|
+
method: 'GET', auth,
|
|
32
|
+
endpoint: this.web.qp(`/groups/${groupId}/analytics`),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.APIAnalytics = APIAnalytics;
|
package/dist/core/manager.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { APIPermissions } from '../classes/permissions';
|
|
|
2
2
|
import { RequestMethod, WebResponse } from '../types';
|
|
3
3
|
import { APIFlashcards } from '../classes/flashcards';
|
|
4
4
|
import { APICategories } from '../classes/categories';
|
|
5
|
+
import { APIAnalytics } from '../classes/analytics';
|
|
5
6
|
import { APISessions } from '../classes/sessions';
|
|
6
7
|
import { APICalendar } from '../classes/calendar';
|
|
7
8
|
import { APIMetrics } from '../classes/metrics';
|
|
@@ -17,6 +18,7 @@ export declare class BoardsManager {
|
|
|
17
18
|
readonly permissions: APIPermissions;
|
|
18
19
|
readonly categories: APICategories;
|
|
19
20
|
readonly flashcards: APIFlashcards;
|
|
21
|
+
readonly analytics: APIAnalytics;
|
|
20
22
|
readonly calendar: APICalendar;
|
|
21
23
|
readonly sessions: APISessions;
|
|
22
24
|
readonly invites: APIInvites;
|
package/dist/core/manager.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.BoardsManager = void 0;
|
|
|
7
7
|
const permissions_1 = require("../classes/permissions");
|
|
8
8
|
const flashcards_1 = require("../classes/flashcards");
|
|
9
9
|
const categories_1 = require("../classes/categories");
|
|
10
|
+
const analytics_1 = require("../classes/analytics");
|
|
10
11
|
const sessions_1 = require("../classes/sessions");
|
|
11
12
|
const calendar_1 = require("../classes/calendar");
|
|
12
13
|
const metrics_1 = require("../classes/metrics");
|
|
@@ -24,6 +25,7 @@ class BoardsManager {
|
|
|
24
25
|
permissions = new permissions_1.APIPermissions(this);
|
|
25
26
|
categories = new categories_1.APICategories(this);
|
|
26
27
|
flashcards = new flashcards_1.APIFlashcards(this);
|
|
28
|
+
analytics = new analytics_1.APIAnalytics(this);
|
|
27
29
|
calendar = new calendar_1.APICalendar(this);
|
|
28
30
|
sessions = new sessions_1.APISessions(this);
|
|
29
31
|
invites = new invites_1.APIInvites(this);
|
package/dist/external/types.d.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
import { TSPrisma, BoardType } from '../../prisma/generated/default';
|
|
2
1
|
import { BoardRole, CategoryRole, GroupRole } from './vars';
|
|
3
|
-
|
|
4
|
-
export type Group = TSPrisma.TSPrismaModelsFull['Group'];
|
|
5
|
-
export type Category = TSPrisma.TSPrismaModelsFull['Category'];
|
|
6
|
-
export type Board = TSPrisma.TSPrismaModelsFull['Board'];
|
|
7
|
-
export type File = TSPrisma.TSPrismaModelsFull['File'];
|
|
8
|
-
export type LoginMethod = TSPrisma.TSPrismaModelsFull['LoginMethod'];
|
|
9
|
-
export type GroupPermission = TSPrisma.TSPrismaModelsFull['GroupPermission'];
|
|
10
|
-
export type CategoryPermission = TSPrisma.TSPrismaModelsFull['CategoryPermission'];
|
|
11
|
-
export type BoardPermission = TSPrisma.TSPrismaModelsFull['BoardPermission'];
|
|
12
|
-
export type Invite = TSPrisma.TSPrismaModelsFull['Invite'];
|
|
2
|
+
import { BoardType } from '../../prisma/generated/default';
|
|
13
3
|
export type UserRole = BoardRole | CategoryRole | GroupRole | GlobalRole;
|
|
14
4
|
export declare enum GlobalRole {
|
|
15
5
|
Developer = "Developer"
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './external/vars';
|
|
|
6
6
|
export * from './classes/permissions';
|
|
7
7
|
export * from './classes/categories';
|
|
8
8
|
export * from './classes/flashcards';
|
|
9
|
+
export * from './classes/analytics';
|
|
9
10
|
export * from './classes/calendar';
|
|
10
11
|
export * from './classes/sessions';
|
|
11
12
|
export * from './classes/invites';
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ __exportStar(require("./external/vars"), exports);
|
|
|
22
22
|
__exportStar(require("./classes/permissions"), exports);
|
|
23
23
|
__exportStar(require("./classes/categories"), exports);
|
|
24
24
|
__exportStar(require("./classes/flashcards"), exports);
|
|
25
|
+
__exportStar(require("./classes/analytics"), exports);
|
|
25
26
|
__exportStar(require("./classes/calendar"), exports);
|
|
26
27
|
__exportStar(require("./classes/sessions"), exports);
|
|
27
28
|
__exportStar(require("./classes/invites"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/types.ts","../src/classes/admin.ts","../src/classes/boards.ts","../src/classes/calendar.ts","../src/classes/categories.ts","../src/classes/files.ts","../src/classes/flashcards.ts","../src/classes/groups.ts","../src/classes/invites.ts","../src/classes/metrics.ts","../src/classes/permissions.ts","../src/classes/sessions.ts","../src/classes/users.ts","../src/classes/utils.ts","../src/core/manager.ts","../src/core/utils.ts","../src/external/types.ts","../src/external/vars.ts"],"version":"5.9.2"}
|
|
1
|
+
{"root":["../src/index.ts","../src/types.ts","../src/classes/admin.ts","../src/classes/analytics.ts","../src/classes/boards.ts","../src/classes/calendar.ts","../src/classes/categories.ts","../src/classes/files.ts","../src/classes/flashcards.ts","../src/classes/groups.ts","../src/classes/invites.ts","../src/classes/metrics.ts","../src/classes/permissions.ts","../src/classes/sessions.ts","../src/classes/users.ts","../src/classes/utils.ts","../src/core/manager.ts","../src/core/utils.ts","../src/external/types.ts","../src/external/vars.ts"],"version":"5.9.2"}
|
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -47,6 +47,33 @@ model Board {
|
|
|
47
47
|
|
|
48
48
|
files File[]
|
|
49
49
|
boardPermission BoardPermission[]
|
|
50
|
+
userActivities UserBoardActivity[]
|
|
51
|
+
|
|
52
|
+
@@index([categoryId])
|
|
53
|
+
@@index([index])
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
model UserBoardActivity {
|
|
57
|
+
dbId String @id @default(uuid())
|
|
58
|
+
|
|
59
|
+
userId String
|
|
60
|
+
user User @relation(fields: [userId], references: [userId], onDelete: Cascade)
|
|
61
|
+
|
|
62
|
+
boardId String
|
|
63
|
+
board Board @relation(fields: [boardId], references: [boardId], onDelete: Cascade)
|
|
64
|
+
|
|
65
|
+
totalSessions Int @default(0)
|
|
66
|
+
totalActiveSeconds Int @default(0)
|
|
67
|
+
|
|
68
|
+
totalActions Int @default(0)
|
|
69
|
+
lastActivityAt DateTime @default(now())
|
|
70
|
+
|
|
71
|
+
createdAt DateTime @default(now())
|
|
72
|
+
updatedAt DateTime @updatedAt
|
|
73
|
+
|
|
74
|
+
@@unique([userId, boardId])
|
|
75
|
+
@@index([boardId])
|
|
76
|
+
@@index([lastActivityAt])
|
|
50
77
|
}
|
|
51
78
|
|
|
52
79
|
model File {
|
|
@@ -59,4 +86,6 @@ model File {
|
|
|
59
86
|
|
|
60
87
|
boardId String
|
|
61
88
|
board Board @relation(fields: [boardId], references: [boardId], onDelete: Cascade)
|
|
89
|
+
|
|
90
|
+
@@index([boardId])
|
|
62
91
|
}
|
|
@@ -10,7 +10,7 @@ model User {
|
|
|
10
10
|
|
|
11
11
|
mainLoginType Platforms
|
|
12
12
|
loginMethods LoginMethod[]
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
invitedBy String?
|
|
15
15
|
registrationMethod RegistrationMethod @default(direct)
|
|
16
16
|
|
|
@@ -20,9 +20,10 @@ model User {
|
|
|
20
20
|
|
|
21
21
|
flashcardProgress DeckProgress[]
|
|
22
22
|
|
|
23
|
-
sessions
|
|
24
|
-
createdEvents
|
|
25
|
-
createdInvites
|
|
23
|
+
sessions Session[]
|
|
24
|
+
createdEvents Event[]
|
|
25
|
+
createdInvites Invite[]
|
|
26
|
+
boardActivities UserBoardActivity[]
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
model Session {
|