Add isManagedCloud feature, remove sentry, and require custom oauth app on self-hosting
This commit is contained in:
@@ -24,6 +24,7 @@ import { Label } from "../primitives/Label";
|
||||
import { NamedIcon } from "../primitives/NamedIcon";
|
||||
import { Paragraph } from "../primitives/Paragraph";
|
||||
import type { ConnectionType } from "@trigger.dev/database";
|
||||
import { useFeatures } from "~/hooks/useFeatures";
|
||||
|
||||
export type Status = "loading" | "idle";
|
||||
|
||||
@@ -45,6 +46,8 @@ export function ConnectToOAuthForm({
|
||||
const [id] = useState<string>(cuid());
|
||||
const transition = useNavigation();
|
||||
const fetcher = useFetcher();
|
||||
const { isManagedCloud } = useFeatures();
|
||||
|
||||
const [
|
||||
form,
|
||||
{ title, scopes, hasCustomClient, customClientId, customClientSecret },
|
||||
@@ -66,7 +69,9 @@ export function ConnectToOAuthForm({
|
||||
)
|
||||
);
|
||||
|
||||
const [useMyOAuthApp, setUseMyOAuthApp] = useState(clientType === "EXTERNAL");
|
||||
const requiresCustomOAuthApp = clientType === "EXTERNAL" || !isManagedCloud;
|
||||
|
||||
const [useMyOAuthApp, setUseMyOAuthApp] = useState(requiresCustomOAuthApp);
|
||||
|
||||
const { filterText, setFilterText, filteredItems } = useTextFilter<Scope>({
|
||||
items: authMethod.scopes,
|
||||
@@ -126,10 +131,10 @@ export function ConnectToOAuthForm({
|
||||
id="hasCustomClient"
|
||||
label="Use my OAuth App"
|
||||
variant="simple/small"
|
||||
defaultChecked={clientType === "EXTERNAL" ? true : useMyOAuthApp}
|
||||
disabled={clientType === "EXTERNAL"}
|
||||
disabled={requiresCustomOAuthApp}
|
||||
onChange={(checked) => setUseMyOAuthApp(checked)}
|
||||
{...conform.input(hasCustomClient, { type: "checkbox" })}
|
||||
defaultChecked={requiresCustomOAuthApp}
|
||||
/>
|
||||
{useMyOAuthApp && (
|
||||
<div className="ml-6 mt-2">
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { RemixBrowser, useLocation, useMatches } from "@remix-run/react";
|
||||
import { hydrateRoot } from "react-dom/client";
|
||||
import * as Sentry from "@sentry/remix";
|
||||
import { useEffect } from "react";
|
||||
import posthog from "posthog-js";
|
||||
import { LocaleContextProvider } from "./components/primitives/LocaleProvider";
|
||||
@@ -16,25 +15,3 @@ hydrateRoot(
|
||||
</LocaleContextProvider>
|
||||
</OperatingSystemContextProvider>
|
||||
);
|
||||
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
Sentry.init({
|
||||
dsn: "https://bf96820b08004fa4b2e1506f2ac74a14@o4504419574087680.ingest.sentry.io/4504419607052288",
|
||||
tracesSampleRate: 1,
|
||||
integrations: [
|
||||
new Sentry.BrowserTracing({
|
||||
routingInstrumentation: Sentry.remixRouterInstrumentation(
|
||||
useEffect,
|
||||
useLocation,
|
||||
useMatches
|
||||
),
|
||||
}),
|
||||
//casted because TypeScript is unhappy about the type from PostHog
|
||||
new posthog.SentryIntegration(
|
||||
posthog,
|
||||
"triggerdev",
|
||||
4504419607052288
|
||||
) as any,
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import * as Sentry from "~/services/sentry.server";
|
||||
import * as Worker from "~/services/worker.server";
|
||||
import { PassThrough } from "stream";
|
||||
import { renderToPipeableStream } from "react-dom/server";
|
||||
@@ -144,5 +143,4 @@ function serveBrowsers(
|
||||
});
|
||||
}
|
||||
|
||||
Sentry.init();
|
||||
Worker.init().catch(console.error);
|
||||
|
||||
@@ -17,7 +17,6 @@ const EnvironmentSchema = z.object({
|
||||
.string()
|
||||
// eslint-disable-next-line turbo/no-undeclared-env-vars
|
||||
.default(process.env.FC_URL ?? "https://app.trigger.dev"),
|
||||
SENTRY_DSN: z.string().optional(),
|
||||
APP_ENV: z
|
||||
.union([
|
||||
z.literal("development"),
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
import { requestUrl } from "./utils";
|
||||
|
||||
export type TriggerFeatures = {
|
||||
isManagedCloud: boolean;
|
||||
};
|
||||
|
||||
// If the request host is cloud.trigger.dev then we are on the managed cloud
|
||||
// or if env.NODE_ENV is development
|
||||
export function featuresForRequest(request: Request): TriggerFeatures {
|
||||
const url = requestUrl(request);
|
||||
|
||||
const isManagedCloud =
|
||||
url.host === "cloud.trigger.dev" || process.env.NODE_ENV === "development";
|
||||
|
||||
return {
|
||||
isManagedCloud,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { useTypedRouteLoaderData } from "remix-typedjson";
|
||||
import { loader } from "../root";
|
||||
import type { TriggerFeatures } from "~/features.server";
|
||||
|
||||
export function useFeatures(): TriggerFeatures {
|
||||
const routeMatch = useTypedRouteLoaderData<typeof loader>("root");
|
||||
|
||||
return routeMatch?.features ?? { isManagedCloud: false };
|
||||
}
|
||||
@@ -14,6 +14,7 @@ export const usePostHog = (apiKey?: string, logging = false): void => {
|
||||
//start PostHog once
|
||||
useEffect(() => {
|
||||
if (apiKey === undefined) return;
|
||||
if (apiKey === "") return;
|
||||
if (postHogInitialized.current === true) return;
|
||||
if (logging) console.log("posthog.init", apiKey);
|
||||
postHogInitialized.current = true;
|
||||
|
||||
@@ -10,7 +10,6 @@ import {
|
||||
isRouteErrorResponse,
|
||||
useRouteError,
|
||||
} from "@remix-run/react";
|
||||
import { withSentry } from "@sentry/remix";
|
||||
import { typedjson, useTypedLoaderData } from "remix-typedjson";
|
||||
import type { ToastMessage } from "~/models/message.server";
|
||||
import { commitSession, getSession } from "~/models/message.server";
|
||||
@@ -26,6 +25,7 @@ import { env } from "./env.server";
|
||||
import { usePostHog } from "./hooks/usePostHog";
|
||||
import { getUser } from "./services/session.server";
|
||||
import { friendlyErrorDisplay } from "./utils/httpErrors";
|
||||
import { featuresForRequest } from "./features.server";
|
||||
|
||||
export const links: LinksFunction = () => {
|
||||
return [{ rel: "stylesheet", href: tailwindStylesheetUrl }];
|
||||
@@ -41,12 +41,14 @@ export const loader = async ({ request }: LoaderArgs) => {
|
||||
const session = await getSession(request.headers.get("cookie"));
|
||||
const toastMessage = session.get("toastMessage") as ToastMessage;
|
||||
const posthogProjectKey = env.POSTHOG_PROJECT_KEY;
|
||||
const features = featuresForRequest(request);
|
||||
|
||||
return typedjson(
|
||||
{
|
||||
user: await getUser(request),
|
||||
toastMessage,
|
||||
posthogProjectKey,
|
||||
features,
|
||||
},
|
||||
{ headers: { "Set-Cookie": await commitSession(session) } }
|
||||
);
|
||||
@@ -128,4 +130,4 @@ function App() {
|
||||
);
|
||||
}
|
||||
|
||||
export default withSentry(App);
|
||||
export default App;
|
||||
|
||||
@@ -10,10 +10,10 @@ export const airtable: Integration = {
|
||||
type: "oauth2",
|
||||
client: {
|
||||
id: {
|
||||
envName: "EXTERNAL_AIRTABLE_CLIENT_ID",
|
||||
envName: "CLOUD_AIRTABLE_CLIENT_ID",
|
||||
},
|
||||
secret: {
|
||||
envName: "EXTERNAL_AIRTABLE_CLIENT_SECRET",
|
||||
envName: "CLOUD_AIRTABLE_CLIENT_SECRET",
|
||||
},
|
||||
},
|
||||
config: {
|
||||
|
||||
@@ -30,10 +30,10 @@ export const github: Integration = {
|
||||
type: "oauth2",
|
||||
client: {
|
||||
id: {
|
||||
envName: "EXTERNAL_GITHUB_CLIENT_ID",
|
||||
envName: "CLOUD_GITHUB_CLIENT_ID",
|
||||
},
|
||||
secret: {
|
||||
envName: "EXTERNAL_GITHUB_CLIENT_SECRET",
|
||||
envName: "CLOUD_GITHUB_CLIENT_SECRET",
|
||||
},
|
||||
},
|
||||
config: {
|
||||
|
||||
@@ -11,10 +11,10 @@ export const slack: Integration = {
|
||||
type: "oauth2",
|
||||
client: {
|
||||
id: {
|
||||
envName: "EXTERNAL_SLACK_CLIENT_ID",
|
||||
envName: "CLOUD_SLACK_CLIENT_ID",
|
||||
},
|
||||
secret: {
|
||||
envName: "EXTERNAL_SLACK_CLIENT_SECRET",
|
||||
envName: "CLOUD_SLACK_CLIENT_SECRET",
|
||||
},
|
||||
},
|
||||
config: {
|
||||
@@ -31,7 +31,7 @@ export const slack: Integration = {
|
||||
refresh: {
|
||||
url: "https://slack.com/api/oauth.v2.access",
|
||||
},
|
||||
appHostEnvName: "EXTERNAL_SLACK_APP_HOST",
|
||||
appHostEnvName: "CLOUD_SLACK_APP_HOST",
|
||||
},
|
||||
scopes: [
|
||||
{
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
import * as Sentry from "@sentry/remix";
|
||||
import { env } from "~/env.server";
|
||||
import { prisma } from "~/db.server";
|
||||
|
||||
declare global {
|
||||
var __sentry_initialized: boolean;
|
||||
}
|
||||
|
||||
export function init() {
|
||||
if (global.__sentry_initialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!env.SENTRY_DSN) {
|
||||
return;
|
||||
}
|
||||
|
||||
global.__sentry_initialized = true;
|
||||
|
||||
Sentry.init({
|
||||
dsn: env.SENTRY_DSN,
|
||||
tracesSampleRate: 1,
|
||||
integrations: [new Sentry.Integrations.Prisma({ client: prisma })],
|
||||
environment: env.APP_ENV,
|
||||
maxBreadcrumbs: 50,
|
||||
normalizeDepth: 5,
|
||||
});
|
||||
|
||||
console.log(`🚦 Sentry initialized in ${env.APP_ENV} mode`);
|
||||
}
|
||||
@@ -20,7 +20,6 @@
|
||||
"typecheck": "tsc -b",
|
||||
"db:seed": "ts-node prisma/seed.ts",
|
||||
"generate:sourcemaps": "remix build --sourcemap",
|
||||
"sentry-upload": "pnpm run generate:sourcemaps && sentry-upload-sourcemaps",
|
||||
"clean:sourcemaps": "run-s clean:sourcemaps:*",
|
||||
"clean:sourcemaps:public": "rimraf ./build/**/*.map",
|
||||
"clean:sourcemaps:build": "rimraf ./public/build/**/*.map",
|
||||
@@ -68,7 +67,6 @@
|
||||
"@remix-run/react": "1.16.1",
|
||||
"@remix-run/serve": "^1.16.1",
|
||||
"@remix-run/server-runtime": "1.16.1",
|
||||
"@sentry/remix": "^7.53.1",
|
||||
"@tanstack/react-table": "^8.0.0-alpha.87",
|
||||
"@team-plain/typescript-sdk": "^2.2.0",
|
||||
"@trigger.dev/companyicons": "^1.5.8",
|
||||
|
||||
@@ -2,13 +2,7 @@ import path from "path";
|
||||
import express from "express";
|
||||
import compression from "compression";
|
||||
import morgan from "morgan";
|
||||
import { createRequestHandler as expressCreateRequestHandler } from "@remix-run/express";
|
||||
import { wrapExpressCreateRequestHandler } from "@sentry/remix";
|
||||
|
||||
const createRequestHandler =
|
||||
process.env.NODE_ENV === "production"
|
||||
? wrapExpressCreateRequestHandler(expressCreateRequestHandler)
|
||||
: expressCreateRequestHandler;
|
||||
import { createRequestHandler } from "@remix-run/express";
|
||||
|
||||
const app = express();
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
"changeset:release": "pnpm run build --filter \"@trigger.dev/*\" && changeset publish",
|
||||
"changeset:next": "changeset pre enter next",
|
||||
"changeset:normal": "changeset pre exit",
|
||||
"sentry-upload": "turbo run sentry-upload",
|
||||
"clean:sourcemaps": "turbo run clean:sourcemaps",
|
||||
"storybook": "turbo run storybook"
|
||||
},
|
||||
|
||||
Generated
+9
-169
@@ -82,7 +82,6 @@ importers:
|
||||
'@remix-run/serve': ^1.16.1
|
||||
'@remix-run/server-runtime': 1.16.1
|
||||
'@remix-run/testing': ^1.16.1
|
||||
'@sentry/remix': ^7.53.1
|
||||
'@storybook/addon-backgrounds': ^7.0.7
|
||||
'@storybook/addon-docs': ^7.0.12
|
||||
'@storybook/addon-essentials': ^7.0.7
|
||||
@@ -271,7 +270,6 @@ importers:
|
||||
'@remix-run/react': 1.16.1_biqbaboplfbrettd7655fr4n2y
|
||||
'@remix-run/serve': 1.16.1
|
||||
'@remix-run/server-runtime': 1.16.1
|
||||
'@sentry/remix': 7.53.1_535ee7qxxe65mhmlpnplklpcuu
|
||||
'@tanstack/react-table': 8.7.6_biqbaboplfbrettd7655fr4n2y
|
||||
'@team-plain/typescript-sdk': 2.2.0
|
||||
'@trigger.dev/companyicons': 1.5.8_biqbaboplfbrettd7655fr4n2y
|
||||
@@ -8865,131 +8863,6 @@ packages:
|
||||
selderee: 0.10.0
|
||||
dev: false
|
||||
|
||||
/@sentry-internal/tracing/7.53.1:
|
||||
resolution: {integrity: sha512-a4H4rvVdz0XDGgNfRqc7zg6rMt2P1P05xBmgfIfztYy94Vciw1QMdboNiT7einr8ra8wogdEaK4Pe2AzYAPBJQ==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@sentry/core': 7.53.1
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@sentry/browser/7.53.1:
|
||||
resolution: {integrity: sha512-1zas2R6riJaj0k7FoeieCW0SuC7UyKaBGA6jEG2LsgIqyD7IDOlF3BPZ4Yt08GFav0ImpyhGn5Vbrq5JLbeQdw==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@sentry-internal/tracing': 7.53.1
|
||||
'@sentry/core': 7.53.1
|
||||
'@sentry/replay': 7.53.1
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@sentry/cli/2.2.0:
|
||||
resolution: {integrity: sha512-ywFtB8VHyWN248LuM67fsRtdMLif/SOHYY3zyef5WybvnAmRLDmGTWK//hSUCebsHBpehRIkmt4iMiyUXwgd5w==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
https-proxy-agent: 5.0.1
|
||||
node-fetch: 2.6.11
|
||||
npmlog: 6.0.2
|
||||
progress: 2.0.3
|
||||
proxy-from-env: 1.1.0
|
||||
which: 2.0.2
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@sentry/core/7.53.1:
|
||||
resolution: {integrity: sha512-DAH8IJNORJJ7kQLqsZuhMkN6cwJjXzFuuUoZor7IIDHIHjtl51W+2F3Stg3+I3ZoKDfJfUNKqhipk2WZjG0FBg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@sentry/node/7.53.1:
|
||||
resolution: {integrity: sha512-B4ax8sRd54xj4ad+4eY2EOKNt0Mh1NjuLW1zUKS8HW3h0bmuaDFzGuhEVvEY5H4SaV6tZKj1c0dvnMnyUbYkhA==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@sentry-internal/tracing': 7.53.1
|
||||
'@sentry/core': 7.53.1
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
cookie: 0.4.2
|
||||
https-proxy-agent: 5.0.1
|
||||
lru_map: 0.3.3
|
||||
tslib: 1.14.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@sentry/react/7.53.1_react@18.2.0:
|
||||
resolution: {integrity: sha512-eEOY/peBepSD/nhPn4SU77aYdjQfAI1svOqpG4sbpjaGZU1P6L7+IIGmip8l2T68oPEeKDaiH9Qy/3uxu55B/Q==}
|
||||
engines: {node: '>=8'}
|
||||
peerDependencies:
|
||||
react: 15.x || 16.x || 17.x || 18.x
|
||||
dependencies:
|
||||
'@sentry/browser': 7.53.1
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 18.2.0
|
||||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@sentry/remix/7.53.1_535ee7qxxe65mhmlpnplklpcuu:
|
||||
resolution: {integrity: sha512-XnNjnKWoilp13Az+4Bt/l/wRSjnVUPsVcDwxbaAXefSKW0xaIJGXA4Os7MOKTNz5LVbqbkTz7zmMA9NqZ4iHKg==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@remix-run/node': 1.x
|
||||
'@remix-run/react': 1.x
|
||||
react: 16.x || 17.x || 18.x
|
||||
dependencies:
|
||||
'@remix-run/node': 1.16.1
|
||||
'@remix-run/react': 1.16.1_biqbaboplfbrettd7655fr4n2y
|
||||
'@sentry/cli': 2.2.0
|
||||
'@sentry/core': 7.53.1
|
||||
'@sentry/node': 7.53.1
|
||||
'@sentry/react': 7.53.1_react@18.2.0
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
react: 18.2.0
|
||||
tslib: 1.14.1
|
||||
yargs: 17.6.2
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@sentry/replay/7.53.1:
|
||||
resolution: {integrity: sha512-5He5JLJiYLeWtXHC53z2ZzfbgAedafbHNZVS4+MBCOtydCk7cnuyJ0gGV6Rfxej/lZSNXZxOdW7HeMhzBtZCxw==}
|
||||
engines: {node: '>=12'}
|
||||
dependencies:
|
||||
'@sentry/core': 7.53.1
|
||||
'@sentry/types': 7.53.1
|
||||
'@sentry/utils': 7.53.1
|
||||
dev: false
|
||||
|
||||
/@sentry/types/7.53.1:
|
||||
resolution: {integrity: sha512-/ijchRIu+jz3+j/zY+7KRPfLSCY14fTx5xujjbOdmEKjmIHQmwPBdszcQm40uwofrR8taV4hbt5MFN+WnjCkCw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/@sentry/utils/7.53.1:
|
||||
resolution: {integrity: sha512-DKJA1LSUOEv4KOR828MzVuLh+drjeAgzyKgN063OEKmnirgjgRgNNS8wUgwpG0Tn2k6ANZGCwrdfzPeSBxshKg==}
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
'@sentry/types': 7.53.1
|
||||
tslib: 1.14.1
|
||||
dev: false
|
||||
|
||||
/@sideway/address/4.1.4:
|
||||
resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==}
|
||||
dependencies:
|
||||
@@ -11900,6 +11773,7 @@ packages:
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/aggregate-error/3.1.0:
|
||||
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
|
||||
@@ -12063,6 +11937,7 @@ packages:
|
||||
|
||||
/aproba/2.0.0:
|
||||
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
|
||||
dev: true
|
||||
|
||||
/arch/2.2.0:
|
||||
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
|
||||
@@ -12076,14 +11951,6 @@ packages:
|
||||
readable-stream: 3.6.0
|
||||
dev: true
|
||||
|
||||
/are-we-there-yet/3.0.1:
|
||||
resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
dependencies:
|
||||
delegates: 1.0.0
|
||||
readable-stream: 3.6.0
|
||||
dev: false
|
||||
|
||||
/arg/4.1.3:
|
||||
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
|
||||
|
||||
@@ -13467,6 +13334,7 @@ packages:
|
||||
/color-support/1.1.3:
|
||||
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/colorette/2.0.19:
|
||||
resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
|
||||
@@ -13581,6 +13449,7 @@ packages:
|
||||
|
||||
/console-control-strings/1.1.0:
|
||||
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
|
||||
dev: true
|
||||
|
||||
/content-disposition/0.5.4:
|
||||
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
|
||||
@@ -14191,6 +14060,7 @@ packages:
|
||||
|
||||
/delegates/1.0.0:
|
||||
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
|
||||
dev: true
|
||||
|
||||
/denque/2.1.0:
|
||||
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
|
||||
@@ -16504,20 +16374,6 @@ packages:
|
||||
wide-align: 1.1.5
|
||||
dev: true
|
||||
|
||||
/gauge/4.0.4:
|
||||
resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
dependencies:
|
||||
aproba: 2.0.0
|
||||
color-support: 1.1.3
|
||||
console-control-strings: 1.1.0
|
||||
has-unicode: 2.0.1
|
||||
signal-exit: 3.0.7
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
wide-align: 1.1.5
|
||||
dev: false
|
||||
|
||||
/generic-names/4.0.0:
|
||||
resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
|
||||
dependencies:
|
||||
@@ -17013,6 +16869,7 @@ packages:
|
||||
|
||||
/has-unicode/2.0.1:
|
||||
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
|
||||
dev: true
|
||||
|
||||
/has-value/0.3.1:
|
||||
resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
|
||||
@@ -17086,12 +16943,6 @@ packages:
|
||||
resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==}
|
||||
dev: true
|
||||
|
||||
/hoist-non-react-statics/3.3.2:
|
||||
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
|
||||
dependencies:
|
||||
react-is: 16.13.1
|
||||
dev: false
|
||||
|
||||
/hosted-git-info/2.8.9:
|
||||
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
|
||||
|
||||
@@ -17244,6 +17095,7 @@ packages:
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/human-id/1.0.2:
|
||||
resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
|
||||
@@ -18718,10 +18570,6 @@ packages:
|
||||
engines: {node: '>=12'}
|
||||
dev: true
|
||||
|
||||
/lru_map/0.3.3:
|
||||
resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==}
|
||||
dev: false
|
||||
|
||||
/lucide-react/0.229.0_react@18.2.0:
|
||||
resolution: {integrity: sha512-b0/KSFXhPi++vUbnYEDUgP8Z8Rw9MQpRfBr+dRZNPMT3FD1HrVgMHXhSpkm9ZrrEtuqIfHf/O+tAGmw4WOmIog==}
|
||||
peerDependencies:
|
||||
@@ -19935,16 +19783,6 @@ packages:
|
||||
set-blocking: 2.0.0
|
||||
dev: true
|
||||
|
||||
/npmlog/6.0.2:
|
||||
resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
|
||||
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
|
||||
dependencies:
|
||||
are-we-there-yet: 3.0.1
|
||||
console-control-strings: 1.1.0
|
||||
gauge: 4.0.4
|
||||
set-blocking: 2.0.0
|
||||
dev: false
|
||||
|
||||
/nth-check/2.1.1:
|
||||
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
|
||||
dependencies:
|
||||
@@ -21231,6 +21069,7 @@ packages:
|
||||
/progress/2.0.3:
|
||||
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
dev: true
|
||||
|
||||
/promise-inflight/1.0.1:
|
||||
resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
|
||||
@@ -25186,6 +25025,7 @@ packages:
|
||||
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
dev: true
|
||||
|
||||
/widest-line/3.1.0:
|
||||
resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
|
||||
|
||||
@@ -85,9 +85,6 @@
|
||||
"clean": {
|
||||
"cache": false
|
||||
},
|
||||
"sentry-upload": {
|
||||
"cache": false
|
||||
},
|
||||
"clean:sourcemaps": {
|
||||
"cache": false
|
||||
},
|
||||
@@ -110,7 +107,6 @@
|
||||
"MAGIC_LINK_SECRET",
|
||||
"AUTH_GITHUB_CLIENT_ID",
|
||||
"AUTH_GITHUB_CLIENT_SECRET",
|
||||
"SENTRY_DSN",
|
||||
"FROM_EMAIL",
|
||||
"REPLY_TO_EMAIL",
|
||||
"RESEND_API_KEY",
|
||||
|
||||
Reference in New Issue
Block a user