Skip to content

Commit 249ff87

Browse files
committed
feat: allow local development against live server
1 parent def9729 commit 249ff87

File tree

8 files changed

+63
-21
lines changed

8 files changed

+63
-21
lines changed

app/pages/[owner]/[repo]/index.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
import hexRgb from 'hex-rgb'
33
import rgbToHSL from 'rgb-to-hsl'
44
5-
const { data: allowedRepos } = useFetch('/api/repos')
5+
const { data: allowedRepos } = useFetch('/api/repos', {
6+
baseURL: useRuntimeConfig().public.remote,
7+
default: () => [],
8+
})
69
710
const route = useRoute('owner-repo')
811
const selectedRepo = computed(() => route.params.owner && route.params.repo ? `${route.params.owner}/${route.params.repo}` : 'nuxt/nuxt')
912
1013
const { data: clusters, refresh, status } = useFetch(() => `/api/clusters/${selectedRepo.value}`, {
14+
baseURL: useRuntimeConfig().public.remote,
1115
default: () => [],
1216
})
1317

app/pages/index.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<script setup lang="ts">
2-
const { data: allowedRepos, refresh } = useFetch('/api/repos', { default: () => [] })
2+
const { data: allowedRepos, refresh } = useFetch('/api/repos', {
3+
baseURL: useRuntimeConfig().public.remote,
4+
default: () => [],
5+
})
36
47
const isCallback = ref(!!useRoute().query.installation_id)
58
const numRepos = allowedRepos.value?.length

modules/local.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { defineNuxtModule, updateRuntimeConfig } from 'nuxt/kit'
2+
import consola from 'consola'
3+
4+
export default defineNuxtModule({
5+
meta: {
6+
name: 'local-dev',
7+
},
8+
setup(_options, nuxt) {
9+
if (!nuxt.options.dev) {
10+
return
11+
}
12+
13+
if (process.argv.includes('--ui-only')) {
14+
consola.info('Enabling UI-only mode for local development')
15+
updateRuntimeConfig({
16+
public: {
17+
remote: 'https://unsight.dev',
18+
},
19+
})
20+
}
21+
},
22+
})

nuxt.config.ts

+3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ export default defineNuxtConfig({
2020
},
2121
},
2222
runtimeConfig: {
23+
public: {
24+
remote: '/',
25+
},
2326
github: {
2427
appId: '',
2528
privateKey: '',

server/api/clusters/[owner]/[repo].get.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
import { defineCachedCorsEventHandler } from '~~/server/utils/cached-cors'
12
import { clusterEmbeddings } from '~~/server/utils/cluster'
23
import { getStoredEmbeddingsForRepo, type IssueMetadata } from '~~/server/utils/embeddings'
34

4-
export default defineCachedEventHandler(async (event) => {
5+
export default defineCachedCorsEventHandler(async (event) => {
56
const { owner, repo } = getRouterParams(event)
67
if (!owner || !repo) {
78
throw createError({

server/api/repos.get.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export default defineCachedEventHandler(async () => {
1+
import { defineCachedCorsEventHandler } from '~~/server/utils/cached-cors'
2+
3+
export default defineCachedCorsEventHandler(async () => {
24
const kv = hubKV()
35
const keys = await kv.getKeys('repo')
46
return keys.flatMap((key) => {

server/api/similarity/[owner]/[repo]/[number].get.ts

+2-17
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,7 @@
1+
import { defineCachedCorsEventHandler } from '~~/server/utils/cached-cors'
12
import { getStoredMetadataForIssue, storageKeyForIssue, type IssueMetadata } from '~~/server/utils/embeddings'
23

3-
export default defineEventHandler(async (event) => {
4-
const handled = handleCors(event, {
5-
methods: ['GET', 'OPTIONS', 'HEAD'],
6-
preflight: {
7-
statusCode: 204,
8-
},
9-
origin: [import.meta.dev ? 'http://localhost:3000' : 'https://unsight.dev', 'https://github.com'],
10-
})
11-
12-
if (handled || event.method !== 'GET') {
13-
return
14-
}
15-
16-
return issueHandler(event)
17-
})
18-
19-
const issueHandler = defineCachedEventHandler(async (event) => {
4+
export default defineCachedCorsEventHandler(async (event) => {
205
const { owner, repo, number } = getRouterParams(event)
216

227
if (!owner || !repo || !number) {

server/utils/cached-cors.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { EventHandler } from 'h3'
2+
import type { CacheOptions } from 'nitropack/types'
3+
4+
export function defineCachedCorsEventHandler(eventHandler: EventHandler, cacheOptions?: CacheOptions) {
5+
const handler = defineCachedEventHandler(eventHandler, cacheOptions)
6+
7+
return defineEventHandler(async (event) => {
8+
const handled = handleCors(event, {
9+
methods: ['GET', 'OPTIONS', 'HEAD'],
10+
preflight: {
11+
statusCode: 204,
12+
},
13+
origin: [import.meta.dev ? 'http://localhost:3000' : 'https://unsight.dev', 'https://github.com'],
14+
})
15+
16+
if (handled || event.method !== 'GET') {
17+
return
18+
}
19+
20+
return handler(event)
21+
})
22+
}

0 commit comments

Comments
 (0)