@idp.global/sdk 1.3.0 → 1.3.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/changelog.md +10 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_server/classes.idp-global-server-client.d.ts +3 -2
- package/dist_ts_server/classes.idp-global-server-client.js +4 -3
- package/package.json +1 -1
- package/readme.md +3 -5
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_server/classes.idp-global-server-client.ts +5 -3
package/changelog.md
CHANGED
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
## 2026-05-18 - 1.3.1
|
|
10
|
+
|
|
11
|
+
### Fixes
|
|
12
|
+
|
|
13
|
+
- default IdpGlobalServerClient baseUrl to the hosted idp.global endpoint (server-client)
|
|
14
|
+
- make server client baseUrl optional and fall back to https://idp.global
|
|
15
|
+
- add a test covering default and custom typedrequest endpoint resolution
|
|
16
|
+
- update README examples and API docs to describe the default hosted endpoint behavior
|
|
17
|
+
|
|
8
18
|
## 2026-05-18 - 1.3.0
|
|
9
19
|
|
|
10
20
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@idp.global/sdk',
|
|
6
|
-
version: '1.3.
|
|
6
|
+
version: '1.3.1',
|
|
7
7
|
description: 'Reusable browser and server SDK for idp.global authentication.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGdFQUFnRTtDQUM5RSxDQUFBIn0=
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
export interface IIdpGlobalServerClientOptions {
|
|
3
|
-
baseUrl
|
|
3
|
+
baseUrl?: string;
|
|
4
4
|
}
|
|
5
|
+
export declare const defaultIdpGlobalBaseUrl = "https://idp.global";
|
|
5
6
|
export interface IIdpPasswordAuthResult {
|
|
6
7
|
user: plugins.idpInterfaces.data.IUser;
|
|
7
8
|
jwt: string;
|
|
@@ -12,7 +13,7 @@ export declare class IdpGlobalServerClient {
|
|
|
12
13
|
private typedrouter;
|
|
13
14
|
private typedsocket?;
|
|
14
15
|
private typedsocketDeferred;
|
|
15
|
-
constructor(optionsArg
|
|
16
|
+
constructor(optionsArg?: IIdpGlobalServerClientOptions);
|
|
16
17
|
connect(): Promise<plugins.typedsocket.TypedSocket>;
|
|
17
18
|
stop(): Promise<void>;
|
|
18
19
|
loginWithEmailAndPassword(optionsArg: {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
+
export const defaultIdpGlobalBaseUrl = 'https://idp.global';
|
|
2
3
|
export class IdpGlobalServerClient {
|
|
3
4
|
optionsArg;
|
|
4
5
|
typedrouter = new plugins.typedrequest.TypedRouter();
|
|
5
6
|
typedsocket;
|
|
6
7
|
typedsocketDeferred = plugins.smartpromise.defer();
|
|
7
|
-
constructor(optionsArg) {
|
|
8
|
+
constructor(optionsArg = {}) {
|
|
8
9
|
this.optionsArg = optionsArg;
|
|
9
10
|
}
|
|
10
11
|
async connect() {
|
|
@@ -44,7 +45,7 @@ export class IdpGlobalServerClient {
|
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
47
|
getTypedRequestUrl() {
|
|
47
|
-
let baseUrl = this.optionsArg.baseUrl.trim();
|
|
48
|
+
let baseUrl = (this.optionsArg.baseUrl || defaultIdpGlobalBaseUrl).trim();
|
|
48
49
|
if (baseUrl.endsWith('/')) {
|
|
49
50
|
baseUrl = baseUrl.slice(0, -1);
|
|
50
51
|
}
|
|
@@ -54,4 +55,4 @@ export class IdpGlobalServerClient {
|
|
|
54
55
|
return baseUrl;
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zZXJ2ZXIvY2xhc3Nlcy5pZHAtZ2xvYmFsLXNlcnZlci1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFNeEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsb0JBQW9CLENBQUM7QUFRNUQsTUFBTSxPQUFPLHFCQUFxQjtJQUtaO0lBSlosV0FBVyxHQUFRLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRCxXQUFXLENBQW1DO0lBQzlDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFtQyxDQUFDO0lBRTVGLFlBQW9CLGFBQTRDLEVBQUU7UUFBOUMsZUFBVSxHQUFWLFVBQVUsQ0FBb0M7SUFBRyxDQUFDO0lBRS9ELEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQ25FLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLHlCQUF5QixDQUFDLFVBQStDO1FBQ3BGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBeUUscUNBQXFDLENBQUMsQ0FBQztRQUM5SixNQUFNLGFBQWEsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDNUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLO1lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsUUFBUTtTQUM5QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFnRCxZQUFZLENBQUMsQ0FBQztRQUM5RyxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBMkMsT0FBTyxDQUFDLENBQUM7UUFDbEcsTUFBTSxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE9BQU87WUFDTCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7WUFDeEIsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHO1lBQ3hCLFlBQVksRUFBRSxlQUFlLENBQUMsWUFBWSxJQUFJLGFBQWEsQ0FBQyxZQUFZO1NBQ3pFLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksdUJBQXVCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLEdBQUcsR0FBRyxPQUFPLGVBQWUsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -208,9 +208,7 @@ import {
|
|
|
208
208
|
} from '@idp.global/sdk/server';
|
|
209
209
|
|
|
210
210
|
const accountStore = new SmartdataAccountStore({ smartdataDb });
|
|
211
|
-
const idpClient = new IdpGlobalServerClient(
|
|
212
|
-
baseUrl: 'https://sso.workspace.global',
|
|
213
|
-
});
|
|
211
|
+
const idpClient = new IdpGlobalServerClient();
|
|
214
212
|
|
|
215
213
|
const authService = new AccountAuthService({
|
|
216
214
|
store: accountStore,
|
|
@@ -230,7 +228,7 @@ if (!authResult) {
|
|
|
230
228
|
console.log(authResult.account.role, authResult.authSource);
|
|
231
229
|
```
|
|
232
230
|
|
|
233
|
-
In `auto` mode, the service tries local auth first when the account allows `local`; if that fails and the account allows `idp.global`, it uses the configured `IdpGlobalServerClient`. idp.global authentication is accepted only when the returned user email matches the local account email and the returned user ID matches the stored `idpSubject` when one is already set.
|
|
231
|
+
In `auto` mode, the service tries local auth first when the account allows `local`; if that fails and the account allows `idp.global`, it uses the configured `IdpGlobalServerClient`. `IdpGlobalServerClient` defaults to the hosted `https://idp.global` endpoint; pass `{ baseUrl }` only for self-hosted or staging IdP instances. idp.global authentication is accepted only when the returned user email matches the local account email and the returned user ID matches the stored `idpSubject` when one is already set.
|
|
234
232
|
|
|
235
233
|
### Server API Surface
|
|
236
234
|
|
|
@@ -256,7 +254,7 @@ The server export includes these TypeScript types:
|
|
|
256
254
|
| `ICreateIdpSdkAccountOptions` | Input for account creation. |
|
|
257
255
|
| `IAuthenticateAccountOptions` | Input for `AccountAuthService.authenticate()`. |
|
|
258
256
|
| `IAuthenticatedAccountResult` | Successful auth result with account, auth source, and optional idp.global tokens. |
|
|
259
|
-
| `IIdpGlobalServerClientOptions` | Server client configuration with `baseUrl`. |
|
|
257
|
+
| `IIdpGlobalServerClientOptions` | Server client configuration with optional `baseUrl`; defaults to `https://idp.global`. |
|
|
260
258
|
| `IIdpPasswordAuthResult` | idp.global user, JWT, and refresh-token result. |
|
|
261
259
|
|
|
262
260
|
## Runtime Notes
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
|
|
3
3
|
export interface IIdpGlobalServerClientOptions {
|
|
4
|
-
baseUrl
|
|
4
|
+
baseUrl?: string;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
export const defaultIdpGlobalBaseUrl = 'https://idp.global';
|
|
8
|
+
|
|
7
9
|
export interface IIdpPasswordAuthResult {
|
|
8
10
|
user: plugins.idpInterfaces.data.IUser;
|
|
9
11
|
jwt: string;
|
|
@@ -15,7 +17,7 @@ export class IdpGlobalServerClient {
|
|
|
15
17
|
private typedsocket?: plugins.typedsocket.TypedSocket;
|
|
16
18
|
private typedsocketDeferred = plugins.smartpromise.defer<plugins.typedsocket.TypedSocket>();
|
|
17
19
|
|
|
18
|
-
constructor(private optionsArg: IIdpGlobalServerClientOptions) {}
|
|
20
|
+
constructor(private optionsArg: IIdpGlobalServerClientOptions = {}) {}
|
|
19
21
|
|
|
20
22
|
public async connect(): Promise<plugins.typedsocket.TypedSocket> {
|
|
21
23
|
if (this.typedsocketDeferred.claimed) {
|
|
@@ -62,7 +64,7 @@ export class IdpGlobalServerClient {
|
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
private getTypedRequestUrl(): string {
|
|
65
|
-
let baseUrl = this.optionsArg.baseUrl.trim();
|
|
67
|
+
let baseUrl = (this.optionsArg.baseUrl || defaultIdpGlobalBaseUrl).trim();
|
|
66
68
|
if (baseUrl.endsWith('/')) {
|
|
67
69
|
baseUrl = baseUrl.slice(0, -1);
|
|
68
70
|
}
|