@atlasauth/js 0.23.1 → 0.25.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 (102) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/app-launcher.d.ts +11 -0
  3. package/dist/app-launcher.js +12 -0
  4. package/dist/app-launcher.js.map +1 -0
  5. package/dist/attempt.d.ts +52 -1
  6. package/dist/attempt.js +2 -0
  7. package/dist/attempt.js.map +1 -1
  8. package/dist/attestation.d.ts +52 -0
  9. package/dist/attestation.js +48 -0
  10. package/dist/attestation.js.map +1 -0
  11. package/dist/authorized-apps.d.ts +42 -0
  12. package/dist/authorized-apps.js +41 -0
  13. package/dist/authorized-apps.js.map +1 -0
  14. package/dist/compat.d.ts +1 -0
  15. package/dist/compat.js +5 -1
  16. package/dist/compat.js.map +1 -1
  17. package/dist/connect.d.ts +6 -0
  18. package/dist/connect.js +22 -0
  19. package/dist/connect.js.map +1 -1
  20. package/dist/connections.d.ts +161 -0
  21. package/dist/connections.js +117 -0
  22. package/dist/connections.js.map +1 -0
  23. package/dist/credentials.d.ts +47 -0
  24. package/dist/credentials.js +95 -0
  25. package/dist/credentials.js.map +1 -0
  26. package/dist/custom-challenge.d.ts +13 -0
  27. package/dist/custom-challenge.js +27 -0
  28. package/dist/custom-challenge.js.map +1 -0
  29. package/dist/delegated-ui.d.ts +93 -0
  30. package/dist/delegated-ui.js +62 -0
  31. package/dist/delegated-ui.js.map +1 -0
  32. package/dist/dev-browser.d.ts +9 -0
  33. package/dist/dev-browser.js +21 -1
  34. package/dist/dev-browser.js.map +1 -1
  35. package/dist/device-key.d.ts +65 -0
  36. package/dist/device-key.js +64 -0
  37. package/dist/device-key.js.map +1 -0
  38. package/dist/email-addresses.d.ts +24 -0
  39. package/dist/email-addresses.js +36 -0
  40. package/dist/email-addresses.js.map +1 -0
  41. package/dist/environment.d.ts +8 -0
  42. package/dist/environment.js +6 -0
  43. package/dist/environment.js.map +1 -1
  44. package/dist/external-passkeys.d.ts +34 -0
  45. package/dist/external-passkeys.js +31 -0
  46. package/dist/external-passkeys.js.map +1 -0
  47. package/dist/fapi.d.ts +36 -0
  48. package/dist/fapi.js +75 -4
  49. package/dist/fapi.js.map +1 -1
  50. package/dist/identity-verification.d.ts +40 -0
  51. package/dist/identity-verification.js +40 -0
  52. package/dist/identity-verification.js.map +1 -0
  53. package/dist/iga.d.ts +118 -0
  54. package/dist/iga.js +60 -0
  55. package/dist/iga.js.map +1 -0
  56. package/dist/index.d.ts +21 -1
  57. package/dist/index.js +31 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/journey-redirect.d.ts +8 -0
  60. package/dist/journey-redirect.js +32 -0
  61. package/dist/journey-redirect.js.map +1 -0
  62. package/dist/marketing.d.ts +81 -0
  63. package/dist/marketing.js +162 -0
  64. package/dist/marketing.js.map +1 -0
  65. package/dist/mfa-enrollment.d.ts +2 -0
  66. package/dist/mfa-enrollment.js +1 -0
  67. package/dist/mfa-enrollment.js.map +1 -1
  68. package/dist/mfa-factors.d.ts +109 -0
  69. package/dist/mfa-factors.js +98 -0
  70. package/dist/mfa-factors.js.map +1 -0
  71. package/dist/migration-browser-sessions.d.ts +118 -0
  72. package/dist/migration-browser-sessions.js +404 -0
  73. package/dist/migration-browser-sessions.js.map +1 -0
  74. package/dist/organization-admin.d.ts +192 -0
  75. package/dist/organization-admin.js +53 -0
  76. package/dist/organization-admin.js.map +1 -0
  77. package/dist/passkey.d.ts +71 -2
  78. package/dist/passkey.js +97 -0
  79. package/dist/passkey.js.map +1 -1
  80. package/dist/password-reset.d.ts +16 -1
  81. package/dist/password-reset.js +19 -4
  82. package/dist/password-reset.js.map +1 -1
  83. package/dist/pricing.d.ts +80 -0
  84. package/dist/pricing.js +71 -0
  85. package/dist/pricing.js.map +1 -0
  86. package/dist/profile.d.ts +73 -1
  87. package/dist/profile.js +23 -0
  88. package/dist/profile.js.map +1 -1
  89. package/dist/redirect.js +1 -1
  90. package/dist/redirect.js.map +1 -1
  91. package/dist/srp.d.ts +55 -0
  92. package/dist/srp.js +120 -0
  93. package/dist/srp.js.map +1 -0
  94. package/dist/telegram.d.ts +23 -0
  95. package/dist/telegram.js +8 -0
  96. package/dist/telegram.js.map +1 -1
  97. package/dist/uma.d.ts +86 -0
  98. package/dist/uma.js +73 -0
  99. package/dist/uma.js.map +1 -0
  100. package/dist/version.d.ts +1 -1
  101. package/dist/version.js +1 -1
  102. package/package.json +2 -2
package/dist/uma.d.ts ADDED
@@ -0,0 +1,86 @@
1
+ import type { FapiClient } from './fapi';
2
+ /**
3
+ * User-Managed Access, from the two browser-side seats.
4
+ *
5
+ * The RESOURCE OWNER (signed in, cookie-authenticated through the {@link FapiClient}): list what they own and who
6
+ * it is shared with, share and stop sharing, and answer access requests (`/v1/client/me/uma/*`).
7
+ *
8
+ * The CLIENT acting for a requesting party: build the claims-gathering URL for a `need_info` answer that carries
9
+ * `redirect_user`, and read the ticket / error from the redirect back.
10
+ */
11
+ export interface UmaPolicy {
12
+ object: 'uma_policy';
13
+ id: string;
14
+ resource_id: string;
15
+ subject: {
16
+ type: 'user' | 'group' | 'org';
17
+ id: string;
18
+ };
19
+ scopes: string[];
20
+ created_at: number;
21
+ }
22
+ export interface UmaOwnedResource {
23
+ object: 'uma_resource';
24
+ id: string;
25
+ name: string;
26
+ type: string | null;
27
+ uri: string | null;
28
+ resource_scopes: string[];
29
+ app: string | null;
30
+ policies: UmaPolicy[];
31
+ }
32
+ export interface UmaAccessRequest {
33
+ object: 'uma_access_request';
34
+ id: string;
35
+ resource_id: string;
36
+ resource_name?: string;
37
+ requester_user_id: string;
38
+ /** The requester's email address. */
39
+ requester?: string | null;
40
+ scopes: string[];
41
+ status: 'pending' | 'approved' | 'denied';
42
+ created_at: number;
43
+ decided_at: number | null;
44
+ }
45
+ /** A refused request; `code` is the server's stable error code. */
46
+ export declare class UmaError extends Error {
47
+ readonly status: number;
48
+ readonly code: string;
49
+ constructor(status: number, code: string, message: string);
50
+ }
51
+ /** The resources the signed-in user owns, with who each is shared with. */
52
+ export declare function listUmaResources(client: FapiClient): Promise<UmaOwnedResource[]>;
53
+ /** Share a resource with a person (verified `email`) or a `subject` (user, group, org). Replaces an earlier share to the same subject. */
54
+ export declare function shareUmaResource(client: FapiClient, resourceId: string, target: {
55
+ email: string;
56
+ } | {
57
+ subject: {
58
+ type: 'user' | 'group' | 'org';
59
+ id: string;
60
+ };
61
+ }, scopes: string[]): Promise<UmaPolicy>;
62
+ export declare function unshareUmaResource(client: FapiClient, resourceId: string, subject: {
63
+ type: string;
64
+ id: string;
65
+ }): Promise<void>;
66
+ /** Access requests for the user's resources (the owner-approval queue). */
67
+ export declare function listUmaAccessRequests(client: FapiClient, status?: UmaAccessRequest['status']): Promise<UmaAccessRequest[]>;
68
+ /** Approve (optionally narrowing `scopes`) or deny a pending request. A request is decided once. */
69
+ export declare function decideUmaAccessRequest(client: FapiClient, requestId: string, decision: 'approve' | 'deny', scopes?: string[]): Promise<UmaAccessRequest>;
70
+ /**
71
+ * The URL to send the requesting party to for interactive claims gathering. `redirectUser` is the `redirect_user`
72
+ * from the `need_info` answer; `ticket` is that answer's (rotated) ticket. `claimsRedirectUri` must be one of the
73
+ * client's registered claims redirect URIs.
74
+ */
75
+ export declare function umaClaimsUrl(redirectUser: string, params: {
76
+ clientId: string;
77
+ ticket: string;
78
+ claimsRedirectUri?: string;
79
+ state?: string;
80
+ }): string;
81
+ /** Read the redirect back from claims gathering: a new `ticket`, or an `error` (the person cancelled). */
82
+ export declare function parseUmaClaimsRedirect(redirectUrl: string): {
83
+ ticket?: string;
84
+ error?: string;
85
+ state?: string;
86
+ };
package/dist/uma.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UmaError = void 0;
4
+ exports.listUmaResources = listUmaResources;
5
+ exports.shareUmaResource = shareUmaResource;
6
+ exports.unshareUmaResource = unshareUmaResource;
7
+ exports.listUmaAccessRequests = listUmaAccessRequests;
8
+ exports.decideUmaAccessRequest = decideUmaAccessRequest;
9
+ exports.umaClaimsUrl = umaClaimsUrl;
10
+ exports.parseUmaClaimsRedirect = parseUmaClaimsRedirect;
11
+ /** A refused request; `code` is the server's stable error code. */
12
+ class UmaError extends Error {
13
+ status;
14
+ code;
15
+ constructor(status, code, message) {
16
+ super(message);
17
+ this.name = 'UmaError';
18
+ this.status = status;
19
+ this.code = code;
20
+ }
21
+ }
22
+ exports.UmaError = UmaError;
23
+ async function call(client, path, init) {
24
+ const res = await client.request(path, init);
25
+ if (!res.ok) {
26
+ const first = res.errors[0];
27
+ throw new UmaError(res.status, first?.code ?? 'UNKNOWN', first?.message ?? 'The request failed.');
28
+ }
29
+ return res.data;
30
+ }
31
+ const json = (method, body) => ({ method, body: JSON.stringify(body), headers: { 'content-type': 'application/json' } });
32
+ const enc = encodeURIComponent;
33
+ /** The resources the signed-in user owns, with who each is shared with. */
34
+ async function listUmaResources(client) {
35
+ return (await call(client, '/v1/client/me/uma/resources', { method: 'GET' })).data ?? [];
36
+ }
37
+ /** Share a resource with a person (verified `email`) or a `subject` (user, group, org). Replaces an earlier share to the same subject. */
38
+ function shareUmaResource(client, resourceId, target, scopes) {
39
+ return call(client, `/v1/client/me/uma/resources/${enc(resourceId)}/policies`, json('PUT', { ...target, scopes }));
40
+ }
41
+ async function unshareUmaResource(client, resourceId, subject) {
42
+ await call(client, `/v1/client/me/uma/resources/${enc(resourceId)}/policies/${enc(subject.type)}/${enc(subject.id)}`, { method: 'DELETE' });
43
+ }
44
+ /** Access requests for the user's resources (the owner-approval queue). */
45
+ async function listUmaAccessRequests(client, status) {
46
+ const q = status ? `?status=${enc(status)}` : '';
47
+ return (await call(client, `/v1/client/me/uma/requests${q}`, { method: 'GET' })).data ?? [];
48
+ }
49
+ /** Approve (optionally narrowing `scopes`) or deny a pending request. A request is decided once. */
50
+ function decideUmaAccessRequest(client, requestId, decision, scopes) {
51
+ return call(client, `/v1/client/me/uma/requests/${enc(requestId)}/decision`, json('POST', { decision, ...(scopes ? { scopes } : {}) }));
52
+ }
53
+ /**
54
+ * The URL to send the requesting party to for interactive claims gathering. `redirectUser` is the `redirect_user`
55
+ * from the `need_info` answer; `ticket` is that answer's (rotated) ticket. `claimsRedirectUri` must be one of the
56
+ * client's registered claims redirect URIs.
57
+ */
58
+ function umaClaimsUrl(redirectUser, params) {
59
+ const url = new URL(redirectUser);
60
+ url.searchParams.set('client_id', params.clientId);
61
+ url.searchParams.set('ticket', params.ticket);
62
+ if (params.claimsRedirectUri)
63
+ url.searchParams.set('claims_redirect_uri', params.claimsRedirectUri);
64
+ if (params.state)
65
+ url.searchParams.set('state', params.state);
66
+ return url.toString();
67
+ }
68
+ /** Read the redirect back from claims gathering: a new `ticket`, or an `error` (the person cancelled). */
69
+ function parseUmaClaimsRedirect(redirectUrl) {
70
+ const p = new URL(redirectUrl).searchParams;
71
+ return { ticket: p.get('ticket') ?? undefined, error: p.get('error') ?? undefined, state: p.get('state') ?? undefined };
72
+ }
73
+ //# sourceMappingURL=uma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uma.js","sourceRoot":"","sources":["../src/uma.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -4,4 +4,4 @@
4
4
  * package.json at runtime) so the bundle stays dependency-free and tests stay
5
5
  * deterministic; `version.test.ts` fails when it drifts from package.json.
6
6
  */
7
- export declare const ATLAS_JS_VERSION = "0.23.1";
7
+ export declare const ATLAS_JS_VERSION = "0.25.0";
package/dist/version.js CHANGED
@@ -7,5 +7,5 @@ exports.ATLAS_JS_VERSION = void 0;
7
7
  * package.json at runtime) so the bundle stays dependency-free and tests stay
8
8
  * deterministic; `version.test.ts` fails when it drifts from package.json.
9
9
  */
10
- exports.ATLAS_JS_VERSION = '0.23.1';
10
+ exports.ATLAS_JS_VERSION = '0.25.0';
11
11
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlasauth/js",
3
- "version": "0.23.1",
3
+ "version": "0.25.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "exports": {
@@ -20,7 +20,7 @@
20
20
  "vitest": "^2.1.4"
21
21
  },
22
22
  "dependencies": {
23
- "@atlasauth/authz": "0.2.0"
23
+ "@atlasauth/authz": "0.3.0"
24
24
  },
25
25
  "publishConfig": {
26
26
  "access": "public"