@lifeready/core 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/lifeready-core.umd.js +14 -285
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +1 -1
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/public-api.js +1 -3
- package/fesm2015/lifeready-core.js +1 -208
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +0 -2
- package/esm2015/lib/search/search.gql.js +0 -62
- package/esm2015/lib/search/search.service.js +0 -156
- package/esm2015/lib/search/search.types.js +0 -6
- package/lib/search/search.gql.d.ts +0 -1
- package/lib/search/search.service.d.ts +0 -25
- package/lib/search/search.types.d.ts +0 -20
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -61,8 +61,6 @@ export * from './lib/life-ready.config';
|
|
|
61
61
|
export * from './lib/life-ready.module';
|
|
62
62
|
export * from './lib/plan/plan.types';
|
|
63
63
|
export * from './lib/plan/plan.service';
|
|
64
|
-
export * from './lib/search/search.types';
|
|
65
|
-
export * from './lib/search/search.service';
|
|
66
64
|
export { gqlTyped } from './lib/_common/ast';
|
|
67
65
|
export * from './lib/api/lr-graphql';
|
|
68
66
|
export * from './lib/api/query-processor';
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import gql from 'graphql-tag';
|
|
2
|
-
import { KeyGraphFragment } from '../_common/queries.gql';
|
|
3
|
-
const MAX_CATEGORY_DEPTH = 4;
|
|
4
|
-
const DEFAULT_CATEGORY_DEPTH = 4;
|
|
5
|
-
export const SearchRecordContentsQuery = gql `
|
|
6
|
-
query GetRecordContents(
|
|
7
|
-
$id: LrRelayIdInput!
|
|
8
|
-
$depth: Int
|
|
9
|
-
$first: Int
|
|
10
|
-
$after: String
|
|
11
|
-
$recordContentFilter: LrJSONFilter!
|
|
12
|
-
) {
|
|
13
|
-
category: directory(id: $id) {
|
|
14
|
-
descendantDirectories(depth: $depth) {
|
|
15
|
-
recordContents: files(
|
|
16
|
-
first: $first
|
|
17
|
-
after: $after
|
|
18
|
-
plainMeta: $recordContentFilter
|
|
19
|
-
orderBy: "-created"
|
|
20
|
-
) {
|
|
21
|
-
edges {
|
|
22
|
-
node {
|
|
23
|
-
currentVersion {
|
|
24
|
-
state {
|
|
25
|
-
keyId
|
|
26
|
-
plainMeta
|
|
27
|
-
cipherMeta
|
|
28
|
-
contentResource
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
nParentDirectoryLinks(n: 1) {
|
|
32
|
-
list {
|
|
33
|
-
parentDirectory {
|
|
34
|
-
id
|
|
35
|
-
keyId
|
|
36
|
-
created
|
|
37
|
-
modified
|
|
38
|
-
archived
|
|
39
|
-
plainMeta
|
|
40
|
-
cipherMeta
|
|
41
|
-
nParentDirectoryLinks(n: 3) {
|
|
42
|
-
list {
|
|
43
|
-
parentDirectory {
|
|
44
|
-
id
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
keyGraph {
|
|
57
|
-
...KeyGraphFragment
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
${KeyGraphFragment}
|
|
61
|
-
`;
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmdxbC5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvc2VhcmNoL3NlYXJjaC5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVEeEMsZ0JBQWdCO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IEtleUdyYXBoRnJhZ21lbnQgfSBmcm9tICcuLi9fY29tbW9uL3F1ZXJpZXMuZ3FsJztcbmNvbnN0IE1BWF9DQVRFR09SWV9ERVBUSCA9IDQ7XG5jb25zdCBERUZBVUxUX0NBVEVHT1JZX0RFUFRIID0gNDtcblxuZXhwb3J0IGNvbnN0IFNlYXJjaFJlY29yZENvbnRlbnRzUXVlcnkgPSBncWxgXG4gIHF1ZXJ5IEdldFJlY29yZENvbnRlbnRzKFxuICAgICRpZDogTHJSZWxheUlkSW5wdXQhXG4gICAgJGRlcHRoOiBJbnRcbiAgICAkZmlyc3Q6IEludFxuICAgICRhZnRlcjogU3RyaW5nXG4gICAgJHJlY29yZENvbnRlbnRGaWx0ZXI6IExySlNPTkZpbHRlciFcbiAgKSB7XG4gICAgY2F0ZWdvcnk6IGRpcmVjdG9yeShpZDogJGlkKSB7XG4gICAgICBkZXNjZW5kYW50RGlyZWN0b3JpZXMoZGVwdGg6ICRkZXB0aCkge1xuICAgICAgICByZWNvcmRDb250ZW50czogZmlsZXMoXG4gICAgICAgICAgZmlyc3Q6ICRmaXJzdFxuICAgICAgICAgIGFmdGVyOiAkYWZ0ZXJcbiAgICAgICAgICBwbGFpbk1ldGE6ICRyZWNvcmRDb250ZW50RmlsdGVyXG4gICAgICAgICAgb3JkZXJCeTogXCItY3JlYXRlZFwiXG4gICAgICAgICkge1xuICAgICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiB7XG4gICAgICAgICAgICAgICAgc3RhdGUge1xuICAgICAgICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAgICAgICAgICAgY29udGVudFJlc291cmNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5QYXJlbnREaXJlY3RvcnlMaW5rcyhuOiAxKSB7XG4gICAgICAgICAgICAgICAgbGlzdCB7XG4gICAgICAgICAgICAgICAgICBwYXJlbnREaXJlY3Rvcnkge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBrZXlJZFxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAgICAgICAgIGFyY2hpdmVkXG4gICAgICAgICAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgICAgICAgICBjaXBoZXJNZXRhXG4gICAgICAgICAgICAgICAgICAgIG5QYXJlbnREaXJlY3RvcnlMaW5rcyhuOiAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbGlzdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnREaXJlY3Rvcnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBrZXlHcmFwaCB7XG4gICAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gICAgfVxuICB9XG4gICR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG4iXX0=
|
|
@@ -1,156 +0,0 @@
|
|
|
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,6 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
export declare const SearchRecordContentsQuery: import("graphql").DocumentNode;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { NgZone } from '@angular/core';
|
|
2
|
-
import { LrApolloService } from '../api/lr-apollo.service';
|
|
3
|
-
import { CategoryService } from '../category/category.service';
|
|
4
|
-
import { KeyFactoryService } from '../cryptography/key-factory.service';
|
|
5
|
-
import { KeyGraphService } from '../cryptography/key-graph.service';
|
|
6
|
-
import { RecordService } from '../record/record.service';
|
|
7
|
-
import { SearchItem } from './search.types';
|
|
8
|
-
export declare function debugPopulateRecords(categoryService: CategoryService, recordService: RecordService, keyFactory: KeyFactoryService, recordsPerCategory: number): Promise<void>;
|
|
9
|
-
export declare class SearchService {
|
|
10
|
-
private ngZone;
|
|
11
|
-
private lrApollo;
|
|
12
|
-
private categoryService;
|
|
13
|
-
private keyGraph;
|
|
14
|
-
vaultItems: {
|
|
15
|
-
[itemId: string]: SearchItem;
|
|
16
|
-
};
|
|
17
|
-
recordContentsResult: any;
|
|
18
|
-
constructor(ngZone: NgZone, lrApollo: LrApolloService, categoryService: CategoryService, keyGraph: KeyGraphService);
|
|
19
|
-
private mapRecordContent;
|
|
20
|
-
private mapRecordContents;
|
|
21
|
-
private load;
|
|
22
|
-
refresh(): Promise<{
|
|
23
|
-
[itemId: string]: SearchItem;
|
|
24
|
-
}>;
|
|
25
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import Fuse from 'fuse.js';
|
|
2
|
-
export declare enum SearchItemType {
|
|
3
|
-
RECORD = "RECORD",
|
|
4
|
-
CATEGORY = "CATEGORY"
|
|
5
|
-
}
|
|
6
|
-
export interface SearchRecordAttachment {
|
|
7
|
-
name: string;
|
|
8
|
-
}
|
|
9
|
-
export interface SearchItem {
|
|
10
|
-
id: string;
|
|
11
|
-
type: SearchItemType;
|
|
12
|
-
created: Date;
|
|
13
|
-
modified: Date;
|
|
14
|
-
archived: boolean;
|
|
15
|
-
plainMeta: any;
|
|
16
|
-
plainCipherMeta: any;
|
|
17
|
-
parentCategoryId?: string;
|
|
18
|
-
attachments?: SearchRecordAttachment[];
|
|
19
|
-
}
|
|
20
|
-
export declare type SearchResults = Fuse.FuseResult<SearchItem>[];
|