@api-client/ui 0.0.12 → 0.0.13
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/demo/elements/authorization/cc.ts +56 -27
- package/dist/bindings/base/FileBindings.d.ts +4 -0
- package/dist/bindings/base/FileBindings.d.ts.map +1 -1
- package/dist/bindings/base/FileBindings.js +21 -1
- package/dist/bindings/base/FileBindings.js.map +1 -1
- package/dist/bindings/base/StoreBindings.d.ts +1 -17
- package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
- package/dist/bindings/base/StoreBindings.js +0 -59
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/bindings/web/WebFileBindings.js +1 -1
- package/dist/bindings/web/WebFileBindings.js.map +1 -1
- package/dist/define/http/certificate-add.d.ts +9 -0
- package/dist/define/http/certificate-add.d.ts.map +1 -0
- package/dist/define/http/certificate-add.js +10 -0
- package/dist/define/http/certificate-add.js.map +1 -0
- package/dist/define/ui/ui-segmented-button-set.d.ts +1 -1
- package/dist/define/ui/ui-segmented-button-set.d.ts.map +1 -1
- package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
- package/dist/elements/authorization/ui/CC.styles.d.ts.map +1 -1
- package/dist/elements/authorization/ui/CC.styles.js +4 -9
- package/dist/elements/authorization/ui/CC.styles.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.d.ts +14 -29
- package/dist/elements/authorization/ui/CcAuthorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +67 -158
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/http/CertificateAdd.element.d.ts +91 -0
- package/dist/elements/http/CertificateAdd.element.d.ts.map +1 -0
- package/dist/elements/http/CertificateAdd.element.js +389 -0
- package/dist/elements/http/CertificateAdd.element.js.map +1 -0
- package/dist/elements/http/CertificateAdd.styles.d.ts +3 -0
- package/dist/elements/http/CertificateAdd.styles.d.ts.map +1 -0
- package/dist/elements/http/CertificateAdd.styles.js +61 -0
- package/dist/elements/http/CertificateAdd.styles.js.map +1 -0
- package/dist/elements/project/ProjectRunReport.d.ts +2 -1
- package/dist/elements/project/ProjectRunReport.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunReport.js.map +1 -1
- package/dist/elements/store/FilePicker.styles.d.ts.map +1 -1
- package/dist/elements/store/FilePicker.styles.js +1 -0
- package/dist/elements/store/FilePicker.styles.js.map +1 -1
- package/dist/events/EventTypes.d.ts +6 -7
- package/dist/events/EventTypes.d.ts.map +1 -1
- package/dist/events/EventTypes.js +7 -7
- package/dist/events/EventTypes.js.map +1 -1
- package/dist/events/Events.d.ts +6 -1
- package/dist/events/Events.d.ts.map +1 -1
- package/dist/events/Events.js +2 -0
- package/dist/events/Events.js.map +1 -1
- package/dist/events/FilesystemEvents.d.ts +8 -0
- package/dist/events/FilesystemEvents.d.ts.map +1 -0
- package/dist/events/FilesystemEvents.js +59 -0
- package/dist/events/FilesystemEvents.js.map +1 -0
- package/dist/events/HttpClientEvents.d.ts +0 -2
- package/dist/events/HttpClientEvents.d.ts.map +1 -1
- package/dist/events/HttpClientEvents.js +0 -2
- package/dist/events/HttpClientEvents.js.map +1 -1
- package/dist/http-client/idb/Arc18DataUpgrade.d.ts +0 -8
- package/dist/http-client/idb/Arc18DataUpgrade.d.ts.map +1 -1
- package/dist/http-client/idb/Arc18DataUpgrade.js +11 -206
- package/dist/http-client/idb/Arc18DataUpgrade.js.map +1 -1
- package/dist/http-client/store/StoreBroadcast.d.ts +0 -5
- package/dist/http-client/store/StoreBroadcast.d.ts.map +1 -1
- package/dist/http-client/store/StoreBroadcast.js +0 -7
- package/dist/http-client/store/StoreBroadcast.js.map +1 -1
- package/dist/lib/files/FileUtils.d.ts +9 -0
- package/dist/lib/files/FileUtils.d.ts.map +1 -0
- package/dist/lib/files/FileUtils.js +13 -0
- package/dist/lib/files/FileUtils.js.map +1 -0
- package/dist/mixins/RouteMixin.d.ts +4 -0
- package/dist/mixins/RouteMixin.d.ts.map +1 -1
- package/dist/mixins/RouteMixin.js +1 -0
- package/dist/mixins/RouteMixin.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.d.ts +4 -0
- package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +23 -2
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.js +0 -12
- package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +13 -0
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.d.ts +14 -0
- package/dist/ui/button/SegmentedButtonsSet.d.ts.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
- package/dist/ui/notification/SnackNotifications.d.ts +1 -0
- package/dist/ui/notification/SnackNotifications.d.ts.map +1 -1
- package/dist/ui/notification/SnackNotifications.js +7 -0
- package/dist/ui/notification/SnackNotifications.js.map +1 -1
- package/package.json +1 -1
- package/src/bindings/base/FileBindings.ts +25 -1
- package/src/bindings/base/StoreBindings.ts +1 -73
- package/src/bindings/web/WebFileBindings.ts +1 -1
- package/src/define/http/certificate-add.ts +12 -0
- package/src/define/ui/ui-segmented-button-set.ts +1 -1
- package/src/elements/authorization/ui/CC.styles.ts +4 -9
- package/src/elements/authorization/ui/CcAuthorization.ts +67 -167
- package/src/elements/http/CertificateAdd.element.ts +443 -0
- package/src/elements/http/CertificateAdd.styles.ts +61 -0
- package/src/elements/project/ProjectRunReport.ts +2 -1
- package/src/elements/store/FilePicker.styles.ts +1 -0
- package/src/events/EventTypes.ts +7 -7
- package/src/events/Events.ts +2 -0
- package/src/events/FilesystemEvents.ts +63 -0
- package/src/events/HttpClientEvents.ts +0 -2
- package/src/http-client/idb/Arc18DataUpgrade.ts +84 -84
- package/src/http-client/store/StoreBroadcast.ts +0 -8
- package/src/lib/files/FileUtils.ts +12 -0
- package/src/mixins/RouteMixin.ts +8 -1
- package/src/pages/api-client/ApiClient.screen.ts +26 -2
- package/src/pages/api-client/ApiClient.styles.ts +0 -12
- package/src/pages/api-client/pages/Files.page.ts +11 -0
- package/src/ui/button/SegmentedButtonsSet.ts +16 -1
- package/src/ui/notification/SnackNotifications.ts +8 -0
- package/test/elements/http/BodyFormdataEditorElement.test.ts +458 -454
- package/test/elements/http/BodyMultipartEditorElement.test.ts +609 -605
- package/test/elements/http/BodyRawEditorElement.test.ts +60 -56
- package/test/elements/http/CertificateAdd.test.ts +430 -0
- package/test/events/EventTypes.test.ts +0 -22
- package/test/helpers/UiMock.ts +19 -2
- package/web-test-runner.config.mjs +4 -3
- package/dist/events/http-client/models/CertificatesEvents.d.ts +0 -12
- package/dist/events/http-client/models/CertificatesEvents.d.ts.map +0 -1
- package/dist/events/http-client/models/CertificatesEvents.js +0 -18
- package/dist/events/http-client/models/CertificatesEvents.js.map +0 -1
- package/dist/http-client/idb/AuthDataModel.d.ts +0 -60
- package/dist/http-client/idb/AuthDataModel.d.ts.map +0 -1
- package/dist/http-client/idb/AuthDataModel.js +0 -150
- package/dist/http-client/idb/AuthDataModel.js.map +0 -1
- package/dist/http-client/idb/HostsModel.d.ts +0 -25
- package/dist/http-client/idb/HostsModel.d.ts.map +0 -1
- package/dist/http-client/idb/HostsModel.js +0 -82
- package/dist/http-client/idb/HostsModel.js.map +0 -1
- package/dist/http-client/idb/LegacyMockedStore.d.ts +0 -214
- package/dist/http-client/idb/LegacyMockedStore.d.ts.map +0 -1
- package/dist/http-client/idb/LegacyMockedStore.js +0 -486
- package/dist/http-client/idb/LegacyMockedStore.js.map +0 -1
- package/src/events/http-client/models/CertificatesEvents.ts +0 -23
- package/src/http-client/idb/AuthDataModel.ts +0 -175
- package/src/http-client/idb/HostsModel.ts +0 -125
- package/src/http-client/idb/LegacyMockedStore.ts +0 -544
- package/test/apic-ui.test.ts +0 -31
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/* eslint-disable class-methods-use-this */
|
|
2
2
|
import 'pouchdb/dist/pouchdb.js';
|
|
3
|
-
import { get
|
|
4
|
-
import { HostRuleKind, } from '@api-client/core/build/browser.js'; // Certificate, HttpProject
|
|
3
|
+
import { get } from 'idb-keyval';
|
|
4
|
+
// import { IAuthorizationData, IHostRule, HostRuleKind, } from '@api-client/core/build/browser.js'; // Certificate, HttpProject
|
|
5
|
+
// import { ARCAuthData, HostRule as LegacyHostRule } from '@api-client/core/build/legacy.js'; // Normalizer, ARCProject, ARCSavedRequest, ARCCertificateIndex, ARCRequestCertificate,
|
|
5
6
|
// import { LegacyBodyProcessor } from './LegacyBodyProcessor.js';
|
|
6
7
|
// import { HistoryModel } from './HistoryModel.js';
|
|
7
8
|
// import { ProjectModel } from './ProjectModel.js';
|
|
8
|
-
import { AuthDataModel } from './AuthDataModel.js';
|
|
9
|
+
// import { AuthDataModel } from './AuthDataModel.js';
|
|
9
10
|
// import { CertificateModel } from './CertificateModel.js';
|
|
10
|
-
import { HostsModel } from './HostsModel.js';
|
|
11
|
+
// import { HostsModel } from './HostsModel.js';
|
|
11
12
|
const upgradeKey = 'CHL5v3fUMx';
|
|
12
13
|
/**
|
|
13
14
|
* Version 18 data upgrade.
|
|
@@ -23,208 +24,12 @@ export default class Arc18DataUpgrade {
|
|
|
23
24
|
return !value;
|
|
24
25
|
}
|
|
25
26
|
static async runIfNeeded() {
|
|
26
|
-
const needed = await Arc18DataUpgrade.needsUpgrade();
|
|
27
|
-
if (!needed) {
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
const instance = new Arc18DataUpgrade();
|
|
31
|
-
return instance.run();
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Sets a flag sealing the upgrade. Next call to the `run()` will result with no operation.
|
|
35
|
-
*/
|
|
36
|
-
async seal() {
|
|
37
|
-
await set(upgradeKey, true);
|
|
38
|
-
}
|
|
39
|
-
async run() {
|
|
40
|
-
await this.upgradeHistory();
|
|
41
|
-
// await this.upgradeProjects();
|
|
42
|
-
// await this.upgradeSaved();
|
|
43
|
-
await this.upgradeAuthData();
|
|
44
|
-
// await this.upgradeCertificates();
|
|
45
|
-
await this.hostRules();
|
|
46
|
-
await this.seal();
|
|
47
|
-
}
|
|
48
|
-
async upgradeHistory() {
|
|
49
|
-
const sourceDb = new PouchDB('history-requests');
|
|
50
|
-
await sourceDb.compact();
|
|
51
|
-
// const targetDb = new HistoryModel();
|
|
52
|
-
// await this._upgradeHistoryPage(sourceDb, targetDb);
|
|
53
|
-
}
|
|
54
|
-
// async upgradeProjects(): Promise<void> {
|
|
55
|
-
// const projectsDb = new PouchDB<ARCProject>('legacy-projects');
|
|
56
|
-
// const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');
|
|
57
|
-
// const response = await projectsDb.allDocs({ include_docs: true });
|
|
58
|
-
// if (!response || !response.rows || !response.rows.length) {
|
|
59
|
-
// return;
|
|
60
|
-
// }
|
|
61
|
-
// const projects: ARCProject[] = [];
|
|
62
|
-
// const ids: string[] = [];
|
|
63
|
-
// response.rows.forEach((item) => {
|
|
64
|
-
// const { doc } = item;
|
|
65
|
-
// if (!doc) {
|
|
66
|
-
// return;
|
|
67
|
-
// }
|
|
68
|
-
// projects.push(doc);
|
|
69
|
-
// if (Array.isArray(doc.requests)) {
|
|
70
|
-
// doc.requests.forEach((id) => {
|
|
71
|
-
// if (!ids.includes(id)) {
|
|
72
|
-
// ids.push(id);
|
|
73
|
-
// }
|
|
74
|
-
// });
|
|
75
|
-
// }
|
|
76
|
-
// });
|
|
77
|
-
// const requestsResponse = await savedDb.allDocs({
|
|
78
|
-
// keys: ids,
|
|
79
|
-
// include_docs: true,
|
|
80
|
-
// });
|
|
81
|
-
// const requests: ARCSavedRequest[] = [];
|
|
82
|
-
// requestsResponse.rows.forEach(i => {
|
|
83
|
-
// if (!i || !i.doc) {
|
|
84
|
-
// return;
|
|
85
|
-
// }
|
|
86
|
-
// const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;
|
|
87
|
-
// const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest
|
|
88
|
-
// requests.push(restored);
|
|
89
|
-
// });
|
|
90
|
-
// const ps = projects.map(async (legacy) => {
|
|
91
|
-
// const instance = await HttpProject.fromLegacy(legacy, requests);
|
|
92
|
-
// return instance.toJSON();
|
|
93
|
-
// });
|
|
94
|
-
// const upgrades = await Promise.all(ps);
|
|
95
|
-
// const targetDb = new ProjectModel();
|
|
96
|
-
// await targetDb.putBulk(upgrades);
|
|
97
|
-
// }
|
|
98
|
-
// async upgradeSaved(): Promise<void> {
|
|
99
|
-
// const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');
|
|
100
|
-
// const response = await savedDb.allDocs({ include_docs: true });
|
|
101
|
-
// const requests: ARCSavedRequest[] = [];
|
|
102
|
-
// response.rows.forEach(i => {
|
|
103
|
-
// if (!i || !i.doc) {
|
|
104
|
-
// return;
|
|
105
|
-
// }
|
|
106
|
-
// const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;
|
|
107
|
-
// const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest
|
|
108
|
-
// requests.push(restored);
|
|
109
|
-
// });
|
|
110
|
-
// if (!requests.length) {
|
|
111
|
-
// return;
|
|
112
|
-
// }
|
|
113
|
-
// const project = HttpProject.fromName('Saved requests');
|
|
114
|
-
// const ps = requests.map(i => project.addLegacyRequest(i));
|
|
115
|
-
// await Promise.allSettled(ps);
|
|
116
|
-
// const targetDb = new ProjectModel();
|
|
117
|
-
// await targetDb.put(project.toJSON());
|
|
118
|
-
// }
|
|
119
|
-
async upgradeAuthData() {
|
|
120
|
-
const src = new PouchDB('auth-data');
|
|
121
|
-
const response = await src.allDocs({ include_docs: true });
|
|
122
|
-
const items = [];
|
|
123
|
-
response.rows.forEach(item => {
|
|
124
|
-
const { doc } = item;
|
|
125
|
-
if (!doc) {
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
const transformed = {
|
|
129
|
-
key: doc._id,
|
|
130
|
-
};
|
|
131
|
-
if (doc.domain) {
|
|
132
|
-
transformed.domain = doc.domain;
|
|
133
|
-
}
|
|
134
|
-
if (doc.password) {
|
|
135
|
-
transformed.password = doc.password;
|
|
136
|
-
}
|
|
137
|
-
if (doc.password) {
|
|
138
|
-
transformed.password = doc.password;
|
|
139
|
-
}
|
|
140
|
-
items.push(transformed);
|
|
141
|
-
});
|
|
142
|
-
const model = new AuthDataModel();
|
|
143
|
-
await model.putBulk(items);
|
|
144
|
-
}
|
|
145
|
-
// protected async _upgradeHistoryPage(sourceDb: PouchDB.Database, targetDb: HistoryModel, lastKey?: string): Promise<void> {
|
|
146
|
-
// const opts: PouchDB.Core.AllDocsOptions | PouchDB.Core.AllDocsWithinRangeOptions = {
|
|
147
|
-
// include_docs: true,
|
|
148
|
-
// limit: 500,
|
|
149
|
-
// };
|
|
150
|
-
// if (lastKey) {
|
|
151
|
-
// opts.skip = 1;
|
|
152
|
-
// (opts as PouchDB.Core.AllDocsWithinRangeOptions).startkey = lastKey;
|
|
153
|
-
// }
|
|
154
|
-
// const response = await sourceDb.allDocs(opts);
|
|
155
|
-
// if (!response || !response.rows || !response.rows.length) {
|
|
156
|
-
// return;
|
|
157
|
-
// }
|
|
158
|
-
// const pageKey = response.rows[response.rows.length - 1].key;
|
|
159
|
-
// const upgradePromises = response.rows.map(async (item) => {
|
|
160
|
-
// const old = item.doc as ARCHistoryRequest | undefined;
|
|
161
|
-
// if (!old) {
|
|
162
|
-
// return undefined;
|
|
163
|
-
// }
|
|
164
|
-
// const restored = LegacyBodyProcessor.restorePayload(Normalizer.normalizeRequest(old) as ARCHistoryRequest) as ARCHistoryRequest;
|
|
165
|
-
// const upgraded = await AppRequest.fromLegacy(restored) as AppRequest;
|
|
166
|
-
// const date = new Date(upgraded.created);
|
|
167
|
-
// upgraded.key = date.toJSON();
|
|
168
|
-
// return upgraded.toJSON();
|
|
169
|
-
// });
|
|
170
|
-
// const upgrades = (await Promise.all(upgradePromises)).filter(i => !!i) as IAppRequest[];
|
|
171
|
-
// await targetDb.putBulk(upgrades);
|
|
172
|
-
// if (pageKey) {
|
|
173
|
-
// await this._upgradeHistoryPage(sourceDb, targetDb, pageKey);
|
|
174
|
-
// }
|
|
175
|
-
// }
|
|
176
|
-
// async upgradeCertificates(): Promise<void> {
|
|
177
|
-
// const indexDb = new PouchDB<ARCCertificateIndex>('client-certificates');
|
|
178
|
-
// const dataDb = new PouchDB<ARCRequestCertificate>('client-certificates-data');
|
|
179
|
-
// const upgrades: Certificate[] = [];
|
|
180
|
-
// const indexResponse = await indexDb.allDocs({ include_docs: true });
|
|
181
|
-
// const ps = indexResponse.rows.map(async (item) => {
|
|
182
|
-
// const { doc } = item;
|
|
183
|
-
// if (!doc || !doc.dataKey) {
|
|
184
|
-
// return;
|
|
185
|
-
// }
|
|
186
|
-
// try {
|
|
187
|
-
// const data = await dataDb.get(doc.dataKey) as ARCRequestCertificate;
|
|
188
|
-
// if (data) {
|
|
189
|
-
// const upgraded = Certificate.fromLegacy(doc, data);
|
|
190
|
-
// upgrades.push(upgraded);
|
|
191
|
-
// }
|
|
192
|
-
// } catch (e) {
|
|
193
|
-
// // ...
|
|
194
|
-
// }
|
|
195
|
-
// });
|
|
196
|
-
// await Promise.all(ps);
|
|
197
|
-
// if (!upgrades.length) {
|
|
198
|
-
// return;
|
|
199
|
-
// }
|
|
200
|
-
// const model = new CertificateModel();
|
|
201
|
-
// await model.putBulk(upgrades);
|
|
202
|
-
// }
|
|
203
|
-
async hostRules() {
|
|
204
|
-
const srcDb = new PouchDB('host-rules');
|
|
205
|
-
const response = await srcDb.allDocs({ include_docs: true });
|
|
206
|
-
const items = [];
|
|
207
|
-
response.rows.forEach(item => {
|
|
208
|
-
const { doc } = item;
|
|
209
|
-
if (!doc) {
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
const transformed = {
|
|
213
|
-
kind: HostRuleKind,
|
|
214
|
-
from: doc.from,
|
|
215
|
-
to: doc.to,
|
|
216
|
-
key: doc._id,
|
|
217
|
-
};
|
|
218
|
-
if (doc.comment) {
|
|
219
|
-
transformed.comment = doc.comment;
|
|
220
|
-
}
|
|
221
|
-
if (typeof doc.enabled === 'boolean') {
|
|
222
|
-
transformed.enabled = doc.enabled;
|
|
223
|
-
}
|
|
224
|
-
items.push(transformed);
|
|
225
|
-
});
|
|
226
|
-
const model = new HostsModel();
|
|
227
|
-
await model.putBulk(items);
|
|
27
|
+
// const needed = await Arc18DataUpgrade.needsUpgrade();
|
|
28
|
+
// if (!needed) {
|
|
29
|
+
// return undefined;
|
|
30
|
+
// }
|
|
31
|
+
// const instance = new Arc18DataUpgrade();
|
|
32
|
+
// return instance.run();
|
|
228
33
|
}
|
|
229
34
|
}
|
|
230
35
|
//# sourceMappingURL=Arc18DataUpgrade.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Arc18DataUpgrade.js","sourceRoot":"","sources":["../../../src/http-client/idb/Arc18DataUpgrade.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport 'pouchdb/dist/pouchdb.js';\nimport { get, set } from 'idb-keyval';\nimport { IAuthorizationData, IHostRule, HostRuleKind, } from '@api-client/core/build/browser.js'; // Certificate, HttpProject\nimport { ARCAuthData, HostRule as LegacyHostRule } from '@api-client/core/build/legacy.js'; // Normalizer, ARCProject, ARCSavedRequest, ARCCertificateIndex, ARCRequestCertificate,\n// import { LegacyBodyProcessor } from './LegacyBodyProcessor.js';\n// import { HistoryModel } from './HistoryModel.js';\n// import { ProjectModel } from './ProjectModel.js';\nimport { AuthDataModel } from './AuthDataModel.js';\n// import { CertificateModel } from './CertificateModel.js';\nimport { HostsModel } from './HostsModel.js';\n\nconst upgradeKey = 'CHL5v3fUMx';\n\n/**\n * Version 18 data upgrade.\n * \n * This upgrade reads thr PouchDB data and moves it to own data store.\n * \n * This must be performed in the UI thread (or a worker of the UI thread)\n * so it has access to the same data store.\n */\nexport default class Arc18DataUpgrade {\n static async needsUpgrade(): Promise<boolean> {\n const value = get(upgradeKey);\n return !value;\n }\n\n static async runIfNeeded(): Promise<void> {\n const needed = await Arc18DataUpgrade.needsUpgrade();\n if (!needed) {\n return undefined;\n }\n const instance = new Arc18DataUpgrade();\n return instance.run();\n }\n\n /**\n * Sets a flag sealing the upgrade. Next call to the `run()` will result with no operation.\n */\n async seal(): Promise<void> {\n await set(upgradeKey, true);\n }\n\n async run(): Promise<void> {\n await this.upgradeHistory();\n // await this.upgradeProjects();\n // await this.upgradeSaved();\n await this.upgradeAuthData();\n // await this.upgradeCertificates();\n await this.hostRules();\n\n await this.seal();\n }\n\n async upgradeHistory(): Promise<void> {\n const sourceDb = new PouchDB('history-requests');\n await sourceDb.compact();\n // const targetDb = new HistoryModel();\n // await this._upgradeHistoryPage(sourceDb, targetDb);\n }\n\n // async upgradeProjects(): Promise<void> {\n // const projectsDb = new PouchDB<ARCProject>('legacy-projects');\n // const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');\n\n // const response = await projectsDb.allDocs({ include_docs: true });\n // if (!response || !response.rows || !response.rows.length) {\n // return;\n // }\n // const projects: ARCProject[] = [];\n // const ids: string[] = [];\n // response.rows.forEach((item) => {\n // const { doc } = item;\n // if (!doc) {\n // return;\n // }\n // projects.push(doc);\n // if (Array.isArray(doc.requests)) {\n // doc.requests.forEach((id) => {\n // if (!ids.includes(id)) {\n // ids.push(id);\n // }\n // });\n // }\n // });\n // const requestsResponse = await savedDb.allDocs({\n // keys: ids,\n // include_docs: true,\n // });\n // const requests: ARCSavedRequest[] = [];\n // requestsResponse.rows.forEach(i => {\n // if (!i || !i.doc) {\n // return;\n // }\n // const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;\n // const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest\n // requests.push(restored);\n // });\n // const ps = projects.map(async (legacy) => {\n // const instance = await HttpProject.fromLegacy(legacy, requests);\n // return instance.toJSON();\n // });\n // const upgrades = await Promise.all(ps);\n // const targetDb = new ProjectModel();\n // await targetDb.putBulk(upgrades);\n // }\n\n // async upgradeSaved(): Promise<void> {\n // const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');\n // const response = await savedDb.allDocs({ include_docs: true });\n // const requests: ARCSavedRequest[] = [];\n // response.rows.forEach(i => {\n // if (!i || !i.doc) {\n // return;\n // }\n // const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;\n // const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest\n // requests.push(restored);\n // });\n // if (!requests.length) {\n // return;\n // }\n // const project = HttpProject.fromName('Saved requests');\n // const ps = requests.map(i => project.addLegacyRequest(i));\n // await Promise.allSettled(ps);\n // const targetDb = new ProjectModel();\n // await targetDb.put(project.toJSON());\n // }\n\n async upgradeAuthData(): Promise<void> {\n const src = new PouchDB<ARCAuthData>('auth-data');\n const response = await src.allDocs({ include_docs: true });\n const items: IAuthorizationData[] = [];\n response.rows.forEach(item => {\n const { doc } = item;\n if (!doc) {\n return;\n }\n const transformed: IAuthorizationData = {\n key: doc._id,\n };\n if (doc.domain) {\n transformed.domain = doc.domain;\n }\n if (doc.password) {\n transformed.password = doc.password;\n }\n if (doc.password) {\n transformed.password = doc.password;\n }\n items.push(transformed);\n });\n const model = new AuthDataModel();\n await model.putBulk(items);\n }\n\n // protected async _upgradeHistoryPage(sourceDb: PouchDB.Database, targetDb: HistoryModel, lastKey?: string): Promise<void> {\n // const opts: PouchDB.Core.AllDocsOptions | PouchDB.Core.AllDocsWithinRangeOptions = {\n // include_docs: true,\n // limit: 500,\n // };\n // if (lastKey) {\n // opts.skip = 1;\n // (opts as PouchDB.Core.AllDocsWithinRangeOptions).startkey = lastKey;\n // }\n // const response = await sourceDb.allDocs(opts);\n // if (!response || !response.rows || !response.rows.length) {\n // return;\n // }\n // const pageKey = response.rows[response.rows.length - 1].key;\n // const upgradePromises = response.rows.map(async (item) => {\n // const old = item.doc as ARCHistoryRequest | undefined;\n // if (!old) {\n // return undefined;\n // }\n // const restored = LegacyBodyProcessor.restorePayload(Normalizer.normalizeRequest(old) as ARCHistoryRequest) as ARCHistoryRequest;\n\n // const upgraded = await AppRequest.fromLegacy(restored) as AppRequest;\n // const date = new Date(upgraded.created);\n // upgraded.key = date.toJSON();\n // return upgraded.toJSON();\n // });\n // const upgrades = (await Promise.all(upgradePromises)).filter(i => !!i) as IAppRequest[];\n // await targetDb.putBulk(upgrades);\n // if (pageKey) {\n // await this._upgradeHistoryPage(sourceDb, targetDb, pageKey);\n // }\n // }\n\n // async upgradeCertificates(): Promise<void> {\n // const indexDb = new PouchDB<ARCCertificateIndex>('client-certificates');\n // const dataDb = new PouchDB<ARCRequestCertificate>('client-certificates-data');\n // const upgrades: Certificate[] = [];\n // const indexResponse = await indexDb.allDocs({ include_docs: true });\n // const ps = indexResponse.rows.map(async (item) => {\n // const { doc } = item;\n // if (!doc || !doc.dataKey) {\n // return;\n // }\n // try {\n // const data = await dataDb.get(doc.dataKey) as ARCRequestCertificate;\n // if (data) {\n // const upgraded = Certificate.fromLegacy(doc, data);\n // upgrades.push(upgraded);\n // }\n // } catch (e) {\n // // ...\n // }\n // });\n // await Promise.all(ps);\n // if (!upgrades.length) {\n // return;\n // }\n // const model = new CertificateModel();\n // await model.putBulk(upgrades);\n // }\n\n async hostRules(): Promise<void> {\n const srcDb = new PouchDB<LegacyHostRule>('host-rules');\n const response = await srcDb.allDocs({ include_docs: true });\n const items: IHostRule[] = [];\n response.rows.forEach(item => {\n const { doc } = item;\n if (!doc) {\n return;\n }\n const transformed: IHostRule = {\n kind: HostRuleKind,\n from: doc.from,\n to: doc.to,\n key: doc._id,\n };\n if (doc.comment) {\n transformed.comment = doc.comment;\n }\n if (typeof doc.enabled === 'boolean') {\n transformed.enabled = doc.enabled;\n }\n items.push(transformed);\n });\n const model = new HostsModel();\n await model.putBulk(items);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Arc18DataUpgrade.js","sourceRoot":"","sources":["../../../src/http-client/idb/Arc18DataUpgrade.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,gIAAgI;AAChI,sLAAsL;AACtL,kEAAkE;AAClE,oDAAoD;AACpD,oDAAoD;AACpD,sDAAsD;AACtD,4DAA4D;AAC5D,gDAAgD;AAEhD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,MAAM,CAAC,KAAK,CAAC,YAAY;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW;QACtB,wDAAwD;QACxD,iBAAiB;QACjB,sBAAsB;QACtB,IAAI;QACJ,2CAA2C;QAC3C,yBAAyB;IAC3B,CAAC;CAiNF","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport 'pouchdb/dist/pouchdb.js';\nimport { get } from 'idb-keyval';\n// import { IAuthorizationData, IHostRule, HostRuleKind, } from '@api-client/core/build/browser.js'; // Certificate, HttpProject\n// import { ARCAuthData, HostRule as LegacyHostRule } from '@api-client/core/build/legacy.js'; // Normalizer, ARCProject, ARCSavedRequest, ARCCertificateIndex, ARCRequestCertificate,\n// import { LegacyBodyProcessor } from './LegacyBodyProcessor.js';\n// import { HistoryModel } from './HistoryModel.js';\n// import { ProjectModel } from './ProjectModel.js';\n// import { AuthDataModel } from './AuthDataModel.js';\n// import { CertificateModel } from './CertificateModel.js';\n// import { HostsModel } from './HostsModel.js';\n\nconst upgradeKey = 'CHL5v3fUMx';\n\n/**\n * Version 18 data upgrade.\n * \n * This upgrade reads thr PouchDB data and moves it to own data store.\n * \n * This must be performed in the UI thread (or a worker of the UI thread)\n * so it has access to the same data store.\n */\nexport default class Arc18DataUpgrade {\n static async needsUpgrade(): Promise<boolean> {\n const value = get(upgradeKey);\n return !value;\n }\n\n static async runIfNeeded(): Promise<void> {\n // const needed = await Arc18DataUpgrade.needsUpgrade();\n // if (!needed) {\n // return undefined;\n // }\n // const instance = new Arc18DataUpgrade();\n // return instance.run();\n }\n\n // /**\n // * Sets a flag sealing the upgrade. Next call to the `run()` will result with no operation.\n // */\n // async seal(): Promise<void> {\n // await set(upgradeKey, true);\n // }\n\n // async run(): Promise<void> {\n // await this.upgradeHistory();\n // await this.upgradeProjects();\n // await this.upgradeSaved();\n // await this.upgradeAuthData();\n // await this.upgradeCertificates();\n // await this.hostRules();\n\n // await this.seal();\n // }\n\n // async upgradeHistory(): Promise<void> {\n // const sourceDb = new PouchDB('history-requests');\n // await sourceDb.compact();\n // const targetDb = new HistoryModel();\n // await this._upgradeHistoryPage(sourceDb, targetDb);\n // }\n\n // async upgradeProjects(): Promise<void> {\n // const projectsDb = new PouchDB<ARCProject>('legacy-projects');\n // const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');\n\n // const response = await projectsDb.allDocs({ include_docs: true });\n // if (!response || !response.rows || !response.rows.length) {\n // return;\n // }\n // const projects: ARCProject[] = [];\n // const ids: string[] = [];\n // response.rows.forEach((item) => {\n // const { doc } = item;\n // if (!doc) {\n // return;\n // }\n // projects.push(doc);\n // if (Array.isArray(doc.requests)) {\n // doc.requests.forEach((id) => {\n // if (!ids.includes(id)) {\n // ids.push(id);\n // }\n // });\n // }\n // });\n // const requestsResponse = await savedDb.allDocs({\n // keys: ids,\n // include_docs: true,\n // });\n // const requests: ARCSavedRequest[] = [];\n // requestsResponse.rows.forEach(i => {\n // if (!i || !i.doc) {\n // return;\n // }\n // const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;\n // const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest\n // requests.push(restored);\n // });\n // const ps = projects.map(async (legacy) => {\n // const instance = await HttpProject.fromLegacy(legacy, requests);\n // return instance.toJSON();\n // });\n // const upgrades = await Promise.all(ps);\n // const targetDb = new ProjectModel();\n // await targetDb.putBulk(upgrades);\n // }\n\n // async upgradeSaved(): Promise<void> {\n // const savedDb = new PouchDB<ARCSavedRequest>('saved-requests');\n // const response = await savedDb.allDocs({ include_docs: true });\n // const requests: ARCSavedRequest[] = [];\n // response.rows.forEach(i => {\n // if (!i || !i.doc) {\n // return;\n // }\n // const normalized = Normalizer.normalizeRequest(i.doc) as ARCSavedRequest;\n // const restored = LegacyBodyProcessor.restorePayload(normalized) as ARCSavedRequest\n // requests.push(restored);\n // });\n // if (!requests.length) {\n // return;\n // }\n // const project = HttpProject.fromName('Saved requests');\n // const ps = requests.map(i => project.addLegacyRequest(i));\n // await Promise.allSettled(ps);\n // const targetDb = new ProjectModel();\n // await targetDb.put(project.toJSON());\n // }\n\n // async upgradeAuthData(): Promise<void> {\n // const src = new PouchDB<ARCAuthData>('auth-data');\n // const response = await src.allDocs({ include_docs: true });\n // const items: IAuthorizationData[] = [];\n // response.rows.forEach(item => {\n // const { doc } = item;\n // if (!doc) {\n // return;\n // }\n // const transformed: IAuthorizationData = {\n // key: doc._id,\n // };\n // if (doc.domain) {\n // transformed.domain = doc.domain;\n // }\n // if (doc.password) {\n // transformed.password = doc.password;\n // }\n // if (doc.password) {\n // transformed.password = doc.password;\n // }\n // items.push(transformed);\n // });\n // const model = new AuthDataModel();\n // await model.putBulk(items);\n // }\n\n // protected async _upgradeHistoryPage(sourceDb: PouchDB.Database, targetDb: HistoryModel, lastKey?: string): Promise<void> {\n // const opts: PouchDB.Core.AllDocsOptions | PouchDB.Core.AllDocsWithinRangeOptions = {\n // include_docs: true,\n // limit: 500,\n // };\n // if (lastKey) {\n // opts.skip = 1;\n // (opts as PouchDB.Core.AllDocsWithinRangeOptions).startkey = lastKey;\n // }\n // const response = await sourceDb.allDocs(opts);\n // if (!response || !response.rows || !response.rows.length) {\n // return;\n // }\n // const pageKey = response.rows[response.rows.length - 1].key;\n // const upgradePromises = response.rows.map(async (item) => {\n // const old = item.doc as ARCHistoryRequest | undefined;\n // if (!old) {\n // return undefined;\n // }\n // const restored = LegacyBodyProcessor.restorePayload(Normalizer.normalizeRequest(old) as ARCHistoryRequest) as ARCHistoryRequest;\n\n // const upgraded = await AppRequest.fromLegacy(restored) as AppRequest;\n // const date = new Date(upgraded.created);\n // upgraded.key = date.toJSON();\n // return upgraded.toJSON();\n // });\n // const upgrades = (await Promise.all(upgradePromises)).filter(i => !!i) as IAppRequest[];\n // await targetDb.putBulk(upgrades);\n // if (pageKey) {\n // await this._upgradeHistoryPage(sourceDb, targetDb, pageKey);\n // }\n // }\n\n // async upgradeCertificates(): Promise<void> {\n // const indexDb = new PouchDB<ARCCertificateIndex>('client-certificates');\n // const dataDb = new PouchDB<ARCRequestCertificate>('client-certificates-data');\n // const upgrades: Certificate[] = [];\n // const indexResponse = await indexDb.allDocs({ include_docs: true });\n // const ps = indexResponse.rows.map(async (item) => {\n // const { doc } = item;\n // if (!doc || !doc.dataKey) {\n // return;\n // }\n // try {\n // const data = await dataDb.get(doc.dataKey) as ARCRequestCertificate;\n // if (data) {\n // const upgraded = Certificate.fromLegacy(doc, data);\n // upgrades.push(upgraded);\n // }\n // } catch (e) {\n // // ...\n // }\n // });\n // await Promise.all(ps);\n // if (!upgrades.length) {\n // return;\n // }\n // const model = new CertificateModel();\n // await model.putBulk(upgrades);\n // }\n\n // async hostRules(): Promise<void> {\n // const srcDb = new PouchDB<LegacyHostRule>('host-rules');\n // const response = await srcDb.allDocs({ include_docs: true });\n // const items: IHostRule[] = [];\n // response.rows.forEach(item => {\n // const { doc } = item;\n // if (!doc) {\n // return;\n // }\n // const transformed: IHostRule = {\n // kind: HostRuleKind,\n // from: doc.from,\n // to: doc.to,\n // key: doc._id,\n // };\n // if (doc.comment) {\n // transformed.comment = doc.comment;\n // }\n // if (typeof doc.enabled === 'boolean') {\n // transformed.enabled = doc.enabled;\n // }\n // items.push(transformed);\n // });\n // const model = new HostsModel();\n // await model.putBulk(items);\n // }\n}\n"]}
|
|
@@ -34,11 +34,6 @@ export declare class StoreBroadcast {
|
|
|
34
34
|
* to communicate changes between contexts for the WsHistory store.
|
|
35
35
|
*/
|
|
36
36
|
static get wsHistory(): string;
|
|
37
|
-
/**
|
|
38
|
-
* The path used to construct a `BroadcastChannel` (or similar)
|
|
39
|
-
* to communicate changes between contexts for the Certificates store.
|
|
40
|
-
*/
|
|
41
|
-
static get certificates(): string;
|
|
42
37
|
/**
|
|
43
38
|
* The path used to construct a `BroadcastChannel` (or similar)
|
|
44
39
|
* to communicate changes between contexts for the History store.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreBroadcast.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/StoreBroadcast.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,MAAM,KAAK,MAAM,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,UAAU,IAAI,MAAM,CAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"StoreBroadcast.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/StoreBroadcast.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,MAAM,KAAK,MAAM,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,MAAM,KAAK,UAAU,IAAI,MAAM,CAE9B;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,MAAM,KAAK,OAAO,IAAI,MAAM,CAE3B;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS,IAAI,MAAM,CAE7B;IAED,MAAM,KAAK,WAAW,IAAI,MAAM,CAE/B;CACF"}
|
|
@@ -48,13 +48,6 @@ export class StoreBroadcast {
|
|
|
48
48
|
static get wsHistory() {
|
|
49
49
|
return '/store/history/ws';
|
|
50
50
|
}
|
|
51
|
-
/**
|
|
52
|
-
* The path used to construct a `BroadcastChannel` (or similar)
|
|
53
|
-
* to communicate changes between contexts for the Certificates store.
|
|
54
|
-
*/
|
|
55
|
-
static get certificates() {
|
|
56
|
-
return '/store/certificates';
|
|
57
|
-
}
|
|
58
51
|
/**
|
|
59
52
|
* The path used to construct a `BroadcastChannel` (or similar)
|
|
60
53
|
* to communicate changes between contexts for the History store.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreBroadcast.js","sourceRoot":"","sources":["../../../src/http-client/store/StoreBroadcast.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS;QAClB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,MAAM;QACf,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,UAAU;QACnB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS;QAClB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"StoreBroadcast.js","sourceRoot":"","sources":["../../../src/http-client/store/StoreBroadcast.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS;QAClB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,MAAM;QACf,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,UAAU;QACnB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS;QAClB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,OAAO;QAChB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,MAAM,KAAK,SAAS;QAClB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,qBAAqB,CAAC;IAC/B,CAAC;CACF","sourcesContent":["export class StoreBroadcast {\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the Files store.\n */\n static get files(): string {\n return '/store/files?alt=meta';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the Media store.\n */\n static get media(): string {\n return '/store/files?alt=media';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the Revisions store.\n */\n static get revisions(): string {\n return '/store/files/revisions';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the Spaces store.\n */\n static get spaces(): string {\n return '/store/spaces';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the Trash store.\n */\n static get trash(): string {\n return '/store/trash';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the UrlHistory store.\n */\n static get urlHistory(): string {\n return '/store/history/url';\n }\n \n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the WsHistory store.\n */\n static get wsHistory(): string {\n return '/store/history/ws';\n }\n\n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the History store.\n */\n static get history(): string {\n return '/store/history';\n }\n \n /**\n * The path used to construct a `BroadcastChannel` (or similar) \n * to communicate changes between contexts for the ProjectUi store.\n */\n static get projectUi(): string {\n return '/store/project/ui';\n }\n \n static get projectRuns(): string {\n return '/store/project/runs';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/files/FileUtils.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IACpB;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAKzC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class FileUtils {
|
|
2
|
+
/**
|
|
3
|
+
* Reads the last segment of the file path and returns it as a file name.
|
|
4
|
+
*
|
|
5
|
+
* @param path THe file path.
|
|
6
|
+
*/
|
|
7
|
+
static getFileName(path) {
|
|
8
|
+
const delimiter = path.includes('/') ? '/' : '\\';
|
|
9
|
+
const last = path.split(delimiter).pop();
|
|
10
|
+
return last || '';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=FileUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUtils.js","sourceRoot":"","sources":["../../../src/lib/files/FileUtils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IACpB;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;CACF","sourcesContent":["export class FileUtils {\n /**\n * Reads the last segment of the file path and returns it as a file name.\n * \n * @param path THe file path.\n */\n static getFileName(path: string): string {\n const delimiter = path.includes('/') ? '/' : '\\\\';\n const last = path.split(delimiter).pop();\n return last || '';\n }\n}\n"]}
|
|
@@ -41,6 +41,10 @@ export declare class RouteMixinInterface {
|
|
|
41
41
|
* The list of routes to handle.
|
|
42
42
|
*/
|
|
43
43
|
static get routes(): IRoute[];
|
|
44
|
+
/**
|
|
45
|
+
* The current route parameters. This is the same what is passed to the route handler.
|
|
46
|
+
*/
|
|
47
|
+
protected currentRoute?: IRouteResult;
|
|
44
48
|
/**
|
|
45
49
|
* Initializes the routing.
|
|
46
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMixin.d.ts","sourceRoot":"","sources":["../../src/mixins/RouteMixin.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAuDD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC;;OAEG;IACH,MAAM,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC;IAE9B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAEzB;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;CAChC;AAGD,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"RouteMixin.d.ts","sourceRoot":"","sources":["../../src/mixins/RouteMixin.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAuDD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC;;OAEG;IACH,MAAM,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAEtC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAEzB;;OAEG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;CAChC;AAGD,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CA6E7G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteMixin.js","sourceRoot":"","sources":["../../src/mixins/RouteMixin.ts"],"names":[],"mappings":"AA4CA;;GAEG;AACH,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAW,EAAE,OAAe;IAC7C,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,OAAe,EAAE,GAAW;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAClC,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAW,CAAC;YAClC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACpB,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;aAClE;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,4CAA4C,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY;IACnB,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;AACxF,CAAC;
|
|
1
|
+
{"version":3,"file":"RouteMixin.js","sourceRoot":"","sources":["../../src/mixins/RouteMixin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable max-classes-per-file */\ntype Constructor<T = {}> = new (...args: any[]) => T;\n\nexport interface IRoute {\n /**\n * The route pattern to evaluate\n */\n pattern?: string;\n /**\n * Whether to call this method when a navigation occurs \n * and the router function couldn't find a match.\n * \n * Can be combined with a patter to define a default route.\n * Setting this multiple times on different route won't change\n * the fallback route. The first matched route will be called.\n */\n fallback?: boolean;\n /**\n * Optional name to pass to the route callback.\n */\n name?: string;\n /**\n * When set it automatically updated the document title on route.\n */\n title?: string;\n /**\n * The class method to call when the route is matched.\n */\n method: string;\n}\n\nexport interface IRouteResult {\n /**\n * The matched route\n */\n route: IRoute;\n /**\n * Captured parameters\n */\n params?: Record<string, string|string[]>;\n}\n\n/**\n * @param value The pattern to evaluate\n */\nfunction getPattern(value: string): RegExp {\n return new RegExp(`^${value}$`);\n}\n\n/**\n * @param uri The path value of the current URL.\n * @param pattern The pattern to evaluate\n */\nfunction testRoute(uri: string, pattern: string): boolean {\n return getPattern(pattern).test(uri);\n}\n\n/**\n * @param pattern The pattern to evaluate\n * @param uri The path value of the current URL.\n */\nfunction parseParams(pattern: string, uri: string): Record<string, string|string[]> | undefined {\n const r = getPattern(pattern);\n const match = r.exec(uri);\n if (!match) {\n return undefined;\n }\n const { groups } = match;\n const result: Record<string, string|string[]> = {};\n if (groups) {\n Object.keys(groups).forEach((key) => {\n let value = groups[key] as string;\n if (value[0] === '/') {\n value = value.substring(1);\n }\n if (value.includes('/')) {\n result[key] = value.split('/').map((i) => decodeURIComponent(i));\n } else {\n result[key] = decodeURIComponent(value);\n }\n });\n }\n return result\n}\n\nfunction warnNoFallback(path: string): void {\n // eslint-disable-next-line no-console\n console.warn(`Unable to find a fallback route for path ${path || '/'}.`);\n}\n\nfunction warnNoRoutes(): void {\n // eslint-disable-next-line no-console\n console.warn('The route callback was called but no routes are defined on the class.');\n}\n\nexport declare class RouteMixinInterface {\n /**\n * The list of routes to handle.\n */\n static get routes(): IRoute[];\n\n /**\n * The current route parameters. This is the same what is passed to the route handler.\n */\n protected currentRoute?: IRouteResult;\n\n /**\n * Initializes the routing.\n */\n initializeRouting(): void;\n\n /**\n * A handler when route change.\n */\n protected _routeHandler(): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function RouteMixin<T extends Constructor<Object>>(superClass: T): Constructor<RouteMixinInterface> & T {\n class RouteMixinClass extends superClass {\n static get routes(): IRoute[] {\n return []\n }\n\n protected currentRoute?: IRouteResult;\n\n constructor(...args: any[]) {\n super(...args);\n this._routeHandler = this._routeHandler.bind(this);\n }\n \n initializeRouting(): void {\n window.onpopstate = (): void => this._routeHandler();\n requestAnimationFrame(() => {\n this._routeHandler();\n });\n }\n\n protected _routeHandler(): void {\n const routes = Reflect.get(this.constructor, 'routes') as IRoute[];\n if (!Array.isArray(routes) || !routes.length) {\n warnNoRoutes();\n return;\n }\n const url = new URL(window.location.href);\n const path = url.hash.replace('#', '');\n const patternRoutes = routes.filter(r => !!r.pattern && r.pattern !== '*');\n const requiredRoutes = routes.filter(r => r.pattern === '*');\n let activeRoute = patternRoutes.find((r) => testRoute(path, r.pattern as string));\n if (!activeRoute) {\n activeRoute = routes.find((r) => r.fallback);\n if (!activeRoute) {\n warnNoFallback(path);\n return;\n }\n }\n const routeCopy = { ...activeRoute };\n const argument: IRouteResult = {\n route: routeCopy,\n };\n if (activeRoute.pattern) {\n const params = parseParams(activeRoute.pattern, path);\n if (params) {\n argument.params = params;\n }\n }\n this.currentRoute = argument;\n this._callRoute(activeRoute, argument);\n if (activeRoute.title) {\n document.title = activeRoute.title;\n }\n requiredRoutes.forEach((r) => {\n this._callRoute(r, argument)\n });\n }\n\n protected _callRoute(route: IRoute, argument: IRouteResult): void {\n if (typeof route.method !== 'string') {\n // eslint-disable-next-line no-console\n console.warn('The route method is not a string.');\n return;\n }\n // @ts-ignore\n const fn = this[route.method] as Function;\n // @ts-ignore\n if (typeof fn !== 'function') {\n // eslint-disable-next-line no-console\n console.warn('The route method is not defined.');\n return;\n }\n fn.apply(this, [argument]);\n }\n }\n // @ts-ignore\n return RouteMixinClass as Constructor<RouteMixinInterface> & T;\n}\n"]}
|
|
@@ -16,6 +16,7 @@ import '../../define/ui/ui-icon-button.js';
|
|
|
16
16
|
import '../../define/ui/ui-text-field.js';
|
|
17
17
|
import '../../define/ui/ui-dropdown-list.js';
|
|
18
18
|
import '../../define/ui/ui-divider.js';
|
|
19
|
+
import '../../define/http/certificate-add.js';
|
|
19
20
|
export interface PageInit extends ApplicationInit {
|
|
20
21
|
idb: HttpClientStoreBindings;
|
|
21
22
|
navigation: NavigationBindings;
|
|
@@ -80,6 +81,8 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
80
81
|
protected sharedRoute(info: IRouteResult): void;
|
|
81
82
|
protected trashRoute(): void;
|
|
82
83
|
protected settingsRoute(): void;
|
|
84
|
+
protected addCertRoute(): void;
|
|
85
|
+
protected handleCertificateClose(): void;
|
|
83
86
|
protected mainNavHandler(e: Event): void;
|
|
84
87
|
protected workspaceCreateFormHandler(e: SubmitEvent): void;
|
|
85
88
|
protected addWorkspace(name: string): Promise<void>;
|
|
@@ -108,5 +111,6 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
108
111
|
protected spacesSetupTemplate(): TemplateResult;
|
|
109
112
|
protected renderCreateWorkspaceDialog(): TemplateResult;
|
|
110
113
|
protected renderDeleteWorkspaceDialog(): TemplateResult;
|
|
114
|
+
protected renderAddCertificate(): TemplateResult;
|
|
111
115
|
}
|
|
112
116
|
//# sourceMappingURL=ApiClient.screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiClient.screen.d.ts","sourceRoot":"","sources":["../../../src/pages/api-client/ApiClient.screen.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,cAAc,EAAE,SAAS,EAAW,MAAM,KAAK,CAAC;AAC/D,OAAO,EAAyC,KAAK,EAAE,MAAM,EAAU,MAAM,mCAAmC,CAAC;AACjH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiClient.screen.d.ts","sourceRoot":"","sources":["../../../src/pages/api-client/ApiClient.screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { ApplicationScreen } from '../ApplicationScreen.js';
|
|
|
6
6
|
import pageStyles from './ApiClient.styles.js';
|
|
7
7
|
import globalStyles from '../../styles/global-styles.js';
|
|
8
8
|
import typography from '../../styles/m3/typography.module.js';
|
|
9
|
+
import surface from '../../styles/m3/surface.module.js';
|
|
9
10
|
import dialogStyles from '../../styles/m3/dialog.module.js';
|
|
10
11
|
import { navigate } from '../../lib/route.js';
|
|
11
12
|
import { reactive } from '../../lib/decorators.js';
|
|
@@ -23,6 +24,7 @@ import '../../define/ui/ui-icon-button.js';
|
|
|
23
24
|
import '../../define/ui/ui-text-field.js';
|
|
24
25
|
import '../../define/ui/ui-dropdown-list.js';
|
|
25
26
|
import '../../define/ui/ui-divider.js';
|
|
27
|
+
import '../../define/http/certificate-add.js';
|
|
26
28
|
/**
|
|
27
29
|
* API Client is the entry point to the suite.
|
|
28
30
|
* It renders the list of user files, allows to configure a connection to a store,
|
|
@@ -37,10 +39,11 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
37
39
|
{ pattern: '/shared/(?<key>.*)', method: 'sharedRoute', name: 'Shares', title: 'Shared with you' },
|
|
38
40
|
{ pattern: '/trash', method: 'trashRoute', name: 'Trash', title: 'Trash' },
|
|
39
41
|
{ pattern: '/settings', method: 'settingsRoute', name: 'Settings', title: 'Settings' },
|
|
42
|
+
{ pattern: '/certificates/add/?(?<parent>.*)', method: 'addCertRoute', name: 'Add certificate', title: 'Add certificate' },
|
|
40
43
|
];
|
|
41
44
|
}
|
|
42
45
|
static get styles() {
|
|
43
|
-
return [globalStyles, pageStyles, typography, dialogStyles, DataTable.styles];
|
|
46
|
+
return [globalStyles, pageStyles, typography, dialogStyles, DataTable.styles, surface];
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* Whether the current user has spaces defined in the store.
|
|
@@ -316,6 +319,13 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
316
319
|
this.resetRoute();
|
|
317
320
|
this.page = 'settings';
|
|
318
321
|
}
|
|
322
|
+
addCertRoute() {
|
|
323
|
+
this.resetRoute();
|
|
324
|
+
this.page = 'add-cert';
|
|
325
|
+
}
|
|
326
|
+
handleCertificateClose() {
|
|
327
|
+
window.history.back();
|
|
328
|
+
}
|
|
319
329
|
mainNavHandler(e) {
|
|
320
330
|
const target = e.target;
|
|
321
331
|
const { page } = target.dataset;
|
|
@@ -556,7 +566,7 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
556
566
|
mainTemplate() {
|
|
557
567
|
return html `
|
|
558
568
|
<main class="body-medium">
|
|
559
|
-
<div class="content">
|
|
569
|
+
<div class="content surface1">
|
|
560
570
|
${this.renderPage()}
|
|
561
571
|
</div>
|
|
562
572
|
</main>
|
|
@@ -571,6 +581,7 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
571
581
|
case 'shared': return this.shared.render();
|
|
572
582
|
case 'trash': return this.trash.render();
|
|
573
583
|
case 'settings': return this.settings.render();
|
|
584
|
+
case 'add-cert': return this.renderAddCertificate();
|
|
574
585
|
default: return this.render404();
|
|
575
586
|
}
|
|
576
587
|
}
|
|
@@ -652,6 +663,16 @@ export default class ApiClientScreen extends ApplicationScreen {
|
|
|
652
663
|
</dialog>
|
|
653
664
|
`;
|
|
654
665
|
}
|
|
666
|
+
renderAddCertificate() {
|
|
667
|
+
const { currentRoute, currentSpace } = this;
|
|
668
|
+
const parent = currentRoute && currentRoute.params && currentRoute.params.parent;
|
|
669
|
+
const space = currentSpace && currentSpace.key;
|
|
670
|
+
return html `
|
|
671
|
+
<h2 class="headline-small">Add Certificate</h2>
|
|
672
|
+
<p class="body-medium">Import a certificate to use it in your HTTP projects. Note, imported certificate cannot be changed.</p>
|
|
673
|
+
<certificate-add .folder="${parent}" .space="${space}" @close="${this.handleCertificateClose}"></certificate-add>
|
|
674
|
+
`;
|
|
675
|
+
}
|
|
655
676
|
}
|
|
656
677
|
__decorate([
|
|
657
678
|
reactive()
|