From e6c0bc2ec8b2c717532f15a2b496270c8d643755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Mon, 11 Mar 2024 13:40:46 +0100 Subject: [PATCH] rename mixan to OPENPANEL! --- README.md | 48 +++-- apps/api/package.json | 22 +-- apps/api/scripts/test-events.ts | 72 ++++---- apps/api/src/controllers/event.controller.ts | 164 ++++++++--------- apps/api/src/controllers/live.controller.ts | 62 +++---- apps/api/src/controllers/misc.controller.ts | 46 ++--- .../api/src/controllers/profile.controller.ts | 47 ++--- apps/api/src/index.ts | 46 ++--- apps/api/src/routes/event.router.ts | 38 ++-- apps/api/src/utils/auth.ts | 8 +- apps/api/src/utils/parseReferrer.ts | 24 +-- apps/api/tsconfig.json | 2 +- apps/api/tsup.config.ts | 2 +- apps/dashboard/next.config.mjs | 2 +- apps/dashboard/package.json | 26 +-- .../dashboards/[dashboardId]/list-reports.tsx | 11 +- .../dashboards/[dashboardId]/page.tsx | 3 +- .../dashboards/list-dashboards.tsx | 3 +- .../[projectId]/dashboards/page.tsx | 3 +- .../[projectId]/events/event-chart.tsx | 3 +- .../[projectId]/events/event-details.tsx | 3 +- .../[projectId]/events/event-edit.tsx | 3 +- .../[projectId]/events/event-icon.tsx | 3 +- .../[projectId]/events/event-list-item.tsx | 3 +- .../[projectId]/events/event-list.tsx | 3 +- .../[projectId]/events/event-listener.tsx | 3 +- .../[projectId]/events/page.tsx | 3 +- .../[projectId]/layout-menu.tsx | 3 +- .../layout-organization-selector.tsx | 3 +- .../[projectId]/layout-project-selector.tsx | 3 +- .../[projectId]/layout-sidebar.tsx | 3 +- .../[organizationId]/[projectId]/layout.tsx | 2 +- .../[projectId]/page-layout.tsx | 2 +- .../[organizationId]/[projectId]/page.tsx | 3 +- .../[projectId]/profiles/[profileId]/page.tsx | 11 +- .../[projectId]/profiles/page.tsx | 3 +- .../profiles/profile-list-item.tsx | 3 +- .../[projectId]/profiles/profile-list.tsx | 3 +- .../[projectId]/reports/[reportId]/page.tsx | 3 +- .../[projectId]/reports/page.tsx | 3 +- .../[projectId]/reports/report-editor.tsx | 3 +- .../settings/clients/list-clients.tsx | 3 +- .../[projectId]/settings/clients/page.tsx | 3 +- .../organization/edit-organization.tsx | 3 +- .../settings/organization/invite-user.tsx | 3 +- .../settings/organization/invited-users.tsx | 3 +- .../settings/organization/page.tsx | 3 +- .../settings/profile/edit-profile.tsx | 3 +- .../[projectId]/settings/profile/page.tsx | 3 +- .../settings/projects/list-projects.tsx | 3 +- .../[projectId]/settings/projects/page.tsx | 3 +- .../settings/references/list-references.tsx | 3 +- .../[projectId]/settings/references/page.tsx | 3 +- .../src/app/(app)/[organizationId]/page.tsx | 5 +- apps/dashboard/src/app/(app)/page.tsx | 3 +- .../app/(public)/share/overview/[id]/page.tsx | 3 +- .../src/components/clients/ClientActions.tsx | 3 +- .../src/components/clients/table.tsx | 3 +- .../src/components/events/ListProperties.tsx | 2 +- .../overview-filters-drawer-content.tsx | 7 +- .../overview/live-counter/index.tsx | 2 +- .../overview/overview-latest-events/index.tsx | 2 +- .../overview/overview-live-histogram.tsx | 3 +- .../components/overview/overview-metrics.tsx | 3 +- .../components/overview/overview-share.tsx | 3 +- .../overview/overview-top-events/index.tsx | 2 +- .../components/overview/useOverviewOptions.ts | 13 +- .../components/overview/useOverviewWidget.tsx | 5 +- .../src/components/profiles/ProfileAvatar.tsx | 3 +- .../components/projects/ProjectActions.tsx | 3 +- .../src/components/projects/project-card.tsx | 4 +- .../src/components/projects/table.tsx | 5 +- .../src/components/references/table.tsx | 3 +- .../src/components/report/ReportChartType.tsx | 5 +- .../src/components/report/ReportInterval.tsx | 7 +- .../src/components/report/ReportLineType.tsx | 5 +- .../src/components/report/ReportRange.tsx | 5 +- .../src/components/report/chart/Chart.tsx | 3 +- .../components/report/chart/ChartProvider.tsx | 3 +- .../components/report/chart/MetricCard.tsx | 3 +- .../report/chart/ReportAreaChart.tsx | 3 +- .../report/chart/ReportBarChart.tsx | 3 +- .../report/chart/ReportHistogramChart.tsx | 3 +- .../report/chart/ReportLineChart.tsx | 5 +- .../src/components/report/chart/SerieIcon.tsx | 3 +- .../src/components/report/chart/index.tsx | 2 +- .../src/components/report/funnel/index.tsx | 3 +- .../src/components/report/reportSlice.ts | 11 +- .../sidebar/EventPropertiesCombobox.tsx | 3 +- .../report/sidebar/ReportBreakdowns.tsx | 3 +- .../report/sidebar/ReportEvents.tsx | 3 +- .../report/sidebar/filters/FilterItem.tsx | 9 +- .../sidebar/filters/FiltersCombobox.tsx | 3 +- .../report/sidebar/filters/FiltersList.tsx | 2 +- .../src/hooks/useFormatDateInterval.ts | 2 +- apps/dashboard/src/modals/AddReference.tsx | 3 +- apps/dashboard/src/modals/EditClient.tsx | 3 +- apps/dashboard/src/modals/EditDashboard.tsx | 3 +- apps/dashboard/src/modals/EditProject.tsx | 3 +- apps/dashboard/src/modals/SaveReport.tsx | 3 +- .../src/modals/ShareOverviewModal.tsx | 3 +- .../src/server/api/routers/chart.helpers.ts | 11 +- .../dashboard/src/server/api/routers/chart.ts | 11 +- .../src/server/api/routers/client.ts | 3 +- .../src/server/api/routers/dashboard.ts | 3 +- .../dashboard/src/server/api/routers/event.ts | 3 +- .../src/server/api/routers/onboarding.ts | 3 +- .../src/server/api/routers/organization.ts | 5 +- .../src/server/api/routers/profile.ts | 3 +- .../src/server/api/routers/reference.ts | 5 +- .../src/server/api/routers/report.ts | 5 +- .../dashboard/src/server/api/routers/share.ts | 3 +- apps/dashboard/src/server/api/routers/user.ts | 3 +- apps/dashboard/src/server/db.ts | 5 +- apps/dashboard/src/server/pageExists.tsx | 3 +- apps/dashboard/src/utils/getters.ts | 2 +- apps/dashboard/tsconfig.json | 15 +- apps/docs/next.config.mjs | 2 +- apps/docs/package.json | 16 +- apps/docs/tsconfig.json | 2 +- apps/public/next.config.mjs | 2 +- apps/public/package.json | 18 +- apps/public/public/op.js | 2 +- apps/public/src/app/api/waitlist/route.ts | 2 +- apps/public/src/app/page.tsx | 2 +- apps/public/tsconfig.json | 21 +-- apps/test/next.config.mjs | 2 +- apps/test/package.json | 22 +-- apps/test/public/op.js | 2 +- apps/test/public/op.js.map | 52 +++++- apps/test/src/analytics.ts | 137 ++++++++++++-- apps/test/src/app/app-dir/page.tsx | 160 ++++++++++------ apps/test/src/app/layout.tsx | 2 +- apps/test/src/pages/_app.tsx | 64 +++++-- apps/test/src/pages/test.tsx | 2 +- apps/test/tsconfig.json | 2 +- apps/worker/package.json | 20 +- apps/worker/src/index.ts | 4 +- apps/worker/src/jobs/cron.salt.ts | 4 +- apps/worker/src/jobs/cron.ts | 2 +- .../src/jobs/events.create-session-end.ts | 6 +- apps/worker/src/jobs/events.ts | 4 +- apps/worker/tsconfig.json | 16 +- apps/worker/tsup.config.ts | 2 +- docker/Dockerfile-composed | 2 +- docker/Dockerfile-web | 2 +- docker/Dockerfile-worker | 2 +- docker/build-composed | 6 +- images/bar.png | Bin 746997 -> 0 bytes images/dashboard.png | Bin 932082 -> 0 bytes images/line.png | Bin 841636 -> 0 bytes images/mixan.svg | 7 - images/settings.png | Bin 814843 -> 0 bytes package.json | 6 +- packages/common/package.json | 12 +- packages/common/tsconfig.json | 2 +- packages/constants/package.json | 12 +- packages/constants/tsconfig.json | 2 +- packages/db/package.json | 20 +- packages/db/scripts/insert.ts | 6 +- packages/db/src/services/chart.service.ts | 2 +- packages/db/src/services/event.service.ts | 92 +++++----- packages/db/src/services/profile.service.ts | 66 +++---- packages/db/src/services/reports.service.ts | 32 ++-- packages/db/tsconfig.json | 2 +- packages/queue/package.json | 14 +- packages/queue/src/queues.ts | 2 +- packages/queue/tsconfig.json | 2 +- packages/redis/package.json | 12 +- packages/redis/tsconfig.json | 2 +- packages/sdks/nextjs/index.tsx | 12 +- packages/sdks/nextjs/package.json | 16 +- packages/sdks/nextjs/tsconfig.json | 2 +- packages/sdks/nextjs/tsup.config.ts | 2 +- packages/sdks/react-native/index.ts | 10 +- packages/sdks/react-native/package.json | 14 +- packages/sdks/react-native/tsconfig.json | 2 +- packages/sdks/react-native/tsup.config.ts | 2 +- packages/sdks/sdk/index.ts | 20 +- packages/sdks/sdk/package.json | 12 +- packages/sdks/sdk/tsconfig.json | 2 +- packages/sdks/sdk/tsup.config.ts | 2 +- packages/sdks/web/cdn.ts | 2 +- packages/sdks/web/index.ts | 12 +- packages/sdks/web/package.json | 14 +- packages/sdks/web/tsconfig.json | 2 +- packages/sdks/web/tsup.config.ts | 2 +- packages/validation/package.json | 14 +- packages/validation/src/index.ts | 2 +- packages/validation/src/types.validation.ts | 2 +- packages/validation/tsconfig.json | 2 +- pnpm-lock.yaml | 172 +++++++++--------- tooling/eslint/package.json | 8 +- tooling/eslint/tsconfig.json | 2 +- tooling/prettier/index.mjs | 2 +- tooling/prettier/package.json | 4 +- tooling/prettier/tsconfig.json | 2 +- tooling/publish/package.json | 12 +- tooling/publish/publish.ts | 7 +- tooling/publish/tsconfig.json | 2 +- tooling/typescript/package.json | 2 +- 201 files changed, 1193 insertions(+), 1047 deletions(-) delete mode 100644 images/bar.png delete mode 100644 images/dashboard.png delete mode 100644 images/line.png delete mode 100644 images/mixan.svg delete mode 100644 images/settings.png diff --git a/README.md b/README.md index c8fa9487..d32ca5ad 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,6 @@ -

- -

+# openpanel -# mixan - -Mixan is a simple analytics tool for logging events on web and react-native. My goal is to make a minimal mixpanel copy with the most basic features (for now). +Openpanel is a simple analytics tool for logging events on web and react-native. My goal is to make a minimal mixpanel copy with the most basic features (for now). - Easy to use - Fully responsive UI @@ -71,24 +67,24 @@ As of today (~~2023-12-12~~ 2024-01-16) I have more then ~~1.2~~ 2.8 million eve - [x] Create web sdk - [x] Screen view function should take in title, path and parse query string (especially utm tags) -## @mixan/sdk +## @openpanel/sdk For pushing events ### Install -- npm: `npm install @mixan/sdk` -- pnpm: `pnpm add @mixan/sdk` -- yarn: `yarn add @mixan/sdk` +- npm: `npm install @openpanel/sdk` +- pnpm: `pnpm add @openpanel/sdk` +- yarn: `yarn add @openpanel/sdk` ### Usage ```ts -import { MixanWeb } from '@mixan/web'; +import { OpenpanelWeb } from '@openpanel/web'; -// import { MixanNative } from '@mixan/sdk-native'; +// import { OpenpanelNative } from '@openpanel/sdk-native'; -const mixan = new MixanWeb({ +const openpanel = new OpenpanelWeb({ clientId: 'uuid', url: 'http://localhost:8080/api/sdk', batchInterval: 10000, @@ -96,7 +92,7 @@ const mixan = new MixanWeb({ trackIp: true, }); -// const mixan = new MixanNative({ +// const openpanel = new OpenpanelNative({ // clientId: 'uuid', // clientSecret: 'uuid', // url: 'http://localhost:8080/api/sdk', @@ -108,12 +104,12 @@ const mixan = new MixanWeb({ // Call this before you send any events // It will create a anonymous profile // This profile will be merged if you call `setUser` in a later stage -mixan.init(); +openpanel.init(); // tracks all outgoing links as a `link_out` event -mixan.trackOutgoingLinks(); +openpanel.trackOutgoingLinks(); -mixan.setUser({ +openpanel.setUser({ id: 'id', first_name: 'John', last_name: 'Doe', @@ -122,25 +118,25 @@ mixan.setUser({ }); // will upsert 'app_open' on user property and increment it -mixan.increment('app_open'); +openpanel.increment('app_open'); // will upsert 'app_open' on user property and increment it by 10 -mixan.increment('app_open', 10); +openpanel.increment('app_open', 10); // will upsert 'app_open' on user property and decrement it by 2 -mixan.decrement('app_open', 2); +openpanel.decrement('app_open', 2); // send a sign_in event -mixan.event('sign_in'); +openpanel.event('sign_in'); // send a sign_in event with properties -mixan.event('sign_in', { +openpanel.event('sign_in', { provider: 'gmail', }); // Screen view for web -mixan.screenView(); +openpanel.screenView(); // Screen view for native -mixan.screenView('Article', { +openpanel.screenView('Article', { id: '3', title: 'Nice article here', }); @@ -148,10 +144,10 @@ mixan.screenView('Article', { // Call this when a user is logged out. // This will just make sure you do not send // the associated profile id for the next events -mixan.clear(); +openpanel.clear(); ``` -## @mixan/dashboard +## @openpanel/dashboard A nextjs web app. Collects all events and your gui to analyze your data. diff --git a/apps/api/package.json b/apps/api/package.json index 3c226a19..348016a3 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/api", + "name": "@openpanel/api", "version": "0.0.1", "scripts": { "dev": "dotenv -e ../../.env -c -v WATCH=1 tsup", @@ -14,10 +14,10 @@ "@fastify/cors": "^9.0.0", "@fastify/websocket": "^8.3.1", "@logtail/pino": "^0.4.19", - "@mixan/common": "workspace:*", - "@mixan/db": "workspace:*", - "@mixan/queue": "workspace:*", - "@mixan/redis": "workspace:*", + "@openpanel/common": "workspace:*", + "@openpanel/db": "workspace:*", + "@openpanel/queue": "workspace:*", + "@openpanel/redis": "workspace:*", "fastify": "^4.25.2", "ico-to-png": "^0.2.1", "pino": "^8.17.2", @@ -28,10 +28,10 @@ "uuid": "^9.0.1" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/sdk": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/sdk": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@types/ramda": "^0.29.6", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^9.0.8", @@ -44,8 +44,8 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base" + "@openpanel/eslint-config/base" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/api/scripts/test-events.ts b/apps/api/scripts/test-events.ts index 4fa0a234..06f12faf 100644 --- a/apps/api/scripts/test-events.ts +++ b/apps/api/scripts/test-events.ts @@ -1,44 +1,44 @@ -import { omit, prop, uniqBy } from 'ramda'; +import { omit, prop, uniqBy } from "ramda"; -import { generateProfileId, getTime, toISOString } from '@mixan/common'; -import type { Event, IServiceCreateEventPayload } from '@mixan/db'; +import { generateProfileId, getTime, toISOString } from "@openpanel/common"; +import type { Event, IServiceCreateEventPayload } from "@openpanel/db"; import { createEvent as createClickhouseEvent, db, formatClickhouseDate, getSalts, -} from '@mixan/db'; +} from "@openpanel/db"; -import { parseIp } from '../src/utils/parseIp'; -import { parseUserAgent } from '../src/utils/parseUserAgent'; +import { parseIp } from "../src/utils/parseIp"; +import { parseUserAgent } from "../src/utils/parseUserAgent"; const clean = omit([ - 'ip', - 'os', - 'ua', - 'url', - 'hash', - 'host', - 'path', - 'device', - 'screen', - 'hostname', - 'language', - 'referrer', - 'timezone', + "ip", + "os", + "ua", + "url", + "hash", + "host", + "path", + "device", + "screen", + "hostname", + "language", + "referrer", + "timezone", ]); async function main() { const events = await db.event.findMany({ where: { - project_id: '4e2798cb-e255-4e9d-960d-c9ad095aabd7', - name: 'screen_view', + project_id: "4e2798cb-e255-4e9d-960d-c9ad095aabd7", + name: "screen_view", createdAt: { - gte: new Date('2024-01-01'), - lt: new Date('2024-02-04'), + gte: new Date("2024-01-01"), + lt: new Date("2024-02-04"), }, }, orderBy: { - createdAt: 'asc', + createdAt: "asc", }, }); @@ -50,7 +50,7 @@ async function main() { const properties = event.properties as Record; - if (properties.ua?.includes('bot')) { + if (properties.ua?.includes("bot")) { // console.log('IGNORE', event.id); continue; } @@ -67,20 +67,20 @@ async function main() { } } - console.log('Total users', Object.keys(grouped).length); + console.log("Total users", Object.keys(grouped).length); let uidx = -1; for (const profile_id of Object.keys(grouped)) { uidx++; console.log(`User index ${uidx}`); - const events = uniqBy(prop('createdAt'), grouped[profile_id] || []); + const events = uniqBy(prop("createdAt"), grouped[profile_id] || []); if (events) { let lastSessionStart = null; let screenViews = 0; let totalDuration = 0; - console.log('new user...'); + console.log("new user..."); let eidx = -1; for (const event of events) { eidx++; @@ -93,7 +93,7 @@ async function main() { const projectId = event.project_id; const path = properties.path!; const ip = properties.ip!; - const origin = 'https://mixan.kiddo.se'; + const origin = "https://openpanel.kiddo.se"; const ua = properties.ua!; const uaInfo = parseUserAgent(ua); const salts = await getSalts(); @@ -133,8 +133,8 @@ async function main() { ? nextEvent.createdAt.getTime() - event.createdAt.getTime() : 0, path, - referrer: properties?.referrer?.host ?? '', // TODO - referrerName: properties?.referrer?.host ?? '', // TODO + referrer: properties?.referrer?.host ?? "", // TODO + referrerName: properties?.referrer?.host ?? "", // TODO }; if (!prevEventAt) { @@ -173,8 +173,8 @@ async function main() { async function createEvent(event: IServiceCreateEventPayload) { console.log( `Create ${event.name} - ${event.path} - ${formatClickhouseDate( - event.createdAt - )} - ${event.duration / 1000} sec` + event.createdAt, + )} - ${event.duration / 1000} sec`, ); await createClickhouseEvent(event); } @@ -183,7 +183,7 @@ async function createSessionStart(event: IServiceCreateEventPayload) { const session: IServiceCreateEventPayload = { ...event, duration: 0, - name: 'session_start', + name: "session_start", createdAt: toISOString(getTime(event.createdAt) - 100), }; @@ -197,7 +197,7 @@ async function createSessionEnd( options: { screenViews: number; totalDuration: number; - } + }, ) { const properties: Record = {}; if (options.screenViews === 1) { @@ -213,7 +213,7 @@ async function createSessionEnd( ...sessionStart.properties, }, duration: options.totalDuration, - name: 'session_end', + name: "session_end", createdAt: toISOString(prevEventAt.getTime() + 10), }; diff --git a/apps/api/src/controllers/event.controller.ts b/apps/api/src/controllers/event.controller.ts index d1fc64fc..3b49567f 100644 --- a/apps/api/src/controllers/event.controller.ts +++ b/apps/api/src/controllers/event.controller.ts @@ -1,19 +1,19 @@ -import { logger, logInfo, noop } from '@/utils/logger'; -import { getClientIp, parseIp } from '@/utils/parseIp'; -import { getReferrerWithQuery, parseReferrer } from '@/utils/parseReferrer'; -import { isUserAgentSet, parseUserAgent } from '@/utils/parseUserAgent'; -import { isSameDomain, parsePath } from '@/utils/url'; -import type { FastifyReply, FastifyRequest } from 'fastify'; -import { omit } from 'ramda'; -import { v4 as uuid } from 'uuid'; +import { logger, logInfo, noop } from "@/utils/logger"; +import { getClientIp, parseIp } from "@/utils/parseIp"; +import { getReferrerWithQuery, parseReferrer } from "@/utils/parseReferrer"; +import { isUserAgentSet, parseUserAgent } from "@/utils/parseUserAgent"; +import { isSameDomain, parsePath } from "@/utils/url"; +import type { FastifyReply, FastifyRequest } from "fastify"; +import { omit } from "ramda"; +import { v4 as uuid } from "uuid"; -import { generateDeviceId, getTime, toISOString } from '@mixan/common'; -import type { IServiceCreateEventPayload } from '@mixan/db'; -import { createEvent, getEvents, getSalts } from '@mixan/db'; -import type { JobsOptions } from '@mixan/queue'; -import { eventsQueue } from '@mixan/queue'; -import { findJobByPrefix } from '@mixan/queue/src/utils'; -import type { PostEventPayload } from '@mixan/sdk'; +import { generateDeviceId, getTime, toISOString } from "@openpanel/common"; +import type { IServiceCreateEventPayload } from "@openpanel/db"; +import { createEvent, getEvents, getSalts } from "@openpanel/db"; +import type { JobsOptions } from "@openpanel/queue"; +import { eventsQueue } from "@openpanel/queue"; +import { findJobByPrefix } from "@openpanel/queue/src/utils"; +import type { PostEventPayload } from "@openpanel/sdk"; const SESSION_TIMEOUT = 1000 * 60 * 30; const SESSION_END_TIMEOUT = SESSION_TIMEOUT + 1000; @@ -55,7 +55,7 @@ export async function postEvent( request: FastifyRequest<{ Body: PostEventPayload; }>, - reply: FastifyReply + reply: FastifyReply, ) { const contextLogger = createContextLogger(request); let deviceId: string | null = null; @@ -65,23 +65,23 @@ export async function postEvent( // replace thing is just for older sdks when we didn't have `__` // remove when kiddokitchen app (24.09.02) is not used anymore return ( - ((properties[name] || properties[name.replace('__', '')]) as + ((properties[name] || properties[name.replace("__", "")]) as | string | null | undefined) ?? undefined ); }; - const profileId = body.profileId ?? ''; + const profileId = body.profileId ?? ""; const createdAt = new Date(body.timestamp); - const url = getProperty('__path'); + const url = getProperty("__path"); const { path, hash, query } = parsePath(url); - const referrer = isSameDomain(getProperty('__referrer'), url) + const referrer = isSameDomain(getProperty("__referrer"), url) ? null - : parseReferrer(getProperty('__referrer')); + : parseReferrer(getProperty("__referrer")); const utmReferrer = getReferrerWithQuery(query); const ip = getClientIp(request)!; const origin = request.headers.origin!; - const ua = request.headers['user-agent']!; + const ua = request.headers["user-agent"]!; const uaInfo = parseUserAgent(ua); const salts = await getSalts(); const currentDeviceId = generateDeviceId({ @@ -101,66 +101,66 @@ export async function postEvent( if (isServerEvent) { const [event] = await withTiming( - 'Get last event (server-event)', + "Get last event (server-event)", getEvents( - `SELECT * FROM events WHERE name = 'screen_view' AND profile_id = '${profileId}' AND project_id = '${projectId}' ORDER BY created_at DESC LIMIT 1` - ) + `SELECT * FROM events WHERE name = 'screen_view' AND profile_id = '${profileId}' AND project_id = '${projectId}' ORDER BY created_at DESC LIMIT 1`, + ), ); - eventsQueue.add('event', { - type: 'createEvent', + eventsQueue.add("event", { + type: "createEvent", payload: { name: body.name, - deviceId: event?.deviceId || '', - sessionId: event?.sessionId || '', + deviceId: event?.deviceId || "", + sessionId: event?.sessionId || "", profileId, projectId, properties: Object.assign( {}, - omit(['__path', '__referrer'], properties), + omit(["__path", "__referrer"], properties), { hash, query, - } + }, ), createdAt, - country: event?.country ?? '', - city: event?.city ?? '', - region: event?.region ?? '', - continent: event?.continent ?? '', - os: event?.os ?? '', - osVersion: event?.osVersion ?? '', - browser: event?.browser ?? '', - browserVersion: event?.browserVersion ?? '', - device: event?.device ?? '', - brand: event?.brand ?? '', - model: event?.model ?? '', + country: event?.country ?? "", + city: event?.city ?? "", + region: event?.region ?? "", + continent: event?.continent ?? "", + os: event?.os ?? "", + osVersion: event?.osVersion ?? "", + browser: event?.browser ?? "", + browserVersion: event?.browserVersion ?? "", + device: event?.device ?? "", + brand: event?.brand ?? "", + model: event?.model ?? "", duration: 0, - path: event?.path ?? '', - referrer: event?.referrer ?? '', - referrerName: event?.referrerName ?? '', - referrerType: event?.referrerType ?? '', + path: event?.path ?? "", + referrer: event?.referrer ?? "", + referrerName: event?.referrerName ?? "", + referrerType: event?.referrerType ?? "", profile: undefined, meta: undefined, }, }); - return reply.status(200).send(''); + return reply.status(200).send(""); } const [geo, sessionEndJobCurrentDeviceId, sessionEndJobPreviousDeviceId] = await withTiming( - 'Get geo and jobs from queue', + "Get geo and jobs from queue", Promise.all([ parseIp(ip), findJobByPrefix( eventsQueue, - `sessionEnd:${projectId}:${currentDeviceId}:` + `sessionEnd:${projectId}:${currentDeviceId}:`, ), findJobByPrefix( eventsQueue, - `sessionEnd:${projectId}:${previousDeviceId}:` + `sessionEnd:${projectId}:${previousDeviceId}:`, ), - ]) + ]), ); const createSessionStart = @@ -178,9 +178,9 @@ export async function postEvent( deviceId = currentDeviceId; // Queue session end eventsQueue.add( - 'event', + "event", { - type: 'createSessionEnd', + type: "createSessionEnd", payload: { deviceId, }, @@ -188,27 +188,27 @@ export async function postEvent( { delay: SESSION_END_TIMEOUT, jobId: `sessionEnd:${projectId}:${deviceId}:${Date.now()}`, - } + }, ); } const [[sessionStartEvent], prevEventJob] = await withTiming( - 'Get session start event', + "Get session start event", Promise.all([ getEvents( - `SELECT * FROM events WHERE name = 'session_start' AND device_id = '${deviceId}' AND project_id = '${projectId}' ORDER BY created_at DESC LIMIT 1` + `SELECT * FROM events WHERE name = 'session_start' AND device_id = '${deviceId}' AND project_id = '${projectId}' ORDER BY created_at DESC LIMIT 1`, ), findJobByPrefix(eventsQueue, `event:${projectId}:${deviceId}:`), - ]) + ]), ); - const payload: Omit = { + const payload: Omit = { name: body.name, deviceId, profileId, projectId, - sessionId: createSessionStart ? uuid() : sessionStartEvent?.sessionId ?? '', - properties: Object.assign({}, omit(['__path', '__referrer'], properties), { + sessionId: createSessionStart ? uuid() : sessionStartEvent?.sessionId ?? "", + properties: Object.assign({}, omit(["__path", "__referrer"], properties), { hash, query, }), @@ -227,27 +227,27 @@ export async function postEvent( duration: 0, path: path, referrer: referrer?.url, - referrerName: referrer?.name ?? utmReferrer?.name ?? '', - referrerType: referrer?.type ?? utmReferrer?.type ?? '', + referrerName: referrer?.name ?? utmReferrer?.name ?? "", + referrerType: referrer?.type ?? utmReferrer?.type ?? "", profile: undefined, meta: undefined, }; const isDelayed = prevEventJob ? await prevEventJob?.isDelayed() : false; - if (isDelayed && prevEventJob && prevEventJob.data.type === 'createEvent') { + if (isDelayed && prevEventJob && prevEventJob.data.type === "createEvent") { const prevEvent = prevEventJob.data.payload; const duration = getTime(payload.createdAt) - getTime(prevEvent.createdAt); - contextLogger.add('prevEvent', prevEvent); + contextLogger.add("prevEvent", prevEvent); // Set path from prev screen_view event if current event is not a screen_view - if (payload.name != 'screen_view') { + if (payload.name != "screen_view") { payload.path = prevEvent.path; } - if (payload.name === 'screen_view') { + if (payload.name === "screen_view") { if (duration < 0) { - contextLogger.send('duration is wrong', { + contextLogger.send("duration is wrong", { payload, duration, }); @@ -255,21 +255,21 @@ export async function postEvent( // Skip update duration if it's wrong // Seems like request is not in right order await withTiming( - 'Update previous job with duration', + "Update previous job with duration", prevEventJob.updateData({ - type: 'createEvent', + type: "createEvent", payload: { ...prevEvent, duration, }, - }) + }), ); } - await withTiming('Promote previous job', prevEventJob.promote()); + await withTiming("Promote previous job", prevEventJob.promote()); } - } else if (payload.name !== 'screen_view') { - contextLogger.send('no previous job', { + } else if (payload.name !== "screen_view") { + contextLogger.send("no previous job", { prevEventJob, payload, }); @@ -278,23 +278,23 @@ export async function postEvent( if (createSessionStart) { // We do not need to queue session_start await withTiming( - 'Create session start event', + "Create session start event", createEvent({ ...payload, - name: 'session_start', + name: "session_start", // @ts-expect-error createdAt: toISOString(getTime(payload.createdAt) - 100), - }) + }), ); } const options: JobsOptions = {}; - if (payload.name === 'screen_view') { + if (payload.name === "screen_view") { options.delay = SESSION_TIMEOUT; options.jobId = `event:${projectId}:${deviceId}:${Date.now()}`; } - contextLogger.send('event is queued', { + contextLogger.send("event is queued", { ip, origin, ua, @@ -312,14 +312,14 @@ export async function postEvent( // Queue current event eventsQueue .add( - 'event', + "event", { - type: 'createEvent', + type: "createEvent", payload, }, - options + options, ) - .catch(noop('Failed to queue event')); + .catch(noop("Failed to queue event")); reply.status(202).send(deviceId); } diff --git a/apps/api/src/controllers/live.controller.ts b/apps/api/src/controllers/live.controller.ts index 3949218b..08db054e 100644 --- a/apps/api/src/controllers/live.controller.ts +++ b/apps/api/src/controllers/live.controller.ts @@ -1,13 +1,13 @@ -import type { FastifyReply, FastifyRequest } from 'fastify'; -import type * as WebSocket from 'ws'; +import type { FastifyReply, FastifyRequest } from "fastify"; +import type * as WebSocket from "ws"; -import { getSafeJson } from '@mixan/common'; -import type { IServiceCreateEventPayload } from '@mixan/db'; -import { getEvents, getLiveVisitors } from '@mixan/db'; -import { redis, redisPub, redisSub } from '@mixan/redis'; +import { getSafeJson } from "@openpanel/common"; +import type { IServiceCreateEventPayload } from "@openpanel/db"; +import { getEvents, getLiveVisitors } from "@openpanel/db"; +import { redis, redisPub, redisSub } from "@openpanel/redis"; export function getLiveEventInfo(key: string) { - return key.split(':').slice(2) as [string, string]; + return key.split(":").slice(2) as [string, string]; } export async function test( @@ -16,20 +16,20 @@ export async function test( projectId: string; }; }>, - reply: FastifyReply + reply: FastifyReply, ) { const [event] = await getEvents( - `SELECT * FROM events WHERE project_id = '${req.params.projectId}' AND name = 'screen_view' LIMIT 1` + `SELECT * FROM events WHERE project_id = '${req.params.projectId}' AND name = 'screen_view' LIMIT 1`, ); if (!event) { - return reply.status(404).send('No event found'); + return reply.status(404).send("No event found"); } - redisPub.publish('event', JSON.stringify(event)); + redisPub.publish("event", JSON.stringify(event)); redis.set( `live:event:${event.projectId}:${Math.random() * 1000}`, - '', - 'EX', - 10 + "", + "EX", + 10, ); reply.status(202).send(event); } @@ -42,15 +42,15 @@ export function wsVisitors( Params: { projectId: string; }; - }> + }>, ) { const { params } = req; - redisSub.subscribe('event'); - redisSub.psubscribe('__key*:expired'); + redisSub.subscribe("event"); + redisSub.psubscribe("__key*:expired"); const message = (channel: string, message: string) => { - if (channel === 'event') { + if (channel === "event") { const event = getSafeJson(message); if (event?.projectId === params.projectId) { getLiveVisitors(params.projectId).then((count) => { @@ -68,14 +68,14 @@ export function wsVisitors( } }; - redisSub.on('message', message); - redisSub.on('pmessage', pmessage); + redisSub.on("message", message); + redisSub.on("pmessage", pmessage); - connection.socket.on('close', () => { - redisSub.unsubscribe('event'); - redisSub.punsubscribe('__key*:expired'); - redisSub.off('message', message); - redisSub.off('pmessage', pmessage); + connection.socket.on("close", () => { + redisSub.unsubscribe("event"); + redisSub.punsubscribe("__key*:expired"); + redisSub.off("message", message); + redisSub.off("pmessage", pmessage); }); } @@ -87,11 +87,11 @@ export function wsEvents( Params: { projectId: string; }; - }> + }>, ) { const { params } = req; - redisSub.subscribe('event'); + redisSub.subscribe("event"); const message = (channel: string, message: string) => { const event = getSafeJson(message); @@ -100,10 +100,10 @@ export function wsEvents( } }; - redisSub.on('message', message); + redisSub.on("message", message); - connection.socket.on('close', () => { - redisSub.unsubscribe('event'); - redisSub.off('message', message); + connection.socket.on("close", () => { + redisSub.unsubscribe("event"); + redisSub.off("message", message); }); } diff --git a/apps/api/src/controllers/misc.controller.ts b/apps/api/src/controllers/misc.controller.ts index e4e4a090..daa3ee7b 100644 --- a/apps/api/src/controllers/misc.controller.ts +++ b/apps/api/src/controllers/misc.controller.ts @@ -1,9 +1,9 @@ -import type { FastifyReply, FastifyRequest } from 'fastify'; -import icoToPng from 'ico-to-png'; -import sharp from 'sharp'; +import type { FastifyReply, FastifyRequest } from "fastify"; +import icoToPng from "ico-to-png"; +import sharp from "sharp"; -import { createHash } from '@mixan/common'; -import { redis } from '@mixan/redis'; +import { createHash } from "@openpanel/common"; +import { redis } from "@openpanel/redis"; interface GetFaviconParams { url: string; @@ -12,9 +12,9 @@ interface GetFaviconParams { async function getImageBuffer(url: string) { try { const res = await fetch(url); - const contentType = res.headers.get('content-type'); + const contentType = res.headers.get("content-type"); - if (!contentType?.includes('image')) { + if (!contentType?.includes("image")) { return null; } @@ -22,7 +22,7 @@ async function getImageBuffer(url: string) { return null; } - if (contentType === 'image/x-icon' || url.endsWith('.ico')) { + if (contentType === "image/x-icon" || url.endsWith(".ico")) { const arrayBuffer = await res.arrayBuffer(); const buffer = Buffer.from(arrayBuffer); return await icoToPng(buffer, 30); @@ -30,36 +30,36 @@ async function getImageBuffer(url: string) { return await sharp(await res.arrayBuffer()) .resize(30, 30, { - fit: 'cover', + fit: "cover", }) .png() .toBuffer(); } catch (e) { - console.log('Failed to get image from url', url); + console.log("Failed to get image from url", url); console.log(e); } } -const imageExtensions = ['svg', 'png', 'jpg', 'jpeg', 'gif', 'webp', 'ico']; +const imageExtensions = ["svg", "png", "jpg", "jpeg", "gif", "webp", "ico"]; export async function getFavicon( request: FastifyRequest<{ Querystring: GetFaviconParams; }>, - reply: FastifyReply + reply: FastifyReply, ) { function sendBuffer(buffer: Buffer, cacheKey?: string) { if (cacheKey) { - redis.set(`favicon:${cacheKey}`, buffer.toString('base64')); + redis.set(`favicon:${cacheKey}`, buffer.toString("base64")); } - reply.type('image/png'); - console.log('buffer', buffer.byteLength); + reply.type("image/png"); + console.log("buffer", buffer.byteLength); return reply.send(buffer); } if (!request.query.url) { - return reply.status(404).send('Not found'); + return reply.status(404).send("Not found"); } const url = decodeURIComponent(request.query.url); @@ -69,7 +69,7 @@ export async function getFavicon( const cacheKey = createHash(url, 32); const cache = await redis.get(`favicon:${cacheKey}`); if (cache) { - return sendBuffer(Buffer.from(cache, 'base64')); + return sendBuffer(Buffer.from(cache, "base64")); } const buffer = await getImageBuffer(url); if (buffer && buffer.byteLength > 0) { @@ -80,7 +80,7 @@ export async function getFavicon( const { hostname, origin } = new URL(url); const cache = await redis.get(`favicon:${hostname}`); if (cache) { - return sendBuffer(Buffer.from(cache, 'base64')); + return sendBuffer(Buffer.from(cache, "base64")); } // TRY FAVICON.ICO @@ -94,7 +94,7 @@ export async function getFavicon( function findFavicon(res: string) { const match = res.match( - /(\|\)/ + /(\|\)/, ); if (!match) { return null; @@ -112,16 +112,16 @@ export async function getFavicon( } } - return reply.status(404).send('Not found'); + return reply.status(404).send("Not found"); } export async function clearFavicons( request: FastifyRequest, - reply: FastifyReply + reply: FastifyReply, ) { - const keys = await redis.keys('favicon:*'); + const keys = await redis.keys("favicon:*"); for (const key of keys) { await redis.del(key); } - return reply.status(404).send('OK'); + return reply.status(404).send("OK"); } diff --git a/apps/api/src/controllers/profile.controller.ts b/apps/api/src/controllers/profile.controller.ts index e4edd42a..14befafb 100644 --- a/apps/api/src/controllers/profile.controller.ts +++ b/apps/api/src/controllers/profile.controller.ts @@ -1,21 +1,24 @@ -import { getClientIp, parseIp } from '@/utils/parseIp'; -import { isUserAgentSet, parseUserAgent } from '@/utils/parseUserAgent'; -import type { FastifyReply, FastifyRequest } from 'fastify'; -import { assocPath, pathOr } from 'ramda'; +import { getClientIp, parseIp } from "@/utils/parseIp"; +import { isUserAgentSet, parseUserAgent } from "@/utils/parseUserAgent"; +import type { FastifyReply, FastifyRequest } from "fastify"; +import { assocPath, pathOr } from "ramda"; -import { getProfileById, upsertProfile } from '@mixan/db'; -import type { IncrementProfilePayload, UpdateProfilePayload } from '@mixan/sdk'; +import { getProfileById, upsertProfile } from "@openpanel/db"; +import type { + IncrementProfilePayload, + UpdateProfilePayload, +} from "@openpanel/sdk"; export async function updateProfile( request: FastifyRequest<{ Body: UpdateProfilePayload; }>, - reply: FastifyReply + reply: FastifyReply, ) { const { profileId, properties, ...rest } = request.body; const projectId = request.projectId; const ip = getClientIp(request)!; - const ua = request.headers['user-agent']!; + const ua = request.headers["user-agent"]!; const uaInfo = parseUserAgent(ua); const geo = await parseIp(ip); @@ -37,29 +40,29 @@ export async function incrementProfileProperty( request: FastifyRequest<{ Body: IncrementProfilePayload; }>, - reply: FastifyReply + reply: FastifyReply, ) { const { profileId, property, value } = request.body; const projectId = request.projectId; const profile = await getProfileById(profileId); if (!profile) { - return reply.status(404).send('Not found'); + return reply.status(404).send("Not found"); } const parsed = parseInt( - pathOr('0', property.split('.'), profile.properties), - 10 + pathOr("0", property.split("."), profile.properties), + 10, ); if (isNaN(parsed)) { - return reply.status(400).send('Not number'); + return reply.status(400).send("Not number"); } profile.properties = assocPath( - property.split('.'), + property.split("."), parsed + value, - profile.properties + profile.properties, ); await upsertProfile({ @@ -75,29 +78,29 @@ export async function decrementProfileProperty( request: FastifyRequest<{ Body: IncrementProfilePayload; }>, - reply: FastifyReply + reply: FastifyReply, ) { const { profileId, property, value } = request.body; const projectId = request.projectId; const profile = await getProfileById(profileId); if (!profile) { - return reply.status(404).send('Not found'); + return reply.status(404).send("Not found"); } const parsed = parseInt( - pathOr('0', property.split('.'), profile.properties), - 10 + pathOr("0", property.split("."), profile.properties), + 10, ); if (isNaN(parsed)) { - return reply.status(400).send('Not number'); + return reply.status(400).send("Not number"); } profile.properties = assocPath( - property.split('.'), + property.split("."), parsed - value, - profile.properties + profile.properties, ); await upsertProfile({ diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 6197eeb0..3b53201b 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -1,43 +1,43 @@ -import cors from '@fastify/cors'; -import Fastify from 'fastify'; +import cors from "@fastify/cors"; +import Fastify from "fastify"; -import { redisPub } from '@mixan/redis'; +import { redisPub } from "@openpanel/redis"; -import eventRouter from './routes/event.router'; -import liveRouter from './routes/live.router'; -import miscRouter from './routes/misc.router'; -import profileRouter from './routes/profile.router'; -import { logger, logInfo } from './utils/logger'; +import eventRouter from "./routes/event.router"; +import liveRouter from "./routes/live.router"; +import miscRouter from "./routes/misc.router"; +import profileRouter from "./routes/profile.router"; +import { logger, logInfo } from "./utils/logger"; -declare module 'fastify' { +declare module "fastify" { interface FastifyRequest { projectId: string; } } -const port = parseInt(process.env.API_PORT || '3000', 10); +const port = parseInt(process.env.API_PORT || "3000", 10); const startServer = async () => { - logInfo('Starting server'); + logInfo("Starting server"); try { const fastify = Fastify({ logger: logger, }); fastify.register(cors, { - origin: '*', + origin: "*", }); - fastify.decorateRequest('projectId', ''); - fastify.register(eventRouter, { prefix: '/event' }); - fastify.register(profileRouter, { prefix: '/profile' }); - fastify.register(liveRouter, { prefix: '/live' }); - fastify.register(miscRouter, { prefix: '/misc' }); + fastify.decorateRequest("projectId", ""); + fastify.register(eventRouter, { prefix: "/event" }); + fastify.register(profileRouter, { prefix: "/profile" }); + fastify.register(liveRouter, { prefix: "/live" }); + fastify.register(miscRouter, { prefix: "/misc" }); fastify.setErrorHandler((error, request, reply) => { fastify.log.error(error); }); - fastify.get('/', (request, reply) => { - reply.send({ name: 'openpanel sdk api' }); + fastify.get("/", (request, reply) => { + reply.send({ name: "openpanel sdk api" }); }); // fastify.get('/health-check', async (request, reply) => { // try { @@ -47,8 +47,8 @@ const startServer = async () => { // reply.status(500).send() // } // }) - if (process.env.NODE_ENV === 'production') { - for (const signal of ['SIGINT', 'SIGTERM']) { + if (process.env.NODE_ENV === "production") { + for (const signal of ["SIGINT", "SIGTERM"]) { process.on(signal, (err) => { logger.fatal(err, `uncaught exception detected ${signal}`); fastify.close().then((err) => { @@ -59,12 +59,12 @@ const startServer = async () => { } await fastify.listen({ - host: process.env.NODE_ENV === 'production' ? '0.0.0.0' : 'localhost', + host: process.env.NODE_ENV === "production" ? "0.0.0.0" : "localhost", port, }); // Notify when keys expires - redisPub.config('SET', 'notify-keyspace-events', 'Ex'); + redisPub.config("SET", "notify-keyspace-events", "Ex"); } catch (e) { console.error(e); } diff --git a/apps/api/src/routes/event.router.ts b/apps/api/src/routes/event.router.ts index 0a476b5c..fffc39be 100644 --- a/apps/api/src/routes/event.router.ts +++ b/apps/api/src/routes/event.router.ts @@ -1,56 +1,56 @@ -import { isBot } from '@/bots'; -import * as controller from '@/controllers/event.controller'; -import { validateSdkRequest } from '@/utils/auth'; -import type { FastifyPluginCallback, FastifyRequest } from 'fastify'; +import { isBot } from "@/bots"; +import * as controller from "@/controllers/event.controller"; +import { validateSdkRequest } from "@/utils/auth"; +import type { FastifyPluginCallback, FastifyRequest } from "fastify"; -import { createBotEvent } from '@mixan/db'; -import type { PostEventPayload } from '@mixan/sdk'; +import { createBotEvent } from "@openpanel/db"; +import type { PostEventPayload } from "@openpanel/sdk"; const eventRouter: FastifyPluginCallback = (fastify, opts, done) => { fastify.addHook( - 'preHandler', + "preHandler", async ( req: FastifyRequest<{ Body: PostEventPayload; }>, - reply + reply, ) => { try { const projectId = await validateSdkRequest(req.headers); req.projectId = projectId; - const bot = req.headers['user-agent'] - ? isBot(req.headers['user-agent']) + const bot = req.headers["user-agent"] + ? isBot(req.headers["user-agent"]) : null; if (bot) { const path = (req.body?.properties?.__path || req.body?.properties?.path) as string | undefined; - req.log.warn({ ...req.headers, bot }, 'Bot detected (event)'); + req.log.warn({ ...req.headers, bot }, "Bot detected (event)"); await createBotEvent({ ...bot, projectId, - path: path ?? '', + path: path ?? "", createdAt: new Date(req.body?.timestamp), }); - reply.status(202).send('OK'); + reply.status(202).send("OK"); } } catch (e) { - req.log.error(e, 'Failed to create bot event'); + req.log.error(e, "Failed to create bot event"); reply.status(401).send(); return; } - } + }, ); fastify.route({ - method: 'POST', - url: '/', + method: "POST", + url: "/", handler: controller.postEvent, }); fastify.route({ - method: 'GET', - url: '/', + method: "GET", + url: "/", handler: controller.postEvent, }); done(); diff --git a/apps/api/src/utils/auth.ts b/apps/api/src/utils/auth.ts index 2a106720..825396d4 100644 --- a/apps/api/src/utils/auth.ts +++ b/apps/api/src/utils/auth.ts @@ -1,13 +1,13 @@ import type { RawRequestDefaultExpression } from 'fastify'; -import { verifyPassword } from '@mixan/common'; -import { db } from '@mixan/db'; +import { verifyPassword } from '@openpanel/common'; +import { db } from '@openpanel/db'; export async function validateSdkRequest( headers: RawRequestDefaultExpression['headers'] ): Promise { - const clientId = headers['mixan-client-id'] as string; - const clientSecret = headers['mixan-client-secret'] as string; + const clientId = headers['openpanel-client-id'] as string; + const clientSecret = headers['openpanel-client-secret'] as string; const origin = headers.origin; if (!clientId) { throw new Error('Misisng client id'); diff --git a/apps/api/src/utils/parseReferrer.ts b/apps/api/src/utils/parseReferrer.ts index 39c8d83d..0ff61a1b 100644 --- a/apps/api/src/utils/parseReferrer.ts +++ b/apps/api/src/utils/parseReferrer.ts @@ -1,41 +1,41 @@ -import { stripTrailingSlash } from '@mixan/common'; +import { stripTrailingSlash } from "@openpanel/common"; -import referrers from '../referrers'; +import referrers from "../referrers"; function getHostname(url: string | undefined) { if (!url) { - return ''; + return ""; } try { return new URL(url).hostname; } catch (e) { - return ''; + return ""; } } export function parseReferrer(url: string | undefined) { const hostname = getHostname(url); - const match = referrers[hostname] ?? referrers[hostname.replace('www.', '')]; + const match = referrers[hostname] ?? referrers[hostname.replace("www.", "")]; return { - name: match?.name ?? '', - type: match?.type ?? 'unknown', - url: stripTrailingSlash(url ?? ''), + name: match?.name ?? "", + type: match?.type ?? "unknown", + url: stripTrailingSlash(url ?? ""), }; } export function getReferrerWithQuery( - query: Record | undefined + query: Record | undefined, ) { if (!query) { return null; } - const source = query.utm_source ?? query.ref ?? query.utm_referrer ?? ''; + const source = query.utm_source ?? query.ref ?? query.utm_referrer ?? ""; const match = Object.values(referrers).find( - (referrer) => referrer.name.toLowerCase() === source?.toLowerCase() + (referrer) => referrer.name.toLowerCase() === source?.toLowerCase(), ); if (!match) { @@ -45,6 +45,6 @@ export function getReferrerWithQuery( return { name: match.name, type: match.type, - url: '', + url: "", }; } diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 73b1bbe4..a291eef2 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/apps/api/tsup.config.ts b/apps/api/tsup.config.ts index 9a320b05..12e0eb1b 100644 --- a/apps/api/tsup.config.ts +++ b/apps/api/tsup.config.ts @@ -4,7 +4,7 @@ import type { Options } from 'tsup'; const options: Options = { clean: true, entry: ['src/index.ts'], - noExternal: [/^@mixan\/.*$/u, /^@\/.*$/u], + noExternal: [/^@openpanel\/.*$/u, /^@\/.*$/u], sourcemap: true, splitting: false, }; diff --git a/apps/dashboard/next.config.mjs b/apps/dashboard/next.config.mjs index e5bcbe13..6c2cd5a9 100644 --- a/apps/dashboard/next.config.mjs +++ b/apps/dashboard/next.config.mjs @@ -7,7 +7,7 @@ await import('./src/env.mjs'); /** @type {import("next").NextConfig} */ const config = { reactStrictMode: true, - transpilePackages: ['@mixan/queue'], + transpilePackages: ['@openpanel/queue'], eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, experimental: { diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 6781ebdd..2799069e 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/dashboard", + "name": "@openpanel/dashboard", "version": "0.1.0", "private": true, "scripts": { @@ -16,11 +16,11 @@ "@clerk/nextjs": "^4.29.7", "@clickhouse/client": "^0.2.9", "@hookform/resolvers": "^3.3.4", - "@mixan/common": "workspace:^", - "@mixan/constants": "workspace:^", - "@mixan/db": "workspace:^", - "@mixan/queue": "workspace:^", - "@mixan/validation": "workspace:^", + "@openpanel/common": "workspace:^", + "@openpanel/constants": "workspace:^", + "@openpanel/db": "workspace:^", + "@openpanel/queue": "workspace:^", + "@openpanel/validation": "workspace:^", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-aspect-ratio": "^1.0.3", @@ -93,9 +93,9 @@ "zod": "^3.22.4" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@types/bcrypt": "^5.0.2", "@types/lodash.debounce": "^4.0.9", "@types/lodash.throttle": "^4.1.9", @@ -121,10 +121,10 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base", - "@mixan/eslint-config/react", - "@mixan/eslint-config/nextjs" + "@openpanel/eslint-config/base", + "@openpanel/eslint-config/react", + "@openpanel/eslint-config/nextjs" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx index a37d3032..13be6c69 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/list-reports.tsx @@ -13,15 +13,14 @@ import { } from '@/components/ui/dropdown-menu'; import { useAppParams } from '@/hooks/useAppParams'; import { cn } from '@/utils/cn'; -import { ChevronRight, MoreHorizontal, PlusIcon, Trash } from 'lucide-react'; -import Link from 'next/link'; -import { useRouter } from 'next/navigation'; - import { getDefaultIntervalByDates, getDefaultIntervalByRange, -} from '@mixan/constants'; -import type { getReportsByDashboardId } from '@mixan/db'; +} from '@openpanel/constants'; +import type { getReportsByDashboardId } from '@openpanel/db'; +import { ChevronRight, MoreHorizontal, PlusIcon, Trash } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; import { OverviewReportRange } from '../../overview-sticky-header'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx index d2a27ba2..5bf0b73a 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/[dashboardId]/page.tsx @@ -1,9 +1,8 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; +import { getDashboardById, getReportsByDashboardId } from '@openpanel/db'; import { notFound } from 'next/navigation'; -import { getDashboardById, getReportsByDashboardId } from '@mixan/db'; - import { ListReports } from './list-reports'; interface PageProps { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx index 73ab9ecb..c035e02e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/list-dashboards.tsx @@ -7,13 +7,12 @@ import { Button } from '@/components/ui/button'; import { ToastAction } from '@/components/ui/toast'; import { useAppParams } from '@/hooks/useAppParams'; import { pushModal } from '@/modals'; +import type { IServiceDashboards } from '@openpanel/db'; import { LayoutPanelTopIcon, Pencil, PlusIcon, Trash } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; -import type { IServiceDashboards } from '@mixan/db'; - interface ListDashboardsProps { dashboards: IServiceDashboards; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx index 71275e46..e3025033 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/dashboards/page.tsx @@ -1,7 +1,6 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; - -import { getDashboardsByProjectId } from '@mixan/db'; +import { getDashboardsByProjectId } from '@openpanel/db'; import { HeaderDashboards } from './header-dashboards'; import { ListDashboards } from './list-dashboards'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-chart.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-chart.tsx index 59f9c5c4..445b21ee 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-chart.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-chart.tsx @@ -1,6 +1,5 @@ import { ChartSwitchShortcut } from '@/components/report/chart'; - -import type { IChartEvent } from '@mixan/validation'; +import type { IChartEvent } from '@openpanel/validation'; interface Props { projectId: string; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-details.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-details.tsx index 8d980e78..b06b4892 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-details.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-details.tsx @@ -13,10 +13,9 @@ import { useEventQueryFilters, useEventQueryNamesFilter, } from '@/hooks/useEventQueryFilters'; +import type { IServiceCreateEventPayload } from '@openpanel/db'; import { round } from 'mathjs'; -import type { IServiceCreateEventPayload } from '@mixan/db'; - interface Props { event: IServiceCreateEventPayload; open: boolean; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-edit.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-edit.tsx index 0180124e..28836790 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-edit.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-edit.tsx @@ -12,11 +12,10 @@ import { SheetTitle, } from '@/components/ui/sheet'; import { cn } from '@/utils/cn'; +import type { IServiceCreateEventPayload } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; -import type { IServiceCreateEventPayload } from '@mixan/db'; - import { EventIconColors, EventIconMapper, diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-icon.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-icon.tsx index 8cf7a438..186f348c 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-icon.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-icon.tsx @@ -12,6 +12,7 @@ import { SheetTrigger, } from '@/components/ui/sheet'; import { cn } from '@/utils/cn'; +import type { EventMeta } from '@openpanel/db'; import type { VariantProps } from 'class-variance-authority'; import { cva } from 'class-variance-authority'; import type { LucideIcon } from 'lucide-react'; @@ -19,8 +20,6 @@ import * as Icons from 'lucide-react'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; -import type { EventMeta } from '@mixan/db'; - const variants = cva('flex items-center justify-center shrink-0 rounded-full', { variants: { size: { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx index 36d7a835..272fa67e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list-item.tsx @@ -9,8 +9,7 @@ import { useEventQueryFilters } from '@/hooks/useEventQueryFilters'; import { useNumber } from '@/hooks/useNumerFormatter'; import { cn } from '@/utils/cn'; import { getProfileName } from '@/utils/getters'; - -import type { IServiceCreateEventPayload } from '@mixan/db'; +import type { IServiceCreateEventPayload } from '@openpanel/db'; import { EventDetails } from './event-details'; import { EventEdit } from './event-edit'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list.tsx index bb9d28f4..2fff9d84 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-list.tsx @@ -8,11 +8,10 @@ import { Button } from '@/components/ui/button'; import { useAppParams } from '@/hooks/useAppParams'; import { useCursor } from '@/hooks/useCursor'; import { useEventQueryFilters } from '@/hooks/useEventQueryFilters'; +import type { IServiceCreateEventPayload } from '@openpanel/db'; import { isSameDay } from 'date-fns'; import { GanttChartIcon } from 'lucide-react'; -import type { IServiceCreateEventPayload } from '@mixan/db'; - import { EventListItem } from './event-list-item'; import EventListener from './event-listener'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-listener.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-listener.tsx index 09004ab8..6ea7627d 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-listener.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/event-listener.tsx @@ -8,14 +8,13 @@ import { } from '@/components/ui/tooltip'; import { useAppParams } from '@/hooks/useAppParams'; import { cn } from '@/utils/cn'; +import type { IServiceCreateEventPayload } from '@openpanel/db'; import { useQueryClient } from '@tanstack/react-query'; import dynamic from 'next/dynamic'; import { useRouter } from 'next/navigation'; import useWebSocket from 'react-use-websocket'; import { toast } from 'sonner'; -import type { IServiceCreateEventPayload } from '@mixan/db'; - const AnimatedNumbers = dynamic(() => import('react-animated-numbers'), { ssr: false, loading: () =>
0
, diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx index 6e1802cd..69f19d6f 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/events/page.tsx @@ -6,10 +6,9 @@ import { eventQueryNamesFilter, } from '@/hooks/useEventQueryFilters'; import { getExists } from '@/server/pageExists'; +import { getEventList, getEventsCount } from '@openpanel/db'; import { parseAsInteger } from 'nuqs'; -import { getEventList, getEventsCount } from '@mixan/db'; - import { StickyBelowHeader } from '../layout-sticky-below-header'; import { EventChart } from './event-chart'; import { EventList } from './event-list'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-menu.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-menu.tsx index 6ba50d42..f0028c59 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-menu.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-menu.tsx @@ -4,6 +4,7 @@ import { useEffect } from 'react'; import { useAppParams } from '@/hooks/useAppParams'; import { cn } from '@/utils/cn'; import { useUser } from '@clerk/nextjs'; +import type { IServiceDashboards } from '@openpanel/db'; import { BuildingIcon, CogIcon, @@ -20,8 +21,6 @@ import type { LucideProps } from 'lucide-react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; -import type { IServiceDashboards } from '@mixan/db'; - function LinkWithIcon({ href, icon: Icon, diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx index 5461aaa8..8ce1c010 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-organization-selector.tsx @@ -2,11 +2,10 @@ import { Combobox } from '@/components/ui/combobox'; import { useAppParams } from '@/hooks/useAppParams'; +import type { IServiceOrganization } from '@openpanel/db'; import { Building } from 'lucide-react'; import { useRouter } from 'next/navigation'; -import type { IServiceOrganization } from '@mixan/db'; - interface LayoutOrganizationSelectorProps { organizations: IServiceOrganization[]; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx index 8232925a..5b180cf1 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-project-selector.tsx @@ -2,10 +2,9 @@ import { Combobox } from '@/components/ui/combobox'; import { useAppParams } from '@/hooks/useAppParams'; +import type { getProjectsByOrganizationSlug } from '@openpanel/db'; import { usePathname, useRouter } from 'next/navigation'; -import type { getProjectsByOrganizationSlug } from '@mixan/db'; - interface LayoutProjectSelectorProps { projects: Awaited>; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx index cef271f4..71970307 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout-sidebar.tsx @@ -4,13 +4,12 @@ import { useEffect, useState } from 'react'; import { Logo } from '@/components/Logo'; import { buttonVariants } from '@/components/ui/button'; import { cn } from '@/utils/cn'; +import type { IServiceDashboards, IServiceOrganization } from '@openpanel/db'; import { Rotate as Hamburger } from 'hamburger-react'; import { PlusIcon } from 'lucide-react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; -import type { IServiceDashboards, IServiceOrganization } from '@mixan/db'; - import LayoutMenu from './layout-menu'; import LayoutOrganizationSelector from './layout-organization-selector'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx index a4fd55ef..e1667260 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/layout.tsx @@ -2,7 +2,7 @@ import { getCurrentOrganizations, getDashboardsByOrganization, getDashboardsByProjectId, -} from '@mixan/db'; +} from '@openpanel/db'; import { LayoutSidebar } from './layout-sidebar'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page-layout.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page-layout.tsx index c020f49c..a2959441 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page-layout.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page-layout.tsx @@ -1,4 +1,4 @@ -import { getProjectsByOrganizationSlug } from '@mixan/db'; +import { getProjectsByOrganizationSlug } from '@openpanel/db'; import LayoutProjectSelector from './layout-project-selector'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx index 03a4ed2d..33bfc9fe 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/page.tsx @@ -10,8 +10,7 @@ import OverviewTopGeo from '@/components/overview/overview-top-geo'; import OverviewTopPages from '@/components/overview/overview-top-pages'; import OverviewTopSources from '@/components/overview/overview-top-sources'; import { getExists } from '@/server/pageExists'; - -import { db } from '@mixan/db'; +import { db } from '@openpanel/db'; import OverviewMetrics from '../../../../components/overview/overview-metrics'; import { CreateClient } from './create-client'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx index 85dd4946..1bfe9b58 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/[profileId]/page.tsx @@ -12,17 +12,16 @@ import { import { getExists } from '@/server/pageExists'; import { cn } from '@/utils/cn'; import { getProfileName } from '@/utils/getters'; -import { notFound } from 'next/navigation'; -import { parseAsInteger, parseAsString } from 'nuqs'; - -import type { GetEventListOptions } from '@mixan/db'; +import type { GetEventListOptions } from '@openpanel/db'; import { getConversionEventNames, getEventList, getEventsCount, getProfileById, -} from '@mixan/db'; -import type { IChartEvent, IChartInput } from '@mixan/validation'; +} from '@openpanel/db'; +import type { IChartEvent, IChartInput } from '@openpanel/validation'; +import { notFound } from 'next/navigation'; +import { parseAsInteger, parseAsString } from 'nuqs'; import { EventList } from '../../events/event-list'; import { StickyBelowHeader } from '../../layout-sticky-below-header'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx index 6886730a..55f19bba 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/page.tsx @@ -3,10 +3,9 @@ import { OverviewFiltersButtons } from '@/components/overview/filters/overview-f import { OverviewFiltersDrawer } from '@/components/overview/filters/overview-filters-drawer'; import { eventQueryFiltersParser } from '@/hooks/useEventQueryFilters'; import { getExists } from '@/server/pageExists'; +import { getProfileList, getProfileListCount } from '@openpanel/db'; import { parseAsInteger } from 'nuqs'; -import { getProfileList, getProfileListCount } from '@mixan/db'; - import { StickyBelowHeader } from '../layout-sticky-below-header'; import { ProfileList } from './profile-list'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list-item.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list-item.tsx index e1219885..028e8a04 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list-item.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list-item.tsx @@ -6,8 +6,7 @@ import { KeyValue, KeyValueSubtle } from '@/components/ui/key-value'; import { useAppParams } from '@/hooks/useAppParams'; import { useEventQueryFilters } from '@/hooks/useEventQueryFilters'; import { getProfileName } from '@/utils/getters'; - -import type { IServiceProfile } from '@mixan/db'; +import type { IServiceProfile } from '@openpanel/db'; type ProfileListItemProps = IServiceProfile; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list.tsx index a0f29a1d..e783ab9d 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/profiles/profile-list.tsx @@ -6,10 +6,9 @@ import { Pagination } from '@/components/Pagination'; import { Button } from '@/components/ui/button'; import { useCursor } from '@/hooks/useCursor'; import { useEventQueryFilters } from '@/hooks/useEventQueryFilters'; +import type { IServiceProfile } from '@openpanel/db'; import { UsersIcon } from 'lucide-react'; -import type { IServiceProfile } from '@mixan/db'; - import { ProfileListItem } from './profile-list-item'; interface ProfileListProps { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx index a24f7d6a..5eb5ef32 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/[reportId]/page.tsx @@ -1,10 +1,9 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; +import { getOrganizationBySlug, getReportById } from '@openpanel/db'; import { Pencil } from 'lucide-react'; import { notFound } from 'next/navigation'; -import { getOrganizationBySlug, getReportById } from '@mixan/db'; - import ReportEditor from '../report-editor'; interface PageProps { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx index 4a97bcc5..1558745f 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/page.tsx @@ -1,10 +1,9 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; +import { getOrganizationBySlug } from '@openpanel/db'; import { Pencil } from 'lucide-react'; import { notFound } from 'next/navigation'; -import { getOrganizationBySlug } from '@mixan/db'; - import ReportEditor from './report-editor'; interface PageProps { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/report-editor.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/report-editor.tsx index 4b81c153..ad308f52 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/report-editor.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/reports/report-editor.tsx @@ -22,11 +22,10 @@ import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'; import { useAppParams } from '@/hooks/useAppParams'; import { useDispatch, useSelector } from '@/redux'; +import type { IServiceReport } from '@openpanel/db'; import { endOfDay, startOfDay } from 'date-fns'; import { GanttChartSquareIcon } from 'lucide-react'; -import type { IServiceReport } from '@mixan/db'; - interface ReportEditorProps { report: IServiceReport | null; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/list-clients.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/list-clients.tsx index 36a35df4..3dea79e4 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/list-clients.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/list-clients.tsx @@ -6,10 +6,9 @@ import { DataTable } from '@/components/DataTable'; import { Button } from '@/components/ui/button'; import { useAppParams } from '@/hooks/useAppParams'; import { pushModal } from '@/modals'; +import type { getClientsByOrganizationId } from '@openpanel/db'; import { PlusIcon } from 'lucide-react'; -import type { getClientsByOrganizationId } from '@mixan/db'; - interface ListClientsProps { clients: Awaited>; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/page.tsx index 2cfc1321..7f66f77e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/clients/page.tsx @@ -1,7 +1,6 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; - -import { getClientsByOrganizationId } from '@mixan/db'; +import { getClientsByOrganizationId } from '@openpanel/db'; import ListClients from './list-clients'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/edit-organization.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/edit-organization.tsx index c972ba90..21090a8e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/edit-organization.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/edit-organization.tsx @@ -4,13 +4,12 @@ import { api, handleError } from '@/app/_trpc/client'; import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { Widget, WidgetBody, WidgetHead } from '@/components/Widget'; +import type { getOrganizationBySlug } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { getOrganizationBySlug } from '@mixan/db'; - const validator = z.object({ id: z.string().min(2), name: z.string().min(2), diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invite-user.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invite-user.tsx index c221d811..4c058e0e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invite-user.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invite-user.tsx @@ -3,14 +3,13 @@ import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { useAppParams } from '@/hooks/useAppParams'; import { zodResolver } from '@hookform/resolvers/zod'; +import { zInviteUser } from '@openpanel/validation'; import { SendIcon } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import type { z } from 'zod'; -import { zInviteUser } from '@mixan/validation'; - type IForm = z.infer; export function InviteUser() { diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invited-users.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invited-users.tsx index 19a40c14..38835d4e 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invited-users.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/invited-users.tsx @@ -9,8 +9,7 @@ import { TableRow, } from '@/components/ui/table'; import { Widget, WidgetBody, WidgetHead } from '@/components/Widget'; - -import type { IServiceInvites } from '@mixan/db'; +import type { IServiceInvites } from '@openpanel/db'; import { InviteUser } from './invite-user'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/page.tsx index b7c2f794..cbc8edbe 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/organization/page.tsx @@ -1,9 +1,8 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { clerkClient } from '@clerk/nextjs'; +import { getInvites, getOrganizationBySlug } from '@openpanel/db'; import { notFound } from 'next/navigation'; -import { getInvites, getOrganizationBySlug } from '@mixan/db'; - import EditOrganization from './edit-organization'; import InvitedUsers from './invited-users'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/edit-profile.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/edit-profile.tsx index c404eb46..6adeea31 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/edit-profile.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/edit-profile.tsx @@ -5,13 +5,12 @@ import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { Widget, WidgetBody, WidgetHead } from '@/components/Widget'; import { zodResolver } from '@hookform/resolvers/zod'; +import type { getUserById } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { getUserById } from '@mixan/db'; - const validator = z.object({ firstName: z.string().min(2), lastName: z.string().min(2), diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx index 4399831b..1fb4d25d 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/profile/page.tsx @@ -1,8 +1,7 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; import { auth } from '@clerk/nextjs'; - -import { getUserById } from '@mixan/db'; +import { getUserById } from '@openpanel/db'; import EditProfile from './edit-profile'; import { Logout } from './logout'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx index d64854d1..deb3a173 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/list-projects.tsx @@ -6,10 +6,9 @@ import { columns } from '@/components/projects/table'; import { Button } from '@/components/ui/button'; import { useAppParams } from '@/hooks/useAppParams'; import { pushModal } from '@/modals'; +import type { getProjectsByOrganizationSlug } from '@openpanel/db'; import { PlusIcon } from 'lucide-react'; -import type { getProjectsByOrganizationSlug } from '@mixan/db'; - interface ListProjectsProps { projects: Awaited>; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx index 421aea11..b6976bb4 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/projects/page.tsx @@ -1,7 +1,6 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; - -import { getProjectsByOrganizationSlug } from '@mixan/db'; +import { getProjectsByOrganizationSlug } from '@openpanel/db'; import ListProjects from './list-projects'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/list-references.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/list-references.tsx index 383ccf07..d4270a29 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/list-references.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/list-references.tsx @@ -5,10 +5,9 @@ import { DataTable } from '@/components/DataTable'; import { columns } from '@/components/references/table'; import { Button } from '@/components/ui/button'; import { pushModal } from '@/modals'; +import type { IServiceReference } from '@openpanel/db'; import { PlusIcon } from 'lucide-react'; -import type { IServiceReference } from '@mixan/db'; - interface ListProjectsProps { data: IServiceReference[]; } diff --git a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx index bdfbaaa4..ca5e8c01 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/[projectId]/settings/references/page.tsx @@ -1,7 +1,6 @@ import PageLayout from '@/app/(app)/[organizationId]/[projectId]/page-layout'; import { getExists } from '@/server/pageExists'; - -import { getReferences } from '@mixan/db'; +import { getReferences } from '@openpanel/db'; import ListReferences from './list-references'; diff --git a/apps/dashboard/src/app/(app)/[organizationId]/page.tsx b/apps/dashboard/src/app/(app)/[organizationId]/page.tsx index 79b31737..1b1b08ba 100644 --- a/apps/dashboard/src/app/(app)/[organizationId]/page.tsx +++ b/apps/dashboard/src/app/(app)/[organizationId]/page.tsx @@ -1,11 +1,10 @@ import { LogoSquare } from '@/components/Logo'; import { ProjectCard } from '@/components/projects/project-card'; -import { notFound, redirect } from 'next/navigation'; - import { getOrganizationBySlug, getProjectsByOrganizationSlug, -} from '@mixan/db'; +} from '@openpanel/db'; +import { notFound, redirect } from 'next/navigation'; import { CreateProject } from './create-project'; diff --git a/apps/dashboard/src/app/(app)/page.tsx b/apps/dashboard/src/app/(app)/page.tsx index 5a0adc47..86a03e2b 100644 --- a/apps/dashboard/src/app/(app)/page.tsx +++ b/apps/dashboard/src/app/(app)/page.tsx @@ -1,10 +1,9 @@ // import { CreateOrganization } from '@clerk/nextjs'; import { LogoSquare } from '@/components/Logo'; +import { getCurrentOrganizations } from '@openpanel/db'; import { redirect } from 'next/navigation'; -import { getCurrentOrganizations } from '@mixan/db'; - import { CreateOrganization } from './create-organization'; export default async function Page() { diff --git a/apps/dashboard/src/app/(public)/share/overview/[id]/page.tsx b/apps/dashboard/src/app/(public)/share/overview/[id]/page.tsx index 90072576..c875dc85 100644 --- a/apps/dashboard/src/app/(public)/share/overview/[id]/page.tsx +++ b/apps/dashboard/src/app/(public)/share/overview/[id]/page.tsx @@ -11,10 +11,9 @@ import OverviewTopEvents from '@/components/overview/overview-top-events'; import OverviewTopGeo from '@/components/overview/overview-top-geo'; import OverviewTopPages from '@/components/overview/overview-top-pages'; import OverviewTopSources from '@/components/overview/overview-top-sources'; +import { getOrganizationBySlug, getShareOverviewById } from '@openpanel/db'; import { notFound } from 'next/navigation'; -import { getOrganizationBySlug, getShareOverviewById } from '@mixan/db'; - interface PageProps { params: { id: string; diff --git a/apps/dashboard/src/components/clients/ClientActions.tsx b/apps/dashboard/src/components/clients/ClientActions.tsx index 06be845d..20c1f38e 100644 --- a/apps/dashboard/src/components/clients/ClientActions.tsx +++ b/apps/dashboard/src/components/clients/ClientActions.tsx @@ -3,12 +3,11 @@ import { api } from '@/app/_trpc/client'; import { pushModal, showConfirm } from '@/modals'; import { clipboard } from '@/utils/clipboard'; +import type { IServiceClientWithProject } from '@openpanel/db'; import { MoreHorizontal } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; -import type { IServiceClientWithProject } from '@mixan/db'; - import { Button } from '../ui/button'; import { DropdownMenu, diff --git a/apps/dashboard/src/components/clients/table.tsx b/apps/dashboard/src/components/clients/table.tsx index ed563b50..86d2ffce 100644 --- a/apps/dashboard/src/components/clients/table.tsx +++ b/apps/dashboard/src/components/clients/table.tsx @@ -1,8 +1,7 @@ import { formatDate } from '@/utils/date'; +import type { IServiceClientWithProject } from '@openpanel/db'; import type { ColumnDef } from '@tanstack/react-table'; -import type { IServiceClientWithProject } from '@mixan/db'; - import { ClientActions } from './ClientActions'; export const columns: ColumnDef[] = [ diff --git a/apps/dashboard/src/components/events/ListProperties.tsx b/apps/dashboard/src/components/events/ListProperties.tsx index c84cfe97..93aa80eb 100644 --- a/apps/dashboard/src/components/events/ListProperties.tsx +++ b/apps/dashboard/src/components/events/ListProperties.tsx @@ -1,4 +1,4 @@ -import { toDots } from '@mixan/common'; +import { toDots } from '@openpanel/common'; import { Table, TableBody, TableCell, TableRow } from '../ui/table'; diff --git a/apps/dashboard/src/components/overview/filters/overview-filters-drawer-content.tsx b/apps/dashboard/src/components/overview/filters/overview-filters-drawer-content.tsx index 1d78926c..9f2a8c80 100644 --- a/apps/dashboard/src/components/overview/filters/overview-filters-drawer-content.tsx +++ b/apps/dashboard/src/components/overview/filters/overview-filters-drawer-content.tsx @@ -11,14 +11,13 @@ import { import { useEventValues } from '@/hooks/useEventValues'; import { useProfileProperties } from '@/hooks/useProfileProperties'; import { useProfileValues } from '@/hooks/useProfileValues'; -import { XIcon } from 'lucide-react'; -import type { Options as NuqsOptions } from 'nuqs'; - import type { IChartEventFilter, IChartEventFilterOperator, IChartEventFilterValue, -} from '@mixan/validation'; +} from '@openpanel/validation'; +import { XIcon } from 'lucide-react'; +import type { Options as NuqsOptions } from 'nuqs'; export interface OverviewFiltersDrawerContentProps { projectId: string; diff --git a/apps/dashboard/src/components/overview/live-counter/index.tsx b/apps/dashboard/src/components/overview/live-counter/index.tsx index c5efb133..2eddb6af 100644 --- a/apps/dashboard/src/components/overview/live-counter/index.tsx +++ b/apps/dashboard/src/components/overview/live-counter/index.tsx @@ -1,4 +1,4 @@ -import { getLiveVisitors } from '@mixan/db'; +import { getLiveVisitors } from '@openpanel/db'; import type { LiveCounterProps } from './live-counter'; import LiveCounter from './live-counter'; diff --git a/apps/dashboard/src/components/overview/overview-latest-events/index.tsx b/apps/dashboard/src/components/overview/overview-latest-events/index.tsx index b29cea30..c3540a2e 100644 --- a/apps/dashboard/src/components/overview/overview-latest-events/index.tsx +++ b/apps/dashboard/src/components/overview/overview-latest-events/index.tsx @@ -1,4 +1,4 @@ -import { getConversionEventNames } from '@mixan/db'; +import { getConversionEventNames } from '@openpanel/db'; import type { OverviewLatestEventsProps } from './overview-latest-events'; import OverviewLatestEvents from './overview-latest-events'; diff --git a/apps/dashboard/src/components/overview/overview-live-histogram.tsx b/apps/dashboard/src/components/overview/overview-live-histogram.tsx index 16052a34..a436aac8 100644 --- a/apps/dashboard/src/components/overview/overview-live-histogram.tsx +++ b/apps/dashboard/src/components/overview/overview-live-histogram.tsx @@ -3,11 +3,10 @@ import { Fragment } from 'react'; import { api } from '@/app/_trpc/client'; import { cn } from '@/utils/cn'; +import type { IChartInput } from '@openpanel/validation'; import { ChevronsUpDownIcon } from 'lucide-react'; import AnimateHeight from 'react-animate-height'; -import type { IChartInput } from '@mixan/validation'; - import { redisSub } from '../../../../../packages/redis'; import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip'; import { useOverviewOptions } from './useOverviewOptions'; diff --git a/apps/dashboard/src/components/overview/overview-metrics.tsx b/apps/dashboard/src/components/overview/overview-metrics.tsx index 0b56868b..a1b7b5b5 100644 --- a/apps/dashboard/src/components/overview/overview-metrics.tsx +++ b/apps/dashboard/src/components/overview/overview-metrics.tsx @@ -6,8 +6,7 @@ import { ChartSwitch } from '@/components/report/chart'; import { Widget, WidgetBody } from '@/components/Widget'; import { useEventQueryFilters } from '@/hooks/useEventQueryFilters'; import { cn } from '@/utils/cn'; - -import type { IChartInput } from '@mixan/validation'; +import type { IChartInput } from '@openpanel/validation'; interface OverviewMetricsProps { projectId: string; diff --git a/apps/dashboard/src/components/overview/overview-share.tsx b/apps/dashboard/src/components/overview/overview-share.tsx index bbc46245..5d07e022 100644 --- a/apps/dashboard/src/components/overview/overview-share.tsx +++ b/apps/dashboard/src/components/overview/overview-share.tsx @@ -2,12 +2,11 @@ import { api } from '@/app/_trpc/client'; import { pushModal } from '@/modals'; +import type { ShareOverview } from '@openpanel/db'; import { EyeIcon, Globe2Icon, LockIcon } from 'lucide-react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; -import type { ShareOverview } from '@mixan/db'; - import { Button } from '../ui/button'; import { DropdownMenu, diff --git a/apps/dashboard/src/components/overview/overview-top-events/index.tsx b/apps/dashboard/src/components/overview/overview-top-events/index.tsx index f54fa5eb..6c9601c1 100644 --- a/apps/dashboard/src/components/overview/overview-top-events/index.tsx +++ b/apps/dashboard/src/components/overview/overview-top-events/index.tsx @@ -1,4 +1,4 @@ -import { getConversionEventNames } from '@mixan/db'; +import { getConversionEventNames } from '@openpanel/db'; import type { OverviewTopEventsProps } from './overview-top-events'; import OverviewTopEvents from './overview-top-events'; diff --git a/apps/dashboard/src/components/overview/useOverviewOptions.ts b/apps/dashboard/src/components/overview/useOverviewOptions.ts index 48f38ba5..7a4000ad 100644 --- a/apps/dashboard/src/components/overview/useOverviewOptions.ts +++ b/apps/dashboard/src/components/overview/useOverviewOptions.ts @@ -1,3 +1,9 @@ +import { + getDefaultIntervalByDates, + getDefaultIntervalByRange, + timeRanges, +} from '@openpanel/constants'; +import { mapKeys } from '@openpanel/validation'; import { parseAsBoolean, parseAsInteger, @@ -6,13 +12,6 @@ import { useQueryState, } from 'nuqs'; -import { - getDefaultIntervalByDates, - getDefaultIntervalByRange, - timeRanges, -} from '@mixan/constants'; -import { mapKeys } from '@mixan/validation'; - const nuqsOptions = { history: 'push' } as const; export function useOverviewOptions() { diff --git a/apps/dashboard/src/components/overview/useOverviewWidget.tsx b/apps/dashboard/src/components/overview/useOverviewWidget.tsx index a516c471..2eefa355 100644 --- a/apps/dashboard/src/components/overview/useOverviewWidget.tsx +++ b/apps/dashboard/src/components/overview/useOverviewWidget.tsx @@ -1,8 +1,7 @@ +import { mapKeys } from '@openpanel/validation'; +import type { IChartInput } from '@openpanel/validation'; import { parseAsStringEnum, useQueryState } from 'nuqs'; -import { mapKeys } from '@mixan/validation'; -import type { IChartInput } from '@mixan/validation'; - export function useOverviewWidget( key: string, widgets: Record< diff --git a/apps/dashboard/src/components/profiles/ProfileAvatar.tsx b/apps/dashboard/src/components/profiles/ProfileAvatar.tsx index 62c69afb..e40417f5 100644 --- a/apps/dashboard/src/components/profiles/ProfileAvatar.tsx +++ b/apps/dashboard/src/components/profiles/ProfileAvatar.tsx @@ -1,12 +1,11 @@ 'use client'; import { cn } from '@/utils/cn'; +import type { IServiceProfile } from '@openpanel/db'; import { AvatarImage } from '@radix-ui/react-avatar'; import type { VariantProps } from 'class-variance-authority'; import { cva } from 'class-variance-authority'; -import type { IServiceProfile } from '@mixan/db'; - import { Avatar, AvatarFallback } from '../ui/avatar'; interface ProfileAvatarProps diff --git a/apps/dashboard/src/components/projects/ProjectActions.tsx b/apps/dashboard/src/components/projects/ProjectActions.tsx index e11ff397..6b58e124 100644 --- a/apps/dashboard/src/components/projects/ProjectActions.tsx +++ b/apps/dashboard/src/components/projects/ProjectActions.tsx @@ -3,12 +3,11 @@ import { api } from '@/app/_trpc/client'; import { pushModal, showConfirm } from '@/modals'; import { clipboard } from '@/utils/clipboard'; +import type { IServiceProject } from '@openpanel/db'; import { MoreHorizontal } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; -import type { IServiceProject } from '@mixan/db'; - import { Button } from '../ui/button'; import { DropdownMenu, diff --git a/apps/dashboard/src/components/projects/project-card.tsx b/apps/dashboard/src/components/projects/project-card.tsx index 7918eae6..c01c0d41 100644 --- a/apps/dashboard/src/components/projects/project-card.tsx +++ b/apps/dashboard/src/components/projects/project-card.tsx @@ -1,8 +1,8 @@ import { shortNumber } from '@/hooks/useNumerFormatter'; import Link from 'next/link'; -import type { IServiceProject } from '@mixan/db'; -import { chQuery } from '@mixan/db'; +import type { IServiceProject } from '@openpanel/db'; +import { chQuery } from '@openpanel/db'; import { ChartSSR } from '../chart-ssr'; diff --git a/apps/dashboard/src/components/projects/table.tsx b/apps/dashboard/src/components/projects/table.tsx index 0367b7a5..df97965f 100644 --- a/apps/dashboard/src/components/projects/table.tsx +++ b/apps/dashboard/src/components/projects/table.tsx @@ -1,9 +1,8 @@ import { formatDate } from '@/utils/date'; +import { IServiceProject } from '@openpanel/db'; +import type { Project as IProject } from '@openpanel/db'; import type { ColumnDef } from '@tanstack/react-table'; -import { IServiceProject } from '@mixan/db'; -import type { Project as IProject } from '@mixan/db'; - import { ProjectActions } from './ProjectActions'; export type Project = IProject; diff --git a/apps/dashboard/src/components/references/table.tsx b/apps/dashboard/src/components/references/table.tsx index ac0ac738..6fd734ea 100644 --- a/apps/dashboard/src/components/references/table.tsx +++ b/apps/dashboard/src/components/references/table.tsx @@ -1,8 +1,7 @@ import { formatDate, formatDateTime } from '@/utils/date'; +import type { IServiceReference } from '@openpanel/db'; import type { ColumnDef } from '@tanstack/react-table'; -import type { IServiceReference } from '@mixan/db'; - export const columns: ColumnDef[] = [ { accessorKey: 'title', diff --git a/apps/dashboard/src/components/report/ReportChartType.tsx b/apps/dashboard/src/components/report/ReportChartType.tsx index 51c492a0..58f1243d 100644 --- a/apps/dashboard/src/components/report/ReportChartType.tsx +++ b/apps/dashboard/src/components/report/ReportChartType.tsx @@ -1,9 +1,8 @@ import { useDispatch, useSelector } from '@/redux'; +import { chartTypes } from '@openpanel/constants'; +import { objectToZodEnums } from '@openpanel/validation'; import { LineChartIcon } from 'lucide-react'; -import { chartTypes } from '@mixan/constants'; -import { objectToZodEnums } from '@mixan/validation'; - import { Combobox } from '../ui/combobox'; import { changeChartType } from './reportSlice'; diff --git a/apps/dashboard/src/components/report/ReportInterval.tsx b/apps/dashboard/src/components/report/ReportInterval.tsx index d55330d0..9cc6e141 100644 --- a/apps/dashboard/src/components/report/ReportInterval.tsx +++ b/apps/dashboard/src/components/report/ReportInterval.tsx @@ -1,11 +1,10 @@ import { useDispatch, useSelector } from '@/redux'; -import { ClockIcon } from 'lucide-react'; - import { isHourIntervalEnabledByRange, isMinuteIntervalEnabledByRange, -} from '@mixan/constants'; -import type { IInterval } from '@mixan/validation'; +} from '@openpanel/constants'; +import type { IInterval } from '@openpanel/validation'; +import { ClockIcon } from 'lucide-react'; import { Combobox } from '../ui/combobox'; import { changeInterval } from './reportSlice'; diff --git a/apps/dashboard/src/components/report/ReportLineType.tsx b/apps/dashboard/src/components/report/ReportLineType.tsx index 272567ee..cada47fa 100644 --- a/apps/dashboard/src/components/report/ReportLineType.tsx +++ b/apps/dashboard/src/components/report/ReportLineType.tsx @@ -1,9 +1,8 @@ import { useDispatch, useSelector } from '@/redux'; +import { lineTypes } from '@openpanel/constants'; +import { objectToZodEnums } from '@openpanel/validation'; import { Tv2Icon } from 'lucide-react'; -import { lineTypes } from '@mixan/constants'; -import { objectToZodEnums } from '@mixan/validation'; - import { Combobox } from '../ui/combobox'; import { changeLineType } from './reportSlice'; diff --git a/apps/dashboard/src/components/report/ReportRange.tsx b/apps/dashboard/src/components/report/ReportRange.tsx index 4ea3bc77..d71f81c7 100644 --- a/apps/dashboard/src/components/report/ReportRange.tsx +++ b/apps/dashboard/src/components/report/ReportRange.tsx @@ -9,13 +9,12 @@ import { import { useBreakpoint } from '@/hooks/useBreakpoint'; import { useDispatch, useSelector } from '@/redux'; import { cn } from '@/utils/cn'; +import { timeRanges } from '@openpanel/constants'; +import type { IChartRange } from '@openpanel/validation'; import { endOfDay, format, startOfDay } from 'date-fns'; import { CalendarIcon, ChevronsUpDownIcon } from 'lucide-react'; import type { SelectRangeEventHandler } from 'react-day-picker'; -import { timeRanges } from '@mixan/constants'; -import type { IChartRange } from '@mixan/validation'; - import type { ExtendedComboboxProps } from '../ui/combobox'; import { ToggleGroup, ToggleGroupItem } from '../ui/toggle-group'; import { changeDates, changeEndDate, changeStartDate } from './reportSlice'; diff --git a/apps/dashboard/src/components/report/chart/Chart.tsx b/apps/dashboard/src/components/report/chart/Chart.tsx index ca56b70a..4b935fb3 100644 --- a/apps/dashboard/src/components/report/chart/Chart.tsx +++ b/apps/dashboard/src/components/report/chart/Chart.tsx @@ -1,8 +1,7 @@ 'use client'; import { api } from '@/app/_trpc/client'; - -import type { IChartInput } from '@mixan/validation'; +import type { IChartInput } from '@openpanel/validation'; import { ChartEmpty } from './ChartEmpty'; import { ReportAreaChart } from './ReportAreaChart'; diff --git a/apps/dashboard/src/components/report/chart/ChartProvider.tsx b/apps/dashboard/src/components/report/chart/ChartProvider.tsx index 38541245..d4554e77 100644 --- a/apps/dashboard/src/components/report/chart/ChartProvider.tsx +++ b/apps/dashboard/src/components/report/chart/ChartProvider.tsx @@ -10,8 +10,7 @@ import { useState, } from 'react'; import type { IChartSerie } from '@/server/api/routers/chart'; - -import type { IChartInput } from '@mixan/validation'; +import type { IChartInput } from '@openpanel/validation'; import { ChartLoading } from './ChartLoading'; import { MetricCardLoading } from './MetricCard'; diff --git a/apps/dashboard/src/components/report/chart/MetricCard.tsx b/apps/dashboard/src/components/report/chart/MetricCard.tsx index 9925db1e..e924aa67 100644 --- a/apps/dashboard/src/components/report/chart/MetricCard.tsx +++ b/apps/dashboard/src/components/report/chart/MetricCard.tsx @@ -4,11 +4,10 @@ import type { IChartData } from '@/app/_trpc/client'; import { ColorSquare } from '@/components/ColorSquare'; import { fancyMinutes, useNumber } from '@/hooks/useNumerFormatter'; import { theme } from '@/utils/theme'; +import type { IChartMetric } from '@openpanel/validation'; import AutoSizer from 'react-virtualized-auto-sizer'; import { Area, AreaChart } from 'recharts'; -import type { IChartMetric } from '@mixan/validation'; - import { getDiffIndicator, PreviousDiffIndicatorText, diff --git a/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx b/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx index 8d88b55a..f3f4bf23 100644 --- a/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx @@ -5,6 +5,7 @@ import { useNumber } from '@/hooks/useNumerFormatter'; import { useRechartDataModel } from '@/hooks/useRechartDataModel'; import { useVisibleSeries } from '@/hooks/useVisibleSeries'; import { getChartColor } from '@/utils/theme'; +import type { IChartLineType, IInterval } from '@openpanel/validation'; import { Area, AreaChart, @@ -14,8 +15,6 @@ import { YAxis, } from 'recharts'; -import type { IChartLineType, IInterval } from '@mixan/validation'; - import { getYAxisWidth } from './chart-utils'; import { useChartContext } from './ChartProvider'; import { ReportChartTooltip } from './ReportChartTooltip'; diff --git a/apps/dashboard/src/components/report/chart/ReportBarChart.tsx b/apps/dashboard/src/components/report/chart/ReportBarChart.tsx index d0ed96d2..0187a337 100644 --- a/apps/dashboard/src/components/report/chart/ReportBarChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportBarChart.tsx @@ -6,8 +6,7 @@ import { Progress } from '@/components/ui/progress'; import { useNumber } from '@/hooks/useNumerFormatter'; import { cn } from '@/utils/cn'; import { getChartColor } from '@/utils/theme'; - -import { NOT_SET_VALUE } from '@mixan/constants'; +import { NOT_SET_VALUE } from '@openpanel/constants'; import { PreviousDiffIndicatorText } from '../PreviousDiffIndicator'; import { useChartContext } from './ChartProvider'; diff --git a/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx b/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx index 969b07e0..f8eddaec 100644 --- a/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx @@ -5,10 +5,9 @@ import { useNumber } from '@/hooks/useNumerFormatter'; import { useRechartDataModel } from '@/hooks/useRechartDataModel'; import { useVisibleSeries } from '@/hooks/useVisibleSeries'; import { getChartColor, theme } from '@/utils/theme'; +import type { IInterval } from '@openpanel/validation'; import { Bar, BarChart, CartesianGrid, Tooltip, XAxis, YAxis } from 'recharts'; -import type { IInterval } from '@mixan/validation'; - import { getYAxisWidth } from './chart-utils'; import { useChartContext } from './ChartProvider'; import { ReportChartTooltip } from './ReportChartTooltip'; diff --git a/apps/dashboard/src/components/report/chart/ReportLineChart.tsx b/apps/dashboard/src/components/report/chart/ReportLineChart.tsx index aa1aea1d..581945a0 100644 --- a/apps/dashboard/src/components/report/chart/ReportLineChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportLineChart.tsx @@ -7,6 +7,8 @@ import { useNumber } from '@/hooks/useNumerFormatter'; import { useRechartDataModel } from '@/hooks/useRechartDataModel'; import { useVisibleSeries } from '@/hooks/useVisibleSeries'; import { getChartColor } from '@/utils/theme'; +import type { IServiceReference } from '@openpanel/db'; +import type { IChartLineType, IInterval } from '@openpanel/validation'; import { CartesianGrid, Line, @@ -17,9 +19,6 @@ import { YAxis, } from 'recharts'; -import type { IServiceReference } from '@mixan/db'; -import type { IChartLineType, IInterval } from '@mixan/validation'; - import { getYAxisWidth } from './chart-utils'; import { useChartContext } from './ChartProvider'; import { ReportChartTooltip } from './ReportChartTooltip'; diff --git a/apps/dashboard/src/components/report/chart/SerieIcon.tsx b/apps/dashboard/src/components/report/chart/SerieIcon.tsx index 68803599..26049ae0 100644 --- a/apps/dashboard/src/components/report/chart/SerieIcon.tsx +++ b/apps/dashboard/src/components/report/chart/SerieIcon.tsx @@ -1,4 +1,5 @@ import { useMemo } from 'react'; +import { NOT_SET_VALUE } from '@openpanel/constants'; import type { LucideIcon, LucideProps } from 'lucide-react'; import { ActivityIcon, @@ -14,8 +15,6 @@ import { TabletIcon, } from 'lucide-react'; -import { NOT_SET_VALUE } from '@mixan/constants'; - interface SerieIconProps extends LucideProps { name: string; } diff --git a/apps/dashboard/src/components/report/chart/index.tsx b/apps/dashboard/src/components/report/chart/index.tsx index bb5fbbab..a32f5f07 100644 --- a/apps/dashboard/src/components/report/chart/index.tsx +++ b/apps/dashboard/src/components/report/chart/index.tsx @@ -1,6 +1,6 @@ 'use client'; -import type { IChartInput } from '@mixan/validation'; +import type { IChartInput } from '@openpanel/validation'; import { Funnel } from '../funnel'; import { Chart } from './Chart'; diff --git a/apps/dashboard/src/components/report/funnel/index.tsx b/apps/dashboard/src/components/report/funnel/index.tsx index 0b6c9a21..f0ab77a1 100644 --- a/apps/dashboard/src/components/report/funnel/index.tsx +++ b/apps/dashboard/src/components/report/funnel/index.tsx @@ -2,8 +2,7 @@ import type { RouterOutputs } from '@/app/_trpc/client'; import { api } from '@/app/_trpc/client'; - -import type { IChartInput } from '@mixan/validation'; +import type { IChartInput } from '@openpanel/validation'; import { ChartEmpty } from '../chart/ChartEmpty'; import { withChartProivder } from '../chart/ChartProvider'; diff --git a/apps/dashboard/src/components/report/reportSlice.ts b/apps/dashboard/src/components/report/reportSlice.ts index e6e1dce0..b31f228c 100644 --- a/apps/dashboard/src/components/report/reportSlice.ts +++ b/apps/dashboard/src/components/report/reportSlice.ts @@ -1,15 +1,11 @@ import { start } from 'repl'; -import { createSlice } from '@reduxjs/toolkit'; -import type { PayloadAction } from '@reduxjs/toolkit'; -import { isSameDay, isSameMonth } from 'date-fns'; - import { alphabetIds, getDefaultIntervalByDates, getDefaultIntervalByRange, isHourIntervalEnabledByRange, isMinuteIntervalEnabledByRange, -} from '@mixan/constants'; +} from '@openpanel/constants'; import type { IChartBreakdown, IChartEvent, @@ -18,7 +14,10 @@ import type { IChartRange, IChartType, IInterval, -} from '@mixan/validation'; +} from '@openpanel/validation'; +import { createSlice } from '@reduxjs/toolkit'; +import type { PayloadAction } from '@reduxjs/toolkit'; +import { isSameDay, isSameMonth } from 'date-fns'; type InitialState = IChartInput & { dirty: boolean; diff --git a/apps/dashboard/src/components/report/sidebar/EventPropertiesCombobox.tsx b/apps/dashboard/src/components/report/sidebar/EventPropertiesCombobox.tsx index e25a2261..6e18e8bf 100644 --- a/apps/dashboard/src/components/report/sidebar/EventPropertiesCombobox.tsx +++ b/apps/dashboard/src/components/report/sidebar/EventPropertiesCombobox.tsx @@ -3,10 +3,9 @@ import { Combobox } from '@/components/ui/combobox'; import { useAppParams } from '@/hooks/useAppParams'; import { useDispatch } from '@/redux'; import { cn } from '@/utils/cn'; +import type { IChartEvent } from '@openpanel/validation'; import { DatabaseIcon } from 'lucide-react'; -import type { IChartEvent } from '@mixan/validation'; - import { changeEvent } from '../reportSlice'; interface EventPropertiesComboboxProps { diff --git a/apps/dashboard/src/components/report/sidebar/ReportBreakdowns.tsx b/apps/dashboard/src/components/report/sidebar/ReportBreakdowns.tsx index 18b39930..0f8b422a 100644 --- a/apps/dashboard/src/components/report/sidebar/ReportBreakdowns.tsx +++ b/apps/dashboard/src/components/report/sidebar/ReportBreakdowns.tsx @@ -5,10 +5,9 @@ import { ColorSquare } from '@/components/ColorSquare'; import { Combobox } from '@/components/ui/combobox'; import { useAppParams } from '@/hooks/useAppParams'; import { useDispatch, useSelector } from '@/redux'; +import type { IChartBreakdown } from '@openpanel/validation'; import { SplitIcon } from 'lucide-react'; -import type { IChartBreakdown } from '@mixan/validation'; - import { addBreakdown, changeBreakdown, removeBreakdown } from '../reportSlice'; import { ReportBreakdownMore } from './ReportBreakdownMore'; import type { ReportEventMoreProps } from './ReportEventMore'; diff --git a/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx b/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx index 1b21aa82..24b6fc52 100644 --- a/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx +++ b/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx @@ -9,10 +9,9 @@ import { useAppParams } from '@/hooks/useAppParams'; import { useDebounceFn } from '@/hooks/useDebounceFn'; import { useEventNames } from '@/hooks/useEventNames'; import { useDispatch, useSelector } from '@/redux'; +import type { IChartEvent } from '@openpanel/validation'; import { GanttChart, GanttChartIcon, Users } from 'lucide-react'; -import type { IChartEvent } from '@mixan/validation'; - import { addEvent, changeEvent, diff --git a/apps/dashboard/src/components/report/sidebar/filters/FilterItem.tsx b/apps/dashboard/src/components/report/sidebar/filters/FilterItem.tsx index ac621b84..a5294c4e 100644 --- a/apps/dashboard/src/components/report/sidebar/filters/FilterItem.tsx +++ b/apps/dashboard/src/components/report/sidebar/filters/FilterItem.tsx @@ -7,15 +7,14 @@ import { RenderDots } from '@/components/ui/RenderDots'; import { useAppParams } from '@/hooks/useAppParams'; import { useMappings } from '@/hooks/useMappings'; import { useDispatch } from '@/redux'; -import { SlidersHorizontal, Trash } from 'lucide-react'; - -import { operators } from '@mixan/constants'; +import { operators } from '@openpanel/constants'; import type { IChartEvent, IChartEventFilterOperator, IChartEventFilterValue, -} from '@mixan/validation'; -import { mapKeys } from '@mixan/validation'; +} from '@openpanel/validation'; +import { mapKeys } from '@openpanel/validation'; +import { SlidersHorizontal, Trash } from 'lucide-react'; import { changeEvent } from '../../reportSlice'; diff --git a/apps/dashboard/src/components/report/sidebar/filters/FiltersCombobox.tsx b/apps/dashboard/src/components/report/sidebar/filters/FiltersCombobox.tsx index b51bdee3..d29c381a 100644 --- a/apps/dashboard/src/components/report/sidebar/filters/FiltersCombobox.tsx +++ b/apps/dashboard/src/components/report/sidebar/filters/FiltersCombobox.tsx @@ -2,10 +2,9 @@ import { api } from '@/app/_trpc/client'; import { Combobox } from '@/components/ui/combobox'; import { useAppParams } from '@/hooks/useAppParams'; import { useDispatch } from '@/redux'; +import type { IChartEvent } from '@openpanel/validation'; import { FilterIcon } from 'lucide-react'; -import type { IChartEvent } from '@mixan/validation'; - import { changeEvent } from '../../reportSlice'; interface FiltersComboboxProps { diff --git a/apps/dashboard/src/components/report/sidebar/filters/FiltersList.tsx b/apps/dashboard/src/components/report/sidebar/filters/FiltersList.tsx index cc9dc981..58b73591 100644 --- a/apps/dashboard/src/components/report/sidebar/filters/FiltersList.tsx +++ b/apps/dashboard/src/components/report/sidebar/filters/FiltersList.tsx @@ -1,4 +1,4 @@ -import type { IChartEvent } from '@mixan/validation'; +import type { IChartEvent } from '@openpanel/validation'; import { FilterItem } from './FilterItem'; diff --git a/apps/dashboard/src/hooks/useFormatDateInterval.ts b/apps/dashboard/src/hooks/useFormatDateInterval.ts index 2c0779bf..d00f9fec 100644 --- a/apps/dashboard/src/hooks/useFormatDateInterval.ts +++ b/apps/dashboard/src/hooks/useFormatDateInterval.ts @@ -1,4 +1,4 @@ -import type { IInterval } from '@mixan/validation'; +import type { IInterval } from '@openpanel/validation'; export function formatDateInterval(interval: IInterval, date: Date): string { if (interval === 'hour' || interval === 'minute') { diff --git a/apps/dashboard/src/modals/AddReference.tsx b/apps/dashboard/src/modals/AddReference.tsx index 44ead4a0..2ab88741 100644 --- a/apps/dashboard/src/modals/AddReference.tsx +++ b/apps/dashboard/src/modals/AddReference.tsx @@ -7,13 +7,12 @@ import { Button } from '@/components/ui/button'; import { Calendar } from '@/components/ui/calendar'; import { useAppParams } from '@/hooks/useAppParams'; import { zodResolver } from '@hookform/resolvers/zod'; +import { zCreateReference } from '@openpanel/validation'; import { useRouter } from 'next/navigation'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'sonner'; import type { z } from 'zod'; -import { zCreateReference } from '@mixan/validation'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/modals/EditClient.tsx b/apps/dashboard/src/modals/EditClient.tsx index fb38490f..9c83eafb 100644 --- a/apps/dashboard/src/modals/EditClient.tsx +++ b/apps/dashboard/src/modals/EditClient.tsx @@ -5,13 +5,12 @@ import { ButtonContainer } from '@/components/ButtonContainer'; import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { zodResolver } from '@hookform/resolvers/zod'; +import type { IServiceClient } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { IServiceClient } from '@mixan/db'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/modals/EditDashboard.tsx b/apps/dashboard/src/modals/EditDashboard.tsx index 6e717b1a..5028e52d 100644 --- a/apps/dashboard/src/modals/EditDashboard.tsx +++ b/apps/dashboard/src/modals/EditDashboard.tsx @@ -5,13 +5,12 @@ import { ButtonContainer } from '@/components/ButtonContainer'; import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { zodResolver } from '@hookform/resolvers/zod'; +import type { IServiceDashboard } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { IServiceDashboard } from '@mixan/db'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/modals/EditProject.tsx b/apps/dashboard/src/modals/EditProject.tsx index 50edb250..2a43bcab 100644 --- a/apps/dashboard/src/modals/EditProject.tsx +++ b/apps/dashboard/src/modals/EditProject.tsx @@ -5,13 +5,12 @@ import { ButtonContainer } from '@/components/ButtonContainer'; import { InputWithLabel } from '@/components/forms/InputWithLabel'; import { Button } from '@/components/ui/button'; import { zodResolver } from '@hookform/resolvers/zod'; +import type { IServiceProject } from '@openpanel/db'; import { useRouter } from 'next/navigation'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { IServiceProject } from '@mixan/db'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/modals/SaveReport.tsx b/apps/dashboard/src/modals/SaveReport.tsx index 68d6cca0..9f2b8090 100644 --- a/apps/dashboard/src/modals/SaveReport.tsx +++ b/apps/dashboard/src/modals/SaveReport.tsx @@ -8,13 +8,12 @@ import { Combobox } from '@/components/ui/combobox'; import { Label } from '@/components/ui/label'; import { useAppParams } from '@/hooks/useAppParams'; import { zodResolver } from '@hookform/resolvers/zod'; +import type { IChartInput } from '@openpanel/validation'; import { useRouter, useSearchParams } from 'next/navigation'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { z } from 'zod'; -import type { IChartInput } from '@mixan/validation'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/modals/ShareOverviewModal.tsx b/apps/dashboard/src/modals/ShareOverviewModal.tsx index 85f8629b..8631aa5f 100644 --- a/apps/dashboard/src/modals/ShareOverviewModal.tsx +++ b/apps/dashboard/src/modals/ShareOverviewModal.tsx @@ -7,13 +7,12 @@ import { Button } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { useAppParams } from '@/hooks/useAppParams'; import { zodResolver } from '@hookform/resolvers/zod'; +import { zShareOverview } from '@openpanel/validation'; import { useRouter } from 'next/navigation'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'sonner'; import type { z } from 'zod'; -import { zShareOverview } from '@mixan/validation'; - import { popModal } from '.'; import { ModalContent, ModalHeader } from './Modal/Container'; diff --git a/apps/dashboard/src/server/api/routers/chart.helpers.ts b/apps/dashboard/src/server/api/routers/chart.helpers.ts index 933b3103..4fe96cf3 100644 --- a/apps/dashboard/src/server/api/routers/chart.helpers.ts +++ b/apps/dashboard/src/server/api/routers/chart.helpers.ts @@ -1,17 +1,16 @@ import { getDaysOldDate } from '@/utils/date'; import { round } from '@/utils/math'; -import * as mathjs from 'mathjs'; -import { sort } from 'ramda'; - -import { alphabetIds, NOT_SET_VALUE } from '@mixan/constants'; -import { chQuery, convertClickhouseDateToJs, getChartSql } from '@mixan/db'; +import { alphabetIds, NOT_SET_VALUE } from '@openpanel/constants'; +import { chQuery, convertClickhouseDateToJs, getChartSql } from '@openpanel/db'; import type { IChartEvent, IChartInput, IChartRange, IGetChartDataInput, IInterval, -} from '@mixan/validation'; +} from '@openpanel/validation'; +import * as mathjs from 'mathjs'; +import { sort } from 'ramda'; export type GetChartDataResult = Awaited>; export interface ResultItem { diff --git a/apps/dashboard/src/server/api/routers/chart.ts b/apps/dashboard/src/server/api/routers/chart.ts index d0d23fa8..b187493f 100644 --- a/apps/dashboard/src/server/api/routers/chart.ts +++ b/apps/dashboard/src/server/api/routers/chart.ts @@ -4,17 +4,16 @@ import { publicProcedure, } from '@/server/api/trpc'; import { average, max, min, round, sum } from '@/utils/math'; -import { flatten, map, pipe, prop, repeat, reverse, sort, uniq } from 'ramda'; -import { z } from 'zod'; - import { chQuery, createSqlBuilder, formatClickhouseDate, getEventFiltersWhereClause, -} from '@mixan/db'; -import { zChartInput } from '@mixan/validation'; -import type { IChartEvent, IChartInput } from '@mixan/validation'; +} from '@openpanel/db'; +import { zChartInput } from '@openpanel/validation'; +import type { IChartEvent, IChartInput } from '@openpanel/validation'; +import { flatten, map, pipe, prop, repeat, reverse, sort, uniq } from 'ramda'; +import { z } from 'zod'; import { getChartData, diff --git a/apps/dashboard/src/server/api/routers/client.ts b/apps/dashboard/src/server/api/routers/client.ts index 3fda7d76..17698c57 100644 --- a/apps/dashboard/src/server/api/routers/client.ts +++ b/apps/dashboard/src/server/api/routers/client.ts @@ -1,10 +1,9 @@ import { randomUUID } from 'crypto'; import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { db } from '@/server/db'; +import { hashPassword } from '@openpanel/common'; import { z } from 'zod'; -import { hashPassword } from '@mixan/common'; - export const clientRouter = createTRPCRouter({ list: protectedProcedure .input( diff --git a/apps/dashboard/src/server/api/routers/dashboard.ts b/apps/dashboard/src/server/api/routers/dashboard.ts index f29bf62e..f093024f 100644 --- a/apps/dashboard/src/server/api/routers/dashboard.ts +++ b/apps/dashboard/src/server/api/routers/dashboard.ts @@ -1,10 +1,9 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { db, getId } from '@/server/db'; +import type { Prisma } from '@openpanel/db'; import { PrismaError } from 'prisma-error-enum'; import { z } from 'zod'; -import type { Prisma } from '@mixan/db'; - export const dashboardRouter = createTRPCRouter({ get: protectedProcedure .input(z.object({ id: z.string() })) diff --git a/apps/dashboard/src/server/api/routers/event.ts b/apps/dashboard/src/server/api/routers/event.ts index a93c0d16..fd027d7f 100644 --- a/apps/dashboard/src/server/api/routers/event.ts +++ b/apps/dashboard/src/server/api/routers/event.ts @@ -1,8 +1,7 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; +import { db } from '@openpanel/db'; import { z } from 'zod'; -import { db } from '@mixan/db'; - export const eventRouter = createTRPCRouter({ updateEventMeta: protectedProcedure .input( diff --git a/apps/dashboard/src/server/api/routers/onboarding.ts b/apps/dashboard/src/server/api/routers/onboarding.ts index 1e0235a0..cf60c687 100644 --- a/apps/dashboard/src/server/api/routers/onboarding.ts +++ b/apps/dashboard/src/server/api/routers/onboarding.ts @@ -1,9 +1,8 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { clerkClient } from '@clerk/nextjs'; +import { db } from '@openpanel/db'; import { z } from 'zod'; -import { db } from '@mixan/db'; - export const onboardingRouter = createTRPCRouter({ organziation: protectedProcedure .input( diff --git a/apps/dashboard/src/server/api/routers/organization.ts b/apps/dashboard/src/server/api/routers/organization.ts index a0d7f4bd..eaae290c 100644 --- a/apps/dashboard/src/server/api/routers/organization.ts +++ b/apps/dashboard/src/server/api/routers/organization.ts @@ -1,10 +1,9 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { clerkClient } from '@clerk/nextjs'; +import { getOrganizationBySlug } from '@openpanel/db'; +import { zInviteUser } from '@openpanel/validation'; import { z } from 'zod'; -import { getOrganizationBySlug } from '@mixan/db'; -import { zInviteUser } from '@mixan/validation'; - export const organizationRouter = createTRPCRouter({ list: protectedProcedure.query(() => { return clerkClient.organizations.getOrganizationList(); diff --git a/apps/dashboard/src/server/api/routers/profile.ts b/apps/dashboard/src/server/api/routers/profile.ts index 471ae559..b139cb02 100644 --- a/apps/dashboard/src/server/api/routers/profile.ts +++ b/apps/dashboard/src/server/api/routers/profile.ts @@ -4,11 +4,10 @@ import { publicProcedure, } from '@/server/api/trpc'; import { db } from '@/server/db'; +import { chQuery, createSqlBuilder } from '@openpanel/db'; import { flatten, map, pipe, prop, sort, uniq } from 'ramda'; import { z } from 'zod'; -import { chQuery, createSqlBuilder } from '@mixan/db'; - export const profileRouter = createTRPCRouter({ list: protectedProcedure .input( diff --git a/apps/dashboard/src/server/api/routers/reference.ts b/apps/dashboard/src/server/api/routers/reference.ts index 4caab84c..70d8c467 100644 --- a/apps/dashboard/src/server/api/routers/reference.ts +++ b/apps/dashboard/src/server/api/routers/reference.ts @@ -1,9 +1,8 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; +import { db, getReferences } from '@openpanel/db'; +import { zCreateReference, zRange } from '@openpanel/validation'; import { z } from 'zod'; -import { db, getReferences } from '@mixan/db'; -import { zCreateReference, zRange } from '@mixan/validation'; - import { getChartStartEndDate } from './chart.helpers'; export const referenceRouter = createTRPCRouter({ diff --git a/apps/dashboard/src/server/api/routers/report.ts b/apps/dashboard/src/server/api/routers/report.ts index 49141844..240aae2d 100644 --- a/apps/dashboard/src/server/api/routers/report.ts +++ b/apps/dashboard/src/server/api/routers/report.ts @@ -1,10 +1,9 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { db } from '@/server/db'; +import { transformReport } from '@openpanel/db'; +import { zChartInput } from '@openpanel/validation'; import { z } from 'zod'; -import { transformReport } from '@mixan/db'; -import { zChartInput } from '@mixan/validation'; - export const reportRouter = createTRPCRouter({ get: protectedProcedure .input( diff --git a/apps/dashboard/src/server/api/routers/share.ts b/apps/dashboard/src/server/api/routers/share.ts index 4a71b011..758b408f 100644 --- a/apps/dashboard/src/server/api/routers/share.ts +++ b/apps/dashboard/src/server/api/routers/share.ts @@ -1,9 +1,8 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { db } from '@/server/db'; +import { zShareOverview } from '@openpanel/validation'; import ShortUniqueId from 'short-unique-id'; -import { zShareOverview } from '@mixan/validation'; - const uid = new ShortUniqueId({ length: 6 }); export const shareRouter = createTRPCRouter({ diff --git a/apps/dashboard/src/server/api/routers/user.ts b/apps/dashboard/src/server/api/routers/user.ts index ae20ed35..e1a71699 100644 --- a/apps/dashboard/src/server/api/routers/user.ts +++ b/apps/dashboard/src/server/api/routers/user.ts @@ -1,9 +1,8 @@ import { createTRPCRouter, protectedProcedure } from '@/server/api/trpc'; import { clerkClient } from '@clerk/nextjs'; +import { transformUser } from '@openpanel/db'; import { z } from 'zod'; -import { transformUser } from '@mixan/db'; - export const userRouter = createTRPCRouter({ update: protectedProcedure .input( diff --git a/apps/dashboard/src/server/db.ts b/apps/dashboard/src/server/db.ts index e3216689..52cfb321 100644 --- a/apps/dashboard/src/server/db.ts +++ b/apps/dashboard/src/server/db.ts @@ -1,8 +1,7 @@ import { slug } from '@/utils/slug'; +import { db } from '@openpanel/db'; -import { db } from '@mixan/db'; - -export { db } from '@mixan/db'; +export { db } from '@openpanel/db'; export async function getId(tableName: 'project' | 'dashboard', name: string) { const newId = slug(name); diff --git a/apps/dashboard/src/server/pageExists.tsx b/apps/dashboard/src/server/pageExists.tsx index 2d14cf5c..7e262276 100644 --- a/apps/dashboard/src/server/pageExists.tsx +++ b/apps/dashboard/src/server/pageExists.tsx @@ -1,7 +1,6 @@ +import { getOrganizationBySlug, getProjectById } from '@openpanel/db'; import { notFound } from 'next/navigation'; -import { getOrganizationBySlug, getProjectById } from '@mixan/db'; - export async function getExists(organizationSlug: string, projectId?: string) { const promises: Promise[] = [getOrganizationBySlug(organizationSlug)]; diff --git a/apps/dashboard/src/utils/getters.ts b/apps/dashboard/src/utils/getters.ts index c8b9e3b6..1257b551 100644 --- a/apps/dashboard/src/utils/getters.ts +++ b/apps/dashboard/src/utils/getters.ts @@ -1,4 +1,4 @@ -import type { IServiceProfile } from '@mixan/db'; +import type { IServiceProfile } from '@openpanel/db'; export function getProfileName(profile: IServiceProfile | undefined | null) { if (!profile) return 'No profile'; diff --git a/apps/dashboard/tsconfig.json b/apps/dashboard/tsconfig.json index 9d21e044..d17f2ec2 100644 --- a/apps/dashboard/tsconfig.json +++ b/apps/dashboard/tsconfig.json @@ -1,11 +1,9 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"] }, "plugins": [ { @@ -15,11 +13,6 @@ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", "strictNullChecks": true }, - "include": [ - ".", - ".next/types/**/*.ts" - ], - "exclude": [ - "node_modules" - ] + "include": [".", ".next/types/**/*.ts"], + "exclude": ["node_modules"] } diff --git a/apps/docs/next.config.mjs b/apps/docs/next.config.mjs index 23f7d2c8..50072116 100644 --- a/apps/docs/next.config.mjs +++ b/apps/docs/next.config.mjs @@ -3,7 +3,7 @@ import nextra from 'nextra'; /** @type {import("next").NextConfig} */ const config = { reactStrictMode: true, - transpilePackages: ['@mixan/queue'], + transpilePackages: ['@openpanel/queue'], eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, experimental: { diff --git a/apps/docs/package.json b/apps/docs/package.json index 1cd8db07..5459f19b 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/docs", + "name": "@openpanel/docs", "version": "0.1.0", "private": true, "scripts": { @@ -19,9 +19,9 @@ "react-dom": "18.2.0" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@types/node": "^18.16.0", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", @@ -37,10 +37,10 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base", - "@mixan/eslint-config/react", - "@mixan/eslint-config/nextjs" + "@openpanel/eslint-config/base", + "@openpanel/eslint-config/react", + "@openpanel/eslint-config/nextjs" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json index 9d21e044..f25ad65e 100644 --- a/apps/docs/tsconfig.json +++ b/apps/docs/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/apps/public/next.config.mjs b/apps/public/next.config.mjs index e5bcbe13..6c2cd5a9 100644 --- a/apps/public/next.config.mjs +++ b/apps/public/next.config.mjs @@ -7,7 +7,7 @@ await import('./src/env.mjs'); /** @type {import("next").NextConfig} */ const config = { reactStrictMode: true, - transpilePackages: ['@mixan/queue'], + transpilePackages: ['@openpanel/queue'], eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, experimental: { diff --git a/apps/public/package.json b/apps/public/package.json index 64d6a733..ee88b426 100644 --- a/apps/public/package.json +++ b/apps/public/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/public", + "name": "@openpanel/public", "version": "0.1.0", "private": true, "scripts": { @@ -12,7 +12,7 @@ "with-env": "dotenv -e ../../.env -c --" }, "dependencies": { - "@mixan/db": "workspace:*", + "@openpanel/db": "workspace:*", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-aspect-ratio": "^1.0.3", "@radix-ui/react-avatar": "^1.0.4", @@ -42,9 +42,9 @@ "zod": "^3.22.4" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@tailwindcss/typography": "^0.5.10", "@types/node": "^18.16.0", "@types/react": "^18.2.20", @@ -66,10 +66,10 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base", - "@mixan/eslint-config/react", - "@mixan/eslint-config/nextjs" + "@openpanel/eslint-config/base", + "@openpanel/eslint-config/react", + "@openpanel/eslint-config/nextjs" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/public/public/op.js b/apps/public/public/op.js index 92c1b0af..fb92b806 100644 --- a/apps/public/public/op.js +++ b/apps/public/public/op.js @@ -1,2 +1,2 @@ -"use strict";(()=>{function w(s){return Promise.all(Object.entries(s).map(async([t,e])=>[t,await e??""])).then(t=>Object.fromEntries(t))}function P(s){let t={"Content-Type":"application/json"};return{headers:t,async fetch(e,i,n){let o=`${s}${e}`,u,m=await w(t);return new Promise(c=>{let h=r=>{clearTimeout(u),fetch(o,{headers:m,method:"POST",body:JSON.stringify(i??{}),keepalive:!0,...n??{}}).then(async a=>{if(a.status!==200&&a.status!==202)return f(r,c);let g=await a.text();if(!g)return c(null);c(g)}).catch(()=>f(r,c))};function f(r,a){if(r>1)return a(null);u=setTimeout(()=>{h(r+1)},Math.pow(2,r)*500)}h(0)})}}}var l=class{options;api;state={properties:{}};constructor(t){this.options=t,this.api=P(t.url),this.api.headers["mixan-client-id"]=t.clientId,this.options.clientSecret&&(this.api.headers["mixan-client-secret"]=this.options.clientSecret)}init(t){this.state.properties=t??{}}setUser(t){this.api.fetch("/profile",{profileId:this.getProfileId(),...t,properties:{...this.state.properties,...t.properties}})}increment(t,e){this.api.fetch("/profile/increment",{property:t,value:e,profileId:this.getProfileId()})}decrement(t,e){this.api.fetch("/profile/decrement",{property:t,value:e,profileId:this.getProfileId()})}event(t,e){this.api.fetch("/event",{name:t,properties:{...this.state.properties,...e??{}},timestamp:this.timestamp(),profileId:this.getProfileId()}).then(i=>{this.options.setProfileId&&i&&this.options.setProfileId(i)})}setGlobalProperties(t){this.state.properties={...this.state.properties,...t}}clear(){this.state.profileId=void 0,this.options.removeProfileId&&this.options.removeProfileId()}timestamp(){return new Date().toISOString()}getProfileId(){if(this.state.profileId)return this.state.profileId;this.options.getProfileId&&(this.state.profileId=this.options.getProfileId()||void 0)}};var d=class extends l{lastPath="";constructor(t){super(t),this.isServer()||(this.setGlobalProperties({referrer:document.referrer}),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackScreenViews&&this.trackScreenViews())}isServer(){return typeof document>"u"}trackOutgoingLinks(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("a");if(i&&e){let n=i.getAttribute("href");n?.startsWith("http")&&super.event("link_out",{href:n,text:i.innerText||i.getAttribute("title")||e.getAttribute("alt")||e.getAttribute("title")})}})}trackScreenViews(){if(this.isServer())return;let t=history.pushState;history.pushState=function(...n){let o=t.apply(this,n);return window.dispatchEvent(new Event("pushstate")),window.dispatchEvent(new Event("locationchange")),o};let e=history.replaceState;history.replaceState=function(...n){let o=e.apply(this,n);return window.dispatchEvent(new Event("replacestate")),window.dispatchEvent(new Event("locationchange")),o},window.addEventListener("popstate",()=>window.dispatchEvent(new Event("locationchange"))),this.options.hash?window.addEventListener("hashchange",()=>this.screenView()):window.addEventListener("locationchange",()=>this.screenView()),this.screenView()}screenView(t){if(this.isServer())return;let e=window.location.href;this.lastPath!==e&&(this.lastPath=e,super.event("screen_view",{...t??{},path:e,title:document.title}))}};var p=document.currentScript;p&&(window.openpanel=new d({url:p?.getAttribute("data-url"),clientId:p?.getAttribute("data-client-id"),trackOutgoingLinks:!!p?.getAttribute("data-track-outgoing-links"),trackScreenViews:!!p?.getAttribute("data-track-screen-views")}));})(); +"use strict";(()=>{function w(s){return Promise.all(Object.entries(s).map(async([t,e])=>[t,await e??""])).then(t=>Object.fromEntries(t))}function P(s){let t={"Content-Type":"application/json"};return{headers:t,async fetch(e,i,n){let o=`${s}${e}`,u,m=await w(t);return new Promise(c=>{let h=r=>{clearTimeout(u),fetch(o,{headers:m,method:"POST",body:JSON.stringify(i??{}),keepalive:!0,...n??{}}).then(async a=>{if(a.status!==200&&a.status!==202)return f(r,c);let g=await a.text();if(!g)return c(null);c(g)}).catch(()=>f(r,c))};function f(r,a){if(r>1)return a(null);u=setTimeout(()=>{h(r+1)},Math.pow(2,r)*500)}h(0)})}}}var l=class{options;api;state={properties:{}};constructor(t){this.options=t,this.api=P(t.url),this.api.headers["openpanel-client-id"]=t.clientId,this.options.clientSecret&&(this.api.headers["openpanel-client-secret"]=this.options.clientSecret)}init(t){this.state.properties=t??{}}setUser(t){this.api.fetch("/profile",{profileId:this.getProfileId(),...t,properties:{...this.state.properties,...t.properties}})}increment(t,e){this.api.fetch("/profile/increment",{property:t,value:e,profileId:this.getProfileId()})}decrement(t,e){this.api.fetch("/profile/decrement",{property:t,value:e,profileId:this.getProfileId()})}event(t,e){this.api.fetch("/event",{name:t,properties:{...this.state.properties,...e??{}},timestamp:this.timestamp(),profileId:this.getProfileId()}).then(i=>{this.options.setProfileId&&i&&this.options.setProfileId(i)})}setGlobalProperties(t){this.state.properties={...this.state.properties,...t}}clear(){this.state.profileId=void 0,this.options.removeProfileId&&this.options.removeProfileId()}timestamp(){return new Date().toISOString()}getProfileId(){if(this.state.profileId)return this.state.profileId;this.options.getProfileId&&(this.state.profileId=this.options.getProfileId()||void 0)}};var d=class extends l{lastPath="";constructor(t){super(t),this.isServer()||(this.setGlobalProperties({referrer:document.referrer}),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackScreenViews&&this.trackScreenViews())}isServer(){return typeof document>"u"}trackOutgoingLinks(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("a");if(i&&e){let n=i.getAttribute("href");n?.startsWith("http")&&super.event("link_out",{href:n,text:i.innerText||i.getAttribute("title")||e.getAttribute("alt")||e.getAttribute("title")})}})}trackScreenViews(){if(this.isServer())return;let t=history.pushState;history.pushState=function(...n){let o=t.apply(this,n);return window.dispatchEvent(new Event("pushstate")),window.dispatchEvent(new Event("locationchange")),o};let e=history.replaceState;history.replaceState=function(...n){let o=e.apply(this,n);return window.dispatchEvent(new Event("replacestate")),window.dispatchEvent(new Event("locationchange")),o},window.addEventListener("popstate",()=>window.dispatchEvent(new Event("locationchange"))),this.options.hash?window.addEventListener("hashchange",()=>this.screenView()):window.addEventListener("locationchange",()=>this.screenView()),this.screenView()}screenView(t){if(this.isServer())return;let e=window.location.href;this.lastPath!==e&&(this.lastPath=e,super.event("screen_view",{...t??{},path:e,title:document.title}))}};var p=document.currentScript;p&&(window.openpanel=new d({url:p?.getAttribute("data-url"),clientId:p?.getAttribute("data-client-id"),trackOutgoingLinks:!!p?.getAttribute("data-track-outgoing-links"),trackScreenViews:!!p?.getAttribute("data-track-screen-views")}));})(); //# sourceMappingURL=cdn.global.js.map \ No newline at end of file diff --git a/apps/public/src/app/api/waitlist/route.ts b/apps/public/src/app/api/waitlist/route.ts index 26352e46..06fb0548 100644 --- a/apps/public/src/app/api/waitlist/route.ts +++ b/apps/public/src/app/api/waitlist/route.ts @@ -1,7 +1,7 @@ import * as EmailValidator from 'email-validator'; import { NextResponse } from 'next/server'; -import { db } from '@mixan/db'; +import { db } from '@openpanel/db'; export const dynamic = 'force-dynamic'; diff --git a/apps/public/src/app/page.tsx b/apps/public/src/app/page.tsx index cd5dbf4e..a5d2faf9 100644 --- a/apps/public/src/app/page.tsx +++ b/apps/public/src/app/page.tsx @@ -1,4 +1,4 @@ -import { db } from '@mixan/db'; +import { db } from '@openpanel/db'; import { PreviewCarousel } from './carousel'; import { Heading2, Lead2, Paragraph } from './copy'; diff --git a/apps/public/tsconfig.json b/apps/public/tsconfig.json index 9d21e044..5df87e7a 100644 --- a/apps/public/tsconfig.json +++ b/apps/public/tsconfig.json @@ -1,25 +1,18 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"], }, "plugins": [ { - "name": "next" - } + "name": "next", + }, ], "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", - "strictNullChecks": true + "strictNullChecks": true, }, - "include": [ - ".", - ".next/types/**/*.ts" - ], - "exclude": [ - "node_modules" - ] + "include": [".", ".next/types/**/*.ts"], + "exclude": ["node_modules"], } diff --git a/apps/test/next.config.mjs b/apps/test/next.config.mjs index 4b9938c8..d3309c59 100644 --- a/apps/test/next.config.mjs +++ b/apps/test/next.config.mjs @@ -6,7 +6,7 @@ /** @type {import("next").NextConfig} */ const config = { reactStrictMode: false, - transpilePackages: ['@mixan/sdk', '@mixan/web', '@mixan/nextjs'], + transpilePackages: ['@openpanel/sdk', '@openpanel/web', '@openpanel/nextjs'], eslint: { ignoreDuringBuilds: true }, typescript: { ignoreBuildErrors: true }, /** diff --git a/apps/test/package.json b/apps/test/package.json index cf7e9246..68f85cae 100644 --- a/apps/test/package.json +++ b/apps/test/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/test", + "name": "@openpanel/test", "version": "0.1.0", "private": true, "scripts": { @@ -12,17 +12,17 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@mixan-test/nextjs": "workspace:@mixan/nextjs@*", - "@mixan-test/sdk": "workspace:@mixan/sdk@*", - "@mixan-test/web": "workspace:@mixan/web@*", + "@openpanel-test/nextjs": "workspace:@openpanel/nextjs@*", + "@openpanel-test/sdk": "workspace:@openpanel/sdk@*", + "@openpanel-test/web": "workspace:@openpanel/web@*", "next": "~14.1.0", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@types/react-syntax-highlighter": "^15.5.9", @@ -42,10 +42,10 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base", - "@mixan/eslint-config/nextjs", - "@mixan/eslint-config/react" + "@openpanel/eslint-config/base", + "@openpanel/eslint-config/nextjs", + "@openpanel/eslint-config/react" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/test/public/op.js b/apps/test/public/op.js index 8d8698d6..897c8bd1 100644 --- a/apps/test/public/op.js +++ b/apps/test/public/op.js @@ -1,2 +1,2 @@ -"use strict";(()=>{function v(r){return Promise.all(Object.entries(r).map(async([t,e])=>[t,await e??""])).then(t=>Object.fromEntries(t))}function m(r){let t={"Content-Type":"application/json"};return{headers:t,async fetch(e,i,n){let s=`${r}${e}`,c,l=await v(t);return new Promise(o=>{let h=a=>{clearTimeout(c),fetch(s,{headers:l,method:"POST",body:JSON.stringify(i??{}),keepalive:!0,...n??{}}).then(async p=>{if(p.status!==200&&p.status!==202)return f(a,o);let g=await p.text();if(!g)return o(null);o(g)}).catch(()=>f(a,o))};function f(a,p){if(a>1)return p(null);c=setTimeout(()=>{h(a+1)},Math.pow(2,a)*500)}h(0)})}}}var d=class{options;api;state={properties:{}};constructor(t){this.options=t,this.api=m(t.url),this.api.headers["mixan-client-id"]=t.clientId,this.options.clientSecret&&(this.api.headers["mixan-client-secret"]=this.options.clientSecret)}init(t){this.state.properties=t??{}}setProfileId(t){this.state.profileId=t}setProfile(t){this.setProfileId(t.profileId),this.api.fetch("/profile",{...t,properties:{...this.state.properties,...t.properties}})}increment(t,e,i){let n=i?.profileId??this.state.profileId;if(!n)return console.log("No profile id");this.api.fetch("/profile/increment",{profileId:n,property:t,value:e})}decrement(t,e,i){let n=i?.profileId??this.state.profileId;if(!n)return console.log("No profile id");this.api.fetch("/profile/decrement",{profileId:n,property:t,value:e})}event(t,e){let i=e?.profileId??this.state.profileId;delete e?.profileId,this.api.fetch("/event",{name:t,properties:{...this.state.properties,...e??{}},timestamp:this.timestamp(),deviceId:this.getDeviceId(),profileId:i}).then(n=>{this.options.setDeviceId&&n&&this.options.setDeviceId(n)})}setGlobalProperties(t){this.state.properties={...this.state.properties,...t}}clear(){this.state.properties={},this.state.deviceId=void 0,this.options.removeDeviceId&&this.options.removeDeviceId()}timestamp(){return new Date().toISOString()}getDeviceId(){if(this.state.deviceId)return this.state.deviceId;this.options.getDeviceId&&(this.state.deviceId=this.options.getDeviceId()||void 0)}};function b(r){return r.replace(/([-_][a-z])/gi,t=>t.toUpperCase().replace("-","").replace("_",""))}var u=class extends d{lastPath="";constructor(t){super(t),this.isServer()||(this.setGlobalProperties({referrer:document.referrer}),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackScreenViews&&this.trackScreenViews(),this.options.trackAttributes&&this.trackAttributes())}isServer(){return typeof document>"u"}trackOutgoingLinks(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("a");if(i&&e){let n=i.getAttribute("href");n?.startsWith("http")&&super.event("link_out",{href:n,text:i.innerText||i.getAttribute("title")||e.getAttribute("alt")||e.getAttribute("title")})}})}trackScreenViews(){if(this.isServer())return;let t=history.pushState;history.pushState=function(...n){let s=t.apply(this,n);return window.dispatchEvent(new Event("pushstate")),window.dispatchEvent(new Event("locationchange")),s};let e=history.replaceState;history.replaceState=function(...n){let s=e.apply(this,n);return window.dispatchEvent(new Event("replacestate")),window.dispatchEvent(new Event("locationchange")),s},window.addEventListener("popstate",()=>window.dispatchEvent(new Event("locationchange"))),this.options.hash?window.addEventListener("hashchange",()=>this.screenView()):window.addEventListener("locationchange",()=>this.screenView()),setTimeout(()=>{this.screenView()},50)}trackAttributes(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("button"),n=e.closest("button"),s=i?.getAttribute("data-event")?i:n?.getAttribute("data-event")?n:null;if(s){let c={};for(let o of s.attributes)o.name.startsWith("data-")&&o.name!=="data-event"&&(c[b(o.name.replace(/^data-/,""))]=o.value);let l=s.getAttribute("data-event");l&&super.event(l,c)}})}screenView(t){if(this.isServer())return;let e=window.location.href;this.lastPath!==e&&(this.lastPath=e,super.event("screen_view",{...t??{},path:e,title:document.title}))}};(r=>{if(r.op&&"q"in r.op){let t=r.op.q||[],e=new u(t.shift()[1]);t.forEach(i=>{i[0]in e&&e[i[0]](...i.slice(1))}),r.op=(i,...n)=>{let s=e[i].bind(e);typeof s=="function"&&s(...n)}}})(window);})(); +"use strict";(()=>{function v(r){return Promise.all(Object.entries(r).map(async([t,e])=>[t,await e??""])).then(t=>Object.fromEntries(t))}function m(r){let t={"Content-Type":"application/json"};return{headers:t,async fetch(e,i,n){let s=`${r}${e}`,c,l=await v(t);return new Promise(o=>{let h=a=>{clearTimeout(c),fetch(s,{headers:l,method:"POST",body:JSON.stringify(i??{}),keepalive:!0,...n??{}}).then(async p=>{if(p.status!==200&&p.status!==202)return f(a,o);let g=await p.text();if(!g)return o(null);o(g)}).catch(()=>f(a,o))};function f(a,p){if(a>1)return p(null);c=setTimeout(()=>{h(a+1)},Math.pow(2,a)*500)}h(0)})}}}var d=class{options;api;state={properties:{}};constructor(t){this.options=t,this.api=m(t.url),this.api.headers["openpanel-client-id"]=t.clientId,this.options.clientSecret&&(this.api.headers["openpanel-client-secret"]=this.options.clientSecret)}init(t){this.state.properties=t??{}}setProfileId(t){this.state.profileId=t}setProfile(t){this.setProfileId(t.profileId),this.api.fetch("/profile",{...t,properties:{...this.state.properties,...t.properties}})}increment(t,e,i){let n=i?.profileId??this.state.profileId;if(!n)return console.log("No profile id");this.api.fetch("/profile/increment",{profileId:n,property:t,value:e})}decrement(t,e,i){let n=i?.profileId??this.state.profileId;if(!n)return console.log("No profile id");this.api.fetch("/profile/decrement",{profileId:n,property:t,value:e})}event(t,e){let i=e?.profileId??this.state.profileId;delete e?.profileId,this.api.fetch("/event",{name:t,properties:{...this.state.properties,...e??{}},timestamp:this.timestamp(),deviceId:this.getDeviceId(),profileId:i}).then(n=>{this.options.setDeviceId&&n&&this.options.setDeviceId(n)})}setGlobalProperties(t){this.state.properties={...this.state.properties,...t}}clear(){this.state.properties={},this.state.deviceId=void 0,this.options.removeDeviceId&&this.options.removeDeviceId()}timestamp(){return new Date().toISOString()}getDeviceId(){if(this.state.deviceId)return this.state.deviceId;this.options.getDeviceId&&(this.state.deviceId=this.options.getDeviceId()||void 0)}};function b(r){return r.replace(/([-_][a-z])/gi,t=>t.toUpperCase().replace("-","").replace("_",""))}var u=class extends d{lastPath="";constructor(t){super(t),this.isServer()||(this.setGlobalProperties({referrer:document.referrer}),this.options.trackOutgoingLinks&&this.trackOutgoingLinks(),this.options.trackScreenViews&&this.trackScreenViews(),this.options.trackAttributes&&this.trackAttributes())}isServer(){return typeof document>"u"}trackOutgoingLinks(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("a");if(i&&e){let n=i.getAttribute("href");n?.startsWith("http")&&super.event("link_out",{href:n,text:i.innerText||i.getAttribute("title")||e.getAttribute("alt")||e.getAttribute("title")})}})}trackScreenViews(){if(this.isServer())return;let t=history.pushState;history.pushState=function(...n){let s=t.apply(this,n);return window.dispatchEvent(new Event("pushstate")),window.dispatchEvent(new Event("locationchange")),s};let e=history.replaceState;history.replaceState=function(...n){let s=e.apply(this,n);return window.dispatchEvent(new Event("replacestate")),window.dispatchEvent(new Event("locationchange")),s},window.addEventListener("popstate",()=>window.dispatchEvent(new Event("locationchange"))),this.options.hash?window.addEventListener("hashchange",()=>this.screenView()):window.addEventListener("locationchange",()=>this.screenView()),setTimeout(()=>{this.screenView()},50)}trackAttributes(){this.isServer()||document.addEventListener("click",t=>{let e=t.target,i=e.closest("button"),n=e.closest("button"),s=i?.getAttribute("data-event")?i:n?.getAttribute("data-event")?n:null;if(s){let c={};for(let o of s.attributes)o.name.startsWith("data-")&&o.name!=="data-event"&&(c[b(o.name.replace(/^data-/,""))]=o.value);let l=s.getAttribute("data-event");l&&super.event(l,c)}})}screenView(t){if(this.isServer())return;let e=window.location.href;this.lastPath!==e&&(this.lastPath=e,super.event("screen_view",{...t??{},path:e,title:document.title}))}};(r=>{if(r.op&&"q"in r.op){let t=r.op.q||[],e=new u(t.shift()[1]);t.forEach(i=>{i[0]in e&&e[i[0]](...i.slice(1))}),r.op=(i,...n)=>{let s=e[i].bind(e);typeof s=="function"&&s(...n)}}})(window);})(); //# sourceMappingURL=cdn.global.js.map \ No newline at end of file diff --git a/apps/test/public/op.js.map b/apps/test/public/op.js.map index 82f6866b..cffe941b 100644 --- a/apps/test/public/op.js.map +++ b/apps/test/public/op.js.map @@ -1 +1,51 @@ -{"version":3,"sources":["../../sdk/index.ts","../index.ts","../cdn.ts"],"sourcesContent":["import type { PostEventPayload } from '@mixan/types';\n\nexport interface MixanOptions {\n url: string;\n clientId: string;\n clientSecret?: string;\n verbose?: boolean;\n setProfileId?: (profileId: string) => void;\n getProfileId?: () => string | null | undefined;\n removeProfileId?: () => void;\n}\n\nexport interface MixanState {\n profileId?: string;\n properties: Record;\n}\n\nfunction createApi(_url: string, clientId: string, clientSecret?: string) {\n return function post(\n path: string,\n data: ReqBody,\n options?: RequestInit\n ): Promise {\n const url = `${_url}${path}`;\n let timer: ReturnType;\n const headers: Record = {\n 'mixan-client-id': clientId,\n 'Content-Type': 'application/json',\n };\n if (clientSecret) {\n headers['mixan-client-secret'] = clientSecret;\n }\n return new Promise((resolve) => {\n const wrappedFetch = (attempt: number) => {\n clearTimeout(timer);\n fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify(data ?? {}),\n keepalive: true,\n ...(options ?? {}),\n })\n .then(async (res) => {\n if (res.status !== 200) {\n return retry(attempt, resolve);\n }\n\n const response = await res.json();\n\n if (!response) {\n return resolve(null);\n }\n\n resolve(response as ResBody);\n })\n .catch(() => {\n return retry(attempt, resolve);\n });\n };\n\n function retry(\n attempt: number,\n resolve: (value: ResBody | null) => void\n ) {\n if (attempt > 1) {\n return resolve(null);\n }\n\n timer = setTimeout(\n () => {\n wrappedFetch(attempt + 1);\n },\n Math.pow(2, attempt) * 500\n );\n }\n\n wrappedFetch(0);\n });\n };\n}\n\nexport class Mixan {\n public options: Options;\n private api: ReturnType;\n private state: MixanState = {\n properties: {},\n };\n\n constructor(options: Options) {\n this.options = options;\n this.api = createApi(options.url, options.clientId, options.clientSecret);\n }\n\n // Public\n\n public init(properties?: Record) {\n this.state.properties = properties ?? {};\n }\n\n // public setUser(payload: Omit) {\n // this.batcher.add({\n // type: 'update_profile',\n // payload: {\n // ...payload,\n // properties: payload.properties ?? {},\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n // public increment(name: string, value: number) {\n // this.batcher.add({\n // type: 'increment',\n // payload: {\n // name,\n // value,\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n // public decrement(name: string, value: number) {\n // this.batcher.add({\n // type: 'decrement',\n // payload: {\n // name,\n // value,\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n private getProfileId() {\n if (this.state.profileId) {\n return this.state.profileId;\n } else if (this.options.getProfileId) {\n this.state.profileId = this.options.getProfileId() || undefined;\n }\n }\n\n public async event(name: string, properties?: Record) {\n const profileId = await this.api('/event', {\n name,\n properties: {\n ...this.state.properties,\n ...(properties ?? {}),\n },\n timestamp: this.timestamp(),\n profileId: this.getProfileId(),\n });\n\n if (this.options.setProfileId && profileId) {\n this.options.setProfileId(profileId);\n }\n }\n\n public setGlobalProperties(properties: Record) {\n this.state.properties = {\n ...this.state.properties,\n ...properties,\n };\n }\n\n public clear() {\n this.state.profileId = undefined;\n if (this.options.removeProfileId) {\n this.options.removeProfileId();\n }\n }\n\n public setUserProperty(name: string, value: unknown, update = true) {\n // this.batcher.add({\n // type: 'set_profile_property',\n // payload: {\n // name,\n // value,\n // update,\n // profileId: this.state.profileId,\n // },\n // });\n }\n\n // Private\n\n private timestamp() {\n return new Date().toISOString();\n }\n}\n","import type { MixanOptions } from '@mixan/sdk';\nimport { Mixan } from '@mixan/sdk';\n\ntype MixanWebOptions = MixanOptions & {\n trackOutgoingLinks?: boolean;\n trackScreenViews?: boolean;\n hash?: boolean;\n};\n\nexport class MixanWeb extends Mixan {\n constructor(options: MixanWebOptions) {\n super(options);\n\n if (this.options.trackOutgoingLinks) {\n this.trackOutgoingLinks();\n }\n\n if (this.options.trackScreenViews) {\n this.trackScreenViews();\n }\n }\n\n private isServer() {\n return typeof document === 'undefined';\n }\n\n private getTimezone() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n return undefined;\n }\n }\n\n public trackOutgoingLinks() {\n if (this.isServer()) {\n return;\n }\n\n document.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n if (target.tagName === 'A') {\n const href = target.getAttribute('href');\n if (href?.startsWith('http')) {\n super.event('link_out', {\n href,\n text: target.innerText,\n });\n }\n }\n });\n }\n\n public trackScreenViews() {\n if (this.isServer()) {\n return;\n }\n\n const oldPushState = history.pushState;\n history.pushState = function pushState(...args) {\n const ret = oldPushState.apply(this, args);\n window.dispatchEvent(new Event('pushstate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n const oldReplaceState = history.replaceState;\n history.replaceState = function replaceState(...args) {\n const ret = oldReplaceState.apply(this, args);\n window.dispatchEvent(new Event('replacestate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n window.addEventListener('popstate', () =>\n window.dispatchEvent(new Event('locationchange'))\n );\n\n if (this.options.hash) {\n window.addEventListener('hashchange', () => this.screenView());\n } else {\n window.addEventListener('locationchange', () => this.screenView());\n }\n }\n\n public screenView(properties?: Record): void {\n if (this.isServer()) {\n return;\n }\n\n super.event('screen_view', {\n ...(properties ?? {}),\n path: window.location.href,\n title: document.title,\n referrer: document.referrer,\n });\n }\n}\n","// @ts-nocheck\n\nimport { MixanWeb as Openpanel } from './index';\n\nconst el = document.currentScript;\nif (el) {\n window.openpanel = new Openpanel({\n url: el?.getAttribute('data-url'),\n clientId: el?.getAttribute('data-client-id'),\n clientSecret: el?.getAttribute('data-client-secret'),\n trackOutgoingLinks: !!el?.getAttribute('data-track-outgoing-links'),\n trackScreenViews: !!el?.getAttribute('data-track-screen-views'),\n });\n}\n"],"mappings":"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","names":["createApi","_url","clientId","clientSecret","path","data","options","url","timer","headers","resolve","wrappedFetch","attempt","res","retry","response","Mixan","properties","name","profileId","value","update","MixanWeb","Mixan","options","event","target","href","oldPushState","args","ret","oldReplaceState","properties","el","MixanWeb"]} \ No newline at end of file +{ + "version": 3, + "sources": [ + "../../sdk/index.ts", + "../index.ts", + "../cdn.ts" + ], + "sourcesContent": [ + "import type { PostEventPayload } from '@openpanel/types';\n\nexport interface OpenpanelOptions {\n url: string;\n clientId: string;\n clientSecret?: string;\n verbose?: boolean;\n setProfileId?: (profileId: string) => void;\n getProfileId?: () => string | null | undefined;\n removeProfileId?: () => void;\n}\n\nexport interface OpenpanelState {\n profileId?: string;\n properties: Record;\n}\n\nfunction createApi(_url: string, clientId: string, clientSecret?: string) {\n return function post(\n path: string,\n data: ReqBody,\n options?: RequestInit\n ): Promise {\n const url = `${_url}${path}`;\n let timer: ReturnType;\n const headers: Record = {\n 'openpanel-client-id': clientId,\n 'Content-Type': 'application/json',\n };\n if (clientSecret) {\n headers['openpanel-client-secret'] = clientSecret;\n }\n return new Promise((resolve) => {\n const wrappedFetch = (attempt: number) => {\n clearTimeout(timer);\n fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify(data ?? {}),\n keepalive: true,\n ...(options ?? {}),\n })\n .then(async (res) => {\n if (res.status !== 200) {\n return retry(attempt, resolve);\n }\n\n const response = await res.json();\n\n if (!response) {\n return resolve(null);\n }\n\n resolve(response as ResBody);\n })\n .catch(() => {\n return retry(attempt, resolve);\n });\n };\n\n function retry(\n attempt: number,\n resolve: (value: ResBody | null) => void\n ) {\n if (attempt > 1) {\n return resolve(null);\n }\n\n timer = setTimeout(\n () => {\n wrappedFetch(attempt + 1);\n },\n Math.pow(2, attempt) * 500\n );\n }\n\n wrappedFetch(0);\n });\n };\n}\n\nexport class Openpanel {\n public options: Options;\n private api: ReturnType;\n private state: OpenpanelState = {\n properties: {},\n };\n\n constructor(options: Options) {\n this.options = options;\n this.api = createApi(options.url, options.clientId, options.clientSecret);\n }\n\n // Public\n\n public init(properties?: Record) {\n this.state.properties = properties ?? {};\n }\n\n // public setUser(payload: Omit) {\n // this.batcher.add({\n // type: 'update_profile',\n // payload: {\n // ...payload,\n // properties: payload.properties ?? {},\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n // public increment(name: string, value: number) {\n // this.batcher.add({\n // type: 'increment',\n // payload: {\n // name,\n // value,\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n // public decrement(name: string, value: number) {\n // this.batcher.add({\n // type: 'decrement',\n // payload: {\n // name,\n // value,\n // profileId: this.state.profileId,\n // },\n // });\n // }\n\n private getProfileId() {\n if (this.state.profileId) {\n return this.state.profileId;\n } else if (this.options.getProfileId) {\n this.state.profileId = this.options.getProfileId() || undefined;\n }\n }\n\n public async event(name: string, properties?: Record) {\n const profileId = await this.api('/event', {\n name,\n properties: {\n ...this.state.properties,\n ...(properties ?? {}),\n },\n timestamp: this.timestamp(),\n profileId: this.getProfileId(),\n });\n\n if (this.options.setProfileId && profileId) {\n this.options.setProfileId(profileId);\n }\n }\n\n public setGlobalProperties(properties: Record) {\n this.state.properties = {\n ...this.state.properties,\n ...properties,\n };\n }\n\n public clear() {\n this.state.profileId = undefined;\n if (this.options.removeProfileId) {\n this.options.removeProfileId();\n }\n }\n\n public setUserProperty(name: string, value: unknown, update = true) {\n // this.batcher.add({\n // type: 'set_profile_property',\n // payload: {\n // name,\n // value,\n // update,\n // profileId: this.state.profileId,\n // },\n // });\n }\n\n // Private\n\n private timestamp() {\n return new Date().toISOString();\n }\n}\n", + "import type { OpenpanelOptions } from '@openpanel/sdk';\nimport { Openpanel } from '@openpanel/sdk';\n\ntype OpenpanelWebOptions = OpenpanelOptions & {\n trackOutgoingLinks?: boolean;\n trackScreenViews?: boolean;\n hash?: boolean;\n};\n\nexport class OpenpanelWeb extends Openpanel {\n constructor(options: OpenpanelWebOptions) {\n super(options);\n\n if (this.options.trackOutgoingLinks) {\n this.trackOutgoingLinks();\n }\n\n if (this.options.trackScreenViews) {\n this.trackScreenViews();\n }\n }\n\n private isServer() {\n return typeof document === 'undefined';\n }\n\n private getTimezone() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n return undefined;\n }\n }\n\n public trackOutgoingLinks() {\n if (this.isServer()) {\n return;\n }\n\n document.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n if (target.tagName === 'A') {\n const href = target.getAttribute('href');\n if (href?.startsWith('http')) {\n super.event('link_out', {\n href,\n text: target.innerText,\n });\n }\n }\n });\n }\n\n public trackScreenViews() {\n if (this.isServer()) {\n return;\n }\n\n const oldPushState = history.pushState;\n history.pushState = function pushState(...args) {\n const ret = oldPushState.apply(this, args);\n window.dispatchEvent(new Event('pushstate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n const oldReplaceState = history.replaceState;\n history.replaceState = function replaceState(...args) {\n const ret = oldReplaceState.apply(this, args);\n window.dispatchEvent(new Event('replacestate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n window.addEventListener('popstate', () =>\n window.dispatchEvent(new Event('locationchange'))\n );\n\n if (this.options.hash) {\n window.addEventListener('hashchange', () => this.screenView());\n } else {\n window.addEventListener('locationchange', () => this.screenView());\n }\n }\n\n public screenView(properties?: Record): void {\n if (this.isServer()) {\n return;\n }\n\n super.event('screen_view', {\n ...(properties ?? {}),\n path: window.location.href,\n title: document.title,\n referrer: document.referrer,\n });\n }\n}\n", + "// @ts-nocheck\n\nimport { OpenpanelWeb as Openpanel } from './index';\n\nconst el = document.currentScript;\nif (el) {\n window.openpanel = new Openpanel({\n url: el?.getAttribute('data-url'),\n clientId: el?.getAttribute('data-client-id'),\n clientSecret: el?.getAttribute('data-client-secret'),\n trackOutgoingLinks: !!el?.getAttribute('data-track-outgoing-links'),\n trackScreenViews: !!el?.getAttribute('data-track-screen-views'),\n });\n}\n" + ], + "mappings": "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", + "names": [ + "createApi", + "_url", + "clientId", + "clientSecret", + "path", + "data", + "options", + "url", + "timer", + "headers", + "resolve", + "wrappedFetch", + "attempt", + "res", + "retry", + "response", + "Openpanel", + "properties", + "name", + "profileId", + "value", + "update", + "OpenpanelWeb", + "Openpanel", + "options", + "event", + "target", + "href", + "oldPushState", + "args", + "ret", + "oldReplaceState", + "properties", + "el", + "OpenpanelWeb" + ] +} diff --git a/apps/test/src/analytics.ts b/apps/test/src/analytics.ts index 910620b9..daa3ee7b 100644 --- a/apps/test/src/analytics.ts +++ b/apps/test/src/analytics.ts @@ -1,14 +1,127 @@ -// import { MixanWeb } from '@mixan-test/web'; +import type { FastifyReply, FastifyRequest } from "fastify"; +import icoToPng from "ico-to-png"; +import sharp from "sharp"; -// export const mixan = new MixanWeb({ -// verbose: true, -// url: 'http://localhost:3000/api/sdk', -// clientId: '568b4ed1-5d00-4f27-88a7-b8959e6674bd', -// clientSecret: '1e362905-d352-44c4-9263-e037a2ad52fb', -// trackIp: true, -// }); +import { createHash } from "@openpanel/common"; +import { redis } from "@openpanel/redis"; -// mixan.init({ -// appVersion: '1.0.0', -// }); -// mixan.trackOutgoingLinks(); +interface GetFaviconParams { + url: string; +} + +async function getImageBuffer(url: string) { + try { + const res = await fetch(url); + const contentType = res.headers.get("content-type"); + + if (!contentType?.includes("image")) { + return null; + } + + if (!res.ok) { + return null; + } + + if (contentType === "image/x-icon" || url.endsWith(".ico")) { + const arrayBuffer = await res.arrayBuffer(); + const buffer = Buffer.from(arrayBuffer); + return await icoToPng(buffer, 30); + } + + return await sharp(await res.arrayBuffer()) + .resize(30, 30, { + fit: "cover", + }) + .png() + .toBuffer(); + } catch (e) { + console.log("Failed to get image from url", url); + console.log(e); + } +} + +const imageExtensions = ["svg", "png", "jpg", "jpeg", "gif", "webp", "ico"]; + +export async function getFavicon( + request: FastifyRequest<{ + Querystring: GetFaviconParams; + }>, + reply: FastifyReply, +) { + function sendBuffer(buffer: Buffer, cacheKey?: string) { + if (cacheKey) { + redis.set(`favicon:${cacheKey}`, buffer.toString("base64")); + } + reply.type("image/png"); + console.log("buffer", buffer.byteLength); + + return reply.send(buffer); + } + + if (!request.query.url) { + return reply.status(404).send("Not found"); + } + + const url = decodeURIComponent(request.query.url); + + // DIRECT IMAGE + if (imageExtensions.find((ext) => url.endsWith(ext))) { + const cacheKey = createHash(url, 32); + const cache = await redis.get(`favicon:${cacheKey}`); + if (cache) { + return sendBuffer(Buffer.from(cache, "base64")); + } + const buffer = await getImageBuffer(url); + if (buffer && buffer.byteLength > 0) { + return sendBuffer(buffer, cacheKey); + } + } + + const { hostname, origin } = new URL(url); + const cache = await redis.get(`favicon:${hostname}`); + if (cache) { + return sendBuffer(Buffer.from(cache, "base64")); + } + + // TRY FAVICON.ICO + const buffer = await getImageBuffer(`${origin}/favicon.ico`); + if (buffer && buffer.byteLength > 0) { + return sendBuffer(buffer, hostname); + } + + // PARSE HTML + const res = await fetch(url).then((res) => res.text()); + + function findFavicon(res: string) { + const match = res.match( + /(\|\)/, + ); + if (!match) { + return null; + } + + return match[0].match(/href="(.+?)"/)?.[1] ?? null; + } + + const favicon = findFavicon(res); + if (favicon) { + const buffer = await getImageBuffer(favicon); + + if (buffer && buffer.byteLength > 0) { + return sendBuffer(buffer, hostname); + } + } + + return reply.status(404).send("Not found"); +} + +export async function clearFavicons( + request: FastifyRequest, + reply: FastifyReply, +) { + const keys = await redis.keys("favicon:*"); + for (const key of keys) { + await redis.del(key); + } + return reply.status(404).send("OK"); +} diff --git a/apps/test/src/app/app-dir/page.tsx b/apps/test/src/app/app-dir/page.tsx index 45836297..14befafb 100644 --- a/apps/test/src/app/app-dir/page.tsx +++ b/apps/test/src/app/app-dir/page.tsx @@ -1,59 +1,113 @@ -import { - OpenpanelProvider, - SetProfileId, - trackEvent, -} from '@mixan-test/nextjs'; -import { Mixan as Openpanel } from '@mixan-test/sdk'; +import { getClientIp, parseIp } from "@/utils/parseIp"; +import { isUserAgentSet, parseUserAgent } from "@/utils/parseUserAgent"; +import type { FastifyReply, FastifyRequest } from "fastify"; +import { assocPath, pathOr } from "ramda"; -const opServer = new Openpanel({ - clientId: '4c9a28cb-73c3-429f-beaf-4b3fe91352ea', - clientSecret: '2701ada9-fcbf-414a-ac94-9511949ee44d', - url: 'https://api.openpanel.dev', -}); +import { getProfileById, upsertProfile } from "@openpanel/db"; +import type { + IncrementProfilePayload, + UpdateProfilePayload, +} from "@openpanel/sdk"; -export default function Page() { - // Track event in server actions - async function create() { - 'use server'; - opServer.event('some-event', { - profileId: '1234', - }); +export async function updateProfile( + request: FastifyRequest<{ + Body: UpdateProfilePayload; + }>, + reply: FastifyReply, +) { + const { profileId, properties, ...rest } = request.body; + const projectId = request.projectId; + const ip = getClientIp(request)!; + const ua = request.headers["user-agent"]!; + const uaInfo = parseUserAgent(ua); + const geo = await parseIp(ip); + + await upsertProfile({ + id: profileId, + projectId, + properties: { + ...(properties ?? {}), + ...(ip ? geo : {}), + ...(isUserAgentSet(ua) ? uaInfo : {}), + }, + ...rest, + }); + + reply.status(202).send(profileId); +} + +export async function incrementProfileProperty( + request: FastifyRequest<{ + Body: IncrementProfilePayload; + }>, + reply: FastifyReply, +) { + const { profileId, property, value } = request.body; + const projectId = request.projectId; + + const profile = await getProfileById(profileId); + if (!profile) { + return reply.status(404).send("Not found"); } - return ( -
- {/* In layout.tsx (app dir) or _app.tsx (pages) */} - - - {/* Provide user id in React Server Components */} - - - - - -
+ const parsed = parseInt( + pathOr("0", property.split("."), profile.properties), + 10, ); + + if (isNaN(parsed)) { + return reply.status(400).send("Not number"); + } + + profile.properties = assocPath( + property.split("."), + parsed + value, + profile.properties, + ); + + await upsertProfile({ + id: profile.id, + projectId, + properties: profile.properties, + }); + + reply.status(202).send(profile.id); +} + +export async function decrementProfileProperty( + request: FastifyRequest<{ + Body: IncrementProfilePayload; + }>, + reply: FastifyReply, +) { + const { profileId, property, value } = request.body; + const projectId = request.projectId; + + const profile = await getProfileById(profileId); + if (!profile) { + return reply.status(404).send("Not found"); + } + + const parsed = parseInt( + pathOr("0", property.split("."), profile.properties), + 10, + ); + + if (isNaN(parsed)) { + return reply.status(400).send("Not number"); + } + + profile.properties = assocPath( + property.split("."), + parsed - value, + profile.properties, + ); + + await upsertProfile({ + id: profile.id, + projectId, + properties: profile.properties, + }); + + reply.status(202).send(profile.id); } diff --git a/apps/test/src/app/layout.tsx b/apps/test/src/app/layout.tsx index 2a1915d1..f15c9cd8 100644 --- a/apps/test/src/app/layout.tsx +++ b/apps/test/src/app/layout.tsx @@ -1,4 +1,4 @@ -import { OpenpanelProvider } from '@mixan-test/nextjs'; +import { OpenpanelProvider } from '@openpanel-test/nextjs'; export default function Layout({ children }: { children: React.ReactNode }) { return ( diff --git a/apps/test/src/pages/_app.tsx b/apps/test/src/pages/_app.tsx index 61c6ad43..348016a3 100644 --- a/apps/test/src/pages/_app.tsx +++ b/apps/test/src/pages/_app.tsx @@ -1,15 +1,51 @@ -import { OpenpanelProvider } from '@mixan-test/nextjs'; -import type { AppProps } from 'next/app'; - -export default function MyApp({ Component, pageProps }: AppProps) { - return ( - <> - - - - ); +{ + "name": "@openpanel/api", + "version": "0.0.1", + "scripts": { + "dev": "dotenv -e ../../.env -c -v WATCH=1 tsup", + "testing": "API_PORT=3333 pnpm dev", + "start": "node dist/index.js", + "build": "rm -rf dist && tsup", + "lint": "eslint .", + "format": "prettier --check \"**/*.{mjs,ts,md,json}\"", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@fastify/cors": "^9.0.0", + "@fastify/websocket": "^8.3.1", + "@logtail/pino": "^0.4.19", + "@openpanel/common": "workspace:*", + "@openpanel/db": "workspace:*", + "@openpanel/queue": "workspace:*", + "@openpanel/redis": "workspace:*", + "fastify": "^4.25.2", + "ico-to-png": "^0.2.1", + "pino": "^8.17.2", + "pino-pretty": "^10.3.1", + "ramda": "^0.29.1", + "sharp": "^0.33.2", + "ua-parser-js": "^1.0.37", + "uuid": "^9.0.1" + }, + "devDependencies": { + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/sdk": "workspace:*", + "@openpanel/tsconfig": "workspace:*", + "@types/ramda": "^0.29.6", + "@types/ua-parser-js": "^0.7.39", + "@types/uuid": "^9.0.8", + "@types/ws": "^8.5.10", + "eslint": "^8.48.0", + "prettier": "^3.0.3", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + }, + "eslintConfig": { + "root": true, + "extends": [ + "@openpanel/eslint-config/base" + ] + }, + "prettier": "@openpanel/prettier-config" } diff --git a/apps/test/src/pages/test.tsx b/apps/test/src/pages/test.tsx index 1cdd3918..d93d4241 100644 --- a/apps/test/src/pages/test.tsx +++ b/apps/test/src/pages/test.tsx @@ -5,7 +5,7 @@ import { increment, setProfile, trackEvent, -} from '@mixan-test/nextjs'; +} from '@openpanel-test/nextjs'; import Link from 'next/link'; export default function Test() { diff --git a/apps/test/tsconfig.json b/apps/test/tsconfig.json index 9d21e044..f25ad65e 100644 --- a/apps/test/tsconfig.json +++ b/apps/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/apps/worker/package.json b/apps/worker/package.json index 935d9ef5..f56f9d04 100644 --- a/apps/worker/package.json +++ b/apps/worker/package.json @@ -1,5 +1,5 @@ { - "name": "@mixan/worker", + "name": "@openpanel/worker", "version": "0.0.1", "scripts": { "dev": "dotenv -e ../../.env -c -v WATCH=1 tsup", @@ -13,18 +13,18 @@ "dependencies": { "@bull-board/api": "^5.13.0", "@bull-board/express": "^5.13.0", - "@mixan/db": "workspace:*", - "@mixan/queue": "workspace:*", - "@mixan/common": "workspace:*", - "@mixan/redis": "workspace:*", + "@openpanel/db": "workspace:*", + "@openpanel/queue": "workspace:*", + "@openpanel/common": "workspace:*", + "@openpanel/redis": "workspace:*", "bullmq": "^5.1.1", "express": "^4.18.2", "ramda": "^0.29.1" }, "devDependencies": { - "@mixan/eslint-config": "workspace:*", - "@mixan/prettier-config": "workspace:*", - "@mixan/tsconfig": "workspace:*", + "@openpanel/eslint-config": "workspace:*", + "@openpanel/prettier-config": "workspace:*", + "@openpanel/tsconfig": "workspace:*", "@types/express": "^4.17.21", "@types/ramda": "^0.29.6", "eslint": "^8.48.0", @@ -35,8 +35,8 @@ "eslintConfig": { "root": true, "extends": [ - "@mixan/eslint-config/base" + "@openpanel/eslint-config/base" ] }, - "prettier": "@mixan/prettier-config" + "prettier": "@openpanel/prettier-config" } diff --git a/apps/worker/src/index.ts b/apps/worker/src/index.ts index a43b4862..422a5588 100644 --- a/apps/worker/src/index.ts +++ b/apps/worker/src/index.ts @@ -5,8 +5,8 @@ import type { WorkerOptions } from 'bullmq'; import { Worker } from 'bullmq'; import express from 'express'; -import { connection, eventsQueue } from '@mixan/queue'; -import { cronQueue } from '@mixan/queue/src/queues'; +import { connection, eventsQueue } from '@openpanel/queue'; +import { cronQueue } from '@openpanel/queue/src/queues'; import { cronJob } from './jobs/cron'; import { eventsJob } from './jobs/events'; diff --git a/apps/worker/src/jobs/cron.salt.ts b/apps/worker/src/jobs/cron.salt.ts index 403bf64b..9792040e 100644 --- a/apps/worker/src/jobs/cron.salt.ts +++ b/apps/worker/src/jobs/cron.salt.ts @@ -1,5 +1,5 @@ -import { generateSalt } from '@mixan/common'; -import { db, getCurrentSalt } from '@mixan/db'; +import { generateSalt } from '@openpanel/common'; +import { db, getCurrentSalt } from '@openpanel/db'; export async function salt() { const oldSalt = await getCurrentSalt(); diff --git a/apps/worker/src/jobs/cron.ts b/apps/worker/src/jobs/cron.ts index 7dfa16f8..87e5d588 100644 --- a/apps/worker/src/jobs/cron.ts +++ b/apps/worker/src/jobs/cron.ts @@ -1,6 +1,6 @@ import type { Job } from 'bullmq'; -import type { CronQueuePayload } from '@mixan/queue/src/queues'; +import type { CronQueuePayload } from '@openpanel/queue/src/queues'; import { salt } from './cron.salt'; diff --git a/apps/worker/src/jobs/events.create-session-end.ts b/apps/worker/src/jobs/events.create-session-end.ts index 982c7012..ee7b2a22 100644 --- a/apps/worker/src/jobs/events.create-session-end.ts +++ b/apps/worker/src/jobs/events.create-session-end.ts @@ -1,8 +1,8 @@ import type { Job } from 'bullmq'; -import { getTime } from '@mixan/common'; -import { createEvent, getEvents } from '@mixan/db'; -import type { EventsQueuePayloadCreateSessionEnd } from '@mixan/queue/src/queues'; +import { getTime } from '@openpanel/common'; +import { createEvent, getEvents } from '@openpanel/db'; +import type { EventsQueuePayloadCreateSessionEnd } from '@openpanel/queue/src/queues'; export async function createSessionEnd( job: Job diff --git a/apps/worker/src/jobs/events.ts b/apps/worker/src/jobs/events.ts index c8811d1b..08998f83 100644 --- a/apps/worker/src/jobs/events.ts +++ b/apps/worker/src/jobs/events.ts @@ -1,10 +1,10 @@ import type { Job } from 'bullmq'; -import { createEvent } from '@mixan/db'; +import { createEvent } from '@openpanel/db'; import type { EventsQueuePayload, EventsQueuePayloadCreateSessionEnd, -} from '@mixan/queue/src/queues'; +} from '@openpanel/queue/src/queues'; import { createSessionEnd } from './events.create-session-end'; diff --git a/apps/worker/tsconfig.json b/apps/worker/tsconfig.json index 73b1bbe4..5df87e7a 100644 --- a/apps/worker/tsconfig.json +++ b/apps/worker/tsconfig.json @@ -1,12 +1,18 @@ { - "extends": "@mixan/tsconfig/base.json", + "extends": "@openpanel/tsconfig/base.json", "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": ["./src/*"], }, - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + "plugins": [ + { + "name": "next", + }, + ], + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "strictNullChecks": true, }, - "include": ["."], - "exclude": ["node_modules"] + "include": [".", ".next/types/**/*.ts"], + "exclude": ["node_modules"], } diff --git a/apps/worker/tsup.config.ts b/apps/worker/tsup.config.ts index 8085bff4..995a74bd 100644 --- a/apps/worker/tsup.config.ts +++ b/apps/worker/tsup.config.ts @@ -4,7 +4,7 @@ import type { Options } from 'tsup'; const options: Options = { clean: true, entry: ['src/index.ts'], - noExternal: [/^@mixan\/.*$/u, /^@\/.*$/u], + noExternal: [/^@openpanel\/.*$/u, /^@\/.*$/u], sourcemap: true, splitting: false, }; diff --git a/docker/Dockerfile-composed b/docker/Dockerfile-composed index 713202a1..149409d5 100644 --- a/docker/Dockerfile-composed +++ b/docker/Dockerfile-composed @@ -6,7 +6,7 @@ FROM --platform=linux/amd64 node:20-slim AS base -ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/mixan?schema=public" +ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/openpanel?schema=public" ENV DATABASE_URL=$DATABASE_URL ARG NEXTAUTH_SECRET="secret_sauce" diff --git a/docker/Dockerfile-web b/docker/Dockerfile-web index 9bc83e58..b4f59593 100644 --- a/docker/Dockerfile-web +++ b/docker/Dockerfile-web @@ -2,7 +2,7 @@ FROM --platform=linux/amd64 node:20-slim AS base -ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/mixan?schema=public" +ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/openpanel?schema=public" ENV DATABASE_URL=$DATABASE_URL ARG NEXTAUTH_SECRET="secret_sauce" diff --git a/docker/Dockerfile-worker b/docker/Dockerfile-worker index 437b5519..de6da350 100644 --- a/docker/Dockerfile-worker +++ b/docker/Dockerfile-worker @@ -2,7 +2,7 @@ FROM --platform=linux/amd64 node:20-slim AS base -ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/mixan?schema=public" +ARG DATABASE_URL="postgresql://local@host.docker.internal:5432/openpanel?schema=public" ENV DATABASE_URL=$DATABASE_URL ARG REDIS_URL="redis://127.0.0.1:6379" diff --git a/docker/build-composed b/docker/build-composed index 9626e5e8..cb872e52 100755 --- a/docker/build-composed +++ b/docker/build-composed @@ -1,10 +1,10 @@ #!/bin/bash docker build \ - --build-arg DATABASE_URL="postgresql://local@host.docker.internal:5432/mixan?schema=public" \ + --build-arg DATABASE_URL="postgresql://local@host.docker.internal:5432/openpanel?schema=public" \ --build-arg NEXTAUTH_SECRET="secret_sauce" \ --build-arg REDIS_URL="redis://127.0.0.1:6379" \ - -t mixan/composed:latest \ - -t mixan/composed:1.0 \ + -t openpanel/composed:latest \ + -t openpanel/composed:1.0 \ -f docker/Dockerfile-composed \ . \ No newline at end of file diff --git a/images/bar.png b/images/bar.png deleted file mode 100644 index 9d371cd88da35e4d8c63a2c560e95e2732d68fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746997 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≺h}uxH^!M$%tmMcbo{j*=E1s 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 GPVQN( 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