@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/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.isPermissionKey = exports.isRoleKey = exports.PERMISSION_KEY_PATTERN = exports.ROLE_KEY_PATTERN = exports.ForbiddenError = exports.protectFromClaims = exports.hasFromClaims = exports.evaluate = exports.detectReferralSource = exports.detectConsentProvider = exports.detectConsent = exports.canonicalCategory = exports.REFERRAL_BROWSER_SOURCES = exports.CONSENT_PROVIDERS = exports.withDevBrowser = exports.forgetDevBrowserToken = exports.devBrowserToken = exports.devBrowserEnabled = void 0;
17
+ exports.isPermissionKey = exports.isRoleKey = exports.PERMISSION_KEY_PATTERN = exports.ROLE_KEY_PATTERN = exports.ForbiddenError = exports.protectFromClaims = exports.hasFromClaims = exports.evaluate = exports.detectReferralSource = exports.detectConsentProvider = exports.detectConsent = exports.canonicalCategory = exports.REFERRAL_BROWSER_SOURCES = exports.CONSENT_PROVIDERS = exports.withDevBrowser = exports.setPersistence = exports.forgetDevBrowserToken = exports.devBrowserToken = exports.devBrowserEnabled = void 0;
18
18
  // Provider configuration checks (frontendApi) shared by every framework SDK.
19
19
  __exportStar(require("./config"), exports);
20
20
  __exportStar(require("./sign-out"), exports);
@@ -48,6 +48,7 @@ var dev_browser_1 = require("./dev-browser");
48
48
  Object.defineProperty(exports, "devBrowserEnabled", { enumerable: true, get: function () { return dev_browser_1.devBrowserEnabled; } });
49
49
  Object.defineProperty(exports, "devBrowserToken", { enumerable: true, get: function () { return dev_browser_1.devBrowserToken; } });
50
50
  Object.defineProperty(exports, "forgetDevBrowserToken", { enumerable: true, get: function () { return dev_browser_1.forgetDevBrowserToken; } });
51
+ Object.defineProperty(exports, "setPersistence", { enumerable: true, get: function () { return dev_browser_1.setPersistence; } });
51
52
  Object.defineProperty(exports, "withDevBrowser", { enumerable: true, get: function () { return dev_browser_1.withDevBrowser; } });
52
53
  var referral_detect_1 = require("./referral-detect");
53
54
  Object.defineProperty(exports, "CONSENT_PROVIDERS", { enumerable: true, get: function () { return referral_detect_1.CONSENT_PROVIDERS; } });
@@ -64,14 +65,21 @@ __exportStar(require("./sign-out-events"), exports);
64
65
  __exportStar(require("./native"), exports);
65
66
  __exportStar(require("./native-session"), exports);
66
67
  __exportStar(require("./passkey"), exports);
68
+ // Device-bound biometric sign-in for native apps (register a device key, sign in with it).
69
+ __exportStar(require("./attestation"), exports);
70
+ __exportStar(require("./device-key"), exports);
67
71
  // The sign-in's MFA steps: second-factor setup (authenticator app / texts) and the texted / emailed code.
68
72
  __exportStar(require("./mfa-enrollment"), exports);
73
+ // HOTP, YubiKey (Yubico OTP), Duo, security questions (password-reset recovery).
74
+ __exportStar(require("./mfa-factors"), exports);
69
75
  // Passkey sign-in's ceremony start, carrying the sign-in captcha when one is required.
70
76
  __exportStar(require("./passkey-sign-in"), exports);
71
77
  // Passkey-only sign-up (the account is created when its passkey registers).
72
78
  __exportStar(require("./passkey-sign-up"), exports);
73
79
  // Check an emailed one-time code without using it up (sign-in, sign-up, step-up, email verification).
74
80
  __exportStar(require("./email-code-check"), exports);
81
+ // SRP-6a sign-in (RFC 5054, 3072-bit group, SHA-256): the password never leaves the browser.
82
+ __exportStar(require("./srp"), exports);
75
83
  __exportStar(require("./step-up"), exports);
76
84
  __exportStar(require("./telegram"), exports);
77
85
  __exportStar(require("./siwe"), exports);
@@ -79,18 +87,32 @@ __exportStar(require("./telemetry"), exports);
79
87
  __exportStar(require("./reauth"), exports);
80
88
  // End-user API key self-service (`/v1/client/me/api_keys`).
81
89
  __exportStar(require("./api-keys"), exports);
90
+ // The apps a user authorized, with the OpenID Grant Management grants each holds.
91
+ __exportStar(require("./authorized-apps"), exports);
82
92
  __exportStar(require("./device-authorization"), exports);
93
+ __exportStar(require("./app-launcher"), exports);
83
94
  __exportStar(require("./organizations"), exports);
95
+ __exportStar(require("./organization-admin"), exports);
96
+ __exportStar(require("./pricing"), exports);
97
+ __exportStar(require("./marketing"), exports);
84
98
  __exportStar(require("./phone-numbers"), exports);
99
+ __exportStar(require("./email-addresses"), exports);
85
100
  // Username availability + the "Last used" sign-in method hint.
86
101
  __exportStar(require("./account-hints"), exports);
102
+ __exportStar(require("./custom-challenge"), exports);
103
+ // Identity verification (document and selfie) through the app's verification service.
104
+ __exportStar(require("./identity-verification"), exports);
105
+ // Identity governance: request access, approve, review, delegate.
106
+ __exportStar(require("./iga"), exports);
87
107
  // Self-service profile update (incl. user-editable identity traits).
88
108
  __exportStar(require("./profile"), exports);
89
109
  __exportStar(require("./connect"), exports);
110
+ __exportStar(require("./connections"), exports);
90
111
  __exportStar(require("./password-reset"), exports);
91
112
  __exportStar(require("./check-session"), exports);
92
113
  // Moving from Better Auth: exchange a readable Better Auth session cookie for an Atlas session.
93
114
  __exportStar(require("./better-auth-bridge"), exports);
115
+ __exportStar(require("./migration-browser-sessions"), exports);
94
116
  // OIDC Front-Channel Logout after a browser sign-out.
95
117
  __exportStar(require("./frontchannel-logout"), exports);
96
118
  // RP-initiated logout at an upstream OpenID provider after a browser sign-out.
@@ -120,4 +142,12 @@ Object.defineProperty(exports, "ROLE_KEY_PATTERN", { enumerable: true, get: func
120
142
  Object.defineProperty(exports, "PERMISSION_KEY_PATTERN", { enumerable: true, get: function () { return authz_1.PERMISSION_KEY_PATTERN; } });
121
143
  Object.defineProperty(exports, "isRoleKey", { enumerable: true, get: function () { return authz_1.isRoleKey; } });
122
144
  Object.defineProperty(exports, "isPermissionKey", { enumerable: true, get: function () { return authz_1.isPermissionKey; } });
145
+ __exportStar(require("./journey-redirect"), exports);
146
+ // Bring-your-own login / consent pages: read the challenge, call your backend proxy, follow redirect_to.
147
+ __exportStar(require("./delegated-ui"), exports);
148
+ // Passkeys for a user store you own (via your backend and the Atlas Passkey API).
149
+ __exportStar(require("./external-passkeys"), exports);
150
+ // Wallet-side helpers for verifiable credentials (receive an offer, present an SD-JWT VC).
151
+ __exportStar(require("./credentials"), exports);
152
+ __exportStar(require("./uma"), exports);
123
153
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,2CAAyB;AACzB,6CAA2B;AAC3B,yDAAyD;AACzD,kDAAgC;AAChC,sFAAsF;AACtF,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,kDAAgC;AAChC,uEAAuE;AACvE,2CAAyB;AACzB,6CAA2B;AAC3B,qFAAqF;AACrF,kDAAgC;AAChC,yCAAuB;AACvB,uEAAuE;AACvE,6CAA2B;AAC3B,mGAAmG;AACnG,2DAAyC;AACzC,4GAA4G;AAC5G,sDAAoC;AACpC,+CAA6B;AAC7B,+EAA+E;AAC/E,6CAA2B;AAC3B,8DAA4C;AAC5C,gGAAgG;AAChG,6CAA0G;AAAjG,gHAAA,iBAAiB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAAE,6GAAA,cAAc,OAAA;AAClF,qDAW2B;AAVzB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,wHAAA,qBAAqB,OAAA;AACrB,uHAAA,oBAAoB,OAAA;AAMtB,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,0GAA0G;AAC1G,mDAAiC;AACjC,uFAAuF;AACvF,oDAAkC;AAClC,4EAA4E;AAC5E,oDAAkC;AAClC,sGAAsG;AACtG,qDAAmC;AACnC,4CAA0B;AAC1B,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,yDAAuC;AACvC,kDAAgC;AAChC,kDAAgC;AAChC,+DAA+D;AAC/D,kDAAgC;AAChC,qEAAqE;AACrE,4CAA0B;AAC1B,4CAA0B;AAC1B,mDAAiC;AACjC,kDAAgC;AAChC,gGAAgG;AAChG,uDAAqC;AACrC,sDAAsD;AACtD,wDAAsC;AACtC,+EAA+E;AAC/E,oDAAkC;AAClC,+EAA+E;AAC/E,2EAA2E;AAC3E,4CAA0B;AAC1B,kFAAkF;AAClF,mDAAiC;AACjC,4FAA4F;AAC5F,kDAAgC;AAChC,kFAAkF;AAClF,yEAAyE;AACzE,oEAAoE;AACpE,uDAAqC;AACrC,sDAAoC;AACpC,uEAAuE;AACvE,gDAA8B;AAC9B,0EAA0E;AAC1E,4EAA4E;AAC5E,0CAa0B;AARxB,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,+GAAA,sBAAsB,OAAA;AACtB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6EAA6E;AAC7E,2CAAyB;AACzB,6CAA2B;AAC3B,yDAAyD;AACzD,kDAAgC;AAChC,sFAAsF;AACtF,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,4CAA0B;AAC1B,iDAA+B;AAC/B,kDAAgC;AAChC,uEAAuE;AACvE,2CAAyB;AACzB,6CAA2B;AAC3B,qFAAqF;AACrF,kDAAgC;AAChC,yCAAuB;AACvB,uEAAuE;AACvE,6CAA2B;AAC3B,mGAAmG;AACnG,2DAAyC;AACzC,4GAA4G;AAC5G,sDAAoC;AACpC,+CAA6B;AAC7B,+EAA+E;AAC/E,6CAA2B;AAC3B,8DAA4C;AAC5C,gGAAgG;AAChG,6CAAgJ;AAAvI,gHAAA,iBAAiB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AAAE,6GAAA,cAAc,OAAA;AAAE,6GAAA,cAAc,OAAA;AAClG,qDAW2B;AAVzB,oHAAA,iBAAiB,OAAA;AACjB,2HAAA,wBAAwB,OAAA;AACxB,oHAAA,iBAAiB,OAAA;AACjB,gHAAA,aAAa,OAAA;AACb,wHAAA,qBAAqB,OAAA;AACrB,uHAAA,oBAAoB,OAAA;AAMtB,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,2FAA2F;AAC3F,gDAA8B;AAC9B,+CAA6B;AAC7B,0GAA0G;AAC1G,mDAAiC;AACjC,iFAAiF;AACjF,gDAA8B;AAC9B,uFAAuF;AACvF,oDAAkC;AAClC,4EAA4E;AAC5E,oDAAkC;AAClC,sGAAsG;AACtG,qDAAmC;AACnC,6FAA6F;AAC7F,wCAAsB;AACtB,4CAA0B;AAC1B,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,kFAAkF;AAClF,oDAAkC;AAClC,yDAAuC;AACvC,iDAA+B;AAC/B,kDAAgC;AAChC,uDAAqC;AACrC,4CAA0B;AAC1B,8CAA4B;AAC5B,kDAAgC;AAChC,oDAAkC;AAClC,+DAA+D;AAC/D,kDAAgC;AAChC,qDAAmC;AACnC,sFAAsF;AACtF,0DAAwC;AACxC,kEAAkE;AAClE,wCAAsB;AACtB,qEAAqE;AACrE,4CAA0B;AAC1B,4CAA0B;AAC1B,gDAA8B;AAC9B,mDAAiC;AACjC,kDAAgC;AAChC,gGAAgG;AAChG,uDAAqC;AACrC,+DAA6C;AAC7C,sDAAsD;AACtD,wDAAsC;AACtC,+EAA+E;AAC/E,oDAAkC;AAClC,+EAA+E;AAC/E,2EAA2E;AAC3E,4CAA0B;AAC1B,kFAAkF;AAClF,mDAAiC;AACjC,4FAA4F;AAC5F,kDAAgC;AAChC,kFAAkF;AAClF,yEAAyE;AACzE,oEAAoE;AACpE,uDAAqC;AACrC,sDAAoC;AACpC,uEAAuE;AACvE,gDAA8B;AAC9B,0EAA0E;AAC1E,4EAA4E;AAC5E,0CAa0B;AARxB,iGAAA,QAAQ,OAAA;AACR,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,+GAAA,sBAAsB,OAAA;AACtB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AAEjB,qDAAmC;AAEnC,yGAAyG;AACzG,iDAA+B;AAE/B,kFAAkF;AAClF,sDAAoC;AAEpC,2FAA2F;AAC3F,gDAA8B;AAC9B,wCAAsB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The ticket exchange answers with `redirect_url` when the instance's sign-in
3
+ * journey names where the user goes after signing in. Only an https URL is
4
+ * honoured; anything else is ignored.
5
+ */
6
+ export declare function journeyRedirectUrl(body: unknown): string | null;
7
+ /** Read `redirect_url` off a ticket-exchange Response without consuming it. */
8
+ export declare function journeyRedirectFrom(response: Response | undefined | null): Promise<string | null>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.journeyRedirectUrl = journeyRedirectUrl;
4
+ exports.journeyRedirectFrom = journeyRedirectFrom;
5
+ /**
6
+ * The ticket exchange answers with `redirect_url` when the instance's sign-in
7
+ * journey names where the user goes after signing in. Only an https URL is
8
+ * honoured; anything else is ignored.
9
+ */
10
+ function journeyRedirectUrl(body) {
11
+ const url = body && typeof body === 'object' ? body.redirect_url : undefined;
12
+ if (typeof url !== 'string')
13
+ return null;
14
+ try {
15
+ return new URL(url).protocol === 'https:' ? url : null;
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ /** Read `redirect_url` off a ticket-exchange Response without consuming it. */
22
+ async function journeyRedirectFrom(response) {
23
+ if (!response || !response.ok)
24
+ return null;
25
+ try {
26
+ return journeyRedirectUrl(await response.clone().json());
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ //# sourceMappingURL=journey-redirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-redirect.js","sourceRoot":"","sources":["../src/journey-redirect.ts"],"names":[],"mappings":";;AAKA,gDAQC;AAGD,kDAOC;AAvBD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAmC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,+EAA+E;AACxE,KAAK,UAAU,mBAAmB,CAAC,QAAqC;IAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,81 @@
1
+ import type { FapiClient } from './fapi';
2
+ import { type AppConsent } from './referral-detect';
3
+ /**
4
+ * Marketing attribution: capture the UTM tags and ad click ids a visitor arrived
5
+ * with, keep them (only with consent) until they sign up, and attach them to the
6
+ * new user's private metadata (`marketing.first_touch` / `last_touch`) and to
7
+ * lead-form submissions. The instance decides which parameters are captured
8
+ * (`GET /v1/client/marketing`); the server re-validates everything it receives.
9
+ *
10
+ * Consent: the page's consent manager decides for the instance's category (default
11
+ * `marketing`), else the app's own `consent`. With no decision nothing is stored.
12
+ */
13
+ export interface MarketingConfig {
14
+ enabled: boolean;
15
+ params: string[];
16
+ consentCategory: string;
17
+ }
18
+ export interface MarketingTouch {
19
+ params: Record<string, string>;
20
+ landing_url: string | null;
21
+ referrer: string | null;
22
+ captured_at: string;
23
+ }
24
+ export interface StoredMarketing {
25
+ first_touch: MarketingTouch;
26
+ last_touch: MarketingTouch;
27
+ /** The attribution has been sent to the server for the user who signed up. */
28
+ sent?: boolean;
29
+ }
30
+ export interface MarketingOptions {
31
+ /** Your own consent decision, used when no consent manager is on the page. */
32
+ consent?: AppConsent;
33
+ /** Where the capture is kept. Default `localStorage`. */
34
+ storage?: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'> | null;
35
+ /** The page (default `window`), for tests and non-browser hosts. */
36
+ win?: {
37
+ location?: {
38
+ search?: string;
39
+ origin?: string;
40
+ pathname?: string;
41
+ };
42
+ document?: {
43
+ referrer?: string;
44
+ };
45
+ } | null;
46
+ }
47
+ export declare const MARKETING_STORAGE_KEY = "atlas_marketing";
48
+ /** Forget the cached per-instance config (tests). */
49
+ export declare function resetMarketingCapture(): void;
50
+ export declare function loadMarketingConfig(client: FapiClient): Promise<MarketingConfig>;
51
+ /** The touch a page URL carries: its allowed parameters, the landing page and the referrer. Null when it carries none. */
52
+ export declare function marketingTouchFromPage(config: MarketingConfig, win: NonNullable<MarketingOptions['win']>, now?: Date): MarketingTouch | null;
53
+ /** What has been captured so far, or null. */
54
+ export declare function storedMarketing(options?: MarketingOptions): StoredMarketing | null;
55
+ /**
56
+ * Capture the current page's campaign parameters, when the instance captures them
57
+ * and the visitor has consented. The first touch is kept; the last touch follows
58
+ * the newest. Resolves true when something was stored.
59
+ */
60
+ export declare function captureMarketing(client: FapiClient, options?: MarketingOptions): Promise<boolean>;
61
+ /**
62
+ * Send what was captured to the server for the signed-in user (call after a
63
+ * sign-up completes). The server attributes only a recently created user, so an
64
+ * existing user is untouched. Sent once; resolves true when the server recorded it.
65
+ */
66
+ export declare function flushMarketing(client: FapiClient, options?: MarketingOptions): Promise<boolean>;
67
+ export interface LeadInput {
68
+ email: string;
69
+ name?: string;
70
+ /** Which form this is (default `default`); one row per email per form. */
71
+ form?: string;
72
+ /** The person agreed to be contacted (a checkbox, or an implicit subscribe). */
73
+ consent?: boolean;
74
+ /** A hidden honeypot field's value: a person leaves it empty. */
75
+ website?: string;
76
+ }
77
+ /** Submit a lead / subscribe form, with the captured attribution when there is some. */
78
+ export declare function submitLead(client: FapiClient, input: LeadInput, options?: MarketingOptions): Promise<{
79
+ ok: boolean;
80
+ error?: string;
81
+ }>;
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MARKETING_STORAGE_KEY = void 0;
4
+ exports.resetMarketingCapture = resetMarketingCapture;
5
+ exports.loadMarketingConfig = loadMarketingConfig;
6
+ exports.marketingTouchFromPage = marketingTouchFromPage;
7
+ exports.storedMarketing = storedMarketing;
8
+ exports.captureMarketing = captureMarketing;
9
+ exports.flushMarketing = flushMarketing;
10
+ exports.submitLead = submitLead;
11
+ const referral_detect_1 = require("./referral-detect");
12
+ exports.MARKETING_STORAGE_KEY = 'atlas_marketing';
13
+ const TTL_MS = 90 * 24 * 60 * 60_000;
14
+ const DISABLED = { enabled: false, params: [], consentCategory: 'marketing' };
15
+ const configs = new Map();
16
+ /** Forget the cached per-instance config (tests). */
17
+ function resetMarketingCapture() {
18
+ configs.clear();
19
+ }
20
+ function loadMarketingConfig(client) {
21
+ const key = client.referralCacheKey;
22
+ let cached = configs.get(key);
23
+ if (!cached) {
24
+ cached = client
25
+ .get('/v1/client/marketing')
26
+ .then((res) => {
27
+ const c = res.ok ? res.data?.capture : undefined;
28
+ if (!c?.enabled)
29
+ return DISABLED;
30
+ const params = Array.isArray(c.params) ? c.params.filter((p) => typeof p === 'string') : [];
31
+ return { enabled: true, params, consentCategory: typeof c.consent_category === 'string' ? c.consent_category : 'marketing' };
32
+ })
33
+ .catch(() => DISABLED);
34
+ configs.set(key, cached);
35
+ }
36
+ return cached;
37
+ }
38
+ const defaultWindow = () => (typeof window === 'undefined' ? null : window);
39
+ const defaultStorage = () => {
40
+ try {
41
+ return typeof localStorage === 'undefined' ? null : localStorage;
42
+ }
43
+ catch {
44
+ return null;
45
+ }
46
+ };
47
+ /** origin + path of a URL (no query, no fragment), or null. */
48
+ const originPath = (raw) => {
49
+ if (!raw)
50
+ return null;
51
+ try {
52
+ const u = new URL(raw);
53
+ return u.protocol === 'http:' || u.protocol === 'https:' ? `${u.origin}${u.pathname}` : null;
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ };
59
+ /** The touch a page URL carries: its allowed parameters, the landing page and the referrer. Null when it carries none. */
60
+ function marketingTouchFromPage(config, win, now = new Date()) {
61
+ const search = new URLSearchParams(win.location?.search ?? '');
62
+ const params = {};
63
+ for (const name of config.params.length ? config.params : []) {
64
+ const v = search.get(name);
65
+ if (v && v.trim())
66
+ params[name] = v.trim().slice(0, 200);
67
+ }
68
+ if (Object.keys(params).length === 0)
69
+ return null;
70
+ const landing = win.location?.origin ? `${win.location.origin}${win.location.pathname ?? '/'}` : null;
71
+ return { params, landing_url: originPath(landing), referrer: originPath(win.document?.referrer), captured_at: now.toISOString() };
72
+ }
73
+ const read = (storage) => {
74
+ try {
75
+ const raw = storage?.getItem(exports.MARKETING_STORAGE_KEY);
76
+ if (!raw)
77
+ return null;
78
+ const v = JSON.parse(raw);
79
+ if (v.expires_at !== undefined && v.expires_at < Date.now()) {
80
+ storage?.removeItem(exports.MARKETING_STORAGE_KEY);
81
+ return null;
82
+ }
83
+ return v.first_touch && v.last_touch ? v : null;
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ };
89
+ /** What has been captured so far, or null. */
90
+ function storedMarketing(options = {}) {
91
+ return read(options.storage === undefined ? defaultStorage() : options.storage);
92
+ }
93
+ function consentFor(config, win, options) {
94
+ return (0, referral_detect_1.detectConsent)(win, [config.consentCategory], { provider: 'auto', appConsent: options.consent });
95
+ }
96
+ /**
97
+ * Capture the current page's campaign parameters, when the instance captures them
98
+ * and the visitor has consented. The first touch is kept; the last touch follows
99
+ * the newest. Resolves true when something was stored.
100
+ */
101
+ async function captureMarketing(client, options = {}) {
102
+ const win = options.win === undefined ? defaultWindow() : options.win;
103
+ const storage = options.storage === undefined ? defaultStorage() : options.storage;
104
+ if (!win || !storage)
105
+ return false;
106
+ // A touch needs a query parameter; without one there is nothing to capture, so skip the config request.
107
+ if (!win.location?.search || win.location.search === '?')
108
+ return false;
109
+ const config = await loadMarketingConfig(client);
110
+ if (!config.enabled)
111
+ return false;
112
+ const touch = marketingTouchFromPage(config, win);
113
+ if (!touch)
114
+ return false;
115
+ if (!consentFor(config, win, options).granted)
116
+ return false;
117
+ const prior = read(storage);
118
+ const next = { first_touch: prior?.first_touch ?? touch, last_touch: touch, expires_at: Date.now() + TTL_MS };
119
+ try {
120
+ storage.setItem(exports.MARKETING_STORAGE_KEY, JSON.stringify(next));
121
+ return true;
122
+ }
123
+ catch {
124
+ return false;
125
+ }
126
+ }
127
+ /**
128
+ * Send what was captured to the server for the signed-in user (call after a
129
+ * sign-up completes). The server attributes only a recently created user, so an
130
+ * existing user is untouched. Sent once; resolves true when the server recorded it.
131
+ */
132
+ async function flushMarketing(client, options = {}) {
133
+ const storage = options.storage === undefined ? defaultStorage() : options.storage;
134
+ const stored = read(storage);
135
+ if (!stored || stored.sent)
136
+ return false;
137
+ const res = await client.post('/v1/client/me/marketing', { ...stored.last_touch, first_touch: stored.first_touch });
138
+ if (!res.ok)
139
+ return false;
140
+ // Whatever the server said (recorded or "not a new user"), do not keep asking.
141
+ try {
142
+ storage?.setItem(exports.MARKETING_STORAGE_KEY, JSON.stringify({ ...stored, sent: true, expires_at: Date.now() + TTL_MS }));
143
+ }
144
+ catch {
145
+ /* best effort */
146
+ }
147
+ return res.data?.recorded === true;
148
+ }
149
+ /** Submit a lead / subscribe form, with the captured attribution when there is some. */
150
+ async function submitLead(client, input, options = {}) {
151
+ const stored = storedMarketing(options);
152
+ const res = await client.post('/v1/client/marketing/leads', {
153
+ email: input.email,
154
+ ...(input.name ? { name: input.name } : {}),
155
+ ...(input.form ? { form: input.form } : {}),
156
+ consent: input.consent === true,
157
+ ...(input.website ? { website: input.website } : {}),
158
+ ...(stored ? { marketing: { ...stored.first_touch } } : {}),
159
+ });
160
+ return res.ok ? { ok: true } : { ok: false, error: res.errors[0]?.message ?? 'Could not submit.' };
161
+ }
162
+ //# sourceMappingURL=marketing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing.js","sourceRoot":"","sources":["../src/marketing.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ export interface MfaChoices {
36
36
  emailCode: boolean;
37
37
  /** How many authenticator codes enrolment asks for. */
38
38
  totpCodes: 1 | 2;
39
+ /** "Use Duo instead" at the second factor (see `prepareDuo`). */
40
+ duo?: boolean;
39
41
  }
40
42
  /**
41
43
  * The MFA choices from the instance's settings (`InstanceSettings.account`).
@@ -27,6 +27,7 @@ function mfaChoicesFrom(account) {
27
27
  sms: mfa ? mfa.sms : false,
28
28
  emailCode: account?.emailSecondFactor === true,
29
29
  totpCodes: mfa ? mfa.totpCodes : 2,
30
+ ...(mfa?.duo === true ? { duo: true } : {}),
30
31
  };
31
32
  }
32
33
  /** `POST /v1/client/sign_ins/:id/prepare_mfa_enrollment`. */
@@ -1 +1 @@
1
- {"version":3,"file":"mfa-enrollment.js","sourceRoot":"","sources":["../src/mfa-enrollment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mfa-enrollment.js","sourceRoot":"","sources":["../src/mfa-enrollment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * The additional authentication factors, client half: counter-based tokens (HOTP), YubiKeys
3
+ * (Yubico OTP), Duo, security questions for password reset, and smart card sign-in. The
4
+ * signed-in calls below need a recent sign-in (the same step-up gate as every 2FA change).
5
+ *
6
+ * HOTP and Yubico OTP codes are typed into the ordinary second-factor `code` field at
7
+ * sign-in, so they need no extra call there. Duo is a redirect: see {@link prepareDuo}.
8
+ */
9
+ import type { FapiClient, FapiResponse } from './fapi';
10
+ interface EnrolledFactor {
11
+ object: 'mfa_factor';
12
+ id: string;
13
+ type: string;
14
+ verified: boolean;
15
+ backup_codes?: string[];
16
+ }
17
+ export interface HotpEnrollment extends EnrolledFactor {
18
+ /** The base32 secret, shown once. Program it into the token or app. */
19
+ secret: string;
20
+ /** The `otpauth://hotp/` URI (for a QR code). */
21
+ uri: string;
22
+ digits: number;
23
+ }
24
+ /** Start HOTP enrolment: returns the secret and URI once. Confirm with {@link verifyHotp}. */
25
+ export declare function startHotp(client: FapiClient): Promise<FapiResponse<HotpEnrollment>>;
26
+ /** Confirm HOTP enrolment with the token's next code; the response carries the recovery codes once. */
27
+ export declare function verifyHotp(client: FapiClient, factorId: string, code: string): Promise<FapiResponse<EnrolledFactor>>;
28
+ /** Re-synchronise a token whose counter ran far ahead, from two consecutive codes. */
29
+ export declare function resyncHotp(client: FapiClient, factorId: string, codes: [string, string]): Promise<FapiResponse<{
30
+ resynced: true;
31
+ }>>;
32
+ /** Enrol a YubiKey: the user touches the key into a field and you pass the typed OTP. */
33
+ export declare function enrollYubikey(client: FapiClient, otp: string): Promise<FapiResponse<EnrolledFactor & {
34
+ public_id: string;
35
+ }>>;
36
+ /** A string a YubiKey could have typed (modhex, 32 to 48 characters). Handy to route a field's input. */
37
+ export declare const looksLikeYubicoOtp: (value: string) => boolean;
38
+ export interface DuoPrompt {
39
+ /** Send the browser here. Duo returns it to the Frontend API, then to `returnUrl` when given. */
40
+ authorizationUrl: string;
41
+ }
42
+ /** Begin Duo enrolment. After the redirect back, call {@link finishDuoEnrollment} with the returned `factorId`. */
43
+ export declare function startDuoEnrollment(client: FapiClient, opts?: {
44
+ returnUrl?: string;
45
+ }): Promise<FapiResponse<EnrolledFactor & {
46
+ authorization_url: string;
47
+ }>>;
48
+ /** Complete Duo enrolment after the user approved Duo's prompt. Answers 400 until Duo has confirmed. */
49
+ export declare function finishDuoEnrollment(client: FapiClient, factorId: string): Promise<FapiResponse<EnrolledFactor>>;
50
+ /** At the second-factor step: get Duo's authorization URL for this sign-in attempt. */
51
+ export declare function prepareDuo(client: FapiClient, attemptId: string, opts?: {
52
+ returnUrl?: string;
53
+ }): Promise<{
54
+ prompt: DuoPrompt | null;
55
+ response: FapiResponse<{
56
+ authorization_url: string;
57
+ }>;
58
+ }>;
59
+ /**
60
+ * Poll the sign-in after sending the user to Duo. Returns the attempt as it stands: the
61
+ * status stays `needs_second_factor` until Duo's callback has recorded an approval for this
62
+ * attempt, then `complete`.
63
+ */
64
+ export declare function pollDuo(client: FapiClient, attemptId: string): Promise<FapiResponse<Record<string, unknown>>>;
65
+ export interface SecurityQuestions {
66
+ enabled: boolean;
67
+ /** How many questions the user answers. */
68
+ required: number;
69
+ availableQuestions: string[];
70
+ /** The questions the user chose (never the answers). */
71
+ answeredQuestions: string[];
72
+ }
73
+ interface SecurityQuestionsWire {
74
+ enabled: boolean;
75
+ required: number;
76
+ available_questions: string[];
77
+ answered_questions: string[];
78
+ }
79
+ /** The offered questions and the signed-in user's chosen ones. */
80
+ export declare function getSecurityQuestions(client: FapiClient): Promise<SecurityQuestions | null>;
81
+ /** Set (replace) the answers. `answers` has exactly `required` distinct questions from the offered list. */
82
+ export declare function setSecurityQuestions(client: FapiClient, answers: Array<{
83
+ question: string;
84
+ answer: string;
85
+ }>): Promise<{
86
+ questions: SecurityQuestions | null;
87
+ response: FapiResponse<SecurityQuestionsWire>;
88
+ }>;
89
+ export declare function removeSecurityQuestions(client: FapiClient): Promise<FapiResponse<{
90
+ deleted: boolean;
91
+ }>>;
92
+ /**
93
+ * During a password reset, once the emailed code (and any second factor) is accepted: the
94
+ * questions the user must answer before choosing a password. Send the answers as
95
+ * `security_answers` with `set_new_password`.
96
+ */
97
+ export declare function getResetSecurityQuestions(client: FapiClient, resetId: string): Promise<{
98
+ required: boolean;
99
+ questions: string[];
100
+ } | null>;
101
+ /**
102
+ * Smart card / PIV / CAC sign-in. The browser presents the card's certificate in the TLS
103
+ * handshake to a Frontend API host that requests client certificates; your proxy forwards the
104
+ * result and Atlas signs the user in. Resolves like a passkey sign-in: a completed attempt
105
+ * (`status: "complete"`, with the session set), or `needs_second_factor` when the account's
106
+ * MFA is still owed.
107
+ */
108
+ export declare function signInWithSmartCard(client: FapiClient): Promise<FapiResponse<Record<string, unknown>>>;
109
+ export {};