@supraio/client-sdk 0.0.1-master.1 → 0.0.1-master.11
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/dist/browser/src/Firebase/collections.d.ts +9 -7
- package/dist/browser/src/Firebase/collections.js +36 -13
- package/dist/browser/src/Firebase/collections.js.map +1 -1
- package/dist/browser/src/Options.d.ts +4 -4
- package/dist/browser/src/Options.js +4 -4
- package/dist/browser/src/Options.js.map +1 -1
- package/dist/browser/src/Platform/daemonHelper.d.ts +1 -2
- package/dist/browser/src/Platform/daemonHelper.js +2 -2
- package/dist/browser/src/Platform/daemonHelper.js.map +1 -1
- package/dist/browser/src/Platform/pathHelper.js.map +1 -1
- package/dist/browser/src/Platform/sshHelper.js +27 -2
- package/dist/browser/src/Platform/sshHelper.js.map +1 -1
- package/dist/browser/src/Process/App/App.d.ts +3 -1
- package/dist/browser/src/Process/Options.d.ts +12 -0
- package/dist/browser/src/Process/Process.d.ts +1 -0
- package/dist/browser/src/Process/ProcessSdk.d.ts +22 -10
- package/dist/browser/src/Process/ProcessSdk.js +57 -37
- package/dist/browser/src/Process/ProcessSdk.js.map +1 -1
- package/dist/browser/src/Sdk.d.ts +2 -0
- package/dist/browser/src/Sdk.js +31 -20
- package/dist/browser/src/Sdk.js.map +1 -1
- package/dist/browser/src/Server/Options.d.ts +8 -0
- package/dist/browser/src/Server/Options.js +2 -0
- package/dist/browser/src/Server/Options.js.map +1 -0
- package/dist/browser/src/Server/Server.js.map +1 -0
- package/dist/browser/src/Server/ServerSdk.d.ts +8 -0
- package/dist/browser/src/Server/ServerSdk.js +29 -0
- package/dist/browser/src/Server/ServerSdk.js.map +1 -0
- package/dist/browser/src/Session/FSSessionStorage.js +2 -1
- package/dist/browser/src/Session/FSSessionStorage.js.map +1 -1
- package/dist/browser/src/Session/SessionSdk.d.ts +10 -2
- package/dist/browser/src/Session/SessionSdk.js +39 -11
- package/dist/browser/src/Session/SessionSdk.js.map +1 -1
- package/dist/browser/src/Session/sessionStorageFactory.js.map +1 -1
- package/dist/browser/src/User/User.d.ts +1 -0
- package/dist/browser/src/polyfill.d.ts +0 -1
- package/dist/browser/src/polyfill.js.map +1 -1
- package/dist/node/src/Firebase/collections.d.ts +9 -7
- package/dist/node/src/Firebase/collections.js +46 -22
- package/dist/node/src/Firebase/collections.js.map +1 -1
- package/dist/node/src/Hash/generator.js +4 -5
- package/dist/node/src/Hash/generator.js.map +1 -1
- package/dist/node/src/Options.d.ts +4 -4
- package/dist/node/src/Options.js +6 -6
- package/dist/node/src/Options.js.map +1 -1
- package/dist/node/src/Platform/daemonHelper.d.ts +1 -2
- package/dist/node/src/Platform/daemonHelper.js +8 -8
- package/dist/node/src/Platform/daemonHelper.js.map +1 -1
- package/dist/node/src/Platform/pathHelper.js +14 -15
- package/dist/node/src/Platform/pathHelper.js.map +1 -1
- package/dist/node/src/Platform/sshHelper.js +31 -7
- package/dist/node/src/Platform/sshHelper.js.map +1 -1
- package/dist/node/src/Process/App/App.d.ts +3 -1
- package/dist/node/src/Process/Options.d.ts +12 -0
- package/dist/node/src/Process/Process.d.ts +1 -0
- package/dist/node/src/Process/ProcessSdk.d.ts +22 -10
- package/dist/node/src/Process/ProcessSdk.js +68 -48
- package/dist/node/src/Process/ProcessSdk.js.map +1 -1
- package/dist/node/src/Sdk.d.ts +2 -0
- package/dist/node/src/Sdk.js +38 -26
- package/dist/node/src/Sdk.js.map +1 -1
- package/dist/node/src/Server/Options.d.ts +8 -0
- package/dist/node/src/Server/Options.js +3 -0
- package/dist/node/src/Server/Options.js.map +1 -0
- package/dist/node/src/{Process → Server}/Server.js +1 -1
- package/dist/node/src/Server/Server.js.map +1 -0
- package/dist/node/src/Server/ServerSdk.d.ts +8 -0
- package/dist/node/src/Server/ServerSdk.js +33 -0
- package/dist/node/src/Server/ServerSdk.js.map +1 -0
- package/dist/node/src/Session/FSSessionStorage.js +3 -2
- package/dist/node/src/Session/FSSessionStorage.js.map +1 -1
- package/dist/node/src/Session/SessionSdk.d.ts +10 -2
- package/dist/node/src/Session/SessionSdk.js +44 -16
- package/dist/node/src/Session/SessionSdk.js.map +1 -1
- package/dist/node/src/Session/sessionStorageFactory.js +1 -2
- package/dist/node/src/Session/sessionStorageFactory.js.map +1 -1
- package/dist/node/src/Timer/wait.js +1 -2
- package/dist/node/src/Timer/wait.js.map +1 -1
- package/dist/node/src/User/User.d.ts +1 -0
- package/dist/node/src/index.js +5 -1
- package/dist/node/src/index.js.map +1 -1
- package/dist/node/src/polyfill.d.ts +0 -1
- package/dist/node/src/polyfill.js.map +1 -1
- package/package.json +4 -4
- package/dist/browser/src/Process/Server.js.map +0 -1
- package/dist/node/src/Process/Server.js.map +0 -1
- /package/dist/browser/src/{Process → Server}/Server.d.ts +0 -0
- /package/dist/browser/src/{Process → Server}/Server.js +0 -0
- /package/dist/node/src/{Process → Server}/Server.d.ts +0 -0
package/dist/browser/src/Sdk.js
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getApp, getApps, initializeApp } from '@firebase/app';
|
|
2
|
+
import { getAuth, OAuthCredential, signInWithCredential } from '@firebase/auth';
|
|
2
3
|
import { ProcessSdk } from "./Process/ProcessSdk";
|
|
3
4
|
import { SessionSdk } from "./Session/SessionSdk";
|
|
4
5
|
import * as defaultFirebaseOptions from '../firebase.json';
|
|
5
6
|
import { createSessionStorage } from './Session/sessionStorageFactory';
|
|
6
7
|
import { wait } from './Timer/wait';
|
|
8
|
+
import { ServerSdk } from './Server/ServerSdk';
|
|
7
9
|
const FIREBASE_APP_NAME = 'sdk';
|
|
8
10
|
export class Sdk {
|
|
11
|
+
options;
|
|
12
|
+
session;
|
|
13
|
+
server;
|
|
14
|
+
process;
|
|
15
|
+
firebaseApp;
|
|
9
16
|
constructor(options) {
|
|
10
17
|
this.options = options;
|
|
11
|
-
this.getAuthenticatedFirebaseApp = async () => {
|
|
12
|
-
if (!this.firebaseApp.auth().currentUser) {
|
|
13
|
-
const tokenCredentials = this.options?.auth?.token;
|
|
14
|
-
if (!tokenCredentials) {
|
|
15
|
-
throw new Error(`No "options.auth.token" specified`);
|
|
16
|
-
}
|
|
17
|
-
const userCredentials = firebase.auth.AuthCredential.fromJSON(tokenCredentials);
|
|
18
|
-
if (!userCredentials) {
|
|
19
|
-
throw new Error(`Invalid "options.auth.token" user credentials`);
|
|
20
|
-
}
|
|
21
|
-
await this.safeAuth(userCredentials);
|
|
22
|
-
}
|
|
23
|
-
return this.firebaseApp;
|
|
24
|
-
};
|
|
25
18
|
const firebaseOptions = this.options?.firebase ?? defaultFirebaseOptions;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
const firebaseApps = getApps();
|
|
20
|
+
this.firebaseApp = !firebaseApps.some((a) => a.name === FIREBASE_APP_NAME)
|
|
21
|
+
? initializeApp(firebaseOptions, FIREBASE_APP_NAME)
|
|
22
|
+
: getApp(FIREBASE_APP_NAME);
|
|
29
23
|
const sessionStorage = createSessionStorage(this.options);
|
|
30
24
|
this.session = new SessionSdk(this.options, this.getAuthenticatedFirebaseApp, sessionStorage);
|
|
31
|
-
this.
|
|
25
|
+
this.server = new ServerSdk(this.getAuthenticatedFirebaseApp);
|
|
26
|
+
this.process = new ProcessSdk(this.options, this.session, this.server);
|
|
32
27
|
}
|
|
33
28
|
/**
|
|
34
29
|
* @alias sdk.session.connect
|
|
@@ -36,13 +31,29 @@ export class Sdk {
|
|
|
36
31
|
async connect(connectOptions) {
|
|
37
32
|
return this.session.connect(connectOptions);
|
|
38
33
|
}
|
|
34
|
+
getAuthenticatedFirebaseApp = async () => {
|
|
35
|
+
const firebaseAuth = getAuth(this.firebaseApp);
|
|
36
|
+
if (!firebaseAuth.currentUser) {
|
|
37
|
+
const tokenCredentials = this.options?.auth?.token;
|
|
38
|
+
if (!tokenCredentials) {
|
|
39
|
+
throw new Error(`No "options.auth.token" specified`);
|
|
40
|
+
}
|
|
41
|
+
const userCredentials = OAuthCredential.fromJSON(tokenCredentials);
|
|
42
|
+
if (!userCredentials) {
|
|
43
|
+
throw new Error(`Invalid "options.auth.token" user credentials`);
|
|
44
|
+
}
|
|
45
|
+
await this.safeAuth(userCredentials);
|
|
46
|
+
}
|
|
47
|
+
return this.firebaseApp;
|
|
48
|
+
};
|
|
39
49
|
async safeAuth(userCredentials) {
|
|
50
|
+
const firebaseAuth = getAuth(this.firebaseApp);
|
|
40
51
|
let lastError;
|
|
41
52
|
for (let i = 0; i < 3; i++) {
|
|
42
53
|
try {
|
|
43
54
|
// With no reason, the auth fails always for the first time with following error:
|
|
44
55
|
// Failed check current session validity Error: addEventListener and attachEvent are unavailable.
|
|
45
|
-
await
|
|
56
|
+
await signInWithCredential(firebaseAuth, userCredentials);
|
|
46
57
|
return;
|
|
47
58
|
}
|
|
48
59
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sdk.js","sourceRoot":"","sources":["../../../src/Sdk.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Sdk.js","sourceRoot":"","sources":["../../../src/Sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../src/Server/Options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../../../src/Server/Server.ts"],"names":[],"mappings":"AACA,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IACnB,2BAAe,CAAA;IACf,+BAAmB,CAAA;AACpB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FirebaseApp } from '@firebase/app';
|
|
2
|
+
import { FindServerOptions, GetServersOptions } from './Options';
|
|
3
|
+
export declare class ServerSdk {
|
|
4
|
+
private firebaseApp;
|
|
5
|
+
constructor(firebaseApp: () => Promise<FirebaseApp>);
|
|
6
|
+
getServers(options?: GetServersOptions): Promise<import("./Server").Server[]>;
|
|
7
|
+
findServer(processOptions: FindServerOptions): Promise<import("./Server").Server>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getDocs, query, where } from '@firebase/firestore';
|
|
2
|
+
import { getServerCollection } from '../Firebase/collections';
|
|
3
|
+
export class ServerSdk {
|
|
4
|
+
firebaseApp;
|
|
5
|
+
constructor(firebaseApp) {
|
|
6
|
+
this.firebaseApp = firebaseApp;
|
|
7
|
+
}
|
|
8
|
+
async getServers(options) {
|
|
9
|
+
const firebaseApp = await this.firebaseApp();
|
|
10
|
+
const serversCol = await getServerCollection(firebaseApp);
|
|
11
|
+
const q = options?.serverUids
|
|
12
|
+
? query(serversCol, where('serverUid', 'in', options.serverUids))
|
|
13
|
+
: serversCol;
|
|
14
|
+
const serversDocument = await getDocs(q);
|
|
15
|
+
return serversDocument.docs.map((doc) => doc.data());
|
|
16
|
+
}
|
|
17
|
+
async findServer(processOptions) {
|
|
18
|
+
const firebaseApp = await this.firebaseApp();
|
|
19
|
+
const serversCol = await getServerCollection(firebaseApp);
|
|
20
|
+
const serversDocument = await getDocs(serversCol);
|
|
21
|
+
const firstServerDocument = serversDocument.docs.find((s) => s.data().serverUid === processOptions.serverUid);
|
|
22
|
+
if (!firstServerDocument) {
|
|
23
|
+
throw new Error(`No servers found for user`);
|
|
24
|
+
}
|
|
25
|
+
const firstServer = firstServerDocument.data();
|
|
26
|
+
return firstServer;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ServerSdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerSdk.js","sourceRoot":"","sources":["../../../../src/Server/ServerSdk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,OAAO,SAAS;IAGZ;IADT,YACS,WAAuC;QAAvC,gBAAW,GAAX,WAAW,CAA4B;IAC7C,CAAC;IAEG,KAAK,CAAC,UAAU,CAAC,OAA2B;QAClD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,OAAO,EAAE,UAAU;YAC5B,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC,CAAC,UAAU,CAAC;QACd,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,cAAiC;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9G,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,WAAW,CAAC;IACpB,CAAC;CACD"}
|
|
@@ -2,9 +2,10 @@ import path from 'path';
|
|
|
2
2
|
import { getRunPath } from '../Platform/pathHelper';
|
|
3
3
|
const CURRENT_SESSIONS_FILENAME = 'sessions';
|
|
4
4
|
export class FSSessionStorage {
|
|
5
|
+
options;
|
|
6
|
+
fs = eval('require')('fs-extra'); // TODO make it better than eval()
|
|
5
7
|
constructor(options) {
|
|
6
8
|
this.options = options;
|
|
7
|
-
this.fs = eval('require')('fs-extra'); // TODO make it better than eval()
|
|
8
9
|
}
|
|
9
10
|
async setSessions(sessions) {
|
|
10
11
|
const currentSessionsPath = await this.getCurrentSessionsPath();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FSSessionStorage.js","sourceRoot":"","sources":["../../../../src/Session/FSSessionStorage.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAE7C,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"FSSessionStorage.js","sourceRoot":"","sources":["../../../../src/Session/FSSessionStorage.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,MAAM,yBAAyB,GAAG,UAAU,CAAC;AAE7C,MAAM,OAAO,gBAAgB;IAKnB;IAHD,EAAE,GAAkB,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kCAAkC;IAE3F,YACS,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAClC,CAAC;IAEG,KAAK,CAAC,WAAW,CAAC,QAA0B;QAClD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChE,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,WAAW;QACvB,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChE,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7E,MAAM,QAAQ,GAAqB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,sBAAsB;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACtD,CAAC;CACD"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Options } from "../Options";
|
|
2
2
|
import { ConnectOptions } from "./Options";
|
|
3
3
|
import { CurrentSession } from './CurrentSession';
|
|
4
|
-
import
|
|
4
|
+
import { FirebaseApp } from '@firebase/app';
|
|
5
5
|
import { RemoteSession } from './RemoteSession';
|
|
6
6
|
import { ISessionStorage } from './ISessionStorage';
|
|
7
7
|
export declare class SessionSdk {
|
|
8
8
|
private readonly options;
|
|
9
9
|
private firebaseApp;
|
|
10
10
|
private sessionStorage;
|
|
11
|
-
constructor(options: Options | undefined, firebaseApp: () => Promise<
|
|
11
|
+
constructor(options: Options | undefined, firebaseApp: () => Promise<FirebaseApp>, sessionStorage: ISessionStorage);
|
|
12
12
|
/**
|
|
13
13
|
* Connect a new session if doesn't exist.
|
|
14
14
|
* Reuse & return existing connection if already exists.
|
|
@@ -26,6 +26,14 @@ export declare class SessionSdk {
|
|
|
26
26
|
* @throws an Error when no valid session is available
|
|
27
27
|
*/
|
|
28
28
|
get(): Promise<CurrentSession>;
|
|
29
|
+
/**
|
|
30
|
+
* Remove all currently active sessions for current computer
|
|
31
|
+
*/
|
|
32
|
+
remove(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Remove one currently active session for current computer
|
|
35
|
+
*/
|
|
36
|
+
removeOne(session: CurrentSession): Promise<void>;
|
|
29
37
|
private getOrConnectNew;
|
|
30
38
|
private connectNew;
|
|
31
39
|
private createRemoteSession;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { generateClientId, generateClientSecret, generateUniqueHash } from '../Hash/generator';
|
|
2
2
|
import { getLocalSshPublicKey } from '../Platform/sshHelper';
|
|
3
3
|
import { getSessionCollection, getUserDocument } from '../Firebase/collections';
|
|
4
|
+
import { deleteDoc, doc, getDoc, setDoc, updateDoc } from "firebase/firestore";
|
|
4
5
|
const DEFAULT_RETRIES = 2;
|
|
5
6
|
export class SessionSdk {
|
|
7
|
+
options;
|
|
8
|
+
firebaseApp;
|
|
9
|
+
sessionStorage;
|
|
6
10
|
constructor(options, firebaseApp, sessionStorage) {
|
|
7
11
|
this.options = options;
|
|
8
12
|
this.firebaseApp = firebaseApp;
|
|
@@ -54,12 +58,34 @@ export class SessionSdk {
|
|
|
54
58
|
return session;
|
|
55
59
|
}
|
|
56
60
|
else {
|
|
57
|
-
await this.
|
|
58
|
-
await this.deleteRemoteSession(session);
|
|
61
|
+
await this.removeOne(session);
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
throw new Error(`No valid current session found`);
|
|
62
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Remove all currently active sessions for current computer
|
|
68
|
+
*/
|
|
69
|
+
async remove() {
|
|
70
|
+
const sessions = await this.sessionStorage.getSessions();
|
|
71
|
+
for (const session of sessions) {
|
|
72
|
+
try {
|
|
73
|
+
await this.removeOne(session);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error('Cannot remove session', error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Remove one currently active session for current computer
|
|
82
|
+
*/
|
|
83
|
+
async removeOne(session) {
|
|
84
|
+
await Promise.all([
|
|
85
|
+
this.deleteRemoteSession(session),
|
|
86
|
+
this.removeSession(session),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
63
89
|
async getOrConnectNew() {
|
|
64
90
|
const sessions = await this.sessionStorage.getSessions();
|
|
65
91
|
if (sessions.length === 0) {
|
|
@@ -88,22 +114,24 @@ export class SessionSdk {
|
|
|
88
114
|
},
|
|
89
115
|
createdAt: session.createdAt,
|
|
90
116
|
};
|
|
91
|
-
const sessionsCol = getSessionCollection(firebaseApp);
|
|
92
|
-
|
|
93
|
-
const userDoc = getUserDocument(firebaseApp);
|
|
94
|
-
await userDoc
|
|
95
|
-
|
|
117
|
+
const sessionsCol = await getSessionCollection(firebaseApp);
|
|
118
|
+
setDoc(doc(sessionsCol, session.uid), remoteSession);
|
|
119
|
+
const userDoc = await getUserDocument(firebaseApp);
|
|
120
|
+
await updateDoc(userDoc, {
|
|
121
|
+
performRequests: {
|
|
122
|
+
ensureSessionsAt: new Date(),
|
|
123
|
+
},
|
|
96
124
|
});
|
|
97
125
|
}
|
|
98
126
|
async deleteRemoteSession(session) {
|
|
99
127
|
const firebaseApp = await this.firebaseApp();
|
|
100
|
-
const sessionsCol = getSessionCollection(firebaseApp);
|
|
101
|
-
await
|
|
128
|
+
const sessionsCol = await getSessionCollection(firebaseApp);
|
|
129
|
+
await deleteDoc(doc(sessionsCol, session.uid));
|
|
102
130
|
}
|
|
103
131
|
async getRemoteByCurrent(session) {
|
|
104
132
|
const firebaseApp = await this.firebaseApp();
|
|
105
|
-
const sessionsCol = getSessionCollection(firebaseApp);
|
|
106
|
-
const sessionDocument = await
|
|
133
|
+
const sessionsCol = await getSessionCollection(firebaseApp);
|
|
134
|
+
const sessionDocument = await getDoc(doc(sessionsCol, session.uid));
|
|
107
135
|
const remoteSession = sessionDocument.data();
|
|
108
136
|
if (!remoteSession) {
|
|
109
137
|
throw new Error(`No valid remote session found`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionSdk.js","sourceRoot":"","sources":["../../../../src/Session/SessionSdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionSdk.js","sourceRoot":"","sources":["../../../../src/Session/SessionSdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionStorageFactory.js","sourceRoot":"","sources":["../../../../src/Session/sessionStorageFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,OAA4B;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"sessionStorageFactory.js","sourceRoot":"","sources":["../../../../src/Session/sessionStorageFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,oBAAoB,CAAC,OAA4B;IAChE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,gBAAgB,EAAE,CAAC;IAC/B,CAAC;SAAM,CAAC;QACP,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,IAAI,CAAC;AAQpB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"polyfill.js","sourceRoot":"","sources":["../../../src/polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,IAAI,CAAC;AAQpB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACnC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI;QAClC,GAAG,EAAE;YACJ,MAAM,EAAE,SAAS;SACjB;KACD,CAAC;IACF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,IAAI,OAAO,EAAE,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACtC,EAAE,CAAC,QAAkC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACrC,EAAE,CAAC,OAAwB,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,EAAE,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAEtC,EAAE,CAAC,QAA8D,GAAG,EAAE,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACpI,CAAC;AACF,CAAC;KAAM,CAAC;IACP,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAiB,CAAC;AACpD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FirebaseApp } from '@firebase/app';
|
|
2
|
+
import { DocumentReference, CollectionReference } from '@firebase/firestore';
|
|
2
3
|
import { ServerApp } from '../Process/App/App';
|
|
3
|
-
import { Server } from '../
|
|
4
|
+
import { Server } from '../Server/Server';
|
|
4
5
|
import { ServerVolume } from '../Process/Volume/Volume';
|
|
5
6
|
import { RemoteSession } from '../Session/RemoteSession';
|
|
6
7
|
import { User } from '../User/User';
|
|
@@ -15,8 +16,9 @@ export declare enum UserServerCollection {
|
|
|
15
16
|
APP = "apps",
|
|
16
17
|
VOLUME = "volumes"
|
|
17
18
|
}
|
|
18
|
-
export declare function getUserDocument(firebaseApp:
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
19
|
+
export declare function getUserDocument(firebaseApp: FirebaseApp): Promise<DocumentReference<User>>;
|
|
20
|
+
export declare function getServerDocument(firebaseApp: FirebaseApp, serverUid: string): Promise<DocumentReference<Server>>;
|
|
21
|
+
export declare function getServerCollection(firebaseApp: FirebaseApp): Promise<CollectionReference<Server>>;
|
|
22
|
+
export declare function getSessionCollection(firebaseApp: FirebaseApp): Promise<CollectionReference<RemoteSession>>;
|
|
23
|
+
export declare function getServerAppCollection(firebaseApp: FirebaseApp, serverUid: string): Promise<CollectionReference<ServerApp>>;
|
|
24
|
+
export declare function getServerVolumeCollection(firebaseApp: FirebaseApp, serverUid: string): Promise<CollectionReference<ServerVolume>>;
|
|
@@ -1,45 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.UserServerCollection = exports.UserCollection = exports.MainCollection = void 0;
|
|
4
|
+
exports.getUserDocument = getUserDocument;
|
|
5
|
+
exports.getServerDocument = getServerDocument;
|
|
6
|
+
exports.getServerCollection = getServerCollection;
|
|
7
|
+
exports.getSessionCollection = getSessionCollection;
|
|
8
|
+
exports.getServerAppCollection = getServerAppCollection;
|
|
9
|
+
exports.getServerVolumeCollection = getServerVolumeCollection;
|
|
10
|
+
const auth_1 = require("@firebase/auth");
|
|
11
|
+
const firestore_1 = require("@firebase/firestore");
|
|
4
12
|
var MainCollection;
|
|
5
13
|
(function (MainCollection) {
|
|
6
14
|
MainCollection["USER"] = "user";
|
|
7
|
-
})(MainCollection
|
|
15
|
+
})(MainCollection || (exports.MainCollection = MainCollection = {}));
|
|
8
16
|
var UserCollection;
|
|
9
17
|
(function (UserCollection) {
|
|
10
18
|
UserCollection["SESSION"] = "session";
|
|
11
19
|
UserCollection["SERVER"] = "server";
|
|
12
|
-
})(UserCollection
|
|
20
|
+
})(UserCollection || (exports.UserCollection = UserCollection = {}));
|
|
13
21
|
var UserServerCollection;
|
|
14
22
|
(function (UserServerCollection) {
|
|
15
23
|
UserServerCollection["APP"] = "apps";
|
|
16
24
|
UserServerCollection["VOLUME"] = "volumes";
|
|
17
|
-
})(UserServerCollection
|
|
18
|
-
function
|
|
19
|
-
const
|
|
25
|
+
})(UserServerCollection || (exports.UserServerCollection = UserServerCollection = {}));
|
|
26
|
+
async function getUserDocument(firebaseApp) {
|
|
27
|
+
const firebaseAuth = (0, auth_1.getAuth)(firebaseApp);
|
|
28
|
+
const user = firebaseAuth.currentUser;
|
|
20
29
|
if (!user) {
|
|
21
30
|
throw new Error(`User is not authenticated`);
|
|
22
31
|
}
|
|
23
|
-
|
|
32
|
+
const firestore = (0, firestore_1.getFirestore)(firebaseApp);
|
|
33
|
+
const usersSnapshot = await (0, firestore_1.getDocs)((0, firestore_1.query)((0, firestore_1.collection)(firestore, MainCollection.USER), (0, firestore_1.where)('uid', '==', user.uid)));
|
|
34
|
+
if (usersSnapshot.empty) {
|
|
35
|
+
throw new Error(`User was not found: ${user.uid}`);
|
|
36
|
+
}
|
|
37
|
+
const userSnapshot = usersSnapshot.docs[0];
|
|
38
|
+
return userSnapshot.ref;
|
|
24
39
|
}
|
|
25
|
-
function
|
|
26
|
-
|
|
40
|
+
async function getServerDocument(firebaseApp, serverUid) {
|
|
41
|
+
const serverCollection = await getServerCollection(firebaseApp);
|
|
42
|
+
const serversSnapshot = await (0, firestore_1.getDocs)((0, firestore_1.query)(serverCollection, (0, firestore_1.where)('serverUid', '==', serverUid)));
|
|
43
|
+
if (serversSnapshot.empty) {
|
|
44
|
+
throw new Error(`Server was not found: ${serverUid}`);
|
|
45
|
+
}
|
|
46
|
+
const serverSnapshot = serversSnapshot.docs[0];
|
|
47
|
+
return serverSnapshot.ref;
|
|
27
48
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
49
|
+
async function getServerCollection(firebaseApp) {
|
|
50
|
+
const userDoc = await getUserDocument(firebaseApp);
|
|
51
|
+
const firestore = (0, firestore_1.getFirestore)(firebaseApp);
|
|
52
|
+
return (0, firestore_1.collection)(firestore, userDoc.path, UserCollection.SERVER);
|
|
31
53
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
54
|
+
async function getSessionCollection(firebaseApp) {
|
|
55
|
+
const userDoc = await getUserDocument(firebaseApp);
|
|
56
|
+
const firestore = (0, firestore_1.getFirestore)(firebaseApp);
|
|
57
|
+
return (0, firestore_1.collection)(firestore, userDoc.path, UserCollection.SESSION);
|
|
35
58
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
59
|
+
async function getServerAppCollection(firebaseApp, serverUid) {
|
|
60
|
+
const serverDoc = await getServerDocument(firebaseApp, serverUid);
|
|
61
|
+
const firestore = (0, firestore_1.getFirestore)(firebaseApp);
|
|
62
|
+
return (0, firestore_1.collection)(firestore, serverDoc.path, UserServerCollection.APP);
|
|
39
63
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
64
|
+
async function getServerVolumeCollection(firebaseApp, serverUid) {
|
|
65
|
+
const serverDoc = await getServerDocument(firebaseApp, serverUid);
|
|
66
|
+
const firestore = (0, firestore_1.getFirestore)(firebaseApp);
|
|
67
|
+
return (0, firestore_1.collection)(firestore, serverDoc.path, UserServerCollection.VOLUME);
|
|
43
68
|
}
|
|
44
|
-
exports.getServerVolumeCollection = getServerVolumeCollection;
|
|
45
69
|
//# sourceMappingURL=collections.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../../src/Firebase/collections.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../../src/Firebase/collections.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateUniqueHash = generateUniqueHash;
|
|
4
|
+
exports.generateClientId = generateClientId;
|
|
5
|
+
exports.generateClientSecret = generateClientSecret;
|
|
4
6
|
const crypto_1 = require("crypto");
|
|
5
7
|
function generateUniqueHash(length = 50) {
|
|
6
|
-
const hash = crypto_1.createHash('sha256');
|
|
8
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
7
9
|
hash.update('' + new Date().valueOf() + Math.random());
|
|
8
10
|
return hash.digest('hex').substring(0, length);
|
|
9
11
|
}
|
|
10
|
-
exports.generateUniqueHash = generateUniqueHash;
|
|
11
12
|
/** The id has to have length 20 chars */
|
|
12
13
|
function generateClientId() {
|
|
13
14
|
return generateUniqueHash(20);
|
|
14
15
|
}
|
|
15
|
-
exports.generateClientId = generateClientId;
|
|
16
16
|
/** The secret has to have length 40 chars */
|
|
17
17
|
function generateClientSecret() {
|
|
18
18
|
return generateUniqueHash(40);
|
|
19
19
|
}
|
|
20
|
-
exports.generateClientSecret = generateClientSecret;
|
|
21
20
|
//# sourceMappingURL=generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/Hash/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/Hash/generator.ts"],"names":[],"mappings":";;AAEA,gDAIC;AAGD,4CAEC;AAGD,oDAEC;AAhBD,mCAAoC;AAEpC,SAAgB,kBAAkB,CAAC,MAAM,GAAG,EAAE;IAC7C,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,yCAAyC;AACzC,SAAgB,gBAAgB;IAC/B,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,6CAA6C;AAC7C,SAAgB,oBAAoB;IACnC,OAAO,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -16,14 +16,14 @@ export interface AuthOptions {
|
|
|
16
16
|
export declare enum NetStreamDriver {
|
|
17
17
|
/** Default value for native client */
|
|
18
18
|
DriverSimpleTCP = "simple_tcp",
|
|
19
|
-
/** Supported only in browser WASM */
|
|
20
|
-
|
|
19
|
+
/** Supported only in browser plain js or WASM */
|
|
20
|
+
DriverJSWebsocket = "js_websocket"
|
|
21
21
|
}
|
|
22
22
|
export declare enum NetPacketDriver {
|
|
23
23
|
/** Default value for native client */
|
|
24
24
|
DriverSimpleUDP = "simple_udp",
|
|
25
|
-
/** Supported only in browser WASM */
|
|
26
|
-
|
|
25
|
+
/** Supported only in browser plain js or WASM */
|
|
26
|
+
DriverJSWebsocket = "js_websocket",
|
|
27
27
|
/** TCP replacement for simple_udp which prevents loosing packets */
|
|
28
28
|
DriverSimpleTCP = "simple_tcp"
|
|
29
29
|
}
|
package/dist/node/src/Options.js
CHANGED
|
@@ -5,16 +5,16 @@ var NetStreamDriver;
|
|
|
5
5
|
(function (NetStreamDriver) {
|
|
6
6
|
/** Default value for native client */
|
|
7
7
|
NetStreamDriver["DriverSimpleTCP"] = "simple_tcp";
|
|
8
|
-
/** Supported only in browser WASM */
|
|
9
|
-
NetStreamDriver["
|
|
10
|
-
})(NetStreamDriver
|
|
8
|
+
/** Supported only in browser plain js or WASM */
|
|
9
|
+
NetStreamDriver["DriverJSWebsocket"] = "js_websocket";
|
|
10
|
+
})(NetStreamDriver || (exports.NetStreamDriver = NetStreamDriver = {}));
|
|
11
11
|
var NetPacketDriver;
|
|
12
12
|
(function (NetPacketDriver) {
|
|
13
13
|
/** Default value for native client */
|
|
14
14
|
NetPacketDriver["DriverSimpleUDP"] = "simple_udp";
|
|
15
|
-
/** Supported only in browser WASM */
|
|
16
|
-
NetPacketDriver["
|
|
15
|
+
/** Supported only in browser plain js or WASM */
|
|
16
|
+
NetPacketDriver["DriverJSWebsocket"] = "js_websocket";
|
|
17
17
|
/** TCP replacement for simple_udp which prevents loosing packets */
|
|
18
18
|
NetPacketDriver["DriverSimpleTCP"] = "simple_tcp";
|
|
19
|
-
})(NetPacketDriver
|
|
19
|
+
})(NetPacketDriver || (exports.NetPacketDriver = NetPacketDriver = {}));
|
|
20
20
|
//# sourceMappingURL=Options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../src/Options.ts"],"names":[],"mappings":";;;AAkBA,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,sCAAsC;IACtC,iDAA8B,CAAA;IAC9B,
|
|
1
|
+
{"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../src/Options.ts"],"names":[],"mappings":";;;AAkBA,IAAY,eAKX;AALD,WAAY,eAAe;IAC1B,sCAAsC;IACtC,iDAA8B,CAAA;IAC9B,iDAAiD;IACjD,qDAAkC,CAAA;AACnC,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B;AAED,IAAY,eAOX;AAPD,WAAY,eAAe;IAC1B,sCAAsC;IACtC,iDAA8B,CAAA;IAC9B,iDAAiD;IACjD,qDAAkC,CAAA;IAClC,oEAAoE;IACpE,iDAA8B,CAAA;AAC/B,CAAC,EAPW,eAAe,+BAAf,eAAe,QAO1B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { Server } from '../Process/Server';
|
|
1
|
+
import { Server } from '../Server/Server';
|
|
3
2
|
import { RemoteSession } from '../Session/RemoteSession';
|
|
4
3
|
import { NetPacketDriver, NetStreamDriver, Options } from '../Options';
|
|
5
4
|
export declare enum MsgType {
|