@excali-boards/boards-api-client 1.1.1-dev.3 → 1.1.1-dev.31

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 (69) hide show
  1. package/dist/{cjs/classes → classes}/admin.js +1 -1
  2. package/dist/{esm/classes → classes}/invites.d.ts +52 -23
  3. package/dist/{cjs/classes → classes}/invites.js +13 -1
  4. package/dist/{cjs/classes → classes}/metrics.d.ts +0 -1
  5. package/dist/{cjs/classes → classes}/permissions.d.ts +5 -6
  6. package/dist/classes/sessions.d.ts +50 -0
  7. package/dist/classes/sessions.js +36 -0
  8. package/dist/{esm/classes → classes}/users.d.ts +13 -7
  9. package/dist/{cjs/classes → classes}/users.js +7 -9
  10. package/dist/{cjs/core → core}/manager.d.ts +2 -2
  11. package/dist/{cjs/core → core}/manager.js +2 -2
  12. package/dist/{cjs/external → external}/types.d.ts +14 -1
  13. package/dist/{esm/external → external}/vars.d.ts +4 -1
  14. package/dist/{cjs/external → external}/vars.js +24 -3
  15. package/dist/{cjs/index.d.ts → index.d.ts} +1 -1
  16. package/dist/{cjs/index.js → index.js} +1 -1
  17. package/dist/tsconfig.tsbuildinfo +1 -0
  18. package/package.json +12 -23
  19. package/prisma/schema/schema.prisma +8 -0
  20. package/prisma/schema/user.prisma +20 -0
  21. package/dist/cjs/classes/auth.d.ts +0 -26
  22. package/dist/cjs/classes/auth.js +0 -18
  23. package/dist/cjs/classes/invites.d.ts +0 -82
  24. package/dist/cjs/classes/users.d.ts +0 -26
  25. package/dist/cjs/external/vars.d.ts +0 -92
  26. package/dist/cjs/tsconfig.tsbuildinfo +0 -1
  27. package/dist/esm/classes/admin.d.ts +0 -26
  28. package/dist/esm/classes/admin.js +0 -20
  29. package/dist/esm/classes/auth.d.ts +0 -26
  30. package/dist/esm/classes/auth.js +0 -14
  31. package/dist/esm/classes/boards.d.ts +0 -77
  32. package/dist/esm/classes/boards.js +0 -50
  33. package/dist/esm/classes/categories.d.ts +0 -56
  34. package/dist/esm/classes/categories.js +0 -44
  35. package/dist/esm/classes/groups.d.ts +0 -74
  36. package/dist/esm/classes/groups.js +0 -62
  37. package/dist/esm/classes/invites.js +0 -32
  38. package/dist/esm/classes/metrics.d.ts +0 -28
  39. package/dist/esm/classes/metrics.js +0 -20
  40. package/dist/esm/classes/permissions.d.ts +0 -50
  41. package/dist/esm/classes/permissions.js +0 -26
  42. package/dist/esm/classes/users.js +0 -28
  43. package/dist/esm/core/manager.d.ts +0 -34
  44. package/dist/esm/core/manager.js +0 -67
  45. package/dist/esm/core/utils.d.ts +0 -4
  46. package/dist/esm/core/utils.js +0 -21
  47. package/dist/esm/external/types.d.ts +0 -28
  48. package/dist/esm/external/types.js +0 -4
  49. package/dist/esm/external/vars.js +0 -42
  50. package/dist/esm/index.d.ts +0 -13
  51. package/dist/esm/index.js +0 -13
  52. package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
  53. package/dist/esm/types.d.ts +0 -54
  54. package/dist/esm/types.js +0 -1
  55. package/tsconfig.esm.json +0 -9
  56. /package/dist/{cjs/classes → classes}/admin.d.ts +0 -0
  57. /package/dist/{cjs/classes → classes}/boards.d.ts +0 -0
  58. /package/dist/{cjs/classes → classes}/boards.js +0 -0
  59. /package/dist/{cjs/classes → classes}/categories.d.ts +0 -0
  60. /package/dist/{cjs/classes → classes}/categories.js +0 -0
  61. /package/dist/{cjs/classes → classes}/groups.d.ts +0 -0
  62. /package/dist/{cjs/classes → classes}/groups.js +0 -0
  63. /package/dist/{cjs/classes → classes}/metrics.js +0 -0
  64. /package/dist/{cjs/classes → classes}/permissions.js +0 -0
  65. /package/dist/{cjs/core → core}/utils.d.ts +0 -0
  66. /package/dist/{cjs/core → core}/utils.js +0 -0
  67. /package/dist/{cjs/external → external}/types.js +0 -0
  68. /package/dist/{cjs/types.d.ts → types.d.ts} +0 -0
  69. /package/dist/{cjs/types.js → types.js} +0 -0
@@ -11,7 +11,7 @@ class APIAdmin {
11
11
  async getUsers({ auth }) {
12
12
  return await this.web.request({
13
13
  method: 'GET', auth,
14
- endpoint: this.web.qp('/users'),
14
+ endpoint: this.web.qp('/admin/users'),
15
15
  });
16
16
  }
17
17
  async getActiveRooms({ auth }) {
@@ -1,18 +1,29 @@
1
1
  import { BoardRole, CategoryRole, GroupRole } from '../external/vars';
2
- import { ResourceType } from '../external/types';
2
+ import { GrantedRoles, ResourceType } from '../external/types';
3
+ import { Invite } from '../../prisma/generated';
3
4
  import { BoardsManager } from '../core/manager';
4
5
  export declare class APIInvites {
5
6
  private web;
6
7
  constructor(web: BoardsManager);
7
- getInvites({ auth }: InvitesFunctionsInput['getInvites']): Promise<import("..").WebResponse<GetInvitesOutput>>;
8
+ getUserInvites({ auth }: InvitesFunctionsInput['getUserInvites']): Promise<import("..").WebResponse<GetUserInvitesOutput>>;
9
+ getResourceInvites({ auth, query }: InvitesFunctionsInput['getResourceInvites']): Promise<import("..").WebResponse<GetResourceInvitesOutput>>;
10
+ getInviteDetails({ auth, code }: InvitesFunctionsInput['getInviteDetails']): Promise<import("..").WebResponse<InviteDetails>>;
8
11
  createInvite({ auth, body }: InvitesFunctionsInput['createInvite']): Promise<import("..").WebResponse<CreateInviteOutput>>;
9
12
  useInvite({ auth, code }: InvitesFunctionsInput['useInvite']): Promise<import("..").WebResponse<UseInviteOutput>>;
10
13
  revokeInvite({ auth, code }: InvitesFunctionsInput['revokeInvite']): Promise<import("..").WebResponse<string>>;
11
14
  }
12
15
  export type InvitesFunctionsInput = {
13
- 'getInvites': {
16
+ 'getUserInvites': {
14
17
  auth: string;
15
18
  };
19
+ 'getResourceInvites': {
20
+ auth: string;
21
+ query: ViewInvitesQuery;
22
+ };
23
+ 'getInviteDetails': {
24
+ auth: string;
25
+ code: string;
26
+ };
16
27
  'createInvite': {
17
28
  auth: string;
18
29
  body: CreateInviteInput;
@@ -26,6 +37,12 @@ export type InvitesFunctionsInput = {
26
37
  code: string;
27
38
  };
28
39
  };
40
+ export type ViewInvitesQuery = {
41
+ type: ResourceType;
42
+ groupId?: string;
43
+ categoryId?: string;
44
+ boardId?: string;
45
+ };
29
46
  export type CreateInviteInput = {
30
47
  groupIds?: string[];
31
48
  categoryIds?: string[];
@@ -41,28 +58,13 @@ export type CreateInviteOutput = {
41
58
  expiresAt: string;
42
59
  maxUses: number;
43
60
  };
44
- export type GetInvitesOutput = {
45
- dbId: string;
46
- code: string;
47
- createdBy: string;
48
- expiresAt: string | null;
49
- maxUses: number | null;
50
- currentUses: number;
51
- groupIds: string[];
52
- categoryIds: string[];
53
- boardIds: string[];
54
- groupRole: GroupRole | null;
55
- categoryRole: CategoryRole | null;
56
- boardRole: BoardRole | null;
57
- createdAt: string;
58
- }[];
59
- export type GrantedRole = {
60
- type: ResourceType;
61
- resourceId: string;
62
- role: BoardRole | CategoryRole | GroupRole;
61
+ export type GetUserInvitesOutput = {
62
+ invites: InviteData[];
63
+ canInvite: boolean;
63
64
  };
65
+ export type GetResourceInvitesOutput = InviteData[];
64
66
  export type UseInviteOutput = {
65
- granted: GrantedRole[];
67
+ granted: GrantedRoles;
66
68
  details: {
67
69
  groups: {
68
70
  groupId: string;
@@ -80,3 +82,30 @@ export type UseInviteOutput = {
80
82
  }[];
81
83
  };
82
84
  };
85
+ export type InviteDetails = {
86
+ code: string;
87
+ expiresAt: string;
88
+ maxUses: number;
89
+ currentUses: number;
90
+ invitedBy: {
91
+ userId: string;
92
+ displayName: string;
93
+ avatarUrl: string | null;
94
+ };
95
+ };
96
+ export type InviteData = Pick<Invite, 'code' | 'expiresAt' | 'maxUses' | 'currentUses' | 'boardRole' | 'categoryRole' | 'groupRole'> & {
97
+ groups: {
98
+ groupId: string;
99
+ name: string;
100
+ }[];
101
+ categories: {
102
+ categoryId: string;
103
+ name: string;
104
+ groupId: string;
105
+ }[];
106
+ boards: {
107
+ boardId: string;
108
+ name: string;
109
+ categoryId: string;
110
+ }[];
111
+ };
@@ -8,12 +8,24 @@ class APIInvites {
8
8
  this.web = web;
9
9
  }
10
10
  // Methods.
11
- async getInvites({ auth }) {
11
+ async getUserInvites({ auth }) {
12
12
  return await this.web.request({
13
13
  method: 'GET', auth,
14
14
  endpoint: this.web.qp('/invites'),
15
15
  });
16
16
  }
17
+ async getResourceInvites({ auth, query }) {
18
+ return await this.web.request({
19
+ method: 'GET', auth,
20
+ endpoint: this.web.qp('/resources/invites', query),
21
+ });
22
+ }
23
+ async getInviteDetails({ auth, code }) {
24
+ return await this.web.request({
25
+ method: 'GET', auth,
26
+ endpoint: this.web.qp(`/invites/${code}`),
27
+ });
28
+ }
17
29
  async createInvite({ auth, body }) {
18
30
  return await this.web.request({
19
31
  method: 'POST', auth, body,
@@ -19,7 +19,6 @@ export type SystemStatus = {
19
19
  activeRooms: number;
20
20
  socketConnections: number;
21
21
  queuedFiles: number;
22
- cacheSize: number;
23
22
  totalUsers: number;
24
23
  totalInvites: number;
25
24
  totalBoards: number;
@@ -1,5 +1,5 @@
1
1
  import { BoardRole, CategoryRole, GroupRole } from '../external/vars';
2
- import { ResourceType } from '../external/types';
2
+ import { GrantedEntry, ResourceType } from '../external/types';
3
3
  import { BoardsManager } from '../core/manager';
4
4
  export declare class APIPermissions {
5
5
  private web;
@@ -24,23 +24,22 @@ export type PermissionsFunctionsInput = {
24
24
  };
25
25
  export type ViewPermissionsQuery = {
26
26
  type: ResourceType;
27
- groupId?: string;
28
- categoryId?: string;
29
- boardId?: string;
27
+ id: string;
30
28
  };
31
29
  export type ViewPermissionsOutput = {
32
30
  userId: string;
33
31
  email: string;
34
32
  displayName: string;
35
33
  avatarUrl: string | null;
34
+ permissions: GrantedEntry[];
36
35
  }[];
37
36
  export type GrantPermissionsInput = {
38
37
  userId: string;
39
38
  groupIds?: string[];
40
- categoryIds?: string[];
41
- boardIds?: string[];
42
39
  groupRole?: GroupRole;
40
+ categoryIds?: string[];
43
41
  categoryRole?: CategoryRole;
42
+ boardIds?: string[];
44
43
  boardRole?: BoardRole;
45
44
  };
46
45
  export type RevokePermissionsInput = {
@@ -0,0 +1,50 @@
1
+ import { Device, Platforms } from '../../prisma/generated/default';
2
+ import { BoardsManager } from '../core/manager';
3
+ export declare class APISessions {
4
+ private web;
5
+ constructor(web: BoardsManager);
6
+ createSession({ auth, body }: SessionsFunctionsInput['createSession']): Promise<import("..").WebResponse<CreateSessionOutput>>;
7
+ getAllSessions({ auth }: SessionsFunctionsInput['getAllSessions']): Promise<import("..").WebResponse<SessionsOutput>>;
8
+ deleteSession({ auth, dbId }: SessionsFunctionsInput['deleteSession']): Promise<import("..").WebResponse<string>>;
9
+ deleteAllSessions({ auth }: SessionsFunctionsInput['deleteAllSessions']): Promise<import("..").WebResponse<string>>;
10
+ }
11
+ export type SessionsFunctionsInput = {
12
+ 'createSession': {
13
+ auth: string;
14
+ body: CreateSessionInput;
15
+ };
16
+ 'getAllSessions': {
17
+ auth: string;
18
+ };
19
+ 'deleteSession': {
20
+ auth: string;
21
+ dbId: string;
22
+ };
23
+ 'deleteAllSessions': {
24
+ auth: string;
25
+ };
26
+ };
27
+ export type CreateSessionInput = {
28
+ ip?: string;
29
+ email: string;
30
+ platform: Platforms;
31
+ displayName: string;
32
+ avatarUrl?: string | null;
33
+ currentUserId?: string;
34
+ };
35
+ export type CreateSessionOutput = {
36
+ token: string;
37
+ expiresAt: Date;
38
+ };
39
+ export type SessionsOutput = {
40
+ activeDbId: string;
41
+ sessions: {
42
+ location: string | null;
43
+ device: Device | null;
44
+ tokenPreview: string;
45
+ dbId: string;
46
+ expiresAt: Date;
47
+ createdAt: Date;
48
+ lastUsed: Date;
49
+ }[];
50
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APISessions = void 0;
4
+ // Data.
5
+ class APISessions {
6
+ web;
7
+ constructor(web) {
8
+ this.web = web;
9
+ }
10
+ // Methods.
11
+ async createSession({ auth, body }) {
12
+ return await this.web.request({
13
+ method: 'POST', auth, body,
14
+ endpoint: this.web.qp('/sessions'),
15
+ });
16
+ }
17
+ async getAllSessions({ auth }) {
18
+ return await this.web.request({
19
+ method: 'GET', auth,
20
+ endpoint: this.web.qp('/sessions'),
21
+ });
22
+ }
23
+ async deleteSession({ auth, dbId }) {
24
+ return await this.web.request({
25
+ method: 'DELETE', auth, body: { dbId },
26
+ endpoint: this.web.qp('/sessions'),
27
+ });
28
+ }
29
+ async deleteAllSessions({ auth }) {
30
+ return await this.web.request({
31
+ method: 'DELETE', auth,
32
+ endpoint: this.web.qp('/sessions/all'),
33
+ });
34
+ }
35
+ }
36
+ exports.APISessions = APISessions;
@@ -1,26 +1,32 @@
1
+ import { Platforms } from '../../prisma/generated/default';
1
2
  import { DBUserPartialType } from '../external/vars';
2
3
  import { BoardsManager } from '../core/manager';
3
- import { Platforms } from '@prisma/generated';
4
4
  export declare class APIUsers {
5
5
  private web;
6
6
  constructor(web: BoardsManager);
7
7
  getCurrentUser({ auth }: UsersFunctionsInput['getCurrentUser']): Promise<import("..").WebResponse<GetUsersOutput>>;
8
- changeMainPlatform({ auth, newMainPlatform }: UsersFunctionsInput['changeMainPlatform']): Promise<import("..").WebResponse<string>>;
9
- changeMainGroup({ auth, newMainGroupId }: UsersFunctionsInput['changeMainGroup']): Promise<import("..").WebResponse<string>>;
8
+ updateUser({ auth, body }: UsersFunctionsInput['updateUser']): Promise<import("..").WebResponse<string>>;
9
+ deleteAccount({ auth }: UsersFunctionsInput['deleteAccount']): Promise<import("..").WebResponse<void>>;
10
10
  }
11
11
  export type UsersFunctionsInput = {
12
12
  'getCurrentUser': {
13
13
  auth: string;
14
14
  };
15
- 'changeMainPlatform': {
15
+ 'updateUser': {
16
16
  auth: string;
17
- newMainPlatform: Platforms;
17
+ body: UserInput;
18
18
  };
19
- 'changeMainGroup': {
19
+ 'deleteAccount': {
20
+ auth: string;
21
+ };
22
+ 'isCurrentUserDev': {
20
23
  auth: string;
21
- newMainGroupId: string | null;
22
24
  };
23
25
  };
24
26
  export type GetUsersOutput = DBUserPartialType & {
25
27
  isDev: boolean;
26
28
  };
29
+ export type UserInput = {
30
+ mainGroupId?: string | null;
31
+ platform?: Platforms;
32
+ };
@@ -11,21 +11,19 @@ class APIUsers {
11
11
  async getCurrentUser({ auth }) {
12
12
  return await this.web.request({
13
13
  method: 'GET', auth,
14
- endpoint: this.web.qp('/users/current'),
14
+ endpoint: this.web.qp('/users'),
15
15
  });
16
16
  }
17
- async changeMainPlatform({ auth, newMainPlatform }) {
17
+ async updateUser({ auth, body }) {
18
18
  return await this.web.request({
19
- method: 'POST', auth,
20
- endpoint: this.web.qp('/users/change-main-platform'),
21
- body: { name: newMainPlatform },
19
+ method: 'PATCH', auth, body,
20
+ endpoint: this.web.qp('/users'),
22
21
  });
23
22
  }
24
- async changeMainGroup({ auth, newMainGroupId }) {
23
+ async deleteAccount({ auth }) {
25
24
  return await this.web.request({
26
- method: 'POST', auth,
27
- endpoint: this.web.qp('/users/change-main-group'),
28
- body: { groupId: newMainGroupId },
25
+ method: 'DELETE', auth,
26
+ endpoint: this.web.qp('/users'),
29
27
  });
30
28
  }
31
29
  }
@@ -2,24 +2,24 @@ import { PaginatedWebResponse, RequestMethod, WebResponse } from '../types';
2
2
  import { AxiosResponse, ResponseType } from 'axios';
3
3
  import { APIPermissions } from '../classes/permissions';
4
4
  import { APICategories } from '../classes/categories';
5
+ import { APISessions } from '../classes/sessions';
5
6
  import { APIMetrics } from '../classes/metrics';
6
7
  import { APIInvites } from '../classes/invites';
7
8
  import { APIGroups } from '../classes/groups';
8
9
  import { APIBoards } from '../classes/boards';
9
10
  import { APIUsers } from '../classes/users';
10
11
  import { APIAdmin } from '../classes/admin';
11
- import { APIAuth } from '../classes/auth';
12
12
  export declare class BoardsManager {
13
13
  url: string;
14
14
  readonly permissions: APIPermissions;
15
15
  readonly categories: APICategories;
16
+ readonly sessions: APISessions;
16
17
  readonly invites: APIInvites;
17
18
  readonly metrics: APIMetrics;
18
19
  readonly groups: APIGroups;
19
20
  readonly boards: APIBoards;
20
21
  readonly admin: APIAdmin;
21
22
  readonly users: APIUsers;
22
- readonly auth: APIAuth;
23
23
  constructor(url: string);
24
24
  request<O, T = unknown, R extends boolean = false, P extends boolean = false>(data: {
25
25
  endpoint: string;
@@ -7,25 +7,25 @@ exports.BoardsManager = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const permissions_1 = require("../classes/permissions");
9
9
  const categories_1 = require("../classes/categories");
10
+ const sessions_1 = require("../classes/sessions");
10
11
  const metrics_1 = require("../classes/metrics");
11
12
  const invites_1 = require("../classes/invites");
12
13
  const groups_1 = require("../classes/groups");
13
14
  const boards_1 = require("../classes/boards");
14
15
  const users_1 = require("../classes/users");
15
16
  const admin_1 = require("../classes/admin");
16
- const auth_1 = require("../classes/auth");
17
17
  const utils_1 = require("./utils");
18
18
  class BoardsManager {
19
19
  url;
20
20
  permissions = new permissions_1.APIPermissions(this);
21
21
  categories = new categories_1.APICategories(this);
22
+ sessions = new sessions_1.APISessions(this);
22
23
  invites = new invites_1.APIInvites(this);
23
24
  metrics = new metrics_1.APIMetrics(this);
24
25
  groups = new groups_1.APIGroups(this);
25
26
  boards = new boards_1.APIBoards(this);
26
27
  admin = new admin_1.APIAdmin(this);
27
28
  users = new users_1.APIUsers(this);
28
- auth = new auth_1.APIAuth(this);
29
29
  constructor(url) {
30
30
  this.url = url;
31
31
  }
@@ -1,5 +1,5 @@
1
1
  import { BoardRole, CategoryRole, GroupRole } from './vars';
2
- import { TSPrisma } from '@prisma/generated';
2
+ import { TSPrisma } from '../../prisma/generated/default';
3
3
  export type User = TSPrisma.TSPrismaModelsFull['User'];
4
4
  export type Group = TSPrisma.TSPrismaModelsFull['Group'];
5
5
  export type Category = TSPrisma.TSPrismaModelsFull['Category'];
@@ -17,6 +17,12 @@ export declare enum GlobalRole {
17
17
  export type AccessLevel = 'read' | 'write' | 'manage' | 'admin';
18
18
  export type ResourceType = 'group' | 'category' | 'board';
19
19
  export type GlobalResourceType = ResourceType | 'global';
20
+ export type GrantedRoles = GrantedRole[];
21
+ export type GrantedRole = {
22
+ type: ResourceType;
23
+ resourceId: string;
24
+ role: UserRole;
25
+ };
20
26
  export type SingleOutput = {
21
27
  id: string;
22
28
  name: string;
@@ -26,3 +32,10 @@ export type SingleOutput = {
26
32
  export type NameInput = {
27
33
  name: string;
28
34
  };
35
+ export type GrantedEntry = {
36
+ type: ResourceType;
37
+ role: UserRole;
38
+ resourceId: string;
39
+ basedOnType: ResourceType;
40
+ basedOnResourceId: string;
41
+ };
@@ -1,4 +1,5 @@
1
- import { Prisma } from '@prisma/generated';
1
+ import { Prisma } from '../../prisma/generated/default';
2
+ import { UserRole } from './types';
2
3
  export declare const DBUserSelectArgs: {
3
4
  select: {
4
5
  userId: true;
@@ -90,3 +91,5 @@ export declare enum GroupRole {
90
91
  GroupManager = "GroupManager",
91
92
  GroupAdmin = "GroupAdmin"
92
93
  }
94
+ export declare const SimplePermissionHierarchy: Record<string, number>;
95
+ export declare const PermissionHierarchy: Record<UserRole, number>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupRole = exports.CategoryRole = exports.BoardRole = exports.Platforms = exports.DBUserPartial = exports.DBUserSelectArgs = void 0;
4
- const generated_1 = require("@prisma/generated");
3
+ exports.PermissionHierarchy = exports.SimplePermissionHierarchy = exports.GroupRole = exports.CategoryRole = exports.BoardRole = exports.Platforms = exports.DBUserPartial = exports.DBUserSelectArgs = void 0;
4
+ const default_1 = require("../../prisma/generated/default");
5
+ const types_1 = require("./types");
5
6
  exports.DBUserSelectArgs = {
6
7
  select: {
7
8
  userId: true,
@@ -16,7 +17,7 @@ exports.DBUserSelectArgs = {
16
17
  loginMethods: { select: { platform: true, platformEmail: true } },
17
18
  },
18
19
  };
19
- exports.DBUserPartial = generated_1.Prisma.validator()(exports.DBUserSelectArgs);
20
+ exports.DBUserPartial = default_1.Prisma.validator()(exports.DBUserSelectArgs);
20
21
  var Platforms;
21
22
  (function (Platforms) {
22
23
  Platforms["Google"] = "Google";
@@ -43,3 +44,23 @@ var GroupRole;
43
44
  GroupRole["GroupManager"] = "GroupManager";
44
45
  GroupRole["GroupAdmin"] = "GroupAdmin";
45
46
  })(GroupRole || (exports.GroupRole = GroupRole = {}));
47
+ // Variables.
48
+ exports.SimplePermissionHierarchy = {
49
+ Viewer: 1,
50
+ Collaborator: 2,
51
+ Manager: 3,
52
+ Admin: 4,
53
+ };
54
+ exports.PermissionHierarchy = {
55
+ [BoardRole.BoardViewer]: 1,
56
+ [BoardRole.BoardCollaborator]: 2,
57
+ [CategoryRole.CategoryViewer]: 3,
58
+ [CategoryRole.CategoryCollaborator]: 4,
59
+ [CategoryRole.CategoryManager]: 5,
60
+ [CategoryRole.CategoryAdmin]: 6,
61
+ [GroupRole.GroupViewer]: 7,
62
+ [GroupRole.GroupCollaborator]: 8,
63
+ [GroupRole.GroupManager]: 9,
64
+ [GroupRole.GroupAdmin]: 10,
65
+ [types_1.GlobalRole.Developer]: 11,
66
+ };
@@ -4,10 +4,10 @@ export * from './external/types';
4
4
  export * from './external/vars';
5
5
  export * from './classes/permissions';
6
6
  export * from './classes/categories';
7
+ export * from './classes/sessions';
7
8
  export * from './classes/invites';
8
9
  export * from './classes/metrics';
9
10
  export * from './classes/groups';
10
11
  export * from './classes/boards';
11
12
  export * from './classes/admin';
12
13
  export * from './classes/users';
13
- export * from './classes/auth';
@@ -20,10 +20,10 @@ __exportStar(require("./external/types"), exports);
20
20
  __exportStar(require("./external/vars"), exports);
21
21
  __exportStar(require("./classes/permissions"), exports);
22
22
  __exportStar(require("./classes/categories"), exports);
23
+ __exportStar(require("./classes/sessions"), exports);
23
24
  __exportStar(require("./classes/invites"), exports);
24
25
  __exportStar(require("./classes/metrics"), exports);
25
26
  __exportStar(require("./classes/groups"), exports);
26
27
  __exportStar(require("./classes/boards"), exports);
27
28
  __exportStar(require("./classes/admin"), exports);
28
29
  __exportStar(require("./classes/users"), exports);
29
- __exportStar(require("./classes/auth"), exports);
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/types.ts","../src/classes/admin.ts","../src/classes/boards.ts","../src/classes/categories.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/core/manager.ts","../src/core/utils.ts","../src/external/types.ts","../src/external/vars.ts"],"version":"5.9.2"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1-dev.3",
2
+ "version": "1.1.1-dev.31",
3
3
  "name": "@excali-boards/boards-api-client",
4
4
  "description": "A simple API client for the Boards API.",
5
5
  "repository": "https://github.com/Excali-Boards/boards-api-client",
@@ -7,33 +7,22 @@
7
7
  "scripts": {
8
8
  "ts": "pnpm install typescript --save-dev -g",
9
9
  "init": "pnpm install && pnpm run build",
10
- "build": "tsc --build && tsc --build tsconfig.esm.json",
10
+ "build": "tsc --build",
11
11
  "watch": "tsc --watch",
12
12
  "lint": "eslint . --ext .ts",
13
13
  "postinstall": "prisma generate",
14
14
  "updates": "pnpm npm-check-updates -i --format group"
15
15
  },
16
- "main": "dist/cjs/index.js",
17
- "module": "dist/esm/index.js",
18
- "types": "dist/cjs/index.d.ts",
16
+ "main": "dist/index.js",
17
+ "types": "dist/index.d.ts",
19
18
  "license": "GPL-3.0",
20
- "exports": {
21
- ".": {
22
- "import": "./dist/esm/index.js",
23
- "require": "./dist/cjs/index.js",
24
- "types": "./dist/cjs/index.d.ts"
25
- },
26
- "./external": {
27
- "import": "./dist/esm/external/vars.js",
28
- "require": "./dist/cjs/external/vars.js",
29
- "types": "./dist/cjs/external/vars.d.ts"
30
- },
31
- "./prisma/generated/default": {
32
- "import": "./prisma/generated/default.js",
33
- "require": "./prisma/generated/default.js",
34
- "types": "./prisma/generated/default.d.ts"
35
- }
36
- },
19
+ "files": [
20
+ "dist",
21
+ "prisma/schema",
22
+ "prisma.config.ts",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
37
26
  "pnpm": {
38
27
  "onlyBuiltDependencies": [
39
28
  "@prisma/client",
@@ -58,4 +47,4 @@
58
47
  "ts-prisma": "1.3.3",
59
48
  "zod": "4.1.9"
60
49
  }
61
- }
50
+ }
@@ -19,6 +19,13 @@ enum Platforms {
19
19
  GitHub
20
20
  }
21
21
 
22
+ enum Device {
23
+ Desktop
24
+ Mobile
25
+ Tablet
26
+ Other
27
+ }
28
+
22
29
  // Separate role enums for each resource type
23
30
  enum BoardRole {
24
31
  BoardViewer // read-only to specific board
@@ -43,6 +50,7 @@ model AllEnumsModel {
43
50
  dbId String @id @default(uuid())
44
51
 
45
52
  platformEnum Platforms
53
+ deviceEnum Device
46
54
 
47
55
  boardRoleEnum BoardRole
48
56
  categoryRoleEnum CategoryRole
@@ -16,6 +16,26 @@ model User {
16
16
  boardPermissions BoardPermission[]
17
17
 
18
18
  createdInvites Invite[]
19
+ sessions Session[]
20
+ }
21
+
22
+ model Session {
23
+ dbId String @id @default(uuid())
24
+
25
+ token String @unique
26
+
27
+ device Device?
28
+ locationEncrypted String?
29
+
30
+ userId String
31
+ user User @relation(fields: [userId], references: [userId], onDelete: Cascade)
32
+
33
+ createdAt DateTime @default(now())
34
+ expiresAt DateTime
35
+ lastUsed DateTime @default(now())
36
+
37
+ @@index([userId])
38
+ @@index([expiresAt])
19
39
  }
20
40
 
21
41
  model LoginMethod {
@@ -1,26 +0,0 @@
1
- import { BoardsManager } from '../core/manager';
2
- import { Platforms } from '@prisma/generated';
3
- export declare class APIAuth {
4
- private web;
5
- constructor(web: BoardsManager);
6
- authenticate({ auth, body }: AuthFunctionsInput['authenticate']): Promise<import("..").WebResponse<AuthenticateOutput>>;
7
- }
8
- export type AuthFunctionsInput = {
9
- 'authenticate': {
10
- auth: string;
11
- body: AuthenticateInput;
12
- };
13
- };
14
- export type AuthenticateInput = {
15
- platform: Platforms;
16
- email: string;
17
- displayName: string;
18
- avatarUrl?: string | null;
19
- currentUserId?: string;
20
- };
21
- export type AuthenticateOutput = {
22
- email: string;
23
- displayName: string | null;
24
- avatarUrl: string | null;
25
- platform: Platforms;
26
- };