Skip to content

Commit

Permalink
Headless: Rewrite tests
Browse files Browse the repository at this point in the history
  • Loading branch information
fuma-nama committed Dec 27, 2023
1 parent ca674df commit 0d31f4e
Show file tree
Hide file tree
Showing 10 changed files with 322 additions and 264 deletions.
2 changes: 1 addition & 1 deletion apps/docs/app/docs/layout.client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export function SidebarBanner(): JSX.Element {

return (
<div className="-mt-2 flex flex-row items-center gap-2 rounded-lg p-2 text-card-foreground transition-colors hover:bg-muted/80">
<Icon className="h-9 w-9 shrink-0 rounded-md border border-primary/50 bg-gradient-to-b from-primary/50 p-1.5 text-primary" />
<Icon className="h-9 w-9 shrink-0 rounded-md bg-primary/30 bg-gradient-to-t from-background/80 p-1.5 text-primary shadow-md shadow-primary/50" />
<div>
<p className="font-medium">{currentMode.name}</p>
<p className="text-xs text-muted-foreground">
Expand Down
4 changes: 2 additions & 2 deletions apps/docs/app/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
}

.ui {
--primary: 210 80% 30%;
--primary: 220 80% 30%;
}

.dark .ui {
--primary: 210 100% 80%;
--primary: 220 100% 80%;
}

.headless {
Expand Down
10 changes: 6 additions & 4 deletions packages/headless/src/source/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ function createGetUrl(
baseUrl: string,
): (slugs: string[], locale?: string) => string {
return (slugs, locale) => {
const paths = [baseUrl, ...slugs];
if (locale) paths.push(locale);
let paths = [baseUrl, ...slugs];
if (locale) paths = [baseUrl, locale, ...slugs];

return joinPaths(paths, 'leading');
};
Expand All @@ -134,8 +134,10 @@ function createOutput({
rootDir = '',
transformers,
baseUrl = '/',
slugs = (info) =>
info.flattenedPath.split('/').filter((s) => !['index'].includes(s)),
slugs = (info) => {
const result = [...info.dirname.split('/'), info.name].filter(Boolean);
return result[result.length - 1] === 'index' ? result.slice(0, -1) : result;
},
url = createGetUrl(baseUrl),
}: LoaderOptions): LoaderOutput<LoaderConfig> {
const result = load({
Expand Down
4 changes: 2 additions & 2 deletions packages/headless/src/source/file-graph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ export function makeGraph(): Storage {
const folders = new Map<string, Folder>();
const root: Folder = {
type: 'folder',
file: parseFolderPath('.'),
file: parseFolderPath(''),
children: [],
};

folders.set('.', root);
folders.set('', root);

return {
root() {
Expand Down
11 changes: 7 additions & 4 deletions packages/headless/src/source/page-tree-builder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { ReactElement } from 'react';
import type * as PageTree from '../server/page-tree';
import type * as FileGraph from './file-graph';
import { joinPaths } from './path';

interface PageTreeBuilderContext {
storage: FileGraph.Storage;
Expand Down Expand Up @@ -64,10 +65,12 @@ function getFolderMeta(
folder: FileGraph.Folder,
ctx: PageTreeBuilderContext,
): FileGraph.Meta | undefined {
let meta = ctx.storage.read(`${folder.file.path}/meta`);
let meta = ctx.storage.read(joinPaths([folder.file.path, 'meta']));

if (ctx.lang) {
meta = ctx.storage.read(`${folder.file.path}/meta.${ctx.lang}`) ?? meta;
meta =
ctx.storage.read(joinPaths([folder.file.path, `meta.${ctx.lang}`])) ??
meta;
}

if (meta?.type === 'meta') return meta;
Expand Down Expand Up @@ -114,8 +117,8 @@ function buildFolderNode(
const extractName = extractResult?.groups?.name ?? item;

const itemNode =
ctx.storage.readDir(`${folder.file.path}/${extractName}`) ??
ctx.storage.read(`${folder.file.path}/${extractName}`);
ctx.storage.readDir(joinPaths([folder.file.path, extractName])) ??
ctx.storage.read(joinPaths([folder.file.path, extractName]));

if (!itemNode) return [];

Expand Down
19 changes: 10 additions & 9 deletions packages/headless/src/source/path.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { basename, dirname, parse } from 'node:path';
import { parse } from 'node:path';
import type { FileInfo } from './types';

export function parseFilePath(path: string, root = ''): FileInfo {
const relativePath = getRelativePath(path, root);
const parsed = parse(relativePath);
const dir = parsed.dir.replace('\\', '/');
const flattenedPath = joinPaths([dir, parsed.name]);
const locale = parsed.name.split('.')[1];
const [name, locale] = parsed.name.split('.');

return {
dirname: dir,
name: parsed.name,
name,
flattenedPath,
locale,
path: relativePath,
Expand All @@ -26,16 +26,17 @@ function getRelativePath(path: string, root: string): string {
return splitPath(path.substring(root.length)).join('/');
}

export function parseFolderPath(p: string): FileInfo {
const name = basename(p);
const dir = dirname(p).replace('\\', '/');
export function parseFolderPath(path: string): FileInfo {
const parsed = parse(path);
const dir = parsed.dir.replace('\\', '/');
const [name, locale] = parsed.base.split('.');

return {
dirname: dir,
name,
flattenedPath: p,
locale: name.split('.')[1],
path: p,
flattenedPath: path,
locale,
path,
};
}

Expand Down
2 changes: 1 addition & 1 deletion packages/headless/src/source/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export interface FileInfo {
flattenedPath: string;

/**
* File name without extension
* File name without locale and extension
*/
name: string;

Expand Down
Loading

0 comments on commit 0d31f4e

Please sign in to comment.