@idp.global/sdk 1.2.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.
Files changed (46) hide show
  1. package/changelog.md +25 -0
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/index.d.ts +1 -0
  5. package/dist_ts/index.js +2 -0
  6. package/dist_ts_browser/classes.idpclient.d.ts +85 -0
  7. package/dist_ts_browser/classes.idpclient.js +278 -0
  8. package/dist_ts_browser/classes.idprequests.d.ts +59 -0
  9. package/dist_ts_browser/classes.idprequests.js +167 -0
  10. package/dist_ts_browser/index.d.ts +2 -0
  11. package/dist_ts_browser/index.js +3 -0
  12. package/dist_ts_browser/plugins.d.ts +13 -0
  13. package/dist_ts_browser/plugins.js +14 -0
  14. package/dist_ts_server/classes.account-auth-service.d.ts +12 -0
  15. package/dist_ts_server/classes.account-auth-service.js +55 -0
  16. package/dist_ts_server/classes.account-doc.d.ts +21 -0
  17. package/dist_ts_server/classes.account-doc.js +166 -0
  18. package/dist_ts_server/classes.account-store.d.ts +19 -0
  19. package/dist_ts_server/classes.account-store.js +84 -0
  20. package/dist_ts_server/classes.idp-global-server-client.d.ts +23 -0
  21. package/dist_ts_server/classes.idp-global-server-client.js +57 -0
  22. package/dist_ts_server/classes.password-hasher.d.ts +5 -0
  23. package/dist_ts_server/classes.password-hasher.js +36 -0
  24. package/dist_ts_server/index.d.ts +6 -0
  25. package/dist_ts_server/index.js +7 -0
  26. package/dist_ts_server/interfaces.d.ts +37 -0
  27. package/dist_ts_server/interfaces.js +2 -0
  28. package/dist_ts_server/plugins.d.ts +10 -0
  29. package/dist_ts_server/plugins.js +11 -0
  30. package/license +21 -0
  31. package/package.json +70 -0
  32. package/readme.md +10 -0
  33. package/ts/00_commitinfo_data.ts +8 -0
  34. package/ts/index.ts +1 -0
  35. package/ts_browser/classes.idpclient.ts +318 -0
  36. package/ts_browser/classes.idprequests.ts +218 -0
  37. package/ts_browser/index.ts +2 -0
  38. package/ts_browser/plugins.ts +18 -0
  39. package/ts_server/classes.account-auth-service.ts +61 -0
  40. package/ts_server/classes.account-doc.ts +84 -0
  41. package/ts_server/classes.account-store.ts +94 -0
  42. package/ts_server/classes.idp-global-server-client.ts +74 -0
  43. package/ts_server/classes.password-hasher.ts +39 -0
  44. package/ts_server/index.ts +6 -0
  45. package/ts_server/interfaces.ts +41 -0
  46. package/ts_server/plugins.ts +17 -0
package/changelog.md ADDED
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ ## Pending
4
+
5
+
6
+
7
+ ## 2026-05-13 - 1.2.0
8
+
9
+ ### Features
10
+
11
+ - enable npm publishing in smart config (config)
12
+ - Turns on the npm integration in .smartconfig.json
13
+ - Keeps the existing Verdaccio and npmjs registries configured for publishing
14
+
15
+ ## 2026-05-13 - 1.1.0
16
+
17
+ - Initial SDK package with browser and server exports.
18
+
19
+ ### Features
20
+
21
+ - add initial browser and server authentication SDK exports (sdk)
22
+ - introduces browser-side IdP client and typed request wrappers for authentication and organization workflows
23
+ - adds server-side account store, password hashing, and authentication services with local and idp.global auth support
24
+ - includes tests covering explicit account creation, local password authentication, and IdP email mismatch rejection
25
+
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
+ */
4
+ export declare const commitinfo: {
5
+ name: string;
6
+ version: string;
7
+ description: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
+ */
4
+ export const commitinfo = {
5
+ name: '@idp.global/sdk',
6
+ version: '1.2.0',
7
+ description: 'Reusable browser and server SDK for idp.global authentication.'
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxpQkFBaUI7SUFDdkIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGdFQUFnRTtDQUM5RSxDQUFBIn0=
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyJ9
@@ -0,0 +1,85 @@
1
+ import { IdpRequests } from './classes.idprequests.js';
2
+ import * as plugins from './plugins.js';
3
+ export declare class IdpClient {
4
+ private helpers;
5
+ appData: plugins.idpInterfaces.data.IAppLegacy;
6
+ rolesReplaySubject: plugins.smartrx.rxjs.ReplaySubject<unknown>;
7
+ organizationsReplaySubject: plugins.smartrx.rxjs.ReplaySubject<unknown>;
8
+ parsedReceptionUrl: plugins.smarturl.Smarturl;
9
+ constructor(receptionBaseUrlArg: string, appDataArg?: plugins.idpInterfaces.data.IAppLegacy);
10
+ requests: IdpRequests;
11
+ checkWetherOnReceptionDomain(): boolean;
12
+ getAppDataOnSsoDomain(): Promise<any>;
13
+ setJwt(jwtStringArg: string): Promise<void>;
14
+ setRefreshToken(refreshTokenArg: string): Promise<void>;
15
+ typedsocket: plugins.typedsocket.TypedSocket;
16
+ typedrouter: any;
17
+ statusObservable: plugins.smartrx.rxjs.Subject<plugins.idpInterfaces.data.TLoginStatus>;
18
+ ssoStore: plugins.webstore.WebStore<any>;
19
+ storeJwt(jwtString: string): Promise<void>;
20
+ storeRefreshToken(refreshToken: string): Promise<void>;
21
+ getJwt(): Promise<string>;
22
+ getRefreshToken(): Promise<string>;
23
+ getJwtData(): Promise<plugins.idpInterfaces.data.IJwt>;
24
+ deleteJwt(): Promise<void>;
25
+ deleteRefreshToken(): Promise<void>;
26
+ clearAuthState(): Promise<void>;
27
+ performJwtHousekeeping(): Promise<string>;
28
+ refreshJwt(refreshTokenArg?: string): Promise<string | null>;
29
+ getTransferToken(appDataArg?: plugins.idpInterfaces.data.IAppLegacy): Promise<string | null>;
30
+ getTransferTokenAndSwitchToLocation(newLocationArg: string): Promise<void>;
31
+ processTransferToken(): Promise<boolean>;
32
+ checkJwtPresent(): Promise<boolean>;
33
+ determineLoginStatus(requireLoginArg?: boolean): Promise<boolean>;
34
+ logout(): Promise<void>;
35
+ typedsocketDeferred: plugins.smartpromise.Deferred<plugins.typedsocket.TypedSocket>;
36
+ enableTypedSocket(): Promise<plugins.typedsocket.TypedSocket>;
37
+ stop(): Promise<void>;
38
+ createOrganization(orgNameArg: string, orgSlugArg: string, modeArg: 'checkAvailability' | 'manifest'): Promise<{
39
+ nameAvailable: boolean;
40
+ resultingOrganization?: plugins.idpInterfaces.data.IOrganization;
41
+ role?: plugins.idpInterfaces.data.IRole;
42
+ }>;
43
+ getRolesAndOrganizations(): Promise<{
44
+ roles: plugins.idpInterfaces.data.IRole[];
45
+ organizations: plugins.idpInterfaces.data.IOrganization[];
46
+ }>;
47
+ updatePaddleCheckoutId(orgIdArg: string, checkoutIdArg: string): Promise<{
48
+ billingPlan: {
49
+ id?: string;
50
+ data?: {
51
+ type?: "Paddle" | "AppSumo" | "FairUsageFree" | "Enterprise" | "Internal" | "Testing";
52
+ proEnabled?: boolean;
53
+ organizationId?: string;
54
+ lastProcessed?: number;
55
+ seats?: number;
56
+ status?: "active" | "activeOverdue" | "pausedOverdue" | "inactive" | "suspended";
57
+ paddleData?: {
58
+ checkoutId?: string;
59
+ };
60
+ alternativePaymentData?: {
61
+ enterprise?: boolean;
62
+ appSumoCode?: string;
63
+ };
64
+ nextBilling?: {
65
+ items?: Array<plugins.idpInterfaces.data.IBillableItem>;
66
+ method?: "paddle";
67
+ ontrack?: boolean;
68
+ errorText?: string;
69
+ selectedBillingDate?: number;
70
+ };
71
+ billingEvents?: Array<{
72
+ timestamp: number;
73
+ amount: number;
74
+ currency: plugins.idpInterfaces.data.TSupportedCurrency;
75
+ billedItems: Array<plugins.idpInterfaces.data.IBillableItem>;
76
+ checkoutLink?: string;
77
+ }>;
78
+ communications?: Array<any>;
79
+ };
80
+ };
81
+ }>;
82
+ whoIs(): Promise<{
83
+ user: plugins.idpInterfaces.data.IUser;
84
+ }>;
85
+ }
@@ -0,0 +1,278 @@
1
+ import { IdpRequests } from './classes.idprequests.js';
2
+ import * as plugins from './plugins.js';
3
+ export class IdpClient {
4
+ helpers = {
5
+ async extractDataFromJwtString(jwtString) {
6
+ return plugins.webjwt.getDataFromJwtString(jwtString);
7
+ },
8
+ };
9
+ appData;
10
+ rolesReplaySubject = new plugins.smartrx.rxjs.ReplaySubject(1);
11
+ organizationsReplaySubject = new plugins.smartrx.rxjs.ReplaySubject(1);
12
+ parsedReceptionUrl;
13
+ constructor(receptionBaseUrlArg, appDataArg) {
14
+ if (receptionBaseUrlArg.endsWith('/')) {
15
+ receptionBaseUrlArg = receptionBaseUrlArg.slice(0, -1);
16
+ }
17
+ if (!receptionBaseUrlArg.endsWith('/typedrequest')) {
18
+ receptionBaseUrlArg = `${receptionBaseUrlArg}/typedrequest`;
19
+ }
20
+ this.parsedReceptionUrl = plugins.smarturl.Smarturl.createFromUrl(receptionBaseUrlArg);
21
+ if (!appDataArg) {
22
+ appDataArg = {
23
+ id: '',
24
+ appUrl: typeof window !== 'undefined' ? `https://${window.location.host}/` : '',
25
+ description: '',
26
+ logoUrl: '',
27
+ name: '',
28
+ };
29
+ }
30
+ this.appData = appDataArg;
31
+ }
32
+ requests = new IdpRequests(this);
33
+ checkWetherOnReceptionDomain() {
34
+ return plugins.smarturl.Smarturl.createFromUrl(window.location.href).hostname ===
35
+ this.parsedReceptionUrl.hostname;
36
+ }
37
+ async getAppDataOnSsoDomain() {
38
+ if (!window.location.href.startsWith('https://sso.workspace.global/')) {
39
+ console.error('You are trying to access SSO appData on a non sso domain.');
40
+ return null;
41
+ }
42
+ const appDataString = plugins.smarturl.Smarturl.createFromUrl(window.location.href).searchParams
43
+ .appdata;
44
+ if (!appDataString) {
45
+ console.error('no appdata query arg detected');
46
+ return null;
47
+ }
48
+ return plugins.smartjson.parseBase64(appDataString);
49
+ }
50
+ async setJwt(jwtStringArg) {
51
+ await this.storeJwt(jwtStringArg);
52
+ }
53
+ async setRefreshToken(refreshTokenArg) {
54
+ await this.storeRefreshToken(refreshTokenArg);
55
+ }
56
+ typedsocket;
57
+ typedrouter = new plugins.typedrequest.TypedRouter();
58
+ statusObservable = new plugins.smartrx.rxjs.Subject();
59
+ ssoStore = new plugins.webstore.WebStore({
60
+ storeName: 'idpglobalStore',
61
+ dbName: 'main',
62
+ });
63
+ async storeJwt(jwtString) {
64
+ await this.ssoStore.set('idpJwt', jwtString);
65
+ }
66
+ async storeRefreshToken(refreshToken) {
67
+ await this.ssoStore.set('idpRefreshToken', refreshToken);
68
+ }
69
+ async getJwt() {
70
+ return await this.ssoStore.get('idpJwt');
71
+ }
72
+ async getRefreshToken() {
73
+ return await this.ssoStore.get('idpRefreshToken');
74
+ }
75
+ async getJwtData() {
76
+ return this.helpers.extractDataFromJwtString(await this.getJwt());
77
+ }
78
+ async deleteJwt() {
79
+ await this.ssoStore.delete('idpJwt');
80
+ }
81
+ async deleteRefreshToken() {
82
+ await this.ssoStore.delete('idpRefreshToken');
83
+ }
84
+ async clearAuthState() {
85
+ await Promise.all([this.deleteJwt(), this.deleteRefreshToken()]);
86
+ }
87
+ async performJwtHousekeeping() {
88
+ let jwt = await this.getJwt();
89
+ if (!jwt) {
90
+ return null;
91
+ }
92
+ const extractedJwt = await this.helpers.extractDataFromJwtString(jwt);
93
+ if (extractedJwt.data.refreshFrom < Date.now() && Date.now() < extractedJwt.data.validUntil) {
94
+ jwt = await this.refreshJwt();
95
+ }
96
+ else if (Date.now() > extractedJwt.data.validUntil) {
97
+ await this.deleteJwt();
98
+ jwt = await this.refreshJwt();
99
+ }
100
+ return jwt;
101
+ }
102
+ async refreshJwt(refreshTokenArg) {
103
+ const refreshToken = refreshTokenArg || (await this.getRefreshToken());
104
+ if (!refreshToken) {
105
+ return null;
106
+ }
107
+ await this.typedsocketDeferred.promise;
108
+ const refreshJwtReq = this.typedsocket.createTypedRequest('refreshJwt');
109
+ const response = await refreshJwtReq
110
+ .fire({ refreshToken })
111
+ .catch(async () => {
112
+ await this.clearAuthState();
113
+ return null;
114
+ });
115
+ if (!response?.jwt) {
116
+ await this.clearAuthState();
117
+ this.statusObservable.next(response?.status || 'loggedOut');
118
+ return null;
119
+ }
120
+ if (response.refreshToken) {
121
+ await this.storeRefreshToken(response.refreshToken);
122
+ }
123
+ await this.storeJwt(response.jwt);
124
+ this.statusObservable.next(response.status);
125
+ return response.jwt;
126
+ }
127
+ async getTransferToken(appDataArg) {
128
+ await this.performJwtHousekeeping();
129
+ const refreshToken = await this.getRefreshToken();
130
+ if (!refreshToken) {
131
+ return null;
132
+ }
133
+ await this.typedsocketDeferred.promise;
134
+ const getTransferToken = this.typedsocket.createTypedRequest('exchangeRefreshTokenAndTransferToken');
135
+ const response = await getTransferToken.fire({
136
+ refreshToken,
137
+ appData: appDataArg || this.appData,
138
+ });
139
+ return response.transferToken;
140
+ }
141
+ async getTransferTokenAndSwitchToLocation(newLocationArg) {
142
+ const transferToken = await this.getTransferToken();
143
+ if (!transferToken) {
144
+ alert('failed to get transfer token!');
145
+ }
146
+ const urlInstance = plugins.smarturl.Smarturl.createFromUrl(newLocationArg, {
147
+ searchParams: { transfertoken: transferToken },
148
+ });
149
+ window.location.href = urlInstance.toString();
150
+ }
151
+ async processTransferToken() {
152
+ const href = window.location.href;
153
+ const url = plugins.smarturl.Smarturl.createFromUrl(href);
154
+ const transferToken = url.searchParams['transfertoken'];
155
+ if (transferToken) {
156
+ await this.typedsocketDeferred.promise;
157
+ const getTransferToken = this.typedsocket.createTypedRequest('exchangeRefreshTokenAndTransferToken');
158
+ const response = await getTransferToken.fire({
159
+ transferToken,
160
+ appData: this.appData,
161
+ });
162
+ if (response.refreshToken) {
163
+ await this.refreshJwt(response.refreshToken);
164
+ }
165
+ else {
166
+ globalThis.alert?.('transfer token invalid');
167
+ return false;
168
+ }
169
+ return true;
170
+ }
171
+ return false;
172
+ }
173
+ async checkJwtPresent() {
174
+ const jwt = await this.performJwtHousekeeping();
175
+ return !!jwt;
176
+ }
177
+ async determineLoginStatus(requireLoginArg = false) {
178
+ const jwtPresent = await this.checkJwtPresent();
179
+ if (jwtPresent) {
180
+ const jwt = await this.performJwtHousekeeping();
181
+ return !!jwt;
182
+ }
183
+ const refreshToken = await this.getRefreshToken();
184
+ if (refreshToken) {
185
+ const jwt = await this.refreshJwt(refreshToken);
186
+ if (jwt) {
187
+ return true;
188
+ }
189
+ }
190
+ const transferTokenResult = await this.processTransferToken();
191
+ if (transferTokenResult) {
192
+ return true;
193
+ }
194
+ if (requireLoginArg) {
195
+ const urlInstance = plugins.smarturl.Smarturl.createFromUrl(this.parsedReceptionUrl.clone().set('path', '/login').toString(), {
196
+ searchParams: {
197
+ appdata: plugins.smartjson.stringifyBase64(this.appData),
198
+ },
199
+ });
200
+ if (!globalThis.location.href.startsWith(this.parsedReceptionUrl.toString())) {
201
+ globalThis.location.href = urlInstance.toString();
202
+ }
203
+ }
204
+ return false;
205
+ }
206
+ async logout() {
207
+ const idpLogoutUrl = this.parsedReceptionUrl.clone().set('path', '/logout');
208
+ const refreshToken = await this.getRefreshToken();
209
+ if (!globalThis.location.href.startsWith(idpLogoutUrl.origin)) {
210
+ await this.clearAuthState();
211
+ globalThis.location.href = idpLogoutUrl.toString();
212
+ return;
213
+ }
214
+ if (!refreshToken) {
215
+ await this.clearAuthState();
216
+ window.location.href = this.parsedReceptionUrl.origin;
217
+ return;
218
+ }
219
+ await this.enableTypedSocket();
220
+ const logoutTr = this.typedsocket.createTypedRequest('logout');
221
+ await logoutTr.fire({ refreshToken });
222
+ await this.clearAuthState();
223
+ const appData = await this.getAppDataOnSsoDomain();
224
+ if (appData) {
225
+ window.location.href = appData.appUrl;
226
+ }
227
+ else if (window.location.href.startsWith(idpLogoutUrl.origin)) {
228
+ window.location.href = this.parsedReceptionUrl.origin;
229
+ }
230
+ }
231
+ typedsocketDeferred = plugins.smartpromise.defer();
232
+ async enableTypedSocket() {
233
+ if (this.typedsocketDeferred.claimed) {
234
+ return this.typedsocketDeferred.promise;
235
+ }
236
+ this.typedsocketDeferred.claim();
237
+ this.typedsocket = await plugins.typedsocket.TypedSocket.createClient(this.typedrouter, this.parsedReceptionUrl.toString());
238
+ this.typedsocketDeferred.resolve(this.typedsocket);
239
+ return this.typedsocketDeferred.promise;
240
+ }
241
+ async stop() {
242
+ await this.typedsocket?.stop();
243
+ }
244
+ async createOrganization(orgNameArg, orgSlugArg, modeArg) {
245
+ await this.typedsocketDeferred.promise;
246
+ const validateOrg = this.typedsocket.createTypedRequest('createOrganization');
247
+ return validateOrg.fire({
248
+ jwt: await this.getJwt(),
249
+ action: modeArg,
250
+ organizationName: orgNameArg,
251
+ organizationSlug: orgSlugArg,
252
+ userId: (await this.getJwtData()).id,
253
+ });
254
+ }
255
+ async getRolesAndOrganizations() {
256
+ await this.typedsocketDeferred.promise;
257
+ const rolesAndOrganizationsForUserId = this.typedsocket.createTypedRequest('getRolesAndOrganizationsForUserId');
258
+ return rolesAndOrganizationsForUserId.fire({
259
+ jwt: await this.getJwt(),
260
+ userId: (await this.getJwtData()).id,
261
+ });
262
+ }
263
+ async updatePaddleCheckoutId(orgIdArg, checkoutIdArg) {
264
+ await this.typedsocketDeferred.promise;
265
+ const updateBillingPlan = this.typedsocket.createTypedRequest('updatePaymentMethod');
266
+ return updateBillingPlan.fire({
267
+ jwtString: await this.getJwt(),
268
+ orgId: orgIdArg,
269
+ paddle: { checkoutId: checkoutIdArg },
270
+ });
271
+ }
272
+ async whoIs() {
273
+ await this.typedsocketDeferred.promise;
274
+ const whoIs = this.typedsocket.createTypedRequest('whoIs');
275
+ return whoIs.fire({ jwt: await this.getJwt() });
276
+ }
277
+ }
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5pZHBjbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19icm93c2VyL2NsYXNzZXMuaWRwY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxNQUFNLE9BQU8sU0FBUztJQUNaLE9BQU8sR0FBRztRQUNoQixLQUFLLENBQUMsd0JBQXdCLENBQUMsU0FBaUI7WUFDOUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7S0FDRixDQUFDO0lBRUssT0FBTyxDQUF3QztJQUMvQyxrQkFBa0IsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCwwQkFBMEIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RSxrQkFBa0IsQ0FBNEI7SUFFckQsWUFBWSxtQkFBMkIsRUFBRSxVQUFrRDtRQUN6RixJQUFJLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25ELG1CQUFtQixHQUFHLEdBQUcsbUJBQW1CLGVBQWUsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxD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
@@ -0,0 +1,59 @@
1
+ import * as plugins from './plugins.js';
2
+ import type { IdpClient } from './classes.idpclient.js';
3
+ export declare class IdpRequests {
4
+ private idpClientArg;
5
+ constructor(idpClientArg: IdpClient);
6
+ get afterRegistrationEmailClicked(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_AfterRegistrationEmailClicked>;
7
+ get setData(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_SetDataForRegistration>;
8
+ get mobileNumberVerification(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_MobileVerificationForRegistration>;
9
+ get finishRegistration(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_FinishRegistration>;
10
+ get loginWithUserNameAndPassword(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_LoginWithEmailOrUsernameAndPassword>;
11
+ get obtainJwt(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RefreshJwt>;
12
+ get obtainOneTimeToken(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ExchangeRefreshTokenAndTransferToken>;
13
+ get loginWithEmail(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_LoginWithEmail>;
14
+ get loginWithEmailAfterToken(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_LoginWithEmailAfterEmailTokenAquired>;
15
+ get loginWithApiToken(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_LoginWithApiToken>;
16
+ get completeOidcAuthorization(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_CompleteOidcAuthorization>;
17
+ get prepareOidcAuthorization(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_PrepareOidcAuthorization>;
18
+ get resetPassword(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ResetPassword>;
19
+ get setNewPassword(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_SetNewPassword>;
20
+ get obtainDeviceId(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ObtainDeviceId>;
21
+ get attachDeviceId(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_AttachDeviceId>;
22
+ get firstRegistration(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_FirstRegistration>;
23
+ get getUserData(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetUserData>;
24
+ get setUserData(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_SetUserData>;
25
+ get getUserSessions(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetUserSessions>;
26
+ get revokeSession(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RevokeSession>;
27
+ get getUserActivity(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetUserActivity>;
28
+ get getOrganizationById(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetOrganizationById>;
29
+ get updateOrganization(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_UpdateOrganization>;
30
+ get deleteOrganization(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_DeleteOrganization>;
31
+ get getOrgRoleDefinitions(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetOrgRoleDefinitions>;
32
+ get upsertOrgRoleDefinition(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_UpsertOrgRoleDefinition>;
33
+ get deleteOrgRoleDefinition(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_DeleteOrgRoleDefinition>;
34
+ get createInvitation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_CreateInvitation>;
35
+ get getOrgInvitations(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetOrgInvitations>;
36
+ get getOrgMembers(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetOrgMembers>;
37
+ get cancelInvitation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_CancelInvitation>;
38
+ get resendInvitation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_ResendInvitation>;
39
+ get removeMember(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RemoveMember>;
40
+ get updateMemberRoles(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_UpdateMemberRoles>;
41
+ get transferOwnership(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_TransferOwnership>;
42
+ get getInvitationByToken(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetInvitationByToken>;
43
+ get acceptInvitation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_AcceptInvitation>;
44
+ get bulkCreateInvitations(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_BulkCreateInvitations>;
45
+ get updateAppRoleMappings(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_UpdateAppRoleMappings>;
46
+ get getBillingPlan(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetBillingPlan>;
47
+ get getPaddleConfig(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetPaddleConfig>;
48
+ get getPublicKeyForValidation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetPublicKeyForValidation>;
49
+ get pushPublicKeyForValidation(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_PushPublicKeyForValidation>;
50
+ get pushOrGetJwtIdBlocklist(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_PushOrGetJwtIdBlocklist>;
51
+ get suspendUser(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_SuspendUser>;
52
+ get deleteSuspendedUser(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IDeleteSuspendedUser>;
53
+ get checkGlobalAdmin(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_CheckGlobalAdmin>;
54
+ get getGlobalAppStats(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_GetGlobalAppStats>;
55
+ get createGlobalApp(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_CreateGlobalApp>;
56
+ get updateGlobalApp(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_UpdateGlobalApp>;
57
+ get deleteGlobalApp(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_DeleteGlobalApp>;
58
+ get regenerateAppCredentials(): plugins.typedrequest.TypedRequest<plugins.idpInterfaces.request.IReq_RegenerateAppCredentials>;
59
+ }