diff --git a/examples/auth/keystone.ts b/examples/auth/keystone.ts index 4a45fea9470..fb1b868a49b 100644 --- a/examples/auth/keystone.ts +++ b/examples/auth/keystone.ts @@ -59,7 +59,6 @@ export default withAuth>( }, lists, ui: { - basePath: '/', // only admins can view the AdminUI isAccessAllowed: (context) => { return context.session?.data?.isAdmin ?? false diff --git a/packages/auth/src/pages/SigninPage.tsx b/packages/auth/src/pages/SigninPage.tsx index 2ed64af9308..6e794e1a9db 100644 --- a/packages/auth/src/pages/SigninPage.tsx +++ b/packages/auth/src/pages/SigninPage.tsx @@ -9,7 +9,7 @@ import { TextInput } from '@keystone-ui/fields' import { Notice } from '@keystone-ui/notice' import { useMutation, gql } from '@keystone-6/core/admin-ui/apollo' -import { useKeystone, useRawKeystone, useReinitContext } from '@keystone-6/core/admin-ui/context' +import { useRawKeystone, useReinitContext } from '@keystone-6/core/admin-ui/context' import { useRouter } from '@keystone-6/core/admin-ui/router' import { SigninContainer } from '../components/SigninContainer' diff --git a/packages/core/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx b/packages/core/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx index 40698e93ea6..4c351fdd9bf 100644 --- a/packages/core/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx +++ b/packages/core/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx @@ -109,7 +109,6 @@ export function HomePage () { const { adminMeta: { lists }, visibleLists, - adminPath, } = useKeystone() const query = useMemo( () => gql` diff --git a/packages/core/src/admin-ui/templates/index.ts b/packages/core/src/admin-ui/templates/index.ts index 1d4443b7b4b..35720c387ba 100644 --- a/packages/core/src/admin-ui/templates/index.ts +++ b/packages/core/src/admin-ui/templates/index.ts @@ -28,7 +28,7 @@ export const writeAdminFiles = ( graphQLSchema, { configFileExists }, config.graphql?.path || '/api/graphql', - config.ui?.basePath?.replace(/\/$/, '') || '' + config.ui?.basePath || '' ), overwrite: true, outputPath: `.admin/index.${ext}`, diff --git a/packages/core/src/lib/createAdminUIMiddleware.ts b/packages/core/src/lib/createAdminUIMiddleware.ts index 1b206a7c16c..728d198c139 100644 --- a/packages/core/src/lib/createAdminUIMiddleware.ts +++ b/packages/core/src/lib/createAdminUIMiddleware.ts @@ -22,10 +22,10 @@ export function createAdminUIMiddlewareWithNextApp ( isAccessAllowed, pageMiddleware, publicPages, + basePath, }, } = config - const basePath = config.ui?.basePath?.replace(/\/$/, '') || '' if (basePath.endsWith('/')) throw new TypeError('basePath must not end with a trailing slash') return async (req: express.Request, res: express.Response) => { diff --git a/packages/core/src/lib/createSystem.ts b/packages/core/src/lib/createSystem.ts index ba7b6e9bce7..789d92a3b03 100644 --- a/packages/core/src/lib/createSystem.ts +++ b/packages/core/src/lib/createSystem.ts @@ -52,6 +52,7 @@ export function getSystemPaths (cwd: string, config: KeystoneConfig | __Resolved const srcPath = path.join(cwd, 'src') const hasSrc = fs.existsSync(srcPath) + // remove leading `/` if present const basePath = config.ui?.basePath?.replace(/^\//, '') ?? '' const adminPath = path.join(cwd, hasSrc ? 'src' : '', `app/${basePath || '(admin)'}`) diff --git a/packages/core/src/lib/defaults.ts b/packages/core/src/lib/defaults.ts index 125e2d79073..7284b13d8bc 100644 --- a/packages/core/src/lib/defaults.ts +++ b/packages/core/src/lib/defaults.ts @@ -100,6 +100,7 @@ export function resolveDefaults (config: if (config?.server && 'options' in config.server && config.server.options) { Object.assign(httpOptions, config.server.options) } + return { types: { ...config.types, @@ -140,7 +141,7 @@ export function resolveDefaults (config: telemetry: config.telemetry ?? true, ui: { ...config.ui, - basePath: config.ui?.basePath?.replace(/\/$/, '') ?? '/admin', + basePath: config.ui?.basePath ?? '', isAccessAllowed: config.ui?.isAccessAllowed ?? defaultIsAccessAllowed, isDisabled: config.ui?.isDisabled ?? false, getAdditionalFiles: config.ui?.getAdditionalFiles ?? [], diff --git a/tests/api-tests/fields/types/relationship.test.ts b/tests/api-tests/fields/types/relationship.test.ts index f42a137b089..cad4393ad0c 100644 --- a/tests/api-tests/fields/types/relationship.test.ts +++ b/tests/api-tests/fields/types/relationship.test.ts @@ -24,7 +24,7 @@ function getSchema (field: { }, }), }, - }) + }) as any ).graphQLSchema } @@ -140,7 +140,7 @@ describe('Reference errors', () => { config({ db: { url: 'file:./thing.db', provider: 'sqlite' }, lists, - }) + }) as any ).graphQLSchema } diff --git a/tests/test-projects/basic/app/admin/.admin/index.tsx b/tests/test-projects/basic/app/admin/.admin/index.tsx deleted file mode 100644 index 6c89b3d6db8..00000000000 --- a/tests/test-projects/basic/app/admin/.admin/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -/* eslint-disable */ -import * as view0 from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view' -import * as view1 from '@keystone-6/core/fields/types/text/views' -import * as view2 from '@keystone-6/core/fields/types/select/views' -import * as view3 from '@keystone-6/core/fields/types/checkbox/views' -import * as view4 from '@keystone-6/core/fields/types/relationship/views' -import * as view5 from '@keystone-6/core/fields/types/timestamp/views' - -const adminConfig = {} - -export const config = { - lazyMetadataQuery: {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"keystone","loc":{"start":22,"end":30}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"adminMeta","loc":{"start":39,"end":48}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"routePrefix","loc":{"start":59,"end":70}},"arguments":[],"directives":[],"loc":{"start":59,"end":70}},{"kind":"Field","name":{"kind":"Name","value":"lists","loc":{"start":79,"end":84}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"key","loc":{"start":97,"end":100}},"arguments":[],"directives":[],"loc":{"start":97,"end":100}},{"kind":"Field","name":{"kind":"Name","value":"isHidden","loc":{"start":111,"end":119}},"arguments":[],"directives":[],"loc":{"start":111,"end":119}},{"kind":"Field","name":{"kind":"Name","value":"fields","loc":{"start":130,"end":136}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"path","loc":{"start":151,"end":155}},"arguments":[],"directives":[],"loc":{"start":151,"end":155}},{"kind":"Field","name":{"kind":"Name","value":"createView","loc":{"start":168,"end":178}},"arguments":[],"directives":[],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fieldMode","loc":{"start":195,"end":204}},"arguments":[],"directives":[],"loc":{"start":195,"end":204}}],"loc":{"start":179,"end":218}},"loc":{"start":168,"end":218}}],"loc":{"start":137,"end":230}},"loc":{"start":130,"end":230}}],"loc":{"start":85,"end":240}},"loc":{"start":79,"end":240}}],"loc":{"start":49,"end":248}},"loc":{"start":39,"end":248}}],"loc":{"start":31,"end":254}},"loc":{"start":22,"end":254}}]}}]}, - fieldViews: [view0,view1,view2,view3,view4,view5], - adminMetaHash: '1vq0nzc', - adminConfig, - apiPath: '/api/graphql', -}; diff --git a/tests/test-projects/basic/app/admin/[listKey]/[id]/page.tsx b/tests/test-projects/basic/app/admin/[listKey]/[id]/page.tsx deleted file mode 100644 index c5d7ea2be62..00000000000 --- a/tests/test-projects/basic/app/admin/[listKey]/[id]/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -'use client' -import { ItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage' - -export default ItemPage diff --git a/tests/test-projects/basic/app/admin/[listKey]/create/page.tsx b/tests/test-projects/basic/app/admin/[listKey]/create/page.tsx deleted file mode 100644 index d6042acaa96..00000000000 --- a/tests/test-projects/basic/app/admin/[listKey]/create/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -'use client' -import { CreateItemPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage' - -export default CreateItemPage diff --git a/tests/test-projects/basic/app/admin/[listKey]/page.tsx b/tests/test-projects/basic/app/admin/[listKey]/page.tsx deleted file mode 100644 index f6e75f8cfab..00000000000 --- a/tests/test-projects/basic/app/admin/[listKey]/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -'use client' -import { ListPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage' - -export default ListPage diff --git a/tests/test-projects/basic/app/admin/layout.tsx b/tests/test-projects/basic/app/admin/layout.tsx deleted file mode 100644 index abb5a0f3b2c..00000000000 --- a/tests/test-projects/basic/app/admin/layout.tsx +++ /dev/null @@ -1,16 +0,0 @@ -'use client' -import { Layout } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App' -import { config } from './.admin' - - -export default function AdminLayout ({ - children, -}: { - children: React.ReactNode -}) { - return ( - - {children} - - ) -} \ No newline at end of file diff --git a/tests/test-projects/basic/app/admin/no-access/page.tsx b/tests/test-projects/basic/app/admin/no-access/page.tsx deleted file mode 100644 index 14ef97ea3d5..00000000000 --- a/tests/test-projects/basic/app/admin/no-access/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import { getNoAccessPage } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage' - -export default getNoAccessPage({ sessionsEnabled: false }) diff --git a/tests/test-projects/basic/app/admin/page.tsx b/tests/test-projects/basic/app/admin/page.tsx deleted file mode 100644 index 5c268390b0f..00000000000 --- a/tests/test-projects/basic/app/admin/page.tsx +++ /dev/null @@ -1,2 +0,0 @@ -'use client' -export { HomePage as default } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage' diff --git a/tests/test-projects/basic/app/layout.tsx b/tests/test-projects/basic/app/layout.tsx deleted file mode 100644 index 38a4853e3a5..00000000000 --- a/tests/test-projects/basic/app/layout.tsx +++ /dev/null @@ -1,11 +0,0 @@ -export default function RootLayout ({ - children, -}: { - children: React.ReactNode -}) { - return ( - - {children} - - ) -} diff --git a/tests/test-projects/basic/keystone.ts b/tests/test-projects/basic/keystone.ts index f960d22f3c1..16cd740f624 100644 --- a/tests/test-projects/basic/keystone.ts +++ b/tests/test-projects/basic/keystone.ts @@ -10,9 +10,5 @@ export default config({ // WARNING: this is only needed for examples, dont do this ...fixPrismaPath, }, - ui: { - basePath: '/admin', - tsx: true, - }, lists, }) diff --git a/tests/test-projects/basic/next-env.d.ts b/tests/test-projects/basic/next-env.d.ts deleted file mode 100644 index 4f11a03dc6c..00000000000 --- a/tests/test-projects/basic/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/tests/test-projects/basic/tsconfig.json b/tests/test-projects/basic/tsconfig.json deleted file mode 100644 index ccb2ed95d83..00000000000 --- a/tests/test-projects/basic/tsconfig.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "compilerOptions": { - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "strict": false, - "noEmit": true, - "incremental": true, - "module": "esnext", - "esModuleInterop": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "plugins": [ - { - "name": "next" - } - ] - }, - "include": [ - "next-env.d.ts", - ".next/types/**/*.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -}