http-request-manager 18.3.3 → 18.4.0
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/README.md +478 -255
- package/esm2022/lib/http-request-manager.module.mjs +20 -47
- package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +113 -32
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +11 -8
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +3 -6
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.mjs +13 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.mjs +13 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +128 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.mjs +74 -0
- package/esm2022/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.mjs +4 -1
- package/esm2022/lib/models/database-storage.model.mjs +1 -1
- package/esm2022/lib/services/database-manager-service/database.manager.service.mjs +171 -0
- package/esm2022/lib/services/database-manager-service/db.storage.service.mjs +183 -0
- package/esm2022/lib/services/database-manager-service/index.mjs +4 -0
- package/esm2022/lib/services/database-manager-service/models/table-schema.mjs +19 -0
- package/esm2022/lib/services/index.mjs +1 -2
- package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +7 -1
- package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +4 -3
- package/esm2022/lib/services/request-manager-services/request.service.mjs +2 -2
- package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +272 -84
- package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +6 -3
- package/esm2022/lib/services/request-manager-state-service/models/ws-user.model.mjs +10 -0
- package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +4 -4
- package/esm2022/lib/services/utils/utils.service.mjs +14 -14
- package/esm2022/lib/services/ws-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/ws-manager-service/models/channel-notification.model.mjs +5 -3
- package/esm2022/lib/services/ws-manager-service/models/communication-type.enum.mjs +7 -0
- package/esm2022/lib/services/ws-manager-service/models/index.mjs +2 -3
- package/esm2022/lib/services/ws-manager-service/models/user-message.model.mjs +1 -1
- package/esm2022/lib/services/ws-manager-service/services/websocket.service.mjs +178 -0
- package/fesm2022/http-request-manager.mjs +2600 -2024
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/http-request-manager-18.4.0.tgz +0 -0
- package/lib/http-request-manager.module.d.ts +25 -22
- package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +39 -12
- package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -1
- package/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.d.ts +16 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.d.ts +14 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +39 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.d.ts +14 -0
- package/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.d.ts +1 -0
- package/lib/services/{database-manager-services → database-manager-service}/database.manager.service.d.ts +9 -7
- package/lib/services/{database-manager-services → database-manager-service}/db.storage.service.d.ts +14 -14
- package/lib/services/index.d.ts +0 -1
- package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +3 -1
- package/lib/services/request-manager-services/request.service.d.ts +1 -1
- package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +34 -19
- package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +9 -1
- package/lib/services/request-manager-state-service/models/ws-user.model.d.ts +10 -0
- package/lib/services/store-state-manager-service/store-state-manager.service.d.ts +3 -2
- package/lib/services/ws-manager-service/index.d.ts +1 -1
- package/lib/services/ws-manager-service/models/channel-notification.model.d.ts +4 -1
- package/lib/services/ws-manager-service/models/communication-type.enum.d.ts +5 -0
- package/lib/services/ws-manager-service/models/index.d.ts +1 -2
- package/lib/services/ws-manager-service/models/user-message.model.d.ts +5 -6
- package/lib/services/ws-manager-service/{websocket.service.d.ts → services/websocket.service.d.ts} +5 -2
- package/package.json +1 -1
- package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
- package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
- package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
- package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
- package/esm2022/lib/services/ws-manager-service/models/user-info.model.mjs +0 -11
- package/esm2022/lib/services/ws-manager-service/models/user-name-info.model.mjs +0 -12
- package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
- package/http-request-manager-18.3.3.tgz +0 -0
- package/lib/services/ws-manager-service/models/user-info.model.d.ts +0 -11
- package/lib/services/ws-manager-service/models/user-name-info.model.d.ts +0 -14
- /package/lib/services/{database-manager-services → database-manager-service}/index.d.ts +0 -0
- /package/lib/services/{database-manager-services → database-manager-service}/models/table-schema.d.ts +0 -0
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { DbService } from './db.storage.service';
|
|
3
|
-
import { EMPTY, from } from 'rxjs';
|
|
4
|
-
import { map, mergeMap, switchMap } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class DatabaseManagerService extends DbService {
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
this.createNewDatabase();
|
|
10
|
-
}
|
|
11
|
-
getDatabaseTables() {
|
|
12
|
-
return from(this.DBOpened()).pipe(map(() => this.db.tables.map((item) => item.name)));
|
|
13
|
-
}
|
|
14
|
-
hasDatabaseTable(table) {
|
|
15
|
-
return from(this.DBOpened()).pipe(map(() => {
|
|
16
|
-
return this.tableExists(this.clean(table));
|
|
17
|
-
}));
|
|
18
|
-
}
|
|
19
|
-
getDatabaseTable(table) {
|
|
20
|
-
return from(this.DBOpened()).pipe(map((res) => {
|
|
21
|
-
this.hasDatabase().then((res) => {
|
|
22
|
-
const tables = this.db.tables;
|
|
23
|
-
const found = tables.find((item) => item.name === this.clean(table)) || null;
|
|
24
|
-
if (!found) {
|
|
25
|
-
console.warn('No Such Table:', this.clean(table));
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return found;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}));
|
|
33
|
-
}
|
|
34
|
-
getDatabaseTableSchema(table) {
|
|
35
|
-
return from(this.DBOpened()).pipe(mergeMap((res) => this.getDatabaseTable(table)), map((dbTable) => {
|
|
36
|
-
if (!dbTable)
|
|
37
|
-
return [];
|
|
38
|
-
const cols = dbTable.schema.indexes.map((col) => col.name);
|
|
39
|
-
const pri = dbTable.schema.primKey.name;
|
|
40
|
-
return [pri, ...cols];
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
createDatabaseTable(tableDef) {
|
|
44
|
-
this.createTable(tableDef.table, tableDef.schema);
|
|
45
|
-
return from(this.DBOpened());
|
|
46
|
-
}
|
|
47
|
-
updateDatabaseTableSchema(tableDef) {
|
|
48
|
-
}
|
|
49
|
-
// CRUD
|
|
50
|
-
findTableRecords(table, column, value) {
|
|
51
|
-
}
|
|
52
|
-
findTableRecord(table, column, value) {
|
|
53
|
-
}
|
|
54
|
-
getTableRecords(table) {
|
|
55
|
-
}
|
|
56
|
-
getTableRecord(table, id) {
|
|
57
|
-
}
|
|
58
|
-
createTableRecord(table, record) {
|
|
59
|
-
return this.createTableRecords(table, [record])
|
|
60
|
-
.pipe(map((item) => item ? item[0] : null));
|
|
61
|
-
}
|
|
62
|
-
createTableRecords(table, records) {
|
|
63
|
-
return this.getDatabaseTable(table).pipe(switchMap((tableData) => {
|
|
64
|
-
if (!tableData)
|
|
65
|
-
return EMPTY;
|
|
66
|
-
return this.getDatabaseTableSchema(table).pipe(map((schema) => {
|
|
67
|
-
const insertRecords = records.map((record) => {
|
|
68
|
-
const objectFromSchema = {};
|
|
69
|
-
schema.forEach((field) => {
|
|
70
|
-
const data = record[field] ?? null;
|
|
71
|
-
objectFromSchema[field] = data;
|
|
72
|
-
});
|
|
73
|
-
return objectFromSchema;
|
|
74
|
-
});
|
|
75
|
-
tableData.bulkPut(insertRecords);
|
|
76
|
-
return insertRecords;
|
|
77
|
-
}));
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
updateTableRecord(table, record) {
|
|
81
|
-
return this.updateTableRecords(table, [record])
|
|
82
|
-
.pipe(map(item => item.length > 0 ? item[0] : null));
|
|
83
|
-
}
|
|
84
|
-
updateTableRecords(table, records) {
|
|
85
|
-
return this.getDatabaseTable(table).pipe(switchMap((tableData) => {
|
|
86
|
-
return this.getDatabaseTableSchema(table).pipe(map((schema) => {
|
|
87
|
-
const insertRecords = records.map((record) => {
|
|
88
|
-
const objectFromSchema = {};
|
|
89
|
-
schema.forEach((field) => {
|
|
90
|
-
const data = record[field] ?? null;
|
|
91
|
-
objectFromSchema[field] = data;
|
|
92
|
-
});
|
|
93
|
-
return objectFromSchema;
|
|
94
|
-
});
|
|
95
|
-
tableData.bulkPut(insertRecords).then(() => console.log('Updated DB'));
|
|
96
|
-
return insertRecords;
|
|
97
|
-
}));
|
|
98
|
-
}));
|
|
99
|
-
}
|
|
100
|
-
deleteTableRecord(table, id) {
|
|
101
|
-
}
|
|
102
|
-
clean(str) {
|
|
103
|
-
const cleanStr = str
|
|
104
|
-
.replace(/[^a-zA-Z0-9\s]/g, '_') // Replace non-alphanumeric characters except spaces with underscores
|
|
105
|
-
.replace(/\s+/g, '_') // Replace spaces with underscores
|
|
106
|
-
.toLowerCase() // Convert to lowercase
|
|
107
|
-
.trim(); // Trim leading or trailing spaces
|
|
108
|
-
return cleanStr;
|
|
109
|
-
}
|
|
110
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
111
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseManagerService, providedIn: 'root' }); }
|
|
112
|
-
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseManagerService, decorators: [{
|
|
114
|
-
type: Injectable,
|
|
115
|
-
args: [{
|
|
116
|
-
providedIn: 'root'
|
|
117
|
-
}]
|
|
118
|
-
}], ctorParameters: () => [] });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UubWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2VzL2RhdGFiYXNlLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLMUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQVM7SUFFbkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQzFCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN4RCxDQUFBO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMs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LElBQUksRUFBRSxDQUFDLENBQXlCLGtDQUFrQztRQUVyRSxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOytHQXBMVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJTZXJ2aWNlIH0gZnJvbSAnLi9kYi5zdG9yYWdlLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBUYWJsZVNjaGVtYURlZiB9IGZyb20gJy4vbW9kZWxzL3RhYmxlLXNjaGVtYSc7XG5pbXBvcnQgeyBFTVBUWSwgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlIGV4dGVuZHMgRGJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5jcmVhdGVOZXdEYXRhYmFzZSgpXG4gIH1cblxuICBnZXREYXRhYmFzZVRhYmxlcygpIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLkRCT3BlbmVkKCkpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5kYi50YWJsZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0ubmFtZSkpXG4gICAgKVxuICB9XG5cbiAgaGFzRGF0YWJhc2VUYWJsZSh0YWJsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5EQk9wZW5lZCgpKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVFeGlzdHModGhpcy5jbGVhbih0YWJsZSkpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldERhdGFiYXNlVGFibGUodGFibGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5EQk9wZW5lZCgpKS5waXBlKFxuICAgICAgbWFwKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5oYXNEYXRhYmFzZSgpLnRoZW4oKHJlcykgPT4ge1xuXG4gICAgICAgICAgY29uc3QgdGFibGVzID0gdGhpcy5kYi50YWJsZXNcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IHRhYmxlcy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ubmFtZSA9PT0gdGhpcy5jbGVhbih0YWJsZSkpIHx8IG51bGxcblxuICAgICAgICAgIGlmKCFmb3VuZCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdObyBTdWNoIFRhYmxlOicsIHRoaXMuY2xlYW4odGFibGUpKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBnZXREYXRhYmFzZVRhYmxlU2NoZW1hKHRhYmxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLkRCT3BlbmVkKCkpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgocmVzKSA9PiB0aGlzLmdldERhdGFiYXNlVGFibGUodGFibGUpKSxcbiAgICAgIG1hcCgoZGJUYWJsZTogYW55KSA9PiB7XG4gICAgICAgIGlmKCFkYlRhYmxlKSByZXR1cm4gW11cbiAgICAgICAgY29uc3QgY29scyA9IGRiVGFibGUuc2NoZW1hLmluZGV4ZXMubWFwKChjb2w6IGFueSkgPT4gY29sLm5hbWUpXG4gICAgICAgIGNvbnN0IHByaSA9IGRiVGFibGUuc2NoZW1hLnByaW1LZXkubmFtZVxuICAgICAgICByZXR1cm4gW3ByaSwgLi4uY29sc11cbiAgICAgIH0pXG4gICAgKVxuXG4gIH1cblxuICBjcmVhdGVEYXRhYmFzZVRhYmxlKHRhYmxlRGVmOiBUYWJsZVNjaGVtYURlZikge1xuICAgIHRoaXMuY3JlYXRlVGFibGUodGFibGVEZWYudGFibGUsIHRhYmxlRGVmLnNjaGVtYSlcbiAgICByZXR1cm4gZnJvbSh0aGlzLkRCT3BlbmVkKCkpXG4gIH1cblxuICB1cGRhdGVEYXRhYmFzZVRhYmxlU2NoZW1hKHRhYmxlRGVmOiBUYWJsZVNjaGVtYURlZikge1xuXG4gIH1cblxuICAvLyBDUlVEXG4gIGZpbmRUYWJsZVJlY29yZHModGFibGU6IHN0cmluZywgY29sdW1uOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcblxuICB9XG5cbiAgZmluZFRhYmxlUmVjb3JkKHRhYmxlOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG5cbiAgfVxuXG4gIGdldFRhYmxlUmVjb3Jkcyh0YWJsZTogc3RyaW5nKSB7XG5cbiAgfVxuXG4gIGdldFRhYmxlUmVjb3JkKHRhYmxlOiBzdHJpbmcsIGlkOiBudW1iZXIpIHtcblxuICB9XG5cbiAgY3JlYXRlVGFibGVSZWNvcmQodGFibGU6IHN0cmluZywgcmVjb3JkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVUYWJsZVJlY29yZHModGFibGUsIFtyZWNvcmRdKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChpdGVtOiBhbnkpID0+IGl0ZW0gPyBpdGVtWzBdIDogbnVsbCkpXG4gIH1cblxuICBjcmVhdGVUYWJsZVJlY29yZHModGFibGU6IHN0cmluZywgcmVjb3JkczogYW55W10pIHtcblxuICAgIHJldHVybiB0aGlzLmdldERhdGFiYXNlVGFibGUodGFibGUpLnBpcGUoXG5cbiAgICAgIHN3aXRjaE1hcCgodGFibGVEYXRhOiBhbnkpID0+IHtcblxuICAgICAgICBpZighdGFibGVEYXRhKSByZXR1cm4gRU1QVFlcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhYmFzZVRhYmxlU2NoZW1hKHRhYmxlKS5waXBlKFxuXG4gICAgICAgICAgbWFwKChzY2hlbWE6IHN0cmluZ1tdKSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGluc2VydFJlY29yZHMgPSByZWNvcmRzLm1hcCgocmVjb3JkOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgICBjb25zdCBvYmplY3RGcm9tU2NoZW1hOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cblxuICAgICAgICAgICAgICBzY2hlbWEuZm9yRWFjaCgoZmllbGQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAocmVjb3JkIGFzIGFueSlbZmllbGRdID8/IG51bGxcbiAgICAgICAgICAgICAgICBvYmplY3RGcm9tU2NoZW1hW2ZpZWxkXSA9IGRhdGFcbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0RnJvbVNjaGVtYVxuXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICB0YWJsZURhdGEuYnVsa1B1dChpbnNlcnRSZWNvcmRzKVxuICAgICAgICAgICAgcmV0dXJuIGluc2VydFJlY29yZHNcblxuICAgICAgICAgIH0pXG5cbiAgICAgICAgKVxuXG4gICAgICB9KVxuXG4gICAgKVxuXG4gIH1cblxuICB1cGRhdGVUYWJsZVJlY29yZCh0YWJsZTogc3RyaW5nLCByZWNvcmQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZVRhYmxlUmVjb3Jkcyh0YWJsZSwgW3JlY29yZF0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoaXRlbSA9PiBpdGVtLmxlbmd0aCA+IDAgPyBpdGVtWzBdIDogbnVsbClcbiAgICApXG4gIH1cblxuICB1cGRhdGVUYWJsZVJlY29yZHModGFibGU6IHN0cmluZywgcmVjb3JkczogYW55W10pIHtcblxuICAgIHJldHVybiB0aGlzLmdldERhdGFiYXNlVGFibGUodGFibGUpLnBpcGUoXG5cbiAgICAgIHN3aXRjaE1hcCgodGFibGVEYXRhOiBhbnkpID0+IHtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhYmFzZVRhYmxlU2NoZW1hKHRhYmxlKS5waXBlKFxuXG4gICAgICAgICAgbWFwKChzY2hlbWE6IHN0cmluZ1tdKSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGluc2VydFJlY29yZHMgPSByZWNvcmRzLm1hcCgocmVjb3JkOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgICBjb25zdCBvYmplY3RGcm9tU2NoZW1hOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cblxuICAgICAgICAgICAgICBzY2hlbWEuZm9yRWFjaCgoZmllbGQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAocmVjb3JkIGFzIGFueSlbZmllbGRdID8/IG51bGxcbiAgICAgICAgICAgICAgICBvYmplY3RGcm9tU2NoZW1hW2ZpZWxkXSA9IGRhdGFcbiAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0RnJvbVNjaGVtYVxuXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICB0YWJsZURhdGEuYnVsa1B1dChpbnNlcnRSZWNvcmRzKS50aGVuKCgpID0+IGNvbnNvbGUubG9nKCdVcGRhdGVkIERCJykpXG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0UmVjb3Jkc1xuXG4gICAgICAgICAgfSlcblxuICAgICAgICApXG5cbiAgICAgIH0pXG5cbiAgICApXG5cbiAgfVxuXG4gIGRlbGV0ZVRhYmxlUmVjb3JkPFQ+KHRhYmxlOiBzdHJpbmcsIGlkOiBudW1iZXIpIHtcblxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xlYW5TdHIgPSBzdHJcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOVxcc10vZywgJ18nKSAvLyBSZXBsYWNlIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBleGNlcHQgc3BhY2VzIHdpdGggdW5kZXJzY29yZXNcbiAgICAgIC5yZXBsYWNlKC9cXHMrL2csICdfJykgICAgICAgICAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIHVuZGVyc2NvcmVzXG4gICAgICAudG9Mb3dlckNhc2UoKSAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIGxvd2VyY2FzZVxuICAgICAgLnRyaW0oKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHJpbSBsZWFkaW5nIG9yIHRyYWlsaW5nIHNwYWNlc1xuXG4gICAgcmV0dXJuIGNsZWFuU3RyO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import Dexie from 'dexie';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class DbService extends Dexie {
|
|
5
|
-
get vr() {
|
|
6
|
-
return (this.db.verno === 0) ? 1 : this.db.verno + 1;
|
|
7
|
-
}
|
|
8
|
-
get nextVr() {
|
|
9
|
-
return this.vr + 1;
|
|
10
|
-
}
|
|
11
|
-
get getTables() {
|
|
12
|
-
return this.db.tables.map((item) => item.name);
|
|
13
|
-
}
|
|
14
|
-
async hasDatabase() {
|
|
15
|
-
return await Dexie.exists(this.storageDB).then((res) => {
|
|
16
|
-
this.createNewDatabase();
|
|
17
|
-
return res;
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
constructor() {
|
|
21
|
-
super("global_storage_db");
|
|
22
|
-
this.storageDB = "global_storage_db";
|
|
23
|
-
this.db = new Dexie(this.storageDB);
|
|
24
|
-
this.getTable = (table) => {
|
|
25
|
-
return this.db.tables.find((item) => item.name === table);
|
|
26
|
-
};
|
|
27
|
-
this.tableExists = (table) => {
|
|
28
|
-
return (this.getTables.find((item) => item === table)) ? true : false;
|
|
29
|
-
};
|
|
30
|
-
this.db = this;
|
|
31
|
-
this.open().then((data) => {
|
|
32
|
-
}).catch(err => {
|
|
33
|
-
this.createNewDatabase();
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async updateTable(table, find, data) {
|
|
37
|
-
const tableSource = this.getTable(table);
|
|
38
|
-
if (!tableSource || !find || !(find.key || find.value))
|
|
39
|
-
return false;
|
|
40
|
-
await tableSource?.where(find.key).equals(find.value).first()
|
|
41
|
-
.then(async (rec) => {
|
|
42
|
-
const newRec = this.updateObjectKeys(rec, data);
|
|
43
|
-
await tableSource?.update(rec.id, newRec);
|
|
44
|
-
});
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
async createNewDatabase() {
|
|
48
|
-
const db = new Dexie('global_storage_db');
|
|
49
|
-
if (!await Dexie.exists(db.name)) {
|
|
50
|
-
db.version(1).stores({});
|
|
51
|
-
}
|
|
52
|
-
await db.open();
|
|
53
|
-
}
|
|
54
|
-
// async createTable(table: string, schema: string) {
|
|
55
|
-
async createTable(table, schema) {
|
|
56
|
-
// console.log('createTable:', table, schema)
|
|
57
|
-
this.hasDatabase().then(async (res) => {
|
|
58
|
-
const tableDef = this.normalizeString(table);
|
|
59
|
-
const schemaDef = this.normalizeString(schema);
|
|
60
|
-
table = tableDef || '';
|
|
61
|
-
schema = schemaDef || '';
|
|
62
|
-
if (table === '' || schema === '')
|
|
63
|
-
return;
|
|
64
|
-
if (!this.db.isOpen()) {
|
|
65
|
-
await this.db.open()
|
|
66
|
-
.then(async () => {
|
|
67
|
-
this.create(table, schema);
|
|
68
|
-
// console.log('OPENED', table)
|
|
69
|
-
})
|
|
70
|
-
.catch(() => {
|
|
71
|
-
// console.log('FAILED', table)
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
this.create(table, schema);
|
|
76
|
-
}
|
|
77
|
-
const hasTable = this.getTable(table);
|
|
78
|
-
if (!hasTable) {
|
|
79
|
-
setTimeout(() => {
|
|
80
|
-
this.createTable.bind(this, table, schema);
|
|
81
|
-
this.create(table, schema);
|
|
82
|
-
}, 300);
|
|
83
|
-
}
|
|
84
|
-
// console.log('DB HAS', table, hasTable)
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
async create(table, schema) {
|
|
88
|
-
// console.log('OPEN', this.db.name, this.vr, this.db.verno, 'OPEN',this.db.isOpen())
|
|
89
|
-
if (!this.tableExists(table)) {
|
|
90
|
-
if (this.db.isOpen())
|
|
91
|
-
await this.db.close();
|
|
92
|
-
const newSchema = { [table]: schema };
|
|
93
|
-
await this.db.version(this.nextVr).stores(newSchema);
|
|
94
|
-
// console.log('Created New Table: ', table, schema)
|
|
95
|
-
if (!this.db.isOpen())
|
|
96
|
-
await this.db.open();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
updateObjectKeys(obj1, obj2) {
|
|
100
|
-
return Object.keys(obj1).reduce((updatedObj, key) => {
|
|
101
|
-
updatedObj[key] = obj2.hasOwnProperty(key) ? obj2[key] : obj1[key];
|
|
102
|
-
return updatedObj;
|
|
103
|
-
}, {});
|
|
104
|
-
}
|
|
105
|
-
async DBOpened() {
|
|
106
|
-
if (!this.db.isOpen()) {
|
|
107
|
-
await this.db.open()
|
|
108
|
-
.then(async () => {
|
|
109
|
-
// console.log('OPENED')
|
|
110
|
-
})
|
|
111
|
-
.catch(async (err) => {
|
|
112
|
-
// console.log('OPENED ERR')
|
|
113
|
-
return false;
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
// console.log('OPENED')
|
|
118
|
-
}
|
|
119
|
-
return true;
|
|
120
|
-
}
|
|
121
|
-
normalizeString(item) {
|
|
122
|
-
if (!item)
|
|
123
|
-
return;
|
|
124
|
-
return Array.isArray(item) ?
|
|
125
|
-
item.map((item) => this.cleanString(item)).join()
|
|
126
|
-
: item.split(',').map((item) => this.cleanString(item)).join();
|
|
127
|
-
}
|
|
128
|
-
cleanString(str) {
|
|
129
|
-
const cleanStr = str
|
|
130
|
-
.replace(/[^a-zA-Z0-9\s]/g, '')
|
|
131
|
-
.replace(/\s+/g, '_');
|
|
132
|
-
return cleanStr.trim().toLowerCase();
|
|
133
|
-
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
135
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DbService, providedIn: 'root' }); }
|
|
136
|
-
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DbService, decorators: [{
|
|
138
|
-
type: Injectable,
|
|
139
|
-
args: [{
|
|
140
|
-
providedIn: 'root',
|
|
141
|
-
}]
|
|
142
|
-
}], ctorParameters: () => [] });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2VzL2RiLnN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBYyxNQUFNLE9BQU8sQ0FBQzs7QUFLbkMsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBTWxDLElBQUksRUFBRTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDcEIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsT0FBTyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3hCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBVUQ7UUFFSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQWpDOUIs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O1FBQzFCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUViLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBcUI7UUFFM0MsSUFBRyxDQUFDLElBQUk7WUFBRSxPQUFNO1FBRWhCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFMUUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFXO1FBRTdCLE1BQU0sUUFBUSxHQUFHLEdBQUc7YUFDakIsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQzthQUM5QixPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRXJCLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXhDLENBQUM7K0dBdExVLFNBQVM7bUhBQVQsU0FBUyxjQUZSLE1BQU07OzRGQUVQLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IERleGllLCB7VGFibGV9IGZyb20gJ2RleGllJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERiU2VydmljZSBleHRlbmRzIERleGllIHtcblxuICBzdG9yYWdlREIgPSBcImdsb2JhbF9zdG9yYWdlX2RiXCJcblxuICBkYiA9IG5ldyBEZXhpZSh0aGlzLnN0b3JhZ2VEQilcblxuICBnZXQgdnIoKSB7XG4gICAgcmV0dXJuICh0aGlzLmRiLnZlcm5vID09PSAwKSA/IDEgOiB0aGlzLmRiLnZlcm5vICsgMVxuICB9XG5cbiAgZ2V0IG5leHRWcigpIHtcbiAgICByZXR1cm4gdGhpcy52ciArIDFcbiAgfVxuXG4gIGdldCBnZXRUYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIudGFibGVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLm5hbWUpXG4gIH1cblxuICBhc3luYyBoYXNEYXRhYmFzZSgpIHtcbiAgICByZXR1cm4gYXdhaXQgRGV4aWUuZXhpc3RzKHRoaXMuc3RvcmFnZURCKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVOZXdEYXRhYmFzZSgpXG4gICAgICByZXR1cm4gcmVzXG4gICAgfSlcbiAgfVxuXG4gIGdldFRhYmxlID0gKHRhYmxlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYi50YWJsZXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLm5hbWUgPT09IHRhYmxlKVxuICB9XG5cbiAgdGFibGVFeGlzdHMgPSAodGFibGU6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiAodGhpcy5nZXRUYWJsZXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtID09PSB0YWJsZSkpID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgICAgc3VwZXIoXCJnbG9iYWxfc3RvcmFnZV9kYlwiKVxuXG4gICAgICB0aGlzLmRiID0gdGhpc1xuICAgICAgdGhpcy5vcGVuKCkudGhlbigoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmV3RGF0YWJhc2UoKVxuICAgICAgfSlcblxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZVRhYmxlKHRhYmxlOiBzdHJpbmcsIGZpbmQ6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd8bnVtYmVyIH0sIGRhdGE6IGFueSkge1xuXG4gICAgY29uc3QgdGFibGVTb3VyY2UgPSB0aGlzLmdldFRhYmxlKHRhYmxlKVxuXG4gICAgaWYoIXRhYmxlU291cmNlIHx8ICFmaW5kIHx8ICEoZmluZC5rZXkgfHwgZmluZC52YWx1ZSkpIHJldHVybiBmYWxzZVxuXG4gICAgYXdhaXQgdGFibGVTb3VyY2U/LndoZXJlKGZpbmQua2V5KS5lcXVhbHMoZmluZC52YWx1ZSkuZmlyc3QoKVxuICAgIC50aGVuKGFzeW5jIChyZWM6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbmV3UmVjID0gdGhpcy51cGRhdGVPYmplY3RLZXlzKHJlYywgZGF0YSlcbiAgICAgIGF3YWl0IHRhYmxlU291cmNlPy51cGRhdGUocmVjLmlkLCBuZXdSZWMpXG4gICAgfSlcblxuICAgIHJldHVybiB0cnVlXG5cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVOZXdEYXRhYmFzZSgpIHtcblxuICAgIGNvbnN0IGRiID0gbmV3IERleGllKCdnbG9iYWxfc3RvcmFnZV9kYicpO1xuXG4gICAgaWYgKCFhd2FpdCBEZXhpZS5leGlzdHMoZGIubmFtZSkpIHtcbiAgICAgIGRiLnZlcnNpb24oMSkuc3RvcmVzKHt9KVxuICAgIH1cblxuICAgIGF3YWl0IGRiLm9wZW4oKVxuXG4gIH1cblxuICAvLyBhc3luYyBjcmVhdGVUYWJsZSh0YWJsZTogc3RyaW5nLCBzY2hlbWE6IHN0cmluZykge1xuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlVGFibGUodGFibGU6IHN0cmluZywgc2NoZW1hOiBzdHJpbmcpIHtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdjcmVhdGVUYWJsZTonLCB0YWJsZSwgc2NoZW1hKVxuXG4gICAgdGhpcy5oYXNEYXRhYmFzZSgpLnRoZW4oYXN5bmMocmVzKSA9PiB7XG5cbiAgICAgIGNvbnN0IHRhYmxlRGVmID0gdGhpcy5ub3JtYWxpemVTdHJpbmcodGFibGUpXG4gICAgICBjb25zdCBzY2hlbWFEZWYgPSB0aGlzLm5vcm1hbGl6ZVN0cmluZyhzY2hlbWEpXG5cbiAgICAgIHRhYmxlID0gdGFibGVEZWYgfHwgJydcbiAgICAgIHNjaGVtYSA9IHNjaGVtYURlZiB8fCAnJ1xuXG4gICAgICBpZih0YWJsZSA9PT0gJycgfHwgc2NoZW1hID09PSAnJykgcmV0dXJuXG5cbiAgICAgIGlmKCF0aGlzLmRiLmlzT3BlbigpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGIub3BlbigpXG4gICAgICAgIC50aGVuKCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jcmVhdGUodGFibGUsIHNjaGVtYSlcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnT1BFTkVEJywgdGFibGUpXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0ZBSUxFRCcsIHRhYmxlKVxuICAgICAgICB9KVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYXNUYWJsZSA9IHRoaXMuZ2V0VGFibGUodGFibGUpXG5cbiAgICAgIGlmKCFoYXNUYWJsZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZVRhYmxlLmJpbmQodGhpcywgdGFibGUsIHNjaGVtYSlcbiAgICAgICAgICB0aGlzLmNyZWF0ZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgICB9LCAzMDApXG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdEQiBIQVMnLCB0YWJsZSwgaGFzVGFibGUpXG5cbiAgICB9KVxuXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZSh0YWJsZTogc3RyaW5nLCBzY2hlbWE6IHN0cmluZykge1xuXG4gICAgLy8gY29uc29sZS5sb2coJ09QRU4nLCB0aGlzLmRiLm5hbWUsIHRoaXMudnIsIHRoaXMuZGIudmVybm8sICdPUEVOJyx0aGlzLmRiLmlzT3BlbigpKVxuXG4gICAgaWYoIXRoaXMudGFibGVFeGlzdHModGFibGUpKSB7XG5cbiAgICAgIGlmKHRoaXMuZGIuaXNPcGVuKCkpIGF3YWl0IHRoaXMuZGIuY2xvc2UoKVxuXG4gICAgICBjb25zdCBuZXdTY2hlbWE6IGFueSA9IHsgW3RhYmxlXTogc2NoZW1hIH1cbiAgICAgIGF3YWl0IHRoaXMuZGIudmVyc2lvbih0aGlzLm5leHRWcikuc3RvcmVzKG5ld1NjaGVtYSlcblxuICAgICAgLy8gY29uc29sZS5sb2coJ0NyZWF0ZWQgTmV3IFRhYmxlOiAnLCB0YWJsZSwgc2NoZW1hKVxuXG4gICAgICBpZighdGhpcy5kYi5pc09wZW4oKSkgYXdhaXQgdGhpcy5kYi5vcGVuKClcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlT2JqZWN0S2V5cyhvYmoxOiBhbnksIG9iajI6IGFueSkge1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iajEpLnJlZHVjZSgodXBkYXRlZE9iajogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgdXBkYXRlZE9ialtrZXldID0gb2JqMi5oYXNPd25Qcm9wZXJ0eShrZXkpID8gb2JqMltrZXldIDogb2JqMVtrZXldXG4gICAgICByZXR1cm4gdXBkYXRlZE9ialxuICAgIH0sIHt9KVxuXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgREJPcGVuZWQoKSB7XG5cbiAgICBpZighdGhpcy5kYi5pc09wZW4oKSkge1xuICAgICAgYXdhaXQgdGhpcy5kYi5vcGVuKClcbiAgICAgIC50aGVuKCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdPUEVORUQnKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdPUEVORUQgRVJSJylcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnT1BFTkVEJylcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuXG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVN0cmluZyhpdGVtOiBzdHJpbmd8c3RyaW5nW10pIHtcblxuICAgIGlmKCFpdGVtKSByZXR1cm5cblxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID9cbiAgICAgIGl0ZW0ubWFwKChpdGVtOiBzdHJpbmcpID0+IHRoaXMuY2xlYW5TdHJpbmcoaXRlbSkpLmpvaW4oKVxuICAgICAgOiBpdGVtLnNwbGl0KCcsJykubWFwKChpdGVtOiBzdHJpbmcpID0+IHRoaXMuY2xlYW5TdHJpbmcoaXRlbSkpLmpvaW4oKVxuXG4gIH1cblxuICBwcml2YXRlIGNsZWFuU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IGNsZWFuU3RyID0gc3RyXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTlcXHNdL2csICcnKVxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJ18nKVxuXG4gICAgICByZXR1cm4gY2xlYW5TdHIudHJpbSgpLnRvTG93ZXJDYXNlKClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from "./models/table-schema";
|
|
2
|
-
export * from "./database.manager.service";
|
|
3
|
-
export * from "./db.storage.service";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL2RhdGFiYXNlLW1hbmFnZXItc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9tb2RlbHMvdGFibGUtc2NoZW1hXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlLm1hbmFnZXIuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGIuc3RvcmFnZS5zZXJ2aWNlXCI7XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export class TableSchemaDef {
|
|
2
|
-
constructor(table = 'unknown', schema = '') {
|
|
3
|
-
this.table = table;
|
|
4
|
-
this.schema = schema;
|
|
5
|
-
}
|
|
6
|
-
static adapt(item) {
|
|
7
|
-
const schemaArray = (item?.schema && Array.isArray(item.schema)) ? item.schema : item.schema.split(',');
|
|
8
|
-
const schema = schemaArray.map((item) => this.cleanString(item)).join();
|
|
9
|
-
return new TableSchemaDef((item?.table) ? this.cleanString(item.table) : 'unknown', schema);
|
|
10
|
-
}
|
|
11
|
-
static cleanString(str) {
|
|
12
|
-
const camelCaseSplit = str.replace(/([a-z])([A-Z])/g, '$1 $2');
|
|
13
|
-
const cleanStr = camelCaseSplit
|
|
14
|
-
.replace(/[^a-zA-Z0-9\s]/g, '') // Remove non-alphanumeric characters except spaces
|
|
15
|
-
.toLowerCase() // Convert to lowercase
|
|
16
|
-
.trim(); // Trim any leading or trailing spaces
|
|
17
|
-
return cleanStr;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2VzL21vZGVscy90YWJsZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDUyxRQUFRLFNBQVMsRUFDakIsU0FBaUIsRUFBRTtRQURuQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQWE7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBVTtRQUVyQixNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdkcsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRS9FLE9BQU8sSUFBSSxjQUFjLENBQ3ZCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUN4RCxNQUFNLENBQ1AsQ0FBQTtJQUVILENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVc7UUFDNUIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUU5RCxNQUFNLFFBQVEsR0FBRyxjQUFjO2FBQzVCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBRSxtREFBbUQ7YUFDbkYsV0FBVyxFQUFFLENBQW1CLHVCQUF1QjthQUN2RCxJQUFJLEVBQUUsQ0FBQyxDQUF5QixzQ0FBc0M7UUFFekUsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUYWJsZVNjaGVtYURlZkludGVyZmFjZSB7XG4gIHRhYmxlOiBzdHJpbmdcbiAgc2NoZW1hOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlU2NoZW1hRGVmIGltcGxlbWVudHMgVGFibGVTY2hlbWFEZWZJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdGFibGUgPSAndW5rbm93bicsXG4gICAgcHVibGljIHNjaGVtYTogc3RyaW5nID0gJycsXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IFRhYmxlU2NoZW1hRGVmIHtcblxuICAgIGNvbnN0IHNjaGVtYUFycmF5ID0gKGl0ZW0/LnNjaGVtYSAmJiBBcnJheS5pc0FycmF5KGl0ZW0uc2NoZW1hKSkgPyBpdGVtLnNjaGVtYSA6IGl0ZW0uc2NoZW1hLnNwbGl0KCcsJylcbiAgICBjb25zdCBzY2hlbWEgPSBzY2hlbWFBcnJheS5tYXAoKGl0ZW06IHN0cmluZykgPT4gdGhpcy5jbGVhblN0cmluZyhpdGVtKSkuam9pbigpXG5cbiAgICByZXR1cm4gbmV3IFRhYmxlU2NoZW1hRGVmKFxuICAgICAgKGl0ZW0/LnRhYmxlKSA/IHRoaXMuY2xlYW5TdHJpbmcoaXRlbS50YWJsZSkgOiAndW5rbm93bicsXG4gICAgICBzY2hlbWEsXG4gICAgKVxuXG4gIH1cblxuICBzdGF0aWMgY2xlYW5TdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhbWVsQ2FzZVNwbGl0ID0gc3RyLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gIFxuICAgIGNvbnN0IGNsZWFuU3RyID0gY2FtZWxDYXNlU3BsaXRcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOVxcc10vZywgJycpICAvLyBSZW1vdmUgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGV4Y2VwdCBzcGFjZXNcbiAgICAgIC50b0xvd2VyQ2FzZSgpICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gbG93ZXJjYXNlXG4gICAgICAudHJpbSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmltIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIHNwYWNlc1xuICBcbiAgICByZXR1cm4gY2xlYW5TdHI7XG4gIH1cblxufVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { UserNameInfo } from "./user-name-info.model";
|
|
2
|
-
export class UserInfo {
|
|
3
|
-
constructor(username = '', name = UserNameInfo.adapt()) {
|
|
4
|
-
this.username = username;
|
|
5
|
-
this.name = name;
|
|
6
|
-
}
|
|
7
|
-
static adapt(item) {
|
|
8
|
-
return new UserInfo(item?.username, (item?.name) ? UserNameInfo.adapt(item.name) : UserNameInfo.adapt());
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy93cy1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3VzZXItaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFPckQsTUFBTSxPQUFPLFFBQVE7SUFFbkIsWUFDUyxXQUFXLEVBQUUsRUFDYixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUU7UUFEM0IsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUNiLFNBQUksR0FBSixJQUFJLENBQXVCO0lBQ2pDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFFBQVEsQ0FDakIsSUFBSSxFQUFFLFFBQVEsRUFDZCxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FDcEUsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJOYW1lSW5mbyB9IGZyb20gXCIuL3VzZXItbmFtZS1pbmZvLm1vZGVsXCJcblxuZXhwb3J0IGludGVyZmFjZSBVc2VySW5mb0ludGVyZmFjZSB7XG4gIHVzZXJuYW1lOiBzdHJpbmdcbiAgbmFtZTogVXNlck5hbWVJbmZvXG59XG5cbmV4cG9ydCBjbGFzcyBVc2VySW5mbyBpbXBsZW1lbnRzIFVzZXJJbmZvSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdXNlcm5hbWUgPSAnJyxcbiAgICBwdWJsaWMgbmFtZSA9IFVzZXJOYW1lSW5mby5hZGFwdCgpLFxuICApIHt9XG5cbiAgc3RhdGljIGFkYXB0KGl0ZW0/OiBhbnkpOiBVc2VySW5mbyB7XG5cbiAgICByZXR1cm4gbmV3IFVzZXJJbmZvKFxuICAgICAgaXRlbT8udXNlcm5hbWUsXG4gICAgICAoaXRlbT8ubmFtZSkgPyBVc2VyTmFtZUluZm8uYWRhcHQoaXRlbS5uYW1lKSA6IFVzZXJOYW1lSW5mby5hZGFwdCgpLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class UserNameInfo {
|
|
2
|
-
constructor(first = '', last = '', email = '', connected = new Date()) {
|
|
3
|
-
this.first = first;
|
|
4
|
-
this.last = last;
|
|
5
|
-
this.email = email;
|
|
6
|
-
this.connected = connected;
|
|
7
|
-
}
|
|
8
|
-
static adapt(item) {
|
|
9
|
-
return new UserNameInfo(item?.first, item?.last, item?.email, item?.connected);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1uYW1lLWluZm8ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvdXNlci1uYW1lLWluZm8ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFDUyxRQUFnQixFQUFFLEVBQ2xCLE9BQWUsRUFBRSxFQUNqQixRQUFnQixFQUFFLEVBQ2xCLFlBQWtCLElBQUksSUFBSSxFQUFFO1FBSDVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQW1CO0lBQ2xDLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLFlBQVksQ0FDckIsSUFBSSxFQUFFLEtBQUssRUFDWCxJQUFJLEVBQUUsSUFBSSxFQUNWLElBQUksRUFBRSxLQUFLLEVBQ1gsSUFBSSxFQUFFLFNBQVMsQ0FDaEIsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVXNlck5hbWVJbmZvSW50ZXJmYWNlIHtcbiAgZmlyc3Q6IHN0cmluZ1xuICBsYXN0OiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICBjb25uZWN0ZWQ6IERhdGVcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJOYW1lSW5mbyBpbXBsZW1lbnRzIFVzZXJOYW1lSW5mb0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZpcnN0OiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgbGFzdDogc3RyaW5nID0gJycsXG4gICAgcHVibGljIGVtYWlsOiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgY29ubmVjdGVkOiBEYXRlID0gbmV3IERhdGUoKSxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogVXNlck5hbWVJbmZvIHtcblxuICAgIHJldHVybiBuZXcgVXNlck5hbWVJbmZvKFxuICAgICAgaXRlbT8uZmlyc3QsXG4gICAgICBpdGVtPy5sYXN0LFxuICAgICAgaXRlbT8uZW1haWwsXG4gICAgICBpdGVtPy5jb25uZWN0ZWQsXG4gICAgKVxuXG4gIH1cblxufVxuXG5cbiJdfQ==
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class WebsocketService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.socket = null;
|
|
7
|
-
this.messages = new BehaviorSubject(null);
|
|
8
|
-
this.messages$ = this.messages.asObservable();
|
|
9
|
-
this.connectionStatus = new BehaviorSubject(false);
|
|
10
|
-
this.connectionStatus$ = this.connectionStatus.asObservable();
|
|
11
|
-
}
|
|
12
|
-
connect(url, jwtToken) {
|
|
13
|
-
if (this.socket)
|
|
14
|
-
return;
|
|
15
|
-
const URL = (jwtToken) ? `${url}?token=${jwtToken}` : url;
|
|
16
|
-
this.socket = new WebSocket(URL);
|
|
17
|
-
this.socket.onopen = (data) => {
|
|
18
|
-
console.log(`📡 Connected to WebSocket`);
|
|
19
|
-
this.connectionStatus.next(true);
|
|
20
|
-
};
|
|
21
|
-
this.socket.onmessage = (event) => {
|
|
22
|
-
try {
|
|
23
|
-
const data = JSON.parse(event.data);
|
|
24
|
-
if (data.error && data.error === 'JWT_INVALID') {
|
|
25
|
-
console.error('JWT validation failed. Authentication error!');
|
|
26
|
-
this.connectionStatus.next(false);
|
|
27
|
-
this.socket?.close();
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
this.messages.next(data);
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
console.error('Error parsing WebSocket message:', event.data);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
this.socket.onclose = () => {
|
|
37
|
-
console.log('WebSocket connection closed');
|
|
38
|
-
this.connectionStatus.next(false);
|
|
39
|
-
this.socket = null;
|
|
40
|
-
};
|
|
41
|
-
this.socket.onerror = (error) => {
|
|
42
|
-
console.error('WebSocket error:', error);
|
|
43
|
-
this.connectionStatus.next(false);
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
disconnect() {
|
|
47
|
-
if (this.socket) {
|
|
48
|
-
this.socket.close();
|
|
49
|
-
this.socket = null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
subscribeToChannel(channel) {
|
|
53
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
54
|
-
this.socket.send(JSON.stringify({ type: 'subscribe', subscribedChannel: channel }));
|
|
55
|
-
console.log(`💬 Subscribed to channel: ${channel}`);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
console.error('WebSocket is not open. Cannot subscribe to channel.');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
unsubscribeToChannel(channel) {
|
|
62
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
63
|
-
this.socket.send(JSON.stringify({ type: 'unsubscribe', subscribedChannel: channel }));
|
|
64
|
-
console.log(`💬 Unsubscribed to channel: ${channel}`);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
console.error('WebSocket is not open. Cannot unsubscribed to channel.');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
sendMessage(channel, content) {
|
|
71
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
72
|
-
this.socket.send(JSON.stringify({ type: 'message', subscribedChannel: channel, content }));
|
|
73
|
-
console.log(`💬 Send message: ${content}`);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
console.error('WebSocket is not open. Cannot send message.');
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
sendBroadcast(content) {
|
|
80
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
81
|
-
this.socket.send(JSON.stringify({ type: 'broadcast', content }));
|
|
82
|
-
console.log(`📢 Send broadcast: ${content}`);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
console.error('WebSocket is not open. Cannot send broadcast.');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
getAllChannels() {
|
|
89
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
90
|
-
this.socket.send(JSON.stringify({ type: 'getChannels' }));
|
|
91
|
-
console.log('🗂️ List of all channels');
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
console.error('WebSocket is not open. Cannot request channels.');
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
createChannel(channel) {
|
|
98
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
99
|
-
this.socket.send(JSON.stringify({ type: 'createChannel', content: channel }));
|
|
100
|
-
console.log('🗂️ Created channel:', channel);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
console.error('WebSocket is not open. Cannot request channels.');
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
deleteChannel(channel) {
|
|
107
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
108
|
-
this.socket.send(JSON.stringify({ type: 'deleteChannel', content: channel }));
|
|
109
|
-
console.log('🗂️ Delete channel:', channel);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
console.error('WebSocket is not open. Cannot request channels.');
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
getUsersInChannel(channel) {
|
|
116
|
-
if (this.socket?.readyState === WebSocket.OPEN) {
|
|
117
|
-
this.socket.send(JSON.stringify({ type: 'getUsers', subscribedChannel: channel }));
|
|
118
|
-
console.log(`👥 List all users in channel: ${channel}`);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
console.error('WebSocket is not open. Cannot request users.');
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
125
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, providedIn: 'root' }); }
|
|
126
|
-
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebsocketService, decorators: [{
|
|
128
|
-
type: Injectable,
|
|
129
|
-
args: [{
|
|
130
|
-
providedIn: 'root',
|
|
131
|
-
}]
|
|
132
|
-
}] });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3dzLW1hbmFnZXItc2VydmljZS93ZWJzb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxnQkFBZ0I7SUFIN0I7UUFLVSxXQUFNLEdBQXFCLElBQUksQ0FBQztRQUVoQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUF3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7S0E4SHRGO0lBNUhDLE9BQU8sQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFFcEMsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUUxRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJ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QyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7K0dBcElVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2Vic29ja2V0U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzb2NrZXQ6IFdlYlNvY2tldCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgbWVzc2FnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHB1YmxpYyBtZXNzYWdlcyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMubWVzc2FnZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBjb25uZWN0aW9uU3RhdHVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY29ubmVjdGlvblN0YXR1cy5hc09ic2VydmFibGUoKTtcblxuICBjb25uZWN0KHVybDogc3RyaW5nLCBqd3RUb2tlbj86IHN0cmluZykge1xuXG4gICAgaWYgKHRoaXMuc29ja2V0KSByZXR1cm47XG5cbiAgICBjb25zdCBVUkwgPSAoand0VG9rZW4pID8gYCR7dXJsfT90b2tlbj0ke2p3dFRva2VufWAgOiB1cmw7XG5cbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoVVJMKTtcblxuICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9IChkYXRhKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhg8J+ToSBDb25uZWN0ZWQgdG8gV2ViU29ja2V0YCk7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMubmV4dCh0cnVlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuXG4gICAgICAgIGlmIChkYXRhLmVycm9yICYmIGRhdGEuZXJyb3IgPT09ICdKV1RfSU5WQUxJRCcpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdKV1QgdmFsaWRhdGlvbiBmYWlsZWQuIEF1dGhlbnRpY2F0aW9uIGVycm9yIScpO1xuICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNvY2tldD8uY2xvc2UoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzLm5leHQoZGF0YSk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgV2ViU29ja2V0IG1lc3NhZ2U6JywgZXZlbnQuZGF0YSk7XG4gICAgICB9XG5cbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25jbG9zZSA9ICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBjbG9zZWQnKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuc29ja2V0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgdGhpcy5zb2NrZXQub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignV2ViU29ja2V0IGVycm9yOicsIGVycm9yKTtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cy5uZXh0KGZhbHNlKTtcbiAgICB9O1xuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICAgIHRoaXMuc29ja2V0LmNsb3NlKCk7XG4gICAgICB0aGlzLnNvY2tldCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3Vic2NyaWJlVG9DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnc3Vic2NyaWJlJywgc3Vic2NyaWJlZENoYW5uZWw6IGNoYW5uZWwgfSkpO1xuICAgICAgY29uc29sZS5sb2coYPCfkqwgU3Vic2NyaWJlZCB0byBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHN1YnNjcmliZSB0byBjaGFubmVsLicpO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlVG9DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAndW5zdWJzY3JpYmUnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+SrCBVbnN1YnNjcmliZWQgdG8gY2hhbm5lbDogJHtjaGFubmVsfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCB1bnN1YnNjcmliZWQgdG8gY2hhbm5lbC4nKTtcbiAgICB9XG4gIH1cblxuICBzZW5kTWVzc2FnZShjaGFubmVsOiBzdHJpbmcsIGNvbnRlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnbWVzc2FnZScsIHN1YnNjcmliZWRDaGFubmVsOiBjaGFubmVsLCBjb250ZW50IH0pKTtcbiAgICAgICAgY29uc29sZS5sb2coYPCfkqwgU2VuZCBtZXNzYWdlOiAke2NvbnRlbnR9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHNlbmQgbWVzc2FnZS4nKTtcbiAgICB9XG4gIH1cblxuICBzZW5kQnJvYWRjYXN0KGNvbnRlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnYnJvYWRjYXN0JywgY29udGVudCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+ToiBTZW5kIGJyb2FkY2FzdDogJHtjb250ZW50fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCBzZW5kIGJyb2FkY2FzdC4nKTtcbiAgICB9XG4gIH1cblxuICBnZXRBbGxDaGFubmVscygpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2dldENoYW5uZWxzJyB9KSk7XG4gICAgICBjb25zb2xlLmxvZygn8J+Xgu+4jyBMaXN0IG9mIGFsbCBjaGFubmVscycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IGNoYW5uZWxzLicpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNoYW5uZWwoY2hhbm5lbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ja2V0Py5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdjcmVhdGVDaGFubmVsJywgY29udGVudDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZygn8J+Xgu+4jyBDcmVhdGVkIGNoYW5uZWw6JywgY2hhbm5lbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgY2hhbm5lbHMuJyk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlQ2hhbm5lbChjaGFubmVsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb2NrZXQ/LnJlYWR5U3RhdGUgPT09IFdlYlNvY2tldC5PUEVOKSB7XG4gICAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ2RlbGV0ZUNoYW5uZWwnLCBjb250ZW50OiBjaGFubmVsIH0pKTtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5eC77iPIERlbGV0ZSBjaGFubmVsOicsIGNoYW5uZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgaXMgbm90IG9wZW4uIENhbm5vdCByZXF1ZXN0IGNoYW5uZWxzLicpO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJzSW5DaGFubmVsKGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvY2tldD8ucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnZ2V0VXNlcnMnLCBzdWJzY3JpYmVkQ2hhbm5lbDogY2hhbm5lbCB9KSk7XG4gICAgICBjb25zb2xlLmxvZyhg8J+RpSBMaXN0IGFsbCB1c2VycyBpbiBjaGFubmVsOiAke2NoYW5uZWx9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3Blbi4gQ2Fubm90IHJlcXVlc3QgdXNlcnMuJyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
Binary file
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { UserNameInfo } from "./user-name-info.model";
|
|
2
|
-
export interface UserInfoInterface {
|
|
3
|
-
username: string;
|
|
4
|
-
name: UserNameInfo;
|
|
5
|
-
}
|
|
6
|
-
export declare class UserInfo implements UserInfoInterface {
|
|
7
|
-
username: string;
|
|
8
|
-
name: UserNameInfo;
|
|
9
|
-
constructor(username?: string, name?: UserNameInfo);
|
|
10
|
-
static adapt(item?: any): UserInfo;
|
|
11
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export interface UserNameInfoInterface {
|
|
2
|
-
first: string;
|
|
3
|
-
last: string;
|
|
4
|
-
email: string;
|
|
5
|
-
connected: Date;
|
|
6
|
-
}
|
|
7
|
-
export declare class UserNameInfo implements UserNameInfoInterface {
|
|
8
|
-
first: string;
|
|
9
|
-
last: string;
|
|
10
|
-
email: string;
|
|
11
|
-
connected: Date;
|
|
12
|
-
constructor(first?: string, last?: string, email?: string, connected?: Date);
|
|
13
|
-
static adapt(item?: any): UserNameInfo;
|
|
14
|
-
}
|
|
File without changes
|
|
File without changes
|