@peers-app/peers-device 0.16.0 → 0.16.1
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main.js +6 -1
- package/dist/main.js.map +1 -1
- package/dist/services-client.d.ts +24 -0
- package/dist/services-client.js +121 -0
- package/dist/services-client.js.map +1 -0
- package/dist/services-client.test.d.ts +1 -0
- package/dist/services-client.test.js +167 -0
- package/dist/services-client.test.js.map +1 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export * from "./machine-stats";
|
|
|
8
8
|
export * from "./main";
|
|
9
9
|
export * from "./message-processor";
|
|
10
10
|
export * from "./pvars.tracked-data-source";
|
|
11
|
+
export * from "./services-client";
|
|
11
12
|
export * from "./sync-group";
|
|
12
13
|
export * from "./system-tools";
|
|
13
14
|
export * from "./tool-call-processor";
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __exportStar(require("./machine-stats"), exports);
|
|
|
24
24
|
__exportStar(require("./main"), exports);
|
|
25
25
|
__exportStar(require("./message-processor"), exports);
|
|
26
26
|
__exportStar(require("./pvars.tracked-data-source"), exports);
|
|
27
|
+
__exportStar(require("./services-client"), exports);
|
|
27
28
|
__exportStar(require("./sync-group"), exports);
|
|
28
29
|
__exportStar(require("./system-tools"), exports);
|
|
29
30
|
__exportStar(require("./tool-call-processor"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0EAAwD;AACxD,oFAAkE;AAClE,6EAA2D;AAC3D,uEAAqD;AACrD,kFAAgE;AAChE,kDAAgC;AAChC,yCAAuB;AACvB,sDAAoC;AACpC,8DAA4C;AAC5C,+CAA6B;AAC7B,iDAA+B;AAC/B,wDAAsC;AACtC,gDAA8B;AAC9B,wDAAsC;AACtC,qDAAmC;AACnC,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0EAAwD;AACxD,oFAAkE;AAClE,6EAA2D;AAC3D,uEAAqD;AACrD,kFAAgE;AAChE,kDAAgC;AAChC,yCAAuB;AACvB,sDAAoC;AACpC,8DAA4C;AAC5C,oDAAkC;AAClC,+CAA6B;AAC7B,iDAA+B;AAC/B,wDAAsC;AACtC,gDAA8B;AAC9B,wDAAsC;AACtC,qDAAmC;AACnC,uDAAqC"}
|
package/dist/main.js
CHANGED
|
@@ -4,10 +4,11 @@ exports.peersDeviceInitializedPromise = exports.networkManagerPromise = exports.
|
|
|
4
4
|
exports.initializePeerDevice = initializePeerDevice;
|
|
5
5
|
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
6
6
|
const connection_manager_1 = require("./connection-manager/connection-manager");
|
|
7
|
+
const network_manager_1 = require("./connection-manager/network-manager");
|
|
7
8
|
const packages_tracked_data_source_1 = require("./packages.tracked-data-source");
|
|
8
9
|
const pvars_tracked_data_source_1 = require("./pvars.tracked-data-source");
|
|
10
|
+
const services_client_1 = require("./services-client");
|
|
9
11
|
const tracked_data_source_1 = require("./tracked-data-source");
|
|
10
|
-
const network_manager_1 = require("./connection-manager/network-manager");
|
|
11
12
|
let resolveConnectionManager;
|
|
12
13
|
exports.connectionManagerPromise = new Promise(async (resolve) => {
|
|
13
14
|
resolveConnectionManager = resolve;
|
|
@@ -97,6 +98,7 @@ async function initializePeerDevice(userId, dbConstructor, _setUserContext, file
|
|
|
97
98
|
const signObject = (obj) => {
|
|
98
99
|
return (0, peers_sdk_1.addSignatureToObject)(obj, keys.secretKey);
|
|
99
100
|
};
|
|
101
|
+
(0, services_client_1.initServicesClient)(userId, keys);
|
|
100
102
|
const localDevice = new peers_sdk_1.Device(userContext.userId, userContext.deviceId(), keys);
|
|
101
103
|
const getGroupSecretKey = async (groupId) => {
|
|
102
104
|
const groupSecretKeyPVar = await (0, peers_sdk_1.PersistentVars)(userContext.userDataContext).findOne({
|
|
@@ -132,6 +134,9 @@ async function initializePeerDevice(userId, dbConstructor, _setUserContext, file
|
|
|
132
134
|
groupDbs.delete(groupId);
|
|
133
135
|
changeTrackingTables.delete(groupId);
|
|
134
136
|
};
|
|
137
|
+
peers_sdk_1.rpcServerCalls.registerWithPeersServices = async () => {
|
|
138
|
+
return (0, services_client_1.registerOrAuthenticate)();
|
|
139
|
+
};
|
|
135
140
|
peers_sdk_1.PackagesTable.enablePackageSigning(signObject);
|
|
136
141
|
peers_sdk_1.PackageVersionsTable.enablePackageVersionSigning(signObject);
|
|
137
142
|
peers_sdk_1.GroupsTable.enableGroupSigning(signObject);
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type IPublicPrivateKeys } from "@peers-app/peers-sdk";
|
|
2
|
+
/** Configure the services client. Must be called during device initialization. */
|
|
3
|
+
export declare function initServicesClient(userId: string, keys: IPublicPrivateKeys, servicesUrl?: string): void;
|
|
4
|
+
interface ITokenResponse {
|
|
5
|
+
token: string;
|
|
6
|
+
expiresIn: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Register this user with peers-services via the two-step challenge-response flow.
|
|
10
|
+
* Returns the JWT on success, or throws with a descriptive message on failure.
|
|
11
|
+
* Returns null if the user is already registered (caller should authenticate instead).
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerWithServices(): Promise<ITokenResponse | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Authenticate an already-registered user with peers-services.
|
|
16
|
+
* Returns the JWT on success.
|
|
17
|
+
*/
|
|
18
|
+
export declare function authenticateWithServices(): Promise<ITokenResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Register or authenticate: tries registration first, falls back to authentication
|
|
21
|
+
* if the user is already registered. Returns the JWT token string.
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerOrAuthenticate(): Promise<string>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initServicesClient = initServicesClient;
|
|
4
|
+
exports.registerWithServices = registerWithServices;
|
|
5
|
+
exports.authenticateWithServices = authenticateWithServices;
|
|
6
|
+
exports.registerOrAuthenticate = registerOrAuthenticate;
|
|
7
|
+
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
8
|
+
const DEFAULT_SERVICES_URL = "https://peers-services.azurewebsites.net";
|
|
9
|
+
let _servicesUrl = DEFAULT_SERVICES_URL;
|
|
10
|
+
let _keys = null;
|
|
11
|
+
let _userId = null;
|
|
12
|
+
/** Configure the services client. Must be called during device initialization. */
|
|
13
|
+
function initServicesClient(userId, keys, servicesUrl) {
|
|
14
|
+
_userId = userId;
|
|
15
|
+
_keys = keys;
|
|
16
|
+
if (servicesUrl)
|
|
17
|
+
_servicesUrl = servicesUrl;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Register this user with peers-services via the two-step challenge-response flow.
|
|
21
|
+
* Returns the JWT on success, or throws with a descriptive message on failure.
|
|
22
|
+
* Returns null if the user is already registered (caller should authenticate instead).
|
|
23
|
+
*/
|
|
24
|
+
async function registerWithServices() {
|
|
25
|
+
if (!_userId || !_keys) {
|
|
26
|
+
throw new Error("Services client not initialized. Call initServicesClient first.");
|
|
27
|
+
}
|
|
28
|
+
// Step 1: Initiate registration
|
|
29
|
+
const initiateRes = await fetch(`${_servicesUrl}/api/v1/auth/register`, {
|
|
30
|
+
method: "POST",
|
|
31
|
+
headers: { "Content-Type": "application/json" },
|
|
32
|
+
body: JSON.stringify({
|
|
33
|
+
userId: _userId,
|
|
34
|
+
publicKey: _keys.publicKey,
|
|
35
|
+
publicBoxKey: _keys.publicBoxKey,
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
const initiateBody = await initiateRes.json();
|
|
39
|
+
if (!initiateRes.ok) {
|
|
40
|
+
throw new Error(initiateBody.error || `Registration initiate failed (${initiateRes.status})`);
|
|
41
|
+
}
|
|
42
|
+
if (initiateBody.status === "already_registered") {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const challenge = initiateBody;
|
|
46
|
+
// Step 2: Sign the challenge and verify
|
|
47
|
+
const challengeContents = {
|
|
48
|
+
nonce: challenge.nonce,
|
|
49
|
+
userId: _userId,
|
|
50
|
+
purpose: "peers-services-registration",
|
|
51
|
+
};
|
|
52
|
+
const signedChallenge = (0, peers_sdk_1.signObjectWithSecretKey)(challengeContents, _keys.secretKey);
|
|
53
|
+
const verifyRes = await fetch(`${_servicesUrl}/api/v1/auth/register/verify`, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: { "Content-Type": "application/json" },
|
|
56
|
+
body: JSON.stringify({
|
|
57
|
+
challengeId: challenge.challengeId,
|
|
58
|
+
signedChallenge,
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
const verifyBody = await verifyRes.json();
|
|
62
|
+
if (!verifyRes.ok) {
|
|
63
|
+
throw new Error(verifyBody.error || `Registration verify failed (${verifyRes.status})`);
|
|
64
|
+
}
|
|
65
|
+
return verifyBody;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Authenticate an already-registered user with peers-services.
|
|
69
|
+
* Returns the JWT on success.
|
|
70
|
+
*/
|
|
71
|
+
async function authenticateWithServices() {
|
|
72
|
+
if (!_userId || !_keys) {
|
|
73
|
+
throw new Error("Services client not initialized. Call initServicesClient first.");
|
|
74
|
+
}
|
|
75
|
+
const initiateRes = await fetch(`${_servicesUrl}/api/v1/auth/authenticate`, {
|
|
76
|
+
method: "POST",
|
|
77
|
+
headers: { "Content-Type": "application/json" },
|
|
78
|
+
body: JSON.stringify({
|
|
79
|
+
userId: _userId,
|
|
80
|
+
publicKey: _keys.publicKey,
|
|
81
|
+
}),
|
|
82
|
+
});
|
|
83
|
+
const initiateBody = await initiateRes.json();
|
|
84
|
+
if (!initiateRes.ok) {
|
|
85
|
+
throw new Error(initiateBody.error || `Authentication initiate failed (${initiateRes.status})`);
|
|
86
|
+
}
|
|
87
|
+
const challenge = initiateBody;
|
|
88
|
+
const challengeContents = {
|
|
89
|
+
nonce: challenge.nonce,
|
|
90
|
+
userId: _userId,
|
|
91
|
+
purpose: "peers-services-authentication",
|
|
92
|
+
};
|
|
93
|
+
const signedChallenge = (0, peers_sdk_1.signObjectWithSecretKey)(challengeContents, _keys.secretKey);
|
|
94
|
+
const verifyRes = await fetch(`${_servicesUrl}/api/v1/auth/authenticate/verify`, {
|
|
95
|
+
method: "POST",
|
|
96
|
+
headers: { "Content-Type": "application/json" },
|
|
97
|
+
body: JSON.stringify({
|
|
98
|
+
challengeId: challenge.challengeId,
|
|
99
|
+
signedChallenge,
|
|
100
|
+
}),
|
|
101
|
+
});
|
|
102
|
+
const verifyBody = await verifyRes.json();
|
|
103
|
+
if (!verifyRes.ok) {
|
|
104
|
+
throw new Error(verifyBody.error || `Authentication verify failed (${verifyRes.status})`);
|
|
105
|
+
}
|
|
106
|
+
return verifyBody;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Register or authenticate: tries registration first, falls back to authentication
|
|
110
|
+
* if the user is already registered. Returns the JWT token string.
|
|
111
|
+
*/
|
|
112
|
+
async function registerOrAuthenticate() {
|
|
113
|
+
const regResult = await registerWithServices();
|
|
114
|
+
if (regResult) {
|
|
115
|
+
return regResult.token;
|
|
116
|
+
}
|
|
117
|
+
// Already registered -- authenticate instead
|
|
118
|
+
const authResult = await authenticateWithServices();
|
|
119
|
+
return authResult.token;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=services-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services-client.js","sourceRoot":"","sources":["../src/services-client.ts"],"names":[],"mappings":";;AAaA,gDAIC;AAwBD,oDAuDC;AAMD,4DAgDC;AAMD,wDAQC;AApKD,oDAI8B;AAE9B,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAExE,IAAI,YAAY,GAAG,oBAAoB,CAAC;AACxC,IAAI,KAAK,GAA8B,IAAI,CAAC;AAC5C,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,kFAAkF;AAClF,SAAgB,kBAAkB,CAAC,MAAc,EAAE,IAAwB,EAAE,WAAoB;IAC/F,OAAO,GAAG,MAAM,CAAC;IACjB,KAAK,GAAG,IAAI,CAAC;IACb,IAAI,WAAW;QAAE,YAAY,GAAG,WAAW,CAAC;AAC9C,CAAC;AAmBD;;;;GAIG;AACI,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,gCAAgC;IAChC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,uBAAuB,EAAE;QACtE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,iCAAiC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAChG,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,YAAkC,CAAC;IAErD,wCAAwC;IACxC,MAAM,iBAAiB,GAAuB;QAC5C,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,6BAA6B;KACvC,CAAC;IACF,MAAM,eAAe,GAAsC,IAAA,mCAAuB,EAChF,iBAAiB,EACjB,KAAK,CAAC,SAAS,CAChB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,8BAA8B,EAAE;QAC3E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,eAAe;SAChB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAE1C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,+BAA+B,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,UAA4B,CAAC;AACtC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,wBAAwB;IAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,2BAA2B,EAAE;QAC1E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,mCAAmC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,SAAS,GAAG,YAAkC,CAAC;IAErD,MAAM,iBAAiB,GAAuB;QAC5C,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,+BAA+B;KACzC,CAAC;IACF,MAAM,eAAe,GAAsC,IAAA,mCAAuB,EAChF,iBAAiB,EACjB,KAAK,CAAC,SAAS,CAChB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,YAAY,kCAAkC,EAAE;QAC/E,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,eAAe;SAChB,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAE1C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,iCAAiC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,UAA4B,CAAC;AACtC,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,sBAAsB;IAC1C,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IACD,6CAA6C;IAC7C,MAAM,UAAU,GAAG,MAAM,wBAAwB,EAAE,CAAC;IACpD,OAAO,UAAU,CAAC,KAAK,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const peers_sdk_1 = require("@peers-app/peers-sdk");
|
|
4
|
+
const services_client_1 = require("./services-client");
|
|
5
|
+
const TEST_URL = "https://test-services.example.com";
|
|
6
|
+
const keys = (0, peers_sdk_1.newKeys)();
|
|
7
|
+
const userId = "testUser123";
|
|
8
|
+
function mockFetchResponse(body, status = 200) {
|
|
9
|
+
return {
|
|
10
|
+
ok: status >= 200 && status < 300,
|
|
11
|
+
status,
|
|
12
|
+
json: async () => body,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
let fetchCalls = [];
|
|
16
|
+
let fetchResponses = [];
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
fetchCalls = [];
|
|
19
|
+
fetchResponses = [];
|
|
20
|
+
(0, services_client_1.initServicesClient)(userId, keys, TEST_URL);
|
|
21
|
+
global.fetch = jest.fn(async (input, init) => {
|
|
22
|
+
fetchCalls.push({ url: String(input), init: init ?? {} });
|
|
23
|
+
const response = fetchResponses.shift();
|
|
24
|
+
if (!response)
|
|
25
|
+
throw new Error(`Unexpected fetch call: ${String(input)}`);
|
|
26
|
+
return response;
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => {
|
|
30
|
+
jest.restoreAllMocks();
|
|
31
|
+
});
|
|
32
|
+
// ── initServicesClient ───────────────────────────────────────────────────────
|
|
33
|
+
describe("initServicesClient", () => {
|
|
34
|
+
it("should allow registerWithServices to succeed after initialization", async () => {
|
|
35
|
+
fetchResponses.push(mockFetchResponse({
|
|
36
|
+
challengeId: "chal1",
|
|
37
|
+
nonce: "n1",
|
|
38
|
+
expiresAt: new Date(Date.now() + 300_000).toISOString(),
|
|
39
|
+
}), mockFetchResponse({ token: "jwt_token", expiresIn: 2592000 }));
|
|
40
|
+
const result = await (0, services_client_1.registerWithServices)();
|
|
41
|
+
expect(result).toEqual({ token: "jwt_token", expiresIn: 2592000 });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
// ── registerWithServices ─────────────────────────────────────────────────────
|
|
45
|
+
describe("registerWithServices", () => {
|
|
46
|
+
it("should throw when client is not initialized", async () => {
|
|
47
|
+
(0, services_client_1.initServicesClient)("", null);
|
|
48
|
+
await expect((0, services_client_1.registerWithServices)()).rejects.toThrow(/not initialized/);
|
|
49
|
+
});
|
|
50
|
+
it("should send userId, publicKey, publicBoxKey to /register", async () => {
|
|
51
|
+
fetchResponses.push(mockFetchResponse({
|
|
52
|
+
challengeId: "chal1",
|
|
53
|
+
nonce: "testNonce",
|
|
54
|
+
expiresAt: new Date().toISOString(),
|
|
55
|
+
}), mockFetchResponse({ token: "tok", expiresIn: 100 }));
|
|
56
|
+
await (0, services_client_1.registerWithServices)();
|
|
57
|
+
expect(fetchCalls[0].url).toBe(`${TEST_URL}/api/v1/auth/register`);
|
|
58
|
+
const body = JSON.parse(fetchCalls[0].init.body);
|
|
59
|
+
expect(body.userId).toBe(userId);
|
|
60
|
+
expect(body.publicKey).toBe(keys.publicKey);
|
|
61
|
+
expect(body.publicBoxKey).toBe(keys.publicBoxKey);
|
|
62
|
+
});
|
|
63
|
+
it("should send a properly signed challenge to /register/verify", async () => {
|
|
64
|
+
const nonce = "challenge_nonce_abc";
|
|
65
|
+
fetchResponses.push(mockFetchResponse({
|
|
66
|
+
challengeId: "chal99",
|
|
67
|
+
nonce,
|
|
68
|
+
expiresAt: new Date().toISOString(),
|
|
69
|
+
}), mockFetchResponse({ token: "jwt_result", expiresIn: 2592000 }));
|
|
70
|
+
await (0, services_client_1.registerWithServices)();
|
|
71
|
+
expect(fetchCalls[1].url).toBe(`${TEST_URL}/api/v1/auth/register/verify`);
|
|
72
|
+
const verifyBody = JSON.parse(fetchCalls[1].init.body);
|
|
73
|
+
expect(verifyBody.challengeId).toBe("chal99");
|
|
74
|
+
expect(verifyBody.signedChallenge).toBeDefined();
|
|
75
|
+
expect(verifyBody.signedChallenge.contents).toEqual({
|
|
76
|
+
nonce,
|
|
77
|
+
userId,
|
|
78
|
+
purpose: "peers-services-registration",
|
|
79
|
+
});
|
|
80
|
+
expect(verifyBody.signedChallenge.publicKey).toBe(keys.publicKey);
|
|
81
|
+
expect(verifyBody.signedChallenge.signature).toBeDefined();
|
|
82
|
+
});
|
|
83
|
+
it("should return null when user is already registered", async () => {
|
|
84
|
+
fetchResponses.push(mockFetchResponse({ status: "already_registered" }));
|
|
85
|
+
const result = await (0, services_client_1.registerWithServices)();
|
|
86
|
+
expect(result).toBeNull();
|
|
87
|
+
expect(fetchCalls).toHaveLength(1);
|
|
88
|
+
});
|
|
89
|
+
it("should throw on initiation failure", async () => {
|
|
90
|
+
fetchResponses.push(mockFetchResponse({ error: "Server error" }, 500));
|
|
91
|
+
await expect((0, services_client_1.registerWithServices)()).rejects.toThrow("Server error");
|
|
92
|
+
});
|
|
93
|
+
it("should throw on verification failure", async () => {
|
|
94
|
+
fetchResponses.push(mockFetchResponse({
|
|
95
|
+
challengeId: "chal1",
|
|
96
|
+
nonce: "n1",
|
|
97
|
+
expiresAt: new Date().toISOString(),
|
|
98
|
+
}), mockFetchResponse({ error: "Nonce mismatch." }, 401));
|
|
99
|
+
await expect((0, services_client_1.registerWithServices)()).rejects.toThrow("Nonce mismatch.");
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
// ── authenticateWithServices ─────────────────────────────────────────────────
|
|
103
|
+
describe("authenticateWithServices", () => {
|
|
104
|
+
it("should throw when client is not initialized", async () => {
|
|
105
|
+
(0, services_client_1.initServicesClient)("", null);
|
|
106
|
+
await expect((0, services_client_1.authenticateWithServices)()).rejects.toThrow(/not initialized/);
|
|
107
|
+
});
|
|
108
|
+
it("should send userId and publicKey to /authenticate", async () => {
|
|
109
|
+
fetchResponses.push(mockFetchResponse({
|
|
110
|
+
challengeId: "authChal1",
|
|
111
|
+
nonce: "authNonce",
|
|
112
|
+
expiresAt: new Date().toISOString(),
|
|
113
|
+
}), mockFetchResponse({ token: "auth_tok", expiresIn: 2592000 }));
|
|
114
|
+
await (0, services_client_1.authenticateWithServices)();
|
|
115
|
+
expect(fetchCalls[0].url).toBe(`${TEST_URL}/api/v1/auth/authenticate`);
|
|
116
|
+
const body = JSON.parse(fetchCalls[0].init.body);
|
|
117
|
+
expect(body.userId).toBe(userId);
|
|
118
|
+
expect(body.publicKey).toBe(keys.publicKey);
|
|
119
|
+
expect(body.publicBoxKey).toBeUndefined();
|
|
120
|
+
});
|
|
121
|
+
it("should sign challenge with authentication purpose", async () => {
|
|
122
|
+
const nonce = "auth_nonce_xyz";
|
|
123
|
+
fetchResponses.push(mockFetchResponse({
|
|
124
|
+
challengeId: "authChal2",
|
|
125
|
+
nonce,
|
|
126
|
+
expiresAt: new Date().toISOString(),
|
|
127
|
+
}), mockFetchResponse({ token: "auth_jwt", expiresIn: 2592000 }));
|
|
128
|
+
await (0, services_client_1.authenticateWithServices)();
|
|
129
|
+
const verifyBody = JSON.parse(fetchCalls[1].init.body);
|
|
130
|
+
expect(verifyBody.signedChallenge.contents).toEqual({
|
|
131
|
+
nonce,
|
|
132
|
+
userId,
|
|
133
|
+
purpose: "peers-services-authentication",
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
it("should throw on initiation failure (user not found)", async () => {
|
|
137
|
+
fetchResponses.push(mockFetchResponse({ error: "User not found. Register first." }, 404));
|
|
138
|
+
await expect((0, services_client_1.authenticateWithServices)()).rejects.toThrow(/not found/i);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
// ── registerOrAuthenticate ───────────────────────────────────────────────────
|
|
142
|
+
describe("registerOrAuthenticate", () => {
|
|
143
|
+
it("should return token from registration when user is new", async () => {
|
|
144
|
+
fetchResponses.push(mockFetchResponse({
|
|
145
|
+
challengeId: "c1",
|
|
146
|
+
nonce: "n1",
|
|
147
|
+
expiresAt: new Date().toISOString(),
|
|
148
|
+
}), mockFetchResponse({ token: "new_user_token", expiresIn: 2592000 }));
|
|
149
|
+
const token = await (0, services_client_1.registerOrAuthenticate)();
|
|
150
|
+
expect(token).toBe("new_user_token");
|
|
151
|
+
expect(fetchCalls).toHaveLength(2);
|
|
152
|
+
});
|
|
153
|
+
it("should fall back to authentication when already registered", async () => {
|
|
154
|
+
fetchResponses.push(mockFetchResponse({ status: "already_registered" }), mockFetchResponse({
|
|
155
|
+
challengeId: "ac1",
|
|
156
|
+
nonce: "an1",
|
|
157
|
+
expiresAt: new Date().toISOString(),
|
|
158
|
+
}), mockFetchResponse({ token: "existing_user_token", expiresIn: 2592000 }));
|
|
159
|
+
const token = await (0, services_client_1.registerOrAuthenticate)();
|
|
160
|
+
expect(token).toBe("existing_user_token");
|
|
161
|
+
expect(fetchCalls).toHaveLength(3);
|
|
162
|
+
expect(fetchCalls[0].url).toContain("/register");
|
|
163
|
+
expect(fetchCalls[1].url).toContain("/authenticate");
|
|
164
|
+
expect(fetchCalls[2].url).toContain("/authenticate/verify");
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=services-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services-client.test.js","sourceRoot":"","sources":["../src/services-client.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peers-app/peers-device",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"repository": {
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"socket.io-client": "^4.8.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@peers-app/peers-sdk": "^0.16.
|
|
42
|
+
"@peers-app/peers-sdk": "^0.16.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@biomejs/biome": "2.3.11",
|
|
46
46
|
"@electron/rebuild": "^4.0.1",
|
|
47
|
-
"@peers-app/peers-sdk": "0.16.
|
|
47
|
+
"@peers-app/peers-sdk": "0.16.1",
|
|
48
48
|
"@types/diff-match-patch": "^1.0.36",
|
|
49
49
|
"@types/jest": "^29.5.13",
|
|
50
50
|
"@types/lodash": "^4.17.20",
|