Skip to content

Commit

Permalink
🐛 Chore: Fix Type casting errors (#142)
Browse files Browse the repository at this point in the history
* Create draft PR for #139
[skip ci]

* fix type issues

* checked, all types are solved.  removed extra comment that is no longer needed

* update as per @jdtjenkins

* Update packages/studioCMS/src/utils/contentHelper.ts

Co-authored-by: Paul Valladares <85648028+dreyfus92@users.noreply.github.com>

---------

Co-authored-by: Adam Matthiesen <30383579+Adammatthiesen@users.noreply.github.com>
Co-authored-by: Jacob Jenkins <7649031+jdtjenkins@users.noreply.github.com>
Co-authored-by: Paul Valladares <85648028+dreyfus92@users.noreply.github.com>
  • Loading branch information
4 people authored Jul 7, 2024
1 parent 3186f28 commit 9569ec5
Show file tree
Hide file tree
Showing 20 changed files with 195 additions and 127 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@ export default defineIntegration({
entrypoint: resolve('./routes/dashboard/pages/edit/page-list.astro')
}, {
enabled: options.dashboardConfig.dashboardEnabled && !options.dbStartPage,
pattern: 'edit/pages/[...slug]',
entrypoint: resolve('./routes/dashboard/pages/edit/pages/[...slug].astro')
pattern: 'edit/pages/[...id]',
entrypoint: resolve('./routes/dashboard/pages/edit/pages/[...id].astro')
}, {
enabled: options.dashboardConfig.dashboardEnabled && !options.dbStartPage,
pattern: 'delete/pages/[...slug]',
entrypoint: resolve('./routes/dashboard/pages/delete/pages/[...slug].astro')
pattern: 'delete/pages/[...id]',
entrypoint: resolve('./routes/dashboard/pages/delete/pages/[...id].astro')
}, {
enabled: options.dashboardConfig.dashboardEnabled &&
!options.dbStartPage &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ export const onRequest = defineMiddleware(async (context, next) => {
return next();
}

// Upstream bug? `session.fresh` always seems to be `false`
const isSessionFresh = session.expiresAt.getTime() > new Date().getTime();
session.fresh = isSessionFresh;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,18 @@ export async function POST(context: APIContext): Promise<Response> {
const newUser = await db.select().from(User).where(eq(User.username, username)).get();
const hashedPassword = await scryptAsync(password, serverToken, ScryptOpts)
const hashedPasswordString = Buffer.from(hashedPassword.buffer).toString();

if (!newUser) {
return new Response(
JSON.stringify({
error: "User Error"
}),
{
status: 400
}
);
}

await db
.update(User)
.set({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @ts-expect-error - Some types can only be imported from the Astro runtime
import { User, db, eq } from 'astro:db';
import { Auth0, OAuth2RequestError, type Auth0Tokens } from 'arctic';
import type { APIContext } from 'astro';
Expand Down Expand Up @@ -44,9 +43,6 @@ const clientDomain = `https://${NoHTTPDOMAIN}`;
const state = url.searchParams.get('state');
const storedState = cookies.get('auth0_oauth_state')?.value ?? null;
if (!code || !state || !storedState || state !== storedState) {
// return new Response(null, {
// status: 403,
// });
return redirect(loginURL);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @ts-expect-error - Some types can only be imported from the Astro runtime
import { User, db, eq } from 'astro:db';
import { Discord, OAuth2RequestError, type DiscordTokens } from 'arctic';
import type { APIContext } from 'astro';
Expand Down Expand Up @@ -36,9 +35,6 @@ export async function GET(context: APIContext): Promise<Response> {
const state = url.searchParams.get('state');
const storedState = cookies.get('discord_oauth_state')?.value ?? null;
if (!code || !state || !storedState || state !== storedState) {
// return new Response(null, {
// status: 403,
// });
return redirect(loginURL);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @ts-expect-error - Some types can only be imported from the Astro runtime
import { User, db, eq } from 'astro:db';
import { GitHub, OAuth2RequestError } from 'arctic';
import type { APIContext } from 'astro';
Expand Down Expand Up @@ -34,9 +33,6 @@ export async function GET(context: APIContext): Promise<Response> {
const state = url.searchParams.get('state');
const storedState = cookies.get('github_oauth_state')?.value ?? null;
if (!code || !state || !storedState || state !== storedState) {
// return new Response(null, {
// status: 403,
// });
return redirect(loginURL);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// @ts-expect-error - Some types can only be imported from the Astro runtime
import { User, db, eq } from 'astro:db';
import { Google, OAuth2RequestError } from 'arctic';
import type { APIContext } from 'astro';
Expand Down Expand Up @@ -35,9 +34,6 @@ export async function GET(context: APIContext): Promise<Response> {
const storedCodeVerifier = cookies.get("google_oauth_code_verifier")?.value ?? null;
const storedState = cookies.get('google_oauth_state')?.value ?? null;
if (!code || !storedState || !storedCodeVerifier || state !== storedState) {
// return new Response(null, {
// status: 403,
// });
return redirect(loginURL);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
---
import { Input, Icon, Select, Tooltip, Textarea, Button, Divider, Card, Option } from "astrolace:components";
import type { pageDataReponse } from "studiocms:components";
import { pluginList, type PageDataAndContent } from "studiocms:helpers";
import type { ContentHelperTempResponse } from "studiocms-dashboard:contentHelper";
import { pluginList } from "studiocms:helpers";
interface Props {
pageData?: pageDataReponse;
pageContent?: PageDataAndContent["PageContent"];
pageData?: ContentHelperTempResponse;
livePreviewBox: string;
isEditPage?: boolean;
}
const studioCMSPluginList = pluginList;
const { pageContent, pageData, livePreviewBox, isEditPage=false } = Astro.props;
const { pageData, livePreviewBox, isEditPage=false } = Astro.props;
---

<div class="container">
Expand Down Expand Up @@ -108,15 +107,15 @@ const { pageContent, pageData, livePreviewBox, isEditPage=false } = Astro.props;
resize="auto"
id="content"
name="content"
value={pageContent && pageContent.content || ""}
value={pageData && pageData.content || ""}
size="large"
rows={10}
placeholder="Your pages's content in markdown* format."
hx-get={livePreviewBox}
hx-trigger="keyup changed delay:500ms"
hx-target="#html-preview">
<div slot="label" class="inline flex">Content</div>
{pageContent && pageContent.content}
{pageData && pageData.content}
</Textarea>

<sl-divider></sl-divider>
Expand All @@ -141,7 +140,7 @@ const { pageContent, pageData, livePreviewBox, isEditPage=false } = Astro.props;
name="preload-content"
hx-get={livePreviewBox}
hx-trigger="load delay:100ms"
hx-target="#html-preview">{pageContent && pageContent.content}
hx-target="#html-preview">{pageData && pageData.content}
</textarea>
)}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
---
import { Permissions, SiteConfig, db, eq } from 'astro:db';
import { Permissions, db } from 'astro:db';
import { Layout } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, toPascalCase, type Locals, type PageDataAndContent } from 'studiocms:helpers';
import { StudioCMSRoutes } from 'studiocms-dashboard:routeMap'
import type { SiteConfigResponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../../constVars';
import { Alert, Breadcrumb, BreadcrumbItem, Button, Divider, Icon, Input, Radio, RadioGroup } from 'astrolace:components';
import { getSiteConfig, getPermissionsList } from 'studiocms-dashboard:contentHelper';
const { dashboardConfig: { developerConfig } } = Config;
Expand All @@ -22,8 +21,8 @@ const {
}
} = StudioCMSRoutes;
const adminList: PageDataAndContent["Permissions"][] = await db.select().from(Permissions);
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const adminList = await getPermissionsList();
const contextConfig = await getSiteConfig();
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// If the user is not logged in, redirect to the login page
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ import { Layout } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, type Locals } from 'studiocms:helpers';
import { StudioCMSRoutes } from 'studiocms-dashboard:routeMap'
import type { SiteConfigResponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../../constVars';
import { Alert, Breadcrumb, BreadcrumbItem, Button, Divider, Icon, Input } from 'astrolace:components';
import { getSiteConfig } from 'studiocms-dashboard:contentHelper';
const { dashboardConfig: { developerConfig } } = Config;
Expand All @@ -22,7 +21,7 @@ const {
}
} = StudioCMSRoutes;
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const contextConfig = await getSiteConfig();
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// If the user is not logged in, redirect to the login page
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
---
import { PageData, PageContent, SiteConfig, db, eq } from 'astro:db';
import { PageData, PageContent, db, eq } from 'astro:db';
import { Layout } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, type Locals } from 'studiocms:helpers';
import { StudioCMSRoutes, getDeleteRoute } from 'studiocms-dashboard:routeMap';
import type { SiteConfigResponse, pageDataReponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../../../constVars';
import { Alert, Breadcrumb, BreadcrumbItem, Button, Divider, Icon, Input } from 'astrolace:components';
import { getSiteConfig, getPageById } from 'studiocms-dashboard:contentHelper';
const { dashboardConfig: { developerConfig } } = Config;
Expand All @@ -21,16 +20,19 @@ const {
}
} = StudioCMSRoutes;
const { slug } = Astro.params;
const { id } = Astro.params;
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const page: pageDataReponse = await db.select().from(PageData).where(eq(PageData.slug, slug)).get();
if (!id) {
return Astro.redirect(dashboardIndex);
}
const contextConfig = await getSiteConfig();
const page = await getPageById(id);
if (!slug || !page) {
if (!page) {
return Astro.redirect(dashboardIndex);
}
const deleteURL = await getDeleteRoute(slug);
const deleteURL = await getDeleteRoute(id);
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// If the user is not logged in, redirect to the login page
Expand All @@ -47,7 +49,6 @@ if ( !developerConfig.testingAndDemoMode ) {
let showSuccessToast = false;
let showErrorToast = false;
// let showSlugErrorToast = false;
if (Astro.request.method === 'POST' && !developerConfig.testingAndDemoMode) {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
---
import { SiteConfig, db, eq, asc, PageData } from 'astro:db';
import { Layout, FormattedDate } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, pluginList, type Locals } from 'studiocms:helpers';
import { StudioCMSRoutes, getEditRoute, getDeleteRoute } from 'studiocms-dashboard:routeMap';
import type { SiteConfigResponse, pageDataReponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../../constVars';
import { Breadcrumb, BreadcrumbItem, Button } from 'astrolace:components';
import { getSiteConfig, getPageList } from 'studiocms-dashboard:contentHelper';
const { dashboardConfig: { developerConfig: { testingAndDemoMode } } } = Config;
Expand All @@ -21,8 +19,8 @@ const {
}
} = StudioCMSRoutes;
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const pages: pageDataReponse[] = await db.select().from(PageData).orderBy(asc(PageData.id));
const contextConfig = await getSiteConfig();
const pages = await getPageList();
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// If the user is not logged in, redirect to the login page
Expand Down Expand Up @@ -98,13 +96,13 @@ const pageTitle = `Existing Pages | ${contextConfig.title}`;
<FormattedDate date={page.publishedAt}/>
</td>
<td class="px-6 py-4">
<Button variant="success" href={await getEditRoute(page.slug)} size="small" pill outline>
<Button variant="success" href={await getEditRoute(page.id)} size="small" pill outline>
Edit
</Button>
</td>
<td class="px-6 py-4">
{ permissionLevel === 'admin' && (
<Button variant="danger" href={await getDeleteRoute(page.slug)} size="small" pill outline>
<Button variant="danger" href={await getDeleteRoute(page.id)} size="small" pill outline>
Delete
</Button> )
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
---
import { PageData, PageContent, SiteConfig, db, eq } from 'astro:db';
import { PageData, PageContent, db, eq } from 'astro:db';
import { Layout } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, type Locals, type PageDataAndContent } from 'studiocms:helpers';
import { authHelper, type Locals } from 'studiocms:helpers';
import { StudioCMSRoutes, getEditRoute } from 'studiocms-dashboard:routeMap';
import type { SiteConfigResponse, pageDataReponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../../../constVars';
import { Alert, Breadcrumb, BreadcrumbItem, Icon } from 'astrolace:components';
import PageEditAndCreateForm from '../../../components/PageEditAndCreateForm.astro';
import { getSiteConfig, getPageById } from 'studiocms-dashboard:contentHelper';
const { dashboardConfig: { developerConfig } } = Config;
Expand All @@ -23,17 +22,19 @@ const {
}
} = StudioCMSRoutes;
const { slug } = Astro.params;
const { id } = Astro.params;
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const pageData: pageDataReponse = await db.select().from(PageData).where(eq(PageData.slug, slug)).get();
const pageContent: PageDataAndContent["PageContent"] = await db.select().from(PageContent).where(eq(PageContent.contentId, pageData.id)).get();
if (!id) {
return Astro.redirect(dashboardIndex);
}
const contextConfig = await getSiteConfig();
const pageData = await getPageById(id);
if (!slug || !pageData.id) {
if (!pageData.id) {
return Astro.redirect(dashboardIndex);
}
const editRoute = await getEditRoute(slug);
const editRoute = await getEditRoute(id);
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// If the user is not logged in, redirect to the login page
Expand Down Expand Up @@ -69,7 +70,7 @@ if (Astro.request.method === 'POST' && !developerConfig.testingAndDemoMode) {
showOnNav: showOnNav === "on",
updatedAt: new Date(),
heroImage: heroImage as string,
}).where(eq(PageData.slug, slug)).then(async () => {
}).where(eq(PageData.id, id)).then(async () => {
await db.update(PageContent).set({
content: content as string
}).where(eq(PageContent.contentId, pageData.id));
Expand Down Expand Up @@ -123,8 +124,7 @@ const pageTitle = `Edit Page | ${contextConfig.title}`;
</div>

<PageEditAndCreateForm
pageData={pageData}
pageContent={pageContent}
pageData={pageData}
livePreviewBox={livePreviewBox}
isEditPage />
</Layout>
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
---
import { SiteConfig, db, eq } from 'astro:db';
import { Layout, WebVitalPanel } from 'studiocms-dashboard:components';
import Config from 'virtual:studiocms/config';
import { authHelper, type Locals } from 'studiocms:helpers';
import { StudioCMSRoutes } from 'studiocms-dashboard:routeMap';
import { studioCMSSocials } from "../layouts/studiocms-socials";
import type { SiteConfigResponse } from 'studiocms:components';
import { CMSSiteConfigId } from '../../../../../constVars';
import { getWebVitals } from 'studiocms-dashboard:web-vitals';
import { Breadcrumb, BreadcrumbItem, Divider, Card, Alert, Button, Icon, Details } from 'astrolace:components';
import { getSiteConfig } from 'studiocms-dashboard:contentHelper';
const {
mainLinks: {
Expand All @@ -22,7 +20,7 @@ const {
const { github, discord } = studioCMSSocials;
const { dashboardConfig: { developerConfig } } = Config;
const contextConfig: SiteConfigResponse = await db.select().from(SiteConfig).where(eq(SiteConfig.id, CMSSiteConfigId)).get();
const contextConfig = await getSiteConfig();
const { permissionLevel } = await authHelper(Astro.locals as Locals);
// Get the web vitals
Expand Down
Loading

0 comments on commit 9569ec5

Please # to comment.