kitsas-library 0.1.21 → 0.1.23

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 (72) hide show
  1. package/README.md +33 -18
  2. package/lib/main/interfaces/index.d.ts +1 -0
  3. package/lib/main/interfaces/kitsasbook.interface.d.ts +54 -2
  4. package/lib/main/interfaces/kitsasconnection.interface.d.ts +32 -4
  5. package/lib/main/interfaces/kitsasoffice.interface.d.ts +75 -0
  6. package/lib/main/moc/mockitsasbook.d.ts +6 -3
  7. package/lib/main/moc/mockitsasbook.js +60 -5
  8. package/lib/main/moc/mockitsasoffice.d.ts +14 -0
  9. package/lib/main/moc/mockitsasoffice.js +120 -2
  10. package/lib/main/moc/mockkitsasconnection.d.ts +7 -2
  11. package/lib/main/moc/mockkitsasconnection.js +55 -28
  12. package/lib/main/services/kitsasbook.d.ts +8 -2
  13. package/lib/main/services/kitsasbook.js +27 -2
  14. package/lib/main/services/kitsasconnection.d.ts +7 -2
  15. package/lib/main/services/kitsasconnection.js +23 -3
  16. package/lib/main/services/kitsasoffice.d.ts +14 -0
  17. package/lib/main/services/kitsasoffice.js +86 -10
  18. package/lib/main/services/kitsasservice.d.ts +30 -0
  19. package/lib/main/services/kitsasservice.js +31 -1
  20. package/lib/main/types/books.d.ts +18 -0
  21. package/lib/main/types/books.js +8 -1
  22. package/lib/main/types/certificate.d.ts +24 -0
  23. package/lib/main/types/certificate.js +12 -0
  24. package/lib/main/types/index.d.ts +6 -0
  25. package/lib/main/types/index.js +7 -1
  26. package/lib/main/types/invoice.d.ts +142 -0
  27. package/lib/main/types/invoice.js +36 -0
  28. package/lib/main/types/office.d.ts +3 -0
  29. package/lib/main/types/product.d.ts +16 -0
  30. package/lib/main/types/product.js +3 -0
  31. package/lib/main/types/roles.d.ts +6 -0
  32. package/lib/main/types/roles.js +11 -0
  33. package/lib/main/types/transactions.d.ts +18 -0
  34. package/lib/main/types/transactions.js +3 -0
  35. package/lib/main/types/user.d.ts +19 -1
  36. package/lib/main/types/user.js +20 -1
  37. package/lib/module/interfaces/index.d.ts +1 -0
  38. package/lib/module/interfaces/kitsasbook.interface.d.ts +54 -2
  39. package/lib/module/interfaces/kitsasconnection.interface.d.ts +32 -4
  40. package/lib/module/interfaces/kitsasoffice.interface.d.ts +75 -0
  41. package/lib/module/moc/mockitsasbook.d.ts +6 -3
  42. package/lib/module/moc/mockitsasbook.js +62 -7
  43. package/lib/module/moc/mockitsasoffice.d.ts +14 -0
  44. package/lib/module/moc/mockitsasoffice.js +120 -2
  45. package/lib/module/moc/mockkitsasconnection.d.ts +7 -2
  46. package/lib/module/moc/mockkitsasconnection.js +55 -28
  47. package/lib/module/services/kitsasbook.d.ts +8 -2
  48. package/lib/module/services/kitsasbook.js +27 -2
  49. package/lib/module/services/kitsasconnection.d.ts +7 -2
  50. package/lib/module/services/kitsasconnection.js +23 -3
  51. package/lib/module/services/kitsasoffice.d.ts +14 -0
  52. package/lib/module/services/kitsasoffice.js +86 -10
  53. package/lib/module/services/kitsasservice.d.ts +30 -0
  54. package/lib/module/services/kitsasservice.js +31 -1
  55. package/lib/module/types/books.d.ts +18 -0
  56. package/lib/module/types/books.js +7 -2
  57. package/lib/module/types/certificate.d.ts +24 -0
  58. package/lib/module/types/certificate.js +9 -0
  59. package/lib/module/types/index.d.ts +6 -0
  60. package/lib/module/types/index.js +7 -1
  61. package/lib/module/types/invoice.d.ts +142 -0
  62. package/lib/module/types/invoice.js +33 -0
  63. package/lib/module/types/office.d.ts +3 -0
  64. package/lib/module/types/product.d.ts +16 -0
  65. package/lib/module/types/product.js +2 -0
  66. package/lib/module/types/roles.d.ts +6 -0
  67. package/lib/module/types/roles.js +8 -0
  68. package/lib/module/types/transactions.d.ts +18 -0
  69. package/lib/module/types/transactions.js +2 -0
  70. package/lib/module/types/user.d.ts +19 -1
  71. package/lib/module/types/user.js +19 -2
  72. package/package.json +2 -1
package/README.md CHANGED
@@ -1,12 +1,27 @@
1
1
  # Kitsas Library
2
2
 
3
+ Library to connect Kitsas Server. See also [template to Kitsas addon](https://github.com/Kitsas-Oy/kitsas-addon-template).
4
+
5
+ This typedoc documentation is available at [GitHub pages](https://kitsas-oy.github.io/kitsaslibrary/index.html)
6
+
3
7
  ## Installation
4
8
 
5
9
  ```bash
6
10
  npm install kitsas-library
7
11
  ```
8
12
 
9
- ## Usage
13
+ ## Main components
14
+
15
+ | Component | Usage |
16
+ | --------------------------------- | ---------------------------------------- |
17
+ | {@link KitsasService} | Static class to connect server |
18
+ | {@link KitsasConnectionInterface} | General operations |
19
+ | {@link KitsasOfficeInterface} | Accounting office, bookshelves and roles |
20
+ | {@link KitsasBookInterface} | Accounting interface |
21
+
22
+ First create a connection with {@link KitsasService}.
23
+
24
+ ## Some examples
10
25
 
11
26
  ### Login to Kitsas
12
27
 
@@ -19,23 +34,6 @@ const connection = await KitsasService.connect({
19
34
  });
20
35
  ```
21
36
 
22
- #### Using mock implementation
23
-
24
- ```typescript
25
- const connection = await KitsasService.connect({
26
- username: 'test@kitsas.fi',
27
- password: 'Test+12345',
28
- mock: true,
29
- });
30
-
31
- const connectionWith2FA = await KitsasService.connect({
32
- username: 'use2fa@kitsas.fi',
33
- password: 'Test+12345',
34
- code: '123456',
35
- mock: true,
36
- });
37
- ```
38
-
39
37
  ### Get list of books
40
38
 
41
39
  ```typescript
@@ -54,3 +52,20 @@ const book = await connection.getBook('92e71a5d-1c33-4cc9-aa83-281c05c8e4c2');
54
52
  const document : CreateVoucherDto = { ... } ;
55
53
  await book.saveVoucher(document, []);
56
54
  ```
55
+
56
+ ### Using mock implementation
57
+
58
+ ```typescript
59
+ const connection = await KitsasService.connect({
60
+ username: 'test@kitsas.fi',
61
+ password: 'Test+12345',
62
+ mock: true,
63
+ });
64
+
65
+ const connectionWith2FA = await KitsasService.connect({
66
+ username: 'use2fa@kitsas.fi',
67
+ password: 'Test+12345',
68
+ code: '123456',
69
+ mock: true,
70
+ });
71
+ ```
@@ -1,2 +1,3 @@
1
1
  export { KitsasConnectionInterface } from './kitsasconnection.interface';
2
2
  export { KitsasOfficeInterface } from './kitsasoffice.interface';
3
+ export { KitsasBookInterface } from './kitsasbook.interface';
@@ -1,8 +1,60 @@
1
- import { Account, AttachmentDto, CreateVoucherDto, Dimension, FiscalYear } from '../types';
1
+ import { Account, AttachmentDto, CreateVoucherDto, CreateVoucherResponseDto, Dimension, FiscalYear } from '../types';
2
+ import { CreateInvoiceResponseDto, InvoiceDto } from '../types/invoice';
3
+ import { Product } from '../types/product';
4
+ import { TransactionEntryDto } from '../types/transactions';
5
+ /**
6
+ * Interface representing an accounting of the organization.
7
+ *
8
+ * You get KitsasBookInterface from {@link KitsasOfficeInterface.getBooks}
9
+ */
2
10
  export interface KitsasBookInterface {
11
+ /**
12
+ * Get the book ID.
13
+ * @returns The book ID as a string.
14
+ */
3
15
  getBookId(): string;
16
+ /**
17
+ * Get the accounting accounts.
18
+ * @returns A promise that resolves to an array of Account objects.
19
+ */
4
20
  getAccounts(): Promise<Account[]>;
21
+ /**
22
+ * Get the dimensions.
23
+ * @returns A promise that resolves to an array of Dimension objects.
24
+ */
5
25
  getDimensions(): Promise<Dimension[]>;
26
+ /**
27
+ * Get the fiscal years.
28
+ * @returns A promise that resolves to an array of FiscalYear objects.
29
+ */
6
30
  getFiscalYears(): Promise<FiscalYear[]>;
7
- saveVoucher(voucher: CreateVoucherDto, attachments: AttachmentDto[]): Promise<string>;
31
+ /**
32
+ * Save a voucher.
33
+ * @param voucher - The voucher to save.
34
+ * @param attachments - The attachments associated with the voucher.
35
+ * @returns A promise that resolves to a CreateVoucherResponseDto object.
36
+ */
37
+ saveVoucher(voucher: CreateVoucherDto, attachments: AttachmentDto[]): Promise<CreateVoucherResponseDto>;
38
+ /**
39
+ * Save an invoice.
40
+ * @param invoice - The invoice to save.
41
+ * @param attachments - The attachments associated with the invoice.
42
+ * @returns A promise that resolves to a CreateInvoiceResponseDto object.
43
+ */
44
+ saveInvoice(invoice: InvoiceDto, attachments: AttachmentDto[]): Promise<CreateInvoiceResponseDto>;
45
+ /**
46
+ * Save transactions.
47
+ * @param iban - The IBAN of the bank account.
48
+ * @param startDate - The start date of the transactions.
49
+ * @param endDate - The end date of the transactions.
50
+ * @param entries - The transaction entries.
51
+ * @param original - The original object.
52
+ * @returns A promise that resolves to a CreateVoucherResponseDto object.
53
+ */
54
+ saveTransactions(iban: string, startDate: Date, endDate: Date, entries: TransactionEntryDto[], original: object): Promise<CreateVoucherResponseDto>;
55
+ /**
56
+ * Get the products.
57
+ * @returns A promise that resolves to an array of Product objects.
58
+ */
59
+ getProducts(): Promise<Product[]>;
8
60
  }
@@ -1,9 +1,20 @@
1
1
  import { AddonCallInfo, AddonInfoDto, AddonListedDto, AddonLogDto, LanguageString, LogStatus, Notification, NotificationType, Right } from '../types';
2
- import { AddBookResponse, BookListItem } from '../types/books';
2
+ import { AddBookResponse, BookListItem, BookOpenCountItem, OrganizationStatusResponse } from '../types/books';
3
3
  import { OfficeInList, OfficeUser } from '../types/office';
4
4
  import { PermissionPatch } from '../types/rights';
5
+ import { UserListItem } from '../types/user';
5
6
  import { KitsasBookInterface } from './kitsasbook.interface';
6
7
  import { KitsasOfficeInterface } from './kitsasoffice.interface';
8
+ /**
9
+ * Connection to Kitsas Server
10
+ *
11
+ * Use {@link KitsasConnection.login} to create a new connection
12
+ *
13
+ * You can get {@link KitsasOfficeInterface} from {@link getOffice}
14
+ * and {@link KitsasBookInterface} from {@link getBook}
15
+ *
16
+ *
17
+ */
7
18
  export interface KitsasConnectionInterface {
8
19
  /**
9
20
  * Get current user's name
@@ -21,11 +32,12 @@ export interface KitsasConnectionInterface {
21
32
  */
22
33
  getOffice(id: string): Promise<KitsasOfficeInterface>;
23
34
  /**
24
- * Get list of books
25
- * @param target Office, user or bookshelf id
35
+ * Get list of books user has access to
36
+ * To list book of a specific office, use getOffice(id).getBooks()
37
+ * To list books of a specific bookshelf, use getOffice(id).getBooks(bookshelfId)
26
38
  * @returns List of books
27
39
  */
28
- getBooks(target?: string): Promise<BookListItem[]>;
40
+ getBooks(): Promise<BookListItem[]>;
29
41
  /**
30
42
  * Add a new book (organization for bookkeeping)
31
43
  * @param bookshelfId
@@ -38,6 +50,16 @@ export interface KitsasConnectionInterface {
38
50
  * @param bookId
39
51
  */
40
52
  getBook(bookId: string): Promise<KitsasBookInterface>;
53
+ /**
54
+ * Delete a book
55
+ * @param bookId
56
+ */
57
+ deleteBook(bookId: string): Promise<void>;
58
+ /**
59
+ * Get organization status (FREE, ACTIVE, INVALID) and registered name
60
+ * @param businessId Business id
61
+ */
62
+ getOrganizationStatus(businessId: string): Promise<OrganizationStatusResponse>;
41
63
  /**
42
64
  * List users and their roles
43
65
  * @param target Office, bookshelf or book id
@@ -115,4 +137,10 @@ export interface KitsasConnectionInterface {
115
137
  * @param addonId Addon id
116
138
  */
117
139
  getNotifications(bookId: string, addonId?: string): Promise<Notification[]>;
140
+ /**
141
+ * Find user by email
142
+ * @param email Email address
143
+ */
144
+ findUserByEmail(email: string): Promise<UserListItem | undefined>;
145
+ getBookOpenCounts(bookId: string): Promise<BookOpenCountItem[]>;
118
146
  }
@@ -1,6 +1,12 @@
1
1
  import { BookListItem, LanguageString } from '../types';
2
+ import { CertificateFetchResult, CertificateStatusInformation } from '../types/certificate';
2
3
  import { Bookshelf, OfficeRole } from '../types/office';
3
4
  import { UserListItem } from '../types/user';
5
+ /**
6
+ * Interface to office, role and bookshelf management
7
+ *
8
+ * You get KitsasOfficeInterface from {@link KitsasConnectionInterface.getOffice}
9
+ */
4
10
  export interface KitsasOfficeInterface {
5
11
  /**
6
12
  * Get the ID of the office.
@@ -23,6 +29,10 @@ export interface KitsasOfficeInterface {
23
29
  * Get roles of the office
24
30
  */
25
31
  getRoles(): OfficeRole[];
32
+ /**
33
+ * Refresh office data
34
+ */
35
+ refresh(): Promise<void>;
26
36
  /**
27
37
  * Add a role
28
38
  *
@@ -46,8 +56,73 @@ export interface KitsasOfficeInterface {
46
56
  * Get bookshelves of the office
47
57
  */
48
58
  getBookshelves(): Bookshelf[];
59
+ /**
60
+ * Add new bookshelf
61
+ * @param name Name of bookshelf
62
+ * @param parentId Id of parent bookshelf, or undefined if top level
63
+ */
64
+ addBookshelf(name: string, parentId?: string): Promise<Bookshelf>;
65
+ /**
66
+ * Remove bookshelf
67
+ * @param id Bookshelf id
68
+ */
69
+ deleteBookshelf(id: string): Promise<void>;
70
+ /**
71
+ * Rename bookshelf
72
+ * @param id Bookshelf id
73
+ * @param name New name for bookshelf
74
+ */
75
+ renameBookshelf(id: string, name: string): Promise<Bookshelf>;
76
+ /**
77
+ * Move bookshef
78
+ * @param id
79
+ * @param newParentId
80
+ */
81
+ moveBookShelf(id: string, newParentId: string): Promise<Bookshelf>;
49
82
  /**
50
83
  * Get users of the office
51
84
  */
52
85
  getUsers(): Promise<UserListItem[]>;
86
+ /**
87
+ * Add a new user
88
+ *
89
+ * User should not exist in the system
90
+ *
91
+ * @param name User's name
92
+ * @param email User's email address
93
+ * @param customer Is customer of accounting office
94
+ * @param invite Send invitation email to user
95
+ */
96
+ addUser(name: string, email: string, customer: boolean, invite: boolean): Promise<UserListItem>;
97
+ /**
98
+ * Delete a user
99
+ * @param id
100
+ */
101
+ deleteUser(id: string): Promise<void>;
102
+ /**
103
+ * Move book to another bookshelf
104
+ * @param bookId Book id
105
+ * @param bookshelfId Destination bookshelf id
106
+ */
107
+ moveBook(bookId: string, bookshelfId: string): Promise<void>;
108
+ /**
109
+ * Change plan of a book
110
+ * @param bookId Book id
111
+ * @param planId Plan id
112
+ */
113
+ changePlan(bookId: string, planId: number): Promise<void>;
114
+ /**
115
+ * Get information about the certificate
116
+ */
117
+ getCertificateInformation(): CertificateStatusInformation;
118
+ /**
119
+ * Fetch a new Tulorekisteri cetificate
120
+ * @param transferId
121
+ * @param password
122
+ */
123
+ installCertificate(transferId: string, password: string): Promise<CertificateFetchResult>;
124
+ /**
125
+ * Remove the current Tulorekisteri cetificate
126
+ */
127
+ removeCertificate(): Promise<void>;
53
128
  }
@@ -1,11 +1,14 @@
1
1
  import { KitsasBookInterface } from '../interfaces/kitsasbook.interface';
2
- import { Account, CreateVoucherDto, Dimension, FiscalYear } from '../types';
2
+ import { Account, AttachmentDto, CreateInvoiceResponseDto, CreateVoucherDto, CreateVoucherResponseDto, Dimension, FiscalYear, InvoiceDto, Product, TransactionEntryDto } from '../types';
3
3
  export declare class MockKitsasBook implements KitsasBookInterface {
4
4
  constructor(id: string);
5
5
  getDimensions(): Promise<Dimension[]>;
6
- saveVoucher(_voucher: CreateVoucherDto): Promise<string>;
7
- private bookId;
6
+ saveVoucher(_voucher: CreateVoucherDto, _attachments: AttachmentDto[]): Promise<CreateVoucherResponseDto>;
7
+ saveInvoice(invoice: InvoiceDto, _attachments: AttachmentDto[]): Promise<CreateInvoiceResponseDto>;
8
+ saveTransactions(_iban: string, _startDate: Date, _endDate: Date, _entries: TransactionEntryDto[], _original: object): Promise<CreateVoucherResponseDto>;
8
9
  getBookId(): string;
9
10
  getAccounts(): Promise<Account[]>;
10
11
  getFiscalYears(): Promise<FiscalYear[]>;
12
+ getProducts(): Promise<Product[]>;
13
+ private bookId;
11
14
  }
@@ -34,9 +34,42 @@ class MockKitsasBook {
34
34
  },
35
35
  ]);
36
36
  }
37
+ saveVoucher(
37
38
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
- saveVoucher(_voucher) {
39
- return Promise.resolve('fb6a9d86-278d-4f69-8887-b4f0b587a7cd');
39
+ _voucher,
40
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
41
+ _attachments) {
42
+ return Promise.resolve({
43
+ id: 'fb6a9d86-278d-4f69-8887-b4f0b587a7cd',
44
+ data: {},
45
+ });
46
+ }
47
+ saveInvoice(invoice,
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ _attachments) {
50
+ return Promise.resolve({
51
+ voucher: {
52
+ id: 'fb6a9d86-278d-4f69-8887-b4f0b587a7cd',
53
+ data: {},
54
+ },
55
+ invoice,
56
+ });
57
+ }
58
+ saveTransactions(
59
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
60
+ _iban,
61
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
62
+ _startDate,
63
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
+ _endDate,
65
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
66
+ _entries,
67
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
68
+ _original) {
69
+ return Promise.resolve({
70
+ id: 'fb6a9d86-278d-4f69-8887-b4f0b587a7cd',
71
+ data: {},
72
+ });
40
73
  }
41
74
  getBookId() {
42
75
  return this.bookId;
@@ -51,7 +84,7 @@ class MockKitsasBook {
51
84
  ]);
52
85
  }
53
86
  async getFiscalYears() {
54
- return [
87
+ return Promise.resolve([
55
88
  {
56
89
  id: '1',
57
90
  startDate: new Date('2020-01-01'),
@@ -67,8 +100,30 @@ class MockKitsasBook {
67
100
  startDate: new Date('2022-01-01'),
68
101
  endDate: new Date('2022-12-31'),
69
102
  },
70
- ];
103
+ ]);
104
+ }
105
+ async getProducts() {
106
+ return Promise.resolve([
107
+ {
108
+ id: '1',
109
+ code: 'PROD1',
110
+ name: { fi: 'Tuote 1', sv: 'Produkt 1', en: 'Product 1' },
111
+ unit: {
112
+ code: 'C62',
113
+ name: { fi: 'Kappale', sv: 'Stycke', en: 'Piece' },
114
+ },
115
+ vat: {
116
+ code: types_1.InvoiceVatCodeEnum.DOMESTIC,
117
+ percent: 24,
118
+ },
119
+ accounting: {
120
+ account: '31000',
121
+ dimensions: ['0'],
122
+ },
123
+ price: 100,
124
+ },
125
+ ]);
71
126
  }
72
127
  }
73
128
  exports.MockKitsasBook = MockKitsasBook;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja2l0c2FzYm9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2MvbW9ja2l0c2FzYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvQ0FNa0I7QUFFbEIsTUFBYSxjQUFjO0lBQ3pCLFlBQVksRUFBVTtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRTtnQkFDcEQsSUFBSSxFQUFFLHFCQUFhLENBQUMsT0FBTzthQUM1QjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLElBQUksRUFBRTtvQkFDSixFQUFFLEVBQUUsaUJBQWlCO29CQUNyQixFQUFFLEVBQUUsZ0JBQWdCO29CQUNwQixFQUFFLEVBQUUsYUFBYTtpQkFDbEI7Z0JBQ0QsSUFBSSxFQUFFLHFCQUFhLENBQUMsV0FBVzthQUNoQztZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFO2dCQUN0RCxJQUFJLEVBQUUscUJBQWEsQ0FBQyxPQUFPO2FBQzVCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLEdBQUc7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxxQkFBYSxDQUFDLE9BQU87YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsNkRBQTZEO0lBQzdELFdBQVcsQ0FBQyxRQUEwQjtRQUNwQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBSUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQjtnQkFDRSxNQUFNLEVBQUUsT0FBTztnQkFDZixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtnQkFDdEQsUUFBUSxFQUFFLEdBQUc7YUFDZDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYztRQUNsQixPQUFPO1lBQ0w7Z0JBQ0UsRUFBRSxFQUFFLEdBQUc7Z0JBQ1AsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQzthQUNoQztZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDaEM7WUFDRDtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ2hDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXhFRCx3Q0F3RUMifQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja2l0c2FzYm9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2MvbW9ja2l0c2FzYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvQ0Fha0I7QUFFbEIsTUFBYSxjQUFjO0lBQ3pCLFlBQVksRUFBVTtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRTtnQkFDcEQsSUFBSSxFQUFFLHFCQUFhLENBQUMsT0FBTzthQUM1QjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLElBQUksRUFBRTtvQkFDSixFQUFFLEVBQUUsaUJBQWlCO29CQUNyQixFQUFFLEVBQUUsZ0JBQWdCO29CQUNwQixFQUFFLEVBQUUsYUFBYTtpQkFDbEI7Z0JBQ0QsSUFBSSxFQUFFLHFCQUFhLENBQUMsV0FBVzthQUNoQztZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFO2dCQUN0RCxJQUFJLEVBQUUscUJBQWEsQ0FBQyxPQUFPO2FBQzVCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLEdBQUc7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxxQkFBYSxDQUFDLE9BQU87YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztJQUNULDZEQUE2RDtJQUM3RCxRQUEwQjtJQUMxQiw2REFBNkQ7SUFDN0QsWUFBNkI7UUFFN0IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEVBQUUsRUFBRSxzQ0FBc0M7WUFDMUMsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUNULE9BQW1CO0lBQ25CLDZEQUE2RDtJQUM3RCxZQUE2QjtRQUU3QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLElBQUksRUFBRSxFQUFFO2FBQ1Q7WUFDRCxPQUFPO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQjtJQUNkLDZEQUE2RDtJQUM3RCxLQUFhO0lBQ2IsNkRBQTZEO0lBQzdELFVBQWdCO0lBQ2hCLDZEQUE2RDtJQUM3RCxRQUFjO0lBQ2QsNkRBQTZEO0lBQzdELFFBQStCO0lBQy9CLDZEQUE2RDtJQUM3RCxTQUFpQjtRQUVqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsRUFBRSxFQUFFLHNDQUFzQztZQUMxQyxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3JCO2dCQUNFLE1BQU0sRUFBRSxPQUFPO2dCQUNmLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO2dCQUN0RCxRQUFRLEVBQUUsR0FBRzthQUNkO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNyQjtnQkFDRSxFQUFFLEVBQUUsR0FBRztnQkFDUCxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ2hDO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLEdBQUc7Z0JBQ1AsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQzthQUNoQztZQUNEO2dCQUNFLEVBQUUsRUFBRSxHQUFHO2dCQUNQLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDaEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVc7UUFDZixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckI7Z0JBQ0UsRUFBRSxFQUFFLEdBQUc7Z0JBQ1AsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUU7Z0JBQ3pELElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUUsS0FBSztvQkFDWCxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtpQkFDbkQ7Z0JBQ0QsR0FBRyxFQUFFO29CQUNILElBQUksRUFBRSwwQkFBa0IsQ0FBQyxRQUFRO29CQUNqQyxPQUFPLEVBQUUsRUFBRTtpQkFDWjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDbEI7Z0JBQ0QsS0FBSyxFQUFFLEdBQUc7YUFDWDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FHRjtBQXZJRCx3Q0F1SUMifQ==
@@ -1,6 +1,7 @@
1
1
  import { KitsasOfficeInterface } from '../interfaces/kitsasoffice.interface';
2
2
  import { LanguageString, OfficeRole } from '../types';
3
3
  import { BookListItem } from '../types/books';
4
+ import { CertificateFetchResult, CertificateStatusInformation } from '../types/certificate';
4
5
  import { Bookshelf } from '../types/office';
5
6
  import { UserListItem } from '../types/user';
6
7
  export declare class MockKitsasOffice implements KitsasOfficeInterface {
@@ -11,11 +12,24 @@ export declare class MockKitsasOffice implements KitsasOfficeInterface {
11
12
  getId(): string;
12
13
  getName(): string;
13
14
  getBusinessId(): string | undefined;
15
+ refresh(): Promise<void>;
14
16
  getBooks(_bookshelfId?: string): Promise<BookListItem[]>;
15
17
  getRoles(): OfficeRole[];
16
18
  getBookshelves(): Bookshelf[];
19
+ private static findBookShelf;
20
+ addBookshelf(name: string, parentId?: string | undefined): Promise<Bookshelf>;
21
+ deleteBookshelf(id: string): Promise<void>;
22
+ renameBookshelf(id: string, name: string): Promise<Bookshelf>;
17
23
  addRole(name: LanguageString, rights: string[]): Promise<OfficeRole>;
18
24
  editRole(id: string, name: LanguageString, rights: string[]): Promise<OfficeRole>;
19
25
  deleteRole(id: string): Promise<void>;
20
26
  getUsers(): Promise<UserListItem[]>;
27
+ addUser(name: string, email: string, customer: boolean, _invite: boolean): Promise<UserListItem>;
28
+ deleteUser(id: string): Promise<void>;
29
+ moveBook(bookId: string, bookshelfId: string): Promise<void>;
30
+ changePlan(bookId: string, planId: number): Promise<void>;
31
+ moveBookShelf(id: string, newParentId: string): Promise<Bookshelf>;
32
+ getCertificateInformation(): CertificateStatusInformation;
33
+ installCertificate(transferId: string, password: string): Promise<CertificateFetchResult>;
34
+ removeCertificate(): Promise<void>;
21
35
  }
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MockKitsasOffice = void 0;
4
+ const certificate_1 = require("../types/certificate");
5
+ const user_1 = require("../types/user");
4
6
  class MockKitsasOffice {
5
7
  constructor(id) {
6
8
  this.roles = [
@@ -12,6 +14,7 @@ class MockKitsasOffice {
12
14
  en: 'User',
13
15
  sv: 'Användare',
14
16
  },
17
+ system: false,
15
18
  },
16
19
  ];
17
20
  this.bookshelves = [
@@ -46,6 +49,11 @@ class MockKitsasOffice {
46
49
  getBusinessId() {
47
50
  return '1234567-8';
48
51
  }
52
+ refresh() {
53
+ return new Promise((resolve) => {
54
+ resolve();
55
+ });
56
+ }
49
57
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
50
58
  getBooks(_bookshelfId) {
51
59
  return new Promise((resolve) => {
@@ -79,12 +87,62 @@ class MockKitsasOffice {
79
87
  getBookshelves() {
80
88
  return this.bookshelves;
81
89
  }
90
+ static findBookShelf(id, bookshelves) {
91
+ for (const bookshelf of bookshelves) {
92
+ if (bookshelf.id === id) {
93
+ return bookshelf;
94
+ }
95
+ const sub = this.findBookShelf(id, bookshelf.subgroups);
96
+ if (sub) {
97
+ return sub;
98
+ }
99
+ }
100
+ return undefined;
101
+ }
102
+ addBookshelf(name, parentId) {
103
+ return new Promise((resolve) => {
104
+ const bookshelf = {
105
+ id: '8c742657-5613-4065-8173-2ba01bd28f36',
106
+ name,
107
+ rights: ['A', 'O', 'OB', 'OD', 'OG', 'OL', 'OM', 'OP', 'OS', 'OT'],
108
+ subgroups: [],
109
+ };
110
+ if (parentId) {
111
+ const parent = MockKitsasOffice.findBookShelf(parentId, this.bookshelves);
112
+ if (parent) {
113
+ parent.subgroups.push(bookshelf);
114
+ this.bookshelves = this.bookshelves.map((shelf) => shelf.id === parentId ? parent : shelf);
115
+ }
116
+ }
117
+ else {
118
+ this.bookshelves.push(bookshelf);
119
+ }
120
+ resolve(bookshelf);
121
+ });
122
+ }
123
+ deleteBookshelf(id) {
124
+ return new Promise((resolve) => {
125
+ this.bookshelves = this.bookshelves.filter((shelf) => shelf.id !== id);
126
+ resolve();
127
+ });
128
+ }
129
+ renameBookshelf(id, name) {
130
+ return new Promise((resolve) => {
131
+ const bookshelf = MockKitsasOffice.findBookShelf(id, this.bookshelves);
132
+ if (!bookshelf) {
133
+ throw new Error('Bookshelf not found');
134
+ }
135
+ bookshelf.name = name;
136
+ resolve(bookshelf);
137
+ });
138
+ }
82
139
  addRole(name, rights) {
83
140
  return new Promise((resolve) => {
84
141
  const role = {
85
142
  id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
86
143
  rights,
87
144
  name,
145
+ system: false,
88
146
  };
89
147
  this.roles.push(role);
90
148
  resolve(role);
@@ -113,11 +171,71 @@ class MockKitsasOffice {
113
171
  {
114
172
  id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
115
173
  name: 'Katja Käyttäjä',
116
- group: 'ae50086e204b4b88911389d48ce4a28e',
174
+ email: 'katja@testi.fi',
175
+ mode: user_1.UserMode.PRO,
117
176
  },
118
177
  ]);
119
178
  });
120
179
  }
180
+ addUser(name, email, customer,
181
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
182
+ _invite) {
183
+ return new Promise((resolve) => {
184
+ resolve({
185
+ id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
186
+ name,
187
+ email,
188
+ mode: customer ? user_1.UserMode.CUSTOMER : user_1.UserMode.PRO,
189
+ });
190
+ });
191
+ }
192
+ deleteUser(id) {
193
+ return new Promise((resolve) => {
194
+ console.log('Delete user', id);
195
+ resolve();
196
+ });
197
+ }
198
+ moveBook(bookId, bookshelfId) {
199
+ return new Promise((resolve) => {
200
+ console.log('Move book', bookId, bookshelfId);
201
+ resolve();
202
+ });
203
+ }
204
+ changePlan(bookId, planId) {
205
+ return new Promise((resolve) => {
206
+ console.log('Change plan', bookId, planId);
207
+ resolve();
208
+ });
209
+ }
210
+ moveBookShelf(id, newParentId) {
211
+ return new Promise((resolve) => {
212
+ console.log('Move bookshelf', id, newParentId);
213
+ const parent = MockKitsasOffice.findBookShelf(newParentId, this.bookshelves);
214
+ const shelf = MockKitsasOffice.findBookShelf(id, this.bookshelves);
215
+ parent === null || parent === void 0 ? void 0 : parent.subgroups.push(shelf);
216
+ resolve(shelf);
217
+ });
218
+ }
219
+ getCertificateInformation() {
220
+ return {
221
+ status: certificate_1.CertificateStatus.MISSING,
222
+ };
223
+ }
224
+ installCertificate(transferId, password) {
225
+ return new Promise((resolve) => {
226
+ console.log('Install certificate', transferId, password);
227
+ resolve({
228
+ status: certificate_1.CertificateStatus.ERROR,
229
+ error: 'Not implemented in mock',
230
+ });
231
+ });
232
+ }
233
+ removeCertificate() {
234
+ return new Promise((resolve) => {
235
+ console.log('Remove certificate');
236
+ resolve();
237
+ });
238
+ }
121
239
  }
122
240
  exports.MockKitsasOffice = MockKitsasOffice;
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja2l0c2Fzb2ZmaWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vYy9tb2NraXRzYXNvZmZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsTUFBYSxnQkFBZ0I7SUFDM0IsWUFBWSxFQUFVO1FBS2QsVUFBSyxHQUFpQjtZQUM1QjtnQkFDRSxFQUFFLEVBQUUsc0NBQXNDO2dCQUMxQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUNwQixJQUFJLEVBQUU7b0JBQ0osRUFBRSxFQUFFLFVBQVU7b0JBQ2QsRUFBRSxFQUFFLE1BQU07b0JBQ1YsRUFBRSxFQUFFLFdBQVc7aUJBQ2hCO2FBQ0Y7U0FDRixDQUFDO1FBRU0sZ0JBQVcsR0FBZ0I7WUFDakM7Z0JBQ0UsRUFBRSxFQUFFLHNDQUFzQztnQkFDMUMsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztnQkFDbEUsU0FBUyxFQUFFO29CQUNUO3dCQUNFLEVBQUUsRUFBRSxzQ0FBc0M7d0JBQzFDLElBQUksRUFBRSxVQUFVO3dCQUNoQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7d0JBQ2xFLFNBQVMsRUFBRSxFQUFFO3FCQUNkO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxFQUFFLEVBQUUsc0NBQXNDO2dCQUMxQyxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElB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
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja2l0c2Fzb2ZmaWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vYy9tb2NraXRzYXNvZmZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0Esc0RBSThCO0FBRTlCLHdDQUF1RDtBQUV2RCxNQUFhLGdCQUFnQjtJQUMzQixZQUFZLEVBQVU7UUFLZCxVQUFLLEdBQWlCO1lBQzVCO2dCQUNFLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7Z0JBQ3BCLElBQUksRUFBRTtvQkFDSixFQUFFLEVBQUUsVUFBVTtvQkFDZCxFQUFFLEVBQUUsTUFBTTtvQkFDVixFQUFFLEVBQUUsV0FBVztpQkFDaEI7Z0JBQ0QsTUFBTSxFQUFFLEtBQUs7YUFDZDtTQUNGLENBQUM7UUFFTSxnQkFBVyxHQUFnQjtZQUNqQztnQkFDRSxFQUFFLEVBQUUsc0NBQXNDO2dCQUMxQyxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUNsRSxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsRUFBRSxFQUFFLHNDQUFzQzt3QkFDMUMsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzt3QkFDbEUsU0FBUyxFQUFFLEVBQUU7cUJBQ2Q7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE1BQU0sRUFBRSxDQUFDLEdBQUcs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