Skip to content

Commit

Permalink
fix: attempt type improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
rdunk committed Jan 17, 2024
1 parent 7c45949 commit 20d4ca9
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 14 deletions.
60 changes: 59 additions & 1 deletion index.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,65 @@
import { SanityHelper } from './src/runtime/composables'
import type { ClientPerspective, StegaConfig } from '@sanity/client/stega'
import type { SanityHelper } from '#sanity-helper'

declare module '#app' {
interface NuxtApp {
_sanity?: Record<string, SanityHelper>
}
}

declare module 'nuxt/schema' {
interface RuntimeConfig {
sanity: {
dataset?: string
apiVersion?: string
withCredentials?: boolean
additionalClients: Record<string,any>
visualEditing:
| {
draftMode:
| boolean
| {
enable?: string
disable?: string
}
mode: 'global' | 'component'
studioUrl: string
draftModeId: string
token: string
}
| null
| undefined
| void
}
}

interface PublicRuntimeConfig {
sanity: {
projectId: string
useCdn: boolean
dataset: string
apiVersion: string
withCredentials: boolean
token: string
perspective: ClientPerspective
additionalClients: Record<string, any>
stega: StegaConfig
visualEditing:
| {
draftMode:
| boolean
| {
enable?: string
disable?: string
}
mode: 'global' | 'component'
studioUrl: string
}
| null
| undefined
| void
}
}
}

export {}
27 changes: 18 additions & 9 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import { genExport } from 'knitwork'
import { name, version } from '../package.json'

import type { SanityConfiguration } from './runtime/client'
import type { StegaConfig } from '@sanity/client/stega'

export interface SanityModuleVisualEditingOptions {
/**
Expand Down Expand Up @@ -178,11 +179,11 @@ export default defineNuxtModule<SanityModuleOptions>({
nuxt.options.runtimeConfig.sanity = {
...(nuxt.options.runtimeConfig.sanity || {}),
visualEditing: options.visualEditing && {
...visualEditing,
...visualEditing!,
draftModeId: visualEditing!.draftMode
? crypto.randomBytes(16).toString('hex')
: '',
token: options.visualEditing?.token,
token: options.visualEditing.token || '',
},
}

Expand All @@ -192,15 +193,18 @@ export default defineNuxtModule<SanityModuleOptions>({
projectId: options.projectId,
dataset: options.dataset,
apiVersion: options.apiVersion,
withCredentials: options.withCredentials,
withCredentials: options.withCredentials || false,
token: options.token,
perspective: options.perspective || 'raw',
additionalClients: options.additionalClients,
stega: options.visualEditing?.stega && {
enabled: true,
studioUrl: options.visualEditing.studioUrl,
},
visualEditing,
stega:
(options.visualEditing?.stega === true &&
({
enabled: true,
studioUrl: options.visualEditing.studioUrl,
} as StegaConfig)) ||
{},
visualEditing: visualEditing || null,
}))

if (!projectId) {
Expand Down Expand Up @@ -251,7 +255,12 @@ export default defineNuxtModule<SanityModuleOptions>({

nuxt.hook('prepare:types', ({ tsConfig }) => {
tsConfig.compilerOptions ||= {}
tsConfig.compilerOptions.paths['#sanity-client'] = [join(runtimeDir, 'client')]
tsConfig.compilerOptions.paths['#sanity-client'] = [
join(runtimeDir, 'client'),
]
tsConfig.compilerOptions.paths['#sanity-helper'] = [
join(composablesDir, 'composables'),
]
})

nuxt.hook('nitro:config', (config) => {
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/nitro-imports.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { defu } from 'defu'

import type { SanityConfiguration } from './client'
import type { SanityHelper } from './composables'
import type { SanityHelper } from '#sanity-helper'

import { useRuntimeConfig } from '#imports'
import { createClient } from '#sanity-client'
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { SanityHelper } from './composables'
import type { SanityHelper } from '#sanity-helper'
import { defineNuxtPlugin, useSanity } from '#imports'

export default defineNuxtPlugin((nuxtApp) => {
Expand Down
1 change: 1 addition & 0 deletions src/runtime/visual-editing/composables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ const createQueryStore = (
const serverClient = client.withConfig({
perspective: 'previewDrafts',
token: visualEditing?.token,
useCdn: false,
})
queryStore.setServerClient(serverClient)
}
Expand Down
4 changes: 2 additions & 2 deletions src/runtime/visual-editing/draft/enable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default defineEventHandler(async event => {
const sanity = useSanity()

const client = (sanity.client as SanityStegaClient).withConfig({
token: $config.sanity.visualEditing.token,
token: $config.sanity.visualEditing!.token,
})

const { isValid, redirectTo = '/' } = await validatePreviewUrl(
Expand All @@ -21,7 +21,7 @@ export default defineEventHandler(async event => {
})
}

setCookie(event, '__sanity_draft', $config.sanity.visualEditing.draftModeId, {
setCookie(event, '__sanity_draft', $config.sanity.visualEditing!.draftModeId, {
httpOnly: true,
sameSite: process.env.NODE_ENV !== 'development' ? 'none' : 'lax',
secure: process.env.NODE_ENV !== 'development',
Expand Down

0 comments on commit 20d4ca9

Please sign in to comment.