@atlasauth/js 0.12.0 → 0.14.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlasauth/js changelog
2
2
 
3
+ ## 0.14.0
4
+ - **Referral capture v2.** One source per referral, in precedence order and never mixed: the page's referral script (`window.aff.getReferral()` → `{code, clickId, anonId, ts}`), explicit `ref_*` URL parameters (`ref`, `ref_click_id`, `ref_anon_id`, `ref_consent`, `ref_captured_at`), a code in the instance's URL parameters, then the tracking cookie. A URL code no longer travels with the cookie's click id. Click and anonymous ids are sent only with consent (Cookie Munch, `referralConsent`, or `ref_consent=granted` on the URL); without it only the code goes. The cookie may carry `ts` (becomes `captured_at`) and `exp` (an expired cookie is ignored).
5
+ - **New redirect helpers:** `signIn({ url | frontendApi, redirectUrl?, referral?: false | 'auto', consent?, config?, navigate? })` / `signUp(...)` go to the hosted page (or any URL, e.g. `/oauth2/authorize`) with the referral as `ref_*` query parameters; `referralParams(options)` and `withReferralParams(url, options)` for your own redirects.
6
+ - **New `lookupReferralCode(configOrTemplate, code, { fetchImpl?, timeoutMs? })`** → `{ valid, partnerDisplayName?, refereeReward? } | null` (the instance's public code lookup; null on any failure).
7
+ - `ReferralConfig` gains `codeLookupUrl` and `signupCodeField` (from `referrals.code_lookup_url` / `referrals.signup_code_field`). `FapiClientOptions.referral` and `ReferralCaptureOptions.referral` accept `'auto'` (the default). New exports: `referralTime`, `referralFromScript`, `explicitReferralFromSearch`, types `ReferralSourceFields`, `ReferralRedirectOptions`, `HostedRedirectOptions`, `ReferralCodeLookup`. `ReferralPage` gains `aff`. `parseReferralCookie` takes an optional `now`.
8
+
9
+ ## 0.13.0
10
+ - **New: referral attribution.** A `FapiClient` captures the referral the visitor arrived with and sends it as `referral: { code, click_id, anon_id, consent, captured_at }` on every sign-in / sign-up start (`/v1/client/sign_ups`, `/v1/client/sign_ins`, OAuth / SSO / SAML / native id_token / passkey / wallet starts) and the steps that continue one, when the instance has referrals on. The code comes from the instance's URL parameters (default `ref`, `via`, `aff`) on the current page, the page the SDK loaded on, and their `redirect_url` / `after_url`. The instance's tracking cookie is read only under consent: Cookie Munch on the page decides (the instance's category, else its fallback category); otherwise the new `referralConsent` option (`'granted'` or a function) does. The SDK never writes the cookie. New `FapiClientOptions.referral?: false` (opt out) and `referralConsent?`; page-wide `configureReferralCapture({ referral, referralConsent })`. The config is read from `referrals` in `GET /v1/client/environment` / `GET /v1/appearance` (one read per page; nothing is fetched when there is no query and no config yet).
11
+ - **Referred sign-up challenge.** `fetchInstanceSettings` switches the sign-up and sign-in captcha on when a referral code was captured and the instance's `referrals.challenge_referred_signups` is `always` (as long as a captcha provider is configured). New exports: `referralChallengeRequired`, `withReferralChallenge`, `referralChallengeFlows`, `captureReferral`, `referralConfigFrom`, `parseReferralCookie`, `acceptsReferral`, `seedReferralConfig`, `referralCacheKeyFor`, types `ReferralConfig`, `ReferralCapture`, `ReferralConsent`, `ReferralCaptureOptions`.
12
+ - `FapiClient.post` is now `async` (it already returned a promise).
13
+
3
14
  ## 0.12.0
4
15
  - **New: SDK identity and advisories.** `FapiClientOptions.sdk?: AtlasSdkInfo` (`{ name, version }`, default
5
16
  `@atlasauth/js`) is sent as `X-Atlas-SDK: <name>/<version>`; an `Atlas-SDK-Advisory` response header is logged once
package/dist/fapi.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type AttemptView, type FieldError } from './attempt';
2
2
  import { type AtlasSdkInfo } from './sdk-advisory';
3
+ import { type ReferralCaptureOptions, type ReferralConsent } from './referral';
3
4
  /**
4
5
  * The FAPI client and the sign-in flow driver.
5
6
  *
@@ -33,6 +34,20 @@ export interface FapiClientOptions {
33
34
  * own package; defaults to `@atlasauth/js`.
34
35
  */
35
36
  sdk?: AtlasSdkInfo;
37
+ /**
38
+ * Referral attribution. By default (`'auto'`) a client captures the referral
39
+ * the visitor arrived with (the page's referral script `window.aff`, explicit
40
+ * `ref_*` URL parameters, the instance's URL parameters, then its tracking
41
+ * cookie) and sends it on every sign-in / sign-up start, when the instance
42
+ * has referrals on. `false` turns that off. See `./referral`.
43
+ */
44
+ referral?: false | 'auto';
45
+ /**
46
+ * The app's own consent decision for referral tracking (click and anonymous
47
+ * ids), used only when Cookie Munch is not on the page: `'granted'` (or a
48
+ * function returning it) lets the client send them. Default: code only.
49
+ */
50
+ referralConsent?: ReferralConsent;
36
51
  }
37
52
  /**
38
53
  * A locale tag normalised for the `Accept-Language` header (`pt_BR` → `pt-BR`),
@@ -50,6 +65,10 @@ export interface FapiResponse<T> {
50
65
  export declare class FapiClient {
51
66
  private readonly options;
52
67
  constructor(options: FapiClientOptions);
68
+ /** Which instance's referral config this client shares (one fetch per page). */
69
+ get referralCacheKey(): string;
70
+ /** This client's own referral options (page-wide defaults fill the gaps). */
71
+ get referralOptions(): ReferralCaptureOptions;
53
72
  /** The `Accept-Language` this client sends, or null when it sends none. */
54
73
  get locale(): string | null;
55
74
  /**
package/dist/fapi.js CHANGED
@@ -14,6 +14,7 @@ exports.pollAttempt = pollAttempt;
14
14
  exports.shouldKeepPolling = shouldKeepPolling;
15
15
  const attempt_1 = require("./attempt");
16
16
  const sdk_advisory_1 = require("./sdk-advisory");
17
+ const referral_1 = require("./referral");
17
18
  /**
18
19
  * A locale tag normalised for the `Accept-Language` header (`pt_BR` → `pt-BR`),
19
20
  * or null when it is not a plausible BCP-47 tag. Restricting it to letters,
@@ -30,6 +31,17 @@ class FapiClient {
30
31
  options;
31
32
  constructor(options) {
32
33
  this.options = options;
34
+ // Keep the query this page was opened with: a referral code in it must
35
+ // survive client-side navigation that drops it before the user signs up.
36
+ (0, referral_1.rememberReferralLanding)();
37
+ }
38
+ /** Which instance's referral config this client shares (one fetch per page). */
39
+ get referralCacheKey() {
40
+ return (0, referral_1.referralCacheKeyFor)(this.options.baseUrl, this.options.publishableKey);
41
+ }
42
+ /** This client's own referral options (page-wide defaults fill the gaps). */
43
+ get referralOptions() {
44
+ return { referral: this.options.referral, referralConsent: this.options.referralConsent };
33
45
  }
34
46
  /** The `Accept-Language` this client sends, or null when it sends none. */
35
47
  get locale() {
@@ -92,6 +104,12 @@ class FapiClient {
92
104
  catch {
93
105
  // A 204, or an error page from a proxy. Neither should crash the parse.
94
106
  }
107
+ // Any environment / appearance read also tells referral capture the
108
+ // instance's config, so a page that already loaded it never fetches it again.
109
+ const bare = path.split('?')[0];
110
+ if (response.ok && (init.method ?? 'GET') === 'GET' && (bare === '/v1/client/environment' || bare === '/v1/appearance')) {
111
+ (0, referral_1.seedReferralConfig)(this.referralCacheKey, body);
112
+ }
95
113
  return {
96
114
  ok: response.ok,
97
115
  status: response.status,
@@ -100,10 +118,22 @@ class FapiClient {
100
118
  errors: response.ok ? [] : (0, attempt_1.fieldErrors)(body),
101
119
  };
102
120
  }
103
- post(path, body) {
121
+ async post(path, body) {
122
+ // Referral attribution rides on every sign-in / sign-up start (and on the
123
+ // steps that continue one: the server keeps the first one it is given).
124
+ let payload = body;
125
+ if (payload !== null &&
126
+ typeof payload === 'object' &&
127
+ !Array.isArray(payload) &&
128
+ !('referral' in payload) &&
129
+ (0, referral_1.acceptsReferral)(path)) {
130
+ const referral = await (0, referral_1.currentReferral)(this);
131
+ if (referral)
132
+ payload = { ...payload, referral };
133
+ }
104
134
  return this.request(path, {
105
135
  method: 'POST',
106
- body: body === undefined ? undefined : JSON.stringify(body),
136
+ body: payload === undefined ? undefined : JSON.stringify(payload),
107
137
  });
108
138
  }
109
139
  get(path) {
package/dist/fapi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fapi.js","sourceRoot":"","sources":["../src/fapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fapi.js","sourceRoot":"","sources":["../src/fapi.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from './errors';
10
10
  export * from './redirect';
11
11
  export * from './popup-channel';
12
12
  export * from './fapi';
13
+ export * from './referral';
13
14
  export * from './sdk-advisory';
14
15
  export * from './version';
15
16
  export * from './sign-out-events';
package/dist/index.js CHANGED
@@ -31,6 +31,8 @@ __exportStar(require("./redirect"), exports);
31
31
  // §oauth popup mode: the same-origin hand-back for a popup whose opener was severed.
32
32
  __exportStar(require("./popup-channel"), exports);
33
33
  __exportStar(require("./fapi"), exports);
34
+ // Referral attribution: capture the visitor's referral and send it on sign-up.
35
+ __exportStar(require("./referral"), exports);
34
36
  // SDK version advisories (`X-Atlas-SDK` / `Atlas-SDK-Advisory`).
35
37
  __exportStar(require("./sdk-advisory"), exports);
36
38
  __exportStar(require("./version"), exports);
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,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,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,4CAA0B;AAC1B,mDAAiC;AACjC,kDAAgC;AAChC,sDAAsD;AACtD,wDAAsC;AACtC,+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,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,+EAA+E;AAC/E,6CAA2B;AAC3B,iEAAiE;AACjE,iDAA+B;AAC/B,4CAA0B;AAC1B,yFAAyF;AACzF,oDAAkC;AAClC,2CAAyB;AACzB,mDAAiC;AACjC,4CAA0B;AAC1B,6CAA2B;AAC3B,yCAAuB;AACvB,8CAA4B;AAC5B,2CAAyB;AACzB,4DAA4D;AAC5D,6CAA2B;AAC3B,4CAA0B;AAC1B,mDAAiC;AACjC,kDAAgC;AAChC,sDAAsD;AACtD,wDAAsC;AACtC,+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"}
@@ -65,3 +65,14 @@ export declare function toSignUpInput(values: Record<string, string>, consent: b
65
65
  consent: boolean;
66
66
  captchaToken?: string;
67
67
  };
68
+ /**
69
+ * Referral attribution: the instance requires the bot challenge for a sign-up
70
+ * that carries a referral code, and one was captured on this page. The sign-up
71
+ * form and the sign-in identifier step (a passwordless sign-in to a new
72
+ * address creates the account) then always show the captcha, even when it is
73
+ * otherwise off, as long as the instance has a provider to draw. The server
74
+ * enforces the same rule.
75
+ */
76
+ export declare function withReferralChallenge(settings: InstanceSettings): InstanceSettings;
77
+ /** {@link withReferralChallenge} on a bare `captchaFlows` map. */
78
+ export declare function referralChallengeFlows(flows: Partial<Record<CaptchaFlowKey, FlowCaptcha>>): Partial<Record<CaptchaFlowKey, FlowCaptcha>>;
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.instanceSettingsFrom = instanceSettingsFrom;
4
4
  exports.fetchInstanceSettings = fetchInstanceSettings;
5
5
  exports.toSignUpInput = toSignUpInput;
6
+ exports.withReferralChallenge = withReferralChallenge;
7
+ exports.referralChallengeFlows = referralChallengeFlows;
6
8
  const environment_1 = require("./environment");
9
+ const referral_1 = require("./referral");
7
10
  const NO_LEGAL = { termsUrl: null, privacyUrl: null, required: false };
8
11
  const isRecord = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
9
12
  /**
@@ -55,7 +58,10 @@ function instanceSettingsFrom(body) {
55
58
  async function fetchInstanceSettings(client) {
56
59
  try {
57
60
  const response = await client.get('/v1/appearance');
58
- return response.ok ? instanceSettingsFrom(response.data) : null;
61
+ if (!response.ok)
62
+ return null;
63
+ const settings = instanceSettingsFrom(response.data);
64
+ return (await (0, referral_1.referralChallengeRequired)(client)) ? withReferralChallenge(settings) : settings;
59
65
  }
60
66
  catch {
61
67
  return null;
@@ -76,4 +82,25 @@ function toSignUpInput(values, consent, captchaToken) {
76
82
  fields[key] = value;
77
83
  return { email, password, fields, consent, ...(captchaToken ? { captchaToken } : {}) };
78
84
  }
85
+ /**
86
+ * Referral attribution: the instance requires the bot challenge for a sign-up
87
+ * that carries a referral code, and one was captured on this page. The sign-up
88
+ * form and the sign-in identifier step (a passwordless sign-in to a new
89
+ * address creates the account) then always show the captcha, even when it is
90
+ * otherwise off, as long as the instance has a provider to draw. The server
91
+ * enforces the same rule.
92
+ */
93
+ function withReferralChallenge(settings) {
94
+ return { ...settings, captchaFlows: referralChallengeFlows(settings.captchaFlows) };
95
+ }
96
+ /** {@link withReferralChallenge} on a bare `captchaFlows` map. */
97
+ function referralChallengeFlows(flows) {
98
+ const out = { ...flows };
99
+ for (const key of ['signUp', 'signIn']) {
100
+ const flow = out[key];
101
+ if (flow && flow.provider && !flow.enabled)
102
+ out[key] = { ...flow, enabled: true };
103
+ }
104
+ return out;
105
+ }
79
106
  //# sourceMappingURL=instance-settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instance-settings.js","sourceRoot":"","sources":["../src/instance-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instance-settings.js","sourceRoot":"","sources":["../src/instance-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Referral attribution: capture the referral a visitor arrived with and send it
3
+ * on every sign-in / sign-up start, so the user Atlas creates is attributed to
4
+ * whoever referred them.
5
+ *
6
+ * What is captured, when the instance has referrals on (`referrals` in
7
+ * `GET /v1/client/environment`): ONE source, in precedence order, never
8
+ * mixing fields across sources:
9
+ * 1. the page's referral script, `window.aff.getReferral()`
10
+ * (`{code, clickId, anonId, ts}`), or explicit `ref_*` parameters
11
+ * (`ref`, `ref_click_id`, `ref_anon_id`, `ref_consent`, `ref_captured_at`)
12
+ * on the page URL;
13
+ * 2. the referral code from the page URL — the instance's URL parameters
14
+ * (default `ref`, `via`, `aff`) on the current page, the page the SDK first
15
+ * loaded on, and the `redirect_url` / `after_url` query of either;
16
+ * 3. the referral platform's first-party tracking cookie (the instance's
17
+ * `context_cookie`): JSON or URL-encoded JSON
18
+ * `{code?, clickId?, anonId?, ts?, exp?}`, or a plain click id. An expired
19
+ * cookie is ignored.
20
+ * Click and anonymous ids are sent only with consent; without it only the
21
+ * code goes.
22
+ *
23
+ * Consent: when Cookie Munch is on the page (`window.CookieMunch`), the cookie
24
+ * is read only when the instance's consent category is granted (else its
25
+ * fallback category). Without a consent manager the cookie is read only when
26
+ * the app says its own consent manager allowed it (`referralConsent:
27
+ * 'granted'`). Otherwise the URL code alone is sent. The SDK never writes the
28
+ * cookie. Nothing captured is trusted: the server re-validates every field.
29
+ *
30
+ * Opt out with `referral: false` (per client, or page-wide with
31
+ * {@link configureReferralCapture}). `'auto'` is the default.
32
+ *
33
+ * Redirects to a hosted page or `/oauth2/authorize` carry the same referral as
34
+ * `ref_*` query parameters: {@link signIn} / {@link signUp},
35
+ * {@link withReferralParams} and {@link referralParams}.
36
+ */
37
+ /** The instance's public referral settings, camelCased. */
38
+ export interface ReferralConfig {
39
+ enabled: boolean;
40
+ /** URL query parameters that carry a code, in priority order. */
41
+ urlParams: string[];
42
+ /** The tracking cookie to read under consent; null = never read a cookie. */
43
+ contextCookie: string | null;
44
+ consentCategory: string;
45
+ consentFallbackCategory: string | null;
46
+ /** `always`: a sign-up carrying a referral code must pass the bot challenge. */
47
+ challengeReferredSignups: 'always' | 'inherit';
48
+ /** Public "Invited by" lookup URL template with `{code}`, or null. See {@link lookupReferralCode}. */
49
+ codeLookupUrl: string | null;
50
+ /** The instance shows an optional "Referral code" field on sign-up. */
51
+ signupCodeField: boolean;
52
+ }
53
+ /** The `referral` object a sign-in / sign-up request carries (snake_case, as the API takes it). */
54
+ export interface ReferralCapture {
55
+ code: string | null;
56
+ click_id: string | null;
57
+ anon_id: string | null;
58
+ consent: 'granted' | 'not_required';
59
+ /** ISO 8601. */
60
+ captured_at: string;
61
+ }
62
+ /**
63
+ * The app's own consent decision for the referral cookie, used only when no
64
+ * Cookie Munch is on the page. `'granted'` / `true` allow reading it; anything
65
+ * else does not. A function is asked at each sign-in / sign-up start.
66
+ */
67
+ export type ReferralConsent = 'granted' | 'denied' | boolean | (() => 'granted' | 'denied' | boolean | null | undefined);
68
+ /** The referral options a FAPI client and the prebuilt components take. */
69
+ export interface ReferralCaptureOptions {
70
+ /** `false` turns referral capture off; `'auto'` (the default) captures when the instance has referrals on. */
71
+ referral?: false | 'auto' | undefined;
72
+ /** See {@link ReferralConsent}. */
73
+ referralConsent?: ReferralConsent;
74
+ }
75
+ export declare const DISABLED_REFERRAL_CONFIG: Readonly<ReferralConfig>;
76
+ /** A well-formed code / click id / anonymous id, or null. */
77
+ export declare function referralToken(value: unknown): string | null;
78
+ /**
79
+ * Read the referral config from a `/v1/client/environment` body (or its
80
+ * `referrals` object). Missing or malformed → disabled.
81
+ */
82
+ export declare function referralConfigFrom(body: unknown): ReferralConfig;
83
+ /** The first well-formed code among `params` in a query string. */
84
+ export declare function referralCodeFromSearch(search: string | null | undefined, params: readonly string[]): string | null;
85
+ /** The query strings a code may be in: each search, plus its `redirect_url` / `after_url` targets' queries. */
86
+ export declare function referralSearches(searches: readonly string[], base?: string): string[];
87
+ /** An ISO time from an ISO string or unix seconds / milliseconds, or null. */
88
+ export declare function referralTime(value: unknown): string | null;
89
+ /** One referral source's raw fields. */
90
+ export interface ReferralSourceFields {
91
+ code: string | null;
92
+ clickId: string | null;
93
+ anonId: string | null;
94
+ /** ISO 8601, when the source says when it captured the referral. */
95
+ capturedAt?: string;
96
+ }
97
+ /**
98
+ * Parse a tracking-cookie value: JSON or URL-encoded JSON `{code?, clickId?,
99
+ * anonId?, ts?, exp?}` (snake_case accepted too); a plain value is a click id.
100
+ * `ts` (unix seconds or ms) becomes `capturedAt`; a cookie past its `exp` is
101
+ * ignored.
102
+ */
103
+ export declare function parseReferralCookie(value: string | null | undefined, now?: number): ReferralSourceFields | null;
104
+ /** A cookie's value from a `document.cookie` string, or null. */
105
+ export declare function readCookieValue(cookies: string | null | undefined, name: string): string | null;
106
+ /**
107
+ * Whether the referral cookie may be read. Cookie Munch on the page decides
108
+ * when present (the instance's category, else its fallback category); else
109
+ * the app's own `referralConsent`.
110
+ */
111
+ export declare function referralConsentGranted(config: Pick<ReferralConfig, 'consentCategory' | 'consentFallbackCategory'>, cookieMunch: unknown, appConsent: ReferralConsent | undefined): boolean;
112
+ /** Everything {@link captureReferral} reads from the page. */
113
+ export interface ReferralPage {
114
+ /** Query strings to look in, most relevant first (current page, landing page). */
115
+ searches: readonly string[];
116
+ /** `document.cookie`. */
117
+ cookies?: string | null;
118
+ /** `window.CookieMunch`, if any. */
119
+ cookieMunch?: unknown;
120
+ /** `window.aff`, the page's referral script, if any (`getReferral()` → `{code, clickId, anonId, ts}`). */
121
+ aff?: unknown;
122
+ /** Base for resolving a relative redirect_url. */
123
+ base?: string;
124
+ /** ISO time of capture. */
125
+ capturedAt?: string;
126
+ }
127
+ /** What the page's referral script (`window.aff.getReferral()`) holds, or null. Never throws. */
128
+ export declare function referralFromScript(aff: unknown): ReferralSourceFields | null;
129
+ /** The explicit `ref_*` referral in a query string, or null. `consent` is whether ids may be kept. */
130
+ export declare function explicitReferralFromSearch(search: string | null | undefined): (ReferralSourceFields & {
131
+ consentGranted: boolean;
132
+ }) | null;
133
+ /**
134
+ * Capture the referral for a request, or null when there is nothing to send.
135
+ * Pure. One source wins, in order: the page's referral script, explicit
136
+ * `ref_*` URL parameters, a code in the instance's URL parameters, the
137
+ * tracking cookie. Fields are never mixed across sources. Ids need consent
138
+ * (Cookie Munch, the app's `referralConsent`, or `ref_consent=granted` on an
139
+ * explicit URL).
140
+ */
141
+ export declare function captureReferral(config: ReferralConfig, page: ReferralPage, appConsent?: ReferralConsent): ReferralCapture | null;
142
+ /** Whether a FAPI POST path starts or continues a sign-in / sign-up (and so takes `referral`). */
143
+ export declare function acceptsReferral(path: string): boolean;
144
+ /**
145
+ * Remember the current page's query, so a code the visitor landed with
146
+ * survives client-side navigation that drops it. In memory only (never
147
+ * stored). Called when the SDK loads and whenever a client is created.
148
+ */
149
+ export declare function rememberReferralLanding(): void;
150
+ /**
151
+ * Page-wide referral options, for apps whose framework creates FAPI clients
152
+ * internally: `configureReferralCapture({ referral: false })` opts out,
153
+ * `{ referralConsent: 'granted' }` tells the SDK the app's own consent
154
+ * manager allowed the referral cookie. A client's own options win.
155
+ */
156
+ export declare function configureReferralCapture(options: ReferralCaptureOptions): void;
157
+ /** The page-wide options set with {@link configureReferralCapture}. */
158
+ export declare function referralCaptureDefaults(): ReferralCaptureOptions;
159
+ /** The key an instance's referral config is cached under (a FAPI origin + publishable key). */
160
+ export declare function referralCacheKeyFor(baseUrl: string | null | undefined, publishableKey: string): string;
161
+ /**
162
+ * Record an instance's referral config from a `/v1/client/environment` or
163
+ * `/v1/appearance` body it was fetched with. A body without `referrals` (an
164
+ * older server) is ignored.
165
+ */
166
+ export declare function seedReferralConfig(cacheKey: string, environmentBody: unknown): void;
167
+ /** Forget every cached referral config (tests; an app switching instances). */
168
+ export declare function resetReferralCapture(): void;
169
+ /** What the referral helpers need from a FAPI client. */
170
+ export interface ReferralClient {
171
+ readonly referralCacheKey: string;
172
+ readonly referralOptions: ReferralCaptureOptions;
173
+ get<T>(path: string): Promise<{
174
+ ok: boolean;
175
+ data: T | null;
176
+ }>;
177
+ }
178
+ /** The instance's referral config, fetched once per page (and seeded by any environment read). */
179
+ export declare function loadReferralConfig(client: ReferralClient): Promise<ReferralConfig>;
180
+ /** The referral this client should send now, or null (off, opted out, nothing captured). Never throws. */
181
+ export declare function currentReferral(client: ReferralClient): Promise<ReferralCapture | null>;
182
+ /**
183
+ * Whether a sign-up / sign-in form should show the bot challenge because a
184
+ * referral code was captured and the instance requires it for referred
185
+ * sign-ups (even with the captcha otherwise off).
186
+ */
187
+ export declare function referralChallengeRequired(client: ReferralClient): Promise<boolean>;
188
+ /** Options for {@link referralParams}, {@link withReferralParams}, {@link signIn} and {@link signUp}. */
189
+ export interface ReferralRedirectOptions {
190
+ /** `false`: add nothing. `'auto'` (default): capture as described above. */
191
+ referral?: false | 'auto';
192
+ /**
193
+ * The app's consent for referral tracking (click and anonymous ids). When
194
+ * omitted, the page-wide `referralConsent` applies, else Cookie Munch on the
195
+ * page (`referrals`, else `marketing`), else no consent (code only).
196
+ */
197
+ consent?: ReferralConsent;
198
+ /** The instance's config, when the app has it; defaults to `ref` / `via` / `aff` and no cookie. */
199
+ config?: ReferralConfig;
200
+ }
201
+ /**
202
+ * The referral this page would send, as `ref_*` query parameters (`[]` when
203
+ * there is none). Synchronous: it uses the instance config when one was
204
+ * loaded on this page (or passed), else the default URL parameters. Consent
205
+ * comes from `consent`, else Cookie Munch on the page.
206
+ */
207
+ export declare function referralParams(options?: ReferralRedirectOptions): Array<[string, string]>;
208
+ /** `url` with the page's referral added as `ref_*` parameters (existing ones are kept, never replaced). */
209
+ export declare function withReferralParams(url: string, options?: ReferralRedirectOptions): string;
210
+ /** Where {@link signIn} / {@link signUp} go. */
211
+ export interface HostedRedirectOptions extends ReferralRedirectOptions {
212
+ /**
213
+ * A full URL to go to: a hosted page, `/oauth2/authorize?...`, or your own
214
+ * login route. Wins over `frontendApi`.
215
+ */
216
+ url?: string;
217
+ /** The instance's Frontend API host or origin (e.g. `accounts.example.com`), for its hosted page. */
218
+ frontendApi?: string;
219
+ /** Where the hosted page sends the user afterwards (`redirect_url`). */
220
+ redirectUrl?: string;
221
+ /** `false`: return the URL without navigating. Default true. */
222
+ navigate?: boolean;
223
+ }
224
+ /**
225
+ * Send the visitor to the hosted sign-in page (or `url`), carrying the
226
+ * referral they arrived with as `ref_*` parameters (`referral: 'auto'`, the
227
+ * default). Returns the URL it went to.
228
+ *
229
+ * ```ts
230
+ * signIn({ frontendApi: 'accounts.example.com', redirectUrl: location.href, consent: () => cmp.granted('referrals') });
231
+ * ```
232
+ */
233
+ export declare function signIn(options: HostedRedirectOptions): string;
234
+ /** {@link signIn} for the hosted sign-up page. */
235
+ export declare function signUp(options: HostedRedirectOptions): string;
236
+ /** What a code lookup answers. */
237
+ export interface ReferralCodeLookup {
238
+ valid: boolean;
239
+ partnerDisplayName?: string;
240
+ /** Platform-defined; a string or an object with a `description`. */
241
+ refereeReward?: unknown;
242
+ }
243
+ /**
244
+ * Ask the instance's public code lookup (`code_lookup_url`) about a code, for
245
+ * an "X invited you" line. No credentials, `timeoutMs` (default 3000). Null
246
+ * when there is no lookup, the code is malformed, or the lookup fails: never
247
+ * block a sign-up on it.
248
+ */
249
+ export declare function lookupReferralCode(config: Pick<ReferralConfig, 'codeLookupUrl'> | string | null | undefined, code: string, options?: {
250
+ fetchImpl?: typeof fetch;
251
+ timeoutMs?: number;
252
+ }): Promise<ReferralCodeLookup | null>;
@@ -0,0 +1,653 @@
1
+ "use strict";
2
+ /**
3
+ * Referral attribution: capture the referral a visitor arrived with and send it
4
+ * on every sign-in / sign-up start, so the user Atlas creates is attributed to
5
+ * whoever referred them.
6
+ *
7
+ * What is captured, when the instance has referrals on (`referrals` in
8
+ * `GET /v1/client/environment`): ONE source, in precedence order, never
9
+ * mixing fields across sources:
10
+ * 1. the page's referral script, `window.aff.getReferral()`
11
+ * (`{code, clickId, anonId, ts}`), or explicit `ref_*` parameters
12
+ * (`ref`, `ref_click_id`, `ref_anon_id`, `ref_consent`, `ref_captured_at`)
13
+ * on the page URL;
14
+ * 2. the referral code from the page URL — the instance's URL parameters
15
+ * (default `ref`, `via`, `aff`) on the current page, the page the SDK first
16
+ * loaded on, and the `redirect_url` / `after_url` query of either;
17
+ * 3. the referral platform's first-party tracking cookie (the instance's
18
+ * `context_cookie`): JSON or URL-encoded JSON
19
+ * `{code?, clickId?, anonId?, ts?, exp?}`, or a plain click id. An expired
20
+ * cookie is ignored.
21
+ * Click and anonymous ids are sent only with consent; without it only the
22
+ * code goes.
23
+ *
24
+ * Consent: when Cookie Munch is on the page (`window.CookieMunch`), the cookie
25
+ * is read only when the instance's consent category is granted (else its
26
+ * fallback category). Without a consent manager the cookie is read only when
27
+ * the app says its own consent manager allowed it (`referralConsent:
28
+ * 'granted'`). Otherwise the URL code alone is sent. The SDK never writes the
29
+ * cookie. Nothing captured is trusted: the server re-validates every field.
30
+ *
31
+ * Opt out with `referral: false` (per client, or page-wide with
32
+ * {@link configureReferralCapture}). `'auto'` is the default.
33
+ *
34
+ * Redirects to a hosted page or `/oauth2/authorize` carry the same referral as
35
+ * `ref_*` query parameters: {@link signIn} / {@link signUp},
36
+ * {@link withReferralParams} and {@link referralParams}.
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.DISABLED_REFERRAL_CONFIG = void 0;
40
+ exports.referralToken = referralToken;
41
+ exports.referralConfigFrom = referralConfigFrom;
42
+ exports.referralCodeFromSearch = referralCodeFromSearch;
43
+ exports.referralSearches = referralSearches;
44
+ exports.referralTime = referralTime;
45
+ exports.parseReferralCookie = parseReferralCookie;
46
+ exports.readCookieValue = readCookieValue;
47
+ exports.referralConsentGranted = referralConsentGranted;
48
+ exports.referralFromScript = referralFromScript;
49
+ exports.explicitReferralFromSearch = explicitReferralFromSearch;
50
+ exports.captureReferral = captureReferral;
51
+ exports.acceptsReferral = acceptsReferral;
52
+ exports.rememberReferralLanding = rememberReferralLanding;
53
+ exports.configureReferralCapture = configureReferralCapture;
54
+ exports.referralCaptureDefaults = referralCaptureDefaults;
55
+ exports.referralCacheKeyFor = referralCacheKeyFor;
56
+ exports.seedReferralConfig = seedReferralConfig;
57
+ exports.resetReferralCapture = resetReferralCapture;
58
+ exports.loadReferralConfig = loadReferralConfig;
59
+ exports.currentReferral = currentReferral;
60
+ exports.referralChallengeRequired = referralChallengeRequired;
61
+ exports.referralParams = referralParams;
62
+ exports.withReferralParams = withReferralParams;
63
+ exports.signIn = signIn;
64
+ exports.signUp = signUp;
65
+ exports.lookupReferralCode = lookupReferralCode;
66
+ exports.DISABLED_REFERRAL_CONFIG = Object.freeze({
67
+ enabled: false,
68
+ urlParams: [],
69
+ contextCookie: null,
70
+ consentCategory: 'referrals',
71
+ consentFallbackCategory: 'marketing',
72
+ challengeReferredSignups: 'inherit',
73
+ codeLookupUrl: null,
74
+ signupCodeField: false,
75
+ });
76
+ const TOKEN = /^[A-Za-z0-9_-]{3,64}$/;
77
+ const PARAM = /^[A-Za-z0-9_.-]{1,40}$/;
78
+ const COOKIE_NAME = /^[A-Za-z0-9_.-]{1,64}$/;
79
+ const isRecord = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
80
+ /** A well-formed code / click id / anonymous id, or null. */
81
+ function referralToken(value) {
82
+ if (typeof value !== 'string')
83
+ return null;
84
+ const v = value.trim();
85
+ return TOKEN.test(v) ? v : null;
86
+ }
87
+ /**
88
+ * Read the referral config from a `/v1/client/environment` body (or its
89
+ * `referrals` object). Missing or malformed → disabled.
90
+ */
91
+ function referralConfigFrom(body) {
92
+ const raw = isRecord(body) && isRecord(body.referrals) ? body.referrals : body;
93
+ if (!isRecord(raw) || raw.enabled !== true)
94
+ return { ...exports.DISABLED_REFERRAL_CONFIG, urlParams: [] };
95
+ const params = Array.isArray(raw.url_params)
96
+ ? raw.url_params.filter((p) => typeof p === 'string' && PARAM.test(p)).slice(0, 10)
97
+ : [];
98
+ return {
99
+ enabled: true,
100
+ urlParams: params.length ? params : ['ref', 'via', 'aff'],
101
+ contextCookie: typeof raw.context_cookie === 'string' && COOKIE_NAME.test(raw.context_cookie) ? raw.context_cookie : null,
102
+ consentCategory: typeof raw.consent_category === 'string' && raw.consent_category ? raw.consent_category : 'referrals',
103
+ consentFallbackCategory: typeof raw.consent_fallback_category === 'string' && raw.consent_fallback_category
104
+ ? raw.consent_fallback_category
105
+ : null,
106
+ challengeReferredSignups: raw.challenge_referred_signups === 'always' ? 'always' : 'inherit',
107
+ codeLookupUrl: typeof raw.code_lookup_url === 'string' && /^https?:\/\//i.test(raw.code_lookup_url) && raw.code_lookup_url.includes('{code}')
108
+ ? raw.code_lookup_url
109
+ : null,
110
+ signupCodeField: raw.signup_code_field === true,
111
+ };
112
+ }
113
+ /** The first well-formed code among `params` in a query string. */
114
+ function referralCodeFromSearch(search, params) {
115
+ if (!search)
116
+ return null;
117
+ let query;
118
+ try {
119
+ query = new URLSearchParams(search);
120
+ }
121
+ catch {
122
+ return null;
123
+ }
124
+ for (const name of params) {
125
+ const code = referralToken(query.get(name));
126
+ if (code)
127
+ return code;
128
+ }
129
+ return null;
130
+ }
131
+ /** The query strings a code may be in: each search, plus its `redirect_url` / `after_url` targets' queries. */
132
+ function referralSearches(searches, base) {
133
+ const out = [];
134
+ const add = (s) => {
135
+ if (s && !out.includes(s))
136
+ out.push(s);
137
+ };
138
+ for (const search of searches)
139
+ add(search);
140
+ for (const search of searches) {
141
+ let query;
142
+ try {
143
+ query = new URLSearchParams(search);
144
+ }
145
+ catch {
146
+ continue;
147
+ }
148
+ for (const key of ['redirect_url', 'after_url', 'redirect_url_complete', 'after_sign_up_url', 'after_sign_in_url']) {
149
+ const target = query.get(key);
150
+ if (!target)
151
+ continue;
152
+ try {
153
+ add(new URL(target, base ?? 'https://invalid.example').search);
154
+ }
155
+ catch {
156
+ // not a URL
157
+ }
158
+ }
159
+ }
160
+ return out;
161
+ }
162
+ /** An ISO time from an ISO string or unix seconds / milliseconds, or null. */
163
+ function referralTime(value) {
164
+ if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
165
+ return new Date(value < 1e12 ? value * 1000 : value).toISOString();
166
+ }
167
+ if (typeof value !== 'string' || !value || value.length > 40)
168
+ return null;
169
+ if (/^\d{9,13}$/.test(value))
170
+ return referralTime(Number(value));
171
+ const t = Date.parse(value);
172
+ return Number.isFinite(t) ? new Date(t).toISOString() : null;
173
+ }
174
+ /**
175
+ * Parse a tracking-cookie value: JSON or URL-encoded JSON `{code?, clickId?,
176
+ * anonId?, ts?, exp?}` (snake_case accepted too); a plain value is a click id.
177
+ * `ts` (unix seconds or ms) becomes `capturedAt`; a cookie past its `exp` is
178
+ * ignored.
179
+ */
180
+ function parseReferralCookie(value, now = Date.now()) {
181
+ if (typeof value !== 'string' || !value || value.length > 4096)
182
+ return null;
183
+ let decoded = value;
184
+ try {
185
+ decoded = decodeURIComponent(value);
186
+ }
187
+ catch {
188
+ // keep the raw value
189
+ }
190
+ const json = (s) => {
191
+ if (!s.startsWith('{'))
192
+ return null;
193
+ try {
194
+ const parsed = JSON.parse(s);
195
+ return isRecord(parsed) ? parsed : null;
196
+ }
197
+ catch {
198
+ return null;
199
+ }
200
+ };
201
+ const obj = json(value.trim()) ?? json(decoded.trim());
202
+ if (obj) {
203
+ const exp = referralTime(obj.exp);
204
+ if (exp && Date.parse(exp) <= now)
205
+ return null;
206
+ const out = {
207
+ code: referralToken(obj.code),
208
+ clickId: referralToken(obj.clickId ?? obj.click_id),
209
+ anonId: referralToken(obj.anonId ?? obj.anon_id),
210
+ };
211
+ const ts = referralTime(obj.ts);
212
+ if (ts)
213
+ out.capturedAt = ts;
214
+ return out.code || out.clickId || out.anonId ? out : null;
215
+ }
216
+ const clickId = referralToken(decoded);
217
+ return clickId ? { code: null, clickId, anonId: null } : null;
218
+ }
219
+ /** A cookie's value from a `document.cookie` string, or null. */
220
+ function readCookieValue(cookies, name) {
221
+ if (!cookies)
222
+ return null;
223
+ for (const part of cookies.split(';')) {
224
+ const p = part.trim();
225
+ if (p.startsWith(`${name}=`))
226
+ return p.slice(name.length + 1);
227
+ }
228
+ return null;
229
+ }
230
+ /**
231
+ * Whether the referral cookie may be read. Cookie Munch on the page decides
232
+ * when present (the instance's category, else its fallback category); else
233
+ * the app's own `referralConsent`.
234
+ */
235
+ function referralConsentGranted(config, cookieMunch, appConsent) {
236
+ let consent;
237
+ try {
238
+ consent = isRecord(cookieMunch) || typeof cookieMunch === 'function' ? cookieMunch.consent : undefined;
239
+ }
240
+ catch {
241
+ consent = undefined;
242
+ }
243
+ if (isRecord(consent)) {
244
+ let v = consent[config.consentCategory];
245
+ if (typeof v !== 'boolean' && config.consentFallbackCategory)
246
+ v = consent[config.consentFallbackCategory];
247
+ return v === true;
248
+ }
249
+ let decision = appConsent;
250
+ if (typeof appConsent === 'function') {
251
+ try {
252
+ decision = appConsent();
253
+ }
254
+ catch {
255
+ decision = undefined;
256
+ }
257
+ }
258
+ return decision === 'granted' || decision === true;
259
+ }
260
+ /** The `ref_*` keys that mark a query as carrying an explicit referral (a bare `?ref=` is a landing code). */
261
+ const EXPLICIT_MARKERS = ['ref_click_id', 'ref_anon_id', 'ref_consent', 'ref_captured_at'];
262
+ /** What the page's referral script (`window.aff.getReferral()`) holds, or null. Never throws. */
263
+ function referralFromScript(aff) {
264
+ let r;
265
+ try {
266
+ const get = isRecord(aff) || typeof aff === 'function' ? aff.getReferral : undefined;
267
+ r = typeof get === 'function' ? get.call(aff) : null;
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ if (!isRecord(r))
273
+ return null;
274
+ const out = {
275
+ code: referralToken(r.code),
276
+ clickId: referralToken(r.clickId ?? r.click_id),
277
+ anonId: referralToken(r.anonId ?? r.anon_id),
278
+ };
279
+ const ts = referralTime(r.ts);
280
+ if (ts)
281
+ out.capturedAt = ts;
282
+ return out.code || out.clickId || out.anonId ? out : null;
283
+ }
284
+ /** The explicit `ref_*` referral in a query string, or null. `consent` is whether ids may be kept. */
285
+ function explicitReferralFromSearch(search) {
286
+ if (!search)
287
+ return null;
288
+ let query;
289
+ try {
290
+ query = new URLSearchParams(search);
291
+ }
292
+ catch {
293
+ return null;
294
+ }
295
+ if (!EXPLICIT_MARKERS.some((k) => query.get(k) !== null))
296
+ return null;
297
+ const granted = query.get('ref_consent') === 'granted';
298
+ const out = {
299
+ code: referralToken(query.get('ref')),
300
+ clickId: referralToken(query.get('ref_click_id')),
301
+ anonId: referralToken(query.get('ref_anon_id')),
302
+ consentGranted: granted,
303
+ };
304
+ const at = referralTime(query.get('ref_captured_at'));
305
+ if (at)
306
+ out.capturedAt = at;
307
+ return out.code || out.clickId || out.anonId ? out : null;
308
+ }
309
+ /** One source as the API's `referral` object: ids only with consent; null when nothing usable remains. */
310
+ function asCapture(source, consent, capturedAt) {
311
+ const ids = consent && !!(source.clickId || source.anonId);
312
+ const out = {
313
+ code: source.code,
314
+ click_id: ids ? source.clickId : null,
315
+ anon_id: ids ? source.anonId : null,
316
+ consent: ids ? 'granted' : 'not_required',
317
+ captured_at: source.capturedAt ?? capturedAt,
318
+ };
319
+ return out.code || out.click_id || out.anon_id ? out : null;
320
+ }
321
+ /**
322
+ * Capture the referral for a request, or null when there is nothing to send.
323
+ * Pure. One source wins, in order: the page's referral script, explicit
324
+ * `ref_*` URL parameters, a code in the instance's URL parameters, the
325
+ * tracking cookie. Fields are never mixed across sources. Ids need consent
326
+ * (Cookie Munch, the app's `referralConsent`, or `ref_consent=granted` on an
327
+ * explicit URL).
328
+ */
329
+ function captureReferral(config, page, appConsent) {
330
+ if (!config.enabled)
331
+ return null;
332
+ const at = page.capturedAt ?? new Date().toISOString();
333
+ let consent;
334
+ const consented = () => (consent ??= referralConsentGranted(config, page.cookieMunch, appConsent));
335
+ const script = referralFromScript(page.aff);
336
+ if (script) {
337
+ const out = asCapture(script, consented(), at);
338
+ if (out)
339
+ return out;
340
+ }
341
+ const searches = referralSearches(page.searches, page.base);
342
+ for (const search of searches) {
343
+ const explicit = explicitReferralFromSearch(search);
344
+ if (!explicit)
345
+ continue;
346
+ const out = asCapture(explicit, explicit.consentGranted || consented(), at);
347
+ if (out)
348
+ return out;
349
+ }
350
+ for (const search of searches) {
351
+ const code = referralCodeFromSearch(search, config.urlParams);
352
+ if (code)
353
+ return { code, click_id: null, anon_id: null, consent: 'not_required', captured_at: at };
354
+ }
355
+ const cookie = config.contextCookie ? parseReferralCookie(readCookieValue(page.cookies, config.contextCookie)) : null;
356
+ return cookie ? asCapture(cookie, consented(), at) : null;
357
+ }
358
+ /** The FAPI POST paths that take `referral`: every sign-in / sign-up start and the steps that continue one. */
359
+ const REFERRAL_EXACT = new Set([
360
+ '/v1/client/sign_ups',
361
+ '/v1/client/sign_ins',
362
+ '/v1/client/sign_ins/oauth',
363
+ '/v1/client/sign_ins/sso',
364
+ '/v1/client/sign_ins/saml',
365
+ '/v1/client/sign_ins/discourse',
366
+ '/v1/client/sign_ins/id_token',
367
+ '/v1/client/sign_ins/id_token/nonce',
368
+ '/v1/client/sign_ins/external_jwt',
369
+ '/v1/client/sign_ins/ldap',
370
+ '/v1/client/sign_ins/passkey/finish',
371
+ '/v1/oauth/telegram',
372
+ '/v1/oauth/siwe/nonce',
373
+ '/v1/oauth/siwe/verify',
374
+ '/v1/oauth/siws/nonce',
375
+ '/v1/oauth/siws/verify',
376
+ '/v1/oauth/siwf/nonce',
377
+ '/v1/oauth/siwf/verify',
378
+ ]);
379
+ const REFERRAL_STEP = /^\/v1\/client\/(sign_ins\/[^/]+\/(prepare_first_factor|attempt_first_factor)|sign_ups\/[^/]+\/(prepare_verification|attempt_verification))$/;
380
+ /** Whether a FAPI POST path starts or continues a sign-in / sign-up (and so takes `referral`). */
381
+ function acceptsReferral(path) {
382
+ const p = path.split('?')[0] ?? path;
383
+ return REFERRAL_EXACT.has(p) || REFERRAL_STEP.test(p);
384
+ }
385
+ const browser = () => typeof window === 'undefined' ? null : window;
386
+ /** The query strings the page has shown since the SDK loaded (the landing query first). */
387
+ const landingSearches = [];
388
+ let landingAt = null;
389
+ /**
390
+ * Remember the current page's query, so a code the visitor landed with
391
+ * survives client-side navigation that drops it. In memory only (never
392
+ * stored). Called when the SDK loads and whenever a client is created.
393
+ */
394
+ function rememberReferralLanding() {
395
+ const search = browser()?.location?.search;
396
+ if (!search || landingSearches.includes(search))
397
+ return;
398
+ landingSearches.push(search);
399
+ landingAt ??= new Date().toISOString();
400
+ }
401
+ rememberReferralLanding();
402
+ let pageOptions = {};
403
+ /**
404
+ * Page-wide referral options, for apps whose framework creates FAPI clients
405
+ * internally: `configureReferralCapture({ referral: false })` opts out,
406
+ * `{ referralConsent: 'granted' }` tells the SDK the app's own consent
407
+ * manager allowed the referral cookie. A client's own options win.
408
+ */
409
+ function configureReferralCapture(options) {
410
+ pageOptions = { ...options };
411
+ }
412
+ /** The page-wide options set with {@link configureReferralCapture}. */
413
+ function referralCaptureDefaults() {
414
+ return pageOptions;
415
+ }
416
+ const configs = new Map();
417
+ /** The key an instance's referral config is cached under (a FAPI origin + publishable key). */
418
+ function referralCacheKeyFor(baseUrl, publishableKey) {
419
+ return `${baseUrl ?? ''}|${publishableKey}`;
420
+ }
421
+ /**
422
+ * Record an instance's referral config from a `/v1/client/environment` or
423
+ * `/v1/appearance` body it was fetched with. A body without `referrals` (an
424
+ * older server) is ignored.
425
+ */
426
+ function seedReferralConfig(cacheKey, environmentBody) {
427
+ if (!isRecord(environmentBody) || !('referrals' in environmentBody))
428
+ return;
429
+ configs.set(cacheKey, Promise.resolve(referralConfigFrom(environmentBody)));
430
+ }
431
+ /** Forget every cached referral config (tests; an app switching instances). */
432
+ function resetReferralCapture() {
433
+ configs.clear();
434
+ landingSearches.length = 0;
435
+ landingAt = null;
436
+ pageOptions = {};
437
+ }
438
+ /** The instance's referral config, fetched once per page (and seeded by any environment read). */
439
+ function loadReferralConfig(client) {
440
+ let pending = configs.get(client.referralCacheKey);
441
+ if (!pending) {
442
+ const key = client.referralCacheKey;
443
+ // A failed read reads as "off" for this start and is not cached, so a later
444
+ // start asks again.
445
+ const failed = () => {
446
+ if (configs.get(key) === pending)
447
+ configs.delete(key);
448
+ return { ...exports.DISABLED_REFERRAL_CONFIG, urlParams: [] };
449
+ };
450
+ pending = client
451
+ .get('/v1/client/environment')
452
+ .then((r) => (r.ok ? referralConfigFrom(r.data) : failed()))
453
+ .catch(failed);
454
+ configs.set(key, pending);
455
+ }
456
+ return pending;
457
+ }
458
+ /**
459
+ * No config yet (no environment / appearance read on this page) and no query
460
+ * anywhere to find a code in: nothing to send, and no reason to ask the
461
+ * server. A cookie-only referral is sent once a prebuilt form (or any
462
+ * environment read) has loaded the config.
463
+ */
464
+ function worthAsking(client) {
465
+ const win = browser();
466
+ return (configs.has(client.referralCacheKey) ||
467
+ !!win?.location?.search ||
468
+ landingSearches.length > 0 ||
469
+ referralFromScript(win?.aff) !== null);
470
+ }
471
+ function effectiveOptions(client) {
472
+ const own = client.referralOptions;
473
+ return {
474
+ referral: own.referral ?? pageOptions.referral,
475
+ referralConsent: own.referralConsent ?? pageOptions.referralConsent,
476
+ };
477
+ }
478
+ /** The referral this client should send now, or null (off, opted out, nothing captured). Never throws. */
479
+ async function currentReferral(client) {
480
+ const win = browser();
481
+ if (!win)
482
+ return null;
483
+ const options = effectiveOptions(client);
484
+ if (options.referral === false)
485
+ return null;
486
+ try {
487
+ const current = win.location?.search ?? '';
488
+ if (!worthAsking(client))
489
+ return null;
490
+ const config = await loadReferralConfig(client);
491
+ if (!config.enabled)
492
+ return null;
493
+ return captureReferral(config, {
494
+ searches: [current, ...landingSearches],
495
+ cookies: win.document?.cookie ?? null,
496
+ cookieMunch: win.CookieMunch,
497
+ aff: win.aff,
498
+ base: win.location?.href,
499
+ capturedAt: landingAt ?? undefined,
500
+ }, options.referralConsent);
501
+ }
502
+ catch {
503
+ return null;
504
+ }
505
+ }
506
+ /**
507
+ * Whether a sign-up / sign-in form should show the bot challenge because a
508
+ * referral code was captured and the instance requires it for referred
509
+ * sign-ups (even with the captcha otherwise off).
510
+ */
511
+ async function referralChallengeRequired(client) {
512
+ if (!browser() || effectiveOptions(client).referral === false || !worthAsking(client))
513
+ return false;
514
+ try {
515
+ const config = await loadReferralConfig(client);
516
+ if (config.challengeReferredSignups !== 'always')
517
+ return false;
518
+ const ref = await currentReferral(client);
519
+ return !!ref?.code;
520
+ }
521
+ catch {
522
+ return false;
523
+ }
524
+ }
525
+ /**
526
+ * The referral this page would send, as `ref_*` query parameters (`[]` when
527
+ * there is none). Synchronous: it uses the instance config when one was
528
+ * loaded on this page (or passed), else the default URL parameters. Consent
529
+ * comes from `consent`, else Cookie Munch on the page.
530
+ */
531
+ function referralParams(options = {}) {
532
+ const win = browser();
533
+ if (!win || options.referral === false || pageOptions.referral === false)
534
+ return [];
535
+ try {
536
+ const config = options.config?.enabled
537
+ ? options.config
538
+ : { ...exports.DISABLED_REFERRAL_CONFIG, enabled: true, urlParams: ['ref', 'via', 'aff'] };
539
+ const ref = captureReferral(config, {
540
+ searches: [win.location?.search ?? '', ...landingSearches],
541
+ cookies: win.document?.cookie ?? null,
542
+ cookieMunch: win.CookieMunch,
543
+ aff: win.aff,
544
+ base: win.location?.href,
545
+ capturedAt: landingAt ?? undefined,
546
+ }, options.consent ?? pageOptions.referralConsent);
547
+ if (!ref)
548
+ return [];
549
+ const out = [];
550
+ if (ref.code)
551
+ out.push(['ref', ref.code]);
552
+ if (ref.click_id)
553
+ out.push(['ref_click_id', ref.click_id]);
554
+ if (ref.anon_id)
555
+ out.push(['ref_anon_id', ref.anon_id]);
556
+ out.push(['ref_consent', ref.consent]);
557
+ out.push(['ref_captured_at', ref.captured_at]);
558
+ return out;
559
+ }
560
+ catch {
561
+ return [];
562
+ }
563
+ }
564
+ /** `url` with the page's referral added as `ref_*` parameters (existing ones are kept, never replaced). */
565
+ function withReferralParams(url, options = {}) {
566
+ const params = referralParams(options);
567
+ if (!params.length)
568
+ return url;
569
+ let u;
570
+ try {
571
+ u = new URL(url, browser()?.location?.href ?? undefined);
572
+ }
573
+ catch {
574
+ return url;
575
+ }
576
+ for (const [k, v] of params)
577
+ if (!u.searchParams.has(k))
578
+ u.searchParams.set(k, v);
579
+ return u.toString();
580
+ }
581
+ function hostedUrl(page, options) {
582
+ if (options.url)
583
+ return options.url;
584
+ if (!options.frontendApi)
585
+ throw new Error('signIn/signUp need url or frontendApi');
586
+ const origin = /^https?:\/\//i.test(options.frontendApi) ? options.frontendApi : `https://${options.frontendApi}`;
587
+ const u = new URL(`/hosted/${page}`, origin);
588
+ if (options.redirectUrl)
589
+ u.searchParams.set('redirect_url', options.redirectUrl);
590
+ return u.toString();
591
+ }
592
+ function go(page, options) {
593
+ const target = withReferralParams(hostedUrl(page, options), options);
594
+ if (options.navigate !== false)
595
+ browser()?.location?.assign?.(target);
596
+ return target;
597
+ }
598
+ /**
599
+ * Send the visitor to the hosted sign-in page (or `url`), carrying the
600
+ * referral they arrived with as `ref_*` parameters (`referral: 'auto'`, the
601
+ * default). Returns the URL it went to.
602
+ *
603
+ * ```ts
604
+ * signIn({ frontendApi: 'accounts.example.com', redirectUrl: location.href, consent: () => cmp.granted('referrals') });
605
+ * ```
606
+ */
607
+ function signIn(options) {
608
+ return go('sign-in', options);
609
+ }
610
+ /** {@link signIn} for the hosted sign-up page. */
611
+ function signUp(options) {
612
+ return go('sign-up', options);
613
+ }
614
+ /**
615
+ * Ask the instance's public code lookup (`code_lookup_url`) about a code, for
616
+ * an "X invited you" line. No credentials, `timeoutMs` (default 3000). Null
617
+ * when there is no lookup, the code is malformed, or the lookup fails: never
618
+ * block a sign-up on it.
619
+ */
620
+ async function lookupReferralCode(config, code, options = {}) {
621
+ const template = typeof config === 'string' ? config : config?.codeLookupUrl;
622
+ const token = referralToken(code);
623
+ const f = options.fetchImpl ?? (typeof fetch === 'function' ? fetch : undefined);
624
+ if (!template || !token || !f)
625
+ return null;
626
+ const ctrl = typeof AbortController === 'function' ? new AbortController() : null;
627
+ const timer = setTimeout(() => ctrl?.abort(), options.timeoutMs ?? 3000);
628
+ try {
629
+ const res = await f(template.split('{code}').join(encodeURIComponent(token)), {
630
+ method: 'GET',
631
+ credentials: 'omit',
632
+ headers: { accept: 'application/json' },
633
+ signal: ctrl?.signal,
634
+ });
635
+ if (!res.ok)
636
+ return null;
637
+ const body = (await res.json());
638
+ if (!isRecord(body) || typeof body.valid !== 'boolean')
639
+ return null;
640
+ return {
641
+ valid: body.valid,
642
+ ...(typeof body.partnerDisplayName === 'string' ? { partnerDisplayName: body.partnerDisplayName } : {}),
643
+ ...(body.refereeReward !== undefined ? { refereeReward: body.refereeReward } : {}),
644
+ };
645
+ }
646
+ catch {
647
+ return null;
648
+ }
649
+ finally {
650
+ clearTimeout(timer);
651
+ }
652
+ }
653
+ //# sourceMappingURL=referral.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral.js","sourceRoot":"","sources":["../src/referral.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.12.0";
7
+ export declare const ATLAS_JS_VERSION = "0.14.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.12.0';
10
+ exports.ATLAS_JS_VERSION = '0.14.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.12.0",
3
+ "version": "0.14.0",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "devDependencies": {