fix(web): remove openpanel and fix ssr manifest
This commit is contained in:
parent
ef1c755125
commit
338164b68c
|
|
@ -29,8 +29,6 @@ env:
|
|||
VITE_WEB_URL: ${{ vars.VITE_WEB_URL }}
|
||||
VITE_API_URL: ${{ vars.VITE_API_URL }}
|
||||
VITE_SENTRY_DSN: ${{ vars.VITE_SENTRY_DSN }}
|
||||
VITE_OPENPANEL_CLIENT_ID: ${{ vars.VITE_OPENPANEL_CLIENT_ID }}
|
||||
VITE_OPENPANEL_API_URL: ${{ vars.VITE_OPENPANEL_API_URL }}
|
||||
VITE_FIREBASE_CONFIG: ${{ vars.VITE_FIREBASE_CONFIG }}
|
||||
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
||||
NODE_OPTIONS: --max-old-space-size=8192
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
env:
|
||||
VITE_SENTRY_DSN: ${{ vars.VITE_SENTRY_DSN }}
|
||||
VITE_OPENPANEL_CLIENT_ID: ${{ vars.VITE_OPENPANEL_CLIENT_ID }}
|
||||
VITE_OPENPANEL_API_URL: ${{ vars.VITE_OPENPANEL_API_URL }}
|
||||
VITE_FIREBASE_CONFIG: ${{ vars.VITE_FIREBASE_CONFIG }}
|
||||
strategy:
|
||||
matrix:
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ VITE_IMGPROXY_URL=http://localhost:2873
|
|||
VITE_SENTRY_DSN=
|
||||
VITE_BUILD_TYPE=production
|
||||
VITE_INBOXES_EMAIL=@follow.re
|
||||
VITE_OPENPANEL_CLIENT_ID=
|
||||
VITE_OPENPANEL_API_URL=
|
||||
|
||||
VITE_EDITOR=cursor
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
"@follow-app/readability": "workspace:*",
|
||||
"@follow/shared": "workspace:*",
|
||||
"@follow/utils": "workspace:*",
|
||||
"@openpanel/web": "1.0.7",
|
||||
"builder-util-runtime": "9.5.1",
|
||||
"electron-context-menu": "4.1.1",
|
||||
"electron-ipc-decorator": "0.2.0",
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
import { env } from "@follow/shared/env.desktop"
|
||||
import { OpenPanel } from "@openpanel/web"
|
||||
import { app } from "electron"
|
||||
|
||||
import { DEVICE_ID } from "~/constants/system"
|
||||
|
||||
export const op = new OpenPanel({
|
||||
clientId: env.VITE_OPENPANEL_CLIENT_ID ?? "",
|
||||
trackScreenViews: false,
|
||||
trackOutgoingLinks: false,
|
||||
trackAttributes: false,
|
||||
trackHashChanges: false,
|
||||
apiUrl: env.VITE_OPENPANEL_API_URL,
|
||||
})
|
||||
|
||||
op.setGlobalProperties({
|
||||
device_id: DEVICE_ID,
|
||||
app_version: app.getVersion(),
|
||||
build: "electron",
|
||||
})
|
||||
|
|
@ -23,7 +23,6 @@ import { AppManager } from "./app"
|
|||
|
||||
const apiURL = process.env["VITE_API_URL"] || import.meta.env.VITE_API_URL
|
||||
const buildSafeHeaders = createBuildSafeHeaders(env.VITE_WEB_URL, [
|
||||
env.VITE_OPENPANEL_API_URL || "",
|
||||
IMAGE_PROXY_URL,
|
||||
env.VITE_API_URL,
|
||||
"https://readwise.io",
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
"@lexical/markdown": "0.40.0",
|
||||
"@lexical/react": "0.40.0",
|
||||
"@number-flow/react": "0.5.11",
|
||||
"@openpanel/web": "1.0.7",
|
||||
"@radix-ui/react-avatar": "1.1.11",
|
||||
"@radix-ui/react-context-menu": "2.2.16",
|
||||
"@radix-ui/react-dialog": "1.1.15",
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
import { env } from "@follow/shared/env.desktop"
|
||||
import { OpenPanel } from "@openpanel/web"
|
||||
|
||||
export const op = new OpenPanel({
|
||||
clientId: env.VITE_OPENPANEL_CLIENT_ID ?? "",
|
||||
trackScreenViews: true,
|
||||
trackOutgoingLinks: true,
|
||||
trackAttributes: true,
|
||||
apiUrl: env.VITE_OPENPANEL_API_URL,
|
||||
})
|
||||
|
|
@ -290,8 +290,6 @@ export default ({ mode }) => {
|
|||
"@tanstack/query-sync-storage-persister",
|
||||
],
|
||||
["tldts"],
|
||||
|
||||
["@openpanel/web"],
|
||||
["zod", "react-hook-form", "@hookform/resolvers"],
|
||||
]),
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@
|
|||
"@follow/utils": "workspace:*",
|
||||
"@gorhom/portal": "1.0.14",
|
||||
"@hookform/resolvers": "5.2.2",
|
||||
"@openpanel/sdk": "1.0.4",
|
||||
"@react-native-community/image-editor": "4.3.0",
|
||||
"@react-native-firebase/analytics": "22.2.1",
|
||||
"@react-native-firebase/app": "22.2.1",
|
||||
|
|
|
|||
|
|
@ -35,14 +35,4 @@ export const initAnalytics = async () => {
|
|||
if (user) {
|
||||
tracker.identify(user as AuthUser)
|
||||
}
|
||||
|
||||
// op.setGlobalProperties({
|
||||
// build: "rn",
|
||||
// version: nativeApplicationVersion,
|
||||
// buildId: nativeBuildVersion,
|
||||
// })
|
||||
|
||||
// op.setHeaders({
|
||||
// "User-Agent": await getUserAgent(),
|
||||
// })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
import { OpenPanel } from "@follow/tracker/src/op"
|
||||
|
||||
import { proxyEnv } from "./proxy-env"
|
||||
|
||||
export const op = new OpenPanel({
|
||||
clientId: proxyEnv.OPENPANEL_CLIENT_ID ?? "",
|
||||
apiUrl: proxyEnv.OPENPANEL_API_URL,
|
||||
headers: {
|
||||
Origin: "https://app.folo.is",
|
||||
},
|
||||
sdk: "react-native",
|
||||
sdkVersion: "1.0.0",
|
||||
})
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
import { env } from "@follow/shared/env.ssr"
|
||||
import { setOpenPanelTracker } from "@follow/tracker"
|
||||
|
||||
import { op } from "./op"
|
||||
|
||||
export const initAnalytics = () => {
|
||||
if (env.VITE_OPENPANEL_CLIENT_ID === undefined) return
|
||||
|
||||
setOpenPanelTracker(op)
|
||||
op.setGlobalProperties({
|
||||
build: "external-web",
|
||||
hash: GIT_COMMIT_SHA,
|
||||
})
|
||||
}
|
||||
|
|
@ -1,11 +1,9 @@
|
|||
import { initI18n } from "@client/i18n"
|
||||
import { initializeDayjs } from "@follow/components/dayjs"
|
||||
|
||||
import { initAnalytics } from "./analytics"
|
||||
import { initSentry } from "./sentry"
|
||||
|
||||
export const initialize = async () => {
|
||||
initAnalytics()
|
||||
initializeDayjs()
|
||||
await Promise.all([initI18n(), initSentry()])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
import { env } from "@follow/shared/env.ssr"
|
||||
import { OpenPanel } from "@openpanel/web"
|
||||
|
||||
export const op = new OpenPanel({
|
||||
clientId: env.VITE_OPENPANEL_CLIENT_ID ?? "",
|
||||
trackScreenViews: true,
|
||||
trackOutgoingLinks: true,
|
||||
trackAttributes: true,
|
||||
apiUrl: env.VITE_OPENPANEL_API_URL,
|
||||
})
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
<title>Folo</title>
|
||||
|
||||
<meta name="apple-itunes-app" content="app-id=6739802604" />
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
<link rel="manifest" href="/manifest.webmanifest" />
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DZMBZBW3EC"></script>
|
||||
<script>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
"@follow-app/client-sdk": "catalog:",
|
||||
"@follow/tracker": "workspace:*",
|
||||
"@fontsource/sn-pro": "5.2.6",
|
||||
"@openpanel/web": "1.0.7",
|
||||
"@radix-ui/react-avatar": "1.1.11",
|
||||
"@resvg/resvg-js": "2.6.2",
|
||||
"@sentry/react": "10.38.0",
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ export const DEFAULT_VALUES = {
|
|||
WEB_URL: "https://app.folo.is",
|
||||
INBOXES_EMAIL: "@follow.re",
|
||||
FIREBASE_CONFIG: FIREBASE_CONFIG_DEFAULT,
|
||||
OPENPANEL_CLIENT_ID: "4382168f-b8d2-40c1-9a26-133a312d072b",
|
||||
OPENPANEL_API_URL: "https://openpanel.follow.is/api",
|
||||
RECAPTCHA_V3_SITE_KEY: "6LeGa3csAAAAALi_WqhlWoaGaqd_kke4HRGvNE0C",
|
||||
|
||||
POSTHOG_KEY: "phc_EZGEvBt830JgBHTiwpHqJAEbWnbv63m5UpreojwEWNL",
|
||||
|
|
@ -30,9 +28,6 @@ export const DEFAULT_VALUES = {
|
|||
API_URL: "https://api.folo.is",
|
||||
WEB_URL: "https://staging.follow.is",
|
||||
INBOXES_EMAIL: "@follow.re",
|
||||
OPENPANEL_CLIENT_ID: "4382168f-b8d2-40c1-9a26-133a312d072b",
|
||||
OPENPANEL_API_URL: "https://openpanel.follow.is/api",
|
||||
|
||||
POSTHOG_KEY: "phc_EZGEvBt830JgBHTiwpHqJAEbWnbv63m5UpreojwEWNL",
|
||||
POSTHOG_HOST: "https://us.posthog.com",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -15,10 +15,6 @@ export const env = createEnv({
|
|||
VITE_SENTRY_DSN: z.string().optional(),
|
||||
VITE_INBOXES_EMAIL: z.string().default(DEFAULT_VALUES.PROD.INBOXES_EMAIL),
|
||||
VITE_FIREBASE_CONFIG: z.string().default(DEFAULT_VALUES.PROD.FIREBASE_CONFIG),
|
||||
|
||||
VITE_OPENPANEL_CLIENT_ID: z.string().optional(),
|
||||
VITE_OPENPANEL_API_URL: z.string().url().optional(),
|
||||
|
||||
VITE_POSTHOG_KEY: z.string().optional().default(DEFAULT_VALUES.PROD.POSTHOG_KEY),
|
||||
VITE_POSTHOG_HOST: z.string().url().optional().default(DEFAULT_VALUES.PROD.POSTHOG_HOST),
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@ const envProfileMap = {
|
|||
API_URL: DEFAULT_VALUES.PROD.API_URL,
|
||||
WEB_URL: DEFAULT_VALUES.PROD.WEB_URL,
|
||||
INBOXES_EMAIL: DEFAULT_VALUES.PROD.INBOXES_EMAIL,
|
||||
OPENPANEL_CLIENT_ID: DEFAULT_VALUES.PROD.OPENPANEL_CLIENT_ID,
|
||||
OPENPANEL_API_URL: DEFAULT_VALUES.PROD.OPENPANEL_API_URL,
|
||||
POSTHOG_KEY: DEFAULT_VALUES.PROD.POSTHOG_KEY,
|
||||
POSTHOG_HOST: DEFAULT_VALUES.PROD.POSTHOG_HOST,
|
||||
},
|
||||
|
|
@ -24,8 +22,6 @@ const envProfileMap = {
|
|||
API_URL: DEFAULT_VALUES.STAGING.API_URL,
|
||||
WEB_URL: DEFAULT_VALUES.STAGING.WEB_URL,
|
||||
INBOXES_EMAIL: DEFAULT_VALUES.STAGING.INBOXES_EMAIL,
|
||||
OPENPANEL_CLIENT_ID: DEFAULT_VALUES.STAGING.OPENPANEL_CLIENT_ID,
|
||||
OPENPANEL_API_URL: DEFAULT_VALUES.STAGING.OPENPANEL_API_URL,
|
||||
POSTHOG_KEY: DEFAULT_VALUES.STAGING.POSTHOG_KEY,
|
||||
POSTHOG_HOST: DEFAULT_VALUES.STAGING.POSTHOG_HOST,
|
||||
},
|
||||
|
|
@ -45,8 +41,6 @@ export const env = {
|
|||
WEB_URL: envProfileMap[profile].WEB_URL,
|
||||
API_URL: envProfileMap[profile].API_URL,
|
||||
APP_CHECK_DEBUG_TOKEN: process.env.EXPO_PUBLIC_APP_CHECK_DEBUG_TOKEN,
|
||||
OPENPANEL_CLIENT_ID: envProfileMap[profile].OPENPANEL_CLIENT_ID,
|
||||
POSTHOG_KEY: envProfileMap[profile].POSTHOG_KEY,
|
||||
POSTHOG_HOST: envProfileMap[profile].POSTHOG_HOST,
|
||||
OPENPANEL_API_URL: envProfileMap[profile].OPENPANEL_API_URL,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,10 +15,6 @@ export const env = createEnv({
|
|||
VITE_SENTRY_DSN: z.string().optional(),
|
||||
VITE_INBOXES_EMAIL: z.string().default(DEFAULT_VALUES.PROD.INBOXES_EMAIL),
|
||||
VITE_FIREBASE_CONFIG: z.string().default(DEFAULT_VALUES.PROD.FIREBASE_CONFIG),
|
||||
|
||||
VITE_OPENPANEL_CLIENT_ID: z.string().optional(),
|
||||
VITE_OPENPANEL_API_URL: z.string().url().optional(),
|
||||
|
||||
VITE_POSTHOG_KEY: z.string().optional().default(DEFAULT_VALUES.PROD.POSTHOG_KEY),
|
||||
VITE_POSTHOG_HOST: z.string().url().optional().default(DEFAULT_VALUES.PROD.POSTHOG_HOST),
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
export type { CaptureExceptionPayload, IdentifyPayload, TrackerAdapter, TrackPayload } from "./base"
|
||||
export { FirebaseAdapter, type FirebaseAdapterConfig } from "./firebase"
|
||||
export { OpenPanelAdapter, type OpenPanelAdapterConfig } from "./openpanel"
|
||||
export { PostHogAdapter, type PostHogAdapterConfig } from "./posthog"
|
||||
export { ProxyAdapter } from "./proxy"
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
import { TrackerMapper } from "../enums"
|
||||
import type { OpenPanel } from "../op"
|
||||
import type { Optional } from "../types"
|
||||
import type { IdentifyPayload, TrackerAdapter, TrackPayload } from "./base"
|
||||
|
||||
export interface OpenPanelAdapterConfig {
|
||||
instance: Optional<OpenPanel, "setHeaders">
|
||||
enabled?: boolean
|
||||
}
|
||||
|
||||
export class OpenPanelAdapter implements TrackerAdapter {
|
||||
private opInstance: Optional<OpenPanel, "setHeaders">
|
||||
private enabled: boolean
|
||||
|
||||
constructor(config: OpenPanelAdapterConfig) {
|
||||
this.opInstance = config.instance
|
||||
this.enabled = config.enabled ?? true
|
||||
}
|
||||
|
||||
initialize(): void {
|
||||
// OpenPanel is initialized when the instance is created
|
||||
}
|
||||
|
||||
async track({ eventName, properties }: TrackPayload): Promise<void> {
|
||||
if (!this.isEnabled()) return
|
||||
|
||||
try {
|
||||
// Handle special OpenPanel events based on the original event code
|
||||
const code = (properties as any)?.__code as TrackerMapper
|
||||
|
||||
if (code !== undefined) {
|
||||
await this.handleSpecialEvents(code, eventName, properties)
|
||||
} else {
|
||||
await this.opInstance.track(eventName, properties)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`[OpenPanel] Failed to track event "${eventName}":`, error)
|
||||
}
|
||||
}
|
||||
|
||||
private async handleSpecialEvents(
|
||||
code: TrackerMapper,
|
||||
eventName: string,
|
||||
properties?: Record<string, unknown>,
|
||||
): Promise<void> {
|
||||
switch (code) {
|
||||
case TrackerMapper.Identify: {
|
||||
// Identify is handled separately, skip here
|
||||
break
|
||||
}
|
||||
default: {
|
||||
// For all other events, use the standard track method with the code
|
||||
await this.opInstance.track(eventName, { ...properties, __code: code })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async identify(payload: IdentifyPayload): Promise<void> {
|
||||
if (!this.isEnabled()) return
|
||||
|
||||
try {
|
||||
await this.opInstance.identify({
|
||||
profileId: payload.id,
|
||||
email: payload.email ?? undefined,
|
||||
avatar: payload.image ?? undefined,
|
||||
lastName: payload.name ?? undefined,
|
||||
properties: {
|
||||
handle: payload.handle,
|
||||
name: payload.name,
|
||||
},
|
||||
})
|
||||
} catch (error) {
|
||||
console.error("[OpenPanel] Failed to identify user:", error)
|
||||
}
|
||||
}
|
||||
|
||||
async setUserProperties(properties: Record<string, unknown>): Promise<void> {
|
||||
if (!this.isEnabled()) return
|
||||
|
||||
try {
|
||||
this.opInstance.setGlobalProperties?.(properties)
|
||||
} catch (error) {
|
||||
console.error("[OpenPanel] Failed to set user properties:", error)
|
||||
}
|
||||
}
|
||||
|
||||
async clear(): Promise<void> {
|
||||
if (!this.isEnabled()) return
|
||||
|
||||
try {
|
||||
this.opInstance.clear?.()
|
||||
} catch (error) {
|
||||
console.error("[OpenPanel] Failed to clear user data:", error)
|
||||
}
|
||||
}
|
||||
|
||||
getName(): string {
|
||||
return "OpenPanel"
|
||||
}
|
||||
|
||||
isEnabled(): boolean {
|
||||
return this.enabled
|
||||
}
|
||||
|
||||
setEnabled(enabled: boolean): void {
|
||||
this.enabled = enabled
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
import { improvedTrackManager } from "./track-manager"
|
||||
import { TrackerPoints } from "./tracker-points"
|
||||
|
||||
export const setOpenPanelTracker =
|
||||
improvedTrackManager.setOpenPanelTracker.bind(improvedTrackManager)
|
||||
export const setFirebaseTracker = improvedTrackManager.setFirebaseTracker.bind(improvedTrackManager)
|
||||
export const setPostHogTracker = improvedTrackManager.setPostHogTracker.bind(improvedTrackManager)
|
||||
export const setProxyTracker = improvedTrackManager.setProxyTracker.bind(improvedTrackManager)
|
||||
|
|
@ -14,8 +12,6 @@ export {
|
|||
FirebaseAdapter,
|
||||
type FirebaseAdapterConfig,
|
||||
type IdentifyPayload,
|
||||
OpenPanelAdapter,
|
||||
type OpenPanelAdapterConfig,
|
||||
PostHogAdapter,
|
||||
type PostHogAdapterConfig,
|
||||
ProxyAdapter,
|
||||
|
|
|
|||
|
|
@ -1,88 +0,0 @@
|
|||
interface ApiConfig {
|
||||
baseUrl: string
|
||||
defaultHeaders?: Record<string, string | Promise<string | null>>
|
||||
maxRetries?: number
|
||||
initialRetryDelay?: number
|
||||
}
|
||||
|
||||
interface FetchOptions extends RequestInit {
|
||||
retries?: number
|
||||
}
|
||||
|
||||
export class Api {
|
||||
private baseUrl: string
|
||||
private headers: Record<string, string | Promise<string | null>>
|
||||
private maxRetries: number
|
||||
private initialRetryDelay: number
|
||||
|
||||
constructor(config: ApiConfig) {
|
||||
this.baseUrl = config.baseUrl
|
||||
this.headers = {
|
||||
"Content-Type": "application/json",
|
||||
...config.defaultHeaders,
|
||||
}
|
||||
this.maxRetries = config.maxRetries ?? 3
|
||||
this.initialRetryDelay = config.initialRetryDelay ?? 500
|
||||
}
|
||||
|
||||
setHeaders(headers: Record<string, string>) {
|
||||
this.headers = {
|
||||
...this.headers,
|
||||
...headers,
|
||||
}
|
||||
}
|
||||
|
||||
private async resolveHeaders(): Promise<Record<string, string>> {
|
||||
const resolvedHeaders: Record<string, string> = {}
|
||||
for (const [key, value] of Object.entries(this.headers)) {
|
||||
const resolvedValue = await value
|
||||
if (resolvedValue !== null) {
|
||||
resolvedHeaders[key] = resolvedValue
|
||||
}
|
||||
}
|
||||
return resolvedHeaders
|
||||
}
|
||||
|
||||
private async post<ReqBody, ResBody>(
|
||||
url: string,
|
||||
data: ReqBody,
|
||||
options: FetchOptions,
|
||||
attempt: number,
|
||||
): Promise<ResBody | null> {
|
||||
try {
|
||||
const response = await fetch(url, {
|
||||
method: "POST",
|
||||
headers: await this.resolveHeaders(),
|
||||
body: JSON.stringify(data ?? {}),
|
||||
keepalive: true,
|
||||
...options,
|
||||
})
|
||||
|
||||
if (response.status === 401) return null
|
||||
|
||||
if (response.status !== 200 && response.status !== 202) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`)
|
||||
}
|
||||
|
||||
const responseText = await response.text()
|
||||
return responseText ? JSON.parse(responseText) : null
|
||||
} catch (error) {
|
||||
if (attempt < this.maxRetries) {
|
||||
const delay = this.initialRetryDelay * 2 ** attempt
|
||||
await new Promise((resolve) => setTimeout(resolve, delay))
|
||||
return this.post<ReqBody, ResBody>(url, data, options, attempt + 1)
|
||||
}
|
||||
console.error("Max retries reached:", error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
async fetch<ReqBody, ResBody>(
|
||||
path: string,
|
||||
data: ReqBody,
|
||||
options: FetchOptions = {},
|
||||
): Promise<ResBody | null> {
|
||||
const url = `${this.baseUrl}${path}`
|
||||
return this.post<ReqBody, ResBody>(url, data, options, 0)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,206 +0,0 @@
|
|||
import type { Optional } from "../types"
|
||||
import { Api } from "./api"
|
||||
|
||||
export type TrackHandlerPayload =
|
||||
| {
|
||||
type: "track"
|
||||
payload: TrackPayload
|
||||
}
|
||||
| {
|
||||
type: "increment"
|
||||
payload: IncrementPayload
|
||||
}
|
||||
| {
|
||||
type: "decrement"
|
||||
payload: DecrementPayload
|
||||
}
|
||||
| {
|
||||
type: "alias"
|
||||
payload: AliasPayload
|
||||
}
|
||||
| {
|
||||
type: "identify"
|
||||
payload: IdentifyPayload
|
||||
}
|
||||
|
||||
export type TrackPayload = {
|
||||
name: string
|
||||
properties?: Record<string, unknown>
|
||||
profileId?: string
|
||||
}
|
||||
|
||||
export type TrackProperties = {
|
||||
[key: string]: unknown
|
||||
profileId?: string
|
||||
}
|
||||
|
||||
export type IdentifyPayload = {
|
||||
profileId: string
|
||||
firstName?: string
|
||||
lastName?: string
|
||||
email?: string
|
||||
avatar?: string
|
||||
properties?: Record<string, unknown>
|
||||
}
|
||||
|
||||
export type AliasPayload = {
|
||||
profileId: string
|
||||
alias: string
|
||||
}
|
||||
|
||||
export type IncrementPayload = {
|
||||
profileId: string
|
||||
property: string
|
||||
value?: number
|
||||
}
|
||||
|
||||
export type DecrementPayload = {
|
||||
profileId: string
|
||||
property: string
|
||||
value?: number
|
||||
}
|
||||
|
||||
export type OpenPanelOptions = {
|
||||
clientId: string
|
||||
clientSecret?: string
|
||||
apiUrl?: string
|
||||
sdk?: string
|
||||
sdkVersion?: string
|
||||
waitForProfile?: boolean
|
||||
filter?: (payload: TrackHandlerPayload) => boolean
|
||||
disabled?: boolean
|
||||
headers?: Record<string, string>
|
||||
}
|
||||
|
||||
export class OpenPanel {
|
||||
api: Optional<Api, "setHeaders">
|
||||
profileId?: string
|
||||
global?: Record<string, unknown>
|
||||
queue: TrackHandlerPayload[] = []
|
||||
|
||||
constructor(public options: OpenPanelOptions) {
|
||||
const defaultHeaders: Record<string, string> = {
|
||||
"openpanel-client-id": options.clientId,
|
||||
...options.headers,
|
||||
}
|
||||
|
||||
if (options.clientSecret) {
|
||||
defaultHeaders["openpanel-client-secret"] = options.clientSecret
|
||||
}
|
||||
|
||||
defaultHeaders["openpanel-sdk-name"] = options.sdk || "node"
|
||||
defaultHeaders["openpanel-sdk-version"] = options.sdkVersion || process.env.SDK_VERSION!
|
||||
|
||||
this.api = new Api({
|
||||
baseUrl: options.apiUrl || "https://api.openpanel.dev",
|
||||
defaultHeaders,
|
||||
})
|
||||
}
|
||||
|
||||
ready() {
|
||||
this.options.waitForProfile = false
|
||||
this.flush()
|
||||
}
|
||||
|
||||
async send(payload: TrackHandlerPayload) {
|
||||
if (this.options.disabled) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.options.filter && !this.options.filter(payload)) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.options.waitForProfile && !this.profileId) {
|
||||
this.queue.push(payload)
|
||||
return
|
||||
}
|
||||
return this.api.fetch("/track", payload)
|
||||
}
|
||||
|
||||
setHeaders(headers: Record<string, string>) {
|
||||
this.api.setHeaders?.(headers)
|
||||
}
|
||||
|
||||
setGlobalProperties(properties: Record<string, unknown>) {
|
||||
this.global = {
|
||||
...this.global,
|
||||
...properties,
|
||||
}
|
||||
}
|
||||
|
||||
async track(name: string, properties?: TrackProperties) {
|
||||
return this.send({
|
||||
type: "track",
|
||||
payload: {
|
||||
name,
|
||||
profileId: properties?.profileId ?? this.profileId,
|
||||
properties: {
|
||||
...this.global,
|
||||
...properties,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async identify(payload: IdentifyPayload) {
|
||||
if (payload.profileId) {
|
||||
this.profileId = payload.profileId
|
||||
this.flush()
|
||||
}
|
||||
|
||||
if (Object.keys(payload).length > 1) {
|
||||
return this.send({
|
||||
type: "identify",
|
||||
payload: {
|
||||
...payload,
|
||||
properties: {
|
||||
...this.global,
|
||||
...payload.properties,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
async alias(payload: AliasPayload) {
|
||||
return this.send({
|
||||
type: "alias",
|
||||
payload,
|
||||
})
|
||||
}
|
||||
|
||||
async increment(payload: IncrementPayload) {
|
||||
return this.send({
|
||||
type: "increment",
|
||||
payload,
|
||||
})
|
||||
}
|
||||
|
||||
async decrement(payload: DecrementPayload) {
|
||||
return this.send({
|
||||
type: "decrement",
|
||||
payload,
|
||||
})
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.profileId = undefined
|
||||
// should we force a session end here?
|
||||
}
|
||||
|
||||
flush() {
|
||||
this.queue.forEach((item) => {
|
||||
this.send({
|
||||
...item,
|
||||
// Not sure why ts-expect-error is needed here
|
||||
// @ts-expect-error
|
||||
payload: {
|
||||
...item.payload,
|
||||
profileId: item.payload.profileId ?? this.profileId,
|
||||
},
|
||||
})
|
||||
})
|
||||
this.queue = []
|
||||
}
|
||||
}
|
||||
|
|
@ -2,12 +2,11 @@ import type { FirebaseAnalyticsTypes } from "@react-native-firebase/analytics"
|
|||
import type { PostHog } from "posthog-js"
|
||||
import type PostHogReactNative from "posthog-react-native"
|
||||
|
||||
import { FirebaseAdapter, OpenPanelAdapter, PostHogAdapter } from "./adapters"
|
||||
import { FirebaseAdapter, PostHogAdapter } from "./adapters"
|
||||
import { ProxyAdapter } from "./adapters/proxy"
|
||||
import type { TrackerMapper } from "./enums"
|
||||
import { TrackerManager } from "./manager"
|
||||
import type { OpenPanel } from "./op"
|
||||
import type { Optional, Tracker } from "./types"
|
||||
import type { Tracker } from "./types"
|
||||
|
||||
class TrackManager extends TrackerManager {
|
||||
private trackFns: Tracker[] = []
|
||||
|
|
@ -39,11 +38,6 @@ class TrackManager extends TrackerManager {
|
|||
}
|
||||
}
|
||||
|
||||
setOpenPanelTracker(op: Optional<OpenPanel, "setHeaders">) {
|
||||
const adapter = new OpenPanelAdapter({ instance: op })
|
||||
this.addAdapter(adapter)
|
||||
}
|
||||
|
||||
setFirebaseTracker(
|
||||
tracker: Pick<FirebaseAnalyticsTypes.Module, "logEvent" | "setUserId" | "setUserProperties">,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ interface ImportMetaEnv {
|
|||
VITE_WEB_URL: string
|
||||
VITE_API_URL: string
|
||||
VITE_SENTRY_DSN: string
|
||||
VITE_OPENPANEL_CLIENT_ID: string
|
||||
VITE_OPENPANEL_API_URL: string
|
||||
VITE_FIREBASE_CONFIG: string
|
||||
}
|
||||
|
||||
|
|
|
|||
208
pnpm-lock.yaml
208
pnpm-lock.yaml
|
|
@ -189,7 +189,7 @@ importers:
|
|||
dependencies:
|
||||
'@follow-app/client-sdk':
|
||||
specifier: 'catalog:'
|
||||
version: 0.3.92(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.12)(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
version: 0.3.92(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
commander:
|
||||
specifier: 14.0.1
|
||||
version: 14.0.1
|
||||
|
|
@ -392,9 +392,6 @@ importers:
|
|||
'@follow/utils':
|
||||
specifier: workspace:*
|
||||
version: link:../../../../packages/internal/utils
|
||||
'@openpanel/web':
|
||||
specifier: 1.0.7
|
||||
version: 1.0.7
|
||||
builder-util-runtime:
|
||||
specifier: 9.5.1
|
||||
version: 9.5.1
|
||||
|
|
@ -528,9 +525,6 @@ importers:
|
|||
'@number-flow/react':
|
||||
specifier: 0.5.11
|
||||
version: 0.5.11(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
'@openpanel/web':
|
||||
specifier: 1.0.7
|
||||
version: 1.0.7
|
||||
'@radix-ui/react-avatar':
|
||||
specifier: 1.1.11
|
||||
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
|
|
@ -1069,7 +1063,7 @@ importers:
|
|||
dependencies:
|
||||
'@better-auth/expo':
|
||||
specifier: 1.5.5
|
||||
version: 1.5.5(0c2eb9cd07d16acbe5ccb94d3f244956)
|
||||
version: 1.5.5(b83b30101b819d6c970e7e563b1dcee9)
|
||||
'@expo/metro-runtime':
|
||||
specifier: 6.1.2
|
||||
version: 6.1.2(expo@54.0.33)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0)
|
||||
|
|
@ -1115,9 +1109,6 @@ importers:
|
|||
'@hookform/resolvers':
|
||||
specifier: 5.2.2
|
||||
version: 5.2.2(react-hook-form@7.71.1(react@19.1.0))
|
||||
'@openpanel/sdk':
|
||||
specifier: 1.0.4
|
||||
version: 1.0.4
|
||||
'@react-native-community/image-editor':
|
||||
specifier: 4.3.0
|
||||
version: 4.3.0(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))
|
||||
|
|
@ -1469,9 +1460,6 @@ importers:
|
|||
'@fontsource/sn-pro':
|
||||
specifier: 5.2.6
|
||||
version: 5.2.6
|
||||
'@openpanel/web':
|
||||
specifier: 1.0.7
|
||||
version: 1.0.7
|
||||
'@radix-ui/react-avatar':
|
||||
specifier: 1.1.11
|
||||
version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
|
|
@ -2075,7 +2063,7 @@ importers:
|
|||
dependencies:
|
||||
'@better-auth/stripe':
|
||||
specifier: 1.5.5
|
||||
version: 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(better-auth@1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(better-call@1.3.2(zod@3.25.76))(stripe@20.3.1(@types/node@25.2.3))
|
||||
version: 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(better-auth@1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(better-call@1.3.2(zod@3.25.76))(stripe@20.3.1(@types/node@25.2.3))
|
||||
'@electron-toolkit/preload':
|
||||
specifier: 3.0.2
|
||||
version: 3.0.2(electron@38.3.0)
|
||||
|
|
@ -5908,12 +5896,6 @@ packages:
|
|||
'@octokit/types@6.41.0':
|
||||
resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==}
|
||||
|
||||
'@openpanel/sdk@1.0.4':
|
||||
resolution: {integrity: sha512-F4XocyiaUwUnNRre9LNa9RyTiX/fXcttR4rfFAmMxx6FrbcaemDzMYIg+mH3Hv7lwZqBSo1t2/jObkjpbqjW0g==}
|
||||
|
||||
'@openpanel/web@1.0.7':
|
||||
resolution: {integrity: sha512-lhZCIjUSy5XCcTyzHisehJkdr2/PPEEpMbc8cKtg/5zqxGhHLWIoOiLDjD357KGaxzHg43QVWPe5YBO+Wpto0A==}
|
||||
|
||||
'@opentelemetry/api@1.9.0':
|
||||
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
|
||||
engines: {node: '>=8.0.0'}
|
||||
|
|
@ -19038,14 +19020,14 @@ snapshots:
|
|||
nanostores: 1.2.0
|
||||
zod: 4.3.6
|
||||
|
||||
'@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))':
|
||||
'@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
optionalDependencies:
|
||||
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3)
|
||||
|
||||
'@better-auth/expo@1.5.5(0c2eb9cd07d16acbe5ccb94d3f244956)':
|
||||
'@better-auth/expo@1.5.5(b83b30101b819d6c970e7e563b1dcee9)':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-fetch/fetch': 1.1.21
|
||||
|
|
@ -19057,29 +19039,29 @@ snapshots:
|
|||
expo-linking: 8.0.11(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0)
|
||||
expo-web-browser: 15.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))
|
||||
|
||||
'@better-auth/kysely-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(kysely@0.28.12)':
|
||||
'@better-auth/kysely-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(kysely@0.28.12)':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
kysely: 0.28.12
|
||||
|
||||
'@better-auth/memory-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)':
|
||||
'@better-auth/memory-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
|
||||
'@better-auth/mongo-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(mongodb@7.1.0(socks@2.8.7))':
|
||||
'@better-auth/mongo-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(mongodb@7.1.0(socks@2.8.7))':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
mongodb: 7.1.0(socks@2.8.7)
|
||||
|
||||
'@better-auth/prisma-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)':
|
||||
'@better-auth/prisma-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
|
||||
'@better-auth/stripe@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(better-auth@1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(better-call@1.3.2(zod@3.25.76))(stripe@20.3.1(@types/node@25.2.3))':
|
||||
'@better-auth/stripe@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(better-auth@1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(better-call@1.3.2(zod@3.25.76))(stripe@20.3.1(@types/node@25.2.3))':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
better-auth: 1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
|
||||
|
|
@ -19100,7 +19082,7 @@ snapshots:
|
|||
- kysely
|
||||
- nanostores
|
||||
|
||||
'@better-auth/telemetry@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))':
|
||||
'@better-auth/telemetry@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))':
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/utils': 0.3.1
|
||||
|
|
@ -21654,6 +21636,55 @@ snapshots:
|
|||
|
||||
'@floating-ui/utils@0.2.10': {}
|
||||
|
||||
'@follow-app/client-sdk@0.3.92(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
|
||||
dependencies:
|
||||
'@folo-services/constants': 0.1.53
|
||||
'@folo-services/drizzle': 0.1.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)
|
||||
'@folo-services/exceptions': 0.1.28
|
||||
'@folo-services/shared': 0.0.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)(pg@8.16.3)
|
||||
better-auth: 1.3.28(better-sqlite3@12.6.2)(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
zod: 4.1.12
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/client-rds-data'
|
||||
- '@cloudflare/workers-types'
|
||||
- '@electric-sql/pglite'
|
||||
- '@libsql/client'
|
||||
- '@libsql/client-wasm'
|
||||
- '@lynx-js/react'
|
||||
- '@neondatabase/serverless'
|
||||
- '@op-engineering/op-sqlite'
|
||||
- '@opentelemetry/api'
|
||||
- '@planetscale/database'
|
||||
- '@prisma/client'
|
||||
- '@sveltejs/kit'
|
||||
- '@tidbcloud/serverless'
|
||||
- '@types/better-sqlite3'
|
||||
- '@types/pg'
|
||||
- '@types/sql.js'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/postgres'
|
||||
- '@xata.io/client'
|
||||
- better-sqlite3
|
||||
- bun-types
|
||||
- expo-sqlite
|
||||
- gel
|
||||
- hono
|
||||
- knex
|
||||
- kysely
|
||||
- mysql2
|
||||
- next
|
||||
- pg
|
||||
- pg-native
|
||||
- postgres
|
||||
- prisma
|
||||
- react
|
||||
- react-dom
|
||||
- solid-js
|
||||
- sql.js
|
||||
- sqlite3
|
||||
- svelte
|
||||
- vue
|
||||
|
||||
'@follow-app/client-sdk@0.3.92(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.12)(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
|
||||
dependencies:
|
||||
'@folo-services/constants': 0.1.53
|
||||
|
|
@ -21747,6 +21778,47 @@ snapshots:
|
|||
dependencies:
|
||||
zod: 4.1.12
|
||||
|
||||
'@folo-services/drizzle@0.1.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)':
|
||||
dependencies:
|
||||
'@folo-services/exceptions': 0.1.28
|
||||
'@hono/zod-openapi': 1.1.4(hono@4.12.1)(zod@4.1.12)
|
||||
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3)
|
||||
drizzle-zod: 0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3))(zod@4.1.12)
|
||||
nanoid: 5.1.6
|
||||
pg: 8.16.3
|
||||
zod: 4.1.12
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/client-rds-data'
|
||||
- '@cloudflare/workers-types'
|
||||
- '@electric-sql/pglite'
|
||||
- '@libsql/client'
|
||||
- '@libsql/client-wasm'
|
||||
- '@neondatabase/serverless'
|
||||
- '@op-engineering/op-sqlite'
|
||||
- '@opentelemetry/api'
|
||||
- '@planetscale/database'
|
||||
- '@prisma/client'
|
||||
- '@tidbcloud/serverless'
|
||||
- '@types/better-sqlite3'
|
||||
- '@types/pg'
|
||||
- '@types/sql.js'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/postgres'
|
||||
- '@xata.io/client'
|
||||
- better-sqlite3
|
||||
- bun-types
|
||||
- expo-sqlite
|
||||
- gel
|
||||
- hono
|
||||
- knex
|
||||
- kysely
|
||||
- mysql2
|
||||
- pg-native
|
||||
- postgres
|
||||
- prisma
|
||||
- sql.js
|
||||
- sqlite3
|
||||
|
||||
'@folo-services/drizzle@0.1.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.12)':
|
||||
dependencies:
|
||||
'@folo-services/exceptions': 0.1.28
|
||||
|
|
@ -21790,6 +21862,47 @@ snapshots:
|
|||
|
||||
'@folo-services/exceptions@0.1.28': {}
|
||||
|
||||
'@folo-services/shared@0.0.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)(pg@8.16.3)':
|
||||
dependencies:
|
||||
'@folo-services/constants': 0.1.53
|
||||
'@folo-services/drizzle': 0.1.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.11)
|
||||
'@hono/zod-openapi': 1.1.4(hono@4.12.1)(zod@4.1.12)
|
||||
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3)
|
||||
drizzle-zod: 0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3))(zod@4.1.12)
|
||||
zod: 4.1.12
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/client-rds-data'
|
||||
- '@cloudflare/workers-types'
|
||||
- '@electric-sql/pglite'
|
||||
- '@libsql/client'
|
||||
- '@libsql/client-wasm'
|
||||
- '@neondatabase/serverless'
|
||||
- '@op-engineering/op-sqlite'
|
||||
- '@opentelemetry/api'
|
||||
- '@planetscale/database'
|
||||
- '@prisma/client'
|
||||
- '@tidbcloud/serverless'
|
||||
- '@types/better-sqlite3'
|
||||
- '@types/pg'
|
||||
- '@types/sql.js'
|
||||
- '@upstash/redis'
|
||||
- '@vercel/postgres'
|
||||
- '@xata.io/client'
|
||||
- better-sqlite3
|
||||
- bun-types
|
||||
- expo-sqlite
|
||||
- gel
|
||||
- hono
|
||||
- knex
|
||||
- kysely
|
||||
- mysql2
|
||||
- pg
|
||||
- pg-native
|
||||
- postgres
|
||||
- prisma
|
||||
- sql.js
|
||||
- sqlite3
|
||||
|
||||
'@folo-services/shared@0.0.44(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(hono@4.12.1)(kysely@0.28.12)(pg@8.16.3)':
|
||||
dependencies:
|
||||
'@folo-services/constants': 0.1.53
|
||||
|
|
@ -22203,7 +22316,7 @@ snapshots:
|
|||
prettier-package-json: 2.8.0
|
||||
prettier-plugin-autocorrect: 0.4.3(prettier@3.8.1)
|
||||
prettier-plugin-sh: 0.18.0(prettier@3.8.1)
|
||||
prettier-plugin-tailwindcss: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.6.2))(prettier@3.8.1)
|
||||
prettier-plugin-tailwindcss: 0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1)
|
||||
transitivePeerDependencies:
|
||||
- '@prettier/plugin-hermes'
|
||||
- '@prettier/plugin-oxc'
|
||||
|
|
@ -22989,12 +23102,6 @@ snapshots:
|
|||
dependencies:
|
||||
'@octokit/openapi-types': 12.11.0
|
||||
|
||||
'@openpanel/sdk@1.0.4': {}
|
||||
|
||||
'@openpanel/web@1.0.7':
|
||||
dependencies:
|
||||
'@openpanel/sdk': 1.0.4
|
||||
|
||||
'@opentelemetry/api@1.9.0': {}
|
||||
|
||||
'@oxc-project/types@0.112.0': {}
|
||||
|
|
@ -26503,17 +26610,17 @@ snapshots:
|
|||
better-auth@1.5.5(better-sqlite3@12.6.2)(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(mongodb@7.1.0(socks@2.8.7))(next@16.0.11(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(pg@8.16.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@3.2.4(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@25.2.3)(happy-dom@20.6.1(bufferutil@4.1.0))(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
|
||||
dependencies:
|
||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0)
|
||||
'@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))
|
||||
'@better-auth/kysely-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(kysely@0.28.12)
|
||||
'@better-auth/memory-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)
|
||||
'@better-auth/mongo-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(mongodb@7.1.0(socks@2.8.7))
|
||||
'@better-auth/prisma-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)
|
||||
'@better-auth/telemetry': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@3.25.76))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))
|
||||
'@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))
|
||||
'@better-auth/kysely-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(kysely@0.28.12)
|
||||
'@better-auth/memory-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)
|
||||
'@better-auth/mongo-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(mongodb@7.1.0(socks@2.8.7))
|
||||
'@better-auth/prisma-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))(@better-auth/utils@0.3.1)
|
||||
'@better-auth/telemetry': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.12)(nanostores@1.2.0))
|
||||
'@better-auth/utils': 0.3.1
|
||||
'@better-fetch/fetch': 1.1.21
|
||||
'@noble/ciphers': 2.1.1
|
||||
'@noble/hashes': 2.0.1
|
||||
better-call: 1.3.2(zod@4.3.6)
|
||||
better-call: 1.3.2(zod@3.25.76)
|
||||
defu: 6.1.4
|
||||
jose: 6.2.1
|
||||
kysely: 0.28.12
|
||||
|
|
@ -27821,6 +27928,14 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3):
|
||||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
better-sqlite3: 12.6.2
|
||||
expo-sqlite: 16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0)
|
||||
kysely: 0.28.11
|
||||
pg: 8.16.3
|
||||
|
||||
drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3):
|
||||
optionalDependencies:
|
||||
'@opentelemetry/api': 1.9.0
|
||||
|
|
@ -27829,6 +27944,11 @@ snapshots:
|
|||
kysely: 0.28.12
|
||||
pg: 8.16.3
|
||||
|
||||
drizzle-zod@0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3))(zod@4.1.12):
|
||||
dependencies:
|
||||
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.11)(pg@8.16.3)
|
||||
zod: 4.1.12
|
||||
|
||||
drizzle-zod@0.8.3(drizzle-orm@0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3))(zod@4.1.12):
|
||||
dependencies:
|
||||
drizzle-orm: 0.45.1(@opentelemetry/api@1.9.0)(better-sqlite3@12.6.2)(expo-sqlite@16.0.10(expo@54.0.33)(react-native@0.81.5(@babel/core@7.29.0)(@types/react@19.1.17)(bufferutil@4.1.0)(react@19.1.0))(react@19.1.0))(kysely@0.28.12)(pg@8.16.3)
|
||||
|
|
@ -33527,7 +33647,7 @@ snapshots:
|
|||
prettier: 3.8.1
|
||||
sh-syntax: 0.5.8
|
||||
|
||||
prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.6.2))(prettier@3.8.1):
|
||||
prettier-plugin-tailwindcss@0.6.14(@ianvs/prettier-plugin-sort-imports@4.4.2(prettier@3.8.1))(prettier@3.8.1):
|
||||
dependencies:
|
||||
prettier: 3.8.1
|
||||
optionalDependencies:
|
||||
|
|
|
|||
Loading…
Reference in New Issue