add config
This commit is contained in:
parent
21634249d7
commit
05a95b72d0
8 changed files with 44 additions and 5 deletions
1
.env.development
Normal file
1
.env.development
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
VITE_APP_VERSION=1.0.0-alpha
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -18,9 +18,10 @@ Thumbs.db
|
||||||
.env.*
|
.env.*
|
||||||
!.env.example
|
!.env.example
|
||||||
!.env.test
|
!.env.test
|
||||||
|
!.env.development
|
||||||
|
|
||||||
# Vite
|
# Vite
|
||||||
vite.config.js.timestamp-*
|
vite.config.js.timestamp-*
|
||||||
vite.config.ts.timestamp-*
|
vite.config.ts.timestamp-*
|
||||||
|
|
||||||
*storybook.log
|
*storybook.log
|
||||||
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
|
|
@ -50,10 +50,12 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pothos/core": "^4.3.0",
|
"@pothos/core": "^4.3.0",
|
||||||
"@tailwindcss/typography": "^0.5.15",
|
"@tailwindcss/typography": "^0.5.15",
|
||||||
|
"@types/bun": "^1.1.14",
|
||||||
"graphql": "^16.9.0",
|
"graphql": "^16.9.0",
|
||||||
"graphql-yoga": "^5.10.4",
|
"graphql-yoga": "^5.10.4",
|
||||||
"pino": "^9.5.0",
|
"pino": "^9.5.0",
|
||||||
"pino-pretty": "^13.0.0",
|
"pino-pretty": "^13.0.0",
|
||||||
"storybook-dark-mode": "^4.0.2"
|
"storybook-dark-mode": "^4.0.2",
|
||||||
|
"zod": "^3.24.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
src/lib/config/index.ts
Normal file
24
src/lib/config/index.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
import { logger } from '$lib/logger';
|
||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
export interface Configuration {
|
||||||
|
app_version: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const LoadConfig = (): Configuration => {
|
||||||
|
const { success, data, error } = z
|
||||||
|
.object({
|
||||||
|
VITE_APP_VERSION: z.string().default('development')
|
||||||
|
})
|
||||||
|
.safeParse(import.meta.env);
|
||||||
|
|
||||||
|
if (!success) {
|
||||||
|
logger.error(error.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
app_version: data!.VITE_APP_VERSION
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Config = LoadConfig();
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
|
import { Context } from '$lib/yoga/context';
|
||||||
import SchemaBuilder from '@pothos/core';
|
import SchemaBuilder from '@pothos/core';
|
||||||
|
|
||||||
export const builder = new SchemaBuilder({});
|
type ContextType = ReturnType<typeof Context>;
|
||||||
|
|
||||||
|
export const builder = new SchemaBuilder<{ Context: ContextType }>({});
|
||||||
|
|
||||||
builder.queryType({
|
builder.queryType({
|
||||||
fields: (t) => ({
|
fields: (t) => ({
|
||||||
version: t.string({
|
version: t.string({
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
resolve: (parent, args, context) => context.config.app_version
|
||||||
resolve: (parent, args, context) => '1.0.0-alpha'
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
|
||||||
7
src/lib/yoga/context.ts
Normal file
7
src/lib/yoga/context.ts
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
import { Config } from '$lib/config';
|
||||||
|
import type { YogaInitialContext } from 'graphql-yoga';
|
||||||
|
|
||||||
|
export const Context = (initialContext: YogaInitialContext) => ({
|
||||||
|
...initialContext,
|
||||||
|
config: Config
|
||||||
|
});
|
||||||
|
|
@ -2,8 +2,10 @@ import { yogaLogger } from '$lib/logger';
|
||||||
import { Schema } from '$lib/pothos';
|
import { Schema } from '$lib/pothos';
|
||||||
import type { RequestEvent } from '@sveltejs/kit';
|
import type { RequestEvent } from '@sveltejs/kit';
|
||||||
import { createYoga } from 'graphql-yoga';
|
import { createYoga } from 'graphql-yoga';
|
||||||
|
import { Context } from './context';
|
||||||
|
|
||||||
export const Yoga = createYoga<RequestEvent>({
|
export const Yoga = createYoga<RequestEvent>({
|
||||||
|
context: Context,
|
||||||
schema: Schema,
|
schema: Schema,
|
||||||
graphqlEndpoint: '/api/graphql',
|
graphqlEndpoint: '/api/graphql',
|
||||||
// Let Yoga use sveltekit's Response object
|
// Let Yoga use sveltekit's Response object
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue