diff --git a/apps/web/app.config.ts b/apps/web/app.config.ts index 0d0b243b..1180e6eb 100644 --- a/apps/web/app.config.ts +++ b/apps/web/app.config.ts @@ -16,7 +16,11 @@ export default defineConfig({ // @ts-expect-error: SS's types are wrong. This is piped into Solid's Vite plugin so all options are not required. solid: { // We don't wanna apply Solid's JSX transform to the React emails. - exclude: ["src/emails/*", "src/components/OTPInput/react.tsx"], + exclude: [ + "src/emails/*", + "src/components/OTPInput/react.tsx", + "../../packages/email/**", + ], }, vite: ({ router }) => ({ envDir: monorepoRoot, @@ -27,7 +31,7 @@ export default defineConfig({ }, build: { // Safari mobile has problems with newer syntax - target: "es2015", + target: "es2020", }, plugins: [ devtools(), @@ -52,6 +56,9 @@ export default defineConfig({ rollupConfig: { external: ["cloudflare:sockets"], }, + esbuild: { + options: { target: "es2020" }, + }, }, }); diff --git a/apps/web/package.json b/apps/web/package.json index 191ca0ab..8cf61f0a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,6 +20,7 @@ "@lucia-auth/adapter-drizzle": "^1.0.7", "@mattrax/configuration-schemas": "workspace:*", "@mattrax/drizzle-to-rs": "workspace:*", + "@mattrax/email": "workspace:*", "@mattrax/ms-graph": "workspace:*", "@mattrax/mysql-planetscale": "workspace:*", "@mattrax/policy-composer": "workspace:*", @@ -28,9 +29,6 @@ "@microsoft/microsoft-graph-client": "^3.0.7", "@paralleldrive/cuid2": "^2.2.2", "@planetscale/database": "^1.16.0", - "@react-email/components": "0.0.16", - "@react-email/render": "^0.0.12", - "@react-email/tailwind": "^0.0.15", "@solid-mediakit/trpc": "^3.0.2", "@solid-primitives/context": "^0.2.3", "@solid-primitives/date": "^2.0.21", diff --git a/apps/web/src/api/emails.ts b/apps/web/src/api/emails.ts index 5e9b53b7..60661f8f 100644 --- a/apps/web/src/api/emails.ts +++ b/apps/web/src/api/emails.ts @@ -1,31 +1,15 @@ -import { z } from "zod"; +import { type RequestSchema } from "@mattrax/email"; +import { AwsClient } from "aws4fetch"; import { env } from "~/env"; -const REQUEST_SCHEMA = z - .object({ - to: z.string(), - subject: z.string(), - }) - .and( - z.union([ - z.object({ - type: z.literal("tenantAdminInvite"), - invitedByEmail: z.string(), - tenantName: z.string(), - inviteLink: z.string(), - }), - z.object({ - type: z.literal("loginCode"), - code: z.string(), - }), - z.object({ - type: z.literal("userEnrollmentInvite"), - tenantName: z.string(), - }), - ]), - ); - -export type RequestSchema = z.infer; +const aws = + env.AWS_ACCESS_KEY_ID && env.AWS_SECRET_ACCESS_KEY + ? new AwsClient({ + region: "us-east-1", + accessKeyId: env.AWS_ACCESS_KEY_ID, + secretAccessKey: env.AWS_SECRET_ACCESS_KEY, + }) + : undefined; export async function sendEmail(args: RequestSchema) { if (env.FROM_ADDRESS === "console") { @@ -33,6 +17,16 @@ export async function sendEmail(args: RequestSchema) { return; } + if (!aws) { + const msg = "AWS client not setup but 'FROM_ADDRESS' provided!"; + console.error(msg); + throw new Error(msg); + } + // We lazy load to keep React + React email outta the main bundle - await (await import("../emails/index").then((mod) => mod._sender))(args); + await (await import("@mattrax/email").then((mod) => mod._sender))( + args, + aws, + env.FROM_ADDRESS, + ); } diff --git a/apps/web/src/api/trpc/routers/policy.ts b/apps/web/src/api/trpc/routers/policy.ts index 85d680ea..13672b04 100644 --- a/apps/web/src/api/trpc/routers/policy.ts +++ b/apps/web/src/api/trpc/routers/policy.ts @@ -76,7 +76,7 @@ export const policyRouter = createTRPCRouter({ return { // The differences between the policies state and the last deployed version - diff: generatePolicyDiff(lastVersion?.data ?? {}, policy.data), + diff: generatePolicyDiff(lastVersion?.data ?? ({} as any), policy.data), ...omit(policy, ["tenantPk"]), }; }), @@ -244,8 +244,8 @@ export const policyRouter = createTRPCRouter({ .limit(1); if ( - generatePolicyDiff(lastVersion?.data ?? {}, ctx.policy.data).length === - 0 + generatePolicyDiff(lastVersion?.data ?? ({} as any), ctx.policy.data) + .length === 0 ) throw new Error("policy has not changed"); diff --git a/apps/web/src/app/(dash)/o.[orgSlug]/t.[tenantSlug]/apps/index.tsx b/apps/web/src/app/(dash)/o.[orgSlug]/t.[tenantSlug]/apps/index.tsx index 74053016..24288b34 100644 --- a/apps/web/src/app/(dash)/o.[orgSlug]/t.[tenantSlug]/apps/index.tsx +++ b/apps/web/src/app/(dash)/o.[orgSlug]/t.[tenantSlug]/apps/index.tsx @@ -177,14 +177,12 @@ function CreateApplicationSheet(props: ParentProps) { const [search, setSearch] = createSignal(""); - const query = createQuery( - queryOptions(() => ({ - ...APPLICATION_TARGETS[form.getFieldValue("targetType")].queryOptions( - search, - ), - enabled: open(), - })), - ); + const query = createQuery(() => ({ + ...APPLICATION_TARGETS[form.getFieldValue("targetType")].queryOptions( + search, + ), + enabled: open(), + })); createEffect(() => { const results = query.data?.results; diff --git a/apps/web/src/app/api/cli/policy/[policyId].ts b/apps/web/src/app/api/cli/policy/[policyId].ts index 1e7ceee3..c9225826 100644 --- a/apps/web/src/app/api/cli/policy/[policyId].ts +++ b/apps/web/src/app/api/cli/policy/[policyId].ts @@ -8,19 +8,19 @@ import { generatePolicyDiff } from "~/api/trpc/routers/policy"; export async function GET({ params }: APIEvent) { throw new Error("THE CLI IS NOT SUPPORTED YET"); - const policyId = params.policyId as string; + // const policyId = params.policyId as string; - // TODO: Auth and Authz + // // TODO: Auth and Authz - const [policy] = await db - .select({ - name: policies.name, - data: policies.data, - }) - .from(policies) - .where(eq(policies.id, policyId)); + // const [policy] = await db + // .select({ + // name: policies.name, + // data: policies.data, + // }) + // .from(policies) + // .where(eq(policies.id, policyId)); - return policy; + // return policy; } const schema = z.object({ @@ -35,67 +35,70 @@ const schema = z.object({ export async function POST({ request, params }: APIEvent) { throw new Error("THE CLI IS NOT SUPPORTED YET"); - const policyId = params.policyId as string; - const body = schema.safeParse(await request.json()); - - if (!body.success) - return new Response("Error parsing request!", { - status: 400, - }); - - const [policy] = await db - .select({ - pk: policies.pk, - tenantPk: policies.tenantPk, - data: policies.data, - }) - .from(policies) - .where(eq(policies.id, policyId)); - if (!policy) - return new Response("404: Policy not found", { - status: 404, - }); - - // TODO: Auth and Authz - const authorId = 2; - - const [lastVersion] = await db - .select({ data: policyDeploy.data }) - .from(policyDeploy) - .where(and(eq(policyDeploy.policyPk, policy.pk))) - .orderBy(desc(policyDeploy.doneAt)) - .limit(1); - - if (generatePolicyDiff(lastVersion?.data ?? {}, body.data.data).length === 0) - return Response.json(["unchanged", null]); - - const updatePolicy = () => - db - .update(policies) - .set({ - name: body.data.name, - data: body.data.data, - }) - .where(eq(policies.id, policyId)); - - if (body.data.comment) { - const comment = body.data.comment; - - const versionId = createId(); - await db.transaction(async (db) => { - await updatePolicy(); - await db.insert(policyDeploy).values({ - id: versionId, - policyPk: policy.pk, - data: body.data.data, - comment, - author: authorId, - }); - }); - - return Response.json(["deployed", versionId]); - } - - await updatePolicy(); - return Response.json(["updated", null]); + // const policyId = params.policyId as string; + // const body = schema.safeParse(await request.json()); + + // if (!body.success) + // return new Response("Error parsing request!", { + // status: 400, + // }); + + // const [policy] = await db + // .select({ + // pk: policies.pk, + // tenantPk: policies.tenantPk, + // data: policies.data, + // }) + // .from(policies) + // .where(eq(policies.id, policyId)); + // if (!policy) + // return new Response("404: Policy not found", { + // status: 404, + // }); + + // // TODO: Auth and Authz + // const authorId = 2; + + // const [lastVersion] = await db + // .select({ data: policyDeploy.data }) + // .from(policyDeploy) + // .where(and(eq(policyDeploy.policyPk, policy.pk))) + // .orderBy(desc(policyDeploy.doneAt)) + // .limit(1); + + // if ( + // generatePolicyDiff(lastVersion?.data ?? ({} as any), body.data.data) + // .length === 0 + // ) + // return Response.json(["unchanged", null]); + + // const updatePolicy = () => + // db + // .update(policies) + // .set({ + // name: body.data.name, + // data: body.data.data, + // }) + // .where(eq(policies.id, policyId)); + + // if (body.data.comment) { + // const comment = body.data.comment; + + // const versionId = createId(); + // await db.transaction(async (db) => { + // await updatePolicy(); + // await db.insert(policyDeploy).values({ + // id: versionId, + // policyPk: policy.pk, + // data: body.data.data, + // comment, + // author: authorId, + // }); + // }); + + // return Response.json(["deployed", versionId]); + // } + + // await updatePolicy(); + // return Response.json(["updated", null]); } diff --git a/apps/web/src/lib/featureFlags.ts b/apps/web/src/lib/featureFlags.ts index 1302be1d..305bcaaa 100644 --- a/apps/web/src/lib/featureFlags.ts +++ b/apps/web/src/lib/featureFlags.ts @@ -2,7 +2,7 @@ import { getObjectKeys } from "~/api/utils"; import { trpc } from "."; export const features = { - // visual_editor: "Policy Visual Editor", + visual_editor: "Policy Visual Editor", } as const; export type Features = keyof typeof features; diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 26f57bed..49366a8f 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -18,6 +18,7 @@ "exclude": ["node_modules", "dist"], "references": [ { "path": "../../packages/ui" }, + { "path": "../../packages/email" }, { "path": "../../packages/trpc-server-function" } ] } diff --git a/biome.fix.json b/biome.fix.json deleted file mode 100644 index e582c54b..00000000 --- a/biome.fix.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", - "extends": ["./biome.json"], - "linter": { - "rules": { - "correctness": { - "noUnusedImports": "error" - } - } - } -} diff --git a/packages/email/package.json b/packages/email/package.json new file mode 100644 index 00000000..fc472b98 --- /dev/null +++ b/packages/email/package.json @@ -0,0 +1,19 @@ +{ + "name": "@mattrax/email", + "type": "module", + "private": true, + "sideEffects": false, + "main": "./src/index.ts", + "types": "./src/index.ts", + "dependencies": { + "@react-email/components": "0.0.16", + "@react-email/render": "^0.0.12", + "@react-email/tailwind": "^0.0.15", + "aws4fetch": "^1.0.18", + "react": "^18.2.0", + "zod": "^3.22.5" + }, + "devDependencies": { + "@types/react": "^18.2.79" + } +} diff --git a/apps/web/src/emails/LoginCode.email.tsx b/packages/email/src/LoginCode.tsx similarity index 94% rename from apps/web/src/emails/LoginCode.email.tsx rename to packages/email/src/LoginCode.tsx index 76cb5d14..e43a45e2 100644 --- a/apps/web/src/emails/LoginCode.email.tsx +++ b/packages/email/src/LoginCode.tsx @@ -1,5 +1,4 @@ -// @ts-nocheck // TODO: Typescript -/** @jsx React.createElement */ +// @jsxImportSource react // biome-ignore lint: don't remove React import React from "react"; diff --git a/apps/web/src/emails/TenantAdminInvite.email.tsx b/packages/email/src/TenantAdminInvite.tsx similarity index 97% rename from apps/web/src/emails/TenantAdminInvite.email.tsx rename to packages/email/src/TenantAdminInvite.tsx index 8e5af40c..2e536c7e 100644 --- a/apps/web/src/emails/TenantAdminInvite.email.tsx +++ b/packages/email/src/TenantAdminInvite.tsx @@ -1,5 +1,4 @@ -// @ts-nocheck // TODO: Typescript -/** @jsx React.createElement */ +// @jsxImportSource react // biome-ignore lint: don't remove React import React from "react"; @@ -23,7 +22,7 @@ interface Props { inviteLink: string; } -export function TenantAdminInvite(props: Props) { +function TenantAdminInvite(props: Props) { const previewText = `Join ${props.tenantName} on Mattrax`; return ( diff --git a/apps/web/src/emails/UserEnrollmentInvite.email.tsx b/packages/email/src/UserEnrollmentInvite.tsx similarity index 90% rename from apps/web/src/emails/UserEnrollmentInvite.email.tsx rename to packages/email/src/UserEnrollmentInvite.tsx index a61f7044..ab5beecc 100644 --- a/apps/web/src/emails/UserEnrollmentInvite.email.tsx +++ b/packages/email/src/UserEnrollmentInvite.tsx @@ -1,5 +1,4 @@ -// @ts-nocheck // TODO: Typescript -/** @jsx React.createElement */ +// @jsxImportSource react // biome-ignore lint: don't remove React import React from "react"; @@ -18,7 +17,7 @@ interface Props { tenantName: string; } -export function UserEnrollmentInvite(props: Props) { +function UserEnrollmentInvite(props: Props) { const previewText = `Join ${props.tenantName} on Mattrax`; return ( diff --git a/apps/web/src/emails/index.ts b/packages/email/src/index.ts similarity index 55% rename from apps/web/src/emails/index.ts rename to packages/email/src/index.ts index ca128258..87d46933 100644 --- a/apps/web/src/emails/index.ts +++ b/packages/email/src/index.ts @@ -1,33 +1,42 @@ -import { AwsClient } from "aws4fetch"; +import { type AwsClient } from "aws4fetch"; import { render } from "@react-email/render"; -import { env } from "~/env"; -import { - LoginCodeEmail, - TenantAdminInviteEmail, - UserEnrollmentInviteEmail, -} from "../emails"; -import type { RequestSchema } from "~/api/emails"; +import { z } from "zod"; -const aws = - env.AWS_ACCESS_KEY_ID && env.AWS_SECRET_ACCESS_KEY - ? new AwsClient({ - region: "us-east-1", - accessKeyId: env.AWS_ACCESS_KEY_ID, - secretAccessKey: env.AWS_SECRET_ACCESS_KEY, - }) - : undefined; +import LoginCodeEmail from "./LoginCode"; +import TenantAdminInviteEmail from "./TenantAdminInvite"; +import UserEnrollmentInviteEmail from "./UserEnrollmentInvite"; -export { default as TenantAdminInviteEmail } from "./TenantAdminInvite.email"; -export { default as LoginCodeEmail } from "./LoginCode.email"; -export { default as UserEnrollmentInviteEmail } from "./UserEnrollmentInvite.email"; +const REQUEST_SCHEMA = z + .object({ + to: z.string(), + subject: z.string(), + }) + .and( + z.union([ + z.object({ + type: z.literal("tenantAdminInvite"), + invitedByEmail: z.string(), + tenantName: z.string(), + inviteLink: z.string(), + }), + z.object({ + type: z.literal("loginCode"), + code: z.string(), + }), + z.object({ + type: z.literal("userEnrollmentInvite"), + tenantName: z.string(), + }), + ]), + ); -export async function _sender(args: RequestSchema) { - if (!aws) { - const msg = "AWS client not setup but 'FROM_ADDRESS' provided!"; - console.error(msg); - throw new Error(msg); - } +export type RequestSchema = z.infer; +export async function _sender( + args: RequestSchema, + aws: AwsClient, + fromAddress: string, +) { let component: any; if (args.type === "tenantAdminInvite") { component = TenantAdminInviteEmail(args); @@ -46,7 +55,7 @@ export async function _sender(args: RequestSchema) { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - FromEmailAddress: env.FROM_ADDRESS, + FromEmailAddress: fromAddress, Destination: { ToAddresses: [args.to], }, diff --git a/packages/email/tsconfig.json b/packages/email/tsconfig.json new file mode 100644 index 00000000..555176a9 --- /dev/null +++ b/packages/email/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "outDir": "./dist", + "incremental": true, + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "jsx": "react-jsx", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "strictNullChecks": true, + "noUncheckedIndexedAccess": true, + "isolatedModules": true, + "composite": true, + "skipLibCheck": true + }, + "include": ["src/"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/mysql-planetscale/package.json b/packages/mysql-planetscale/package.json index 04bd362e..82b0f4f5 100644 --- a/packages/mysql-planetscale/package.json +++ b/packages/mysql-planetscale/package.json @@ -8,5 +8,8 @@ "dependencies": { "@planetscale/database": "^1.16.0", "mysql2": "^3.9.7" + }, + "devDependencies": { + "@types/node": "^20.12.7" } } diff --git a/packages/trpc-server-function/src/index.ts b/packages/trpc-server-function/src/index.ts index a332c388..aab0eee2 100644 --- a/packages/trpc-server-function/src/index.ts +++ b/packages/trpc-server-function/src/index.ts @@ -68,20 +68,22 @@ export async function trpcServerFunction({ type: opts.type, }); - const dependant = o?.context?.paths?.map(async (key) => { - const data = await callProcedure({ - procedures: router._def.procedures, - path: key[0], - rawInput: key[1], - ctx: { - ...ctx, - flushResponse: () => {}, // TODO: resolve, - }, - type: "query", - }); + const dependant = (o as any)?.context?.paths?.map( + async (key: any[]) => { + const data = await callProcedure({ + procedures: router._def.procedures, + path: key[0], + rawInput: key[1], + ctx: { + ...ctx, + flushResponse: () => {}, // TODO: resolve, + }, + type: "query", + }); - return [key, data]; - }); + return [key, data]; + }, + ); return { result: { data }, dependant }; } catch (cause: unknown) { @@ -168,8 +170,8 @@ export const createServerFunctionLink = ( .then((p) => p) .then((response) => { if (queryClient) - for (const promise of response?.dependant || []) { - promise.then(([key, result]) => + for (const promise of (response as any)?.dependant || []) { + promise.then(([key, result]: [any, any]) => queryClient.setQueryData(key, result), ); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 576c464e..0aa2dc80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -261,6 +261,9 @@ importers: '@mattrax/drizzle-to-rs': specifier: workspace:* version: link:../../packages/drizzle-to-rs + '@mattrax/email': + specifier: workspace:* + version: link:../../packages/email '@mattrax/ms-graph': specifier: workspace:* version: link:../../packages/ms-graph @@ -285,18 +288,9 @@ importers: '@planetscale/database': specifier: ^1.16.0 version: 1.16.0 - '@react-email/components': - specifier: 0.0.16 - version: 0.0.16(@types/react@18.2.79)(react@18.2.0) - '@react-email/render': - specifier: ^0.0.12 - version: 0.0.12 - '@react-email/tailwind': - specifier: ^0.0.15 - version: 0.0.15(patch_hash=bwbyj74l7btlaty4zlch4r7y4y)(react@18.2.0) '@solid-mediakit/trpc': specifier: ^3.0.2 - version: 3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2)) + version: 3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2)) '@solid-primitives/context': specifier: ^0.2.3 version: 0.2.3(solid-js@1.8.16) @@ -542,6 +536,31 @@ importers: specifier: ^3.0.5 version: 3.0.5 + packages/email: + dependencies: + '@react-email/components': + specifier: 0.0.16 + version: 0.0.16(@types/react@18.2.79)(react@18.2.0) + '@react-email/render': + specifier: ^0.0.12 + version: 0.0.12 + '@react-email/tailwind': + specifier: ^0.0.15 + version: 0.0.15(patch_hash=bwbyj74l7btlaty4zlch4r7y4y)(react@18.2.0) + aws4fetch: + specifier: ^1.0.18 + version: 1.0.18 + react: + specifier: ^18.2.0 + version: 18.2.0 + zod: + specifier: ^3.22.5 + version: 3.22.5 + devDependencies: + '@types/react': + specifier: ^18.2.79 + version: 18.2.79 + packages/ms-graph: dependencies: '@microsoft/microsoft-graph-client': @@ -563,6 +582,10 @@ importers: mysql2: specifier: ^3.9.7 version: 3.9.7 + devDependencies: + '@types/node': + specifier: ^20.12.7 + version: 20.12.7 packages/policy-composer: dependencies: @@ -583,7 +606,7 @@ importers: dependencies: '@solid-mediakit/trpc': specifier: ^3.0.2 - version: 3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2)) + version: 3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2)) '@solidjs/router': specifier: ^0.13.2 version: 0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16) @@ -9839,7 +9862,7 @@ snapshots: '@solid-primitives/utils': 6.2.3(solid-js@1.8.16) solid-js: 1.8.16 - '@solid-mediakit/trpc@3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))': + '@solid-mediakit/trpc@3.0.2(patch_hash=ryciblegz3ippw6jppam5tmf3q)(@solidjs/router@0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16))(@solidjs/start@0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)))(@tanstack/solid-query@5.35.1(solid-js@1.8.16))(@trpc/client@10.45.2(@trpc/server@10.45.2))(@trpc/server@10.45.2)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@planetscale/database@1.16.0)(pg@8.11.5))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))': dependencies: '@solidjs/router': 0.13.2(patch_hash=elelxothihlzsb57xki6usvf5m)(solid-js@1.8.16) '@solidjs/start': 0.7.7(rollup@4.14.3)(solid-js@1.8.16)(vinxi@0.3.10(@planetscale/database@1.16.0)(@types/node@20.12.7)(drizzle-orm@0.30.8(patch_hash=kbhw3lxqs5ui6og332q7mjjsdu)(@cloudflare/workers-types@4.20240419.0)(@planetscale/database@1.16.0)(@types/react@18.2.79)(mysql2@3.9.7)(pg@8.11.5)(postgres@3.4.4)(react@18.2.0))(ioredis@5.4.1)(terser@5.30.3)(xml2js@0.6.2))(vite@5.2.9(@types/node@20.12.7)(terser@5.30.3)) diff --git a/tsconfig.json b/tsconfig.json index baa37165..5cd7f94c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ { "path": "./apps/web" }, { "path": "./apps/landing" }, { "path": "./packages/drizzle-to-rs" }, - { "path": "./packages/configuration-schema" }, + { "path": "./packages/configuration-schemas" }, { "path": "./packages/drizzle-to-rs" }, { "path": "./packages/ms-graph" }, { "path": "./packages/mysql-planetscale" },