@api-client/ui 0.0.12 → 0.0.14
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/http/http-body-editor.d.ts.map +1 -1
- package/dist/define/http/http-body-editor.js +1 -1
- package/dist/define/http/http-body-editor.js.map +1 -1
- 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/BodyEditor.js +5 -5
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyEditor.styles.d.ts +1 -1
- package/dist/elements/http/BodyEditor.styles.d.ts.map +1 -1
- package/dist/elements/http/BodyEditor.styles.js +5 -19
- package/dist/elements/http/BodyEditor.styles.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/elements/store/FilesLib.d.ts +2 -2
- package/dist/elements/store/FilesLib.d.ts.map +1 -1
- package/dist/elements/store/FilesLib.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/Cursor.js +2 -2
- package/dist/http-client/store/Cursor.js.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.d.ts.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.js +2 -6
- package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
- package/dist/http-client/store/State.d.ts +1 -3
- package/dist/http-client/store/State.d.ts.map +1 -1
- package/dist/http-client/store/State.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/http-client/store/idb/IdbStore.d.ts +1 -10
- package/dist/http-client/store/idb/IdbStore.d.ts.map +1 -1
- package/dist/http-client/store/idb/IdbStore.js +0 -48
- package/dist/http-client/store/idb/IdbStore.js.map +1 -1
- package/dist/http-client/store/types.d.ts +2 -56
- package/dist/http-client/store/types.d.ts.map +1 -1
- package/dist/http-client/store/types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.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 +8 -4
- package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +25 -4
- 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/pages/api-client/pages/Trash.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Trash.page.js +3 -11
- package/dist/pages/api-client/pages/Trash.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/list/UiDropdownList.js +1 -1
- package/dist/ui/list/UiDropdownList.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 +2 -2
- 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/http/http-body-editor.ts +1 -1
- 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/BodyEditor.styles.ts +5 -19
- package/src/elements/http/BodyEditor.ts +5 -5
- 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/elements/store/FilesLib.ts +2 -2
- 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/Cursor.ts +2 -2
- package/src/http-client/store/HttpClientIdbDatabase.ts +5 -9
- package/src/http-client/store/State.ts +1 -5
- package/src/http-client/store/StoreBroadcast.ts +0 -8
- package/src/http-client/store/idb/IdbStore.ts +1 -51
- package/src/http-client/store/types.ts +2 -57
- package/src/index.ts +3 -0
- package/src/lib/files/FileUtils.ts +12 -0
- package/src/mixins/RouteMixin.ts +8 -1
- package/src/pages/api-client/ApiClient.screen.ts +33 -9
- package/src/pages/api-client/ApiClient.styles.ts +0 -12
- package/src/pages/api-client/pages/Files.page.ts +11 -0
- package/src/pages/api-client/pages/Trash.page.ts +3 -10
- package/src/ui/button/SegmentedButtonsSet.ts +16 -1
- package/src/ui/list/UiDropdownList.ts +1 -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 +6 -5
- 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/dist/http-client/store/Validator.d.ts +0 -4
- package/dist/http-client/store/Validator.d.ts.map +0 -1
- package/dist/http-client/store/Validator.js +0 -32
- package/dist/http-client/store/Validator.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/src/http-client/store/Validator.ts +0 -33
- 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"]}
|
|
@@ -10,7 +10,7 @@ export class Cursor {
|
|
|
10
10
|
async decodeCursor(cursor) {
|
|
11
11
|
let result;
|
|
12
12
|
try {
|
|
13
|
-
const decoded = atob(cursor);
|
|
13
|
+
const decoded = window.atob(cursor);
|
|
14
14
|
result = JSON.parse(decoded);
|
|
15
15
|
}
|
|
16
16
|
catch (e) {
|
|
@@ -25,7 +25,7 @@ export class Cursor {
|
|
|
25
25
|
*/
|
|
26
26
|
async encodeCursor(state) {
|
|
27
27
|
const str = JSON.stringify(state);
|
|
28
|
-
return btoa(str);
|
|
28
|
+
return window.btoa(str);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=Cursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cursor.js","sourceRoot":"","sources":["../../../src/http-client/store/Cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,IAAI,MAAkB,CAAC;QACvB,IAAI;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Cursor.js","sourceRoot":"","sources":["../../../src/http-client/store/Cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D;;GAEG;AACH,MAAM,OAAO,MAAM;IACjB;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,IAAI,MAAkB,CAAC;QACvB,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;SACjD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF","sourcesContent":["import { ApiError } from \"@api-client/core/build/browser.js\";\nimport { IListState } from \"./State.js\";\n\n/**\n * A class that serializes and deserializes the pagination cursor.\n */\nexport class Cursor {\n /**\n * Reads the cursor received from the client by decrypting its contents.\n * It throws an error when the cursor is invalid\n */\n async decodeCursor(cursor: string): Promise<IListState> {\n let result: IListState;\n try {\n const decoded = window.atob(cursor);\n result = JSON.parse(decoded);\n } catch (e) {\n throw new ApiError(`Invalid page cursor.`, 400);\n }\n return result;\n }\n\n /**\n * Encodes the state into a cursor.\n * @param state The list state.\n * @returns The encoded (base64) cursor.\n */\n async encodeCursor(state: object): Promise<string> {\n const str = JSON.stringify(state);\n return window.btoa(str);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientIdbDatabase.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"HttpClientIdbDatabase.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAa,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;;IACjE;;;OAGG;IACH,YAAY,SAAM;IAElB,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAE3C;;;OAGG;IACH,IAAI,EAAE,IAAI,YAAY,CAAC,YAAY,CAAC,CAMnC;IAID;;OAEG;IACH,IAAI,UAAU,IAAI,aAAa,CAM9B;IAID;;OAEG;IACH,IAAI,SAAS,IAAI,YAAY,CAM5B;IAID;;OAEG;IACH,IAAI,SAAS,IAAI,YAAY,CAM5B;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,MAAM,SAAgB;IAEhB,aAAa,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzE;;;;;;;OAOG;IACG,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAY9F;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAyBjD;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,wBAAwB;CAQjC"}
|
|
@@ -110,9 +110,7 @@ export class HttpClientIdbDatabase {
|
|
|
110
110
|
const dbResult = await openDB('HttpClient', 1, {
|
|
111
111
|
upgrade: (db) => {
|
|
112
112
|
const stores = [
|
|
113
|
-
'UrlHistory', 'WsHistory',
|
|
114
|
-
'AuthCache', 'Hosts', 'Environments',
|
|
115
|
-
'ProjectUi',
|
|
113
|
+
'UrlHistory', 'WsHistory', 'ProjectUi',
|
|
116
114
|
];
|
|
117
115
|
const names = db.objectStoreNames;
|
|
118
116
|
for (const name of stores) {
|
|
@@ -139,9 +137,7 @@ export class HttpClientIdbDatabase {
|
|
|
139
137
|
if (storeExists) {
|
|
140
138
|
return;
|
|
141
139
|
}
|
|
142
|
-
|
|
143
|
-
const typed = store;
|
|
144
|
-
typed.createIndex('space', 'meta.space', { unique: false });
|
|
140
|
+
db.createObjectStore(name, { keyPath: 'data.key' });
|
|
145
141
|
}
|
|
146
142
|
_UrlHistoryUpgradeHandler(db, storeExists) {
|
|
147
143
|
if (storeExists) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpClientIdbDatabase.js","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAG5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAAlC;QACE;;;WAGG;QACH,iBAAY,GAAG,EAAE,CAAC;QA4ElB,WAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAgGxB,CAAC;IAxKC;;;OAGG;IACH,IAAI,EAAE;QACJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,EAAE;YACP,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;SAClF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,CAAiB;IAE5B;;OAEG;IACH,IAAI,UAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU,CAAgB;IAE1B;;OAEG;IACH,IAAI,SAAS;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU,CAAgB;IAE1B;;OAEG;IACH,IAAI,SAAS;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE/B,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;IACvB,CAAC;IAID,KAAK,CAAC,aAAa,CAAC,SAA6B,EAAE;QACjD,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAChD;QACD,OAAO,EAAE,GAAG,MAAM,EAAgB,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CAAC,KAAiB,EAAE,OAAkB;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAgB,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,GAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAqB,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAe,YAAY,EAAE,CAAC,EAAE;YAC3D,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;gBACd,MAAM,MAAM,GAAgB;oBAC1B,YAAY,EAAE,WAAW;oBACzB,WAAW,EAAE,OAAO,EAAE,cAAc;oBACpC,WAAW;iBACZ,CAAC;gBACF,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;oBACzB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpC,MAAM,MAAM,GAAG,IAAI,IAAI,gBAAqH,CAAC;oBAC7I,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE;wBACtC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;qBAC1B;yBAAM,IAAI,CAAC,MAAM,EAAE;wBAClB,IAAI,CAAC,sBAAsB,CAAC,IAAuB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;qBAClE;iBACF;YACH,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,IAAqB,EAAE,EAA8B,EAAE,WAAoB;QACxG,IAAI,WAAW,EAAE;YACf,OAAO;SACR;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,KAA2F,CAAC;QAC1G,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEO,yBAAyB,CAAC,EAA8B,EAAE,WAAoB;QACpF,IAAI,WAAW,EAAE;YACf,OAAO;SACR;QACD,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,wBAAwB,CAAC,EAA8B,EAAE,WAAoB;QACnF,IAAI,WAAW,EAAE;YACf,OAAO;SACR;QACD,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,wBAAwB,CAAC,EAA8B,EAAE,WAAoB;QACnF,IAAI,WAAW,EAAE;YACf,OAAO;SACR;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,KAAmF,CAAC;QAClG,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;CACF","sourcesContent":["import { openDB, IDBPDatabase, IDBPObjectStore } from 'idb/with-async-ittr';\nimport { ContextListOptions } from '@api-client/core/build/browser.js';\nimport { HttpClientPersistance } from \"./HttpClientPersistance.js\";\nimport { Cursor } from './Cursor.js';\nimport { IListState } from './State.js';\nimport { HttpClientDB, SpaceStoreNames, StoreName } from './types.js';\nimport { IdbUrlHistory } from './idb/IdbUrlHistory.js';\nimport { IdbWsHistory } from './idb/IdbWsHistory.js';\nimport { IdbProjectUi } from './idb/IdbProjectUi.js';\n\n/**\n * The implementation of the API Client app database in IDB.\n */\nexport class HttpClientIdbDatabase implements HttpClientPersistance {\n /**\n * The default limit of items returned by the list operation.\n * @default 35\n */\n defaultLimit = 35;\n\n protected _db?: IDBPDatabase<HttpClientDB>;\n\n /**\n * The reference to the currently opened database.\n * This throws when the `initialize()` method wasn't called.\n */\n get db(): IDBPDatabase<HttpClientDB> {\n const db = this._db;\n if (!db) {\n throw new Error(`Attempted to access the database before opening a connection.`);\n }\n return db;\n }\n \n #urlHistory?: IdbUrlHistory;\n\n /**\n * File metadata store.\n */\n get urlHistory(): IdbUrlHistory {\n const ref = this.#urlHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #wsHistory?: IdbWsHistory;\n\n /**\n * File metadata store.\n */\n get wsHistory(): IdbWsHistory {\n const ref = this.#wsHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #projectUi?: IdbProjectUi;\n\n /**\n * File metadata store.\n */\n get projectUi(): IdbProjectUi {\n const ref = this.#projectUi;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n async initialize(): Promise<void> {\n const db = await this.open();\n\n this.#urlHistory = new IdbUrlHistory(this, db);\n this.#wsHistory = new IdbWsHistory(this, db);\n this.#projectUi = new IdbProjectUi(this, db);\n \n await this.#urlHistory.warmup();\n await this.#wsHistory.warmup();\n await this.#projectUi.warmup();\n }\n\n async cleanup(): Promise<void> {\n await this.urlHistory.cleanup();\n await this.wsHistory.cleanup();\n await this.projectUi.cleanup();\n\n this.db.close();\n this._db = undefined;\n }\n\n cursor = new Cursor();\n\n async readListState(source: ContextListOptions = {}): Promise<IListState> {\n if (source.cursor) {\n return this.cursor.decodeCursor(source.cursor);\n }\n return { ...source } as IListState;\n }\n\n /**\n * Creates a database cursor when there are results.\n * This sets `skip` and `lastKey` parameters.\n * \n * @param state The last list state object\n * @param results The read results.\n * @returns A cursor to be used with pagination.\n */\n async createCursorIfNeeded(state: IListState, results: unknown[]): Promise<string | undefined> {\n if (!results.length) {\n return undefined;\n }\n\n const copy = { ...state } as IListState;\n const { key } = (results[results.length - 1] as { key: string });\n copy.skip = 1;\n copy.lastKey = key;\n return this.cursor.encodeCursor(copy);\n }\n\n /**\n * Opens the ARC store.\n * @returns The reference to the database\n */\n async open(): Promise<IDBPDatabase<HttpClientDB>> {\n if (this._db) {\n return this._db;\n }\n const dbResult = await openDB<HttpClientDB>('HttpClient', 1, {\n upgrade: (db) => {\n const stores: StoreName[] = [\n 'UrlHistory', 'WsHistory',\n 'AuthCache', 'Hosts', 'Environments', \n 'ProjectUi', \n ];\n const names = db.objectStoreNames;\n for (const name of stores) {\n const exists = names.contains(name);\n const fnName = `_${name}UpgradeHandler` as unknown as '_UrlHistoryUpgradeHandler' | '_WsHistoryUpgradeHandler' | '_ProjectUiUpgradeHandler';\n if (typeof this[fnName] === 'function') {\n this[fnName](db, exists);\n } else if (!exists) {\n this._defaultUpgradeHandler(name as SpaceStoreNames, db, exists);\n }\n }\n },\n });\n this._db = dbResult;\n return dbResult;\n }\n\n /**\n * Creates a default store where the stored object is identified by the `data.key` path.\n * @param name The store name to create\n * @param db The handler to the database\n */\n private _defaultUpgradeHandler(name: SpaceStoreNames, db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore(name, { keyPath: 'data.key' });\n const typed = store as IDBPObjectStore<HttpClientDB, SpaceStoreNames[], SpaceStoreNames, 'versionchange'>;\n typed.createIndex('space', 'meta.space', { unique: false });\n }\n\n private _UrlHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('UrlHistory', { keyPath: 'key' });\n }\n\n private _WsHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('WsHistory', { keyPath: 'key' });\n }\n\n private _ProjectUiUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore('ProjectUi', { keyPath: ['meta.project', 'meta.key'] });\n const typed = store as IDBPObjectStore<HttpClientDB, ['ProjectUi'], 'ProjectUi', 'versionchange'>;\n typed.createIndex('project', 'meta.project', { unique: false });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HttpClientIdbDatabase.js","sourceRoot":"","sources":["../../../src/http-client/store/HttpClientIdbDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import { openDB, IDBPDatabase, IDBPObjectStore } from 'idb/with-async-ittr';\nimport { ContextListOptions } from '@api-client/core/build/browser.js';\nimport { HttpClientPersistance } from \"./HttpClientPersistance.js\";\nimport { Cursor } from './Cursor.js';\nimport { IListState } from './State.js';\nimport { HttpClientDB, StoreName } from './types.js';\nimport { IdbUrlHistory } from './idb/IdbUrlHistory.js';\nimport { IdbWsHistory } from './idb/IdbWsHistory.js';\nimport { IdbProjectUi } from './idb/IdbProjectUi.js';\n\n/**\n * The implementation of the API Client app database in IDB.\n */\nexport class HttpClientIdbDatabase implements HttpClientPersistance {\n /**\n * The default limit of items returned by the list operation.\n * @default 35\n */\n defaultLimit = 35;\n\n protected _db?: IDBPDatabase<HttpClientDB>;\n\n /**\n * The reference to the currently opened database.\n * This throws when the `initialize()` method wasn't called.\n */\n get db(): IDBPDatabase<HttpClientDB> {\n const db = this._db;\n if (!db) {\n throw new Error(`Attempted to access the database before opening a connection.`);\n }\n return db;\n }\n \n #urlHistory?: IdbUrlHistory;\n\n /**\n * File metadata store.\n */\n get urlHistory(): IdbUrlHistory {\n const ref = this.#urlHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #wsHistory?: IdbWsHistory;\n\n /**\n * File metadata store.\n */\n get wsHistory(): IdbWsHistory {\n const ref = this.#wsHistory;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n #projectUi?: IdbProjectUi;\n\n /**\n * File metadata store.\n */\n get projectUi(): IdbProjectUi {\n const ref = this.#projectUi;\n if (!ref) {\n throw new Error(`Store not initialized.`);\n }\n return ref;\n }\n\n async initialize(): Promise<void> {\n const db = await this.open();\n\n this.#urlHistory = new IdbUrlHistory(this, db);\n this.#wsHistory = new IdbWsHistory(this, db);\n this.#projectUi = new IdbProjectUi(this, db);\n \n await this.#urlHistory.warmup();\n await this.#wsHistory.warmup();\n await this.#projectUi.warmup();\n }\n\n async cleanup(): Promise<void> {\n await this.urlHistory.cleanup();\n await this.wsHistory.cleanup();\n await this.projectUi.cleanup();\n\n this.db.close();\n this._db = undefined;\n }\n\n cursor = new Cursor();\n\n async readListState(source: ContextListOptions = {}): Promise<IListState> {\n if (source.cursor) {\n return this.cursor.decodeCursor(source.cursor);\n }\n return { ...source } as IListState;\n }\n\n /**\n * Creates a database cursor when there are results.\n * This sets `skip` and `lastKey` parameters.\n * \n * @param state The last list state object\n * @param results The read results.\n * @returns A cursor to be used with pagination.\n */\n async createCursorIfNeeded(state: IListState, results: unknown[]): Promise<string | undefined> {\n if (!results.length) {\n return undefined;\n }\n\n const copy = { ...state } as IListState;\n const { key } = (results[results.length - 1] as { key: string });\n copy.skip = 1;\n copy.lastKey = key;\n return this.cursor.encodeCursor(copy);\n }\n\n /**\n * Opens the ARC store.\n * @returns The reference to the database\n */\n async open(): Promise<IDBPDatabase<HttpClientDB>> {\n if (this._db) {\n return this._db;\n }\n const dbResult = await openDB<HttpClientDB>('HttpClient', 1, {\n upgrade: (db) => {\n const stores: StoreName[] = [\n 'UrlHistory', 'WsHistory', 'ProjectUi', \n ];\n const names = db.objectStoreNames;\n for (const name of stores) {\n const exists = names.contains(name);\n const fnName = `_${name}UpgradeHandler` as unknown as '_UrlHistoryUpgradeHandler' | '_WsHistoryUpgradeHandler' | '_ProjectUiUpgradeHandler';\n if (typeof this[fnName] === 'function') {\n this[fnName](db, exists);\n } else if (!exists) {\n this._defaultUpgradeHandler(name as StoreName, db, exists);\n }\n }\n },\n });\n this._db = dbResult;\n return dbResult;\n }\n\n /**\n * Creates a default store where the stored object is identified by the `data.key` path.\n * @param name The store name to create\n * @param db The handler to the database\n */\n private _defaultUpgradeHandler(name: StoreName, db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore(name, { keyPath: 'data.key' });\n }\n\n private _UrlHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('UrlHistory', { keyPath: 'key' });\n }\n\n private _WsHistoryUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n db.createObjectStore('WsHistory', { keyPath: 'key' });\n }\n\n private _ProjectUiUpgradeHandler(db: IDBPDatabase<HttpClientDB>, storeExists: boolean): void {\n if (storeExists) {\n return;\n }\n const store = db.createObjectStore('ProjectUi', { keyPath: ['meta.project', 'meta.key'] });\n const typed = store as IDBPObjectStore<HttpClientDB, ['ProjectUi'], 'ProjectUi', 'versionchange'>;\n typed.createIndex('project', 'meta.project', { unique: false });\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContextSpaceListOptions
|
|
1
|
+
import { ContextSpaceListOptions } from "@api-client/core/build/browser.js";
|
|
2
2
|
export interface CursorState {
|
|
3
3
|
/**
|
|
4
4
|
* The key of the last item returned by the query.
|
|
@@ -12,6 +12,4 @@ export interface CursorState {
|
|
|
12
12
|
skip?: number;
|
|
13
13
|
}
|
|
14
14
|
export type IListState = ContextSpaceListOptions & CursorState;
|
|
15
|
-
export type HistoryState = HistoryListOptions & CursorState;
|
|
16
|
-
export type ProjectRunsState = IProjectExecutionListOptions & CursorState;
|
|
17
15
|
//# sourceMappingURL=State.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/http-client/store/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,uBAAuB,GAAG,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../src/http-client/store/State.ts"],"names":[],"mappings":"","sourcesContent":["import { ContextSpaceListOptions
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../src/http-client/store/State.ts"],"names":[],"mappings":"","sourcesContent":["import { ContextSpaceListOptions } from \"@api-client/core/build/browser.js\";\n\nexport interface CursorState {\n /**\n * The key of the last item returned by the query.\n * Used with pagination and this is encoded in the cursor.\n */\n lastKey?: string;\n /**\n * The number of records to skip before start capturing records.\n * This is used with the IDB `advance()` method.\n */\n skip?: number;\n}\n\nexport type IListState = ContextSpaceListOptions & CursorState;\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"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { IDBPDatabase } from "idb";
|
|
2
|
-
import { HttpClientDB
|
|
3
|
-
import { IListState } from "../State.js";
|
|
2
|
+
import { HttpClientDB } from "../types.js";
|
|
4
3
|
import { HttpClientIdbDatabase } from "../HttpClientIdbDatabase.js";
|
|
5
4
|
export declare abstract class IdbStore {
|
|
6
5
|
parent: HttpClientIdbDatabase;
|
|
@@ -19,13 +18,5 @@ export declare abstract class IdbStore {
|
|
|
19
18
|
* It is optional to implement but always called.
|
|
20
19
|
*/
|
|
21
20
|
cleanup(): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Lists entities that uses `IStoredEntity` format.
|
|
24
|
-
* @param db A reference to the database
|
|
25
|
-
* @param storeName The name of the store to query.
|
|
26
|
-
* @param opts Query options.
|
|
27
|
-
* @returns The list of listed objects.
|
|
28
|
-
*/
|
|
29
|
-
protected listStoredEntities(db: IDBPDatabase<HttpClientDB>, storeName: StoreName, opts: IListState): Promise<unknown[]>;
|
|
30
21
|
}
|
|
31
22
|
//# sourceMappingURL=IdbStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdbStore.d.ts","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"IdbStore.d.ts","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,8BAAsB,QAAQ;IAIT,MAAM,EAAE,qBAAqB;IAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IAHvF;;OAEG;gBACgB,MAAM,EAAE,qBAAqB,EAAS,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;IAEvF;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -20,53 +20,5 @@ export class IdbStore {
|
|
|
20
20
|
async cleanup() {
|
|
21
21
|
//
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Lists entities that uses `IStoredEntity` format.
|
|
25
|
-
* @param db A reference to the database
|
|
26
|
-
* @param storeName The name of the store to query.
|
|
27
|
-
* @param opts Query options.
|
|
28
|
-
* @returns The list of listed objects.
|
|
29
|
-
*/
|
|
30
|
-
async listStoredEntities(db, storeName, opts) {
|
|
31
|
-
let adv = opts.skip || 0;
|
|
32
|
-
const { descending, limit = this.parent.defaultLimit, lastKey, space } = opts;
|
|
33
|
-
const tx = db.transaction(storeName, 'readonly');
|
|
34
|
-
const dir = descending === true ? 'prev' : 'next';
|
|
35
|
-
let keyFound = false;
|
|
36
|
-
const items = [];
|
|
37
|
-
for await (const cursor of tx.store.iterate(null, dir)) {
|
|
38
|
-
const info = cursor.value;
|
|
39
|
-
if (!info.meta || !info.data) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
const { meta, data } = info;
|
|
43
|
-
if (space && meta.space !== space) {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
const { key } = data;
|
|
47
|
-
if (!key) {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
50
|
-
if (lastKey && !keyFound) {
|
|
51
|
-
if (key !== lastKey) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
keyFound = true;
|
|
55
|
-
}
|
|
56
|
-
if (adv) {
|
|
57
|
-
cursor.advance(adv);
|
|
58
|
-
adv = 0;
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
if (meta.deleted) {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
items.push(data);
|
|
65
|
-
if (items.length >= limit) {
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return items;
|
|
70
|
-
}
|
|
71
23
|
}
|
|
72
24
|
//# sourceMappingURL=IdbStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdbStore.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdbStore.js","sourceRoot":"","sources":["../../../../src/http-client/store/idb/IdbStore.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,QAAQ;IAC5B;;OAEG;IACH,YAAmB,MAA6B,EAAS,EAA8B;QAApE,WAAM,GAAN,MAAM,CAAuB;QAAS,OAAE,GAAF,EAAE,CAA4B;IAAG,CAAC;IAE3F;;;OAGG;IACH,KAAK,CAAC,MAAM;QACV,GAAG;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,GAAG;IACL,CAAC;CACF","sourcesContent":["import { IDBPDatabase } from \"idb\";\nimport { HttpClientDB } from \"../types.js\";\nimport { HttpClientIdbDatabase } from \"../HttpClientIdbDatabase.js\";\n\nexport abstract class IdbStore {\n /**\n * @param parent The parent data store object\n */\n constructor(public parent: HttpClientIdbDatabase, public db: IDBPDatabase<HttpClientDB>) {}\n \n /**\n * A logic to be implemented when the model starts-up.\n * It is optional to implement but always called.\n */\n async warmup(): Promise<void> {\n // \n }\n\n /**\n * Cleans up before shut down.\n * It is optional to implement but always called.\n */\n async cleanup(): Promise<void> {\n // \n }\n}\n"]}
|