@lifeready/core 1.0.2 → 1.0.3

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 (225) hide show
  1. package/README.md +62 -62
  2. package/bundles/lifeready-core.umd.js +15445 -15445
  3. package/bundles/lifeready-core.umd.js.map +1 -1
  4. package/bundles/lifeready-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/_common/ast.js +40 -40
  6. package/esm2015/lib/_common/deferred-promise.js +24 -24
  7. package/esm2015/lib/_common/exceptions.js +157 -157
  8. package/esm2015/lib/_common/queries.gql.js +190 -190
  9. package/esm2015/lib/_common/run-outside-angular.js +79 -79
  10. package/esm2015/lib/_common/types.js +1 -1
  11. package/esm2015/lib/_common/utils.js +44 -44
  12. package/esm2015/lib/api/contact-card.gql.js +79 -79
  13. package/esm2015/lib/api/contact-card.service.js +154 -154
  14. package/esm2015/lib/api/contact-card2.gql.js +60 -60
  15. package/esm2015/lib/api/contact-card2.service.js +103 -103
  16. package/esm2015/lib/api/file.service.js +74 -74
  17. package/esm2015/lib/api/item2.gql.js +110 -110
  18. package/esm2015/lib/api/item2.service.js +311 -311
  19. package/esm2015/lib/api/key-exchange.gql.js +188 -188
  20. package/esm2015/lib/api/key-exchange.service.js +442 -442
  21. package/esm2015/lib/api/key-exchange.types.js +18 -18
  22. package/esm2015/lib/api/key-exchange2.gql.js +171 -171
  23. package/esm2015/lib/api/key-exchange2.service.js +479 -479
  24. package/esm2015/lib/api/lock.gql.js +40 -40
  25. package/esm2015/lib/api/lock.service.js +64 -64
  26. package/esm2015/lib/api/lr-apollo.service.js +46 -46
  27. package/esm2015/lib/api/lr-graphql/index.js +6 -6
  28. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -155
  29. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -213
  30. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -51
  31. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -48
  32. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -18
  33. package/esm2015/lib/api/message.service.js +138 -138
  34. package/esm2015/lib/api/persist.service.js +181 -181
  35. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -93
  36. package/esm2015/lib/api/query-processor/index.js +3 -3
  37. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -192
  38. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -109
  39. package/esm2015/lib/api/shared-contact-card.service.js +119 -119
  40. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -41
  41. package/esm2015/lib/api/shared-contact-card2.service.js +117 -117
  42. package/esm2015/lib/api/time.service.js +146 -146
  43. package/esm2015/lib/api/types/graphql.types.js +7 -7
  44. package/esm2015/lib/api/types/index.js +3 -3
  45. package/esm2015/lib/api/types/lr-graphql.types.js +71 -71
  46. package/esm2015/lib/auth/auth.config.js +57 -57
  47. package/esm2015/lib/auth/auth.gql.js +48 -48
  48. package/esm2015/lib/auth/auth.types.js +27 -27
  49. package/esm2015/lib/auth/idle.service.js +168 -168
  50. package/esm2015/lib/auth/idle.types.js +7 -7
  51. package/esm2015/lib/auth/lbop.service.js +355 -355
  52. package/esm2015/lib/auth/life-ready-auth.service.js +500 -500
  53. package/esm2015/lib/auth/password.service.js +320 -320
  54. package/esm2015/lib/auth/register.service.js +172 -172
  55. package/esm2015/lib/auth/two-factor.service.js +74 -74
  56. package/esm2015/lib/category/category-meta.service.js +99 -99
  57. package/esm2015/lib/category/category.gql.js +406 -406
  58. package/esm2015/lib/category/category.service.js +390 -390
  59. package/esm2015/lib/category/category.types.js +29 -29
  60. package/esm2015/lib/cryptography/cryptography.types.js +11 -11
  61. package/esm2015/lib/cryptography/encryption.service.js +189 -189
  62. package/esm2015/lib/cryptography/key-factory.service.js +237 -237
  63. package/esm2015/lib/cryptography/key-graph.service.js +280 -280
  64. package/esm2015/lib/cryptography/key-meta.service.js +200 -200
  65. package/esm2015/lib/cryptography/key.service.js +124 -124
  66. package/esm2015/lib/cryptography/slip39.service.js +169 -169
  67. package/esm2015/lib/cryptography/web-crypto.service.js +29 -29
  68. package/esm2015/lib/life-ready.config.js +84 -84
  69. package/esm2015/lib/life-ready.module.js +74 -74
  70. package/esm2015/lib/plan/plan.gql.js +123 -123
  71. package/esm2015/lib/plan/plan.service.js +149 -149
  72. package/esm2015/lib/plan/plan.types.js +11 -11
  73. package/esm2015/lib/record/record-attachment.service.js +101 -101
  74. package/esm2015/lib/record/record.gql.js +179 -179
  75. package/esm2015/lib/record/record.service.js +206 -206
  76. package/esm2015/lib/record/record.types.js +15 -15
  77. package/esm2015/lib/record-type/record-type.service.js +75 -75
  78. package/esm2015/lib/record-type/record-type.types.js +28 -28
  79. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -105
  80. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -1
  81. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -300
  82. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -52
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -97
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -1
  85. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -150
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -229
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -1
  88. package/esm2015/lib/scenario/scenario-setup.service.js +269 -269
  89. package/esm2015/lib/scenario/scenario.gql.js +368 -368
  90. package/esm2015/lib/scenario/scenario.service.js +611 -611
  91. package/esm2015/lib/scenario/scenario.types.js +64 -64
  92. package/esm2015/lib/search/search.gql.js +62 -62
  93. package/esm2015/lib/search/search.service.js +156 -156
  94. package/esm2015/lib/search/search.types.js +6 -6
  95. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -112
  96. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -129
  97. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -4
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -232
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +299 -299
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -148
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -326
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -41
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -87
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -215
  105. package/esm2015/lib/users/profile-details.service.js +214 -214
  106. package/esm2015/lib/users/profile.gql.js +97 -97
  107. package/esm2015/lib/users/profile.service.js +169 -169
  108. package/esm2015/lib/users/profile.types.js +34 -34
  109. package/esm2015/lib/users/user.gql.js +60 -60
  110. package/esm2015/lib/users/user.service.js +79 -79
  111. package/esm2015/lib/users/user.types.js +5 -5
  112. package/esm2015/lifeready-core.js +10 -10
  113. package/esm2015/public-api.js +81 -81
  114. package/fesm2015/lifeready-core.js +13088 -13088
  115. package/fesm2015/lifeready-core.js.map +1 -1
  116. package/lib/_common/ast.d.ts +11 -11
  117. package/lib/_common/deferred-promise.d.ts +12 -12
  118. package/lib/_common/exceptions.d.ts +109 -109
  119. package/lib/_common/queries.gql.d.ts +10 -10
  120. package/lib/_common/run-outside-angular.d.ts +14 -14
  121. package/lib/_common/types.d.ts +10 -10
  122. package/lib/_common/utils.d.ts +3 -3
  123. package/lib/api/contact-card.gql.d.ts +7 -7
  124. package/lib/api/contact-card.service.d.ts +52 -52
  125. package/lib/api/contact-card2.gql.d.ts +34 -34
  126. package/lib/api/contact-card2.service.d.ts +49 -49
  127. package/lib/api/file.service.d.ts +18 -18
  128. package/lib/api/item2.gql.d.ts +96 -96
  129. package/lib/api/item2.service.d.ts +177 -177
  130. package/lib/api/key-exchange.gql.d.ts +9 -9
  131. package/lib/api/key-exchange.service.d.ts +39 -39
  132. package/lib/api/key-exchange.types.d.ts +196 -196
  133. package/lib/api/key-exchange2.gql.d.ts +125 -125
  134. package/lib/api/key-exchange2.service.d.ts +187 -187
  135. package/lib/api/lock.gql.d.ts +27 -27
  136. package/lib/api/lock.service.d.ts +25 -25
  137. package/lib/api/lr-apollo.service.d.ts +15 -15
  138. package/lib/api/lr-graphql/index.d.ts +5 -5
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -60
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -27
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -28
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -8
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -9
  144. package/lib/api/message.service.d.ts +58 -58
  145. package/lib/api/persist.service.d.ts +31 -31
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -36
  147. package/lib/api/query-processor/index.d.ts +2 -2
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -18
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -15
  150. package/lib/api/shared-contact-card.service.d.ts +33 -33
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -36
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -45
  153. package/lib/api/time.service.d.ts +16 -16
  154. package/lib/api/types/graphql.types.d.ts +29 -29
  155. package/lib/api/types/index.d.ts +2 -2
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -385
  157. package/lib/auth/auth.config.d.ts +5 -5
  158. package/lib/auth/auth.gql.d.ts +15 -15
  159. package/lib/auth/auth.types.d.ts +66 -66
  160. package/lib/auth/idle.service.d.ts +40 -40
  161. package/lib/auth/idle.types.d.ts +10 -10
  162. package/lib/auth/lbop.service.d.ts +91 -91
  163. package/lib/auth/life-ready-auth.service.d.ts +59 -59
  164. package/lib/auth/password.service.d.ts +78 -78
  165. package/lib/auth/register.service.d.ts +25 -25
  166. package/lib/auth/two-factor.service.d.ts +15 -15
  167. package/lib/category/category-meta.service.d.ts +23 -23
  168. package/lib/category/category.gql.d.ts +45 -45
  169. package/lib/category/category.service.d.ts +67 -67
  170. package/lib/category/category.types.d.ts +79 -79
  171. package/lib/cryptography/cryptography.types.d.ts +83 -83
  172. package/lib/cryptography/encryption.service.d.ts +41 -41
  173. package/lib/cryptography/key-factory.service.d.ts +38 -38
  174. package/lib/cryptography/key-graph.service.d.ts +33 -33
  175. package/lib/cryptography/key-meta.service.d.ts +44 -44
  176. package/lib/cryptography/key.service.d.ts +36 -36
  177. package/lib/cryptography/slip39.service.d.ts +43 -43
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -5
  179. package/lib/life-ready.config.d.ts +14 -14
  180. package/lib/life-ready.module.d.ts +5 -5
  181. package/lib/plan/plan.gql.d.ts +11 -11
  182. package/lib/plan/plan.service.d.ts +33 -33
  183. package/lib/plan/plan.types.d.ts +31 -31
  184. package/lib/record/record-attachment.service.d.ts +16 -16
  185. package/lib/record/record.gql.d.ts +14 -14
  186. package/lib/record/record.service.d.ts +25 -25
  187. package/lib/record/record.types.d.ts +57 -57
  188. package/lib/record-type/record-type.service.d.ts +11 -11
  189. package/lib/record-type/record-type.types.d.ts +50 -50
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -7
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -63
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -32
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -5
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -17
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -18
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -8
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -30
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -54
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -22
  200. package/lib/scenario/scenario.gql.d.ts +34 -34
  201. package/lib/scenario/scenario.service.d.ts +58 -58
  202. package/lib/scenario/scenario.types.d.ts +217 -217
  203. package/lib/search/search.gql.d.ts +1 -1
  204. package/lib/search/search.service.d.ts +25 -25
  205. package/lib/search/search.types.d.ts +20 -20
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -20
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -35
  208. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -3
  209. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -218
  210. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -130
  211. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -9
  212. package/lib/trusted-parties/trusted-party.service.d.ts +44 -44
  213. package/lib/trusted-parties/trusted-party.types.d.ts +102 -102
  214. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -79
  215. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -114
  216. package/lib/users/profile-details.service.d.ts +21 -21
  217. package/lib/users/profile.gql.d.ts +11 -11
  218. package/lib/users/profile.service.d.ts +35 -35
  219. package/lib/users/profile.types.d.ts +96 -96
  220. package/lib/users/user.gql.d.ts +9 -9
  221. package/lib/users/user.service.d.ts +12 -12
  222. package/lib/users/user.types.d.ts +23 -23
  223. package/lifeready-core.d.ts +9 -9
  224. package/package.json +1 -1
  225. package/public-api.d.ts +77 -77
@@ -1,156 +1,156 @@
1
- import { __awaiter, __decorate } from "tslib";
2
- import { Injectable, NgZone } from '@angular/core';
3
- import { LrApolloService } from '../api/lr-apollo.service';
4
- import { CategoryService } from '../category/category.service';
5
- import { KeyGraphService } from '../cryptography/key-graph.service';
6
- import { RecordFieldType } from '../record-type/record-type.types';
7
- import { RecordContentFilter } from '../record/record.gql';
8
- import { RunOutsideAngular } from '../_common/run-outside-angular';
9
- import { SearchRecordContentsQuery } from './search.gql';
10
- import { SearchItemType } from './search.types';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../api/lr-apollo.service";
13
- import * as i2 from "../category/category.service";
14
- import * as i3 from "../cryptography/key-graph.service";
15
- function debugPopulateCategory(categoryService, recordService, keyFactory, categoryId, recordsPerCategory) {
16
- return __awaiter(this, void 0, void 0, function* () {
17
- const tasks = [];
18
- const category = yield categoryService.getCategory(categoryId);
19
- // Create records
20
- for (let i = category.records.length; i < recordsPerCategory; ++i) {
21
- const name = `${category.category.name}+${keyFactory.randomString(16)}`;
22
- console.log('Creating record: ', name);
23
- yield recordService.createRecord({
24
- categoryIds: [category.category.id],
25
- name,
26
- recordType: {
27
- id: '1',
28
- version: 1,
29
- name: 'Vehicle Details',
30
- },
31
- fields: [
32
- {
33
- id: '1-vin',
34
- type: RecordFieldType.Text,
35
- label: 'VIN Number',
36
- value: '1234567890',
37
- },
38
- {
39
- id: '1-location',
40
- type: RecordFieldType.Text,
41
- label: 'Location',
42
- value: '10'.repeat(1000),
43
- },
44
- ],
45
- });
46
- }
47
- // Delete records
48
- for (let i = category.records.length; i > recordsPerCategory; --i) {
49
- const id = category.records[i - 1].id;
50
- console.log('Deleting record: ', id);
51
- yield recordService.deleteRecord(id);
52
- }
53
- });
54
- }
55
- export function debugPopulateRecords(categoryService, recordService, keyFactory, recordsPerCategory) {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- const pillars = yield categoryService.getCategories();
58
- // For each category, added records
59
- for (const pillar of pillars) {
60
- const category = yield categoryService.getCategory(pillar.id);
61
- for (const subCategory of category.subCategories) {
62
- if (subCategory.allowRecords) {
63
- yield debugPopulateCategory(categoryService, recordService, keyFactory, subCategory.id, recordsPerCategory);
64
- }
65
- }
66
- }
67
- });
68
- }
69
- let SearchService = class SearchService {
70
- constructor(ngZone, lrApollo, categoryService, keyGraph) {
71
- this.ngZone = ngZone;
72
- this.lrApollo = lrApollo;
73
- this.categoryService = categoryService;
74
- this.keyGraph = keyGraph;
75
- this.vaultItems = {};
76
- }
77
- mapRecordContent(recordContent) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- const record = recordContent.nParentDirectoryLinks.list[0].parentDirectory;
80
- const state = recordContent.currentVersion.state;
81
- const plainCipherMeta = state.cipherMeta &&
82
- (yield this.keyGraph.decryptFromString(state.keyId, state.cipherMeta));
83
- return {
84
- type: SearchItemType.RECORD,
85
- id: record.id,
86
- created: new Date(record.created),
87
- modified: new Date(record.modified),
88
- archived: record.archived,
89
- plainMeta: state.plainMeta &&
90
- JSON.parse(recordContent.currentVersion.state.plainMeta),
91
- plainCipherMeta,
92
- parentCategoryId: record.nParentDirectoryLinks.list[0].parentDirectory.id,
93
- };
94
- });
95
- }
96
- mapRecordContents(edges) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- return Promise.all(edges.map((edge) => this.mapRecordContent(edge.node)));
99
- });
100
- }
101
- load() {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const defaultVault = yield this.categoryService.getDefaultVault();
104
- let start;
105
- let end;
106
- start = Date.now();
107
- this.recordContentsResult = yield this.lrApollo.query({
108
- query: SearchRecordContentsQuery,
109
- variables: {
110
- id: defaultVault.id,
111
- depth: 5,
112
- first: null,
113
- after: null,
114
- recordContentFilter: RecordContentFilter,
115
- },
116
- });
117
- end = Date.now();
118
- console.log('Search API time (s): ', (end - start) / 1000);
119
- start = Date.now();
120
- // try {
121
- const items = yield this.mapRecordContents(this.recordContentsResult.category.descendantDirectories.recordContents
122
- .edges);
123
- for (const item of items) {
124
- this.vaultItems[item.id] = item;
125
- }
126
- end = Date.now();
127
- console.log('Search mapCategory time (s): ', (end - start) / 1000);
128
- });
129
- }
130
- refresh() {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- yield this.load();
133
- console.log(Object.values(this.vaultItems));
134
- return this.vaultItems;
135
- });
136
- }
137
- };
138
- SearchService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SearchService_Factory() { return new SearchService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.LrApolloService), i0.ɵɵinject(i2.CategoryService), i0.ɵɵinject(i3.KeyGraphService)); }, token: SearchService, providedIn: "root" });
139
- SearchService.decorators = [
140
- { type: Injectable, args: [{
141
- providedIn: 'root',
142
- },] }
143
- ];
144
- SearchService.ctorParameters = () => [
145
- { type: NgZone },
146
- { type: LrApolloService },
147
- { type: CategoryService },
148
- { type: KeyGraphService }
149
- ];
150
- SearchService = __decorate([
151
- RunOutsideAngular({
152
- ngZoneName: 'ngZone',
153
- })
154
- ], SearchService);
155
- export { SearchService };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3NlYXJjaC9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRTVELFNBQWUscUJBQXFCLENBQ2xDLGVBQWdDLEVBQ2hDLGFBQTRCLEVBQzVCLFVBQTZCLEVBQzdCLFVBQWtCLEVBQ2xCLGtCQUEwQjs7UUFFMUIsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWpCLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUvRCxpQkFBaUI7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakUsTUFBTSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxD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WUFDbEIsZUFBZTtZQUNmLGVBQWU7WUFFZixlQUFlOztBQXdGWCxhQUFhO0lBTnpCLGlCQUFpQixDQUFDO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCLENBQUM7R0FJVyxhQUFhLENBaUZ6QjtTQWpGWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBSZWNvcmRGaWVsZFR5cGUgfSBmcm9tICcuLi9yZWNvcmQtdHlwZS9yZWNvcmQtdHlwZS50eXBlcyc7XG5pbXBvcnQgeyBSZWNvcmRDb250ZW50RmlsdGVyIH0gZnJvbSAnLi4vcmVjb3JkL3JlY29yZC5ncWwnO1xuaW1wb3J0IHsgUmVjb3JkU2VydmljZSB9IGZyb20gJy4uL3JlY29yZC9yZWNvcmQuc2VydmljZSc7XG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XG5pbXBvcnQgeyBTZWFyY2hSZWNvcmRDb250ZW50c1F1ZXJ5IH0gZnJvbSAnLi9zZWFyY2guZ3FsJztcbmltcG9ydCB7IFNlYXJjaEl0ZW0sIFNlYXJjaEl0ZW1UeXBlIH0gZnJvbSAnLi9zZWFyY2gudHlwZXMnO1xuXG5hc3luYyBmdW5jdGlvbiBkZWJ1Z1BvcHVsYXRlQ2F0ZWdvcnkoXG4gIGNhdGVnb3J5U2VydmljZTogQ2F0ZWdvcnlTZXJ2aWNlLFxuICByZWNvcmRTZXJ2aWNlOiBSZWNvcmRTZXJ2aWNlLFxuICBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcbiAgY2F0ZWdvcnlJZDogc3RyaW5nLFxuICByZWNvcmRzUGVyQ2F0ZWdvcnk6IG51bWJlclxuKSB7XG4gIGNvbnN0IHRhc2tzID0gW107XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBjYXRlZ29yeVNlcnZpY2UuZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnlJZCk7XG5cbiAgLy8gQ3JlYXRlIHJlY29yZHNcbiAgZm9yIChsZXQgaSA9IGNhdGVnb3J5LnJlY29yZHMubGVuZ3RoOyBpIDwgcmVjb3Jkc1BlckNhdGVnb3J5OyArK2kpIHtcbiAgICBjb25zdCBuYW1lID0gYCR7Y2F0ZWdvcnkuY2F0ZWdvcnkubmFtZX0rJHtrZXlGYWN0b3J5LnJhbmRvbVN0cmluZygxNil9YDtcbiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgcmVjb3JkOiAnLCBuYW1lKTtcbiAgICBhd2FpdCByZWNvcmRTZXJ2aWNlLmNyZWF0ZVJlY29yZCh7XG4gICAgICBjYXRlZ29yeUlkczogW2NhdGVnb3J5LmNhdGVnb3J5LmlkXSxcbiAgICAgIG5hbWUsXG4gICAgICByZWNvcmRUeXBlOiB7XG4gICAgICAgIGlkOiAnMScsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIG5hbWU6ICdWZWhpY2xlIERldGFpbHMnLFxuICAgICAgfSxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcxLXZpbicsXG4gICAgICAgICAgdHlwZTogUmVjb3JkRmllbGRUeXBlLlRleHQsXG4gICAgICAgICAgbGFiZWw6ICdWSU4gTnVtYmVyJyxcbiAgICAgICAgICB2YWx1ZTogJzEyMzQ1Njc4OTAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICcxLWxvY2F0aW9uJyxcbiAgICAgICAgICB0eXBlOiBSZWNvcmRGaWVsZFR5cGUuVGV4dCxcbiAgICAgICAgICBsYWJlbDogJ0xvY2F0aW9uJyxcbiAgICAgICAgICB2YWx1ZTogJzEwJy5yZXBlYXQoMTAwMCksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgLy8gYXR0YWNobWVudHNcbiAgICB9KTtcbiAgfVxuXG4gIC8vIERlbGV0ZSByZWNvcmRzXG4gIGZvciAobGV0IGkgPSBjYXRlZ29yeS5yZWNvcmRzLmxlbmd0aDsgaSA+IHJlY29yZHNQZXJDYXRlZ29yeTsgLS1pKSB7XG4gICAgY29uc3QgaWQgPSBjYXRlZ29yeS5yZWNvcmRzW2kgLSAxXS5pZDtcbiAgICBjb25zb2xlLmxvZygnRGVsZXRpbmcgcmVjb3JkOiAnLCBpZCk7XG4gICAgYXdhaXQgcmVjb3JkU2VydmljZS5kZWxldGVSZWNvcmQoaWQpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWJ1Z1BvcHVsYXRlUmVjb3JkcyhcbiAgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UsXG4gIHJlY29yZFNlcnZpY2U6IFJlY29yZFNlcnZpY2UsXG4gIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICByZWNvcmRzUGVyQ2F0ZWdvcnk6IG51bWJlclxuKSB7XG4gIGNvbnN0IHBpbGxhcnMgPSBhd2FpdCBjYXRlZ29yeVNlcnZpY2UuZ2V0Q2F0ZWdvcmllcygpO1xuXG4gIC8vIEZvciBlYWNoIGNhdGVnb3J5LCBhZGRlZCByZWNvcmRzXG4gIGZvciAoY29uc3QgcGlsbGFyIG9mIHBpbGxhcnMpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGNhdGVnb3J5U2VydmljZS5nZXRDYXRlZ29yeShwaWxsYXIuaWQpO1xuICAgIGZvciAoY29uc3Qgc3ViQ2F0ZWdvcnkgb2YgY2F0ZWdvcnkuc3ViQ2F0ZWdvcmllcykge1xuICAgICAgaWYgKHN1YkNhdGVnb3J5LmFsbG93UmVjb3Jkcykge1xuICAgICAgICBhd2FpdCBkZWJ1Z1BvcHVsYXRlQ2F0ZWdvcnkoXG4gICAgICAgICAgY2F0ZWdvcnlTZXJ2aWNlLFxuICAgICAgICAgIHJlY29yZFNlcnZpY2UsXG4gICAgICAgICAga2V5RmFjdG9yeSxcbiAgICAgICAgICBzdWJDYXRlZ29yeS5pZCxcbiAgICAgICAgICByZWNvcmRzUGVyQ2F0ZWdvcnlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcbiAgbmdab25lTmFtZTogJ25nWm9uZScsXG59KVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xuICB2YXVsdEl0ZW1zOiB7IFtpdGVtSWQ6IHN0cmluZ106IFNlYXJjaEl0ZW0gfSA9IHt9O1xuICByZWNvcmRDb250ZW50c1Jlc3VsdDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlXG4gICkge31cblxuICBwcml2YXRlIGFzeW5jIG1hcFJlY29yZENvbnRlbnQocmVjb3JkQ29udGVudDogYW55KTogUHJvbWlzZTxTZWFyY2hJdGVtPiB7XG4gICAgY29uc3QgcmVjb3JkID0gcmVjb3JkQ29udGVudC5uUGFyZW50RGlyZWN0b3J5TGlua3MubGlzdFswXS5wYXJlbnREaXJlY3Rvcnk7XG4gICAgY29uc3Qgc3RhdGUgPSByZWNvcmRDb250ZW50LmN1cnJlbnRWZXJzaW9uLnN0YXRlO1xuXG4gICAgY29uc3QgcGxhaW5DaXBoZXJNZXRhID1cbiAgICAgIHN0YXRlLmNpcGhlck1ldGEgJiZcbiAgICAgIChhd2FpdCB0aGlzLmtleUdyYXBoLmRlY3J5cHRGcm9tU3RyaW5nPGFueT4oXG4gICAgICAgIHN0YXRlLmtleUlkLFxuICAgICAgICBzdGF0ZS5jaXBoZXJNZXRhXG4gICAgICApKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBTZWFyY2hJdGVtVHlwZS5SRUNPUkQsXG4gICAgICBpZDogcmVjb3JkLmlkLFxuICAgICAgY3JlYXRlZDogbmV3IERhdGUocmVjb3JkLmNyZWF0ZWQpLFxuICAgICAgbW9kaWZpZWQ6IG5ldyBEYXRlKHJlY29yZC5tb2RpZmllZCksXG4gICAgICBhcmNoaXZlZDogcmVjb3JkLmFyY2hpdmVkLFxuICAgICAgcGxhaW5NZXRhOlxuICAgICAgICBzdGF0ZS5wbGFpbk1ldGEgJiZcbiAgICAgICAgSlNPTi5wYXJzZShyZWNvcmRDb250ZW50LmN1cnJlbnRWZXJzaW9uLnN0YXRlLnBsYWluTWV0YSksXG4gICAgICBwbGFpbkNpcGhlck1ldGEsXG4gICAgICBwYXJlbnRDYXRlZ29yeUlkOiByZWNvcmQublBhcmVudERpcmVjdG9yeUxpbmtzLmxpc3RbMF0ucGFyZW50RGlyZWN0b3J5LmlkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcFJlY29yZENvbnRlbnRzKGVkZ2VzOiBhbnlbXSk6IFByb21pc2U8U2VhcmNoSXRlbVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGVkZ2VzLm1hcCgoZWRnZSkgPT4gdGhpcy5tYXBSZWNvcmRDb250ZW50KGVkZ2Uubm9kZSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZCgpIHtcbiAgICBjb25zdCBkZWZhdWx0VmF1bHQgPSBhd2FpdCB0aGlzLmNhdGVnb3J5U2VydmljZS5nZXREZWZhdWx0VmF1bHQoKTtcbiAgICBsZXQgc3RhcnQ7XG4gICAgbGV0IGVuZDtcblxuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMucmVjb3JkQ29udGVudHNSZXN1bHQgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xuICAgICAgcXVlcnk6IFNlYXJjaFJlY29yZENvbnRlbnRzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWQ6IGRlZmF1bHRWYXVsdC5pZCxcbiAgICAgICAgZGVwdGg6IDUsXG4gICAgICAgIGZpcnN0OiBudWxsLFxuICAgICAgICBhZnRlcjogbnVsbCxcbiAgICAgICAgcmVjb3JkQ29udGVudEZpbHRlcjogUmVjb3JkQ29udGVudEZpbHRlcixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBlbmQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUubG9nKCdTZWFyY2ggQVBJIHRpbWUgKHMpOiAnLCAoZW5kIC0gc3RhcnQpIC8gMTAwMCk7XG5cbiAgICBzdGFydCA9IERhdGUubm93KCk7XG4gICAgLy8gdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMubWFwUmVjb3JkQ29udGVudHMoXG4gICAgICB0aGlzLnJlY29yZENvbnRlbnRzUmVzdWx0LmNhdGVnb3J5LmRlc2NlbmRhbnREaXJlY3Rvcmllcy5yZWNvcmRDb250ZW50c1xuICAgICAgICAuZWRnZXNcbiAgICApO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgdGhpcy52YXVsdEl0ZW1zW2l0ZW0uaWRdID0gaXRlbTtcbiAgICB9XG5cbiAgICBlbmQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUubG9nKCdTZWFyY2ggbWFwQ2F0ZWdvcnkgdGltZSAocyk6ICcsIChlbmQgLSBzdGFydCkgLyAxMDAwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoKCkge1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuXG4gICAgY29uc29sZS5sb2coT2JqZWN0LnZhbHVlcyh0aGlzLnZhdWx0SXRlbXMpKTtcbiAgICByZXR1cm4gdGhpcy52YXVsdEl0ZW1zO1xuICB9XG59XG4iXX0=
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { Injectable, NgZone } from '@angular/core';
3
+ import { LrApolloService } from '../api/lr-apollo.service';
4
+ import { CategoryService } from '../category/category.service';
5
+ import { KeyGraphService } from '../cryptography/key-graph.service';
6
+ import { RecordFieldType } from '../record-type/record-type.types';
7
+ import { RecordContentFilter } from '../record/record.gql';
8
+ import { RunOutsideAngular } from '../_common/run-outside-angular';
9
+ import { SearchRecordContentsQuery } from './search.gql';
10
+ import { SearchItemType } from './search.types';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../api/lr-apollo.service";
13
+ import * as i2 from "../category/category.service";
14
+ import * as i3 from "../cryptography/key-graph.service";
15
+ function debugPopulateCategory(categoryService, recordService, keyFactory, categoryId, recordsPerCategory) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const tasks = [];
18
+ const category = yield categoryService.getCategory(categoryId);
19
+ // Create records
20
+ for (let i = category.records.length; i < recordsPerCategory; ++i) {
21
+ const name = `${category.category.name}+${keyFactory.randomString(16)}`;
22
+ console.log('Creating record: ', name);
23
+ yield recordService.createRecord({
24
+ categoryIds: [category.category.id],
25
+ name,
26
+ recordType: {
27
+ id: '1',
28
+ version: 1,
29
+ name: 'Vehicle Details',
30
+ },
31
+ fields: [
32
+ {
33
+ id: '1-vin',
34
+ type: RecordFieldType.Text,
35
+ label: 'VIN Number',
36
+ value: '1234567890',
37
+ },
38
+ {
39
+ id: '1-location',
40
+ type: RecordFieldType.Text,
41
+ label: 'Location',
42
+ value: '10'.repeat(1000),
43
+ },
44
+ ],
45
+ });
46
+ }
47
+ // Delete records
48
+ for (let i = category.records.length; i > recordsPerCategory; --i) {
49
+ const id = category.records[i - 1].id;
50
+ console.log('Deleting record: ', id);
51
+ yield recordService.deleteRecord(id);
52
+ }
53
+ });
54
+ }
55
+ export function debugPopulateRecords(categoryService, recordService, keyFactory, recordsPerCategory) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const pillars = yield categoryService.getCategories();
58
+ // For each category, added records
59
+ for (const pillar of pillars) {
60
+ const category = yield categoryService.getCategory(pillar.id);
61
+ for (const subCategory of category.subCategories) {
62
+ if (subCategory.allowRecords) {
63
+ yield debugPopulateCategory(categoryService, recordService, keyFactory, subCategory.id, recordsPerCategory);
64
+ }
65
+ }
66
+ }
67
+ });
68
+ }
69
+ let SearchService = class SearchService {
70
+ constructor(ngZone, lrApollo, categoryService, keyGraph) {
71
+ this.ngZone = ngZone;
72
+ this.lrApollo = lrApollo;
73
+ this.categoryService = categoryService;
74
+ this.keyGraph = keyGraph;
75
+ this.vaultItems = {};
76
+ }
77
+ mapRecordContent(recordContent) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ const record = recordContent.nParentDirectoryLinks.list[0].parentDirectory;
80
+ const state = recordContent.currentVersion.state;
81
+ const plainCipherMeta = state.cipherMeta &&
82
+ (yield this.keyGraph.decryptFromString(state.keyId, state.cipherMeta));
83
+ return {
84
+ type: SearchItemType.RECORD,
85
+ id: record.id,
86
+ created: new Date(record.created),
87
+ modified: new Date(record.modified),
88
+ archived: record.archived,
89
+ plainMeta: state.plainMeta &&
90
+ JSON.parse(recordContent.currentVersion.state.plainMeta),
91
+ plainCipherMeta,
92
+ parentCategoryId: record.nParentDirectoryLinks.list[0].parentDirectory.id,
93
+ };
94
+ });
95
+ }
96
+ mapRecordContents(edges) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ return Promise.all(edges.map((edge) => this.mapRecordContent(edge.node)));
99
+ });
100
+ }
101
+ load() {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const defaultVault = yield this.categoryService.getDefaultVault();
104
+ let start;
105
+ let end;
106
+ start = Date.now();
107
+ this.recordContentsResult = yield this.lrApollo.query({
108
+ query: SearchRecordContentsQuery,
109
+ variables: {
110
+ id: defaultVault.id,
111
+ depth: 5,
112
+ first: null,
113
+ after: null,
114
+ recordContentFilter: RecordContentFilter,
115
+ },
116
+ });
117
+ end = Date.now();
118
+ console.log('Search API time (s): ', (end - start) / 1000);
119
+ start = Date.now();
120
+ // try {
121
+ const items = yield this.mapRecordContents(this.recordContentsResult.category.descendantDirectories.recordContents
122
+ .edges);
123
+ for (const item of items) {
124
+ this.vaultItems[item.id] = item;
125
+ }
126
+ end = Date.now();
127
+ console.log('Search mapCategory time (s): ', (end - start) / 1000);
128
+ });
129
+ }
130
+ refresh() {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ yield this.load();
133
+ console.log(Object.values(this.vaultItems));
134
+ return this.vaultItems;
135
+ });
136
+ }
137
+ };
138
+ SearchService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SearchService_Factory() { return new SearchService(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.LrApolloService), i0.ɵɵinject(i2.CategoryService), i0.ɵɵinject(i3.KeyGraphService)); }, token: SearchService, providedIn: "root" });
139
+ SearchService.decorators = [
140
+ { type: Injectable, args: [{
141
+ providedIn: 'root',
142
+ },] }
143
+ ];
144
+ SearchService.ctorParameters = () => [
145
+ { type: NgZone },
146
+ { type: LrApolloService },
147
+ { type: CategoryService },
148
+ { type: KeyGraphService }
149
+ ];
150
+ SearchService = __decorate([
151
+ RunOutsideAngular({
152
+ ngZoneName: 'ngZone',
153
+ })
154
+ ], SearchService);
155
+ export { SearchService };
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovUHJvamVjdHMvbmV3cmVwby9rYy1jbGllbnQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvc2VhcmNoL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBYyxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFNUQsU0FBZSxxQkFBcUIsQ0FDbEMsZUFBZ0MsRUFDaEMsYUFBNEIsRUFDNUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsa0JBQTBCOztRQUUxQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRS9ELGlCQUFpQjtRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNqRSxNQUFNLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFB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QUFlO1lBQ2YsZUFBZTtZQUVmLGVBQWU7O0FBd0ZYLGFBQWE7SUFOekIsaUJBQWlCLENBQUM7UUFDakIsVUFBVSxFQUFFLFFBQVE7S0FDckIsQ0FBQztHQUlXLGFBQWEsQ0FpRnpCO1NBakZZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTHJBcG9sbG9TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWFwb2xsby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1mYWN0b3J5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZWNvcmRGaWVsZFR5cGUgfSBmcm9tICcuLi9yZWNvcmQtdHlwZS9yZWNvcmQtdHlwZS50eXBlcyc7XHJcbmltcG9ydCB7IFJlY29yZENvbnRlbnRGaWx0ZXIgfSBmcm9tICcuLi9yZWNvcmQvcmVjb3JkLmdxbCc7XHJcbmltcG9ydCB7IFJlY29yZFNlcnZpY2UgfSBmcm9tICcuLi9yZWNvcmQvcmVjb3JkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSdW5PdXRzaWRlQW5ndWxhciB9IGZyb20gJy4uL19jb21tb24vcnVuLW91dHNpZGUtYW5ndWxhcic7XHJcbmltcG9ydCB7IFNlYXJjaFJlY29yZENvbnRlbnRzUXVlcnkgfSBmcm9tICcuL3NlYXJjaC5ncWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hJdGVtLCBTZWFyY2hJdGVtVHlwZSB9IGZyb20gJy4vc2VhcmNoLnR5cGVzJztcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGRlYnVnUG9wdWxhdGVDYXRlZ29yeShcclxuICBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSxcclxuICByZWNvcmRTZXJ2aWNlOiBSZWNvcmRTZXJ2aWNlLFxyXG4gIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxyXG4gIGNhdGVnb3J5SWQ6IHN0cmluZyxcclxuICByZWNvcmRzUGVyQ2F0ZWdvcnk6IG51bWJlclxyXG4pIHtcclxuICBjb25zdCB0YXNrcyA9IFtdO1xyXG5cclxuICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGNhdGVnb3J5U2VydmljZS5nZXRDYXRlZ29yeShjYXRlZ29yeUlkKTtcclxuXHJcbiAgLy8gQ3JlYXRlIHJlY29yZHNcclxuICBmb3IgKGxldCBpID0gY2F0ZWdvcnkucmVjb3Jkcy5sZW5ndGg7IGkgPCByZWNvcmRzUGVyQ2F0ZWdvcnk7ICsraSkge1xyXG4gICAgY29uc3QgbmFtZSA9IGAke2NhdGVnb3J5LmNhdGVnb3J5Lm5hbWV9KyR7a2V5RmFjdG9yeS5yYW5kb21TdHJpbmcoMTYpfWA7XHJcbiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgcmVjb3JkOiAnLCBuYW1lKTtcclxuICAgIGF3YWl0IHJlY29yZFNlcnZpY2UuY3JlYXRlUmVjb3JkKHtcclxuICAgICAgY2F0ZWdvcnlJZHM6IFtjYXRlZ29yeS5jYXRlZ29yeS5pZF0sXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIHJlY29yZFR5cGU6IHtcclxuICAgICAgICBpZDogJzEnLFxyXG4gICAgICAgIHZlcnNpb246IDEsXHJcbiAgICAgICAgbmFtZTogJ1ZlaGljbGUgRGV0YWlscycsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiAnMS12aW4nLFxyXG4gICAgICAgICAgdHlwZTogUmVjb3JkRmllbGRUeXBlLlRleHQsXHJcbiAgICAgICAgICBsYWJlbDogJ1ZJTiBOdW1iZXInLFxyXG4gICAgICAgICAgdmFsdWU6ICcxMjM0NTY3ODkwJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiAnMS1sb2NhdGlvbicsXHJcbiAgICAgICAgICB0eXBlOiBSZWNvcmRGaWVsZFR5cGUuVGV4dCxcclxuICAgICAgICAgIGxhYmVsOiAnTG9jYXRpb24nLFxyXG4gICAgICAgICAgdmFsdWU6ICcxMCcucmVwZWF0KDEwMDApLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIGF0dGFjaG1lbnRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIERlbGV0ZSByZWNvcmRzXHJcbiAgZm9yIChsZXQgaSA9IGNhdGVnb3J5LnJlY29yZHMubGVuZ3RoOyBpID4gcmVjb3Jkc1BlckNhdGVnb3J5OyAtLWkpIHtcclxuICAgIGNvbnN0IGlkID0gY2F0ZWdvcnkucmVjb3Jkc1tpIC0gMV0uaWQ7XHJcbiAgICBjb25zb2xlLmxvZygnRGVsZXRpbmcgcmVjb3JkOiAnLCBpZCk7XHJcbiAgICBhd2FpdCByZWNvcmRTZXJ2aWNlLmRlbGV0ZVJlY29yZChpZCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVidWdQb3B1bGF0ZVJlY29yZHMoXHJcbiAgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2UsXHJcbiAgcmVjb3JkU2VydmljZTogUmVjb3JkU2VydmljZSxcclxuICBrZXlGYWN0b3J5OiBLZXlGYWN0b3J5U2VydmljZSxcclxuICByZWNvcmRzUGVyQ2F0ZWdvcnk6IG51bWJlclxyXG4pIHtcclxuICBjb25zdCBwaWxsYXJzID0gYXdhaXQgY2F0ZWdvcnlTZXJ2aWNlLmdldENhdGVnb3JpZXMoKTtcclxuXHJcbiAgLy8gRm9yIGVhY2ggY2F0ZWdvcnksIGFkZGVkIHJlY29yZHNcclxuICBmb3IgKGNvbnN0IHBpbGxhciBvZiBwaWxsYXJzKSB7XHJcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGNhdGVnb3J5U2VydmljZS5nZXRDYXRlZ29yeShwaWxsYXIuaWQpO1xyXG4gICAgZm9yIChjb25zdCBzdWJDYXRlZ29yeSBvZiBjYXRlZ29yeS5zdWJDYXRlZ29yaWVzKSB7XHJcbiAgICAgIGlmIChzdWJDYXRlZ29yeS5hbGxvd1JlY29yZHMpIHtcclxuICAgICAgICBhd2FpdCBkZWJ1Z1BvcHVsYXRlQ2F0ZWdvcnkoXHJcbiAgICAgICAgICBjYXRlZ29yeVNlcnZpY2UsXHJcbiAgICAgICAgICByZWNvcmRTZXJ2aWNlLFxyXG4gICAgICAgICAga2V5RmFjdG9yeSxcclxuICAgICAgICAgIHN1YkNhdGVnb3J5LmlkLFxyXG4gICAgICAgICAgcmVjb3Jkc1BlckNhdGVnb3J5XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQFJ1bk91dHNpZGVBbmd1bGFyKHtcclxuICBuZ1pvbmVOYW1lOiAnbmdab25lJyxcclxufSlcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gIHZhdWx0SXRlbXM6IHsgW2l0ZW1JZDogc3RyaW5nXTogU2VhcmNoSXRlbSB9ID0ge307XHJcbiAgcmVjb3JkQ29udGVudHNSZXN1bHQ6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYXRlZ29yeVNlcnZpY2U6IENhdGVnb3J5U2VydmljZSxcclxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBtYXBSZWNvcmRDb250ZW50KHJlY29yZENvbnRlbnQ6IGFueSk6IFByb21pc2U8U2VhcmNoSXRlbT4ge1xyXG4gICAgY29uc3QgcmVjb3JkID0gcmVjb3JkQ29udGVudC5uUGFyZW50RGlyZWN0b3J5TGlua3MubGlzdFswXS5wYXJlbnREaXJlY3Rvcnk7XHJcbiAgICBjb25zdCBzdGF0ZSA9IHJlY29yZENvbnRlbnQuY3VycmVudFZlcnNpb24uc3RhdGU7XHJcblxyXG4gICAgY29uc3QgcGxhaW5DaXBoZXJNZXRhID1cclxuICAgICAgc3RhdGUuY2lwaGVyTWV0YSAmJlxyXG4gICAgICAoYXdhaXQgdGhpcy5rZXlHcmFwaC5kZWNyeXB0RnJvbVN0cmluZzxhbnk+KFxyXG4gICAgICAgIHN0YXRlLmtleUlkLFxyXG4gICAgICAgIHN0YXRlLmNpcGhlck1ldGFcclxuICAgICAgKSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogU2VhcmNoSXRlbVR5cGUuUkVDT1JELFxyXG4gICAgICBpZDogcmVjb3JkLmlkLFxyXG4gICAgICBjcmVhdGVkOiBuZXcgRGF0ZShyZWNvcmQuY3JlYXRlZCksXHJcbiAgICAgIG1vZGlmaWVkOiBuZXcgRGF0ZShyZWNvcmQubW9kaWZpZWQpLFxyXG4gICAgICBhcmNoaXZlZDogcmVjb3JkLmFyY2hpdmVkLFxyXG4gICAgICBwbGFpbk1ldGE6XHJcbiAgICAgICAgc3RhdGUucGxhaW5NZXRhICYmXHJcbiAgICAgICAgSlNPTi5wYXJzZShyZWNvcmRDb250ZW50LmN1cnJlbnRWZXJzaW9uLnN0YXRlLnBsYWluTWV0YSksXHJcbiAgICAgIHBsYWluQ2lwaGVyTWV0YSxcclxuICAgICAgcGFyZW50Q2F0ZWdvcnlJZDogcmVjb3JkLm5QYXJlbnREaXJlY3RvcnlMaW5rcy5saXN0WzBdLnBhcmVudERpcmVjdG9yeS5pZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG1hcFJlY29yZENvbnRlbnRzKGVkZ2VzOiBhbnlbXSk6IFByb21pc2U8U2VhcmNoSXRlbVtdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoZWRnZXMubWFwKChlZGdlKSA9PiB0aGlzLm1hcFJlY29yZENvbnRlbnQoZWRnZS5ub2RlKSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBsb2FkKCkge1xyXG4gICAgY29uc3QgZGVmYXVsdFZhdWx0ID0gYXdhaXQgdGhpcy5jYXRlZ29yeVNlcnZpY2UuZ2V0RGVmYXVsdFZhdWx0KCk7XHJcbiAgICBsZXQgc3RhcnQ7XHJcbiAgICBsZXQgZW5kO1xyXG5cclxuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKTtcclxuXHJcbiAgICB0aGlzLnJlY29yZENvbnRlbnRzUmVzdWx0ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcclxuICAgICAgcXVlcnk6IFNlYXJjaFJlY29yZENvbnRlbnRzUXVlcnksXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlkOiBkZWZhdWx0VmF1bHQuaWQsXHJcbiAgICAgICAgZGVwdGg6IDUsXHJcbiAgICAgICAgZmlyc3Q6IG51bGwsXHJcbiAgICAgICAgYWZ0ZXI6IG51bGwsXHJcbiAgICAgICAgcmVjb3JkQ29udGVudEZpbHRlcjogUmVjb3JkQ29udGVudEZpbHRlcixcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIGVuZCA9IERhdGUubm93KCk7XHJcbiAgICBjb25zb2xlLmxvZygnU2VhcmNoIEFQSSB0aW1lIChzKTogJywgKGVuZCAtIHN0YXJ0KSAvIDEwMDApO1xyXG5cclxuICAgIHN0YXJ0ID0gRGF0ZS5ub3coKTtcclxuICAgIC8vIHRyeSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IGF3YWl0IHRoaXMubWFwUmVjb3JkQ29udGVudHMoXHJcbiAgICAgIHRoaXMucmVjb3JkQ29udGVudHNSZXN1bHQuY2F0ZWdvcnkuZGVzY2VuZGFudERpcmVjdG9yaWVzLnJlY29yZENvbnRlbnRzXHJcbiAgICAgICAgLmVkZ2VzXHJcbiAgICApO1xyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMudmF1bHRJdGVtc1tpdGVtLmlkXSA9IGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgZW5kID0gRGF0ZS5ub3coKTtcclxuICAgIGNvbnNvbGUubG9nKCdTZWFyY2ggbWFwQ2F0ZWdvcnkgdGltZSAocyk6ICcsIChlbmQgLSBzdGFydCkgLyAxMDAwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoKCkge1xyXG4gICAgYXdhaXQgdGhpcy5sb2FkKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coT2JqZWN0LnZhbHVlcyh0aGlzLnZhdWx0SXRlbXMpKTtcclxuICAgIHJldHVybiB0aGlzLnZhdWx0SXRlbXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,6 @@
1
- export var SearchItemType;
2
- (function (SearchItemType) {
3
- SearchItemType["RECORD"] = "RECORD";
4
- SearchItemType["CATEGORY"] = "CATEGORY";
5
- })(SearchItemType || (SearchItemType = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnR5cGVzLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2gvc2VhcmNoLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsdUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZ1c2UgZnJvbSAnZnVzZS5qcyc7XG5cbmV4cG9ydCBlbnVtIFNlYXJjaEl0ZW1UeXBlIHtcbiAgUkVDT1JEID0gJ1JFQ09SRCcsXG4gIENBVEVHT1JZID0gJ0NBVEVHT1JZJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hSZWNvcmRBdHRhY2htZW50IHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBTZWFyY2hJdGVtVHlwZTtcbiAgY3JlYXRlZDogRGF0ZTtcbiAgbW9kaWZpZWQ6IERhdGU7XG4gIGFyY2hpdmVkOiBib29sZWFuO1xuICBwbGFpbk1ldGE6IGFueTtcbiAgcGxhaW5DaXBoZXJNZXRhOiBhbnk7XG4gIHBhcmVudENhdGVnb3J5SWQ/OiBzdHJpbmc7XG4gIGF0dGFjaG1lbnRzPzogU2VhcmNoUmVjb3JkQXR0YWNobWVudFtdO1xufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hSZXN1bHRzID0gRnVzZS5GdXNlUmVzdWx0PFNlYXJjaEl0ZW0+W107XG4iXX0=
1
+ export var SearchItemType;
2
+ (function (SearchItemType) {
3
+ SearchItemType["RECORD"] = "RECORD";
4
+ SearchItemType["CATEGORY"] = "CATEGORY";
5
+ })(SearchItemType || (SearchItemType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL25ld3JlcG8va2MtY2xpZW50L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3NlYXJjaC9zZWFyY2gudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQix1Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSBmcm9tICdmdXNlLmpzJztcclxuXHJcbmV4cG9ydCBlbnVtIFNlYXJjaEl0ZW1UeXBlIHtcclxuICBSRUNPUkQgPSAnUkVDT1JEJyxcclxuICBDQVRFR09SWSA9ICdDQVRFR09SWScsXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVjb3JkQXR0YWNobWVudCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEl0ZW0ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogU2VhcmNoSXRlbVR5cGU7XHJcbiAgY3JlYXRlZDogRGF0ZTtcclxuICBtb2RpZmllZDogRGF0ZTtcclxuICBhcmNoaXZlZDogYm9vbGVhbjtcclxuICBwbGFpbk1ldGE6IGFueTtcclxuICBwbGFpbkNpcGhlck1ldGE6IGFueTtcclxuICBwYXJlbnRDYXRlZ29yeUlkPzogc3RyaW5nO1xyXG4gIGF0dGFjaG1lbnRzPzogU2VhcmNoUmVjb3JkQXR0YWNobWVudFtdO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTZWFyY2hSZXN1bHRzID0gRnVzZS5GdXNlUmVzdWx0PFNlYXJjaEl0ZW0+W107XHJcbiJdfQ==