@growth-labs/auth 0.7.4 → 0.7.5
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAEpF,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3D,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,QAAQ,EAAE,MAAM,CAAA;CAChB;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAEpF,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3D,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,QAAQ,EAAE,MAAM,CAAA;CAChB;AAiBD,wBAAsB,aAAa,CAClC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACzD,qBAAqB,CAEvB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGpF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,kBAAkB,GAAG,iBAAiB,CAE/F;AAED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,OAAO,CAGzF;AAED,wBAAsB,cAAc,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAChC,OAAO,CAAC,IAAI,CAAC,CAEf;AAKD,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|
package/dist/utils/analytics.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
let resolved = false;
|
|
3
|
-
let resolvePromise = null;
|
|
4
|
-
const ANALYTICS_UTILS_MODULE = '@growth-labs/analytics/utils';
|
|
1
|
+
import { trackServerEvent } from '@growth-labs/analytics/utils';
|
|
5
2
|
const AUTH_PROVIDERS = new Set(['google', 'email-code', 'password']);
|
|
6
3
|
const AUTH_FAILURE_REASONS = new Set([
|
|
7
4
|
'auth_failed',
|
|
@@ -16,40 +13,15 @@ const AUTH_FAILURE_REASONS = new Set([
|
|
|
16
13
|
'send_failed',
|
|
17
14
|
'token_exchange_failed',
|
|
18
15
|
]);
|
|
19
|
-
async function importOptionalModule(modulePath) {
|
|
20
|
-
try {
|
|
21
|
-
return (await import(/* @vite-ignore */ modulePath));
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
async function resolveAnalytics() {
|
|
28
|
-
if (resolved)
|
|
29
|
-
return;
|
|
30
|
-
if (!resolvePromise) {
|
|
31
|
-
resolvePromise = (async () => {
|
|
32
|
-
const mod = await importOptionalModule(ANALYTICS_UTILS_MODULE);
|
|
33
|
-
let candidate;
|
|
34
|
-
try {
|
|
35
|
-
candidate = mod?.trackServerEvent;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
candidate = undefined;
|
|
39
|
-
}
|
|
40
|
-
if (typeof candidate === 'function') {
|
|
41
|
-
trackFn = candidate;
|
|
42
|
-
}
|
|
43
|
-
resolved = true;
|
|
44
|
-
})();
|
|
45
|
-
}
|
|
46
|
-
await resolvePromise;
|
|
47
|
-
}
|
|
48
16
|
export async function emitAuthEvent(context, eventName, data) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
17
|
+
// Bind via static import so wrangler/esbuild bundles the target at build
|
|
18
|
+
// time. The previous variable-path dynamic import (await import(modulePath))
|
|
19
|
+
// could not be statically analyzed; in Cloudflare Workers the bundle did
|
|
20
|
+
// not include @growth-labs/analytics/utils, the runtime resolved null, and
|
|
21
|
+
// every auth event silently no-op'd — surfaced post-2026-05-22 as
|
|
22
|
+
// `signup_completed` / `login_completed` rows never landing in
|
|
23
|
+
// gl_conversion_events on the new Fronts Worker. See peerDependency.
|
|
24
|
+
await trackServerEvent(context, eventName, data);
|
|
53
25
|
}
|
|
54
26
|
export function normalizeAuthProvider(provider) {
|
|
55
27
|
return provider && AUTH_PROVIDERS.has(provider) ? provider : 'unknown';
|
|
@@ -84,9 +56,10 @@ export function analyticsAvailable(context) {
|
|
|
84
56
|
export async function trackAuthEvent(context, eventName, data = {}) {
|
|
85
57
|
return emitAuthEvent(context, eventName, data);
|
|
86
58
|
}
|
|
59
|
+
// Test-only export retained for compatibility with existing tests that reset
|
|
60
|
+
// internal state between runs. Now a no-op since there's no internal state
|
|
61
|
+
// to reset — trackFn is the bound static import.
|
|
87
62
|
export function _resetAnalytics() {
|
|
88
|
-
|
|
89
|
-
resolved = false;
|
|
90
|
-
resolvePromise = null;
|
|
63
|
+
// noop
|
|
91
64
|
}
|
|
92
65
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/utils/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAiB/D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;AACpE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACpC,aAAa;IACb,qBAAqB;IACrB,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,uBAAuB;CACvB,CAAC,CAAA;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAAgB,EAChB,SAAiB,EACjB,IAA6B;IAE7B,yEAAyE;IACzE,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,kEAAkE;IAClE,+DAA+D;IAC/D,qEAAqE;IACrE,MAAM,gBAAgB,CAAC,OAAiD,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAC3F,CAAC;AAED,MAAM,UAAU,qBAAqB,CACpC,QAA2D;IAE3D,OAAO,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,QAAkC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiC;IAC3E,IAAI,MAAM,KAAK,eAAe;QAAE,OAAO,cAAc,CAAA;IACrD,OAAO,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAkB;IACtD,OAAO,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAgB,EAChB,KAA4B;IAE5B,OAAO,aAAa,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACpE,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,gBAAgB,EAAE,KAAK,CAAC,cAAc;KACtC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAAgB,EAChB,KAA4B;IAE5B,OAAO,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5C,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC/C,MAAM,EAAE,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC;QAChD,SAAS,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA6C;IAC/E,KAAK,OAAO,CAAA;IACZ,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,OAAgB,EAChB,SAAiB,EACjB,OAAgC,EAAE;IAElC,OAAO,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,iDAAiD;AACjD,MAAM,UAAU,eAAe;IAC9B,OAAO;AACR,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@growth-labs/auth",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -46,12 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"astro": "^6.1.10",
|
|
49
|
-
"@growth-labs/analytics": ">=0.
|
|
50
|
-
},
|
|
51
|
-
"peerDependenciesMeta": {
|
|
52
|
-
"@growth-labs/analytics": {
|
|
53
|
-
"optional": true
|
|
54
|
-
}
|
|
49
|
+
"@growth-labs/analytics": ">=0.5.1"
|
|
55
50
|
},
|
|
56
51
|
"dependencies": {
|
|
57
52
|
"zod": "^3.23.0",
|
package/src/utils/analytics.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { trackServerEvent } from '@growth-labs/analytics/utils'
|
|
2
2
|
|
|
3
3
|
export type AuthAnalyticsProvider = 'google' | 'email-code' | 'password' | 'unknown'
|
|
4
4
|
|
|
@@ -15,10 +15,6 @@ export interface AuthFailureEventInput {
|
|
|
15
15
|
authPath: string
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
let trackFn: TrackFn | null = null
|
|
19
|
-
let resolved = false
|
|
20
|
-
let resolvePromise: Promise<void> | null = null
|
|
21
|
-
const ANALYTICS_UTILS_MODULE = '@growth-labs/analytics/utils'
|
|
22
18
|
const AUTH_PROVIDERS = new Set(['google', 'email-code', 'password'])
|
|
23
19
|
const AUTH_FAILURE_REASONS = new Set([
|
|
24
20
|
'auth_failed',
|
|
@@ -34,42 +30,19 @@ const AUTH_FAILURE_REASONS = new Set([
|
|
|
34
30
|
'token_exchange_failed',
|
|
35
31
|
])
|
|
36
32
|
|
|
37
|
-
async function importOptionalModule(modulePath: string): Promise<Record<string, unknown> | null> {
|
|
38
|
-
try {
|
|
39
|
-
return (await import(/* @vite-ignore */ modulePath)) as Record<string, unknown>
|
|
40
|
-
} catch {
|
|
41
|
-
return null
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async function resolveAnalytics(): Promise<void> {
|
|
46
|
-
if (resolved) return
|
|
47
|
-
if (!resolvePromise) {
|
|
48
|
-
resolvePromise = (async () => {
|
|
49
|
-
const mod = await importOptionalModule(ANALYTICS_UTILS_MODULE)
|
|
50
|
-
let candidate: unknown
|
|
51
|
-
try {
|
|
52
|
-
candidate = mod?.trackServerEvent
|
|
53
|
-
} catch {
|
|
54
|
-
candidate = undefined
|
|
55
|
-
}
|
|
56
|
-
if (typeof candidate === 'function') {
|
|
57
|
-
trackFn = candidate as TrackFn
|
|
58
|
-
}
|
|
59
|
-
resolved = true
|
|
60
|
-
})()
|
|
61
|
-
}
|
|
62
|
-
await resolvePromise
|
|
63
|
-
}
|
|
64
|
-
|
|
65
33
|
export async function emitAuthEvent(
|
|
66
34
|
context: unknown,
|
|
67
35
|
eventName: string,
|
|
68
36
|
data: Record<string, unknown>,
|
|
69
37
|
): Promise<void> {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
38
|
+
// Bind via static import so wrangler/esbuild bundles the target at build
|
|
39
|
+
// time. The previous variable-path dynamic import (await import(modulePath))
|
|
40
|
+
// could not be statically analyzed; in Cloudflare Workers the bundle did
|
|
41
|
+
// not include @growth-labs/analytics/utils, the runtime resolved null, and
|
|
42
|
+
// every auth event silently no-op'd — surfaced post-2026-05-22 as
|
|
43
|
+
// `signup_completed` / `login_completed` rows never landing in
|
|
44
|
+
// gl_conversion_events on the new Fronts Worker. See peerDependency.
|
|
45
|
+
await trackServerEvent(context as Parameters<typeof trackServerEvent>[0], eventName, data)
|
|
73
46
|
}
|
|
74
47
|
|
|
75
48
|
export function normalizeAuthProvider(
|
|
@@ -123,8 +96,9 @@ export async function trackAuthEvent(
|
|
|
123
96
|
return emitAuthEvent(context, eventName, data)
|
|
124
97
|
}
|
|
125
98
|
|
|
99
|
+
// Test-only export retained for compatibility with existing tests that reset
|
|
100
|
+
// internal state between runs. Now a no-op since there's no internal state
|
|
101
|
+
// to reset — trackFn is the bound static import.
|
|
126
102
|
export function _resetAnalytics(): void {
|
|
127
|
-
|
|
128
|
-
resolved = false
|
|
129
|
-
resolvePromise = null
|
|
103
|
+
// noop
|
|
130
104
|
}
|